MIPS中的数据危险(真实依赖性)

时间:2020-10-28 02:06:54

标签: assembly dependencies mips cpu-architecture hazard

I1:LW R1, 0(R4) ; R1 ← address (0+R4)
I2:ADDI R2, R1, #8 ; R2 ← R1+8
I3:MULT R3, R1, R1 ; R3 ← R1*R1
I4:SW R3, 4(R2) ; address(4+R2) ← R3 

在上面的MIPS代码中的解决方案表中,R3的真实依赖项标记为I3-> I4。根据我的理解,真正的依赖关系是RAW(写后读取)危险或流程危险。我很确定这是写后写危险,因此不是真正的依赖关系。我说对了吗?

1 个答案:

答案 0 :(得分:2)

写后写危险

否,这不是写后写危险。从微架构的角度来看,虽然I4似乎是写操作-相对于内存而言,的确是写操作-即,仅在处理器内部(流水线级和寄存器位于并进行操作)内部,存储指令有两个源操作数,没有寄存器目标。

因此,R3在被I3写入后被I4读取。 (换句话说,存储指令需要R3的值作为执行存储器存储的值; R3的值连同存储位置的地址以及大小(这里为4)一起被馈送到数据存储器。因此,这是写后读的危险。