MESI 协议。写入缓存未命中。为什么需要主存取值?

MESI protocol. Write with cache miss. Why needs main memory value fetch?

我想知道 MESI 使用 写入未命中分配策略 写入的协议实现。假设我们有写请求并且没有缓存行的其他副本的缓存未命中。这个 diagram 表示下一步是从主内存(或二级缓存)中获取值,存储它并将缓存行标记为 M(已修改)。我想新值存储在缓存块中。问题是:为什么我们需要从主存中获取数据的步骤? 为什么我们不能简单地将新值写入第一个找到的缓存行中 I (无效) state/replace 最老的缓存行并将其标记为 M (已修改)?

感谢您的帮助!

假设你有 64 字节的缓存行,你写了一个字节。你不能把“1/64ths of a cache line”放入缓存,那么剩下的63字节从哪里来呢?它们必须来自主内存(或下一级缓存)。