掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及Cache存储器管理领域,具体涉及一种基于二叉树的伪LRU硬件结构、更新逻辑和Cache替换方法。

背景技术

LRU(Least Recently Used)替换策略是最常用的Cache替换方法之一,其基本思想是:最近被使用过的Cache块有更大的概率在未来被重用,所以发生Cache块替换的时候,优先选择那些最近没有被使用过的Cache块。该方法在大部分情况下是实用且有效的。

但是,随着人工智能应用,特别是深度神经网络的兴起,传统的LRU替换方法遇到了挑战:这类算法的数据规模往往很大,使得数据的重用距离较长,数据在被重用前很可能有较长的时间没被访问。而传统Cache中采用硬件固定的LRU替换方法,没有顾及到程序的这一访存特点,从而导致本应该得到重用的Cache块过早地被替换出去,降低了Cache的命中率,进而增大了访存开销。

在文献《DOOC:一种能够有效消除抖动的软硬件合作管理Cache》(吴俊杰,杨学军,曾坤等,计算机研究与发展,2008)的1.1节中给出了一个典型例子。其他具体的例子本文档暂不赘述。

发明内容

为了解决现有技术中所存在的硬件固定替换方法无法顾及具体程序的访存特性问题,本发明提供一种基于二叉树的伪LRU硬件结构,包括:

基于n路组相联Cache定义的二叉树结构和基于每个Cache块分别定义的重用信息;

其中,所述二叉树包括n-1个节点,每个节点为一个比特;基于所述重用信息和访问信息对所述二叉树对应节点的比特进行修改。

优选的,所述重用信息包括:预期重用计数器和保留信号;

所述预期重用计数器用于当对应Cache块被访问时进行计数;

所述保留信号用于存储对应Cache是否被保留。

优选的,所述预期重用计数器被映射到全局地址空间。

优选的,所述重用计数器在系统复位时被赋予初值。

基于同一种发明构思,本发明还提供一种基于二叉树的伪LRU更新逻辑,包括:

基于本发明提供的基于二叉树的伪LRU硬件结构:

当程序访问某Cache块时,接收所述Cache的访问信息;

基于重用信息和所述访问信息对所述二叉树对应节点的比特进行更新。

优选的,所述基于重用信息和所述访问信息对所述二叉树对应节点的比特进行更新,还包括:

基于所述访问信息修改对应Cache块所对应的预期重用计数器;

基于所述保留信号值对所述二叉树节点比特进行修改。

优选的,所述修改Cache块对应的预期重用计数器包括:

如果所述Cache块对应的预期重用计数器大于0,则预期重用计数器在该Cache块被访问时减1,否则保持0。

优选的,所述基于所述保留信号值对所述二叉树节点比特进行修改,包括:

如果所述二叉树节点左分支对应的所有Cache块的保留信号都为1,则所述比特置为1;

如果所述二叉树节点右分支对应的所有Cache块的保留信号都为1,则所述比特置为0;

优选的,所述基于重用信息和所述访问信息对所述二叉树对应节点的比特进行更新,之前包括:

如果保留信号对应路的预期重用计数器的值大于0,则对应保留信号置为1,否则,置为0。

基于同一种发明构思,本发明还提供一种Cache替换方法,包括:

基于本发明提供的基于二叉树的伪LRU硬件结构:

当被引用的块在缓存中不存在时,基于比特值确定最近几次内存引用期间都没有被访问的块;

将所述没有被访问的块从缓存中删除;同时将被引用的块加入所述缓存中,同时对二叉树节点比特进行修改;

其中,所述二叉树对应节点的比特,基于本发明提供的基于二叉树的伪LRU更新逻辑进行修改。

与现有技术相比,本发明的有益效果为:

本发明提供一种基于二叉树的伪LRU硬件结构、更新逻辑和Cache替换方法,能够通过软件干预Cache替换方法的行为,面向人工智能等应用能有效提高Cache命中率,降低程序访存开销。

附图说明

图1为基于二叉树的伪LRU替换方法对应的数据结构;

图2为增加了预期访问机制的伪LRU替换方法数据结构;

图3为传统伪LRU算法的二叉树硬件结构;

图4为在图3基础上增加了预期访问机制的伪LRU的二叉树硬件结构。

具体实施方式

针对上述背景中“硬件固定替换方法无法顾及具体程序的访存特性”这一问题,本发明提出了一种基于二叉树的伪LRU硬件结构、更新逻辑和Cache替换方法;在全局地址空间中为每一个Cache块新增了一个“预期重用计数器”,计数器可由软件进行赋值。该计数器表示了对应Cache块预期会被重用的次数。本发明所述替换方法在发生Cache块替换时保证以下两点:一是当Cache块实际被重用的次数没有达到计数器值之前,不会被LRU策略替换;二是若Cache块的实际被重用次数达到或者超过了计数器值,则按正常的LRU策略执行,不对原替换方法做任何改变。

本发明与其他的Cache替换方法相比,有如下三个基本特点:

一是本发明仅在原LRU策略的基础上对策略进行调整,而不是一个全新的替换方法。LRU策略已在实践中被证明对大多数应用是有效的,且对应的伪LRU算法硬件实现代价较小,本发明可最大限度地保留LRU策略的这些优点。

二是本发明具体实施过程中,是否需要对原LRU策略进行调整、调整的力度有多大,是软件可控的。本发明要对原LRU策略进行调整的动机就是解决“硬件固定替换方法无法顾及具体程序的访存特性”这一问题,而对于具体程序的访存特性,软件是可以预判的。因此,本发明通过为软件提供接口,使其能够对替换方法施加影响,最大限度地保证了替换方法的灵活性。

三是本发明不需要处理器新增专门的指令进行支持,不需要修改编译器。所有处理器和编译器都能够在不做任何改变的情况下,与采用了该替换方法的Cache子系统进行良好衔接。即本发明最大限度地确保了与现有处理器和编译器兼容。

实施例1:

图1显示的是基于二叉树的伪LRU替换方法对应的数据结构。这种结构中如果具有n路组相联的高速缓存,则需要n-1个存储器单元来保存块的最近访问次序,本实施例以一个4路组相联的Cache为例进行介绍,本实施例的二叉树结构对应的是一个4路组相联的Cache,采用了3个比特构成的二叉树结构,这3个比特用于保存块的历史信息,分别为:AB/CD比特、A/B比特、C/D比特。这三个比特的更新方式分别为:(1)若程序访问了“Cache块A”或者“Cache块B”,则AB/CD比特置1;若访问了“Cache块C”或者“Cache块D”,则AB/CD比特置0;(2)若程序访问了“Cache块A”则A/B比特置1;若访问了“Cache块B”则A/B比特置0;(3)若访问了“Cache块C”则C/D比特置1;若访问了“Cache块D”则C/D比特置0。即二叉树结构中各个比特的更新方式可以概括为:若访存操作落到了某比特的左分支,则该比特置1,若访存操作落到了某比特的右分支,则该比特置0。

很明显,如果被引用的块在缓存中不存在,就会发生缓存失效,历史数据位也不会改变。在这种情况下,伪LRU替换方法会做出一个替换决策,找出必须从缓存中取出哪个块用于替换。这个决定是基于历史比特中存储的历史信息做出的。举例说明,当AB/CD比特、A/B比特和C/D比特的历史值分别为0、0和1,且假设A块和B块在最近几次内存引用期间都没有被访问,这时由于AB/CD比特的值为0,那么伪LRU替换方法如何决定引用最少的是“Cache块A”还是“Cache块B”?因为A/B比特的值是0,所以在最近的内存引用期间被访问的是“Cache块B”,因此,“Cache块A”是最近引用最少的,应该从缓存中删除。

图2显示的是增加了预期访问机制的伪LRU替换方法数据结构。与图1的数据结构相比,本发明为每一路相联的Cache块增加了一个“预期重用计数器”(即ref_cnt_A/B/C/D),该计数器被映射到全局地址空间,软件可通过写操作指令对其进行赋值。该计数器的更新规则如下:当某个Cache块被访问时,其对应的“预期重用计数器”若大于0则自动减1,直至清零。清零后,除非被软件再次赋值,否则计数器的值保持为0不变。除“预期重用计数器”外,还为每一路增加了一位保留信号,该保留信号的值按如下方式确定:如果对应路的“预期重用计数器”的值大于0,在对应保留信号被置1,否则对应保留信号的值为0。基于上述保留信号,我们对二叉树三个比特的更新方式分别做了如下调整:

(1)若程序访问了“Cache块A”或“Cache块B”,或者A和B对应的保留信号均为1,则AB/CD比特置1;若访问了“Cache块C”或“Cache块D”,或者C和D对应的保留信号均为1,则AB/CD比特置0;

(2)若访问了“Cache块A”,或者A对应的保留信号为1,则A/B比特置1;若访问了“Cache块B”,或者B对应的保留信号为1,则A/B比特置0;

(3)若访问了“Cache块C”,或者C对应的保留信号为1,则C/D比特置1;若访问了“Cache块D”,或者D对应的保留信号为1,则C/D比特置0。

即二叉树结构中各个比特的更新方式调整为:若访存操作落到了某比特的左分支,或者左分支对应的保留信号均为1,则该比特置1,若访存操作落到了某比特的右分支,或者右分支对应的保留信号均为1,则该比特置0。即本发明中二叉树中各个节点的值不仅记录了访存的历史信息,还反映了哪些路需要保留。而哪些路需要保留,又是由软件可赋值的“预期重用计数器”决定的,因此,本发明实现了一种软件可控的LRU替换。图3显示的是传统伪LRU算法的硬件结构,该结构包含了两个部分:一是n-1位的二叉树节点比特,其中n为Cache相联路数;二是一个LRU更新逻辑,该逻辑接收Cache的访问信息,并按照图1所示的规则对n-1位的二叉树节点比特进行更新。图4显示的是增加了预期访问机制的伪LRU替换方法硬件结构图,相比于图3,该图所示结构为每个相联的Cache块(相联度为n)增加了“预期重用计数器”,每个计数器都可被软件赋值,并接收Cache的访问信息,以及按照图2所示的规则更新自己的值。另外,图4所示的LRU更新逻辑在更新二叉树节点比特的时候,需要同时考虑访问信息和“预期重用计数器”的值,并按照图2所示的规则进行更新。

使用本发明体提供的方案使得程序员能够通过软件干预Cache替换方法的行为,面向人工智能等应用能有效提高Cache命中率,降低程序访存开销。

本发明为软件提供了干预硬件替换方法的用户接口,但不需要对处理器指令集和编译器进行任何修改,使用范围大。

实施例2:

该发明的一个最佳实施例是通过在一个基于二叉树的伪LRU替换方法中,增加“预期重用计数器”,将其改进成为了软件可控的伪LRU替换方法。

首先回顾基于二叉树的伪LRU替换方法的具体实现:其基本思想是通过一个二叉树结构,去模拟LRU算法的执行结果。对于n路组相联的Cache,需要n-1比特的LRU位,如图1,是面向四路组相联Cache的伪LRU例子,假设四个相联的Cache块分别为A,B,C,D,该算法通过三个比特去记录各个Cache块的访问信息:AB/CD比特、A/B比特、C/D比特。对于每次访存操作,根据访问了哪个Cache块更新上述三个比特的值,更新方式如实施例中对图1的说明。根据上述规则,某个比特值为1则说明其左分支最近被访问过,LRU替换块应从其右分支找,反之亦然。根据这一规律,可以通过二叉树各个节点比特的值找到LRU需要替换的分支。因此,该算法可按下表1查找被替换的分支:

表1LRU策略被替换分支查找表

以上是一种常用的伪LRU替换方法实现方式,根据本发明的原理,我们可按如下步骤对本发明进行改进(见图2、图3与图4):

(1)为每个缓存行设置“预期重用计数器(ref_cnt)”,该计数器被映射到全局地址空间,可通过软件进行赋值(如图2)。

(2)设计“预期重用计数器(ref_cnt)”的更新方式:当某个缓存行被访问时,其对应的“预期重用计数器”自动减1,直至清零。清零后,除非被软件再次赋值,否则计数器的值保持为0不变(如实施例1对图2的说明)。

(3)更新伪LRU策略的执行模式:当访问计数器为零的时候,不影响原LRU算法的执行过程。当预期访问计数器大于零时,可确保其对应的缓存行不会被LRU算法替换。具体如实施例图2的说明。

按上述方法改进后的伪LRU策略在硬件实现上与传统策略的异同如图3及其在实施例中对图3和4的说明。

本发明通过设置软件可配置的“预期重用计数器”,使得程序员可对原“硬件固定的Cache替换方法”进行干预的方法。该方法可有助于提升Cache的命中率,并提升了灵活性。

通过将上述“预期重用计数器”映射至全局地址空间的方法。该方法规避了对处理器指令集和编译器的修改,提升了兼容性。

上述对“基于二叉树的伪LRU替换方法”进行改进的实施例。在该实施例中,只需增加“预期重用计数器”,并简单地修改二叉树节点比特的更新条件,即可实现软件可控的LRU,实现简单。

显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上仅为本发明的实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均包含在申请待批的本发明的权利要求范围之内。

相关技术
  • 一种基于二叉树的伪LRU硬件结构、更新逻辑和Cache替换方法
  • 高速Cache中一种树状结构的改进型LRU算法的替换策略
技术分类

06120112901331