编辑 - 我想我问的问题太长了,所以我把它说得很具体。
问题:如果内存位置在 L1 缓存中并且未标记为脏。假设它有一个值 X。如果你尝试将 X 写入同一个位置会发生什么?是否有任何 CPU 会看到这样的写入是多余的并跳过它?
例如,是否存在比较两个值并丢弃冗余写回主存储器的优化?具体来说,主流处理器是如何处理这个问题的?当值是像 0 这样的特殊值时呢?如果即使对于像 0 这样的特殊值也没有这样的优化,那有什么原因吗?
动机:我们有一个可以轻松放入缓存的缓冲区。多个线程可能会通过相互回收来使用它。每次使用都涉及写入缓冲区中的n 个位置(不一定是连续的)。回收只是意味着将所有值设置为 0。每次回收时,大小 n 个位置已经为 0。在我看来(直觉上)避免如此多的冗余回写会使回收过程更快,因此是个问题。
在代码中这样做没有意义,因为分支指令本身可能会导致不必要的缓存未命中(if (buf[i]) {...} )