MIPS通常包含5個步驟,5級流水:
1.存儲器取指令
2.指令譯碼同時讀寄存器
3.執行操作或計算地址
4.在數據存儲器中讀取操作數
5.結果寫回寄存器
針對流水線設計的指令集:
1.所有指令具有相同的長度。簡化了取指令和指令譯碼。x86中指令長度不等。
2.只有幾種指令格式。每條指令源寄存器字段保持不變。確保指令類型確定的同時,讀取寄存器堆。否則,需要把譯碼和讀寄存器堆分級。
3.堆內存的操作僅出現在存取操作中。意味着在指令執行級得到的內存地址,可以接着在下一級訪問內存。
4.內存中操作數必須對齊。
流水線冒險:
冒險:在下一個時鐘週期中下一條指令不能執行。
1.結構冒險。硬件不支持多條指令在同一時鐘週期內執行。
2.數據冒險。一個操作必須等待另一個操作完成後才能執行時,流水線必須停頓。解決方法:數據定向/旁路。
3.控制冒險。處理器需要根據一條指令的結果做出決策,其它指令可能還在執行中。解決方法:分支預測/延遲決定。