Warning: Undefined array key "bio" in /home/techwatch/domains/test.bits-chips.nl/public_html/wp-content/plugins/wpcodebox2/src/Runner/QueryRunner.php(126) : eval()'d code on line 13
Warning: Undefined array key "bio" in /home/techwatch/domains/test.bits-chips.nl/public_html/wp-content/plugins/wpcodebox2/src/Runner/QueryRunner.php(126) : eval()'d code on line 13
Author:
Reading time: 7 minutes
Daedalus is een ontwerpflow op systeemniveau waarmee techneuten snel kunnen experimenteren met verschillende multiprocessorarchitecturen tijdens de vroege stadia van het ontwerptraject. Het is het resultaat van tien jaar onderzoek en ontwikkeling binnen de Progress-projecten Artemis en Artemisia. Projectleider Andy Pimentel en TUE-trainee Dorieke Schipper over de mogelijkheden van de Daedalus-softwareomgeving.
Een steeds groter deel van de moderne embedded systemen is gebaseerd op heterogene multiprocessor-system-on-chip-architecturen (MPSoc) waarin zowel programmeerbare processoren als dedicated (en eventueel herconfigureerbare) componenten in een systeem zijn geïntegreerd. Om deze complexe systemen te kunnen ontwikkelen, is de notie van system-level design ontstaan. Deze aanpak moet de ontwerpcomplexiteit bedwingen door het abstractieniveau van het ontwerpproces te verhogen. Voorbeelden hiervan zijn het gebruik van platformarchitecturen om het hergebruik van IP-componenten te stimuleren, of het gebruik van hoogniveaumodellen en -simulaties om vroeg in het ontwerpproces belangrijke – en goed afgewogen – beslissingen te kunnen maken. Dit laatste, dat ook wel ontwerpexploratie heet, is essentieel omdat de keuzes die we vroeg in het ontwerpproces maken sterke invloed hebben op het succes van het uiteindelijke product.
Alhoewel het concept van system-level design al meer dan tien jaar oud is en het in die tijd veel potentie ten toon heeft gespreid, kleven er nog tal van praktische en academisch uitdagende problemen aan. Zo moeten applicaties eerst worden ontbonden in parallelle specificaties die aansluiten op een MPSoc-architectuur waarin meerdere processorkernen en dedicated componenten parallel kunnen werken. Vervolgens moet je een zogenaamde hardware-softwarepartitionering maken, waarin je besluit welke applicatietaken er in software komen en welke taken in hardware. Om dergelijke ontwerpbeslissingen te ondersteunen, moet je de MPSoc-architecturen en de hierop afgebeelde applicaties op verschillende abstractieniveaus modelleren en simuleren. Nadat er uiteindelijk een goed systeemontwerp is gevonden, volgt de implementatie. Dit houdt ook in dat je de applicaties op de architectuur afbeeldt.
Voor al deze taken hebben ontwerpers een reeks aan verschillende tools en toolflows in hun kast staan. Die zorgen gezamenlijk echter voor allerlei interoperabiliteitsproblemen. Verder bestaat er nog steeds een groot gat tussen de hoogniveaumodellen die in system-level design worden gehanteerd en de uiteindelijke systeemimplementatie. Er bestaan op dit moment niet of nauwelijks volwassen methodieken of tools om dit implementatiegat effectief en efficiënt te dichten.
Om deze problemen op te lossen en zodoende system-level design een grote stap verder te helpen, hebben het Leiden Embedded Research Center van de Universiteit Leiden en de Computer Systems Architecture-groep van de Universiteit van Amsterdam recentelijk de Daedalus-omgeving voor system-level design gepresenteerd (zie daedalus.liacs.nl). Daedalus is het resultaat van ongeveer een decennium aan onderzoek en ontwikkeling binnen twee STW/Progress-projecten, Artemis en Artemisia.
Het hoofddoel van Daedalus is om het implementatiegat te dichten voor MPSoc-architecturen in multimedia-applicaties. Dit bewerkstelligen we met een geïntegreerde toolflow die het proces van ontwerpexploratie, systeemsynthese, applicatieafbeelding en systeemprototyping voor MPSoc-architecturen in hoge mate automatiseert. De gehele Daedalus-ontwerpflow, van sequentiële applicatie tot geïmplementeerd MPSoc-systeem op een FPGA met daarop de afgebeelde (parallelle) applicatie, is binnen een tijdsspanne van slechts enkele uren te doorlopen. Een dergelijke ontwerpflow biedt vele mogelijkheden om snel te experimenteren met verschillende MPSoc-architecturen gedurende de vroege stadia van het ontwerptraject. Dit moet leiden tot betere ontwerpen en, misschien nog belangrijker, het moet tevens de ontwerptijd radicaal verkorten.
Een team van trainees van de postdoctorale Software Technology-opleiding van de TU Eindhoven (Ooti) heeft de Daedalus-omgeving recentelijk onder handen genomen om het gebruikersgemak significant te verbeteren. Gegeven het feit dat Daedalus open-source software is, is hiermee de weg naar breed gebruik van de technologie geëffend.

