硬件平台中的数据隐患



我列出了两种类型的危害:

1a. EX/MEM.RegisterRd = ID/EX.RegisterRs
1b. EX/MEM.RegisterRd = ID/EX.RegisterRt
2a. MEM/WB.RegisterRd = ID/EX.RegisterRs
2b. MEM/WB.RegisterRd = ID/EX.RegisterRt

我无法理解这两个规则背后的直觉,这可以帮助我了解技术术语并解释我的概念?欢迎任何解释:)

在大多数三操作数 ISA 中(例如,像 http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html 这样的 MIPS 文档使用此约定(,rd是目标寄存器,Rs、Rt 是源寄存器。 例如add rd, rs, rt. (rs 和 rt 可能是第二和第三,或者源和第三,IDK(。

如果您正在读取最近写入的寄存器(在 ID 中((写入指令尚未达到回写阶段(,则这是 RAW 写后读的真正依赖项。

乱序 exec 还引入了写后写和读后写反依赖性危害的可能性。 https://en.wikipedia.org/wiki/Hazard_(computer_architecture(#Data_hazards. 但是在标量顺序管道中,我认为只有真正的依赖项是一个问题。 至少如果所有指令都有固定的 1 周期延迟,因此排除像 MIPSmult或编写 hi:lo 对的div这样时髦的东西。

最新更新