虚假分享会导致错误的结果吗?

时间:2015-04-13 16:23:11

标签: c++ c caching parallel-processing openmp

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

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

1 个答案:

答案 0 :(得分:7)

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

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

相关问题