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

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

Patricia Arquette
发布: 2024-12-03 03:21:10
原创
198 人浏览过

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

x86 上加载和存储的原子性

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

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

原子操作和缓存

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

原子读-修改-写

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

未对齐锁定操作

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

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板