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
Scarica

Acheronte: Nuovo Flusso di Caronte