原子指令可以跨越缓存行吗?

use*_*112 5 x86 assembly intel cpu-architecture

x86指令可以LOCK DEC跨越多个缓存行,还是会出现错误?

不问他们是否应该,只是它是否允许.

(我知道某些SSE指令必须在缓存边界上对齐)

Jes*_*ter 4

是的,这是允许的。你也可以尝试一下。或者阅读指令集参考:

LOCK 前缀的完整性不受内存字段对齐的影响。对于任意未对齐的字段,会观察到内存锁定。

但另请参阅:

例外情况

#AC(0) 如果启用对齐检查并且在当前特权级别为 3 时进行未对齐的内存引用。

请注意,通常不启用对齐检查。