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

时间:2016-08-27 12:01:44

标签: caching cpu-cache mesi

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

假设你有64字节的缓存行,并且你写了一个字节。你不能把“缓存行的1/64”放入缓存中,那剩下的63个字节来自哪里呢?它们必须来自主存储器(或下一级缓存)。