Download whitepapers, case studies
en onderzoeken over ICT-onderwerpen
Computable IT Knowledge Base
  Dagelijks het laatste
ICT-nieuws in je inbox?
Computable e-mail nieuwsbrief

Infrastructuur / Achtergrond

05-02-2008 10:24 | Door Aad Offerman | Er is 1 reactie op dit artikel | Permalink

Multicore is moeilijk

Nieuwe processoren niet bruikbaar zonder parallelle software

multicore

Multicore-chips worden met fanfare gepresenteerd, maar echt benutten is nog moeilijk.

Multicore-chips worden met fanfare gepresenteerd, maar echt benutten is nog moeilijk.

Processorfabrikanten Intel, AMD en Sun hebben hun kaarten gezet op manycore processoren. In de toekomst hebben we processoren met misschien wel honderden of zelfs duizenden kernen. Belangrijke vraag is echter of onze software daar ook iets aan heeft.

Moore's Law

De Wet van Moore.

De Wet van Moore.

Al meer dan veertig jaar voorspelt de Wet van Moore een exponentiële groei van het aantal transistoren op een chip. Dat aantal verdubbelt elke twee jaar. Of het inderdaad een wet is of inmiddels een self fulfilling prophecy is onduidelijk. Wel is zeker dat chipfabrikanten enorme inspanningen moeten leveren om met hun ontwerpen en productieprocessen de Wet van Moore bij te houden.

Daarbij zijn niet alleen grote technische problemen te overwinnen. Naast natuurkundige komen ook economische grenzen steeds meer in zicht. Het ontwerpen van processoren en het bouwen van de chipfabrieken wordt steeds duurder.

Verminderde meeropbrengst

Wat de Wet van Moore zegt over het aantal transistoren op een chip, geldt natuurlijk niet noodzakelijk voor de prestaties van een processor. Het benutten van die extra transistoren is een hele ingewikkelde klus. En hoewel ook het prestatieniveau op softwarevlak exponentieel groeit, gaat dat lang zo snel niet.

In het algemeen is het zo dat de versnelling van nieuwe technologie afneemt naarmate je deze opschaalt of uitontwikkelt (de wet van de verminderde meeropbrengst). Zo kun je de kloksnelheid wel blijven verhogen, maar daarmee vergroot je ook het gat tussen de processor en de geheugenhiërarchie. Dat betekent dat die hoog-geklokte processor steeds meer van zijn cycles 'bezig' is met wachten op het geheugen.

Een ander belangrijk probleem is het stroomverbruik. Met het verkleinen van de fabricagetechnologie neemt de statische lekkage enorm toe. Een deel daarvan wordt gecompenseerd door het lagere dynamische verbruik. Bij een fijnere technologie kan men immers met een lager voltage toe. Om de schakelsnelheid te verhogen, zou het voltage weer moeten worden verhoogd, met een sterke (kwadratische) toename van het energieverbruik tot gevolg.

Manycore

Intel en andere processorfabrikanten denken de oplossing voor deze problemen te hebben gevonden in de multicore architecturen. AMD levert inmiddels Phenom quadcore procesoren waarbij daadwerkelijk vier volledige kernen naast elkaar op deze chip zitten. Intel is wat dat betreft iets minder ver en levert quadcore processoren die bestaan uit twee dualcore chips samengebracht in één behuizing. High-end gebruikers (lees: gamers) kunnen deze quadcore processoren straks zelfs in dualprocessor configuraties kopen. Intel en AMD werken aan systemen met in totaal acht kernen onder de respectievelijke namen Skulltrail en FASN8.

Sun is het verst in zijn ontwikkelingen op gebied van multicore voor algemeen gebruik. De UltraSparc T1 (Niagara) heeft acht kernen en ondersteunt vier threads per kern. Dat komt neer op een totaal van 32 threads. Zijn opvolger, de T2, verwerkt al acht maal acht is 64 threads. Bij deze processoren spreekt je dus niet meer van multicore maar van manycore.

