1. 程式人生 > >MIPS流水線以及分支延遲和載入延遲概念(一)

MIPS流水線以及分支延遲和載入延遲概念(一)

MIPS每條指令(如彙編指令andi t0,t1)的執行分為5個階段,稱為5級流水線,分別的IF,ID,EX,MEM,WB。每個階段詳解為:

IF: Instruction Fetch,取指,根據PC(程式計數器)指示的地址從儲存器中取指令並裝入到指令寄存器(IR)中,同時PC加4(MIPS每個指令都是定長的4個位元組)以獲取下一條指令的地址。

ID:Instruction Decode,對IF階段取的指令譯碼並讀取該指令的源暫存器域(rs)指定的暫存器的內容,MIPS指令結構如下(R-type指令)


EX:Execute,執行或者計算有效地址,根據指令型別分為3中情況:

       (1)如果指令是load/store指令的話,ALU把暫存器內容和偏移量相加得到訪存的有效地址,該地址在MEM階段用

        (2)如果是ALU指令,ALU根據操作碼對從暫存器堆中讀取的資料進行運

        (3)如果是分支指令,ALU把偏移量和PC指標相加形成轉移目標的地址,同時判斷分支是否成功

MEM:訪存,如果是load指令,將根據前一個cycle計算得到的有效地址從儲存器中讀取資料。如果是store指令,根據有效地址將那個第二個暫存器中的資料寫入儲存器中。如果是條件分支指令,如果條件為真,將EX階段的形成的轉移目標地址賦給PC,分支指令執行完畢;否則不進行任何操作。如果指令是運算指令(ALU指令),MEM階段空閒。

WB:Write Back,資料寫回到通用暫存器中,將結果寫入暫存器堆,結果可能來自儲存器(對於load指令)或者來自ALU(對於ALU指令)。


綜合5級流水線的執行如下(實際上ID和WB階段個需要半個時鐘週期即可完成,即MIPS一條指令4個時鐘週期完成):

 
MIPS 5級流水線

參考:《see mips run》