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