Your cart is currently empty!
Verdeeld over cores
In artikelen over multicore vallen een paar dingen steevast op. Prestaties staan altijd centraal, snelheden moeten volgens een welbekende wet langs een vaste curve blijven groeien. Daarnaast lijkt hardwarearchitectuur nog alle aandacht op te eisen. Artikelen daarover besteden hooguit een paar paragrafen op het eind aan softwarearchitectuur. Deze stukjes zijn dan vooral grappig om te lezen.
Het lijkt de consensus: een mooi processorontwerp is niet besteed aan softwareontwikkelaars en al helemaal niet aan architecten. De redenering is simpel: door software als een gelaagd bouwwerk van abstracties te benaderen, komt deze te ver af te staan van de processormicroarchitectuur om nog serieus te kunnen worden genomen (lees: maximale prestaties te leveren). Er wordt zelfs gesuggereerd om processoren voortaan twee verschillende interfaces te geven: een voor de ontwikkelaar die het vat en een voor de rest. Vanuit een bepaald wereldbeeld kloppen deze redeneringen nog ook. Het is alleen jammer dat dat beeld onwerkbaar is voor softwareprojecten van enige omvang.
Ik weet trouwens niet of er echt een dringend probleem is. In mijn werk is multicore geen groot onderwerp. Ik heb collega‘s gevraagd stukken in onze software aan te wijzen die baat zouden hebben bij het expliciet adresseren van multicoreaspecten. De opbrengst was beperkt. Ruim geschat, betreft het nog geen promille van het totaal. En zelfs van dat kleine deel geven ontwikkelaars aan dat een duidelijke architectuur meer waard is dan een onduidelijke optimalisatie. Groeipad is belangrijker dan performance. En als het echt over prestaties gaat, dan is er meer winst te halen uit dat veel grotere andere deel van de code: een goedgekozen datastructuur kan op de schaal van Moore nog steeds makkelijk tientallen jaren besparen.