Reading time: 7 minutes
Author:
Op 6 december kwamen internationale experts in Gent bijeen voor een symposium over de toekomst van herconfigureerbare hardware. Dankzij de nieuwe ontwikkelingen in het domein hoeven ontwikkelaars niet langer te kiezen tussen een dure, op maat gemaakte ASIC en een goedkope, algemene processor. Op het symposium was de state-of-the-art van de huidige oplossingen te zien en konden de aanwezigen een blik werpen op de toekomst.
Veel ontwikkelaars gebruiken een structureel verkeerde manier om herconfigureerbare hardware te ontwerpen, meent André DeHon, computerwetenschapper aan het California Institute of Technology. DeHon sprak afgelopen december op ’The future of configurable hardware‘, een symposium van het Aces-onderzoeksnetwerk, het Resume-project en de universiteit van Gent (kader). ’Ze maken te weinig gebruik van de eigenschappen van de hardware, zoals ruimtelijk parallellisme en hoge bandbreedte. Dat is grotendeels te wijten aan de talen waarmee ze ontwerpen en programmeren‘, aldus DeHon.
Zo werken Verilog en VHDL te veel op het fysische niveau, waardoor het design opnieuw moet voor nieuwe hardware. Bovendien kan een ontwerper geen implementatievrijheden in de uit te voeren taak voorstellen. De programmeertalen C/C++ en Fortran zijn aan de andere kant weer te veel gebaseerd op een achterhaald computermodel: single-threaded, met één geheugen en impliciete communicatie. Dit stuurt ontwerpers in de verkeerde richting en maakt het voor compilers moeilijk om parallellisme en communicatie te ontdekken.
Als gevolg van deze structureel verkeerde werkwijze moet een ontwerp na een jaar of anderhalf (wanneer er nieuwe chips uitkomen) vaak volledig op zijn kop. Zoveel werk weggooien is uiteraard niet goed vanuit economisch standpunt. De ontwerper staat voor de uitdaging om herconfigureerbare oplossingen te vinden die de mogelijkheden van de hardware ten volle benutten.
DeHon pleit dan ook voor een nieuwe manier van ontwerpen, gebaseerd op twee pijlers: systeemarchitecturen en ontwerppatronen. ’Systeemarchitecturen laten toe om parallellisme op verschillende manieren te organiseren. Met ontwerppatronen kan een ontwikkelaar implementaties verfijnen en optimaliseren.‘
Een systeemarchitectuur is een manier om berekeningen te organiseren. De benodigde hardware bevat miljoenen programmeerbare opzoektabellen en rekenkundige eenheden, en duizenden geheugenblokken en programmeerbare verbindingen. Om dit te gebruiken voor een specifieke taak moet de ontwerper zich afvragen wat hij in één klokcyclus kan doen, waar hij de berekeningen uitvoert en welke algoritmes hij gebruikt. Er zijn meerdere wegen die naar Rome leiden, maar er blijken een klein aantal nuttige herbruikbare manieren te zijn: de systeemarchitecturen.
De hardwareontwerper moet volgens DeHon dan ook een catalogus van deze systeemarchitecturen tot zijn beschikking hebben. ’Hij kan dan voor elke toepassing de architectuur kiezen die daar het beste bij past‘, meent hij. ’De ervaring die hij daarmee opdoet, kan hij gemakkelijk hergebruiken in andere toepassingen.‘ Elke architectuur legt specifieke beperkingen op. Hiervan kan een ontwerper gebruikmaken om een efficiënte implementatie te maken. Zo kunnen er beperkingen zijn op de interacties tussen de datastromen, de manier van communicatie en de sequentiële controle. Hoe meer beperkingen een architectuur oplegt, hoe meer optimalisatie er mogelijk is.
Wanneer een ontwerper de organisatie met een systeemarchitectuur heeft vastgelegd, zijn er nog heel wat beslissingen te maken. DeHon ziet het als een uitdaging om studenten een trukendoos aan te leren voor efficiënte oplossingen. De meeste ingenieurs in opleiding kennen wel goede technieken voor sequentiële systemen, maar ze hebben nooit leren gebruikmaken van technieken om ruimtelijk parallellisme uit te buiten. De trukendoos van DeHon bestaat uit ontwerppatronen: een verzameling standaard ontwerptrucs voor herconfigureerbare hardware. Deze handigheidjes zijn geïnspireerd door het design patterns-paradigma in de wereld van software-engineering, dat aanspoort tot het hergebruik van goede oplossingen.

