【问题标题】:Data hazards in hardware platforms硬件平台中的数据危害
【发布时间】:2020-06-25 13:10:03
【问题描述】:

我列出了 2 种危害类型:

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

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

【问题讨论】:

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

标签: cpu-architecture hardware-design


【解决方案1】:

在大多数 3 操作数 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 read-after-write 真正的依赖关系。

乱序 exec 还引入了 write-after-write 和 write-after-read 反依赖危害的可能性。 https://en.wikipedia.org/wiki/Hazard_(computer_architecture)#Data_hazards。但我认为,在标量有序管道中,只有真正的依赖关系才是一个问题。至少如果所有指令都具有固定的 1 周期延迟,因此不包括像 MIPS multdiv 这样编写 hi:lo 对的时髦东西。

【讨论】:

    猜你喜欢
    • 2014-06-20
    • 2014-12-07
    • 2021-04-10
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 2016-07-22
    • 2011-02-03
    • 1970-01-01
    相关资源
    最近更新 更多