新消息丨嵌入式:ARM的流水線技術

2022-12-12 17:25:13 來源:51CTO博客


(資料圖片僅供參考)

三級流水線ARM的組織

ARM的3級流水線介紹

到ARM7為止的ARM處理器使用的簡單3級流水線分別為

取指級 :讀取指令。譯碼級 :對指令進行譯碼。占有“譯碼邏輯”,不占有“數據路徑”。執行級 :指令占有“數據路徑”,寄存器堆棧被讀取,操作數在桶式移位器中被移位,ALU產生相應的運算結果,并寫回目的寄存器中。并根據需求更改狀態寄存器的條件位。

ARM3級流水線下PC的行為

在3級流水線的執行過程中,當通過R15寄存器直接訪問PC時,必須考慮到此時流水線的執行過程的真實情況

程序執行時間計算公式

:指令數 (固定)。CPI : 每條指令的平均時鐘周期數。: 時鐘頻率。

減少Tprog的方法:

減少CPI: 將程序和數據分開提高 : 增加流水數,簡化每一級的邏輯。

五級流水線ARM的組織

使用5級流水線的ARM處理器包含下面5個流水線級:

取指:取指令。譯碼 :讀取寄存器操作數,寄存器堆中有3個操作數讀端口,大多數ARM指令能在一個周期內讀取其操作數。執行 :把一個操作數移位,并產生ALU結果,如果是Load/Store指令,在ALU中計算存儲器地址。緩沖\數據 :如果需要,則訪問數據存儲器,否則ALU的結果只是簡單地緩沖一個時鐘周期,以便使得所有指令都有相同的流水線流程。回寫 :將指令產生的結果寫回到寄存器堆,包括任何從存儲器讀取的數據。

進一步減少CPI

要改進CPI,必須增加指令存儲器的帶寬,ARM10TDMI采用64位存儲器結構來解決存儲器的瓶頸問題。

采用轉移預測邏輯。可以把時鐘頻率提高,達到每一時鐘周期取2條指令。轉移預測單元在流水線的發射階段之前(在流水線的取指階段),能識別轉移指令,并把它從指令流中移去,從而,盡可能地把轉移所引起的周期損失降至零。采用非阻塞(Non-blocking)存取執行。一般的存儲器存儲加載指令,不能在單一存儲器周期中完成。采用非阻塞存取措施,就不會在流水線的執行階段產生停頓。采用64位數據存儲器。這樣,允許在每個時鐘周期傳送2個寄存器的指令存取。ARM10TDMI的寄存器組具有4個讀端口和3個寫端口。

參考文獻:

孟祥蓮.嵌入式系統原理及應用教程(第2版)[M].北京:清華大學出版社,2017.

標簽: 時鐘周期 時鐘頻率 轉移預測

上一篇:【環球播資訊】狂神說 多線程
下一篇:焦點!關于Kubernetes集群中常見問題的排查方法的一些筆記