12
Università degli Studi di Napoli “Federico II” Università degli Studi di Napoli “Federico II” Facoltà di Ingegneria Facoltà di Ingegneria Dipartimento di Informatica e Sistemistica Dipartimento di Informatica e Sistemistica Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca Sistemi ad elevate Sistemi ad elevate prestazioni prestazioni Lezione 2 Lezione 2

Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca

Embed Size (px)

DESCRIPTION

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). - PowerPoint PPT Presentation

Citation preview

Page 1: Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca

Università degli Studi di Napoli “Federico II”Università degli Studi di Napoli “Federico II”Facoltà di IngegneriaFacoltà di Ingegneria

Dipartimento di Informatica e SistemisticaDipartimento di Informatica e Sistemistica

Corso di Sistemi ad elevate prestazioni – Prof. Nicola MazzoccaCorso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca

Sistemi ad elevate prestazioniSistemi ad elevate prestazioniLezione 2Lezione 2

Page 2: Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca

Sistemi ad elevate prestazioni - PrSistemi ad elevate prestazioni - Prof. re Nicola Mazzoccaof. re Nicola Mazzocca

Conflitti nei sistemi basati su Conflitti nei sistemi basati su pipeling - La gestione dei salti pipeling - La gestione dei salti

(1)(1) In presenza di un salto non deve essere sempre In presenza di un salto non deve essere sempre

prelevata dalla memoria l’istruzione successiva, e prelevata dalla memoria l’istruzione successiva, e può non essere facile o possibile determinare subito può non essere facile o possibile determinare subito l’istruzione a cui saltare;l’istruzione a cui saltare;

1. IF 2. ID 3. EX 4. MEM 5. WB1. IF 2. ID 3. EX 4. MEM 5. WB Quando il processore preleva una istruzione, non sa Quando il processore preleva una istruzione, non sa

che tipo di istruzione ha prelevato finché non la che tipo di istruzione ha prelevato finché non la interpreta (fase ID), ma, a questo punto, ne avrà già interpreta (fase ID), ma, a questo punto, ne avrà già presa un’altra (quella immediatamente successiva);presa un’altra (quella immediatamente successiva);

Potrebbe rendersi conto che l’istruzione precedente Potrebbe rendersi conto che l’istruzione precedente era era un saltoun salto, dovendo quindi saltare ad , dovendo quindi saltare ad un’istruzione diversa da quella successiva, un’istruzione diversa da quella successiva, rendendo, quindi, il successivo prelievo inutile rendendo, quindi, il successivo prelievo inutile ((branch penaltybranch penalty). ).

Page 3: Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca

Sistemi ad elevate prestazioni - PrSistemi ad elevate prestazioni - Prof. re Nicola Mazzoccaof. re Nicola Mazzocca

Conflitti nei sistemi basati su Conflitti nei sistemi basati su pipeling - La gestione dei salti pipeling - La gestione dei salti

(2)(2) Mediamente il 25% del totale delle istruzioni Mediamente il 25% del totale delle istruzioni

in un programma è rappresentato da in un programma è rappresentato da istruzioni di salto;istruzioni di salto;

Se si verifica ‘branch penalty’ dovendo Se si verifica ‘branch penalty’ dovendo gestire l’evoluzione di istruzioni che non gestire l’evoluzione di istruzioni che non dovevano essere caricate su ¼ delle dovevano essere caricate su ¼ delle istruzioni del programma allora la cosa istruzioni del programma allora la cosa risulta preoccupante;risulta preoccupante;

Consideriamo un esempio, in cui abbiamo Consideriamo un esempio, in cui abbiamo supposto che ogni istruzione occupi 4 byte…supposto che ogni istruzione occupi 4 byte…

Page 4: Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca

Sistemi ad elevate prestazioni - PrSistemi ad elevate prestazioni - Prof. re Nicola Mazzoccaof. re Nicola Mazzocca

La gestione dei salti – Esempio La gestione dei salti – Esempio (1)(1)

Esempio:Esempio:76 CMP R1, R3;76 CMP R1, R3;80 JEQ 10080 JEQ 100…………………………………………......100 MOVE R1, R2100 MOVE R1, R2…………………………………………......

il processore procede nel seguente modo:il processore procede nel seguente modo:

(1) (2) (3) (4) (5)(1) (2) (3) (4) (5)80 IF ID EX MEM WB80 IF ID EX MEM WB84 IF ID EX MEM84 IF ID EX MEM88 IF ID EX 88 IF ID EX

tempotempo

Page 5: Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca

Sistemi ad elevate prestazioni - PrSistemi ad elevate prestazioni - Prof. re Nicola Mazzoccaof. re Nicola Mazzocca

La gestione dei salti – Esempio La gestione dei salti – Esempio (2)(2)

