Cache的写策略

Write-through(直写模式)在数据更新时,同时写入缓存Cache和后端存储。此模式的优点是操作简单;缺点是因为数据修改需要同时写入存储,数据写入速度较慢。

Write-back(回写模式)在数据更新时只写入缓存Cache。只在数据被替换出缓存时,被修改的缓存数据才会被写到后端存储。常见处理器大都支持write back 形式。

Write-misses写缺失的处理方式:

  1. Write allocate方式将写入位置 先读入缓存,然后再采用write-hit(缓存命中写入)操作。写缺失操作与读缺失操作类似。
  2. No-write allocate方式并不将写入位置读入缓存,而是直接将数据写入存储。这种方式下,只有读操作会被缓存。

无论是Write-through还是Write-back都可以使用写缺失的两种方式之一。只是通常Write-back采用Write allocate方式,而Write-through采用No-write allocate方式;因为多次写入同一缓存时,Write allocate配合Write-back可以提升性能;而对于Write-through则没有帮助。

Write back + Write allocate方式,对同一个cacheline,第一次写时cache miss,需要先做一次read (invalid)操作,当memory数据load到cache中之后,再将dirty 数据写入。第2次写时,直接write hit。

Write combine (写合并),访问同一个cacheline的多笔写操作(length <= cacheline size),dirty data直接 merge在一起。一般采用一个write combine buffer  (WCB)来单独实现,第1次写时,不需要从memory load原始数据。 WCB 也需要参与cache coherence的维护。

参考 https://en.wikipedia.org/wiki/Cache_(computing),针对Write-through 和write back 有以下两个流程图。

Write through

Write back

参考

https://en.wikipedia.org/wiki/Cache_(computing)

https://en.wikipedia.org/wiki/Write_combining

猜你喜欢

转载自blog.csdn.net/zgcjaxj/article/details/115001489