Hardware en software groeien uit elkaar. Er ontstaat namelijk een mismatch tussen werklasten en processors doordat de chips niet langer hogere kloksnelheden krijgen maar meerdere kernen als middel om het prestatieniveau te verhogen. Bovendien hebben de processorfabrikanten allemaal een verschillende strategie.
Waar processorfabrikanten er een paar jaar geleden er nog van droomden om als eerste de 10 GHz-barrière te slechten, is die race inmiddels voortijdig afgebroken. Sterker nog, de huidige processors zijn maar liefst een hele GHz langzamer geklokt dan hun voorgangers. De hogere prestatieniveaus worden nu gehaald uit verbeteringen in de architectuur en het samenbrengen van meerdere kernen op dezelfde chip. Zo bevat de nieuwe Core i7 van Intel vier kernen die elk weer twee software-threads kunnen uitvoeren.
Bottlenecks
Wie een blik in de toekomst wil werpen, kan daarvoor het beste bij Sun terecht. Diens nieuwste UltraSparc-processor (de Niagara T2) bevat maar liefst acht kernen, die elk weer acht threads kunnen draaien. Door vier T2 Plus processors in een systeem te plaatsen, kom je op een totaal van 256 threads.
"In het verleden gingen de toename van het aantal transistoren en hogere prestatieniveaus hand in hand," vertelt Martin de Jong, product marketing manager voor de Sparc-processorarchitectuur. "Op termijn ging dat echter mis op de snelheid van het geheugen. Die verdubbelt slechts één keer per drie, vier jaar. Vandaar dat cache-geheugens inmiddels zo'n groot deel van het processoroppervlak in beslag nemen."
"Wij waren de eersten die erkenden dat de toen gangbare aanpak niet vol te houden was. Bovendien waren onze Risc-processors (reduced instruction set computing – red.) met hun korte pijplijn gemakkelijker geschikt te maken voor meerdere threads dan Intels Cisc-processors (complex instruction set computing – red.) met hun lange pijplijn."
Horizontaal schaalbaar
Belangrijke vraag is natuurlijk of softwaretoepassingen wel echt nut hebben van die extra parallelle performance in de vorm van threads. Het antwoord is dat het enorm afhangt van het soort applicatie. Bovendien verschilt het antwoord ook afhankelijk van wie je het vraagt.
Zo verwacht Gartner dat alle zogenaamde verticaal schaalbare toepassingen in de loop der tijd zullen verdwijnen. Het gaat dan om monolithische applicaties die vooral gebaat zijn bij hogere kloksnelheden. Denk daarbij aan databases, datamining-, erp- en bi-systemen (business intelligence). Oracle is het belangrijkste voorbeeld van een softwareleverancier die de afgelopen jaren zijn verticaal schaalbare database-server succesvol heeft omgezet naar een meer horizontaal schaalbare architectuur. Inmiddels is Rac (Real Application Clusters) het voorkeurshardwareplatform van Oracle.
Vertikaal schaalbaar
Sun daarentegen heeft de planning voor zijn processorlijnen juist in tweeën gesplitst. Naast de al genoemde Niagara-lijn wordt op dit moment gewerkt aan de Rock-processor. Met minder threads (zestien kernen die elk twee threads kunnen draaien), hogere prestatieniveaus per thread en meer floating-point units is deze processor vooral gericht op de verticaal schaalbare werklasten.
"De Rock moet in 2009 verschijnen," aldus De Jong. "We hebben geprobeerd de afzonderlijke threads te versnellen. Daarvoor gebruiken we de hardware-scout. Die kijkt twintig tot honderd instructies vooruit om te zien welke gegevens alvast vanuit het geheugen in de cache gelezen kunnen worden. Op die manier kunnen we met een kleinere cache dezelfde prestatieniveaus halen."
Tera-Scale
Intel heeft ten opzichte van Sun voor een meer behoudende manycore-strategie gekozen. Die processorproducent verwacht dat het aantal kernen ongeveer elke processorgeneratie zal verdubbelen. Op die manier zit Intel over vijf jaar pas op 32 kernen. "Wij zijn dag en nacht bezig met vragen over de mapping van werklasten op parallelle hardware," vertelt Herbert Cornelius, het hoofd van Intels Parallel Application Center.
Het belangrijkste onderzoeksproject van Intel is Tera-Scale, dat zich richt op teraflops-prestaties (biljoen zwevende komma berekeningen per seconde) op manycore processors. Inmiddels is er ook een prototype beschikbaar, de Polaris-processor. Die chip bestaat uit tachtig kernen die vooral goed zijn in floating-point berekeningen.
Lastige keuzes
Een van de onderzoeksvragen is dan ook hoe groot de processorkernen moeten zijn en hoeveel je er nodig hebt – dan wel aan het werk kunt zetten (lees: hoeveel parallelisme je kunt of moet implementeren) – om bepaalde werklasten goed te kunnen verwerken. Cornelius spreekt in dit verband ook niet over de architectuur maar over de topologie.
"Het zou ook kunnen dat je een paar grote kernen en veel kleintjes in dezelfde chip stopt. Dan gebruik je de kleine voor parallelle verwerking en de grote voor meer serieel georiënteerde werklasten. Het antwoord op deze topologievraag is erg afhankelijk van het soort applicaties dat je draait en de algoritmen die je gebruikt. Wat dat betreft levert elk antwoord weer tien nieuwe vragen op."
Waar Intel in ieder geval probeert de kernen zo generiek mogelijk te houden, en daarmee breed inzetbaar, heeft AMD er juist voor gekozen om zijn processorkernen te specialiseren (heterogene manycores). Sterker nog, onlangs koos het bedrijf ervoor "The future is fusion" toe te voegen aan zijn marketinguitingen (branding). Daarmee refereert AMD aan de toekomstige Fusion-architectuur voor zijn chips. Daarin zijn als eerste ook grafische kernen ondergebracht, op basis van de technologie van het overgenomen Ati.
Automatisch parallelliseren
Hoewel de Wet van Amdahl harde limieten stelt aan de hoeveelheid te parallelliseren code, zullen softwareproducenten (independent software vendors) volgens Cornelius gedwongen zijn om hun applicaties aan te passen aan de beschikbare hardware. "Sommige isv's zien de bui al hangen. Zij gaan ervan uit dat als zij het niet doen, hun concurrent het dan wel doet. De technologie is in ieder geval beschikbaar."
Het parallelliseren van software krijg je echter bepaald niet cadeau. Het heeft Oracle bijna tien jaar gekost om zijn databasesoftware om te vormen. "Op een hoog niveau zit vaak veel onafhankelijke functionaliteit. Programmeertalen bieden mogelijkheden om die voor de compiler te markeren. En op een laag niveau kun je overstappen naar parallelle versies van bestaande programmeerlibraries."
Juist ertussenin is het lastig. "Automatische parallellisering is zo oud als de computer zelf. Alle pogingen om met een compiler te komen die dat kan, zijn mislukt. Vectorisatie (waarbij data bij elkaar in een gezamenlijk blok wordt gezet voor gelijktijdige verwerking) is beter te doen. Automatische parallellisering is waarschijnlijk een np-compleet probleem, dat wil zeggen dat het de compiler een paar honderd jaar zou kosten om de daarvoor benodigde analyse te doen."