缓存中的直写方案

Write-through scheme in caches

引用 Henessey 和 Patterson 的话说,“写入的另一个关键方面是写入未命中时发生的情况。我们首先获取 记忆中的街区的话。在块被取出并放入 缓存,我们可以将导致未命中的词覆盖到缓存块中。我们也 使用完整地址将字写入主存储器。"

我好像不太理解上面的说法。如果我们覆盖缓存中的单词,则意味着之前地址的索引是匹配的,但标签值不同。因此,处理器暂停并命令从内存读取并写入高速缓存。这显然会替换块之前的内容(Take 1 block contains 1 word)。那我们为什么要把这个词重新写入内存呢?我们不是刚从那里拿来的吗?

有人可以详细说明前面的陈述,以及一般的写未命中吗? write-miss 是什么意思?

Write-miss类似于read miss(你要查找的条目不在缓存中),只是操作是写。当发生写未命中时,我们几乎无能为力。一种是把miss当作读miss,我们称之为fetch-on-write,取数据修改需要更新的word。您已经提到,如果要修改数据,则没有必要从内存中获取数据。这是事实,但是缓存行由多个字组成,因此如果后续操作是读取并且它注定要读取的缓存行中的一个字,则获取整个缓存行是有益的。我相信主要的好处是易于设计。如果您遵循 write-allocate 的路径,其中为丢失的条目分配了新的缓存行并存储了新数据。现在我们必须小心,因为如果缓存行由多个词组成,比如说 4,只有一个词有正确的数据,其他都是垃圾。这需要在缓存行中维护每个单词掩码,指示哪个单词有效,哪个无效。

这是 Norman P. Jouppi 撰写的一篇关于 writre miss policies 的好文章。 http://dl.acm.org/citation.cfm?id=165154