Cees_Jan_Koomen_02

Cees Jan Koomen

8 February 2008

Multicoresystemen beloven veel voor onze toekomst. Intel en andere chipbakkers komen met multicoresystemen op de markt. Waarom multicore? Als je een processor tweemaal zo groot maakt, gaat de performance niet met een factor twee omhoog, maar ongeveer met de vierkantswortel. Dat is de regel van Pollack en is in allerlei bestaande, enkelmotorige systemen aangetoond. Vandaar het streven om meerdere kernen op een chip te plaatsen om deze factor te vergroten.

De ontwerpers van die systemen moeten een aantal problemen oplossen. Ten eerste is daar de communicatie tussen de cores. Afhankelijk van de systeemarchitectuur kan dat een flinke overhead opleveren. Zonder speciale maatregelen is dat een kwadratische afhankelijkheid van het aantal processoren en heeft een multicoresysteem met vier processoren zo‘n tienmaal grotere communicatieoverhead dan een enkele kern. Voor acht processoren is die factor al zesendertig, voor zestien processoren is dat maximaal een factor honderdzesendertig en bij 256 processoren (ja, dat is nog een eind weg) is die factor meer dan tweeëndertigduizend.

Een slimme communicatiestructuur is dus essentieel om het systeem op zinvolle wijze te laten werken. Er zijn oplossingen met een centraal geheugen, maar dat levert problemen op als alle processoren veel communicatie hebben naar dat geheugen. Meestal wordt een packet-switched netwerk toegepast voor die communicatie.

Er is hier een interessante overeenkomst met menselijke organisaties. We weten allemaal dat als de teamgrootte groeit, de communicatie een probleem vormt. Bij een klein team van twee of vier personen ga je snel even bij elkaar te rade, maar een groep van twintig of meer heeft al een groepscommunicatiestructuur nodig zoals een wekelijkse stafvergadering, een technologiestuurgroep en een managementteam. De praktijk leert dat een groepsgrootte van zo‘n zes tot acht personen optimaal is qua communicatieoverhead. Daarboven heb je formele structuren en overleg nodig. Voor multicoresystemen geldt eigenlijk hetzelfde.

 advertorial 

8-bit Microcontrollers Still Anchor the Majority of Embedded Designs Today

They are tiny, but vitally important. The market for 8-bit microcontrollers continues to grow strongly as a key part of the drive to digitalisation, highlighted by the current chip shortages. Read more about Microchip’s 8-bit devices.

Er is nog een andere interessante factor die de structuur van een multicoresysteem bepaalt en dat is de menselijke ontwerpfactor. In het college dat ik daarover indertijd op de TUE gaf, vertaalde ik de complexiteit van een ontwerp in termen van bouwstenen en de verbindingen daartussen. Het aantal verbindingen heeft wederom een kwadratisch verband met het aantal componenten dat moet worden verbonden.

De oplossing is de toepassing van abstractie: een aantal componenten wordt als een nieuwe macrocomponent gezien. Top-down ontwerpen is niets anders dan macrocomponenten ontleden of verfijnen in kleinere componenten totdat je het niveau van de elementaire bouwstenen (bijvoorbeeld logische poorten of rekeneenheden) hebt bereikt. Door deze methode toe te passen, wordt het kwadratische complexiteitsprobleem vervangen door een meer lineaire.

De toegepaste architectuur, ontwerpmethode en de gebruikte tools zijn kritische elementen in het hanteren van de communicatie- en ontwerpcomplexiteiten. Een ander groot probleem is de vermogensdissipatie en de koeling. Je kunt de vermogensdissipatie beperken met voltage scaling per core. Dat wil zeggen dat je de frequentie en/of de voedingsspanning voor iedere kern zodanig regelt dat er een optimale vermogensbalans is afhankelijk van de taak van de betreffende core op dat moment.

Een andere factor die meetelt, is de hoeveelheid parallellisme die je uit de applicatie kunt afleiden. Als die factor klein is, met andere woorden: er is weinig parallellisme, dan zal een multicoreoplossing niet veel voordeel bieden. Multi-threading is een techniek om de hoeveelheid parallelliteit te laten toenemen. Het schrijven van software in termen van communicerende processen is een andere toegepaste methode.

Het spreekwoord luidt: spreken is zilver en zwijgen is goud. Goed communiceren blijft echter een kunst.