我需要多少個攤位才能正確執行以下說明。我對我所做的有點困惑,所以我在這裏看到專家的答案。裝配流水線
lw $1,0($2);
beq $1,$2,Label;
請注意,檢查分支是否會發生將在解碼階段完成。但是在這種情況下$ 1的beq的源寄存器rs將在lw指令的寫回階段後更新。所以我們需要在存儲器階段將新數據從存儲器轉發到beq指令的解碼階段。
階段是這樣的:
IF:指令的讀取; ID:指令解碼 例如:執行/ ALU階段 MEM:在目的地存儲數據寄存器
這是我迄今所做的:從內存 WB讀取數據。
當lw處於執行階段並且在解碼階段beq時,失速條件變爲真並且產生氣泡。現在lw處於Mem階段,由於氣泡,beq仍處於解碼階段,失速狀態再次變爲真,第二個失速發生。現在lw處於WB(寫回)狀態,beq處於解碼階段,但仍然是數值1美元將在WB階段結束時更新,這最終意味着beq仍然會以1美元的錯誤價值工作。
「檢查分支是否會發生」 - 您的意思是檢查。根據http://www.csc.gatech.edu/~copeland/3055-00/lab/lab-2/MIPS_pipes.JPEG分支在EX中完成;並且新的PC被轉發到MEM的PC寄存器。 – osgx
由於延遲分支,您需要添加1個額外的攤位。所以你需要7個攤位。 – Blood
它如何成爲7檔?最多的攤位可以是2 – Alfred