首页 >后端开发 >C++ >x86 加载和存储的原子性如何?哪些因素影响原子性?

x86 加载和存储的原子性如何?哪些因素影响原子性?

Patricia Arquette
Patricia Arquette原创
2024-12-03 03:21:10204浏览

How Atomic Are x86 Loads and Stores, and What Factors Affect Atomicity?

x86 上加载和存储的原子性

x86 架构保证对齐加载和存储的原子性,最多可达数据路径的大小内核、内存和 I/O 总线之间。这意味着单个操作将不可分割地发生,任何其他观察到它的操作都会将其视为已完全发生或根本没有发生。

在内部,CPU 可以“免费”为对齐操作实现原子性,因为数据传输通过足够宽的数据总线或通过单个消息进行。对于更广泛的访问或未对齐的操作,可能需要将操作拆分为更小的块并执行更复杂的操作。

原子操作和缓存

原子操作可以完全发生在缓存中,只要操作不跨越缓存行边界。这意味着对缓存的修改足以保证原子性。

原子读-修改-写

原子读-修改-写(RMW)操作更加困难来实施。 CPU 可以将缓存行保持在已修改状态,并在操作进行时忽略缓存一致性消息,从而使其对其他核心而言显得原子。

未对齐锁定操作

未对齐的锁定操作可能需要更复杂的硬件干预,例如在操作期间采取总线锁定以防止其他访问。

以上是x86 加载和存储的原子性如何?哪些因素影响原子性?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn