管道中有5個階段。加載後的指令如何執行?
IF - Instruction fetch
ID - Instruction Decode, read the register
EX - On a memeory reference add up base and offset,
and for arithmetic instruction do the math.
MEM - If load or store access memory
WB - Place the result in appropriate register.
I1 : R0 <- M[loc] IF | ID | EX | MEM | WB |
I2 - R0 <- R0 + R0 | IF | ID | EX | MEM | WB |
I3 - R2 <- R2 - R0 | IF | ID | EX | MEM | WB |
考慮到「操作數轉發」已被使用。
解決方案表示: -
指令
I1
是Load
指令。因此,下一條指令(I2
)無法提取,直到I1
完成其EXE
階段。
但我認爲:在MEM
階段,處理器訪問內存並選取所需的單詞。並在WB
階段更新註冊表的註冊表。
因此,直到MEM
階段處理器保存內存的控制,因此I2
將開始取I1
的MEM
後取。
哪一個是正確的?
階段描述還沒有給出,它是根據我的知識寫的。
我編輯了你的問題。如果您發現我的編輯不愉快,您可以使用左下方的「編輯」按鈕進行回滾。 –