Introductie
Lange tijd hebben videokaarten en processors vredig naast elkaar bestaan, zonder dat de een zich zorgen hoefde te maken over concurrentie van de ander. De laatste jaren hebben onvermijdelijke technische ontwikkelingen - versterkt door doelbewuste acties van fabrikanten - de mogelijkheden van de twee dichter bij elkaar gebracht. Hiermee is een zeer interessante strijd ontstaan. De inzet: wiens chips gaan de volgende generatie van rekenintensieve applicaties draaien.
Intel heeft eerder deze maand een hoop details vrijgegeven over Larrabee, het eerste concrete antwoord van het bedrijf op de opkomst van gpgpu. In dit artikel gaan we bekijken wat er tot nu toe bekend is gemaakt over de techniek achter Larrabee, wat we al weten over de prestaties en wat voor impact het product mogelijk gaat hebben. Om te beginnen zullen we echter kijken hoe het slagveld er op dit moment bij ligt.
De stand van zaken
De drie belangrijkste spelers in deze strijd hebben ieder een andere aanpak. Nvidia ziet brood in general purpose-code op een grafische chip. De brute rekenkracht die in het leven is geroepen voor spellen moet volgens deze fabrikant op termijn zo eenvoudig aangesproken kunnen worden dat de gewone cpu een ondergeschikte rol gaat spelen.
AMD kiest voor de agnostische aanpak: het maakt hen niet veel uit of code uiteindelijk op een cpu of op een gpu komt te draaien, want ze hebben ondertussen beide in huis. Voor deze verzekering is wel de hoofdprijs betaald: twee jaar geleden heeft het bedrijf ruim vijf miljard dollar opgehoest voor ATI, waardoor het nu nog diep in de schulden zit. AMD wedt dus op twee paarden, maar gezien het feit dat de processors de laatste tijd een stuk minder goed lopen is het niet verwonderlijk dat AMD de laatste tijd vooral de gpu naar voren schuift.
Hoewel Intel een prima processor in huis heeft, zijn de grafische oplossingen van het bedrijf tot nu toe niet veel meer dan functioneel te noemen. Plotseling geconfronteerd met een markt die geen trek meer had in nog warmere processors heeft Intel ingezet op multicores, maar terwijl ontwikkelaars zich aanpassen aan 2, 4 of misschien net 8 threads, lonken ATI en Nvidia met honderden parallelle eenheden.
Om een idee te geven van het verschil: op papier laat een Radeon 4870 of Geforce GTX 280 een topmodel Nehalem met een factor 10 in het stof bijten. We hebben het dan over ruwe 32bits flops. In de praktijk is die kracht nog moeilijk aan te spreken. Software moet behoorlijk door de mangel gehaald worden om op een gpu te kunnen werken en om goede prestaties te krijgen is een flinke dosis kennis nodig over de interne werking van het apparaat. Met iedere generatie wordt de hardware echter flexibeler en worden er ook betere ontwikkeltools beschikbaar gesteld, waardoor de bedreiging reëel is.