De collectie van ontwerppatronen heeft heel wat voordelen, volgens DeHon. ’Allereerst werkt het als een naslagwerk voor designers‘, legt hij uit. ’Zij kunnen hetzelfde vocabulaire gebruiken bij het discussiëren over verschillende oplossingen en daardoor efficiënter communiceren. Ook pedagogisch hebben de ontwerppatronen hun waarde: ze zijn duidelijk voor studenten en later in de praktijk bruikbaar. Bovendien zou ontwikkelgereedschap de patronen rechtstreeks kunnen ondersteunen en zo een deel van de implementatie automatiseren.‘
CAD voor energiebesparing
’Het energieverbruik van FPGA‘s kan sterk verminderd worden door computerondersteunde designtechnieken te gebruiken‘, aldus Steve Wilton van de universiteit van British Columbia. Bij het ontwerpen van een toepassing in een FPGA wordt eerst het gedrag omgezet in een RTL-ontwerp (register transfer level). Daar komt een fysisch ontwerp uit voort, waarna het programmeren van de chip kan beginnen. Een CAD-programma start met een RTL-ontwerp en zet dit in vier stappen om naar een FPGA-bitstroom: technologiemapping, clustering, plaatsing en routering.
Volgens Wilton kan een ontwerper in elk van deze stappen met de hulp van een CAD-programma voor energiebesparing zorgen. De huidige CAD-tools voor FPGA-ontwerp gebruiken de vrijheidsgraden in elke stap vaak om een zo klein of zo snel mogelijke implementatie op te leveren. Door andere keuzes kunnen designers echter een implementatie verkrijgen die minder energie verbruikt. Een optie die het energiebesparende CAD-programma tijdens het plaatsen biedt, is om de verbindingen met een hoge activiteit zo kort mogelijk te houden.
’Experimenten wijzen uit dat de energiebesparingen in de verschillende stappen bijna cumulatief zijn als je ze allemaal toepast‘, aldus Wilton. ’Voor hedendaagse FPGA‘s kunnen deze gecombineerde CAD-technieken meer dan 20 procent energiebesparing opleveren.‘ Om de toekomst van herconfigureerbare hardware te verzekeren, is het volgens Wilton hoogst noodzakelijk om CAD-technieken verder te ontwikkelen en zo te vermijden dat de steeds complexer wordende FPGA‘s te veel energie opslurpen.
FPGA als bestandssysteem
Een interessante nieuwe ontwikkeling bij Xilinx Research Labs is het Xilinx Virtual File System (XVFS). Hiermee kan een ontwikkelaar de FPGA-bitstroom als een bestandssysteem benaderen vanaf zijn computer. De gebruikers van XVFS lezen en schrijven files die delen van de FPGA-configuratie voorstellen.
’Deze aanpak heeft heel wat voordelen‘, aldus Adam Donlin van Xilinx Research Labs. Gebruikers zijn gewend aan het concept van een bestandssysteem. Er hoeven bovendien geen speciale toepassingen geschreven te worden om de FPGA te configureren. ’Standaard scripts in Perl of programma‘s in C en C++ kunnen met het XVFS overweg‘, beweert Donlin. Ontwikkelaars kunnen bestaande programma‘s op deze manier gewoon gebruiken om met de FPGA te werken. Zo kan bijvoorbeeld Winzip de configuratie archiveren. De veldprogrammeerbare logica is ook van op afstand over een netwerk te controleren door het als NFS-bestandssysteem te mounten.

