缓存读取和写入

Fro*_*raw 1 memory caching computer-architecture

我正在阅读有关缓存写入策略的信息,我只想知道我是否正确理解了这一点。

当读取导致缓存未命中时,它将获取该内存块并将其放入缓存中。缓存写入未命中意味着程序要写入的内存位置不在缓存内,对吗?所以我正在阅读write-back的描述,根据维基百科如下:

最初,只对缓存进行写入。对后备存储的写入被推迟,直到包含数据的缓存块即将被新内容修改/替换。

那么缓存块的内存只能在读取期间被替换,对吗?并且写入只会更改内存特定位置中的数据(如果命中,这将在缓存块内),但它会使块内的实际内存位置保持不变,对吗?

这是我对它的理解,我只是想确保它是正确的。

编辑:等等,我猜在缓存未命中期间它也会替换/更新缓存块....

Mac*_*ser 5

实际上,维基百科解释得很好。一方面,回直写定义了数据何时写入后备存储(也称为主内存):

  • 直写 – 对缓存和后备存储同步进行写入。
  • 回写(或后写)——最初,只对缓存进行写入。对后备存储的写入被推迟,直到包含数据的缓存块即将被新内容修改/替换。

另一方面,写分配非写分配定义了如何处理写未命中,即来自后备存储的数据是否被带入缓存:

  • 写入分配(又名写入时获取)——未写入位置的数据被加载到缓存中,然后是写入命中操作。在这种方法中,写未命中类似于读未命中。
  • 无写入分配(又名写入无分配或写入)——未写入位置的数据不会加载到缓存中,而是直接写入后备存储。在这种方法中,只缓存系统读取。