存储系统---Cache的替换策略和写策略

引言:

  • Cache的工作原理要求它尽量保持最新数据。无论何种映射方式,Cache与主存之间都是一对多,当一个新的主存块需要拷贝到Cache中时,如何替换?替换策略解决了如何将数据从主存写入Cache的问题。
  • 当然,替换的策略与映射方式有关,如直接映射只能存到Cache的一个固定行,因此只能覆盖原来的内容。而全相联和组相联就存在策略问题。
  • 硬件实现的替换方法常用的有三种:
    1. 最不经常使用(LFU)算法
    2. 近期最少使用(LRU)算法
    3. 随机替换

一、LFU算法
存储系统---Cache的替换策略和写策略

  • 刚刚存入的数据容易被替换

二、LRU算法:近期最少使用算法
存储系统---Cache的替换策略和写策略
三、随机替换
存储系统---Cache的替换策略和写策略
替换算法的例题,想刷题,点这里!!!

四、数据写入Cache的问题

  • 如何保证cache与主存内容一致?
  • 常用的三种写操作策略:
  1. 写回法:

    • 只修改Cache的内容,而不立即写入主存。只有当此行被换出时才写回主存。(写未命中就存储再cache其他的地方)
    • 优点: 减少了访问主存的次数
    • 缺点:存在Cache与主存内容不一致的隐患。
    • 实现该方法时,cache每行必须配置一个修改位,以反映此行是否被cpu修改过。(在准备替换某个行时,若这个行的修改位反映了它被Cpu修改过,则先把这行数据写入主存再替换它。)
  2. 全写法,又称写透式

    • 一旦cache发生写操作,就同时将这个数据写入主存中(写未命中就直接存储主存中)
    • 优点:cache与主存的内容高度一致。而且不需要设置修改位
    • 缺点:降低了cache的功效
  3. 写一次法

    • 以写回法为基础,结合了全写法的写策略。
    • 写命中与写未命中的处理方法与写回法基本相同,只是第一次写命中时要同时写入主存。

存储系统---Cache的替换策略和写策略

写命中和写未命中,个人理解就是你磁盘或者内存上的存储区域之前有没有写过数据,如果有,这次再写到相同的区域叫写命中,如果写到其他区域,叫写未命中,在数据恢复方面,如果写命中了,那之前的数据被覆盖,就很难再恢复回来,如果写未命中,那么之前的数据就容易被找回。