如何解决MIPS中的数据危险真实依赖性
I1:LW R1,0(R4) ; R1 ← address (0+R4)
I2:ADDI R2,R1,#8 ; R2 ← R1+8
I3:MULT R3,R1 ; R3 ← R1*R1
I4:SW R3,4(R2) ; address(4+R2) ← R3
在上面的MIPS代码中的解决方案表中,R3的真实依赖项标记为I3-> I4。根据我的理解,真正的依赖关系是RAW(写后读取)危险或流程危险。我很确定这是写后写危险,因此不是真正的依赖关系。我说对了吗?
解决方法
写后写危险
否,这不是写后写危险。从微架构的角度来看,虽然I4似乎是写操作-相对于内存而言,的确是写操作-即,仅在处理器内部(流水线级和寄存器位于并进行操作)内部,存储指令有两个源操作数,没有寄存器目标。
因此,R3在被I3写入后被I4读取。 (换句话说,存储指令需要R3的值作为执行存储器存储的值; R3的值连同存储位置的地址以及大小(这里为4)一起被馈送到数据存储器。因此,这是写后读的危险。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。