Ger_Schoeber

Ger Schoeber

10 July 2008

Graag neem ik u even mee op een gedachtereisje dat laatst door mijn hoofd speelde. Hij voert langs de toename van silicon, de concepten van parallelle verwerking in hardware en software en de analogie met de 1300 gram in onze hersenpan.

Er is een exponentieel toenemende vraag naar het vergroten van de hoeveelheid functionaliteit in producten, de nauwkeurigheid van berekeningen en de geliktheid van grafische gebruikersinterfaces. Dat leidt tot niet te stuiten vraag naar rekencapaciteit voor verwerken van astronomische hoeveelheden gegevens. Hoe krijgen we al die capaciteit nog in silicium gebakken? Het alsmaar verhogen van klokfrequentie verschuift de problematiek naar warmteafvoer en stokt daardoor.

De oplossing is gevonden in de verschuiving naar parallellisme. Meer cores combineren, de DSP‘s hebben het ons al voor gedaan. De GPU-architecturen pakken de techniek van meerdere parallelle instructies per cycle nu ook op. En de dual- en quadcore CPU‘s zie je terug in de standaard desktop van vandaag.

Toch is het concept verre van nieuw. Begin jaren tachtig was er een korte hype richting transputers (transistor-computers). Destijds dachten chipmakers tegen de grens aan te lopen van het maximum aantal transistoren dat op een chip kon worden geperst. De transputers werden via vaste point-to-point-verbindingen aan elkaar verbonden om daarmee de gezamenlijke verwerkingscapaciteit flink te vergroten. Hier gaat een vergelijking op met neurale netwerken, die de basis vormden voor het realiseren van kunstmatige intelligentie.

Neurale netwerken, een ontwerp dat overeenkomt met ons eigen brein, een uitgebreid netwerk van onderling verbonden neuronen. Zullen we ooit de capaciteit van onze grijze cellen kunstmatig na kunnen bootsten? De eerste voorspellingen wanneer we dit zouden hebben gerealiseerd, variëren een beetje tussen 2040 en 2050.

Het is interessant om te zien dat we steeds verder grijpen naar parallelle verwerking om daarmee de totale verwerkingscapaciteit te vergroten – en dus een kunstmatig brein te realiseren. Dat zorgt ervoor dat het ontwerp en zeker ook de optimale benutting van een dergelijk ontwerp tot een voor de mens niet te overziene complexiteit verwordt. Ons brein heeft immers veel moeite met het ontwerpen van correcte en optimale verwerking van parallelle processen. Ons denkproces is nu eenmaal sterk sequentieel. Toch is ons brein óók een gigantische parallelle verwerkingseenheid.

Eens even kijken naar de software. Een sequentiële lijst van instructies, aangezwengeld en beïnvloed door externe events en in volgorde uitgevoerd op de regelmatige cadans van een klok. Of het nu micro-instructies in de processor zijn, assemblerinstructies of statements in een programmeertaal; de basis is een originele lijst van sequentieel uit te voeren opdrachten. Prima te volgen met onze denkprocessen.

Al voordat echte parallelle verwerking breed beschikbaar was in de processoren werd de software ontworpen in ’semi‘-parallelle applicaties, processen en threads. Ik noem het semi-parallel omdat uiteindelijk een scheduler in een RTos ervoor zorgt dat alle instructies in sequentie worden uitgevoerd door een processorkern. De afbeelding van parallelle software op een sequentiële processor is niet eenvoudig te doorgronden, vooral als je onverwachte gebeurtenissen wil verklaren als gevolg allerlei timingaspecten. Zeker als ook pipelining voor instructies is toegepast.

Je zou denken dat dit eenvoudiger zou worden als parallelle software ook direct op parallelle processorarchitecturen zou worden afgebeeld. Het tegendeel is echter waar. Het creëert een extra dimensie en laat daarmee de complexiteit nog eens exponentieel toenemen. Menselijk gezien wordt het steeds moeilijker om dit te bevatten of te overzien. Een kunstmatig brein komt er derhalve niet mee dichterbij.

Moeten we de oplossing dan maar zoeken in het ontwerpen van systemen die de complexiteit van door ons ontworpen systemen kan doorgronden? Als ons brein het er nu al moeilijk mee heeft en we moeten wachten tot 2040 om onze eigen capaciteit überhaupt te kunnen evenaren, dan kunnen we tot 2060 wachten tot we een systeem in handen hebben dat in staat is een systeem anno 2008 te doorgronden. Is dat een onoverbrugbare complexiteitskloof?