1

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

谢谢

4

2 回答 2

5

我猜你指的是说明书。CMOVcc

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

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

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

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

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

于 2009-11-04T20:19:33.177 回答
0

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

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

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

于 2009-11-04T00:03:39.600 回答