【計算機系統】CPU指令執行流程與指令流水線原理

【計算機系統】CPU指令執行流程與指令流水線原理

一、指令執行流程

馮諾依曼架構CPU指令執行的五個階段:

階段 涉及的功能部件
IF 指令寄存器IR、程序計數器PC
ID 指令譯碼器ID
EXE CPU內各個單元:ALU、Cache、Registers .etc
MEM
WB 狀態寄存器FR、Registers. etc
表1

在上述各階段CPU與內存的交互時,還涉及系統總線如AB、CB、DB等

1、取指階段(IF, Instruction Fetch)

在上一個指令週期時,程序計數器PC中記錄的是下一條指令的內存地址。因此IF階段CPU指令寄存器按照PC的地址從主存中取得一條指令,當前指令被取出後,PC更新到下一條指令的地址。

2、指令譯碼階段(ID, Instruction Decode)

在ID階段,指令譯碼器按照預定的指令格式,對取回的指令進行拆分和解釋,識別區分出不同的指令類別以及各種獲取操作數的方法。

3、執行指令階段(EXE, Execute)

通過對指令的譯碼,CPU已經知曉這條指令要如何執行,因此EXE階段就是通過操作控制器OC,按確定的時序向相應的部件發出微操作控制信號以對指令要求的特定操作進行具體實現。EXE階段CPU的不同部分(如ALU、寄存器組等)被聯合起來,以實現指令所需的操作。

4、訪存取數階段(MEM, Memory)

根據指令需要可能要訪問內存,讀取操作數。MEM階段根據指令地址碼(如果有要求的話)得到操作數在主存中的地址,並從主存中讀取該操作數用於運算。

5、寫回階段(WB, Write Back)

WB階段把執行指令階段的運行結果數據“寫回”到某種存儲形式:
①寫入CPU的內部寄存器中,以便被後續的指令快速地存取
②寫入內存
③改變FR中標誌位狀態(如果需要改變的話),用來影響接下來程序的動作
WB階段結束後,若無意外事件(如結果溢出等)或異常中斷髮生,計算機就接着從程序計數器PC中取得下一條指令地址,開始新一輪的循環。上述五個階段在具體實現過程中會引入指令流水線來提高效率。

二、指令流水線(Instruction Pipeline)

指令流水線概念的提出是爲了提高CPU處理指令的效率。

假設將CPU執行一條指令按照流程分爲四個步驟如圖1(ii)

圖1

考慮一個完全不採用流水線的系統如圖3(i),對於一組指令序列,CPU總是等某條指令的全部過程都執行完之後再開始下一條指令。與之對比的是圖1(ii)的指令流水線,在第一條指令完成IF後,第二條指令就可以開始IF,依次類推。直觀地,指令流水可以大幅提高CPU處理指令的效率。

1、指令流水線基本概念

①指令流水週期:將一條指令劃分爲不同的步驟涉及到的一個重要問題就是——不一致的劃分現象,即每個步驟完成的時間不均勻,例如在經典劃分中,IF,WB的速度比較快而EXE速度較慢,如圖2所示陰影部分爲指令步驟所需的時間。因此必須把流水週期設置爲單級操作的最大時延。指令階段間的指令轉移(例如IF→ID)是由時鐘信號控制的,驅動這條指令流水工作的時鐘週期應該要等於這個最大時延。
在這裏插入圖片描述

圖2

②CPI(Cycles Per Instruction):即每條指令經過整個流水線所需週期數,它與各指令有關,不同的指令,CPI也不相同。因此,一般使用平均CPI表示

③ILP(Instruction Level Parallelism):即指令級並行度,是指當指令流水線被充分利用時,一個基本週期內並行執行的指令數

④指令發射速率:指在每個週期內發射的指令數,在數值上等於超標量處理機的級數。

2、影響流水線性能的因素

①數據相關:如第一條指令的輸出爲第二條指令的輸入,則第二條指令必須等待第一條指令執行完畢而不能直接進入流水,造成流水線效率下降
②控制相關:如遇到分支判斷指令,那麼該指令可能順序執行,也可能分支跳轉到其他位置,造成流水線斷流。

引入流水線會提高CPU指令處理效率,但過深的流水等級會使數據相關和控制相關的副作用增大,反而又降低了CPU工作性能

3、流水線的改進技術——超標量技術

在這裏插入圖片描述

圖3

採用資源重複的並行性思想,設置多條指令流水線和多個功能部件。每個週期發送多條指令(即指令發射速率大於1),同時並行地對多條指令進行流水處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章