120 likes | 277 Views
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).
E N D
Università degli Studi di Napoli “Federico II”Facoltà di IngegneriaDipartimento di Informatica e Sistemistica Sistemi ad elevate prestazioniLezione 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 prelievo inutile (branch penalty). Sistemi ad elevate prestazioni - 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) (2) (3) (4) (5) 80 IF ID EX MEM WB 84 IF ID EX MEM 88 IF ID EX tempo Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca
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. (1) (2) (3) (4) (5) (6) (7) (8) 80 IF ID EX MEM WB 84 IF ID 88 IF 100 IF ID EX MEM WB 104 IF ID EX MEM 108 IF ID EX 112 IF ID tempo Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca
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; (1) (2) (3) (4) (5) (6) (7) (8) 80 IF ID EX MEM WB 84 IF 88 100 IF ID EX MEM WB 104 IF ID EX MEM 108 IF ID EX 112 IF ID tempo Sistemi ad elevate prestazioni - 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
100 112 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 if condizione then 104 … else 112 … Il ramo then segue immediatamente il ramo if, mentre il ramo else è localizzato all’indirizzo 112 e quindi la sua esecuzione richiede un salto. Branch Prediction Table Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca
100 112 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 JMP for j… CMP 100 JXX 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 effetti dell’n-esima iterazione del ciclo interno Branch Prediction Table Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca
N.S. Forte N.S. Debole S. Debole S. Forte Figura 9:I4 stadi del Branch Prediction. La gestione dei salti – Approccio ottimistico (branch prediction) (3) I processori moderni evolvono fra quattro stati descritti da due bit: NON SALTARE (FORTE), NON SALTARE (DEBOLE), SALTA (FORTE) e SALTA (DEBOLE). Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca
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 al caso opposto. for i… 92 CMP JMP for j… CMP 100 JXX 104 … … 112 JMP 92 N.S. Forte N.S. Debole S. Debole S. Forte Figura 9:I4 stadi del Branch Prediction. La gestione dei salti – Approccio ottimistico (branch prediction) (4) Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca
Prossima Lezione • Conflitti nei sistemi basati su pipelining: Conflitti sui dati - Internal Forwarding Sistemi ad elevate prestazioni - Prof. re Nicola Mazzocca