超標量處理器概覽


超標量處理器概覽

1.1為什么需要超標量

處理器執行速度的影響因素

  • 程序中指令的數量

  • 每條指令在處理器中執行所需要的周期數

    • 普通流水線處理器每周期最多執行1條指令
    • 超標量處理器每周期可以執行多於一條的指令
    • 但不是每周期執行多於一條指令的處理器都是超標量處理器,如VLIW結構的也可以(依靠編譯器和程序員來決定哪些指令可以並行執行)
  • 處理器每個周期的時間

超標量處理器專門針對優化IPC(instruction per cycle),超標量處理器每周期可以從I-Cashe提取n條指令送入流水線,

1.2 普通處理器的流水線

理想流水線

  • 流水線各階段所需時間近似相等
  • 各階段的操作被重復執行。對於算數運算類型的指令不需要訪問存儲器,那么它只需要在訪存階段什么都不做就可以。
  • 流水線中各個階段相互獨立,互不相干。但各指令間存在各種相關性,因此很難滿足。

對於復雜指令集如x86,因為指令長度不等,執行時間不等,很難直接實現流水線。

對於精簡指令集如arm,因為指令長度相等,並且每條指令任務量比較規整,所以容易使用流水線。


將流水線階段合並,可以產生三級流水等,適用於對性能要不高的低功耗嵌入式領域。

將流水線階段繼續細分,可以獲得更高性能,但是也會增加硬件資源開銷和分支預測失敗后果更嚴重。

指令相關性

先寫后讀:后一條指令的操作數來源於上一條指令的結果,后條指令必須等上一條指令得到結果才能繼續執行。

先讀后寫:一條指令要將結果寫入到某個寄存器,但這個寄存器還在被其他指令讀取,不能夠馬上寫入。

先寫后寫:兩條指令都要將結果寫入同一個寄存器,那么后面指令必須等前面指令執行完才能執行寫操作。

控制相關性:分支指令只有計算出結果才可以知道后續執行哪些指令,在得到結果的等待時間中只能按照預測方式取指。

對於超標量處理器WAW、WAR、RAW三種相關性都會阻礙指令亂序執行,需要在流水線中進行特殊處理。

1.3 超標量處理器的流水線

超標量處理器執行指令兩種方式:順序執行、亂序執行

frontend指流水線中的取指、譯碼

issue指發射,將指令送到對應的功能單元執行。

write back指將指令結果寫到目的寄存器。可通過內部寄存器重命名實現亂序。

指令完成取指、譯碼、寄存器重命名后進入發射階段,此時指令存儲在緩存發射隊列中,一旦指令操作數准備好了,就可以從發射隊列中離開,送到對應運算單元進行執行。

執行完后亂序寫入重排序緩存,在重排序緩存中實現運行結果的順序整理。

超標量處理器一般流水線深度比較深,除流水線各階段外還需要有預測技術和恢復電路技術。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM