【发布时间】:2017-04-16 23:48:28
【问题描述】:
管道中有 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 将在MEM 的I1 之后开始获取。
哪一个是正确的?
没有给出阶段的描述,它是根据我的知识编写的。
【问题讨论】:
-
我编辑了你的问题。如果您觉得我的编辑不愉快,可以使用左下角的“编辑”按钮回滚。
标签: pipeline cpu-architecture pipelining