Tera-scale

multicore

Intel heeft al een prototype getoond van een 80-core chip.

Intel heeft al een prototype getoond van een 80-core chip.

In de toekomst zullen ook Intel en AMD hun processoren in manycore varianten uitbrengen. Belangrijkste ontwikkeling op dit gebied is Intels onderzoeksproject Tera-scale. Onderdeel daarvan is de Larrabee/Polaris-processor met tachtig kernen.

Tot die tijd krijgen we niet alleen meer kernen op de general-purpose processoren - de Nehalem van Intel zal acht kernen bevatten, de Bulldozer processor van AMD acht of zestien - maar ook verschillende soorten kernen. De Fusion processor van AMD wordt voorzien van een geïntegreerde grafische rekenchip (GPU). Daarnaast is er in AMD's Torrenza-architectuur ook ruimte voor accelerators van derden. Denk daarbij aan hardware specifiek voor encryptie, multimedia en en High-Performance Computing (HPC). Intel werkt aan vergelijkbare technieken.

Bottleneck

Wil deze parallele strategie van de processorfabrikanten inderdaad slagen, dan zijn drastische wijzigingen in de software vereist. Op dit moment is er eigenlijk maar één toepassing die direct op een manycore systeem kan draaien en dat is virtualisatie. Gevirtualiseerde systemen zijn immers volledig onafhankelijk van elkaar en alle virtuele machines en hun processen kunnen zonder verdere synchronisatie op hun eigen thread uitgevoerd worden.

Diezelfde onafhankelijkheid brengt echter met zich mee dat zich een bottleneck vormt op de bus naar het geheugen. Geheugenpagina's die normaal door processen gedeeld worden - typisch die van het besturingssysteem en de softwarebibliotheken - moeten nu voor elke virtuele machine apart worden geladen. VMware probeert daar met Transparant Page Sharing wat aan te doen. Dat kan echter niet veel meer doen dan simpelweg verschillende geheugenpagina's met elkaar vergelijken en op elkaar mappen als ze hetzelfde blijken te zijn.

Kijk je een niveau hoger naar de manier waarop processen met het besturingssysteem interacteren, dan zien we daar een vergelijkbare bottleneck. Alle processen op een machine delen immers de kritieke secties (code en datastructuren) van het besturingssysteem. Dat beperkt het aantal programma's dat op een enkel systeem kan draaien, en dus het aantal threads dat aan het werk wordt gehouden.

Threads

Hoewel er vast nog wel geoptimaliseerd kan worden in de huidige kernels, moet de prestatieverbetering die de manycores ons in het verschiet stellen, toch echt komen uit het parallel maken van de applicaties zelf. Dus het splitsen van programmaonderdelen in delen die onafhankelijk van elkaar verwerkt worden. Dat betekent dat programmeurs hun software moeten omschrijven naar code die zo veel mogelijk gebruik maakt van threads.

Of dat inderdaad op afzienbare termijn gaat gebeuren, is zeer de vraag. Waar parallelle algoritmen vanzelfsprekend en natuurlijk zijn in de wereld van High-Performance Computing en visualisatie, is dat voor algemene en zakelijke toepassingen geenszins het geval. Het prestatieniveau is daar zelden een nijpend probleem. Het is goedkoper om er extra hardware tegenaan te gooien dan grote investeringen te doen in het parallelliseren van moeilijk parallelliseerbare code.

Programmeertalen

processor vervang

AMD presenteert zijn quadcore-chip als een simpele hardware-upgrade. Voor goede benutting door software is meer nodig.

AMD presenteert zijn quadcore-chip als een simpele hardware-upgrade. Voor goede benutting door software is meer nodig.

Bovendien worden juist dit soort toepassingen tegenwoordig niet meer bottom-up ontwikkeld maar van bovenaf met behulp van een GUI builder in elkaar geklikt. Afgelopen weken hebben we in de media kunnen lezen hoe Java wel geschikt is als productietaal voor general-purpose toepassingen, maar niet als software op specifieke hardware is afgestemd (mapping).

