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

引言:

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

一、LFU算法
存储系统---Cache的替换策略和写策略_第1张图片

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

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

四、数据写入Cache的问题

  • 如何保证cache与主存内容一致?

写不命中策略: 直接将数据存储至主存中,不再调入Cache中
写命中常用的三种写操作策略:

  1. 写回法:

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

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

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

存储系统---Cache的替换策略和写策略_第4张图片

五、Cache命中

  • 当CPU 访存一个字时,首先 Cache 控制逻辑根据地址判断这个字是否在 Cache 中,若在,就立即送给 CPU,称为 Cache “读命中”;否则,称为 Cache “读不命中

    • 通常有两种方法解决 Cache 的“读不命中”情况:其一,将主存中该字所在的数据块复制到 Cache 中,然后再把这个字传送给 CPU;其二,启动常规的主存读周期,把此字从主存读出送到 CPU,与此同时,把包含这个字的数据块从主存中读出送到 Cache 中。在以上这两种方法中,都有可能发生 Cache 中行数据的替换,即当 Cache 已没有空闲的位置容纳即将装入的新行时,只能按照某种替换算法选择某一旧行被新行替换掉。
  • 当 CPU 访存一个字时,Cache 控制逻辑根据地址判断这个字是否在 Cache 中,若不在,称为 Cache“写不命中”,此时,直接将该字写入主存中,且不再调入 Cache;否则,称为 Cache“写命中

    • 对于 Cache 的“写命中”通常也有两种方法进行处理:其一,CPU 的写操作既对Cache 也对主存进行,保证主存总是有效的,称为“写贯穿策略”;其二,CPU 的写操作只对Cache 进行,仅当此 Cache 行被替换时,相应的主存内容才被修改,称为“写回策略

关于写命中和写未命中,这里拿其他存储器举个例子,就是相当于你磁盘或者内存上的某块存储区域之前有没有写过数据,如果有,这次再写到相同的区域叫写命中(覆盖),如果写到其他区域,叫写未命中。在数据恢复方面,如果写命中了,那之前的数据被覆盖,就很难再恢复回来,如果写未命中,那么之前的数据就容易被找回。

你可能感兴趣的:(计算机组成原理)