写入后读取(RAW)危险

时间:2015-09-27 21:58:51

标签: pipeline computer-architecture

我很难找到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。

1 个答案:

答案 0 :(得分:1)

让我们说,在一条指令进入流水线之后,它将花费x个阶段,之后任何后续指令都可以看到该指令所写的任何寄存器。

然后,您必须在每组x个连续指令中处理RAW依赖关系。在最坏的情况下,您可以将x作为最大值。正在筹备中的各个阶段。

现在,问题中的情况看起来像是一个HW问题,因为没有定义管道结构,所以你必须查看所有指令的RAW依赖关系,在这种情况下是:

  1. I2和I1 over R1
  2. I3和I1 over R1
  3. I4和I2 over R3
  4. I4和I3 over R4