2011-12-18 559 views
0

有5级流水线CPU有级的顺序如下:使用5级流水线CPU在指定的指令序列中需要多少个时钟周期?

  • IF - 指令从instrution存储器中取出。

  • RD - 指令解码和寄存器读取。

  • EX - 执行:用于数据和地址计算的ALU操作。数据存储器访问 - 对于写入访问,RD状态下的寄存器读取使用的是 。

  • WB - 注册回写。

考虑下面的指令序列:

I1: L R0, loc 1  ; R0 <=M[loc1] 
I2: A R0, R0 1  ; R0 <= R0 + R0 
I3: S R2, R0 1  ; R2 <= R2 - R0 

让每个阶段需要一个时钟周期。 从I1的提取开始,完成上述 指令序列的时钟周期数是多少?

所以这是我的解决方案。

1 2 3 4 5 6 7 8 9 10 11 12 13 
I1: IF RD EX MA WB 
I2:  IF - - - RD EX MA WB 
I3:   IF - - - - - - RD EX MA WB 

以这种方式,我得到总共13个周期。我假设,因为操作数转发没有明确提到的问题。所以注册将仅在WB阶段后可用。但选项是下列:

  • A. 8
  • B. 10
  • C. 12
  • D. 15
+5

如果你要发布一个家工作上的问题,至少表明你已经做了一些工作(除了把它转录到SO上)。你有任何答案(可能与预期结果不符)? – 2011-12-18 09:22:16

+0

是的,我已经解决了它,但我的答案不符合给出的任何选项。好吧,我也会把我的解决方案。 – 2011-12-18 09:25:29

+3

好 - 因为否则看起来您已经完成了*无*工作,并且只想要提供答案,而不是获得问题意在演示的理解。 – 2011-12-18 09:26:48

回答

1

给定的问题是基于由于构造风险下面线

MA - 数据存储器存取 - 用于写访问,第在RD状态下使用e寄存器读取

而不是数据依赖性,虽然它似乎有数据依赖性。因此,在这个问题中没有提到数据转发。

结构危害是针对加载指令。因此,只有在执行第一条指令之前,下一条指令的执行才会开始,因为M [loc1]所指的内存位置的有效地址将仅在流水线执行阶段计算。所以到那时总线将不会被释放,因此第二条指令不能被获取。因此第二条指令将需要额外的2个时钟周期

第三条指令直到第一条指令将数据成功加载到寄存器R0后才能开始执行。其结果是第三条指令具有3个更多时钟个周期。

Hence, total clock cycles = (CC for I1) + (CC for I2) + (CC for I3) 
= 5 + 2 + 3 
= 10 clock cycles 
+0

我们不能在这里使用Operand转发吗? – 2017-01-31 13:08:54

2

进行写访问在RD阶段读取寄存器used-这意味着,如果我们不能向前操作数的值MA阶段。所以,我们可以假定操作数转发可以在其他阶段完成。

随着数据转发:

T1 T2 T3 T4 T5 T6 T7 T8

IF RD EX MA WB
-IF RD - EX MA WB
--IF - RD EX MA WB

因此,答案将是8

http://www.cs.iastate.edu/~prabhu/Tutorial/PIPELINE/forward.html