408五級流水線強化課筆記

CauchyPt發表於2024-09-16

408強化課錄播五級流水線相關內容筆記

  • 指令流水線基本概念:簡單的概念題
  • 指令流水線基本實現:指令按序發射,按序完成
  • 各種冒險:結合MIPS指令序列分析並處理冒險
  • 超標量和動態流水線:簡單的概念題

五級流水線

五級流水線的設計是為了透過並行提高處理器的吞吐量。
img
圖片來自CSAPP。
一個指令通常被劃分為五個階段:

  • 取指(IF)
  • 譯碼(ID)
  • 執行(EX)
  • 訪存(MEM)(如果需要的話)
  • 寫回(WB)(如果需要的話)
    總體的圖如下
    image

結構冒險(考的少)

一個被請求的資源仍處於忙碌狀態。

多個階段可能請求同一份資源,例如IF和MEM需要同一塊Cache,就會發生結構冒險。
解決方法有:

  • 阻塞指令
  • 把指令Cache和資料Cache分離

資料冒險

需要等待上一個指令完成資料讀寫。

img
如上圖所示,因為指令I1對暫存器R1的寫操作發生在WB寫回階段,因此指令I2在ID譯碼階段需要讀暫存器時,R1的值還沒有被寫回,這就是資料冒險。
核心特點:兩條指令,先寫後讀同一個暫存器。如果某條指令寫了一個暫存器,則要觀察後面三條指令是否讀了這個暫存器。(個人感覺可能畫圖更直觀)
img
解決方案:

  • 硬體阻塞:將讀暫存器的指令ID段阻塞若干時鐘,直到寫暫存器的指令完成WB。
  • 轉發(旁路)技術:將寫暫存器的資料直接轉發給讀暫存器的指令。但轉發旁路不能解決Load指令寫暫存器引發的Load-Use資料冒險

Load-Use資料冒險

Load指令把資料從記憶體讀到暫存器,後面的指令需要用到這個暫存器的值。這種情況下,即使使用轉發技術也無法解決資料冒險。
img

控制冒險

一些控制取決於上一條指令的結果。

img
轉移類指令會更改PC,因此下一條指令不是I2而是其他,會產生控制冒險。
解決方案:

  • 硬體阻塞:將轉移類指令後一條指令IF段阻塞3時鐘

冒險總結

img

相關文章