Solo alla fine della 3° fase si conoscerà l’indirizzo della Solo alla fine della 3° fase si conoscerà l’indirizzo della prossima istruzione da prelevare !prossima istruzione da prelevare !

Nel caso in cui il salto non deve essere eseguito la pipe continua a Nel caso in cui il salto non deve essere eseguito la pipe continua a funzionare normalmente; se, però, il salto deve essere eseguito le funzionare normalmente; se, però, il salto deve essere eseguito le istruzioni 84 e 88 dovranno essere eliminate (istruzioni 84 e 88 dovranno essere eliminate (flush della pipeflush della pipe) e ) e bisognerà prelevare l’istruzione 100 e successive. bisognerà prelevare l’istruzione 100 e successive.

Si crea un ritardo, che diminuisce la produttività della pipe, detto Si crea un ritardo, che diminuisce la produttività della pipe, detto branch penaltybranch penalty..

(1) (2) (1) (2) (3)(3) (4) (5) (6) (7) (8) (4) (5) (6) (7) (8) 80 IF ID 80 IF ID EX EX MEM WB MEM WB84 IF 84 IF ID ID 88 88 IF IF 100 IF ID EX MEM WB100 IF ID EX MEM WB104 IF ID EX MEM 104 IF ID EX MEM 108 IF ID EX 108 IF ID EX 112 IF ID 112 IF ID

tempotempo

Page 6: Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca

Sistemi ad elevate prestazioni - PrSistemi ad elevate prestazioni - Prof. re Nicola Mazzoccaof. re Nicola Mazzocca

La gestione dei salti – La gestione dei salti – Approccio conservativoApproccio conservativo

Il problema è risolvibile secondo approcci Il problema è risolvibile secondo approcci fondamentali:fondamentali: Approccio conservativo: Approccio conservativo: nel momento in cui il processore nel momento in cui il processore

interpreta una istruzione come istruzione di salto (fase ID di interpreta una istruzione come istruzione di salto (fase ID di decodifica dell’istruzione), ferma la pipe, disabilita la decodifica dell’istruzione), ferma la pipe, disabilita la propagazione della istruzione che era stata erroneamente propagazione della istruzione che era stata erroneamente già prelevata, determina l’istruzione a cui saltare (fase EX) e già prelevata, determina l’istruzione a cui saltare (fase EX) e la preleva;la preleva;

(1) (2) (3) (4) (5) (6) (7) (8) (1) (2) (3) (4) (5) (6) (7) (8) 80 IF 80 IF IDID EX MEM WB EX MEM WB84 IF 84 IF 88 88 100 IF ID EX MEM WB100 IF ID EX MEM WB104 IF ID EX MEM 104 IF ID EX MEM 108 IF ID EX 108 IF ID EX 112 IF ID 112 IF ID

tempotempo

Page 7: Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca

Sistemi ad elevate prestazioni - PrSistemi ad elevate prestazioni - Prof. re Nicola Mazzoccaof. re Nicola Mazzocca

La gestione dei salti – Branch La gestione dei salti – Branch DelayDelay

Branch Delay.Branch Delay. Possiamo avere un accorgimento Possiamo avere un accorgimento effettuabile in fase di compilazione che ci effettuabile in fase di compilazione che ci permette di evitare l’approccio conservativo, permette di evitare l’approccio conservativo, facciamo un esempio. Abbiamo due istruzioni: facciamo un esempio. Abbiamo due istruzioni:

a = a + b a = a + b if (c == 0)…if (c == 0)… in fase di compilazione le due istruzioni possono in fase di compilazione le due istruzioni possono

essere essere invertiteinvertite, perché l’istruzione a = a + b , perché l’istruzione a = a + b deve essere eseguita comunque, deve essere eseguita comunque, indipendentemente alla destinazione del salto indipendentemente alla destinazione del salto determinata dalla if, ma determinata dalla if, ma questo approccio non è questo approccio non è sempre praticabile !sempre praticabile !

Page 8: Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca

Sistemi ad elevate prestazioni - PrSistemi ad elevate prestazioni - Prof. re Nicola Mazzoccaof. re Nicola Mazzocca

La gestione dei salti – La gestione dei salti – Approccio ottimistico (branch Approccio ottimistico (branch

prediction) (1)prediction) (1) Branch Prediction.Branch Prediction. Si tenta di fare una Si tenta di fare una

previsioneprevisione su quale sia il ramo da eseguire in su quale sia il ramo da eseguire in una istruzione condizionale. Consideriamo il una istruzione condizionale. Consideriamo il seguente segmento di codice seguente segmento di codice iterato iterato ciclicamenteciclicamente::

100 if condizione100 if condizione

thenthen

104 …104 …

else else

112 …112 …

Il ramo then segue immediatamente il ramo if, Il ramo then segue immediatamente il ramo if, mentre il ramo else è localizzato all’indirizzo 112 mentre il ramo else è localizzato all’indirizzo 112 e quindi la sua esecuzione richiede un salto. e quindi la sua esecuzione richiede un salto.

100 112

Branch Prediction

Table

Page 9: Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca

Sistemi ad elevate prestazioni - PrSistemi ad elevate prestazioni - Prof. re Nicola Mazzoccaof. re Nicola Mazzocca

La gestione dei salti – La gestione dei salti – Approccio ottimistico (branch Approccio ottimistico (branch

prediction) (2)prediction) (2)La situazione si complica in presenza di due o più La situazione si complica in presenza di due o più

cicli for innestati. Ad esempio:cicli for innestati. Ad esempio:for i… for i… 92 CMP92 CMP

JMPJMPfor j… for j… CMPCMP

100 JXX100 JXX 104 …104 …

… … 112 JMP 92112 JMP 92L’errore si verifica nel momento in cui si entra per L’errore si verifica nel momento in cui si entra per

la seconda volta nel ciclo esterno in quanto nella la seconda volta nel ciclo esterno in quanto nella tabella abbiamo salvato un indirizzo fuorviante tabella abbiamo salvato un indirizzo fuorviante relativo agli effetti dell’n-esima iterazione del relativo agli effetti dell’n-esima iterazione del ciclo interno ciclo interno

100 112

Branch Prediction

Table

Page 10: Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca

Sistemi ad elevate prestazioni - PrSistemi ad elevate prestazioni - Prof. re Nicola Mazzoccaof. re Nicola Mazzocca

La gestione dei salti – La gestione dei salti – Approccio ottimistico (branch Approccio ottimistico (branch

prediction) (3)prediction) (3) I processori moderni I processori moderni

evolvono fra quattro evolvono fra quattro stati descritti da due stati descritti da due bit: bit: NON SALTARE NON SALTARE (FORTE)(FORTE), , NON NON SALTARE (DEBOLE)SALTARE (DEBOLE), , SALTA (FORTE) SALTA (FORTE) ee SALTA (DEBOLE)SALTA (DEBOLE)..

N.S.Forte

N.S.Debol

e

S.Debol

e

S.Forte

Figura 9: I 4 stadi del Branch Prediction.

Page 11: Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca

Sistemi ad elevate prestazioni - PrSistemi ad elevate prestazioni - Prof. re Nicola Mazzoccaof. re Nicola Mazzocca

La gestione dei salti – La gestione dei salti – Approccio ottimistico (branch Approccio ottimistico (branch

prediction) (4)prediction) (4) Si noti dunque che il processore Si noti dunque che il processore

sbaglia alla fine della prima sbaglia alla fine della prima esecuzione e alla fine della esecuzione e alla fine della seconda. seconda.

Supponendo allora che il ciclo Supponendo allora che il ciclo esterno sia di 10 iterazioni e esterno sia di 10 iterazioni e quello interno di 1000, il quello interno di 1000, il processore sbaglia una volta per processore sbaglia una volta per ciascuna esecuzione del ciclo ciascuna esecuzione del ciclo interno (sull’ultima iterazione, un interno (sull’ultima iterazione, un errore inevitabile), più una volta errore inevitabile), più una volta sul ciclo esterno, e quindi 10 + 1 sul ciclo esterno, e quindi 10 + 1 = 11 volte soltanto, su 10*1000 = = 11 volte soltanto, su 10*1000 = 10000 iterazioni. 10000 iterazioni.

Da questo si capisce anche il Da questo si capisce anche il perché i numero di cicli esterni perché i numero di cicli esterni deve essere minore del numero di deve essere minore del numero di cicli interni, in quanto come visto cicli interni, in quanto come visto dal conteggio degli errori nella dal conteggio degli errori nella pipe, se ho più cicli esterni pipe, se ho più cicli esterni commetto più errori rispetto al commetto più errori rispetto al caso opposto.caso opposto.

for i… for i… 92 CMP92 CMP

JMPJMPfor j… for j… CMPCMP

100 100 JXXJXX

104 104 … …

… … 112 JMP 112 JMP

9292N.S.Forte

N.S.Debole

S.Debole

S.Forte

Figura 9: I 4 stadi del Branch Prediction.

Page 12: Corso di Sistemi ad elevate prestazioni – Prof. Nicola Mazzocca

Sistemi ad elevate prestazioni - PrSistemi ad elevate prestazioni - Prof. re Nicola Mazzoccaof. re Nicola Mazzocca

Prossima LezioneProssima Lezione

Conflitti nei sistemi Conflitti nei sistemi basati su pipelining: basati su pipelining: Conflitti sui dati - Conflitti sui dati - Internal ForwardingInternal Forwarding