ARM體系結構(二) 流水線

2021-06-25 20:15:48 字數 1282 閱讀 5861

一.流水線的概念與原理

處理器按照一系列步驟來執行每一條指令,典型的步驟如下:

①  從儲存器讀取指令(fetch);

②  解碼(以鑑別它屬於哪一種指令)(dec);

③  從指令中提取指令的運算元(這些運算元往往存在於暫存器中)(reg);

④  如將運算元進行組合以得到結果或儲存器位址(alu);

⑤  如果需要,則訪問儲存器以儲存資料(mem);

⑥  將結果寫回到暫存器堆(res)。

並不是所有指令 都需要上面所有的步驟,但是多數指令需要其中多個步驟。在執行每一步指令時,只有少量的硬體處於工作狀態,這種資源的浪費是不可容忍的。有一種方法可以明顯改善硬體資源利用情況,這就是當前一條指令結束之前就開始執行下一條指令,即我們常說的流水線。可以把上面的六個步驟想象成是汽車工廠流水線上的六個工人,每個人負責汽車生產的乙個步驟,在第乙個工人完成自己的工作之後無需等待整個汽車生產完畢再開始下一輛車的工作,每個工人至始至終都在做自己分內的工作,這樣有效的提高了工作效率。模擬回來,硬體使用的效率和處理器的吞吐量大大提高。有一點需要注意:從原理上說,上述流水線可將工作效率提高到六倍,但是由於硬體本身的一些限制,實際情況會少一些。

二. 流水線的分類

1.      **流水線arm組織

2.      五級流水線arm組織

3.      六級流水線arm組織

取址——發射——解碼——執行——儲存——回寫

三. 影響流水線效能的因素

1.      互鎖

在典型的程式處理過程中,經常會遇到這樣的情形,即一條指令的結果被用作下一條指令的運算元。

【例】ldr   r0,[r0,#0]

add  r0,r0,r1

該程式會在流水線上產生互鎖,流水線的操作產生中斷,因為第一條指令的結果在第二條指令取數時還沒有產生。第二條指令必須停止,知道r0產生結果為止。

2.      跳轉指令

跳轉指令也會破壞流水線的行為,因為後續指令的取址步驟收到跳轉目標計算的影響,因而必須推遲。但是,當跳轉指令被解碼時,在它被確認時跳轉指令之前,後續的操作已經發生。這樣一來已經被預取進流水線的指令不得不被丟棄。

儘管有些技術可以減少這些流水線問題的影響,但是不能完全消除這些困難。流水線級數越多,問題就越嚴重。對於相對簡單的處理器,使用三到五級的流水線效果最好。

體系結構 五段流水線 流水線技術

目錄 一條經典的5段流水線 一條指令的執行過程分為以下5個週期 取指令週期 if 指令解碼 讀暫存器週期 id 執行 有效位址計算週期 ex 儲存器訪問 分支完成週期 mem 寫回週期 wb 體系結構 流水線 流水線相關 流水線衝突 以程式計數器 pc中的內容作為位址,從儲存器中取出指令並放入指令暫...

體系結構 五段流水線 流水線技術

以程式計數器pc中的內容作為位址,從儲存器中取出指令並放入指令暫存器ir 同時pc值加4 假設每條指令佔4個位元組 指向順序的下一條指令 對指令進行解碼,並用ir中的暫存器位址去訪問通用暫存器組,讀出所需的運算元 不同指令所進行的操作不同 暫存器 暫存器alu指令 alu按照操作碼指定的操作對從通用...

體系結構筆記 流水線衝突處理

資料衝突 控制衝突 由於硬體資源有限導致的,多個指令執行階段對同一硬體提出訪問請求,導致的衝突。比如在執行時同時有兩個指令對資源提出訪問請求,乙個指令在取指階段提出取指令的請求訪問記憶體,乙個指令在運算階段提出對資料的訪存,這時會產生訪存衝突,這時可以暫停乙個週期,等待上一條指令的訪存結束,之後進行...