DMI – Corso di laurea magistrale in Informatica
Copyleft
2016-2017 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 |
i modelli software sono programmi, dunque già implementazioni, tuttavia si sviluppano a livelli di astrazione molto diversi
Schaumont, Listing 1.1 - C example
questo modello di relativamente alto livello, dà poca informazione sul costo della sua esecuzione in termini di istruzioni macchina
Schaumont, Listing 1.2 - ARM assembly example
anche se non si ha familiarità con tutti i dettagli di un particolare linguaggio assemblativo, trovare la corrispondenza fra istruzioni di alto livello e istruzioni assemblative non è difficile come può apparire
Schaumont, Fig. 1.2 (edited) - Mapping C to assembly
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 differiti a un'esercitazione successiva
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: