< Terug naar vorige pagina

Project

Virtuele machines voor veelkernarchitecturen: Ontkoppeling van Abstracte en Concrete gelijktijdigheidsmodellen. (IWT437)

We stellen vandaag vast dat om de performantie van microprocessoren te kunnen blijven opdrijven constructeurs overstappen van het opschroeven van de klokfrequentie naar het toevoegen van meerdere kernen per chip. Dit betekent dat deze performantiewinst gekoppeld is aan de ondersteuning binnen alle software, tot de eindgebruikerssoftware toe, van gelijktijdigheid ("concurrency"). Tot op heden is veruit het meest gebruikte programmeermodel voor gelijktijdigheid gebaseerd op draden ("threads") welke op hun beurt gebruik maken van gedeeld geheugen ("shared memory"). De programmeercomplexiteit neemt daarbij echter combinatorisch toe met het aantal draden en gedeelde middelen ("shared resources"). Daarom is dit model slechts in beperkte mate geschikt voor de programmering van veelkernsystemen ("many-core systems"). Het gebruik van meer gedisciplineerde gelijktijdigheidsmodellen die expliciete gedeelde toestand ("shared state") vermijden is de haast enige mogelijke optie om op schaalbare wijze te kunnen omgaan met de inherente complexiteit van gelijktijdige software voor veelkernprocessoren.



Een bijkomend probleem is echter dat de concrete veelkernhardware waarop deze modellen afgebeeld moeten worden een grote verscheidenheid vertonen. Er zijn namelijk tal van ontwerpen mogelijk voor het structureren van de kernen en het geheugen, het toepassen van caching, het organiseren van de communicatie tussen de kernen, enz. Het is dus nodig om abstractie te maken van de grote verscheidenheid aan veelkernarchitecturen. Virtuele machines ("VM") kunnen hierbij helpen, net zoals ze succesvol waren bij het abstraheren van de verschillen tussen platformen bij de klassieke hardware met ÈÈn enkele kern. De abstracties die de instructiesets van bestaande VMs voorzien voor veelzijdigheid zijn echter erg beperkt en ze bieden geen afdoende steun voor taalontwerpers. Alvorens een VM de brug kan maken tussen verschillende gelijktijdigheidsmodellen en verschillende veelkernarchitecturen, moeten de gelijktijdigheidsmodellen eerst ontkoppeld worden van de veelkernarchitecturen door middel van een aangepaste instructieset.



Het doel van dit project is het ontwikkelen van een methodologie die taalontwerpers toelaat hun abstracte gelijktijdigheidsmodellen af te beelden op een instructieset met expliciete ondersteuning voor gedisciplineerde gelijktijdigheid en die virtuele machine-ontwerpers toelaat deze instructieset af te beelden op huidige en toekomstige veelkernarchitecturen. De instructieset moet geschikte abstracties aanbieden om de verwezenlijking van een breed aanbod van gelijktijdigheidsmodellen mogelijk te maken, zodat het kan gebruikt worden voor taalontwerp. Daarom zal ze ontworpen worden op basis van een stapsgewijze analyse van de actueel belangrijkste gelijktijdigheidsmodellen zoals daar zijn: actoren ("actors"), transactioneel softwaregeheugen ("transactional software memory") en gedeelde geheugenmodellen met vergrendeling ("locking").



Daarnaast is de afbeelding op een concreet gelijktijdigheidsmodel zoals aangeboden door een specifieke hardware architectuur ook belangrijk. Het eenvoudigste model, maar nog steeds het belangrijkste, is intra-kern communicatie. Dit is het standaard geval voor ÈÈnkernprocessoren zonder hardware gelijktijdigheidsondersteuning. De volgende stap is een gedeeld-geheugenmodel. Dit wordt reeds toegepast in de huidige multikernsystemen en zou ook gebruikt kunnen worden voor beperkte groeperingen van kernen op veelkernsystemen. Voor echte veelkernsystemen is een soort inter-kern ringnetwerk zonder gedeeld geheugen, zoals voorgesteld wordt voor Intel's Larrabee, een heel representatief concreet gelijktijdigheidsmodel. We moeten ten minste deze drie modellen beschouwen om een voldoende representatieve iteratiereeks van afbeeldingen van de instructieset op veelkernarchitecturen te kunnen maken. De resultaten van dit onderzoek zullen ons in staat stellen de abstracte en concrete gelijktijdigheidsmodellen te ontkoppelen door middel van een instructieset met ondersteuning voor gedisciplineerde gelijktijdigheid.



Dit onderzoek zal uitgevoerd worden aan het Lab voor Programmeerkunde (PROG) van de Vrije Universiteit Brussel. Dit lab beschikt over diepgaande expertise in twee domeinen (gelijktijdigheidsmodellen en virtuele machines) van dit onderzoek. De gebruikte methodologie is daarbij grotendeels gebaseerd op de constructie van artefacten: voorgestelde oplossingen worden uitgewerkt met behulp van "proof-of-concept" verwezenlijkingen. Voor het derde domein rond veelkernarchitecturen zal het IMEC optreden als partner en zal inzicht geven in de industriÎle vereisten en technologische kennis over veelkernarchitecturen. Het IMEC zal ook daar waar zinvol hardware beschikbaar stellen voor experimenten. Er zullen frequente IMEC-PROG workshops georganiseerd worden om deze samenwerking te bevorderen. Tenslotte zal expertise rond VMs aanwezig op het HPI te Potsdam in Duitsland aangeboord worden via het co-promotorschap van Michael Haupt voor dit onderzoek.

Datum:1 jan 2009 →  31 dec 2012
Trefwoorden:Bytecode Design, Virtual Machines, Informatics, Software Transactional Memory, Methodology Development, Programming Models, Concurrency
Disciplines:Wiskunde en statistiek