我目前正在考试明天,需要一些帮助才能理解以下内容:
给出以下程序:
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个或更多管道会发生什么?
干杯。
答案 0 :(得分:0)
你建议a)没有危险是正确的,因为每条指令必须在下一次开始之前完成。
对于b):
我怀疑b)和c)部分之间的区别在于,该问题假定您提前知道管道具有明确定义的阶段数。例如,我们知道如果管道有3个阶段,那么第2行和第6行之间的RAR依赖性是无关紧要的。
在具有多个管道的系统中,系统可以在每个周期中获取4个指令,这使得正态度相差太远的依赖性现在成为潜在的危险。