iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
Software Development

RISC-V 與處理器之架構學習及應用系列 第 19

[Day19] Processor 概念 (2/2)

  • 分享至 

  • xImage
  •  

一、Pipeline

  • 多週期機器(Multicycle Machine): 雖然每個步驟可以切得更小,但由於邊界效應的影響,並不能一直加速。因為切割越多,越需要硬體支援,而硬體傳輸也需要時間。
  • 管線(Pipeline): 意指在硬體和邏輯不衝突的情況下,開始執行下一條指令,但需要額外的硬體資源。這樣可能會出現三大類問題:
    1. 結構危害(Structural Hazard): 硬體衝突,通常指多條指令同時需要相同的硬體。
    2. 資料危害(Data Hazard): 當資料還沒回傳就被使用,導致資料引用錯誤。

二、解決資料危害的方法:

  1. 停頓(Stall): 暫時停止管線運作,以等待資料依賴的問題被解決。

    • 圖解說明:例如指令 sub $4, $1, $5 需要等待 add $1,... 的結果,導致管線停頓。
  2. 轉發(Forwarding): 最簡單的解決方式。當結果一可用時便立即傳送,不需完全停頓。轉發可以減少等待指令完全執行所造成的延遲。

Forward Unit:

  • 比較當前指令和前一條指令的 rdrsrt 寄存器,來決定是否需要轉發。

Hazard Unit:

  • 判斷是否有危害發生。如果發生危害,則會阻止指令提取,並插入空操作(noop)來達到停頓效果。

三、Control Hazard:

當分支或跳轉的決策還未完成前,管線執行錯誤的指令。

解決方法:

  1. 轉發(Forwarding,略過)
  2. 停頓(Stall): 控制危害所使用的停頓與資料危害的停頓不同。錯誤指令必須被清除,因此插入空操作(noop)來停頓。
  3. 延遲決策(Delay Decision): 編譯器會在空閒期插入無關的指令,以減少停頓造成的損失。
  4. 靜態分支預測(Static Branch Prediction): 總是猜測一個固定方向,若猜錯則重新抓取。
  5. 動態分支預測(Dynamic Branch Prediction): 根據過去的分支行為來預測未來的方向。
  • 分支歷史表(Branch History Table,BHT): 用於記錄分支是否跳轉過,來預測未來的分支行為。

四、Dealing with Exceptions(異常處理):

異常分為兩種類型:

  • 陷阱(Traps): 內部指令引發的異常(如溢位、未定義指令)。
  • 中斷(Interrupts): 外部事件引發的異常(如 I/O 請求、操作系統請求)。

除了硬體故障外,其他異常是軟體例外,處理方式通常是將任務迅速完成後返回正常運作。


上一篇
[Day18] Processor 概念 (1/2)
下一篇
[Day20] Memory中的 Cache
系列文
RISC-V 與處理器之架構學習及應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言