Cache writings 策略

来源:互联网 发布:linux超过2t 编辑:程序博客网 时间:2024/06/05 16:04
当系统写数据到cache时,那么必须在某个时间点把数据也写到memory中,这个写入时间点的控制就是我们要讨论的cache写策略

两种基本的写策略是write-through和write-back:

write-through

CPU向cache写入数据时,同时向memory也写一份,使得cache和memory的数据保持一致。优点是简单,不会出现cache一致性的问题;缺点每次都要访问memory,速度慢,要等到写完memory才返回。


write-back

CPU更新cache数据时,只要在cache中修改一下,memory的内容要等到cache可能被别的数据代替或者系统做cache flush时,才会更新。优点是速度块;缺点是引入了cache和memory一致性问题。writeback要比write-through复杂需要,因为cache需要跟踪它已经写过的内容,然后标记为dirty,以便适当的时候写回memory中


write-alloc

换一个说法,又叫fetch on write,如果被写的数据不在cache中,那么要把data从memory装入cache中,然后再写(这就导致了write-hit)。有点类似read-misses


在ARM对内存区域映射时,会设置两个属性:bufferable和cacheable

bufferable的意思是说不必把结果写进最终目的地而只是写进中间某个buffer就可以回response,这就是上面提到的write-back;non-bufferable则是把结果写进最终的目的地才能回response,这就是上面的write-through。

Cacheable说的是进行读写的时候要去cache里查看(noncacheable就是不用去cache里查看,直接对memory进行操作)。