2

考虑下面给出的机器指令序列:

MUL R5, R0, R1
DIV R6, R2, R3
ADD R7, R5, R6
SUB R8, R7, R4 

在上述序列中,R0toR8是通用寄存器。在所示指令中,第一个寄存器存储对第二个和第三个寄存器执行的操作的结果。该指令序列将在具有以下 4 个阶段的流水线指令处理器中执行:

  1. 指令获取和解码(IF),
  2. 操作数获取 (OF),
  3. 执行操作 (PO) 和
  4. 写回结果 (WB)。

对于任何指令IFOFWB阶段每个都需要 1 个时钟周期。该PO阶段需要 1 个时钟周期用于ADDSUB指令,3 个时钟周期用于MUL指令,5 个时钟周期用于DIV指令。流水线处理器使用从 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

谁能告诉哪个答案是正确的?

4

1 回答 1

1

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

于 2015-04-09T13:46:26.873 回答