📜  门| GATE CS 2010 |第33章

📅  最后修改于: 2021-06-28 23:12:34             🧑  作者: Mango

5级流水线处理器具有指令提取(IF),指令解码(ID),操作和提取(OF),执行操作(PO)和写操作数(WO)阶段.IF,ID,OF和WO阶段占用1个时钟每个阶段对任何一条指令循环一次.PO级分别对ADD和SUB指令花费1个时钟周期,对MUL指令花费3个时钟周期,对DIV指令花费6个时钟周期。流水线中使用运算和转发。需要执行以下指令序列?

Instruction           Meaning of instruction
  I0 :MUL R2 ,R0 ,R1          R2 ¬ R0 *R1
  I1 :DIV R5 ,R3 ,R4            R5 ¬ R3/R4
  I2 :ADD R2 ,R5 ,R2          R2 ¬ R5+R2
  I3 :SUB R5 ,R2 ,R6          R5 ¬ R2-R6

(A) 13
(B) 15
(C) 17
(D) 19答案: (B)
说明:操作数转发:在这种技术中,操作数的值在存储之前被赋予相关指令的相关阶段。

在上述问题中,I2依赖于I0和I1,而I3依赖于I2。

让我们用一个时空图来看看这个问题。

流水线

上面是一个时空图,表示在其中执行指令的管道。

指令0是MUL操作,在PO阶段占用CPU的3个时钟周期,而在其他任何阶段仅占用1个周期。

指令1是DIV操作,在PO阶段占用CPU的6个时钟周期,在其他任何阶段仅占用1个周期。

在这里可以注意到,即使OF级在第4个时钟周期中处于空闲状态,也没有给出指令1。这是一个设计问题。仅在下一个周期要操作或执行操作数时,才应获取操作数,否则可能会损坏数据。由于下一个周期的PO阶段不是空闲的,因此OF延迟了,并且仅在进入PO阶段的1个周期之前对指令1进行了处理。

指令2是ADD操作,在所有阶段中都需要1个CPU时钟周期。但这是一个依赖操作。它需要指令0和1提供的操作数。

指令2需要R5和R2相加,它会按时获得R2,因为直到指令2到达其PO阶段为止,R2都已存储在内存中。现在也需要R5,但是指令2的PO和指令1的WO是并行的。这意味着指令2在被指令1存储之前不能接受R5的值。因此出现了操作数转发的概念。在将指令1的结果/值存储为R5之前,它可以先将其转发到指令2的Fetch-Execute缓冲区,以便指令2也可以在指令的WO阶段并行使用它。这将节省所需的额外时钟周期(如果不使用操作数转发,并且需要从内存中获取R5)。

在指令3中,将相同的操作数转发概念应用于由指令2计算的R2的值。

因此,操作数转发在此处节省了2个额外的时钟周期。 (指令2中有1个周期,指令3中有1个周期)。

因此,周期总数为15,这可以从图中看出,该阶段的每个实例代表1个时钟周期。总计15。
这个问题的测验