cache写策略

Write Through (完全写入)

CPU向cache写入数据时,同时向memory也写一份,使cache和memory的数据保持一致。优点是简单,缺点是每次都要访问memory,速度比较慢。


Write Back (回写)

CPU更新cache时,只是把更新的cache区标记一下,并不同步更新memory。只是在cache区要被新进入的数据取代时,才更新 memory。这样做的原因是考虑到很多时候cache存入的是中间结果,没有必要同步更新memory。优点是CPU执行的效率提高,缺点是实现起来技术比较复杂。

区别

完全写入(Write through)是一种实时同步的缓存机制,即每当缓存中的数据被更新后,这次改动会立即更新到计算机内存中。

而回写(Write Back)的机制则是一种非实时同步的缓存机制,也就是说,当CPU存取的数据在缓存中进行修改时,并不会马上将缓存中改变的数据实时同步到内存。回写相对于完全写入来说,是一个更为复杂的缓存使用策略。这种策略常被称作“延时写入”。使用该回写策略时,CPU每次对缓存中的数据做出修改,都会对修改的数据块做上一个“记号”,表示该数据被修改过。这些数据被称作“脏”数据,每当有CPU要求缓存中不存在的数据时,这些脏数据就会写入到内存中。所以,一旦 CPU请求一个缓存中不存在的数据时,就需要两次访问内存的操作,第一次是在内存中检索该数据,第二次则是将脏数据写入到内存中,为新数据让位。


Write allocate policy


在有cache的单机系统中,通常有两种写策略:write through和write back。这两种写策略都是针对写命中(write hit)情况而言的:write through是既写cache也写main memory;write back是只写cache,并使用dirty标志位记录cache的修改,直到被修改的cache 块被替换时,才把修改的内容写回main memory。

那么在写失效(write miss)时,即所要写的地址不在cache中,该怎么办呢?一种办法就是把要写的内容直接写回main memory,这种办法叫做no write allocate policy;另一种办法就是把要写的地址所在的块先从main memory调入cache中,然后写cache,这种办法叫做write allocate policy。

猜你喜欢

转载自eriol.iteye.com/blog/1184786