可能重复:
pause instruction in x86
英特尔Optimization Reference Manual对旋转等待循环有以下说法:
3.4.1.2旋转等待和空闲循环
奔腾4处理器引入了新的PAUSE指令;指示是 在架构上是英特尔64和IA-32处理器实现的NOP。
对于奔腾4及更高版本的处理器,此指令充当代码的提示 sequence是一个自旋等待循环。在这样的循环中没有PAUSE指令,奔腾 因为处理器,4处理器在退出循环时可能会受到严重的惩罚 可能会检测到可能的内存顺序违规。插入PAUSE指令 显着降低了违反记忆订单的可能性 提高绩效
我想了解突出显示的部分:处理器
可能会检测到可能的内存订单违规。你能解释一下这意味着什么吗?在什么情况下,在繁忙的循环中会出现这种违规,为什么使用PAUSE
有帮助?违规行为是真实的还是虚假的,以及不避免违规的后果是什么?
说明问题的一个例子很棒。