Cache替换算法的制作方法

文档序号:12747961阅读:2321来源:国知局
Cache替换算法的制作方法与工艺

本发明涉及存储器领域。更具体地说,本发明涉及一种通过向下递减计数的方法来统计Cache结构中数据使用次数的Cache替换算法。



背景技术:

Cache是一种根据程序局部性原则,通过小容量速度快的存储器缓存部分数据,以减少处理器对慢速大容量存储器的访问次数,从而提升处理器取指效率的机制。Cache替换算法是指当Cache缺失发生后,Cache按某种机制选中高速缓存中的某个地址进行数据更新。Cache替换算法对Cache的命中率有较大的影响。目前主流的Cache替换算法有伪随机、先进先出(FIFO——First In First Out)和最近最少使用(LRU——Least Recently Used)等。相较于伪随机和先进先出算法,LRU算法更符合程序局部性原则(当前执行的程序代码,在不久后会再次访问该代码段),Cache的命中率更高,但其硬件资源消耗非常大。

传统的LRU算法对Cache的每一路进行统计,在需要替换时,将最近最少被使用的那一路替换。由于传统LRU算法的数据使用频率统计为向上计数,故其计数器计数位宽较大,且需要额外的机制来处理计数溢出的情况。



技术实现要素:

本发明的一个目的是解决至少上述问题,并提供至少后面将说明的优点。

本发明还有一个目的是提供硬件资源消耗低的Cache替换算法。

为了实现根据本发明的这些目的和其它优点,提供了一种Cache替换算法,适用于采用组相联映射或全相联映射关系的Cache结构和存储器,所述Cache结构中设有用于存储所述存储器的数据的若干条路,采用向下递减计数的方法统计Cache结构中每一路的最近最多使用频率,当Cache结构中无所需的存储器数据,将计数值为0的路中的存储器的数据替换为新数据。

本发明所述的Cache替换算法具体包括以下步骤:

a、当所述存储器的数据映射前,对所有所述路从小到大进行编号,同时对每一路增加用于记录该路使用频率的计数器,所有所述计数器的计数值由最大值递减至0;

b、当所述存储器的数据映射至计数值最大的一路时,所有所述计数器的计数值不变,当所述存储器数据映射至当前计数值非0且非最大值的一路时,所述当前计数值变为最大值,同时所有计数值大于所述当前计数值且非0的路中的计数值减1;

c、当所述Cache结构中无所需的存储器数据时,将计数值为0的路中的数据替换为所需的数据,替换后该路的计数值变为最大值,其它各路的计数值各自减1。

优选地,所述计数器的位宽为log2N,其中N为路的个数。

优选地,所述组相联映射的Cache结构设有若干组,每一组中含有若干路,所述计数器的位宽中N为每一组中路的个数。本发明至少包括以下有益效果:

1.硬件实现简单,资源消耗减少43%:

2.硬件延时减少24%,更适合高频率设计;

3.Cache命中率与传统LRU相同,性能无损失。

本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。

附图说明

图1为本发明所述Cache算法命中率统计流程

图2为全相联映射关系的Cache结构;

图3为组相联映射关系的Cache结构

图4为本发明所述Cache替换算法应用实例图。

具体实施方式

下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。

需要说明的是,下述实施方案中所述实验方法,如无特殊说明,均为常规方法,所述试剂和材料,如无特殊说明,均可从商业途径获得;在本发明的描述中,术语“横向”、“纵向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,并不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

本发明提供一种Cache替换算法,适用于采用组相联映射或全相联映射关系的Cache结构和存储器,所述Cache结构中设有用于存储所述存储器的数据的若干条路,采用向下递减计数的方法统计Cache结构中每一路的最近最多使用频率,当Cache结构中无所需的存储器数据,将计数值为0的路中的存储器的数据替换为所需的新数据。全相联映射即存储器的任何一个地址可以映射到Cache缓存的任意地址。如图2所示,存储器0地址可映射到任意地址。组相联映射是是将Cache分为若干“组”(Set),又将“组”分为若干“路”(Way),组间与存储器进行直接映射(即通过Memory的某段地址偏移选定是哪一组),组内进行全映射。如图3所示,Cache结构为“2组2路”,存储器的“块3”(地址6、7)固定对应“组1”(3mod 2=1,2为“组”的总数),在“组1”中地址6、7可对应任何一路。

如图1所示,本发明所述的Cache替换算法具体包括以下步骤:

a、当所述存储器的数据映射前,对所有所述路从小到大进行编号,同时对每一路增加用于记录该路使用频率的计数器,所有所述计数器的计数值由最大值递减至0;

b、当所述存储器的数据映射至计数值最大的一路时,所有所述计数器的计数值不变,当所述存储器数据映射至当前计数值非0且非最大值的一路时,所述当前计数值变为最大值,同时所有计数值大于所述当前计数值且非0的路中的计数值减1;

c、当所述Cache结构中无所需的存储器数据时,将计数值为0的路中的数据替换为所需的数据,替换后该路的计数值变为最大值,其它各路的计数值各自减1。

其中,所述计数器的位宽为log2N,其中N为路的个数。

其中,所述组相联映射的Cache结构设有若干组,每一组中含有若干路,所述计数器的位宽中N为每一组中路的个数。

图4是本发明的一个应用案例的示意图。初始状态如图中Step 0所示,每路之前有2-bit(log24=2)计数器,各计数器初始值从2’b11至2’b00依次递减,2’b11表示该路使用频率最多,2’b00表示该路使用频率最低。当Cache命中发生后,如Step1所示,被命中的“Way2”其计数值变为2’b11,其它各路计数器进行递减;当Cache缺失发生,如Step 2所示,“Way 3”将被替换,其计数值变为2’b11,其它各路计数器进行递减。

尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1