Valutazione di ImpulseC nell’ambito di co-design e riconfigurabilità dinamica Relatore: Prof. Anna Antola Correlatore: Ing. Marco Domenico Santambrogio
Sommario Obiettivi Panoramica dei linguaggi ad alto livello ImpulseC: potenzialità e limiti Hardware/software codesign Riconfigurabilità dinamica Test effettuati: algoritmi di rilevazione dei contorni Risultati Conclusioni e sviluppi futuri
Obiettivi Studiare un framework di sviluppo per applicazioni basate su un linguaggio ad alto livello Scegliere uno tra i vari framework disponibili sul mercato: è stato scelto ImpulseC Capire come ImpulseC possa essere inserito in un discorso legato ad Hardware/Software co-design Valutare ImpulseC per quanto riguarda stima delle prestazioni, cosimulazione, possibilità di partizionare l’applicazione Capire come ImpulseC possa essere utilizzato nell’ambito di un sistema riconfigurabile Studio di ImpulseC all’interno dell’architettura riconfigurabile Caronte
Panoramica sui linguaggi ad alto livello SystemC JHDL CatapultC ImpulseC Linguaggio utilizzato C++ Java C Tipologia Open source Proprietario Produce codice sintetizzabile No Non sempre Sì – ma a volte illeggibile Sì Supporto a simulazione HW Supporto a stima delle prestazioni Facilità di sviluppo Alta Alta ma “verbosa”
ImpulseC : modello di programmazione Memoria condivisa Lettura/scrittura Stream outputs Stream inputs Processo scritto in standard C Signal input Signal outputs
ImpulseC: potenzialita’ e limiti Vantaggi: Compatibilità con i compilatori standard GUI di supporto per lo sviluppo dei progetti Elevata semplicità nella generazione dell’HDL Possibilità di abilitare varie tipologie di ottimizzazione (pipeline, unroll) Possibilità di simulazione software Limiti: Supporto solo a dati di tipo intero Supporto solo ad alcune funzioni matematiche Mancano degli strumenti per la stima delle prestazioni Vincoli per la programmazione hardware: Supporto per la ricorsione assente, puntatori risolti a compile time, limitato supporto alle strutture, utilizzo di chiamate a funzione limitato, supporto ai file assente
Hardware/software codesign
Riconfigurabilità dinamica
Metodologia: algoritmi di rilevazione dei contorni Canny Sobel
Risultati: stima tempi di esecuzione
Risultati:sintesi dell’intera architettura Monolitico 7x7 Canny Sobel Area XP2VP7 XP2VP20 XP2VP30 Slices 306% 162% 110% 672% 357% 242% Flip flops 87% 46% 31% 41% 22% 15% LUTs 258% 137% 93% 220% 117% 79% IOBs 29% 14% 10% BRAMs 9% 4% 2% MULT18X18s 13% 6% 27% 8% GCLKs 12% 12 Max. Freq. 57.039 MHz 64.602 MHz
Risultati:sintesi dei singoli core Monolitico 7x7 Canny Sobel XC2VP7 XC2VP20 XC2VP30 Filtraggio Slice 98% 52% 35% 614% 326% 220% LUTs 83% 44% 30% 192% 102% 69% Max Freq. 66.173 64.602 Non Maximum suppression Conversione in scala di grigi 205% 109% 74% 81% 43% 29% 193% 70% 77% 41% 27% 91.552 108.010 Isteresi Convoluzione 108% 58% 39% 117% 62% 42% 97% 89% 47% 32% Max.Freq 97.194 73.157
Conclusioni e sviluppi futuri Hardware/software codesign: ImpulseC supporta lo sviluppo di progetti e facilita il partizionamento dell’applicazione tra HW e SW; è molto veloce la generazione del VHDL, è quindi semplice l’esplorazione di scenari alternativi; non contiene strumenti per la stima delle prestazioni; consente una simulazione di tipo “desktop” Riconfigurabilita’: le architetture generate sono risultate troppo grandi per le schede disponibili in laboratorio: la riconfigurabilita’ e’ pertanto necessaria per la simulazione delle applicazioni sviluppate All’interno del flusso di Caronte ImpulseC puo’ essere facilmente utilizzato per la generazione delle Black Box Ulteriori sviluppi: stretta collaborazione con gli sviluppatori di ImpulseC e Xilinx per rendere completo il framework
Fine presentazione