Maar net als Java zijn ook C en C++ niet geschikt om de manycore architecturen te kunnen benutten. Programmeurs willen - en mogen - echt niet de hele dag bezig zijn om zo veel mogelijk parallelliteit uit hun algoritmen te peuren om die in threads vast te leggen. Bovendien is het ondoenlijk om daarbij al rekening te houden met de processoren van de toekomst. Nu zitten er vier of acht kernen in een systeem. Straks zijn dat er tientallen. En als we Intel mogen geloven, worden dat er op termijn vele honderden en misschien wel duizenden.

Wat je wilt is een taal waarin parallelliteit ingebakken wordt op een hoger abstractieniveau dan de huidige thread-libraries dat doen. Op die manier kan het daadwerkelijk parallelliseren en de mapping op de hardware verplaatst worden naar de compiler. Bjarne Stroustrup, de bedenker van C++, deed onlangs dan ook een oproep om te komen tot een nieuwe taal. Deze moet programmeurs betere faciliteiten voor parallellisme geven.

Throughput computing

Interessant is dat Intel als onderdeel van project Tera-scale inderdaad ook een nieuwe programmeertaal heeft ontwikkeld. Ct (C/C++ for Throughput Computing) werkt met zogenaamde throughput vectors (TVEC's) die niet alleen bekende instructiesets (arrays) kunnen bevatten maar ook andere vormen van parallelle data. Denk aan geavanceerde programmeermiddelen als sparse matrices en associatieve arrays. Intel noemt dit "collections".

De bedenkers introduceren naast taken ook "futures". Dat zijn functies die uitgevoerd kunnen worden zodra hun parameters bekend zijn. Op die manier ontstaat een hele boom van onderling afhankelijke threads. De administratie hiervan doet erg denken aan de manier waarop scoreboards de afhankelijkheden van instructies binnen processoren bijhouden. Dat laat weer duidelijk zien hoe manycores complexiteit van de hardware naar de software verplaatsen.

Voor de uitvoering van Ct-programma's wordt gebruik gemaakt van een compiler/run-time combinatie vergelijkbaar met die voor Java. De code wordt vertaald naar een variant van x86-code waarbij de vector-instructies (de SSE-uitbreidingen) eerst nog in een generieke vorm worden gecodeerd. Pas bij uitvoering zorgt een JIT-compiler (just in time) voor de mapping van threads en vectorinstructies naar de onderliggende hardware. Op die manier wil Intel zorgen dat programmatuur die nu geschreven of onder handen genomen wordt, in de toekomst opschaalt naar veel grotere manycores.

Beproefd middel

Hoewel er de komende jaren veel onderzoek op dit gebied zal plaatsvinden, is het nog maar de vraag of manycore processoren inderdaad voor algemene toepassingen uitgenut kunnen worden. Het risico bestaat dat de manycores voor dergelijke applicaties praktisch niet bruikbaar blijken te zijn. Het is destijds immers ook lastig gebleken de extra investeringen te rechtvaardigen voor 4-way en later 8-way SMP x86-systemen.

Feit is dat universiteiten cursussen, programmeertalen, compilertechnologie en onderzoek moeten ontwikkelen op het gebied van parallelle architecturen. Komt daar niet uit wat een bedrijf als Intel voor ogen heeft, dan is het waarschijnlijk dat we op termijn toch weer moeten teruggrijpen op het beproefde middel van de hogere kloksnelheid.

Van miljoenen naar miljarden

Chipfabrikanten lopen niet alleen tegen natuurkundige grenzen op, maar ook meer en meer tegen economische. Ter illustratie: het ontwerp van een nieuwe generatie processoren kost vele honderden miljoenen dollars. De R&D-kosten voor de volgende stap in de fabricage zijn een paar miljard. En de nieuwe 45 nm fabriek die Intel eind vorig jaar opende in Chandler, Arizona, kostte drie miljard dollar. Dit jaar komen daar nog twee fabrieken bij. Als je deze getallen bij elkaar optelt, kom je op bedragen boven de tien miljard dollar. Bovendien houdt Intel een strak tweejaarlijks regime aan van achtereenvolgens de verkleining van de chiptechnologie en de vernieuwing van de processorkern. Dit is het zogenaamde tick-tock-model.

Snelheidsplafond
De afgelopen jaren is duidelijk geworden dat de steeds hogere kloksnelheden niet vol te houden zijn. De snelste Pentium-processoren hadden een interne klok van 3,6 GHz. De laatste Core 2 processoren zitten daar ongeveer één GHz onder. Hoge kloksnelheden bieden wel een heel goed marketinginstrument om processoren aan de man te brengen - hoe hoger, hoe sneller. Hoewel die extra snelheid steeds minder opleverde, duurde het daarom wel een aantal jaren voordat de leveranciers af durfden te stappen van de hoge kloksnelheden. Uiteindelijk moesten ze wel overstag vanwege de hoge kosten voor ontwerp en fabricage.
bekijk reacties (1) print stuur door
Reacties op dit artikel
Marco Roodzant, 05-02-2008 17:32
Oud verhaal, oud probleem. In Nederland is al heel veel werk verricht in de afgelopen 30 jaar op het gebied van programmeertalen, compilertechnologie en onderzoek voor multicore systemen.
 
Zie bijvoorbeeld een recente aankondiging van ACE: http://www.ace.nl/News%20Archive/2008/2008-01-17-ACE-ClearSpeed.html
rssMeer Infrastructuur
Infrastructuur Whitepapers

Betere bescherming van data met gecentraliseerd storage management

Het verbinden van een replicatie-oplossing met verschillende architecture (DAS, NAS, SAN), meerdere multivendor storage platforms en diverse locaties is geen sinecure. Deze whitepaper belicht oplossingen voor de vele eisen die er aan storage-toepassingen worden gesteld.... Download nu

Checklist 11 essentiƫle eisen voor succesvolle virtualisatie

Datagroei is een hoofdpijnfactor voor veel organisaties. Virtualisatie kan daarin een oplossing bieden. maar er zijn nogal wat factoren waar je rekening mee moet houden bij Virtualisatie-oplossingen. In deze whitepaper worden de elf belangrijkste eisen op een rijtje gezet.... Download nu

Meer Infrastructuur whitepapers

ILM

Bedrijfsinformatie wordt geboren, leeft en sterft. Hoe we met informatie (moeten) omgaan binnen de levenscyclus heet 'Information Lifecycle Management'. Dat is meer dan een nieuw labeltje voor opslagbeheer; het koppelt namelijk bedrijfswaarde aan data.

Artikel
Infrastructuur Producten

Lexmark komt met draadloze All-In-Ones

10-10 13:58   Lexmark International brengt twee nieuwe inkjet All-In-Ones in de Professional Serie op de markt. De X4975ve en X7675 maken het voor gebruikers eenvoudig en betaalbaar om...

Meer infrastructuur producten
Infrastructuur Cases

Vialis uses virtualization to keep traffic information flowing

16-07 11:46   "Server virtualization enables us to give our customers more reliable and more flexible services and brings us the benefit of greater economy in the area of IT operation." - Johan...

Meer infrastructuur cases
Infrastructuur Achtergrond

Power backup: van accubak tot vliegwiel

03-10 08:10   Bedrijven zijn sterk afhankelijk van ict, dus zijn er voorzieningen voor beschikbaarheid getroffen. Maar ict is weer afhankelijk van stroom. Daarvoor zijn niet alleen eigen...

Meer infrastructuur achtergrond
Infrastructuur Opinie

Waarom een professionele tester inhuren?

07-10 10:30   Testen is makkelijk, toch....? Gewoon iemand achter een computer zetten en zeggen: "Zoek de fouten!" Iemand van de straat kan dat toch ook! Waarom zou je een professionele tester...

Meer infrastructuur opinie