cache替换算法

直接映射方式

特点:每个分区的数据块只能映射到cache的对应行;

优点:算法简单,可以通过数据块地址寻址到cache中对应的行;硬件电路开销小

缺点:cache不满的情况下,也可能出现冲突

全相联映射方式

特点:主存中的数据块可以映射到cache的任意行

优点:cache已满的情况下才有可能出现冲突,需要进行cache的主存数据块替换;

缺点:硬件电路实现较为复杂

常用的替换算法:LRU、FIFO先进先出、随机替换、LFR算法

    组相联映射方式

    特点:是全连接和直接映射方式的一种折中方式,分区中的数据块可以可以映射到相应组内的任意行;cache未满时就有可能出现冲突,需要进行cache中主存数据块的替换;

    常用的替换算法:LRU、FIFO先进先出、随机替换、LFR算法

    先进先出FIFO算法

    基本思想:将主存数据块载入cache的先后顺序,作为替换顺序,在需要进行替换时,选择最先载入主存数据块的cache行进行替换。

    实现方式:记录每个cache行载入主存数据块的时刻(或称时间戳)

    算法特点:实现比较方便(开销小),但未考虑程序的访问局部性,因为最先进入cache的主存数据块也可能是目前经常要用的,因此,可能导致cache的命中率不高;

    如果再有数据写入的时候,最先被替换的就是t1时刻写入行1被替换;

    LFU算法(最不经常用算法)

    基本思想:将被命中访问次数最少的cache行淘汰

    实现方式:需要为每个cache行设置一个淘汰计算器,新载入的cache从0开始计数,每命中访问1次,被访问的cache行的淘汰计数器加1.需要进行替换时,计数值最小的cache行被替换。

    如果有多个行的淘汰计算器的值相同,可采用随机替换的方式;

    算法特点:硬件成本较高,每行需要一个淘汰计算器,淘汰计算器从cache上电后就开始记录,但不能严格反映出近期的访问情况。(不同时间段,代码访问的频次可能不一样)。

    LRU算法(近期最少用算法)

    基本思路:将近期内最少被命中访问过的cache行淘汰;

    实现方式:与LFU算法类似,也需要为每个cache行设置一个淘汰计算器。不同点是cache行每被访问1次,该cache行的计算器被清零,其他计算值不为空的cache行各自的计算器被加1.需要进行替换时,计数值最大的cache行被替换。

    随机替换

    基本思路:从cache行中任选一行进行替换;

    替换算法优缺点

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    杜金新技术博客

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值