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