Transcript Lezione 4

Università degli Studi di Napoli “Federico II”
Facoltà di Ingegneria
Dipartimento di Informatica e Sistemistica
Sistemi ad elevate prestazioni
Lezione 4
Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca
Architetture Superscalari


L’utilizzo delle pipe porta dei vantaggi non
in termini di attraversamento di una
istruzione, che rimane invariato, ma in
termini di produttività.
Per ottenere ancora prestazioni migliori,
allora, si può pensare di realizzare un
architettura che presenti più pipe che
eseguono diverse istruzioni in parallelo,
così da aumentare la produttività del
sistema, tale tipo di architettura viene
chiamata Superscalare
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
Due pipe disgiunte
Due pipe non
disgiunte.
Principali problematiche



Le pipe devono condividere un unico accesso alla
memoria comune per il prelievo delle istruzioni.
Se le pipe non sono del tutto separate ma condividono
alcune delle stazioni nascono anche dei problemi di
conflitto tra le pipe nell’utilizzo delle unità funzionali
condivise
Un esempio di processore superscalare è il Pentium, tale
processore è stato uno dei primi esempi con più pipe,
infatti ne aveva già 2 (U e V), le quali però non erano
usate in modo efficiente, poiché una era utilizzata
sempre (pipe principale), l’altra solo se si era sicuri che
non provocasse delle
collisioni
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
Collisioni nei Sistemi Superscalari
con più Pipeline (1)
Moltiplicazione
Supponiamo di avere un processore che
realizza l’operazione di addizione e di
moltiplicazione floating-point.
Addizione

Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
Collisioni nei Sistemi Superscalari
con più Pipeline (2)
7 stadi per la
moltiplic.
9 stadi
per
l’addiz.
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
Collisioni nei Sistemi Superscalari
con più Pipeline (3)

Ad esempio se parte la moltiplicazione X e un istante dopo anche la
moltiplicazione Y, si hanno due sovrapposizioni (caselle XY dello
schema seguente. Abbiamo ovviamente sovrapposto le griglie delle
due moltiplicazioni).
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
Sovrapponendo le
maschere
costruisco il
vettore delle
collisioni che può
essere usato dal
compilatore
Vettore delle Collisioni (1)




È da notare che non vale la proprietà commutativa:
mettendo prima la moltiplicazione e poi l’addizione, non
si verificano mai conflitti.
Quindi un altro modo per evitare conflitti è invertire le
due operazioni in tale ordine, se possibile.
Occorre determinare tutti gli altri collision vector:
esempio quello di un’addizione seguita da un’addizione,
e quello della moltiplicazione seguita da una
moltiplicazione.
Se per ipotesi avessimo 8 operazioni floating point
effettuabili in hardware, dovremmo realizzare ben 64
collision vector. Il compito del compilatore diviene
sempre più difficile.
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
Vettore delle Collisioni (2)

Supponiamo di dover eseguire una sequenza di
istruzioni:



add mol mol add add mol…
occorre
il
vettore
di
collisione
addizionemoltiplicazione e poi quello moltiplicazionemoltiplicazione.
Adesso bisogna inserire la seconda moltiplicazione
tenendo conto di eventuali conflitti non solo con la
precedente moltiplicazione, ma anche con l’addizione
che viene subito prima!
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
Hardware per la Gestione delle
Collisioni
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
Prossima Lezione

Gestione delle ISR in sistemi pipelined

Architetture VLIW
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca