【发布时间】:2015-05-07 18:09:56
【问题描述】:
考虑下面给出的机器指令序列:
MUL R5, R0, R1
DIV R6, R2, R3
ADD R7, R5, R6
SUB R8, R7, R4
在上述序列中,R0 到 R8 是通用寄存器。在所示指令中,第一个寄存器存储对第二个和第三个寄存器执行的操作的结果。该指令序列将在具有以下 4 个阶段的流水线指令处理器中执行:
- 指令获取和解码 (IF),
- 操作数获取 (OF),
- 执行操作 (PO) 和
- 写回结果 (WB)。
IF、OF 和 WB 阶段对于任何指令都需要 1 个时钟周期。 PO 阶段对于 ADD 或 SUB 指令需要 1 个时钟周期,对于 MUL 指令需要 3 个时钟周期,对于 DIV 指令需要 5 个时钟周期。流水线处理器使用从 PO 阶段到 OF 阶段的操作数转发。执行上述指令序列所用的时钟周期数为
既然明确规定从PO到OF阶段应该使用操作数转发,那么上面的答案应该是15个时钟周期。
但在许多地方给出的答案是 13 个时钟周期。当我们使用从 PO 到 PO 的操作数转发时,将会有 13 个答案。
我的回答:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
IF OF PO PO PO WB
IF OF PO PO PO PO PO WB
IF OF PO WB
IF OF PO WB
在很多地方给出了答案:
1 2 3 4 5 6 7 8 9 10 11 12 13
IF OF PO PO PO WB
IF OF PO PO PO PO PO WB
IF OF PO WB
IF OF PO WB
谁能说出哪个答案是正确的?
【问题讨论】:
标签: pipeline instructions hardware-programming cpu-cycles machine-instruction