Efficiëntere processors: er is leven na Moore
De Wet van Moore werd door sommigen al doodverklaard, door anderen zelfs al ten grave gedragen. Toch zijn vele wetenschappers nog steeds bezig om innovatieve bakprocessen te ontwikkelen die Moore en zijn wet opnieuw kunnen reanimeren. Tot we zover zijn, moeten we echter kijken naar andere manieren om processors sneller en efficiënter te maken. Een van de pistes die vandaag bewandeld wordt, richt zich op het overdragen van bepaalde softwarematige taken naar de hardware. Bijvoorbeeld bij het gebruik van hardwarematige wachtrijen om de multi-core CPU-flessenhals te ontstoppen.
Flessenhals
Het schalen van dual- en quad-corechips leverde in het verleden steeds grote prestatiewinsten op. Tegenwoordig is dat proces zo duur en omslachtig geworden dat elke vooruitgang zo veel kost, terwijl die zo’n kleine winst oplevert, dat het de investering bijna niet waard is. Eén van de redenen dat het toevoegen van extra processorkernen bovendien geen oplossing is, is het probleem dat het onderhouden van ‘cache coherency’ oplevert tussen kernen die data delen.
Dat heeft te maken met hoe processors data verwerken. Een illustratie: wanneer een taak binnenkomt bij de CPU, zal die de taak verdelen onder de beschikbare rekenkernen. Wanneer twee kernen samenwerken, gaan ze elk met de helft van de taak aan de slag. Elke kern beschikt over zijn eigen L2-cache waarin gegevens rond de taak worden opgeslagen. Bij ‘cache coherency’ (zeg maar een gedeelde cache) zal de eerste kern na het afhandelen van zijn (of een) deel van het werk een nieuwe waarde wegschrijven in die cache, waarna de tweede kern hiervan op de hoogte wordt gebracht. Die tweede kern weet nu dat zijn gegevens in zijn L2-cache niet meer correct zijn, en zal die bijwerken zodat die over dezelfde kennis beschikt.
Handenvrij bellen
Je zou het nog het best kunnen vergelijken met een groepsreis naar Spanje: jijzelf en je partner zijn samen met enkele vrienden op weg naar een vakantieoord. Jullie vertrokken iets vroeger, waardoor jullie over meer informatie beschikken dan de anderen in de tweede wagen. Omdat je een goede reisgenoot wilt zijn, houd je je kompanen op de hoogte met regelmatige telefoontjes over files, ongevallen en weersomstandigheden. Omdat je je aandacht nu moet verdelen over twee taken (rijden en informatie doorgeven), zullen beide taken moeizamer verlopen, met eventueel een ongeluk tot gevolg.
Bij processors is dat hetzelfde: aangezien zoveel tijd en energie verloren gaat aan het onderling communiceren, treedt een flessenhals op waarbij er minder rekenkracht overblijft om de taak zelf te volbrengen. Nochtans is deze gedeelde cache essentieel om multi-cores te kunnen schalen. Hoe meer kernen bij een taak betrokken zijn, hoe meer tijd en energie het vraagt om de gekozen strategie tot gegevensdeling in goede banen te leiden.
Co-piloot
Intel werkt samen met onderzoekers uit North Carolina om dat probleem op te lossen. Ze zijn met een merkwaardige oplossing op de proppen gekomen: een ‘Queue management device’ (QMD), oftewel een wachtrijmanager. Het gaat hierbij om een hardwarematige oplossing voor een softwareprobleem. Als we de vorige analogie doortrekken, kan je stellen dat je de telefoon hebt overgedragen aan je partner die mee in je auto zit, notities nam van alle informatie die relevant is voor je medereizigers en die doorgeeft zonder jou lastig te vallen, waardoor jij je beter kan concentreren. Af en toe zal je partner je nog wel eens om bevestiging vragen, maar hij of zij maakt zich toch nuttig.
Voordelen
De onderzoekers stellen dat deze aanpak verschillende voordelen zal hebben. Ten eerste worden wachtrijen snel behandeld: in plaats van honderden bewerkingen uit te voeren in de kern zelf, moet die kern nog slechts een signaal geven om bepaalde data in of uit de wachtrij te zetten. De QMD regelt de afhandeling verder zelf, waardoor de kern nuttiger gebruikt kan worden. Ten tweede kan de QMD verschillende partijen tegelijk aan: kernen die naast elkaar gegevens aanbrengen en nodig hebben, zonder dat daarbij de nood ontstaat aan synchronisaties of bewerkingen die gepauzeerd moeten worden.
Ten derde maakt de QMD gedeelde communicatie in softwarematige processen overbodig. Verder maakt deze methode ook schaalbaarheid makkelijker, zonder daarbij de rompslomp van wachtrijen aan te dikken. Zelfs ten opzichte van een volledig geoptimaliseerde softwarematige wachtrij zorgt de QMD voor resultaten die tot twintig keer beter zijn.
Deel van groter geheel
Intel heeft al laten weten dat het erg geïnteresseerd is in de resultaten van de tests, maar geeft meteen ook wat tegengas: het processorbedrijf wijst erop dat een QMD slechts een tandwiel is in de grotere machine van processors. Zo’n mechanisme lost echter verre van alle problemen op die we terugvinden bij het schalen van meerdere kernen. Oplossingen vinden voor deze problemen is belangrijk, maar het is ook een moeilijk proces: wanneer is een oplossing goed genoeg om ze te integreren in àlle processors? Wat als ze net geïntegreerd zijn en er een week later een oplossing uit de bus komt die nog vele malen efficiënter werkt? Zoals gewoonlijk spreken geldoverwegingen.
Yan Solihin, een van de onderzoekers, beaamt het standpunt van Intel en stelt dat “we prestaties moeten verbeteren door de energie-efficiëntie te verbeteren. Dat is alleen mogelijk door sommige software te verplaatsen naar de hardware.” De grote uitdaging daarbij is het ontwaren van software die vaak genoeg gebruikt wordt en daardoor een geschikte kandidaat is om de overstap te maken naar de hardware. Solihin gelooft dat daar wel degelijk een ideale onderscheiding in te maken valt.
En verder
Momenteel werkt Solihin met zijn team verder aan nieuwe oplossingen. Ze hopen nog meer hardwareversnellers te kunnen ontwikkelen, of, indien mogelijk, zelf alternatieven te bedenken voor hun QMD. Als ze er zelf in slagen om concurrerende oplossingen te vinden voor hun methodes, hebben ze immers een beter overzicht op wat mogelijk is, wat er nodig is, en wat er reeds gevonden is.