管道危险问题

时间:2013-12-15 13:02:05

标签: mips pipeline

我目前正在考试明天,需要一些帮助才能理解以下内容:


给出以下程序:

  

ADDF R12,R13,R14

     

ADD R1,R8,R9

     

MUL R4,R2,R3

     

MUL R5,R6,R7

     

ADD R10,R5,R7

     

ADD R11,R2,R3

如果架构有以下内容,请找出可能出现的混乱:

a)没有管道

b)管道

c)多个管道


因此对于(b)我会说第5行的指令是数据危险,因为它取出了R5的值,该值来自前一行给定乘法的结果,因此该指令尚未完成。

但是如果架构没有管道会发生什么?我最好的猜测是没有危险,但我不确定。

此外,如果它有2个或更多管道会发生什么?

干杯。

1 个答案:

答案 0 :(得分:0)

你建议a)没有危险是正确的,因为每条指令必须在下一次开始之前完成。

对于b):

  • 第4行和第5行之间存在“Read After Write”依赖关系。
  • 第4行和第5行之间以及第2行和第6行之间存在“Read After Read”依赖关系。

我怀疑b)和c)部分之间的区别在于,该问题假定您提前知道管道具有明确定义的阶段数。例如,我们知道如果管道有3个阶段,那么第2行和第6行之间的RAR依赖性是无关紧要的。

在具有多个管道的系统中,系统可以在每个周期中获取4个指令,这使得正态度相差太远的依赖性现在成为潜在的危险。