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