x86 上加载和存储的原子性
x86 架构保证对齐加载和存储的原子性,最多可达数据路径的大小内核、内存和 I/O 总线之间。这意味着单个操作将不可分割地发生,任何其他观察到它的操作都会将其视为已完全发生或根本没有发生。
在内部,CPU 可以“免费”为对齐操作实现原子性,因为数据传输通过足够宽的数据总线或通过单个消息进行。对于更广泛的访问或未对齐的操作,可能需要将操作拆分为更小的块并执行更复杂的操作。
原子操作和缓存
原子操作可以完全发生在缓存中,只要操作不跨越缓存行边界。这意味着对缓存的修改足以保证原子性。
原子读-修改-写
原子读-修改-写(RMW)操作更加困难来实施。 CPU 可以将缓存行保持在已修改状态,并在操作进行时忽略缓存一致性消息,从而使其对其他核心而言显得原子。
未对齐锁定操作
未对齐的锁定操作可能需要更复杂的硬件干预,例如在操作期间采取总线锁定以防止其他访问。
以上是x86 加载和存储的原子性如何?哪些因素影响原子性?的详细内容。更多信息请关注PHP中文网其他相关文章!