我试图找出 x86 处理器在遇到存储条件指令时会做什么。例如,它是否会停止流水线的前端并等待 ROB 缓冲区变空,然后才停止停止前端并执行 SC?基本上它是否会迫使处理器变得非投机性......
谢谢
我试图找出 x86 处理器在遇到存储条件指令时会做什么。例如,它是否会停止流水线的前端并等待 ROB 缓冲区变空,然后才停止停止前端并执行 SC?基本上它是否会迫使处理器变得非投机性......
谢谢
我猜你指的是说明书。CMOVcc
我不了解较旧的 x86 处理器,但现代处理器(自从它们变得投机和无序以来)将条件存储实现为:
old value = mem[dest address]
if (condition)
mem[dest address] = new value
else
mem[dest address] = old value
条件部分可以像这样在硬件中实现:
cond
|\ |
----| \|
new | \
| | dest
| |---------
| | |
__| / |
| | / |
| |/ |
|____________|
所以没有必要打破猜测。商店实际上会发生。该条件确定要写入的数据是旧值还是新值。
(通用)x86 处理器不执行您提到的任何事情。它只是获取一条又一条指令并执行它们。
其他一切都是透明处理的,很大程度上取决于您正在查看的处理器,因此您的问题没有通用答案。
如果您对解决停滞问题的方法感兴趣,您应该从x86上的 wikipedia 页面开始(注册重命名以提及一个。只需丢弃未采用分支的结果)。