modellazione, progettazione e realizzazione ottimale di sistemi di
elaborazione dedicati a una specifica applicazione
uso di strumenti hardware e software,
quali piattaforme di sviluppo e di cosimulazione, per progettare e
realizzare sistemi dedicati a una specifica applicazione
Fattori tecnologici
giocano a favore di più hardware:
Prestazione computazionale
lavoro prodotto nell'unità di tempo, o per ciclo di clock:
il parallelismo dell'hardware o acceleratori hardware dedicati
migliorano la prestazione computazionale
Efficienza energetica
può variare per parecchi ordini di grandezza, per esempio
(Schaumont, p. 14)
Energy efficiency of AES encryption implementations
Gb/J:
10-6
10-3
10-2
100
101
platform:
Java KVM Sparc
C Sparc
Asm Pentium-III
Virtex-II FPGA
0.18μm CMOS ASIC
Dissipazione di potenza
l'aumento di prestazione computazionale da più alta frequenza di clock
è limitato dall'aumento proporzionale della potenza dissipata, dunque
da limiti e costi della tecnologia di raffreddamento
→ architetture parallele
Supporti ottimali al codesign HW/SW: piattaforme di calcolo parallelo
multiprocessori a memoria condivisa, acceleratori su FPGA, GPU,
architetture multi-core ...
Fattori economici
giocano a favore di più software:
Costo del progetto
Il progetto di un chip ha costi fissi molto alti;
chip riprogrammabili, che permettono il riuso mediante riprogrammazione,
spalmano il costo di progetto del chip su più prodotti o versioni
di un prodotto:
tuttavia, la riprogrammabilità può realizzarsi in molte forme diverse
Tempo di sviluppo
Non solo il costo di progetto ma anche il tempo di sviluppo di un
nuovo chip è considerevole;
uno sviluppo rapido, invece, permette un ingresso tempestivo nel mercato,
questo dà ricavi più alti, il che è specialmente significativo per
prodotti innovativi
Complessità del progetto
hardware fisso significa decisioni di progetto fissate;
la flessibilità del software permette ai progettisti di:
– sviluppare l'applicazione a un più alto livello di astrazione, e
– manutenere l'applicazione attraverso le modifiche necessarie
per correggere errori o per far fronte all'evoluzione di requisiti
Definibili dalla granularità temporale
delle azioni elementari (atomiche)
A partire dal livello più basso di astrazione:
segnali continui
modelli: sistemi di equazioni differenziali;
utili per sistemi ibridi con componenti analogici
non di uso pratico per tipici sistemi HW/SW
eventi discreti
variazioni di segnali a istanti di tempo irregolarmente distribuiti:
astrazione minima per hardware digitale
cicli di clock
eventi discreti osservati a intervalli di tempo regolari
modelli RTL (register-transfer level), utili per hardware sincrono
a singolo clock
istruzioni macchina
livello utile per la simulazione di sistemi software complessi,
per i quali la simulazione a livello di cicli di clock avrebbe
un costo proibitivo; tuttavia non rivela la reale prestazione
temporale del sistema
transazioni
modelli in termini di interazioni fra componenti del sistema;
utile quando anche la simulazione a livello di istruzioni sia troppo
costosa, come pure nelle prime fasi del progetto di un sistema
Hanno costrutti per la specifica di struttura
(statica) e di comportamento (dinamico)
I tre più diffusi, tutti con semantica di eventi discreti:
VHDL
standard IEEE 1076, cronistoria delle revisioni:
1987, 1993, 1999 (VHDL-AMS), 2006-2008
componenti HW descritti da "entità" che comprendono
"processi" reattivi a eventi alle porte d'ingresso
un sottoinsieme "sintetizzabile" di VHDL può essere compilato
automaticamente in una netlist per FPGA
Verilog
standard IEEE 1364, cronistoria delle versioni: 1995, 2001, 2005,
2009 (SystemVerilog: IEEE 1800)
simile a VHDL, ma con supporto di logica a 4 valori,
costrutti per descrizione a livello di transistori ecc.
SystemC
una libreria di classi C++ che fornisce le funzioni richieste per
modelli HW
strutturata in: nucleo del linguaggio, tipi di dati, canali elementari,
canali di livello superiore
Un linguaggio più sintetico, per descrizione RTL di hardware sincrono:
GEZEL
singolo clock, implicito nella semantica del linguaggio
modelli FSMD (Macchina a Stati Finiti con Datapath)
+ libreria di simulatori di noti processori
traduzione automatica di modelli FSMD deterministici in VHDL sintetizzabile
per ogni intero positivo
x0,
la sequenza (infinita) dei risultati dell'applicazione iterata,
a partire da
x0,
della funzione sugli interi positivi definita da:
f(x) = 3x+1 se x dispari, f(x) = x/2 se x pari
poiché 3x+1 è pari quando x è dispari, si consideri una
forma compressa delle traiettorie, definita dall'iterazione della funzione:
t(x) = (3x+1)/2 se x dispari, f(x) = x/2 se x pari
Congettura: per ogni intero positivo
x0,
la traiettoria inevitabilmente cade nel piccolo ciclo attraverso 1
ecco un datapath hardware che genera la traiettoria di
t
(per x0 a 16 bit) e la sua
descrizione in GEZEL
N.B. per x dispari:
(3x+1)/2 = x + ⌊x/2⌋ + 1
dp collatz (
in start : ns(1) ;
in x0 : ns(16) ;
out t ns(32)) {
reg r : ns(32) ;
sig x : ns(32) ;
always {
t = r ;
x = start ? x0 : r ;
r = x[0] ? x + (x >> 1) + 1 : x >> 1 ;
}
}
granularità temporale: ciclo di clock, ciclo di bus, transazione
scambio di dati: astratto, scalare, composito
controllo: semafori, protocolli di handshake, bloccante o non bloccante ecc.
Prestazione computazionale
analisi dei colli di bottiglia, per esempio: —
canale a v bit/trasferimento, B cicli/trasferimento
—
coprocessore a w bit/esecuzione, H cicli/esecuzione
limitata dalla capacità di comunicazione: v/B < w/H
limitata dalla velocità di calcolo: v/B > w/H
Collezioni di strumenti HW e SW per lo sviluppo e il collaudo in codesign
le schede di sviluppo di FPGA sono gli strumenti hardware di base a tal fine
sono accompagnate da sofisticati sistemi software per il codesign
ad alto livello e per la cosimulazione
per esempio, la scheda di sviluppo Altera DE1-SoC (v. immagine), che monta
un chip con FPGA Cyclone V, ha nello stesso chip un processore ARM Cortex-A9,
può includere due processori softcore NIOS II sulla FPGA ed è supportata dal
software Quartus Prime Lite, liberamente disponibile
La cosimulazione può anche essere condotta su piattaforma software,
senza impiego di FPGA
una tale piattaforma tipicamente consta di:
cross-compilatori e cross-assemblatori per un dato insieme
di linguaggi di programmazione e di famiglie di processori,
per la parte SW di un modello di codesign
simulatori di HDL, per la parte custom del modello
simulatori di insiemi di istruzioni di microprocessori,
accurati al livello dei cicli di clock
modelli software di interfacce hardware di microprocessori
e possibilmente altro ancora ...
la cosimulazione al livello dei cicli di clock mette i progettisti
in grado di stimare le prestazioni di soluzioni di codesign ben prima
della loro realizzazione effettiva