【问题标题】:How does x86 handle store conditional instructions?x86 如何处理存储条件指令?
【发布时间】:2023-04-09 06:32:01
【问题描述】:

我试图找出 x86 处理器在遇到存储条件指令时会做什么。例如,它是否会停止流水线的前端并等待 ROB 缓冲区变空,然后才停止停止前端并执行 SC?基本上它是否会迫使处理器变得非投机性......

谢谢

【问题讨论】:

    标签: architecture x86 intel processors


    【解决方案1】:

    我猜你指的是CMOV<em>cc</em> 指令。

    我不知道旧的 x86 处理器,但现代的(自从它们变得投机和无序以来)将条件存储实现为:

    old value = mem[dest address]
    if (condition) 
        mem[dest address] = new value
    else
        mem[dest address] = old value
    

    条件部分可以像这样在硬件中实现:

          cond
        |\ |
    ----| \|
    new |  \
        |   |    dest
        |   |---------
        |   |     |
      __|  /      |
     |  | /       |
     |  |/        |
     |____________|
    

    所以没有必要打破猜测。事实上,商店发生。条件决定了要写入的数据是旧值还是新值。

    【讨论】:

      【解决方案2】:

      (通用)x86 处理器不执行您提到的任何事情。它只是获取一条又一条指令并执行它们。

      其他一切都是透明处理的,很大程度上取决于您正在查看的处理器,因此您的问题没有通用答案。

      如果您对解决停滞问题的方法感兴趣,您应该从x86 上的维基百科页面开始(注册重命名以提及一个。只需丢弃未采用分支的结果)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-11
        • 1970-01-01
        • 2012-06-14
        • 1970-01-01
        • 2018-10-23
        • 2017-05-10
        • 2020-01-22
        相关资源
        最近更新 更多