Larrabee
Intels antwoord op deze ontwikkelingen is Larrabee, een ver schaalbare multicorechip die - onder meer - dienst kan doen als grafische processor. Intel is niet nieuw in de grafische wereld. Het is zelfs al jaren marktleider, omdat het voor een meerprijs van slechts enkele dollars een geïntegreerde oplossing levert die weinig stroom verbruikt en voor veel mensen gewoon goed genoeg is. Met Larrabee mikt Intel echter hoger: ze willen op termijn zelfs de meest veeleisende gamers plezieren.
Het meest fundamentele verschil tussen Larrabee en andere grafische kaarten is dat Intels chip gebaseerd is op een x86-core. De chip zal door spellen gewoon via Directx en Opengl aan te spreken zijn, maar terwijl ontwikkelaars zich in bochten wringen om een ATI- of Nvidia-gpu ook op een andere manier te gebruiken, zal dat voor Larrabee op bijna dezelfde manier gaan als bij een gewone processor.
Dat comfort zou ontwikkelaars moeten overtuigen om te stoppen met gpgpu en in plaats daarvan bij x86 te blijven. Pat Gelsinger, een van Intels topmanagers, denkt dat gpgpu uiteindelijk niet meer zal worden dan 'een interessante voetnoot in de geschiedenis van computers' . Zijn bedrijf heeft daar uiteraard behoorlijk wat belang bij.
Pimp my Pentium
Om Larrabee vanuit technisch oogpunt te bestuderen beginnen we bij de core. Intel zegt dat deze is gebaseerd op de originele Pentium. Dat mag tot op zekere hoogte dan wel waar zijn, maar van de andere kant is het ook misleidend. Er zijn behoorlijk wat toeters en bellen toegevoegd die zelfs in Nehalem ontbreken.
:fill(black)/i/1105786896.jpg?f=thumb)
Larrabee is net als de Pentium een in-order ontwerp dat maximaal twee instructies tegelijk kan uitvoeren. Maar hetzelfde geldt voor Atom, die door Intel nooit vergeleken is met een architectuur uit 1993. Gespeculeerd wordt daarom dat Larrabee net als de Pentium een korte pipeline heeft. De Pentium had namelijk maar 5 stappen, terwijl Atom er 16 heeft. Hoe lang de pipeline van Larrabee precies is, wil Intel op dit moment echter nog niet kwijt.
Hoe dan ook is de core flink op de schop genomen. De Pentium is nog nooit kleiner gebakken dan 0,25µm en moest dus maar liefst vijf generaties gekrompen worden om de 45nm te bereiken. Daarnaast is ondersteuning voor 64bit-instructies en hyperthreading met vier threads toegevoegd . Voeg daar specifieke nieuwe eenheden en instructies aan toe voor grafische toepassingen en het ontwerp is van dichterbij nauwelijks meer herkenbaar.
Het belangrijkste punt is echter dat het een kleine en hele simpele core is. Tijdens het ontwerp heeft men becijferd dat er binnen het transistorbudget en het tdp van een Core 2 Duo maar liefst tien Larrabee-achtige cores passen, die samen veertig keer zoveel floating point-werk per kloktik kunnen verzetten.
x86-uitbreidingen
Zoals gezegd is de Larrabee-core eigenlijk geen familie meer van de Pentium te noemen. Een van de meest in het oog springende toevoegingen is een 512bit brede vectoreenheid die op 16 waarden tegelijk kan kauwen. Dat is vier keer zoveel als een normale core van Intel of AMD op dit moment aan kan.
De vectoreenheid heeft ook een aantal slimme features die niet terug te vinden zijn in gewone x86-chips. Zo is het mogelijk om delen van de uitvoer te maskeren. Daarmee kan de hardware bijvoorbeeld bij een if-else constructie beide mogelijke paden tegelijk bewandelen, om halverwege te besluiten welke aan het einde zal worden doorgelaten. Samen met wat extra hardware voor het converteren en herschikken van data maakt dit de vectoreenheid een stuk waardevoller dan een standaard sse-implementatie.

Links: de hele Larrabee-core | Rechts: ingezoomd op de vectoreenheid
Een tweede grote verandering is het toevoegen van instructies met drie parameters. De belangrijkste operatie die hierdoor mogelijk wordt is fmac. Zoals de naam al zegt is dat een instructie om een vermenigvuldiging en een optelling in een keer uit te voeren. Dit is een populaire instructie voor grafisch rekenwerk die het aantal gigaflops effectief kan verdubbelen. De fmac is wel aanwezig in Itanium en de Power-architectuur van IBM, maar binnen de x86-wereld heeft Larrabee met deze toevoeging de primeur.
Nog een innovatie die uniek is voor een x86-chip is de implementatie van gather en scatter. Deze instructies maken het makkelijk om te werken met vectoren van waarden die niet vooraf netjes naast elkaar in het geheugen zijn gezet. Een programmeur die een vector wil vullen kan hiermee een lijst van 16 adressen samenstellen en met een instructie alle data bij elkaar sprokkelen. Op dezelfde manier kan hij met een instructie alle delen van een vector laten wegschrijven naar verschillende adressen.

De Larrabee-core heeft 64KB L1-cache en 256KB L2-cache tot zijn beschikking, wat voor het eerst beheersbaar is gemaakt vanuit software. Het is bijvoorbeeld mogelijk om de prefetchers aan te sturen, data rechtstreeks naar het gewenste niveau te laden én om het er weer uit te schoppen. Wanneer de programmeur weet dat hij eenmalig een groot blok moet doorlopen, zoals een texture, kan hij er voor zorgen dat deze niet in de cache wordt opgeslagen, zodat de overige gegevens die later nog wel nodig zijn, snel toegankelijk blijven.
Belangrijk om te weten is dat Larrabee garandeert dat de caches altijd synchroon zijn. Mensen die gewend zijn om met x86 te werken zullen niets anders verwachten, maar bij een Geforce of een Cell kan de hardware dit niet afdwingen, waarmee het als oefening aan de programmeur wordt overgelaten om ervoor te zorgen dat er niets mis gaat tijdens de interactie tussen verschillende threads.
Tot slot zijn er nog enkele specifieke instructies toegevoegd, zoals bit count en bit scan, die specifieke delen van het renderen enkele procenten sneller maken. Ondertussen is hopelijk wel duidelijk geworden dat Larrabee mijlenver van de Pentium staat, ondanks de overeenkomsten op hoog niveau.
Larrabee
Intel heeft nog geen concrete details bekendgemaakt over specifieke implementaties van Larrabee, maar duidelijk is wel dat chips met 8 tot en met 64 cores tot de mogelijkheden behoren. Men zal op basis van de yields en prestaties van de samples een afweging moeten maken over concrete producten voor verschillende doelgroepen, maar daar is het op dit moment mogelijk nog te vroeg voor. Intel heeft het vooralsnog alleen maar over simulaties gehad.
Binnen een chip worden tot 16 cores en andere onderdelen aan elkaar geknoopt door een 1024 bit brede ringbaan, waarbij de helft linksom gaat en de andere helft rechtsom. Naast de cores zelf kunnen ook andere zaken op de bus worden aangesloten, zoals gddr-geheugencontrollers, een pci-express-interface, Quickpath of eenheden met een bijzondere functie, zoals een video-encoder. Versies van Larrabee met meer dan 16 cores zullen meerdere ringen gebruiken die elkaar kruisen aan de randen.

