DMI – Corso di laurea magistrale in Informatica
Copyleft
2020 Giuseppe Scollo
sommario:
sfida professionale decisiva nel codesign hardware-software:
hardware e software sono reciprocamente duali in molti aspetti
ecco una sintesi comparativa delle loro differenze fondamentali (cf. Schaumont, Table 1.1)
Hardware | Software | |
paradigma di progettazione | decomposizione nello spazio | decomposizione nel tempo |
misura di costo di risorse | area (# di porte logiche) | tempo (# di istruzioni) |
flessibilità | va progettata | implicita |
parallelismo | implicito | va progettato |
modellazione | modello ≠ implementazione | modello ∼ implementazione |
riuso | non comune | comune |
un semplice esempio mette in luce la varietà di modelli che entrano in gioco nel codesign hardware-software:
Schaumont, Fig. 1.3 - A codesign model
i dettagli della formalizzazione in Gezel di questo esempio sono omessi
il circuito hardware presentato nella prima lezione difficilmente potrebbe essere usato come coprocessore per accelerare la visualizzazione di una traiettoria di Collatz
può però essere incorporato in un coprocessore progettato per accelerare il calcolo di funzioni su una traiettoria di Collatz
a tal fine occorre ridefinire l'interfaccia del circuito ed estenderlo con logica di controllo, e.g. per fermare la computazione e produrre il risultato in uscita alla prima occorrenza di '1' nella traiettoria
un'estensione del circuito visto nella prima lezione che non dà in output la traiettoria bensì il suo delay:
Datapath hardware per il delay di una traiettoria di Collatz
rappresentazione in Gezel:
dp delay_collatz (
in start : ns(1) ;
in x0 : ns(16) ;
out done : ns(1) ; out delay : ns(16))
{
reg r : ns(32) ;
reg d : ns(16) ;
reg stop : ns(1) ;
sig x : ns(32) ;
always {
x = start ? x0 : r ;
r = x[0] ? x + (x >> 1) + 1 : x >> 1 ;
done = ( x == 1 ) | stop ;
stop = done ;
d = done ? ( start ? 0 : d ) : d + 1 + x[0] ;
delay = d ;
} }
l'interfaccia del circuito appena visto suggerisce una facile implementazione del coprocessore come dispositivo di I/O mappato in memoria, per esempio dotato di:
ma... è adeguato il suddetto circuito a effettuare il calcolo richiesto per successive interazioni con il software?
revisione del circuito per il delay di traiettorie di Collatz:
Datapath hardware per il delay di traiettorie di Collatz
rappresentazione in Gezel:
dp delay_collatz_rev (
in start : ns(1) ;
in x0 : ns(16) ;
out done : ns(1) ; out delay : ns(16))
{
reg r : ns(32) ;
reg d : ns(16) ;
reg stop : ns(1) ;
sig x : ns(32) ;
sig d0, dd : ns(16) ;
always {
x = start ? x0 : r ;
r = x[0] ? x + (x >> 1) + 1 : x >> 1 ;
done = ( x == 1 ) | ( stop & ~start ) ;
stop = done ;
dd = 1 + x[0] ;
d0 = start ? 0 : d ;
d = done ? d0 : d0 + dd ;
delay = d ;
} }
concorrenza e parallelismo non sono sinonimi:
la concorrenza è una proprietà dell'applicazione,
il parallelismo è una proprietà della sua implementazione, che presuppone:
la legge di Amdahl limita a 1/s il massimo guadagno di prestazione, o speed-up, conseguibile con il parallelismo per un'applicazione che contenga una frazione s di esecuzione sequenziale
Schaumont, Fig. 1.9 - Eight node connection machine
è difficile escogitare algoritmi concorrenti per architetture parallele?
si consideri per esempio la somma di n numeri sulla CM, diciamo con n = 8, assegnando inizialmente un numero a ciascun processore
letture raccomandate:
per ulteriore consultazione: