Finding hardware metrics from C code

More Info
expand_more

Abstract

Vanuit een groot aantal bedrijven is er een toenemende vraag naar snellere hardware. Het MOLEN-platform voorziet in die behoefte, doordat de architectuur bestaat uit een normale processor en een herprogrammeerbare chip. Hierdoor is een grote versnelling te behalen. Het omzetten van programmas naar deze architectuur is echter lastig en tijdrovend. De Delft Workbench automatiseert dit proces, waardoor het omzetten net zo eenvoudig wordt als het compilen van een programma. Bovendien is deze softwaretool te gebruiken voor verschillende soorten processoren en herprogrammeerbare chips. Een van de eerste zaken die gebeurt, is het analyseren van de programmas die binnenkomen. In dit rapport komt de analyse van c-code aan de orde, het zogenaamde profilen. In deze analyse wordt een schatting gemaakt van het mogelijk oppervlak dat een programma inneemt op een herprogrammeerbare chip. Ook wordt gekeken in hoeverre een programma is te parallelliseren. Deze waardes worden niet direct bepaald, maar worden geschat aan de hand van bepaalde eigenschappen, zogenaamde metrics. Er wordt gekeken naar verschillende metrics die een schatting kunnen geven voor de mogelijke grootte op de herprogrammeerbare chip. Er is gekeken naar het aantal aritmetische operaties (rekenkundige, bitwise of logische operaties) om een maat voor de oppervlakte te krijgen. Daarnaast wordt gekeken naar de bit-breedte van de input van een functie. Hieraan is te zien hoeveel exchangeregisters er nodig zullen zijn tussen de normale processor en de herprogrammeerbare chip. Dit is geeft ook een maat voor de oppervlakte. Ook wordt bekeken hoeveel variabelen er in een functie zitten en wat daarvan de bit-breedte is. Dit geeft aan hoeveel registers er ongeveer nodig zullen zijn. Er wordt ook gekeken naar metrics die een schatting kunnen geven voor de mate waarin een programma is te parallelliseren. Basic blocks is een aantal achtereenvolgende operaties die uitgevoerd worden zonder te verspringen. Zo'n verspringing treedt bijvoorbeeld op bij een jump. Daarnaast wordt er een schatting gemaakt van de algemene complexiteit van de code. Dit kan zowel bruikbaar zijn voor een oppervlakte schatting als voor een schatting over de mogelijke te halen versnelling. De metrics worden gebruikt voor het maken van een schatting van eigenschappen op een fysieke implementie op herconfigureerbare hardware. Hierbij wordt een schatting gemaakt van het aantal states, flipflops, slices en LUT's. Code die in de profiler komt, moet aan een paar eisen voldoen. In de c-code mogen zich geen function-calls, geen pointers en geen arrays bevinden. Als aan deze eisen wordt voldaan, levert het programma op basis van testen correcte resultaten op.

Files