处理机流水线------经典五段流水线
文章是在我遇到這部分問題時查找的所有感覺挺好的內容的整合(全部是轉載的)
流水線基礎理論就不加了,最新的處理器流水線處理的機制也沒有(一般以用不到),想了解去隨便找個芯片廠商官網下個手冊自己查。
?
這部分學習呢,包括整個計算機組成原理的學習我認為別太較真,因為計算機的各個部件有很多廠商也就有了很多標準,所以掌握理論就行。
下文也有挺多地方是不嚴謹的,不同指令集不同的操作方式,不同芯片也有不同的操作方式(不過芯片也是和指令集統一的.......),反正下面的文章中是針對某個指令集的,了解思想就行。
?
想要實現流水線CPU內部總線必須是多條的,共用的!!!!!
?
一條經典的5段流水線
一條指令的執行過程分為以下5個周期:
取指令周期(IF)
指令譯碼/讀寄存器周期(ID)
執行/有效地址計算周期(EX)
存儲器訪問/分支完成周期(MEM)
寫回周期(WB)
流水線沖突和相關的鏈接:
體系結構 | 流水線 | 流水線相關 | 流水線沖突
一條經典的5段流水線
- 介紹一條經典的5段RISC流水線
- 每一個周期作為一個流水段;
- 在各段之間加上鎖存器(流水寄存器)。?
一條指令的執行過程分為以下5個周期:
-
取指令周期(IF)
以程序計數器PC中的內容作為地址,從存儲器中取出指令并放入指令寄存器IR;
同時PC值加4(假設每條指令占4個字節),指向順序的下一條指令。
-
指令譯碼/讀寄存器周期(ID)
對指令進行譯碼,并用IR中的寄存器地址去訪問通用寄存器組,讀出所需的操作數。
-
執行/有效地址計算周期(EX)
不同指令所進行的操作不同:
load和store指令:ALU把指令中所指定的寄存器的內容與偏移量相加,形成訪存有效地址。
寄存器-寄存器ALU指令:ALU按照操作碼指定的操作對從通用寄存器組中讀出的數據進行運算。
寄存器-立即數ALU指令:ALU按照操作碼指定的操作對從通用寄存器組中讀出的操作數和指令中給出的立即數進行運算。
分支指令:ALU把指令中給出的偏移量與PC值相加,形成轉移目標的地址。同時,對在前一個周期讀出的操作數進行判斷,確定分支是否成功。
-
存儲器訪問/分支完成周期(MEM)
該周期處理的指令只有load、store和分支指令。
其它類型的指令在此周期不做任何操作。
- load和store指令
load指令:用上一個周期計算出的有效地址從存儲器中讀出相應的數據;
store指令:把指定的數據寫入這個有效地址所指出的存儲器單元。
- 分支指令
分支“成功”,就把轉移目標地址送入PC。
分支指令執行完成。
-
寫回周期(WB)
ALU運算指令和load指令在這個周期把結果數據寫入通用寄存器組。
ALU運算指令:結果數據來自ALU。
load指令:結果數據來自存儲器。
- 在這個實現方案中:
分支指令需要4個時鐘周期(如果把分支指令的執行??? 提前到ID周期,則只需要2個周期);
store指令需要4個周期;
其它指令需要5個周期才能完成。
?
https://blog.csdn.net/stone_fall/article/details/88414017#%E4%B8%80%E6%9D%A1%E7%BB%8F%E5%85%B8%E7%9A%845%E6%AE%B5%E6%B5%81%E6%B0%B4%E7%BA%BF
----------------------------------------------------
?
https://blog.csdn.net/qq_35260622/article/details/51657165?utm_medium=distribute.pc_relevant.none-task-blog-title-6&spm=1001.2101.3001.4242
----------------------------------------------
總結
以上是生活随笔為你收集整理的处理机流水线------经典五段流水线的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 子宫腺肌症手术后要上环吗
- 下一篇: 手机能上wifi电脑不行_锦囊在此(电脑