2. Hazard
• Hazard strutturali
• Hazard sui dati
• La Forwarding Unit si inserisce in questo contesto
• Hazard sul controllo
3. Hazard sui dati
• Una o più istruzioni potrebbero richiedere un dato che non è stato
calcolato da una istruzione precedente
sub $r2, $r1, $r3
and $r12, $r2, $r5
or $r13, $r6, $r2
4. Hazard sui dati
• Conseguenze:
• Stalli nella pipeline
• Ritardi troppo lunghi
• Soluzione:
• Reordering
• Forwarding
5. Forwarding
• Non è necessario aspettare che l’istruzione sia terminata
• Appena il risultato è pronto, può essere utilizzato come operando
• È possibile realizzare un circuito di bypassing
• Preleva i dati mancanti non appena vengono creati anziché dal register file
• L’unità preposta al bypassing è la Forwarding Unit
7. Forwarding Unit
• ALU_Src_Sel_1, ALU_Src_Sel_2, ALU_Src_Sel_3 assumono i seguenti
valori
Codice Significato
00 Operando preso dal register file
01 Valore propagato dal registro destinazione della fase ME
10 Valore propagato dal registro destinazione della fase WB