POLITECNICO DI MILANO Valutazione di ImpulseC nell’ambito di co-design e riconfigurabilità dinamica Relatore: Prof. Anna Antola Correlatore: Ing. Marco Domenico Santambrogio Marco Fracassi Matr. 665268 Pamela Gotti Matr. 663638 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 2 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 3 Panoramica sui linguaggi ad alto livello SystemC JHDL CatapultC ImpulseC C++ Java C++ C Open source Open source Proprietario Proprieta rio Produce codice sintetizzabile No Non sempre Sì – ma a volte illeggibile Sì Supporto a simulazione HW No Sì Sì No Supporto a stima delle prestazioni No No Sì No Alta Alta ma “verbosa” Alta Alta Linguaggio utilizzato Tipologia Facilità di sviluppo 4 ImpulseC : modello di programmazione Memoria condivisa Lettura/scrittura Stream inputs Signal input 5 Processo scritto Stream outputs in standard C 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 6 Hardware/software codesign 7 Riconfigurabilità dinamica 8 Metodologia: algoritmi di rilevazione dei contorni Canny 9 Sobel Risultati: stima tempi di esecuzione 10 Risultati:sintesi dell’intera architettura Monolitico 7x7 Canny 11 Sobel Area XP2VP7 XP2VP20 XP2VP30 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 41% 29% 29% 14% 10% 10% BRAMs 9% 4% 2% 9% 4% 2% MULT18X18 s 13% 6% 4% 27% 13% 8% GCLKs 12% 12% 12 12% 12% 12% Max. Freq. 57.039 MHz 57.039 MHz 57.039 MHz 64.602 MHz 64.602 MHz 64.602 MHz Risultati:sintesi dei singoli core Monolitico 7x7 Canny XC2VP7 XC2VP20 Sobel XC2VP30 XC2VP7 Filtraggio XC2VP30 Filtraggio Slice 98% 52% 35% 614% 326% 220% LUTs 83% 44% 30% 192% 102% 69% Max Freq. 66.173 66.173 66.173 64.602 64.602 64.602 Non Maximum suppression Conversione in scala di grigi Slice 205% 109% 74% 81% 43% 29% LUTs 193% 102% 70% 77% 41% 27% Max Freq. 91.552 91.552 91.552 108.010 108.010 108.010 Isteresi 12 XC2VP20 Convoluzione Slice 108% 58% 39% 117% 62% 42% LUTs 97% 52% 35% 89% 47% 32% Max.Freq 97.194 97.194 97.194 73.157 73.157 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 13 Fine presentazione 14