我试图找出x86处理器在遇到存储条件指令时的作用。例如,它是否会停止管道的前端并等待ROB缓冲区变为空,然后停止前端停止并执行SC?基本上它会迫使处理器变得非推测......
由于
答案 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上的维基百科页面开始(注册重命名以提及一个。只是丢弃未采取分支的结果)。