虚假分享会导致错误的结果吗?
Can false sharing lead to wrong results?
据我所知,当两个 cpu 核心访问单个内存块的不同部分时,就会发生错误共享。在这种情况下,每个核心中的 L1 缓存包含不同的值。
虚假分享有什么影响?商品 CPU 是否总是检测到虚假共享?它会导致竞争条件(在内存中保留不同的缓存版本)吗?
当一个核心修改了一些数据,而另一个核心读取了一些恰好位于同一缓存行中的不相关数据时,就会发生错误共享。修改会强制第二个核心重新加载整个缓存行,即使它使用的数据没有改变。
除非缓存严重损坏,否则这不会导致任何不正确的行为。但它会对性能产生很大影响,因为缓存的数据不必要地从更高级别的缓存中获取。
据我所知,当两个 cpu 核心访问单个内存块的不同部分时,就会发生错误共享。在这种情况下,每个核心中的 L1 缓存包含不同的值。
虚假分享有什么影响?商品 CPU 是否总是检测到虚假共享?它会导致竞争条件(在内存中保留不同的缓存版本)吗?
当一个核心修改了一些数据,而另一个核心读取了一些恰好位于同一缓存行中的不相关数据时,就会发生错误共享。修改会强制第二个核心重新加载整个缓存行,即使它使用的数据没有改变。
除非缓存严重损坏,否则这不会导致任何不正确的行为。但它会对性能产生很大影响,因为缓存的数据不必要地从更高级别的缓存中获取。