
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.”

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.
Lees de andere artikelen gepubliceerd in de STW brochure Technologisch Toptalent 2010 :
- dr.ir. Martijn Cox – Intervaltraining voor hartkleppen (winnaar)
- dr.ir. Esther Leung – Een video van het hart in 3D dankzij ultrasoon geluid (finalist)
- dr. Robert Rissmann – De lange weg naar de ultieme huidcrème (finalist)
- dr.ir. Damiano Bolzoni – Al hackend naar meer veiligheid
- dr.ir. Christian Günther – Op zoek naar het perfecte protocol
- dr. Usama Kadri – Hoe voorkom je lange vloeistof slugs
- dr. Richard van Leeuwen – Het mysterie van de schimmeldoder ontraadseld
- dr.ir. Lars Perk – Biochemisch puzzelen met antilichamen
- dr. Sandeep Unnikrishnan – Het juiste recept voor de microfabricage van elektrode