我很难找到RAW依赖关系,我们是否只能在相邻指令中查找或者也不相邻。
考虑以下汇编代码
I1: ADD R1 , R2, R2;
I2: ADD R3, R2, R1;
I3: SUB R4, R1 , R5;
I4: ADD R3, R3, R4;
在上述代码中找到写入(RAW)依赖后的读取次数。 假设ADD x,y,z = x < - y + z
我得到2依赖I2-I1和I4-I3。
答案 0 :(得分:1)
让我们说,在一条指令进入流水线之后,它将花费x
个阶段,之后任何后续指令都可以看到该指令所写的任何寄存器。
然后,您必须在每组x
个连续指令中处理RAW依赖关系。在最坏的情况下,您可以将x
作为最大值。正在筹备中的各个阶段。
现在,问题中的情况看起来像是一个HW问题,因为没有定义管道结构,所以你必须查看所有指令的RAW依赖关系,在这种情况下是: