停頓(Stall): 暫時停止管線運作,以等待資料依賴的問題被解決。
sub $4, $1, $5
需要等待 add $1,...
的結果,導致管線停頓。轉發(Forwarding): 最簡單的解決方式。當結果一可用時便立即傳送,不需完全停頓。轉發可以減少等待指令完全執行所造成的延遲。
rd
和 rs
或 rt
寄存器,來決定是否需要轉發。noop
)來達到停頓效果。當分支或跳轉的決策還未完成前,管線執行錯誤的指令。
noop
)來停頓。異常分為兩種類型:
除了硬體故障外,其他異常是軟體例外,處理方式通常是將任務迅速完成後返回正常運作。