缓存读写

时间:2014-04-29 03:52:01

标签: caching memory computer-architecture

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

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

  

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

所以唯一一次可以替换缓存块的内存是在读取期间,对吗?写入只会更改内存的特定位置的数据(如果是命中,这将在缓存块内),但它会使块内的实际内存位置保持不变,正确吗?

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

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

1 个答案:

答案 0 :(得分:2)

实际上,

Wikipedia解释得很清楚。一方面回写直写定义,当将数据写入后备存储(也就是主存储器)时:

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

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

  • 写入分配(也称为写入时) - 错失写入位置的数据被加载到高速缓存,然后是写入命中操作。在这种方法中,写入未命中类似于读取未命中。
  • 无写入分配(也称为写入 - 不分配或写入) - 未完成写入位置的数据未加载到高速缓存,并直接写入后备存储。在这种方法中,只缓存系统读取。