cache写策略
写命中
全写法
当cpu对cache写命中时,必须把数据同时写入cache和主存,一般使用写缓冲
cpu不会一直在写入数据,当cpu去做其他事情的时候,会有一个控制电路,把数据从写缓冲逐一写入到主存
使用写缓冲,cpu写的速度很快,如果写操作不频繁,则效果很好,如果写操作很频繁,则可能会因为写缓冲饱和而发生阻塞
回写法
当cpu对cache命中时,之修改cache内容,不立刻写入主存,只有当此块被换出时才协写回主存
结合上一张的内容,也就是只有这个块被淘汰了,才会将数据写回到主存
因此,我们需要新增一个叫做脏位的标识,用于表示cache块是否被修改过
回写法会减少访问次数,但是存在数据不一致的安全隐患
写不命中
写分配法
当cpu对cache写不命中时,把主存中的块,掉入cache ,在cache中进行修改,通常搭配写回法使用
非写分配法
当cpu对cache写不命中时,只写入主存,不掉入cache,配合全写法使用
多级cache
现代计算机一般都使用多级cache结构
各级cache之间采用全写法和非写分配法
cache和主存之间用写回法和写分配法
计算cache容量
数据部分:cache总行数xcache行的数据部分位数
控制算法位:(有效位+替换算法位+脏位+tag标记位)xcache总行数
m路组相联,意味着每次标记同时和m行中保存的标记为比较,所以比较器需要m个