x86如何处理存储条件指令?

时间:2009-11-03 23:52:29

标签: architecture x86 intel processors

我试图找出x86处理器在遇到存储条件指令时的作用。例如,它是否会停止管道的前端并等待ROB缓冲区变为空,然后停止前端停止并执行SC?基本上它会迫使处理器变得非推测......

由于

2 个答案:

答案 0 :(得分:5)

我猜你指的是CMOVcc指令。

我不知道旧的x86处理器,但是现代的x86处理器(自从它们成为投机和乱序)就实现了条件存储:

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

条件部分可以用这样的硬件实现:

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

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

答案 1 :(得分:0)

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

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

如果你对有关拖延问题的方法感兴趣,你应该从x86上的维基百科页面开始(注册重命名以提及一个。只是丢弃未采取分支的结果)。