错误的共享会导致错误的结果吗?

Can false sharing lead to wrong results?

本文关键字:错误 结果 共享      更新时间:2023-10-16

据我所知,当两个CPU内核访问单个内存块的不同部分时,就会发生错误共享。在这种情况下,每个内核中的 L1 缓存包含不同的值。

虚假分享有什么影响?商用 CPU 是否总是检测到错误共享?它会导致争用条件(在内存中保留不同的缓存版本)吗?

当一个内核修改某些数据,而另一个内核读取恰好位于同一缓存行中的一些不相关数据时,就会发生错误共享。修改强制第二个内核重新加载整个缓存行,即使它使用的数据保持不变。

这不会导致任何不正确的行为,除非缓存严重损坏。但它可能会对性能产生很大的影响,因为缓存的数据是不必要地从更高级别的缓存中获取的。