x86 内存模型和释放获取语义
之前关于使用 MOV 实现 memory_order_release 原子存储的查询的后续内容x86 指令中,有人提出了关于如何在 x86 上实现释放和获取而不需要额外的同步机制(如栅栏或
单处理器内存排序
Intel 系统开发手册第 3A 卷第 8 章指出,在单处理器系统中,加载和写入具有一定的顺序保证:
多-处理器内存排序
但是,多处理器部分文档没有明确提及如何强制加载。它重点关注:
使用 MOV 获取和释放
了解单处理器内存排序原则至关重要。根据该手册,在访问缓存一致性共享内存时,相同的原则适用于多处理器系统。这意味着重新排序仅在每个 CPU 核心内本地发生。
一旦存储变得全局可见,它就会同时对所有核心可见,从而确保所有核心以一致的顺序观察写入。这就是为什么只需要本地屏障(例如 x86 中的 mfence)来建立顺序一致性。
内存的连贯共享视图
x86 架构维护了连贯的共享视图通过一致的缓存查看内存。英特尔对多处理机制的定义强调了内存一致性和缓存一致性的重要性,以确保所有处理器都能访问相同的数据。
其他资源
以上是x86 如何在没有显式围栏的情况下实现发布获取语义?的详细内容。更多信息请关注PHP中文网其他相关文章!