Een van de weinige grafische functies die de Larrabee-core uitbesteedt aan een stuk vaste hardware is het filteren van textures. Intel heeft berekend dat dit afhankelijk van de compressie 12 tot 40 keer trager zou lopen op een x86-core, waardoor de keuze voor een vast stuk hardware snel gemaakt was.
Vrijwel alle andere stappen van het renderen houdt Intel echter op softwareniveau. Dit gaat tot op zekere hoogte ten koste van de efficiëntie, maar het heeft ook zijn voordelen. Zo kan er geen sprake zijn van een specifieke bottleneck in de chip: hij is snel genoeg of niet, maar het zal niet voorkomen dat een traag onderdeel de rest tegenhoudt.
Verder geeft een software-implementatie veel flexibiliteit. Er is een redelijk goede kans dat Larrabee alleen een nieuwe driver nodig heeft om bijvoorbeeld Directx 11 of 12 aan te kunnen. Dit terwijl een gpu vaak blijft steken op een oudere versie omdat er net een feature aangepast moet worden die hard in de hardware zit gebakken.
Tot slot draagt Intel aan dat eenheden met vaste functies een blok aan het been van de schaalbaarheid kunnen vormen. De fabrikant heeft overwogen om ook het rasteren efficiënter te maken door het in hardware te implementeren, maar de synchronisatie en coördinatie die daarbij komt kijken zouden het lastig maken om naar grote aantallen cores te schalen. Vandaar dat ze wat inefficiëntie in deze stap voor lief nemen en dit deels compenseren met nieuwe instructies.

De hoeveelheid rekenkracht die nodig is voor verschillende stappen van het renderen verschilt van frame tot frame. Tussen verschillende spellen zijn de verschillen nog groter. Intel redeneert dat flexibele hardware die aan het hele proces kan meewerken beter is dan een vastgebakken stuk dat een onderdeel afhandelt, zelfs wanneer laatstgenoemde tot op zekere hoogte efficiënter werkt.
Software en schaalbaarheid
Omdat Larrabee bijzonder weinig hardware met een vaste functie heeft, zijn de Directx- en Opengl-renderpipelines bijna volledig in de software geïmplementeerd. Er is gekozen voor een tile-based aanpak waarbij een frame opgedeeld wordt in kleinere blokken. De grootte daarvan is afhankelijk van de complexiteit, maar zou tussen de 32x32 en 128x128 pixels liggen. De begrenzende factor is hier de grootte van de L2-cache, omdat ieder blok uiteindelijk aan één core wordt toegewezen, die het efficiëntst werkt vanuit zijn eigen snelle geheugen.
Een nadeel van de tile-based aanpak is dat polygonen die twee of meer blokken raken gekopieerd moeten worden en dus meerdere malen in de cache staan, maar dat zou maar ongeveer 5 procent overhead opleveren. De bandbreedtebesparing die bereikt wordt doordat niet iedere core zich met de hele scène bezig hoeft te houden zou daarentegen te allen tijde minstens 30 procent zijn en oplopen tot ver boven de 50 procent.

Ook andere problemen die ouderwetse tile-based rendersystemen hadden, meent Intel met zijn software-implementatie te hebben opgelost. Om met effecten als reflecties en schaduwen om te gaan construeert het programma een afhankelijksheidsboom tussen verschillende tiles, zodat het mogelijk is om tijdens het tekenen van een frame alvast te beginnen met het berekenen van de schaduwen voor de volgende.
Schaalbaarheid
Voor zover bekend zijn er nog geen gegevens bekendgemaakt over de kloksnelheid en het aantal cores van verschillende Larrabee-producten, waardoor het erg moeilijk is om op dit moment al over de prestaties te spreken. Wel is Intel zo vriendelijk geweest om te simuleren in hoeverre het ontwerp schaalbaar is.
Het bedrijf heeft uit de spellen Half-Life 2: Episode 2, Fear en Gears of War ieder 25 frames geplukt van verschillende scènes. In alle gevallen was de schermresolutie 1600 bij 1200 en de eerste twee spellen draaiden met 4xAA. Door alle Directx-commando's op een systeem met een gewone videokaart te onderscheppen en dezelfde serie later op een Larrabee-simulator af te schieten heeft men onderzocht hoe de chip presteert met verschillende aantallen cores.
Uit deze simulatie is gebleken dat de chip in ieder geval van 8 tot 48 cores met 90 tot 93 procent bijna perfect schaalt. Dat wil zeggen dat een versie met 32 cores daadwerkelijk bijna twee keer zo snel is als een versie met 16 cores, mits ook het aantal texture-eenheden en de geheugenbandbreedte meegroeien. Door de code verder te tweaken werd in een van de spellen zelfs 98 procent bereikt.
Uitgaande van een kloksnelheid van 1GHz, heeft Intel berekend dat deze drie spellen met 25 cores steeds minimaal 60 frames per seconde moeten halen. Wat dat betekent voor de gemiddelde framerate bij verschillende kloksnelheden en aantallen cores laten we als oefening voor de lezer over.

Andere applicaties
Belangrijk om in het achterhoofd te houden is dat Intels Directx-renderer maar een van de mogelijke applicaties is die op een Larrabee-processor kunnen draaien. Het doel is dat straks iedereen zijn eigen 'Larrabee Native Application' kan schrijven, wat actief wordt ondersteund met een optimaliserende compiler en voor Larrabee geoptimaliseerde blokken in de Math Kernel Library, een gereedschapskist voor ontwikkelaars.
De meeste x86-software zou zonder aanpassingen op Larrabee kunnen draaien, maar het is wel nodig om gebruik te maken van de (vector)extensies en tientallen threads om het maximale er uit te slepen. Communicatie tussen Larrabee en de gewone cpu wordt verzorgd door Intels driver, die zowel synchroon als asychroon data kan versturen en zelfs toegang tot bestanden op de harde schijf kan regelen.
Om aan te tonen dat Larrabee veel meer kan dan alleen graphics heeft Intel nu al een paar andere toepassingen voor de chip ontwikkeld, waaronder de simulatie van verschillende natuurkundige effecten, ray tracing en populaire supercomputercodes. Volgens het bedrijf kan Larrabee veel beter omgaan met complexe datastructuren dan een gpu, wat het aanpassen van bestaande algoritmes eenvoudiger maakt.

Raytracing op Larrabee
Conclusie
Larrabee is zonder twijfel een van de interessantste chips die Intel ooit ontwikkeld heeft. Het is een antwoord op Niagara, de Cell en de (gp)gpu in één en dat allemaal zonder af te wijken van de oude vertrouwde x86-standaard.
Maar hoe gaat Larrabee er in de praktijk uitzien? Geruchten spreken over een videokaart met 24 cores, met een kloksnelheid van 2GHz en een tdp van 150W. Zo'n beest zou op papier 1,5 teraflops aan rekenkracht hebben, 25 tot 50 procent meer dan de huidige top-gpu's. Hoewel het bijzonder lastig is om flops te vertalen naar bijvoorbeeld frames per seconde - zeker met wild verschillende architecturen - moet wel worden opgemerkt dat alle benchmarks die er nu goed uitzien natuurlijk al lang en breed gedegradeerd zijn tot de middenmoot tegen de tijd dat de Larrabee in 2010 in de schappen ligt. Bovendien blijft de kwaliteit van drivers een zorgenkindje. Intels geïntegreerde producten zijn wat dat betreft nooit super geweest, terwijl echte gamers erg veeleisend zijn.
Het zou echter verkeerd zijn om Larrabee puur te beoordelen op zijn kansen als high-end videokaart. De architectuur zal niet alleen gebruikt worden voor pci-insteekkaarten, maar ook beschikbaar gemaakt worden als losse processor die direct in het socket van een servermoederbord gestoken kan worden. Sta ook niet verbaasd te kijken als Intel binnen een paar jaar zijn eerste heterogene ontwerpen aankondigt, waar bijvoorbeeld vier Sandy Bridge-cores en zestien Larrabee-cores op één 32nm-chip terechtkomen.

Samenvattend lost Larrabee een van de pijnlijkste tekortkomingen van x86-chips op: het tekort aan grote hoeveelheden rauwe flops. Of een Direct3d/Opengl-renderer de geweldigste toepassing is voor de nieuwe architectuur valt nog te bezien, maar zo niet dan weet men er ongetwijfeld wel raad mee voor andere taken die men nu naar een chip als Cell of gpu probeert om te zetten. De vraag blijft echter of Larrabee nog op tijd is om de uittocht te stoppen, maar dat is iets wat Nvidia, AMD en Intel de komende jaren onderling mogen uitvechten.