Cache替换方法、装置及计算机可读存储介质与流程

文档序号:23795201发布日期:2021-02-02 08:39阅读:161来源:国知局
Cache替换方法、装置及计算机可读存储介质与流程
cache替换方法、装置及计算机可读存储介质
技术领域
[0001]
本申请涉及计算机技术,尤其涉及一种cache替换方法、装置及计算机可读存储介质。


背景技术:

[0002]
常用的最近最少使用(least recently used,lru)替换算法利用访存局部性原理,根据缓存块调入cache后的使用情况来进行决策,把最近最少使用的块替换出去。如果应用程序的工作集比高速缓冲存储器(cache memory,简称cache)空间大,或者新插入一串仅仅单次访问的数据,可能导致访问频繁的缓存块从cache被挤出。由于新插入的块在一段时间内缺少后续访问,导致整体命中率降低。这种情况下lru算法对cache的利用效率很低。
[0003]
有人提出将cache缓存块分为本地数据和远端数据两类,分别设定年龄增长速率,在每次访问的过程中,按照所属的分类对应的年龄增长速率,更新cache中的每个缓存块的年龄,并在满足替换条件时,将年龄最大的一个缓存块中存储的数据替换出去。这种方式在一些情况下能够有效降低包含cache中替换引入的包含牺牲者导致的性能损失。但由于每类缓存块年龄增长速率固定,即便新替换进入的缓存块仅被单次引用或少量引用,也需要花费较长时间,等待年龄增长到一定程度后才能被替换出cache,会降低cache命中率。
[0004]
综上所述,目前的cache替换方法有些过于简单,导致cache命中率在某种情况下偏低,降低了cache利用率。


技术实现要素:

[0005]
为解决上述技术问题,本申请实施例期望提供一种cache替换方法、装置及计算机可读存储介质。
[0006]
本申请的技术方案是这样实现的:
[0007]
第一方面,提供了一种cache替换方法,其特征在于,所述方法包括:
[0008]
获取n个预测表;其中,n取正整数,每个预测表中包含至少一个缓存块的索引信息和距离值;
[0009]
最近最少使用lru链中的第一目标缓存块被命中,按照第一更新策略更新所述n个预测表中所述第一目标缓存块的距离值;
[0010]
所述lru链中的第二目标缓存块缺失,将所述lru链中lru缓存块替换出去,按照第二更新策略更新所述n个预测表中所述lru缓存块的距离值;从所述n个预测表中获取所述第二目标缓存块的距离值,将所述第二目标缓存块插入到所述lru链中所述第二目标缓存块的距离值所指的位置。
[0011]
上述方案中,所述第一更新策略包括:将所述第一目标缓存块的距离值减去第一距离值,得到所述第一目标缓存块更新后的距离值;所述第二更新策略包括:将所述lru缓存块的距离值加上第二距离值,得到所述lru缓存块更新后的距离值;
[0012]
或者,所述第一更新策略包括:所述第一目标缓存块的距离值为距离值的下限值
时,保持所述第一目标缓存块的距离值不变;所述第二更新策略包括:所述lru缓存块的距离值为距离值的上限值时,保持所述lru缓存块的距离值不变。
[0013]
上述方案中,所述方法包括:基于缓存块的地址信息,生成n个索引信息;获取缓存块的n个初始距离值;利用至少一个缓存块的n个索引信息和n个初始距离值,构建n个预测表。
[0014]
上述方案中,所述基于缓存块的地址信息,生成n个索引信息,包括:从缓存块的地址信息中获取n个子信息;其中,每个子信息中包含缓存块的至少部分地址信息;采用预设的映射策略将缓存块的n个子信息转换成n个索引信息。
[0015]
上述方案中,从所述n个预测表中获取所述第二目标缓存块的距离值,包括:从所述第二目标缓存块的地址信息中获取n个子信息;其中,每个子信息中包含缓存块的至少部分地址信息;采用预设的映射策略将所述第二目标缓存块的n个子信息转换成n个索引信息;利用所述第二目标缓存块对应的n个索引信息,分别从所述n个预测表中获取对应的n个距离值;基于n个距离值,确定所述第二目标缓存块的距离值。
[0016]
第二方面,提供了一种cache替换装置,其特征在于,所述装置包括:
[0017]
获取单元,用于获取n个预测表;其中,n取正整数,每个预测表中包含至少一个缓存块的索引信息和距离值;
[0018]
处理单元,用于最近最少使用lru链中的第一目标缓存块被命中,按照第一更新策略更新所述n个预测表中所述第一目标缓存块的距离值;
[0019]
所述处理单元,还用于若所述lru链中的第二目标缓存块缺失,将所述lru链中lru缓存块替换出去,按照第二更新策略更新所述n个预测表中所述lru缓存块的距离值;从所述n个预测表中获取所述第二目标缓存块的距离值,将所述第二目标缓存块插入到所述lru链中所述第二目标缓存块的距离值所指的位置。
[0020]
上述方案中,所述第一更新策略包括:将所述第一目标缓存块的距离值减去第一距离值,得到所述第一目标缓存块更新后的距离值;所述第二更新策略包括:将所述lru缓存块的距离值加上第二距离值,得到所述lru缓存块更新后的距离值;
[0021]
或者,所述第一更新策略包括:所述第一目标缓存块的距离值为距离值的下限值时,保持所述第一目标缓存块的距离值不变;所述第二更新策略包括:所述lru缓存块的距离值为距离值的上限值时,保持所述lru缓存块的距离值不变。
[0022]
上述方案中,所述装置还包括:构建单元,用于基于缓存块的地址信息,生成n个索引信息;获取缓存块的n个初始距离值;利用至少一个缓存块的n个索引信息和n个初始距离值,构建n个预测表。
[0023]
上述方案中,所述构建单元,用于从缓存块的地址信息中获取n个子信息;其中,每个子信息中包含缓存块的至少部分地址信息;采用预设的映射策略将缓存块的n个子信息转换成n个索引信息。
[0024]
上述方案中,所述处理单元,用于从所述第二目标缓存块的地址信息中获取n个子信息;其中,每个子信息中包含缓存块的至少部分地址信息;采用预设的映射策略将所述第二目标缓存块的n个子信息转换成n个索引信息;利用所述第二目标缓存块对应的n个索引信息,分别从所述n个预测表中获取对应的n个距离值;基于n个距离值,确定所述第二目标缓存块的距离值。
[0025]
第三方面,一种cache替换装置,所述装置包括:处理器和配置为存储能够在处理器上运行的计算机程序的存储器,其中,所述处理器配置为运行所述计算机程序时,执行实现前述方法的步骤。
[0026]
第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其中,该计算机程序被处理器执行时实现前述方法的步骤。
[0027]
采用上述技术方案,通过预测表来管理缓存块在插入到lru链中时的距离值,保证使用频率高的缓存块不容易被替换出去,使用频率低的缓存块更容易被替换出去,lru链中保留使用频率较高的缓存块,提高了cache的命中率。
附图说明
[0028]
图1为本申请实施例中cache替换方法的流程示意图;
[0029]
图2为本申请实施例中预测表的组成结构示意图;
[0030]
图3为本申请实施例中距离值确定方法的示意图;
[0031]
图4为本申请实施例中cache替换方法的对比示意图;
[0032]
图5为本申请实施例中cache替换装置的组成结构示意图1;
[0033]
图6为本申请实施例中cache替换装置的组成结构示意图2。
具体实施方式
[0034]
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。
[0035]
cache是介于cpu(central processing unit,中央处理器)和内存之间的存储器,cpu在访问内存时,首先判断所要访问的内容是否在cache中,如果在,就称为“命中”,cpu可以直接从cache中调用要访问的内容,否则,就称为“缺失”,cpu只能去内存中调用要访问的内容,由于cache的存取速度比内存快几倍甚至十几倍,因此,对于cpu要访问的内容,通常会提前从内存中拷贝到cache中。但是,cache的存储容量较小,因此,存储在cache中缓存块的数量有限,为了提高cache的命中率,应该将使用率高的缓存块保留在cache中,使用率低的缓存块从cache中替换出去。
[0036]
本申请实施例中,使用lru算法作为替换算法,将cache缓存块进行排对构建lru链,每次lru链中被命中的缓存块会被移动至最近最多使用(most recently used,mru)位置,其他缓存块依次向lru位置方向移动一个位置。如果lru链中缓存块缺失,则按照lru算法选择lru位置上的缓存块替换出去,把新的缓存块插入到lru链中。本申请为了提高缓存块的命中效率在cache替换方法中引入了预测表,用于管理缓存块在插入到lru链中时的距离值,并提供了以下具体实施例。
[0037]
如图1所示,cache替换方法具体可以包括:
[0038]
步骤101:获取n个预测表;其中,n取正整数,每个预测表中包含至少一个缓存块的索引信息和距离值;
[0039]
步骤102:最近最少使用lru链中的第一目标缓存块被命中,按照第一更新策略更新n个预测表中第一目标缓存块的距离值;
[0040]
步骤103:lru链中的第二目标缓存块缺失,将lru链中lru缓存块替换出去,按照第
二更新策略更新n个预测表中lru缓存块的距离值;从n个预测表中获取第二目标缓存块的距离值,将第二目标缓存块插入到lru链中第二目标缓存块的距离值所指的位置。
[0041]
这里,步骤101至步骤103的执行主体可以为cache替换装置的处理器。
[0042]
本申请实施例中,预测表用于管理缓存块在插入到lru链中时的距离值,预测表中的距离值用于指示缓存块的插入位置,距离值越大表明缓存块在插入到lru链中时离mru位置越远离lru位置越近,距离值越小表明缓存块在插入到lru链中时离mru位置越近离lru位置越远。比如,假定cache采用四路组相连的方式划分,则lru链的总长度为4,距离值的取值范围为0-3,距离值为0代表mru位置,距离值为3代表lru位置。
[0043]
在一些实施例中,该方法还包括构建预测表。具体的,基于缓存块的地址信息,生成n个索引信息;获取缓存块的n个初始距离值;利用至少一个缓存块的n个索引信息和n个初始距离值,构建n个预测表。这里,可以利用cache中包含的所有缓存块构建预测表。
[0044]
该方法还包括:将新的缓存块的索引信息和距离值添加至n个预测表中,从n个预测表中删除缓存块的索引信息和距离值。也就是说,当cache中需要插入新的缓存块时,将新的缓存块的索引信息和距离值同样添加到预测表中,当预测表满时,删除距离值最大的至少部分缓存块的索引信息和距离值。
[0045]
这里,可以采用预设的映射策略将缓存块的地址信息转化为n个索引信息,每一个索引信息对应的初始距离值可以为0,将缓存块的n个索引信息分别保存到n个预测表中。这里,映射策略可以是预设的地址信息和索引信息映射关系表,或者利用映射算法利用地址信息计算得到索引信息。
[0046]
在一些实施例中,生成索引信息的方法可以包括:从缓存块的地址信息中获取n个子信息;其中,每个子信息中包含缓存块的至少部分地址信息;采用预设的映射策略将缓存块的n个子信息转换成n个索引信息。
[0047]
这里,子信息可以为全部地址信息或部分地址信息。比如,缓存块的地址信息为八位二进制数据,当n取1时,利用八位地址生成索引信息,或者利用高四位地址生成索引信息,或者利用低四位地址生成索引信息,将缓存块的索引信息和初始距离值保存至预测表中。
[0048]
当n取2时,子信息可以为高四位地址和低四位地址,利用高四位地址生成索引信息1,利用低四位地址生成索引信息2,索引信息1和初始距离值保存至预测表1中,将索引信息2和初始距离值保存至预测表2中。
[0049]
在一些实施例中,步骤102中第一更新策略包括:将所述第一目标缓存块的距离值减去第一距离值,得到所述第一目标缓存块更新后的距离值;步骤103中所述第二更新策略包括:将所述lru缓存块的距离值加上第二距离值,得到所述lru缓存块更新后的距离值。
[0050]
也就是说,每当第一目标缓存块被命时,第一缓存块的命中率便随之提高,需要减小预测表中第一缓存块的距离值,以使在采用lru算法将第一缓存块重新插入到cache中时,插入位置越靠近mru位置,使用频率高的缓存块越不容易被替换出去。
[0051]
每当第二目标缓存块缺失时,会将lru位置上的缓存块替换出去,并从预测表中获取第二缓存块的距离值,将第二缓存块插入到lru链中第二目标缓存块的距离值所指的位置,将原本第二目标缓存块的距离值所指位置以及之后位置上的缓存块依次向后移动。
[0052]
每当lru缓存块被替换出去时,lru缓存块的命中率便随之降低,需要增大lru缓存
块的距离值,以使在采用lru算法将lru缓存块重新插入到cache中时,插入到越靠近lru位置,使用频率低的缓存块越容易被替换出去。
[0053]
示例性的,第一距离值和第二距离值均为1,每次当某一缓存块被替换出时,在n个预测表中对应的距离值+1;当某一缓存块命中时,在n个预测表中对应的距离值-1。若lru链的总长度为8,单个预测表中的访问距离值取值范围可以为0-7,从n个预测表中获得n个距离值,取n个距离值的平均值作为缓存块的距离值。
[0054]
在另一些实施例中,所述第一更新策略包括:所述第一目标缓存块的距离值为距离值的下限值时,保持所述第一目标缓存块的距离值不变;所述第二更新策略包括:所述lru缓存块的距离值为距离值的上限值时,保持所述lru缓存块的距离值不变。
[0055]
也就是说,对于多次命中的缓存块,预测表中缓存块对应的距离值会不断减小,直至减小到距离值的下限值,下限值对应lru链中mru位置,多次命中的缓存块可以保持较低的距离值,如果被替换出去后再次插入到lru链中由于命中率高就不容易被替换出去。对于多次被替换出去的缓存块,预测表中缓存块对应的距离值会不断增大,直至增大到距离值的上限值,上限值对应lru链中lru位置,多次被替换出去的缓存块保持较高的距离值,再次插入到lru链中由于使用频率低会很容易被替换出去,从而保证了cache的命中率。
[0056]
在另一些实施例中,所述第一更新策略包括:将所述第一目标缓存块的距离值减去第一距离值,得到所述第一目标缓存块更新后的距离值;所述第一目标缓存块的距离值为距离值的下限值时,保持所述第一目标缓存块的距离值不变;所述第二更新策略包括:将所述lru缓存块的距离值加上第二距离值,得到所述lru缓存块更新后的距离值;所述lru缓存块的距离值为距离值的上限值时,保持所述lru缓存块的距离值不变。
[0057]
在一些实施例中,步骤103中第二目标缓存块的距离值的获取方法可以具体可以包括:从所述第二目标缓存块的地址信息中获取n个子信息;其中,每个子信息中包含缓存块的至少部分地址信息;采用预设的映射策略将所述第二目标缓存块的n个子信息转换成n个索引信息;利用所述第二目标缓存块对应的n个索引信息,分别从所述n个预测表中获取对应的n个距离值;基于n个距离值,确定所述第二目标缓存块的距离值。
[0058]
示例性的,基于n个距离值,确定所述第二目标缓存块的距离值,包括:计算n个距离值的累加和,将累加和结果作为第二目标缓存块的距离值;或者,将累加和结果除以n,将得到n个距离值的平均值作为第二目标缓存块的距离值。
[0059]
也就是说,当n为1时,将预测表中读出的距离值直接作为第二目标缓存快的距离值,当n大于1时,需要根据n个距离值计算得到第二目标缓存快的距离值。
[0060]
如图2所示,采用哈希映射将缓存块的高位地址(如高四位地址)转化为预测表1中的哈希地址1(即索引信息),采用哈希映射将缓存块的低位地址(如低四位地址)转化为预测表2中的哈希地址2(即索引信息),预测表1和预测表2中初始距离值均为0。
[0061]
相应的,在将缓存块插入到lru链中时,从预测表中获取缓存块的距离值。如图3所示,采用哈希映射将缓存块的高位地址(如高四位地址)转化为预测表1中的哈希地址1(即索引信息),获取预测表1中哈希地址1对应的距离值2;采用哈希映射将缓存块的低位地址(如低四位地址)转化为预测表2中的哈希地址2(即索引信息),获取预测表2中哈希地址2对应的距离值2,将两个预测表中获得的距离值相加,得到缓存块的距离值。
[0062]
采用上述技术方案,通过预测表来管理缓存块在插入到lru链中时的距离值,保证
使用频率高的缓存块不容易被替换出去,使用频率低的缓存块更容易被替换出去,lru链中保留使用频率较高的缓存块,提高了cache的命中率。
[0063]
为了清楚的体现本申请的技术方案的优点,给出了普通cache替换方法和本申请cache替换方法的工作流程比较示例,如图4所示。
[0064]
假定cache采用四路组相连的方式划分。next block一列表示处理器依次访问的缓存块,方框表示cache中的lru链,lru链中包括从mru位置到lru位置的四个缓存块。普通cache替换方法基于lru算法,每次lru链中被命中的缓存块会被移动至mru位置,其他缓存块依次向lru位置方向移动一个位置。如果lru链中缓存块缺失,将lru位置上的缓存块替换出去,把新的缓存块插入到mru位置。
[0065]
本申请cache替换方法在lru算法的基础上结合预测表来管理缓存块在插入到lru链中时的距离值。在缓存块序列中,a1、a2、a3、a4的重新访问距离较短,b1的重新访问距离较长。在处理器处理程序的开始,cache为空,预测表中所有缓存块的距离值都为0。随着处理器不断执行,b1频繁地在访问缺失时被替换出cache,其访问距离值也不断增加,再次被插入到cache时的插入位置不断向lru靠近,也因此能更快地被替换出cache,保证了使用频率高的其他缓存块留在cache中,提高了cache命中率。
[0066]
实施例二
[0067]
基于同一发明构思,本申请实施例还提供了一种cache替换装置,所述装置50包括:
[0068]
获取单元501,用于获取n个预测表;其中,n取正整数,每个预测表中包含至少一个缓存块的索引信息和距离值;
[0069]
处理单元502,用于最近最少使用lru链中的第一目标缓存块被命中,按照第一更新策略更新所述n个预测表中所述第一目标缓存块的距离值;
[0070]
所述处理单元502,还用于若所述lru链中的第二目标缓存块缺失,将所述lru链中lru缓存块替换出去,按照第二更新策略更新所述n个预测表中所述lru缓存块的距离值;从所述n个预测表中获取所述第二目标缓存块的距离值,将所述第二目标缓存块插入到所述lru链中所述第二目标缓存块的距离值所指的位置。
[0071]
在一些实施例中,所述第一更新策略包括:将所述第一目标缓存块的距离值减去第一距离值,得到所述第一目标缓存块更新后的距离值;所述第二更新策略包括:将所述lru缓存块的距离值加上第二距离值,得到所述lru缓存块更新后的距离值。
[0072]
在一些实施例中,所述第一更新策略包括:所述第一目标缓存块的距离值为距离值的下限值时,保持所述第一目标缓存块的距离值不变;所述第二更新策略包括:所述lru缓存块的距离值为距离值的上限值时,保持所述lru缓存块的距离值不变。
[0073]
在一些实施例中,该装置还包括:构建单元,用于基于缓存块的地址信息,生成n个索引信息;获取缓存块的n个初始距离值;利用至少一个缓存块的n个索引信息和n个初始距离值,构建n个预测表。
[0074]
在一些实施例中,构建单元,用于从缓存块的地址信息中获取n个子信息;其中,每个子信息中包含缓存块的至少部分地址信息;采用预设的映射策略将缓存块的n个子信息转换成n个索引信息。
[0075]
在一些实施例中,处理单元,用于从所述第二目标缓存块的地址信息中获取n个子
信息;其中,每个子信息中包含缓存块的至少部分地址信息;采用预设的映射策略将所述第二目标缓存块的n个子信息转换成n个索引信息;利用所述第二目标缓存块对应的n个索引信息,分别从所述n个预测表中获取对应的n个距离值;基于n个距离值,确定所述第二目标缓存块的距离值。
[0076]
采用上述cache替换装置,通过预测表来管理缓存块在插入到lru链中时的距离值,保证使用频率高的缓存块不容易被替换出去,使用频率低的缓存块更容易被替换出去,lru链中保留使用频率较高的缓存块,提高了cache的命中率。
[0077]
基于上述装置中各单元的硬件实现,本申请实施例还提供了另一种cache替换装置,如图6所示,该装置60包括:处理器601和配置为存储能够在处理器上运行的计算机程序的存储器602;
[0078]
其中,处理器601配置为运行计算机程序时,执行前述实施例中方法的步骤。
[0079]
当然,实际应用时,如图6所示,该装置60中的各个组件通过总线系统603耦合在一起。可理解,总线系统603用于实现这些组件之间的连接通信。总线系统603除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图6中将各种总线都标为总线系统603。
[0080]
在实际应用中,上述处理器可以为特定用途集成电路(asic,application specific integrated circuit)、数字信号处理装置(dspd,digital signal processing device)、可编程逻辑装置(pld,programmable logic device)、现场可编程门阵列(field-programmable gate array,fpga)、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。
[0081]
上述存储器可以是易失性存储器(volatile memory),例如随机存取存储器(ram,random-access memory);或者非易失性存储器(non-volatile memory),例如只读存储器(rom,read-only memory),快闪存储器(flash memory),硬盘(hdd,hard disk drive)或固态硬盘(ssd,solid-state drive);或者上述种类的存储器的组合,并向处理器提供指令和数据。
[0082]
在示例性实施例中,本申请实施例还提供了一种计算机可读存储介质,例如包括计算机程序的存储器602,上述计算机程序可由装置60的处理器601执行,以完成前述方法步骤。
[0083]
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0084]
本申请是参照根据本申请实施例的方法、装置和计算机程序产品的流程示意图和/或方框图来描述的。应理解可由计算机程序指令实现流程示意图和/或方框图中的每一流程和/或方框、以及流程示意图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功
能的装置。
[0085]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0086]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0087]
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1