6

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

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

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

4

1 回答 1

8

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

CPU可以以不同的方式执行此操作,但我不知道有任何 CPU 可以执行此操作。

于 2015-01-28T20:10:11.987 回答