Je leest:

Iedere processor zijn eigen geheugen

Iedere processor zijn eigen geheugen

Auteur:

Hristo Nikolov (1974, Bulgarije) kwam in 2004 naar Nederland. Het was een logische stap, want vrienden waren hem al voorgegaan. Bovendien bracht Nikolov voor de promotieplek aan het Institute of Advanced Computer Science (LIACS) van de Universiteit Leiden de ideale combinatie van opleiding en werkervaring mee. Hij had in Bulgarije twee studies op het terrein van microprocessortechnologie afgerond, en bij twee bedrijven gewerkt aan de ontwikkeling van nieuwe microprocessoren.

Small
dr. Hristo Nikolov
Technologiestichting STW

Deze kennis en ervaring sloten precies aan bij zijn promotieonderzoek: het ontwikkelen van nieuwe methoden voor het ontwerpen van multiprocessorsystemen voor de verwerking van videosignalen in apparaten en meetapparatuur. Nikolov: “Het gaat om processorsystemen die in allerlei apparatuur worden ingebouwd, bijvoorbeeld digitale kopieermachines of medische apparatuur. Voor dit soort multimediatoepassingen is er meer rekenkracht nodig dan een enkele microprocessor kan leveren. De uitdaging is, om de rekenopgaven te verdelen over meerdere microprocessors, die allemaal zijn ondergebracht in een enkele, zogenoemde multicore chip.”

Bij het verdelen van rekentaken over meerdere rekeneenheden staan wetenschap en industrie nog voor veel fundamentele vraagstukken. Hoe kun je beeldgegevens met een enorm hoge doorstroomsnelheid verwerken, zonder dat er haperingen ontstaan? Hoe verdeel je miljoenen berekeningen binnen een enkele seconde zodanig over meerdere processors, dat zoveel mogelijk rekenopdrachten parallel kunnen worden uitgevoerd zonder dat de processors op elkaar moeten wachten?

Tijdrovend proces

De meeste computermodellen gaan nog uit van een sequentiële werking van de computer, waarbij de berekeningen een voor een worden uitgevoerd. Methodes om systemen met meerdere processors te ontwerpen en aan te sturen, staan nog in de kinderschoenen. Nikolov: “Voor ontwerpers vormt bij de embedded multicore processors parallel werken een enorme uitdaging. Je kunt die systemen niet meer sequentieel beschrijven, en het is enorm moeilijk om het ontwerpproces van sequentieel naar parallel te veranderen. Eerst moet je je systeem en de architectuur zodanig ontwerpen dat er parallel gerekend kan worden, en daarna moet je zien hoe je de boel kunt programmeren en synchroniseren. Bij dit tijdrovende, moeilijke proces kunnen veel dingen fout gaan.”

Omdat Nikolov zo goed thuis was in de materie, boekte hij al na enkele maanden de eerste resultaten. Hij deed experimenten met de rekenmodellen voor de architectuur en programmering van multicore processorsystemen, die in zijn onderzoeksgroep al langer in gebruik waren. Nikolov: “Mijn eerste wapenfeit was dat ik een bestaand softwarepakket, dat de ontwerper helpt om een sequentieel algoritme om te zetten in een parallel systeem, kon verbeteren.”

In de jaren daarna ging het om de vraag hoe je kunt voorkomen dat je bij ieder nieuw videosysteem weer handmatig uit moet rekenen welke taken je parallel kunt uitvoeren, en welke berekeningen elkaars resultaten nodig hebben. Nikolov: “Ik ben toen een systeem gaan ontwerpen dat automatisch dit proces kan analyseren. De eerste stap is abstraheren. Je moet een zo abstract mogelijke beschrijving van het systeem zien te vinden: hoe snel moet het zijn, welke berekeningen wachten op elkaar, hoe verhoudt de rekenkracht van de processors zich onderling? Alle eigenschappen van het systeem, van de processors tot de eisen aan de synchronisatie, brengen we daarvoor systematisch in kaart.”

Medium
Dr. Hristo Nikolov met op de achtergrond: Open source software voor systematisch ontwerp van multicore-platforms voor media-applicaties.
Technologiestichting STW

Omdat het systeem ook werkelijk in multicore processors moet kunnen worden omgezet, is de vervolgvraag: hoe kun je die abstracte definities weer naar de architectuur, de bits en de bytes van meerdere processors vertalen? En dan wel zo, dat het systeem erin slaagt, de beschikbare rekenkracht uit alle processors te persen?

Nikolov: “Het grootste probleem daarbij is het geheugenbeheer. De gangbare methode is dat je iedere processorkern op een centraal geheugen aansluit. Dat levert een grote bottleneck op – iedere processor moet op zijn beurt wachten. Maar geef je elke processor zijn eigen geheugen, dan ontstaat er al snel chaos. Hoe wil je voorkomen dat de ene processor iets schrijft, als de andere net aan het lezen is? Deze timing is cruciaal, en in de bestaande systemen gaat het bijna altijd fout. Bij Philips bijvoorbeeld gebruiken ze om deze reden nog nergens gedistribueerde geheugensystemen.”

Synchroon verloop

Nikolov slaagde er als eerste ter wereld in om een werkend systeem met gedistribueerd geheugen te maken. Hij laat de processors zo met elkaar communiceren, dat ze zelf bepalen welke processorkern bepaalde gegevens in het geheugen heeft staan. Nikolov: “Ik geef iedere processor een eigen geheugen, en de mogelijkheid om gegevens met andere processors uit te wisselen. Die uitwisseling is sequentieel: de ene processor schrijft zijn resultaat in een tijdelijke opslag, waar de andere processor het weer uit kan halen. Wat er het eerst in komt, gaat er ook weer het eerst uit. Door die geordende afloop is het een mooi synchroon gebeuren. Je hebt geen kritische timingproblemen meer.”

De resultaten verschenen in 2008 in het meest vooraanstaande tijdschrift van het vakgebied, de IEEE transactions on computer-aided design of integrated circuits and systems. Het paper kwam op de tweede plaats van meestgelezen artikelen. Nikolov: “Ik was enorm verrast door dit succes. Maar ja, het is de meest complete oplossing voor dit probleem. Veel ontwikkelaars in de industrie staan hier handenwringend op te wachten. Inmiddels hebben we drie programmeurs aan het werk. Alles wat we hier programmeren, maken we beschikbaar in de open source community. Het is mijn ideaal dat elke ingenieur onze kennis voor multicore processorsystemen kan gebruiken.”

Het promotieonderzoek van Hristo Nikolov is gefinancierd binnen het Programme for Research on Embedded Systems and Software (PROGRESS) van de Technologiestichting STW.

Dit artikel is een publicatie van Technologiestichting STW.
© Technologiestichting STW, alle rechten voorbehouden
Dit artikel publiceerde NEMO Kennislink op 03 februari 2011

Discussieer mee

Vragen, opmerkingen of bijdragen over dit artikel of het onderwerp? Neem deel aan de discussie.

LEES EN DRAAG BIJ AAN DE DISCUSSIE