考虑下面给出的机器指令序列:
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个时钟周期。13当我们使用从PO到PO的操作数转发时,答案将出现。
我的答案:
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
有人能说出哪个答案是正确的吗?
Correct answer is C , 13 clock cycles.
http://geeksquiz.com/gate-gate-cs-2015-set-2-question-54/
http://gateoverflow.in/8218/gate2015-2_44
Operand forwarding takes immediately after the last PO cycle, We do not need to wait one more clock cycle.
so this is the correct sequence
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