管道中有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
后取。
哪一个是正确的?
阶段描述还没有给出,它是根据我的知识写的。
我编辑了你的问题。如果您发现我的编辑不愉快,您可以使用左下方的“编辑”按钮进行回滚。 –