Università degli Studi di Napoli “Federico II”
Facoltà di Ingegneria
Dipartimento di Informatica e Sistemistica
Sistemi ad elevate prestazioni
Lezione 3
Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca
Conflitti nei sistemi basati su pipelining
- La gestione del conflitto sui dati

Se due istruzioni consecutive tentano di
accedere contemporaneamente ad uno stesso
registro/locazione di memoria, si generano
conflitti sui dati, classificati secondo due
tipologie:

conflitti Read after Write (R/W);

conflitti Write after Read (W/R).
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
Esempio di conflitto R/W
i
R2 = R1 + R3
i+1 R4 = R2 + R5
R2
R5
DEMUX
i
i+1



(1)
IF
(2)
ID
IF
(3) (4)
EX MEM
ID ID
(5)
WB
EX
ALU
Quando l’istruzione i+1 giunge nella fase ID essa deve prelevare il valore di
R2; tale operazione, però, non è possibile siccome il nuovo valore non è
stato ancora memorizzato nel registro R2; la pipe, quindi, entra in stallo.
Per risolvere questo conflitto si utilizza la tecnica dell’anticipo degli operandi
(Operand Forwarding), cioè si crea un canale (hardware), che renda i
risultati disponibili appena l’ALU li calcola.
Questa tecnica è realizzabile
solo
se si opera
su registri
del processore ed
Sistemi
ad elevate
prestazioni
Prof. re
ogni fase impiega un solo ciclo
diNicola
clockMazzocca
(processori RISC).
La tecnica dell’Internal Forwarding
(1)
operando1
TAG
ADD
ADD
MUL
MUL
DIV
BOO
LOAD
STORE


VALORE
operando2
TAG
VALORE RISULTATO

Utilizzando le proprietà
associativa e commutativa
è possibile evitare stalli della
pipe cambiando l’ordine delle
istruzioni. Ma ciò non è sempre
praticabile !
In tal caso si usa la tecnica dell’Internal Forwarding: che consiste
nell’ibernare le istruzioni, che non possono essere eseguite subito,
perché in conflitto con le precedenti, per iniziare ad eseguire le
successive.
Per implementare questa tecnica si utilizza una memoria detta
tabella di ibernazione statica ed interna al processore, dove
annotare le istruzioni già decodificate e cioè con chiara la conoscenza
Sistemi ad elevate prestazioni degli operandi e di quale
operazione deve essere effettuata.
Prof. re Nicola Mazzocca
La tecnica dell’Internal Forwarding
(2)
i
i+1
i+2
i+3
i+4
R1 = MEMA;
R2 = R1 + R3;
R4 = R2 + R5; 
R2 = R6 + R7;
R4 = R2 + R4;
R1= MEMA;
R2=R1 + R3;
R4=R2 + R5
R2=R6 + R7;
Per fare questo i
registri del processore
sono utilizzati come
Forwarding
Register !
R4=R2 + R4;


il registro R2 è presente in due blocchi che abbiamo
indicato come eseguibili in maniera distinta dal
processore in base alle due proprietà: commutativa e
associativa
R2 dovrà assumere due valori diversi nell’ambito delle
istruzioni ed alla fine è necessario trovare, per eseguire
l’ultima istruzione, Sistemi
un registro
R2 con- il valore corretto
ad elevate prestazioni
Prof. re Nicola Mazzocca
La tecnica dell’Internal Forwarding
(3)


I registri del processore (Forwarding
operazioni
Register), quindi, sono utilizzati come
sospese
valore
puntatori ai Registri Operando;
OPR(0)
I registri operando contengono, oltre al R0
OPR(1)
R1
valore attuale dei registri del
OPR(2)
R2
Forwarding
register
processore, anche
i
valori
che
essi
Operand
register
OPR(0)
R0
OPR(3)
R3
hanno assunto R1
nel corso
OPR(1)
R4

dell’elaborazione,
R2 ovvero la loro ‘storia
OPR(2)
OPR(7)
R3 registro operando OPE(3)
passata’. Ad ogni
è R5
R4
R6
OPR(8)
associato un contatore,
per
tener
OPR(4)
R5
R7
OPR(n)
OPR(5)
traccia del numero
di
operazioni
R6
sospese su quelR7registro ed un bit di ........
‘occupato’, che R1
è pari a zero quandoOPE(N)
il
dato contenuto nel registro è valido.
42
7
32
8
14
15
16
0
1
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
1
2
bit
occupato
La tecnica dell’Internal Forwarding
(4)
i
i+1
i+2
i+3
i+4
R1= MEMA;
R2=R1 + R3;
R1 = MEMA;
R2 = R1 + R3;
R4 = R2 + R5; 
R2 = R6 + R7;
R4 = R2 + R4;
R2=R6 + R7;
tag
valore
operando2
tag
valore
Contenitore
ADD
7
14
8
ADD
8
16
15
MUL
bit
occupato
OPR(0)
42
0
7
OPR(1)
32
0
2
8
OPR(2)
74
0
14
OPR(3)
15

R4
16
OPR(7)
R5
R6
R7
0
OPR(8)
1
OPR(N)
R4=R2 + R5
R4=R2 + R4;
operando1
valore
operazioni
sospese
R0
R1
R2
R3
82
21
0
10
2
MUL
DIV
BOO
LOAD
STORE
MEMA
7
Si
Arriva
sblocca
R1 dalla
i+1
memoria
Istruzione
ii+4
+1
i+2
+2
+3
: cache
…
miss !!
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
Conclusioni & Prossima Lezione


Si capisce che il modello di Von Neumann non è
rispettato, la cosa risulta ancora più chiara in
occasione di una interruzione causata per esempio
dall’overflow dell’istruzione i+3 (R2=R6+R7), perché in
tal caso si interromperebbe prima dell’esecuzioni di
istruzioni precedenti, credendo di interrompere avendo
una macchina modificata dall’esecuzione di tali
istruzioni ibernate !
Sistemi superscalari – Gestione dei conflitti nella
gestione di pipe multiple (vettore delle collisioni) –
Gestione delle istruzioni
Sistemi ad elevate prestazioni Prof. re Nicola Mazzocca
Scarica

Lezione 3 - UniNa STiDuE