Pieter Edelman
16 November 2009

Peter Hofstee ontwikkelde bij IBM Research in Austin de Cell-processor, het werkpaard dat het hart van de Playstation 3 vormt. Met het ene been in de informatica en het andere in de elektrotechniek bevond hij zich in een uitstekende positie om over de efficiëntie van processoren na te denken. Deze zomer was Hofstee op bezoek voor een conferentie op de De Nayer-campus. Op doorreis van zijn familie in Groningen naar Sint-Katelijne-Waver nam hij de moeite om een tussenstop te maken bij Bits&Chips en te spreken over de Cell en de trends in heterogene multicore architecturen.

Zelf is hij niet specifiek spelletjesfanaat. Maar de bedenker van de Cell-processor heeft thuis wel twee exemplaren van de Playstation 3, Sony‘s spelconsole die de opmaat vormde voor deze extreem krachtige chip. ’Een met de oudere 90-nanometerprocessor, die dient als mediacenter voor de familiefoto‘s en als Blu-Ray-speler, en een met de nieuwere 65-nanometerversie, die mijn zoon als spelcomputer gebruikt.‘

De Cell Broadband Engine of Cell BE, zoals de architectuur officieel heet, kennen de meeste mensen als multicore processor met een PowerPC-kern – IBM hanteert tegenwoordig liever de naam Power – en een aantal vectorrekenkernen, de synergistic processor elements (SPE‘s). Minder in het oog springt de unieke geheugenarchitectuur, het kindje van Hofstee. Hij werkte als een van de vijf hoofdarchitecten van de processor om dit idee uit te werken.

De Cell is een gezamenlijk avontuur van IBM, Sony en Toshiba. ’Kerst 1999 spraken de CEO van Sony en de toenmalige CEO van IBM elkaar informeel met het idee dat ze elkaar misschien wel konden helpen. Een van de richtingen was games. Tot dan toe ontwikkelden gamebedrijven hun eigen Socs, maar de eerste XBox had met zijn Intel-processor de competitie een stap omhoog gebracht. Begin 2000 stelde IBM toen voor om een quadcore PowerPC te maken voor Sony. Ken Kutaragi, de CEO van Sony Computer Entertainment, vond echter dat hij die overal wel kon krijgen en vroeg om iets wat hij alleen bij IBM kon halen, iets dat duizend keer zo krachtig was als de Playstation 2.‘

Het grote idee van Hofstee was om de transistoren weer terug te geven aan het rekenwerk via de geheugenarchitectuur van de chip. ’Bij een moderne processor is meer dan vijftig procent, soms wel zestig of zeventig procent, cachehiërarchie. Ergens in de hoek zit dan de core en ergens in de hoek van de core zitten de circuits die het echte rekenwerk doen‘, lacht Hofstee. ’David Patterson van Berkeley heeft dat laatst eens uitgerekend. Tussen de 386 en de Pentium 4 zit een factor tweeduizend verschil in efficiëntie. We hebben een exponentiële prestatiegroei gehad, maar tegelijkertijd een iets sterkere afname in efficiëntie.‘

 advertorial 

Free webinar ‘Modernizing your code base with C++20’

As many production tool chains now adopt C++20 features, the potential this brings is unlocked. What advantages can recent versions offer to your code base? In this webinar we’ll look at the great improvements C++ has gone through and how features like concepts and ranges can transform your code. Register for 2 February, 4PM.

Die cachehiërarchie is nodig om de data waaraan de processor werkt zo snel mogelijk vanuit het werkgeheugen de rekenpijplijn in te krijgen (zie kader). ’Toen deed ik het voorstel voor een processor die het silicium efficiënter zou gebruiken door dingen onder programmacontrole uit de main store naar de local stores te brengen.‘ In plaats van een cachehiërarchie die impliciet en ad hoc data en instructies ophaalt, zou de processor een enkel lokaal werkgeheugen krijgen waar de data en instructies vóór het uitvoeren van elke taak expliciet in worden gezet. En na afloop worden de resultaten expliciet weggeschreven naar het werkgeheugen.

Hofstee vergelijkt het met doe-het-zelven: ’Als ik deze tafel hier zou willen bouwen op de manier van een conventionele processor, zou ik mijn hand uitsteken en ’hamer‘ zeggen en het is dan de verantwoordelijkheid van, zeg, Praxis om die hamer in mijn handen te krijgen. En vervolgens zou ik mijn hand uitsteken en zeggen ’spijkers‘, ’hout‘ en hop, ze verschijnen. De analogie met een processor is dat je zegt: ’Laad dit, laad dat‘, zonder dat je je als programmeur zorgen hoeft te maken of het uit L1, L2, L3 of misschien zelfs van de disk komt. Maar als we onze wereld zo zouden organiseren, zou Praxis geweldig groot moeten zijn. Je zou hier je Praxis-persoontje in de hoek van je kamer willen hebben met een voorraad, die op en neer rijdt en je probeert te geven wat je hebben moet, maar ook nog iemand met een voorraad op de verdieping en iemand op de straathoek. Zo doen we het niet. We maken een boodschappenlijst, gaan naar de winkel toe en brengen het allemaal in één keer mee. Dat is hoe die SPE‘s werken: je maakt een lijst met alles wat je hebben moet, geeft die lijst aan een aparte processor die het allemaal in de local store stopt, doet één synchronisatie om te kijken of alles is aangekomen, en dan voer je je programma uit. En na afloop doe je het omgekeerde met een bezorgingslijst.‘

Ambitieus

Hofstee groeide op in Yde, een klein plaatsje zo‘n tien kilometer onder Groningen. Aanvankelijk zocht hij het dicht bij huis en koos hij voor een opleiding aan de RUG. Daar studeerde hij af in theoretische natuurkunde, waarna hij een promotietraject startte in de informatica. ’Theoretische natuurkunde is eigenlijk wiskunde. Het soort informatica dat ik in Groningen deed, was ook wiskunde‘, verklaart Hofstee deze ogenschijnlijk vreemde overstap. ’Ik keek naar de wiskunde van parallelle programma‘s en een chip kun je eigenlijk beschouwen als een extreme vorm van een parallel programma. Al die transistoren doen hun berekeningen parallel, hoewel je een veel hoger sequentieel idee hebt van wat die chip doet. Je kunt dan proberen te bewijzen dat jouw implementatie met al die transistoren hetzelfde doet als dat abstracte idee.‘

Toen zijn promotor Jan van de Snepscheut halverwege zijn promotietraject naar het California Institute of Technology verhuisde, lokte ook voor Hofstee het avontuur en hij besloot mee te gaan. Een uitgelezen kans, want hij kwam daarmee op de geboorteplaats van VLSI. Op die manier kreeg hij zowel van de informatica- als de elektrotechniekwereld bagage mee. Door het overlijden van Van de Snepscheut en het vertrek van VLSI-prof Chuck Seitz kreeg hij twee jaar lang zowel de programmeer- als VLSI-colleges op zijn bordje. Hij promoveerde in 1994.

Hofstee IMGP5996 400px

Eigenlijk een jaar te vroeg, want de wereld was nog net niet rijp voor die combinatie. ’Dat was heel grappig. In 1995 had ik verschillende sollicitatiegesprekken, maar bij de computer science-departementen zeiden ze: ’Je bent te EE‘, en bij de electrical engineering-departementen zeiden ze: ’Je bent eigenlijk te CS.‘‘ Een jaar later waren de gemengde departementen overal hot en lagen de interessante banen voor het oprapen. ’Ik had een aanbod van de Chinese universiteit in Hongkong, die begonnen daar met een nieuw EE/CS-departement. Dat was denk ik mijn nummer twee. Verder had ik een aanbieding vanuit Eindhoven voor iets met Trimedia en compilers. Dat was ook aardig, maar ik vond het eigenlijk wat te ambitieus‘, grinnikt Hofstee.

Uiteindelijk won IBM Research in Austin, Texas. ’De manager daar wilde de eerste gigahertzprocessor in de wereld bouwen. Dat was het meest interessante aanbod‘, verklaart Hofstee. Dat lukte in 1998, en in 2000 onthulde IBM op de ISSCC het resultaat: een 64 bit Power-gebaseerde processor.

Discussie

Hofstee bleef bij IBM verder werken aan verschillende processorprojecten, onder meer voor mainframes en het toepassen van de kennis opgedaan in het gigahertzproject op commerciële processoren. Na twee jaar diende het Cell-avontuur zich aan.

Op het moment dat het team voor het eerst over de nieuwe architectuur ging nadenken, was het normaal om kloksnelheden van tien of vijftien gigahertz op de roadmap van processormakers aan te treffen. ’Maar IBM is een technologiebedrijf, we zagen dat dat niet kon met subcurrent tresholds en dat soort dingen. De oxidedikte kan niet fundamenteel kleiner, we spelen alleen nog met materialen. Daarom gaan de voltages en dus de power density niet echt meer verder omlaag en kan de frequentie niet meer omhoog‘, vertelt Hofstee. Het team besloot uit te wijken naar multicore.

In de loop van 2000 kwamen ze met verschillende ideeën op de proppen. ’Ik deed toen ook het voorstel om het een stuk efficiënter te maken door dingen onder programmacontrole te brengen. Uiteindelijk besloten we dat dat de basis zou vormen.‘ Een compleet nieuwe systeemchip werd het echter niet, want dat betekent immers ook een flink hoeveelheid werk voor porten of schrijven van besturingssysteem en software. ’Dat was ons te ambitieus‘, zegt Hofstee. Daarom werd het uiteindelijk een hybride: een min of meer standaard PowerPC waarop bestaande programmatuur zonder meer kan draaien en de SPE‘s als versnellerkernen onder controle van deze hoofdprocessor.

In het najaar van 2000 werd de knoop doorgehakt. De drie partners reserveerden een slordige vierhonderd miljoen dollar voor de ontwikkeling en het team ging aan de slag. Hofstee werd de architect voor de SPE‘s, naast de projectarchitect, de softwarearchitect, de architect voor het chipniveau en de architect voor de Power-core. Want die moest ook op de schop, om een redenatie die hier in de lage landen waarschijnlijk weinig voet aan de grond zou krijgen: ’Dit was de tijd dat Intel en IBM net hun eerste dualcore processoren introduceerden. Als we een gewone Power5-core uit die processor hadden genomen, zou maar zo‘n twintig tot dertig procent ruimte overblijven voor de SPE‘s en zouden we er misschien vier kunnen plaatsen. Dat voelt niet echt efficiënter in vergelijking met een dualcore. We wilden er acht.‘ Dankzij deze investering bedraagt het PowerPC-oppervlak slechts zo‘n dertig procent van de Cell, iets meer dan de helft is SPE.

Het precieze aantal SPE‘s bleef nog een tijd onderwerp van discussie. ’We hadden eerst 64 kilobyte local store in gedachten voor de SPE‘s, maar nog voordat we de simulator schreven, hadden de softwaremensen me er al van overtuigd dat dat te weinig was. Uiteindelijk wisten ze ons ervan te overtuigen dat zes SPE‘s met 256 kilobyte beter was dan acht SPE‘s met 128 kilobyte.‘ Uiteindelijk ging het aantal toch weer omhoog naar acht stuks, met 256 kbyte geheugen. De softwaremensen blijven nog wel eens vragen naar grotere local stores. ’Maar dat zou gemiddeld genomen de programma‘s niet efficiënter maken‘, zegt Hofstee.

Ultrasound

Tot de dag van vandaag is hofstee aan de Cell blijven werken. De vierde generatie van deze processor is nu in productie. ’We hebben een 90-, 60- en 45-nanometerversie en een variant met meer double precision floating point-capaciteiten. Die hebben we onder meer gebruikt om de eerste petaflopsupercomputer in de wereld te bouwen in Los Alamos.‘

IBM, Sony en Toshiba hadden verschillende doelen voor ogen toen ze hun handtekening onder het projectvoorstel zetten. Sony zocht brute kracht voor zijn volgende generatie spelconsole, Toshiba dacht aan tv- en settopboxsilicium en IBM aan high-performance computing. ’IBM heeft nu drie soorten business met de Cell. De eerste is natuurlijk dat we de chips aan Sony leveren. Dan hebben we een blade, een serversysteem waarbij stroomvoorziening en dergelijke allemaal op het processorbord zijn ingebouwd. Daar hebben we nu drie versies van, elk met twee Cell-processoren. Die blades worden voornamelijk gekocht door de petroleumindustrie, maar we hebben ook zaken gedaan voor medische beeldvorming. Inmiddels is er een ultrasoundmachine van Hitachi op de markt gebaseerd op de Cell, en die supercomputer in Los Alamos. We leveren onze blade ook aan allerlei universiteiten. En dan hebben we nog een PCIExpress-kaart met één Cell-processor. Die verkopen we via derde partijen. Ze worden vooral gebruikt voor computervisionachtige toepassingen.‘

Toshiba hanteert daarnaast zijn eigen Cell-lijn. ’Dat is de meest embedded versie van Cell, die draait met vier SPE‘s op zo‘n anderhalf gigahertz en gebruikt tien tot vijftien watt. Deze Spursengine is te koop als PCI Express-kaart voor multimediaversnelling en dergelijke.‘ Het bedrijf heeft ook een aantal keer zijn CellTV gedemood, een settopbox die tv kan opschalen en meerdere stromen tegelijk kan opslaan. Dit systeem is gebaseerd op de volledige negenkernige Cell-versie.

Factor duizend

Er kleeft wel een groot nadeel aan Hofstees aanpak, die IBM en Sony bij tijden op felle kritiek komt te staan. De programmeur moet goed nadenken hoe het programma wordt verdeeld over de generieke core en de SPE‘s. Hij is dus ook volledig verantwoordelijk voor het parallelliseren van de code. Vervolgens moet hij ervoor zorgen dat elke SPE-opdracht expliciet in de kern wordt geladen en na afloop de resultaten terugsturen naar het werkgeheugen. Dat maakt de Cell bijzonder lastig te programmeren, zeggen criticasters.

Niet waar, zegt Hofstee. ’De ervaring is dat je drie tot zes maanden nodig hebt om het te leren. Dat is voor een bedrijf een vrij grote investering. Als je dan je software schrijft, duurt dat ook nog langer. Maar het duurt juist korter om een geoptimaliseerd stuk software te krijgen. Als je een multicore processor hebt, draait je software direct, maar tuning kan ontzettend ingewikkeld zijn. Al die caches doen dingen voor je, maar als ze niet precies doen wat jij wil, kan het ongelofelijk ingewikkeld zijn om uit te vinden wat er echt gebeurt. Bij de Cell duurt het veel langer voordat je je programma draaiend hebt, maar het draait dan wel bijna direct optimaal. Je schrijft je code om de dingen onder programmacontrole te brengen, dus je hebt de lokaliteit al direct goed verzorgd. En dat is misschien wel de belangrijkste factor in processoren van vandaag de dag, want je geheugen is tegenwoordig honderden cycles ver weg.‘

Dat betekent niet dat de ontwerpers met hun armen over elkaar gaan zitten wachten tot programmeurs de boodschap eindelijk begrijpen. ’We blijven er constant aan werken om het programmeren zo makkelijk mogelijk te maken. Het meest recente dat we hieraan gedaan hebben, is dat we een softwarematige instructiecache hebben ontwikkeld die efficiënt genoeg is – tenzij je natuurlijk echt het onderste uit de kan wilt halen. Met data gaat dat niet, daar is het probleem veel fundamenteler. We hebben wel softwarematige datacache-implementaties, maar dan krijg je dezelfde inefficiëntie als bij een hardware-uitvoering.‘

Ondertussen begint de softwareondersteuning voor heterogene multicore op stoom te komen, en de Cell profiteert daarvan mee. OpenMP en het recentere OpenCL bijvoorbeeld kunnen een flinke duit in het zakje doen van de programmeerbaarheid. OpenMP was er al als toevoeging op C, maar dat heeft geen notie van lokaliteit. In het nieuwere OpenCL is de locatie van data in een processor juist expliciet. Deze laatste specificatie is vrij nieuw en is ontwikkeld met de gedachte om GPU‘s in te zetten voor versnellers van algemene toepassingen. Ook multimedia-extensies van processoren en de Cell BE zijn er echter mee te programmeren. ’Weliswaar niet de meest efficiënte manier om de Cell te programmeren, maar het maakt code draagbaar naar de verschillende hardware. Het is natuurlijk niet redelijk dat je voor elke processor een ander raamwerk moet hebben.‘

Dat is belangrijk, want heterogeniteit gaat in de toekomst een steeds grotere rol spelen voor processoren. ’Daar duwt de halfgeleidertechnologie ons op lange termijn naartoe. In de meeste gevallen zit er iets van een factor duizend in efficiëntie tussen een generiek en een specifiek stuk silicium. Dus zelfs als je de grenzen van de halfgeleiderproductietechnologie hebt bereikt, kun je daar nog drie ordegroottes in vooruit.‘