KPN
In Figuur 1 is de conceptuele ontwerpflow van de Daedalus-omgeving weergegeven. Een belangrijke aanname binnen Daedalus is dat de MPSoc-architecturen zijn opgebouwd uit reeds geverifieerde (IP-)componenten die in een bibliotheek zijn ondergebracht. Deze bibliotheek bestaat uit zowel programmeerbare processorkernen (zoals op dit moment Microblaze en PowerPC) en dedicated processoren, als verschillende soorten geheugens (Ram- en Fifo-gebaseerd) en netwerktypes (zoals point-to-point, bus en crossbar). Met deze bibliotheek is een zeer uitgebreid spectrum aan MPSoc-architecturen te implementeren. Natuurlijk is de bibliotheek eenvoudig uit te breiden met nieuwe of alternatieve (IP-)componenten.
Beginnend met een sequentiële applicatie in C of C++ vertaalt de KPNGen-tool deze automatisch naar een parallelle specificatie in de vorm van een zogenaamd Kahn Process Netwerk (KPN). Er gelden wel enige invoereisen voor de code die KPNGen in gaat (de applicatie moet een zogenaamd static affine nested loop program zijn), maar over het algemeen zijn multimedia-applicaties zonder al te veel moeite te specificeren zodat ze aan deze invoereisen voldoen. KPNGen is dan ook in staat, door zogenaamde source-level-transformaties, verschillende KPN-specificaties te genereren waarin bijvoorbeeld de hoeveelheid parallellisme verschilt.
De Sesame-tool neemt vervolgens de gegenereerde KPN-specificatie(s) als invoer om ontwerpexploratie uit te voeren. Hiervoor gebruikt Sesame abstracte prestatiemodellen van de (IP-)componenten in de bibliotheek. Met Sesame kunnen zodoende verschillende applicatiearchitectuurafbeeldingen, hardware-softwarepartitioneringen en architectuuropties snel en effectief worden geëvalueerd. Dergelijke ontwerpexploratie heeft als doel om een set van goede MPSoc-architecturen te vinden. De specificaties van deze kandidaten, in de vorm van abstracte XML-gebaseerde beschrijvingen van de MPSoc-architectuur, applicatie(s) en de afbeelding hiervan op de architectuur, dienen vervolgens als input voor het automatische implementatieproces binnen Daedalus.
De laatste fase in de Daedalus-ontwerpflow, de implementatie, komt op het bordje van Espam. Deze tool neemt de XML-specificaties als input, alsmede RTL-beschrijvingen van de (IP-)componenten in de bibliotheek. Hiermee is Espam in staat om synthetiseerbare VHDL te genereren die de MPSoc-architectuur implementeert. Tevens genereert Espam ook de C/C++-code voor de applicatietaken die op programmeerbare processorkernen zijn afgebeeld. Vervolgens kunnen we standaard commerciële synthesetools en compilers zonder enig extra werk gebruiken om het ontwerp af te beelden (en dus te prototypen) op bijvoorbeeld een FPGA.
Linux
De Daedalus-softwareomgeving bestaat niet alleen uit de drie kerntools KPNGen, Sesame en Espam. Om de gebruikersvriendelijkheid van de omgeving te verbeteren, hebben enkele trainees van de postdoctorale Software Technology-opleiding van de TU Eindhoven (Ooti) recentelijk een aantal belangrijke ondersteunende tools toegevoegd. Zo bevat Daedalus nu een volledig relationeel databasemanagementsysteem (RDBMS) voor het bewaren en analyseren van (tussentijdse) simulatieresultaten. Dit RDBMS geeft de ontwerper beschikking over een krachtige en uiterst flexibele gereedschapkist voor het exploreren en visualiseren van de grote hoeveelheden data die Daedalus‘ system-level-simulaties genereren. Tevens zorgt het RDBMS ervoor dat alle Daedalus-experimenten altijd reproduceerbaar zijn. Verder is er een tool ontwikkeld voor het op hoog niveau run-time analyseren van een Daedalus MPSoc-implementatie op een FPGA.
Gegeven het feit dat de Daedalus-omgeving bestaat uit een groot en complex geheel van verschillende tools, waarin elke tool vaak vele codeafhankelijkheden heeft in de vorm van bibliotheken en subtools, is de installatie (om nog maar niet te spreken over de compilatie) van de omgeving geen sinecure. Bijkomend probleem is dat Daedalus onder Linux draait en een aanzienlijk aantal distributies wil ondersteunen. Daarom hebben we voor zowel ontwikkelaars als eindgebruikers een volledig automatische en dus gebruikersvriendelijke installatieprocedure ontwikkeld die alle grote Linux-distributies ondersteunt.
De visie achter de Daedalus-softwareomgeving is dat deze volledig open moet zijn voor integratie van nieuwe tools en dat het toegankelijk moet zijn voor algemeen gebruik. Daarom is een ontwerpflow (of toolflow) in de omgeving opgebouwd uit een aantal bouwstenen. Iedere tool binnen Daedalus is een bouwsteen die de benodigde input en gegenereerde output beschrijft. Behalve de beschikbaarheid van een aantal standaard toolflows is er ook de mogelijkheid eigen toolflows te ontwikkelen. De ontwerper zorgt ervoor dat bouwstenen die eerder in de ontwerpflow zijn geplaatst de benodigde input voor een volgende bouwsteen genereren. Zo kan de gebruiker de ontwerpflow aanpassen aan de specifieke eisen van een domein of de te ontwerpen MPSoc door bouwstenen toe te voegen of weg te laten. Bovendien kan hij eenvoudig nieuwe functionaliteit aan Daedalus toevoegen in de vorm van nieuwe bouwstenen. Deze flexibiliteit is van essentieel belang voor (hightech) MKB, omdat standaard softwarepakketten steeds minder aan hun specialistische eisen kunnen voldoen.
Duplo
De Daedalus-ontwerpomgeving biedt MPSoc-ontwerpers de mogelijkheid om in een zeer vroeg stadium belangrijke ontwerpbeslissingen te nemen, gebaseerd op robuuste en betrouwbare simulatieresultaten. In een tijdsspanne van enkele uren kan Daedalus duizenden kandidaat-architecturen simuleren, waarna het de meest kansrijke architectuur nader kan analyseren met een prototype-implementatie op een FPGA. Alle stappen binnen dit gehele ontwerptraject sluiten op elkaar aan en zijn vrijwel geheel geautomatiseerd. Dit vergroot het gebruikersgemak en verkort de leercurve van de ontwerpflow aanzienlijk. Je zou Daedalus als het ware kunnen zien als technisch lego met een Duplo-interface. Hiermee maakt Daedalus system-level design van MPSoc-architecturen toegankelijk voor een breder publiek.
Voor de (nabije) toekomst streven we naar een flinke uitbreiding van de Daedalus-gebruikersgemeenschap. Het MKB heeft al veel interesse getoond, gesterkt door het feit dat Daedalus open source is en ze dus geen dure licentie hoeven te betalen. Gegeven dat verschillende internationale onderzoeksgroepen Daedalus inmiddels gebruiken, zijn wij ervan overtuigd dat onze open-source-filosofie zorg zal dragen voor een continue innovatie en verbetering van de Daedalus-ontwerpflow. Hiervan zal de gebruikersgemeenschap direct de vruchten gaan plukken.