【问题标题】:What is False Dependency in CPU?什么是 CPU 中的错误依赖?
【发布时间】:2022-01-10 05:56:43
【问题描述】:

谁能帮我理解“错误依赖”是什么意思?

我的教授刚刚在这张幻灯片中解释了为什么我们不能在命令 1 之前运行命令 3,但为什么后来他称之为“假”?

【问题讨论】:

    标签: dependencies cpu pipeline intel cpu-architecture


    【解决方案1】:

    这是“错误的”,因为后面的指令实际上并不需要前面指令中的数据。唯一的冲突是找到一个放置结果的地方。就像幻灯片说的那样,“不是真正的数据依赖”;只有 WAR 危险才是真正的依赖关系。

    如果 CPU 发明了一个临时位置来放置结果,直到架构寄存器可用,它可以独立执行后面的指令。 必须等待这个寄存器准备好是可以避免的,因此它不是真正的依赖,它是错误的。

    寄存器重命名通常会避免WAR and WAW hazards,除非在特殊情况下,CPU 将指令视为具有来自寄存器的输入,即使结果不依赖于寄存器中的任何位。

    由于您标记了此 [intel],即使您的幻灯片不是 x86 asm,也许您更喜欢 x86 示例:

    【讨论】:

    • 您能解释一下为什么 WAR 不是错误依赖吗?我们可以使用相同的技巧...
    • @David:我认为,如果 CPU 停止运行,WAR 危险可以被视为一种错误依赖。
    猜你喜欢
    • 2017-01-01
    • 2014-07-14
    • 2021-04-09
    • 2018-04-10
    • 2019-07-12
    • 2016-06-24
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多