首页  >  文章  >  后端开发  >  硬件内存屏障是否可以加快原子操作的可见性?

硬件内存屏障是否可以加快原子操作的可见性?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-31 11:41:02220浏览

Do Hardware Memory Barriers Speed Up Visibility in Atomic Operations?

硬件内存屏障会影响原子操作的可见速度吗?

问题描述:

在生产者-消费者队列中,合并不必要的内存栅栏或更强的内存顺序是否可以增强原子操作的可见性?目标是以可能的吞吐量下降为代价潜在地减少延迟。

硬件内存屏障功能:

硬件安装内存栅栏以强制执行由C 内存模型。这些栅栏确保特定的内存操作按定义的顺序发生,并且对所有其他核心可见。

对原子操作可见性的影响:

虽然硬件内存屏障保证必要对于具有正确内存顺序的原子操作的可见性,它们通常不会显着影响可见性的延迟。这是因为 CPU 会优先考虑需求负载,即在需要时从内存中检索数据。

为什么 障碍不会改善延迟:

  1. 存储缓冲区耗尽:障碍不会直接影响存储缓冲区将数据提交到缓存的速度。 CPU 已尝试尽快提交到缓存,以使数据全局可见。
  2. 负载优先级: CPU 将需求负载优先于其他内存访问。加载之前的障碍只能延迟加载,而不能加速加载。
  3. 乱序执行:乱序 CPU 优先考虑最旧的优先,因此后面的加载不太可能执行在当前负载完成其请求之前填充未完成的负载缓冲区。

例外和警告:

在某些情况下,障碍可能会对可见性延迟产生轻微的次要影响:

  • 通过抢先将数据写回更高的缓存级别来减少缓存未命中损失。
  • PowerPC 非 seq_cst 操作可以启用逻辑核心之间的存储转发。

结论:

不必要的内存栅栏或更强的内存顺序通常不会改善原子操作可见性的延迟。 CPU 优化加载和存储操作,以最大程度地减少延迟,而无需依赖屏障。建议仔细分析以识别任何潜在的瓶颈并相应地优化代码。

以上是硬件内存屏障是否可以加快原子操作的可见性?的详细内容。更多信息请关注PHP中文网其他相关文章!

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