Schedulazione dinamica Elettronica dei Calcolatori 1
Schedulazione dinamica delle operazioni Impossibile risolvere tutti i conflitti staticamente I possibile predire tutti i salti condizionati HW fa durante l esecuzione quello che il compilatore fa durante la generazione del codice. Compilatore piu semplice HW piu complesso Il parallelismo e gestito in HW Il codice puo essere generato indipendentemente dal parallelismo. Dipende da quante istruzioni alla volta possiamo caricare
Esecuzione non in ordine (out of order) Esegue le istruzioni indipendenti ma successive a quella bloccata da un conflitto Supponiamo: Operazione fp mulfp mul latenza 3 cicli 2 cicli 1 ciclo 1 ciclo Ordine di caricamento Ordine di esecuzione fp r2 r3 mulfp r3 r4 r5 r6 mul r6 r7 fp r2 r3 r5 r6 mul r6 r7 mulfp r3 r4
Schedulazione in Hardware La schedulazione in hardware permette l esecuzione delle operazioni in ordine diverso rispetto al caricamento: Possibilita di WAW e RAW Diversi metodi di schedulazione, diverse soluzioni. La decodifica delle istruzioni (ID) e scomposta i due parti: 1. Issue: decodifica operandi, verifica di hazard strutturali 2. Read: attesa finche non vi siano hazard dei dati, lettura operandi Due metodi principali: Scoreboard Tomasulo
Metodo Scoreboard Gestione WAR Stalla la scrittura del risultato fino a quando i registri non sono stati letti Legge i registri solo durante lo stadio di lettura degli operandi Gestione WAW: Identifica gli hazard e stalla la Issue di nuove istruzioni finche le altre non sono completate Scoreboard tiene traccia delle dipendenze e dello stato delle operazioni Invece che ID, EX, WB si hanno IS, RD, EX, WB
Stadi di esecuzione di processori con scoreboard 1. Issue (IS): decodifica l istruzione e idenfica hazard strutturali. Se un unita funzionale per l istruzione e libera e nessun altra istruzione ha lo stesso registro destinazione (WAW), la scoreboard manda l istruzione in esecuzione su quell unita funzionale e aggiorna i suoi dati interni. Se esiste un hazard strutturale o un WAW allora la m essa in esecuzione dell istruzione viene stallata e non vengono caricate ulteriori istruzioni finche l hazard viene eliminato. 2. Lettura Operandi (RD): aspetta finche non vi sono hazard quindi legge gli operandi Un operando sorgente e disponibile se istruzioni gia in esecuzione non lo scriveranno, o se il registro contenente l operando sta per essere scritto da un unita funzionale attiva. Quando gli operandi sorgenti sono disponibili la scoraboard ordina all unita funzionale di leggere gli operandi dai registri e iniziare l esecuzione dell operazione. La scoreboard risolve gli hazard di tipo RAW in modo dinamico, e le istruzioni possono essere mandate in esecuzione in ordine diverso dal loro caricamento.
Stadi di esecuzione di processori con scoreboard (cont.) 3. Esecuzione (EX): esecuzione dell operazione L unita funzionale esegue l operazione sugli operandi e quando ha terminato lo notifica alla scoreboard. 4.Scrittura del risultato (WR) Se la scoreboard verifica che non vi sono hazard allora scrive il risultato; altrimenti se vi e un WAR stalla finche il registro da scrivere non viene letto.
Informazioni contenuta nella scoreboard 1. Stato dell istruzione: in quale stadio si trova 2. Stato dell unita funzionale: Busy: indica se l unita e occupata Op: operazione eseguita dall unita D: registro destinazione S1, S2: registri sorgenti F1, F2: unita funzionali che producono gli operandi in S1 e S2 R1, R2 Flags che indicano che gli operandi in S1 e S2 sono pronti 3. Stato della scrittura del risultato: indica quale unita funzionale scrivera il registro contenente il risultato.
Scoreboard ciclo 1 ldfp (r3) (r3) fpr3 1 ldfp (r4) (r4) fpr4 fpmul fpr3 fpr3 fpr4 fp fpr4 fpr4 fpr0 i 4 4 r3 i M M r4 cmplt r4 r4 B+L*M Tempo busy op D S1 S2 F1 F2 R1 R2 mem yes load fpr3 r3 yes mulfp fp 1 me m
Scoreboard ciclo 2 ldfp (r3) (r3) fpr3 1 2 ldfp (r4) (r4) fpr4 fpmul fpr3 fpr3 fpr4 fp fpr4 fpr4 fpr0 i 4 4 r3 i M M r4 cmplt r4 r4 B+L*M Tempo busy op D S1 S2 F1 F2 R1 R2 mem yes load fpr3 r3 yes mulfp fp 2 me m
Scoreboard ciclo 3 ldfp (r3) (r3) fpr3 1 2 3 ldfp (r4) (r4) fpr4 fpmul fpr3 fpr3 fpr4 fp fpr4 fpr4 fpr0 i 4 4 r3 i M M r4 cmplt r4 r4 B+L*M Tempo busy op D S1 S2 F1 F2 R1 R2 mem yes load fpr3 r3 yes mulfp fp 3 me m
Scoreboard ciclo 4 ldfp (r3) (r3) fpr3 1 2 3 4 ldfp (r4) (r4) fpr4 fpmul fpr3 fpr3 fpr4 fp fpr4 fpr4 fpr0 i 4 4 r3 i M M r4 cmplt r4 r4 B+L*M Tempo busy op D S1 S2 F1 F2 R1 R2 mem yes load fpr3 r3 yes mulfp fp 4 me m
Scoreboard ciclo 5 ldfp (r3) (r3) fpr3 1 2 3 4 ldfp (r4) (r4) fpr4 5 fpmul fpr3 fpr3 fpr4 fp fpr4 fpr4 fpr0 i 4 4 r3 i M M r4 cmplt r4 r4 B+L*M Tempo busy op D S1 S2 F1 F2 R1 R2 mem yes load fpr4 r4 yes mulfp fp 5 me m
Scoreboard ciclo 6 ldfp (r3) fpr3 1 2 3 4 ldfp (r4) fpr4 5 6 fpmul fpr4 fpr3 fpr3 6 fp fpr3 fpr0 fpr0 i 4 r3 r3 i M r4 r4 cmplt r4 B+L*M Tempo busy op D S1 S2 F1 F2 R1 R2 mem yes load fpr4 r4 yes mulfp yes mul fpr3 fpr4 fpr3 no yes fp 6 mulfp me m
Scoreboard ciclo 7 ldfp (r3) fpr3 1 2 3 4 ldfp (r4) fpr4 5 6 7 fpmul fpr4 fpr3 fpr3 6 fp fpr3 fpr0 fpr0 7 i 4 r3 r3 i M r4 r4 cmplt r4 B+L*M Tempo busy op D S1 S2 F1 F2 R1 R2 mem yes load fpr4 r4 yes mulfp yes mul fpr3 fpr4 fpr3 mem no yes fp yes fpr0 fpr3 fpr0 mulfp no yes 7 fp mulfp mem
Scoreboard ciclo 8 ldfp (r3) fpr3 1 2 3 4 ldfp (r4) fpr4 5 6 7 8 fpmul fpr4 fpr3 fpr3 6 fp fpr3 fpr0 fpr0 7 i 4 r3 r3 8 i M r4 r4 cmplt r4 B+L*M Tempo busy op D S1 S2 F1 F2 R1 R2 mem yes load fpr4 r4 yes mulfp yes mul fpr3 fpr4 fpr3 mem no yes fp yes fpr0 fpr3 fpr0 mulfp yes no yes r3 r3 yes 8 fp mulfp mem
Scoreboard ciclo 9 ldfp (r3) fpr3 1 2 3 4 ldfp (r4) fpr4 5 6 7 8 fpmul fpr4 fpr3 fpr3 6 9 fp fpr3 fpr0 fpr0 7 i 4 r3 r3 8 9 i M r4 r4 cmplt r4 B+L*M Tempo busy op D S1 S2 F1 F2 R1 R2 mem no mulfp yes mul fpr3 fpr4 fpr3 yes yes fp yes fpr0 fpr3 fpr0 mulfp yes no yes r3 r3 yes 9 fp mulfp
Scoreboard ciclo 10 ldfp (r3) fpr3 1 2 3 4 ldfp (r4) fpr4 5 6 7 8 fpmul fpr4 fpr3 fpr3 6 9 10 fp fpr3 fpr0 fpr0 7 i 4 r3 r3 8 9 10 i M r4 r4 cmplt r4 B+L*M Tempo busy op D S1 S2 F1 F2 R1 R2 mem no 2 mulfp yes mul fpr3 fpr4 fpr3 yes yes fp yes fpr0 fpr3 fpr0 mulfp yes no 1 yes r3 r3 yes 10 fp mulfp
Scoreboard ciclo 11 ldfp (r3) fpr3 1 2 3 4 ldfp (r4) fpr4 5 6 7 8 fpmul fpr4 fpr3 fpr3 6 9 10 fp fpr3 fpr0 fpr0 7 i 4 r3 r3 8 9 10 11 i M r4 r4 cmplt r4 B+L*M Tempo busy op D S1 S2 F1 F2 R1 R2 mem no 1 mulfp yes mul fpr3 fpr4 fpr3 yes yes fp yes fpr0 fpr3 fpr0 mulfp yes no 0 yes r3 r3 yes 11 fp mulfp
Scoreboard ciclo 12 ldfp (r3) fpr3 1 2 3 4 ldfp (r4) fpr4 5 6 7 8 fpmul fpr4 fpr3 fpr3 6 9 10 12 fp fpr3 fpr0 fpr0 7 i 4 r3 r3 8 9 10 11 i M r4 r4 12 cmplt r4 B+L*M Tempo busy op D S1 S2 F1 F2 R1 R2 mem no 0 mulfp yes mul fpr3 fpr4 fpr3 yes yes fp yes fpr0 fpr3 fpr0 mulfp yes no yes r4 r4 yes 12 fp mulfp
Scoreboard ciclo 13 ldfp (r3) fpr3 1 2 3 4 ldfp (r4) fpr4 5 6 7 8 fpmul fpr4 fpr3 fpr3 6 9 10 12 fp fpr3 fpr0 fpr0 7 13 i 4 r3 r3 8 9 10 11 i M r4 r4 12 13 cmplt r4 B+L*M Tempo busy op D S1 S2 F1 F2 R1 R2 mem no 0 mulfp no fp yes fpr0 fpr3 fpr0 yes yes yes r4 r4 yes 13 fp
Scoreboard ciclo 14 ldfp (r3) fpr3 1 2 3 4 ldfp (r4) fpr4 5 6 7 8 fpmul fpr4 fpr3 fpr3 6 9 10 12 fp fpr3 fpr0 fpr0 7 13 14 i 4 r3 r3 8 9 10 11 i M r4 r4 12 13 14 cmplt r4 B+L*M Tempo busy op D S1 S2 F1 F2 R1 R2 mem no 3 mulfp no fp yes fpr0 fpr3 fpr0 yes yes 1 yes r4 r4 yes 14 fp
Scoreboard ciclo 15 ldfp (r3) fpr3 1 2 3 4 ldfp (r4) fpr4 5 6 7 8 fpmul fpr4 fpr3 fpr3 6 9 10 12 fp fpr3 fpr0 fpr0 7 13 14 i 4 r3 r3 8 9 10 11 i M r4 r4 12 13 14 15 cmplt r4 B+L*M Tempo busy op D S1 S2 F1 F2 R1 R2 mem no 2 mulfp no fp yes fpr0 fpr3 fpr0 yes yes 0 yes r4 r4 yes 15 fp
Scoreboard ciclo 16 ldfp (r3) fpr3 1 2 3 4 ldfp (r4) fpr4 5 6 7 8 fpmul fpr4 fpr3 fpr3 6 9 10 12 fp fpr3 fpr0 fpr0 7 13 14 i 4 r3 r3 8 9 10 11 i M r4 r4 12 13 14 15 cmplt r4 B+L*M 16 Tempo busy op D S1 S2 F1 F2 R1 R2 mem no 1 mulfp no fp yes fpr0 fpr3 fpr0 yes yes 0 yes cmp r4 r4 yes 16 fp
Scoreboard ciclo 17 ldfp (r3) fpr3 1 2 3 4 ldfp (r4) fpr4 5 6 7 8 fpmul fpr4 fpr3 fpr3 6 9 10 12 fp fpr3 fpr0 fpr0 7 13 14 17 i 4 r3 r3 8 9 10 11 i M r4 r4 12 13 14 15 cmplt r4 B+L*M 16 17 Tempo busy op D S1 S2 F1 F2 R1 R2 mem no 0 mulfp no fp yes fpr0 fpr3 fpr0 yes yes yes cmp r4 r4 yes 17 fp
Scoreboard ciclo 18 ldfp (r3) fpr3 1 2 3 4 ldfp (r4) fpr4 5 6 7 8 fpmul fpr4 fpr3 fpr3 6 9 10 12 fp fpr3 fpr0 fpr0 7 13 14 17 i 4 r3 r3 8 9 10 11 i M r4 r4 12 13 14 15 cmplt r4 B+L*M 16 17 18 Tempo busy op D S1 S2 F1 F2 R1 R2 mem no mulfp no fp no 1 yes cmp r4 r4 yes 18
Scoreboard ciclo 19 ldfp (r3) fpr3 1 2 3 4 ldfp (r4) fpr4 5 6 7 8 fpmul fpr4 fpr3 fpr3 6 9 10 12 fp fpr3 fpr0 fpr0 7 13 14 17 i 4 r3 r3 8 9 10 11 i M r4 r4 12 13 14 15 cmplt r4 B+L*M 16 17 18 19 Tempo busy op D S1 S2 F1 F2 R1 R2 mem no mulfp no fp no 0 yes cmp r4 r4 yes 19
Algoritmo di Tomasulo Controllo distribuito: controlli e buffer locali alle unita funzionali; I buffer sono chiamati Reservation Station (RS) e contengono gli operandi pendenti. Register Renaming : i registri nelle istruzioni sono rimpiazzati da valori o da puntatori alle RS Elimina WAR, WAW Vi possono essere piu RS che registri e quindi si puo fare delle ottimizzazioni che il compilatore non puo. I risultati da mandare alle unita funzionali vengono dalle RS e non dai registri; i risultati sono inviati a tutte le unita mediante un bus comune. Le operazioni con la memoria sono trattate come unita funzionali.
Componenti di una Reservation Station Op: operazioni da eseguire nell unita (e.g., + or ) Vs1, Vs2: valori degli operandi sorgenti. Store buffers has V field, result to be stored R1, R2: Reservation Station che producono i valori Vs1 e Vs2. Busy: indica che una RS e occupata Stato registri risultato: indica quale unita funzionale scrivera un registro.
Stadi di esecuzione con Tomasulo 1. Issue (IS): prende l istruzione dalla coda. Se la RS e libera (non vi sono hazard strutturali), viene mandata in esecuzione l istruzione e inviati gli operandi (i registri sono rinominati) 2. Execution (EX): esegue l operazione Quando tutti gli operandi sono pronti esegue l operazione altrimenti controlla il bus comune dei risultati 3. Write (WB): Manda atraverso il bus comune il risultato a tutte le unita in attesa e rende disponibile la RS Normal data bus: data + destination ( go to bus) Common data bus: data + source ( come from bus) 64 bits di dati + 4 bits per la specifica dell unita funzionale sorgente