Vrijheid in architectuur
De Imec-spin-off Target Compiler Technologies heeft in tien jaar tijd een hele productlijn ontwikkeld rond een nieuw ontwerpparadigma. Het begon in 1996, toen Johan Van Praet en drie Imec-collega‘s Target oprichtten om hun onderzoeksproject over een retargetable compiler te commercialiseren.
SOC-ontwerp maakt meer en meer gebruik van programmeerbare processorkernen waarvan de architectuur en instructieset zijn geoptimaliseerd voor een specifiek toepassingsdomein. Deze ASIP‘s (application specific instruction set processors) proberen het beste van twee werelden te combineren: de flexibiliteit van algemene processoren en de performance van gespecialiseerde ASIC‘s. Bij veel herconfigureerbare processorkernen die op de markt zijn, ligt de architectuur echter nog te veel vast volgens Van Praet, vicepresident engineering bij Target. ’In onze Chess/Checkers-ontwikkelomgeving daarentegen kunnen ontwerpers een hele nieuwe processorarchitectuur bouwen, geoptimaliseerd voor een specifieke toepassing‘, aldus Van Praet.
De Chess/Checkers-software maakt het mogelijk om tegelijk een toepassing te ontwerpen en een processor die deze applicatie efficiënt kan uitvoeren. Naast een C-programma dat de toepassing beschrijft, kunnen ontwikkelaars namelijk ook een NML-programma bouwen dat het processormodel beschrijft. De gebruiker begint dan met de applicatie en het processormodel. Hij compileert de code voor dat model met de retargetable compiler Chess. Daarna simuleert en analyseert hij de implementatie met de retargetable instructiesetsimulator en debugger Checkers. Als die bottlenecks vindt, dan kan de ontwikkelaar het processormodel aanpassen, de toepassing opnieuw compileren en simuleren. Zo komt hij uiteindelijk tot een efficiënt processormodel voor deze toepassing. Daarmee kan hij met de hardwarebeschrijvingsgenerator Go een Verilog- of VHDL-model genereren, waaruit hij ten slotte de ASIP produceert.
Het grote voordeel van Targets aanpak is volgens Van Praet de vrijheid in architectuur. ’Met Chess/Checkers kan de ontwikkelaar tegelijk met de toepassing een aangepaste processor ontwerpen, van een toepassingsspecifieke DSP tot een algemene CPU‘, legt hij uit. ’Hij kan er zelfs verschillende types van kernen mee in één SOC plaatsen, bijvoorbeeld een DSP, microcontroller en VLIW-processor in één systeem. Met de processorspecificatietaal NML is het mogelijk om aan te geven welke datatypes de processorkern kent, welke registers er zijn, hoe de instructiewoorden eruitzien en hoe de instructiepijplijn werkt.‘
Een processorspecificatie in NML bevat genoeg structurele informatie om tot een efficiënte hardwaresynthese te komen. Vergeleken met manueel ontwerp zijn er slechts tot 10 procent meer poorten. De tijd om de hardware te ontwerpen daalt bovendien van maanden of jaren tot dagen. De ontwerper kan verschillende parameters instellen die de hardwaresynthese beïnvloeden. Hij kan optimaliseren voor snelheid, maar ook voor energieverbruik of oppervlakte.
Van Praet geeft als voorbeeld hoe een ontwerper in Chess/Checkers een systeem voor bewegingsschatting in MPEG-4 zou ontwikkelen. Deze toepassing moet een som van absolute verschillen (SAD, sum of absolute differences) berekenen. In de eerste fase komt deze implementatie volledig in de software en draait het op een gewone 16 bit microprocessorkern. ’Daarna voeg je een scalaire versneller toe om de SAD in één klokcyclus uit te voeren‘, vertelt Van Praet. Een volgende stap is de processor uit te breiden met vectorgegevens, zodat we een SIMD-processor (single instruction multiple data) hebben. Als we zo in vijf fases de hardware optimaliseren, ontstaat er volgens Van Praet uiteindelijk een processorontwerp dat 25 keer sneller is dan het origineel en waarvan de hardwarecomplexiteit is verdubbeld. ’De totale tijd om dit door één persoon te laten ontwerpen is één week.‘
Chess/Checkers laat dus toe om ASIP‘s te configureren en te programmeren, waardoor een ontwerper zijn eigen instructieprocessor kan maken. Dat gaat met volledige vrijheid in architectuur, zodat hij ook gemakkelijker kan experimenteren en zoeken naar de meest efficiënte architectuur. Debuggen, hardwaregeneratie, simulatie en verificatie zijn allemaal mogelijk. Van Praet wil in de toekomst ook dynamisch configureren automatiseren.