当线程只写入同一个缓存块时是否也会出现错误共享?

Does false sharing also occur when threads only write to the same cache block?

如果我们有两个核心在同一缓存块中读取和写入不同的内存位置,则两个核心都被迫一次又一次地重新加载该缓存块,尽管这在逻辑上是没有必要的。这就是我们所说的虚假分享。

但是,如果内核从不从该缓存块中读取,而只写入怎么办?想象一下,两个核心只是在同一个缓存块中设置了一些位,但它们不必从块中读取,因为它们设置的位信息只在程序的后期阶段需要。

错误共享是否仅在内核在同一块上读取和写入时才会发生,或者如果两者都只写入它也会发生?

是的,那时也是。为了写入高速缓存行中的字节子集,必须首先读取该行,然后修改,然后写回。逻辑写入通常是物理读写。

CPUs 可以 以不同的方式做到这一点,但我不知道有任何 CPU 这样做。