Transcript Lezione 2

Università degli Studi di Napoli “Federico II”
Facoltà di Ingegneria
Dipartimento di Informatica e Sistemistica
Sistemi ad elevate prestazioni
Lezione 2
Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca
Conflitti nei sistemi basati su
pipeling - La gestione dei salti (1)



In presenza di un salto non deve essere sempre
prelevata dalla memoria l’istruzione successiva, e può
non essere facile o possibile determinare subito
l’istruzione a cui saltare;
1. IF 2. ID 3. EX 4. MEM 5. WB
Quando il processore preleva una istruzione, non sa che
tipo di istruzione ha prelevato finché non la interpreta
(fase ID), ma, a questo punto, ne avrà già presa un’altra
(quella immediatamente successiva);
Potrebbe rendersi conto che l’istruzione precedente era
un salto, dovendo quindi saltare ad un’istruzione diversa
da quella successiva, rendendo, quindi, il successivo
Sistemi ad
elevate prestazioni
prelievo inutile (branch
penalty
).
Prof. re Nicola Mazzocca
Conflitti nei sistemi basati su
pipeling - La gestione dei salti (2)



Mediamente il 25% del totale delle istruzioni in
un programma è rappresentato da istruzioni di
salto;
Se si verifica ‘branch penalty’ dovendo gestire
l’evoluzione di istruzioni che non dovevano
essere caricate su ¼ delle istruzioni del
programma allora la cosa risulta preoccupante;
Consideriamo un esempio, in cui abbiamo
supposto che ogni istruzione occupi 4 byte…
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
La gestione dei salti – Esempio (1)
Esempio:
76 CMP R1, R3;
80 JEQ 100
……………………...
100 MOVE R1, R2
……………………...


il processore procede nel seguente modo:
(1)
80 IF
84
88
(2)
ID
IF
(3) (4) (5)
EX MEM WB
ID
EX MEM
IF
ID EX
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
 tempo
La gestione dei salti – Esempio (2)



Solo alla fine della 3° fase si conoscerà l’indirizzo della prossima
istruzione da prelevare !
Nel caso in cui il salto non deve essere eseguito la pipe continua a
funzionare normalmente; se, però, il salto deve essere eseguito le istruzioni
84 e 88 dovranno essere eliminate (flush della pipe) e bisognerà prelevare
l’istruzione 100 e successive.
Si crea un ritardo, che diminuisce la produttività della pipe, detto branch
penalty.
80
84
88
100
104
108
112
(1)
IF
(2)
ID
IF
(3) (4) (5)
EX MEM WB
ID
IF
IF
ID
IF
(6)
(7)
(8)
EX MEM WB
ID EX MEM
IF ID EX
IF
ID
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
 tempo
La gestione dei salti – Approccio
conservativo

Il problema è risolvibile secondo approcci fondamentali:

Approccio conservativo: nel momento in cui il processore
interpreta una istruzione come istruzione di salto (fase ID di
decodifica dell’istruzione), ferma la pipe, disabilita la
propagazione della istruzione che era stata erroneamente già
prelevata, determina l’istruzione a cui saltare (fase EX) e la
preleva;
80
84
88
100
104
108
112
(1)
IF
(2)
ID
IF
(3) (4) (5)
EX MEM WB
IF
(6)
ID
IF
(7)
(8)
EX MEM WB
ID EX MEM
IF ID
EX
IF
ID
Sistemi ad elevate prestazioni  tempo
Prof. re Nicola Mazzocca
La gestione dei salti – Branch Delay

Branch Delay. Possiamo avere un accorgimento
effettuabile in fase di compilazione che ci permette di
evitare l’approccio conservativo, facciamo un
esempio. Abbiamo due istruzioni:
a=a+b
if (c == 0)…
in fase di compilazione le due istruzioni possono
essere invertite, perché l’istruzione a = a + b deve
essere eseguita comunque, indipendentemente alla
destinazione del salto determinata dalla if, ma questo
approccio non è sempre praticabile !
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
La gestione dei salti – Approccio
ottimistico (branch prediction) (1)
Branch Prediction. Si tenta di fare una previsione
su quale sia il ramo da eseguire in una istruzione
condizionale. Consideriamo il seguente segmento di
codice iterato ciclicamente:
100 112
100 if condizione
Branch
then
Prediction
Table
104 …
else
112 …
Il ramo then segue immediatamente il ramo if, mentre
il ramo else è localizzato all’indirizzo 112 e quindi la
ad elevate
sua esecuzione Sistemi
richiede
unprestazioni
salto. 
Prof. re Nicola Mazzocca
La gestione dei salti – Approccio
ottimistico (branch prediction) (2)
La situazione si complica in presenza di due o più cicli
for innestati. Ad esempio:
for i…
92
CMP
100 112
JMP
Branch
for j…
CMP
Prediction
100 JXX
Table
104
…
…
112 JMP 92
L’errore si verifica nel momento in cui si entra per la
seconda volta nel ciclo esterno in quanto nella tabella
abbiamo salvato un indirizzo fuorviante relativo agli
Sistemiiterazione
ad elevate prestazioni
effetti dell’n-esima
del -ciclo interno
Prof. re Nicola Mazzocca
La gestione dei salti – Approccio
ottimistico (branch prediction) (3)
S.
Debole
S.
Forte
N.S.
Debole
N.S.
Forte
I processori moderni
evolvono fra quattro
stati descritti da due bit:
NON
SALTARE
(FORTE),
NON
SALTARE (DEBOLE),
SALTA
(FORTE)
e
SALTA (DEBOLE).
Figura 9: I 4 stadi del Branch Prediction.
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
La gestione dei salti – Approccio
ottimistico (branch prediction) (4)
for i…
for j…
92
100
104
112
S.
Debole
N.S.
Debole
S.
Forte
N.S.
Forte
Figura 9: I 4 stadi del Branch
Prediction.
Si noti dunque che il processore
sbaglia alla fine della prima
esecuzione e alla fine della seconda.
 Supponendo
allora che il ciclo
esterno sia di 10 iterazioni e quello
interno di 1000, il processore
sbaglia una volta per ciascuna
esecuzione
del
ciclo
interno
(sull’ultima iterazione, un errore
inevitabile), più una volta sul ciclo
esterno, e quindi 10 + 1 = 11 volte
soltanto, su 10*1000 = 10000
iterazioni.
 Da questo si capisce anche il perché
i numero di cicli esterni deve essere
minore del numero di cicli interni, in
quanto come visto dal conteggio
degli errori nella pipe, se ho più cicli
esterni
commetto
più errori rispetto
Sistemi ad elevate
prestazioni
caso opposto.
Prof. re NicolaalMazzocca
CMP
JMP
CMP
JXX
…
…
JMP 92

Prossima Lezione

Conflitti nei sistemi
basati su pipelining:
Conflitti sui dati Internal Forwarding
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca