Eccezioni e interrupt
Un altro problema di tipo control hazard, come per le beq
, sono le eccezioni e le interruzioni.
Le eccezioni sono problemi (e.g. overflow, opcode invalido, ...) causati dal codice in esecuzione dentro le unità, mentre gli interrupt sono eventi generati da periferiche che richiedono l'attenzione del processore.
Per entrambi, la gestione consiste nel:
- Interrompere l'istruzione corrente e successive inserite nella pipeline
- Salvare il PC dentro il registro EPC (Exception Program Counter)
- Trasferire il controllo al sistema operativo su un indirizzo hard-coded
Durante il trasferimento del controllo, il tipo di eccezione può: o essere salvato su un registro speciale (e.g. CAUSE per il MIPS), o il salto può avvenire ad indirizzi diversi a seconda dell'eccezione.
Per evitare che la gestione degli errori si blocchi, gli interrupt possono essere disabilitati per brevi periodi. Inoltre, nel caso in cui unità diverse generassero eccezioni diverse, serve un sistema di priorità per gestirle.