CN112948283B - 一种Cache替换方法 - Google Patents

一种Cache替换方法 Download PDF

Info

Publication number
CN112948283B
CN112948283B CN202110096298.0A CN202110096298A CN112948283B CN 112948283 B CN112948283 B CN 112948283B CN 202110096298 A CN202110096298 A CN 202110096298A CN 112948283 B CN112948283 B CN 112948283B
Authority
CN
China
Prior art keywords
cache
binary tree
reuse
replacement method
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110096298.0A
Other languages
English (en)
Other versions
CN112948283A (zh
Inventor
王会权
何益百
刘志强
王冬升
张光达
黄安文
戴华东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Defense Technology Innovation Institute PLA Academy of Military Science
Original Assignee
National Defense Technology Innovation Institute PLA Academy of Military Science
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Defense Technology Innovation Institute PLA Academy of Military Science filed Critical National Defense Technology Innovation Institute PLA Academy of Military Science
Priority to CN202110096298.0A priority Critical patent/CN112948283B/zh
Publication of CN112948283A publication Critical patent/CN112948283A/zh
Application granted granted Critical
Publication of CN112948283B publication Critical patent/CN112948283B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供一种Cache替换方法,包括:基于n路组相联Cache定义的二叉树结构和基于每个Cache块分别定义的重用信息;当程序访问某Cache块时,更新Cache块重用信息,同时基于重用信息和所述访问信息对二叉树中该Cache块对应的节点比特进行更新;本发明可以通过软件干预Cache替换方法的行为,面向人工智能等应用能有效提高Cache命中率,降低程序访存开销;同时本发明为软件提供了干预硬件替换方法的用户接口,但不需要对处理器指令集和编译器进行任何修改,使用范围大。

Description

一种Cache替换方法
技术领域
本发明涉及Cache存储器管理领域,具体涉及一种Cache替换方法。
背景技术
LRU(Least Recently Used)替换策略是最常用的Cache替换方法之一,其基本思想是:最近被使用过的Cache块有更大的概率在未来被重用,所以发生Cache块替换的时候,优先选择那些最近没有被使用过的Cache块。该方法在大部分情况下是实用且有效的。
但是,随着人工智能应用,特别是深度神经网络的兴起,传统的LRU替换方法遇到了挑战:这类算法的数据规模往往很大,使得数据的重用距离较长,数据在被重用前很可能有较长的时间没被访问。而传统Cache中采用硬件固定的LRU替换方法,没有顾及到程序的这一访存特点,从而导致本应该得到重用的Cache块过早地被替换出去,降低了Cache的命中率,进而增大了访存开销。
在文献《DOOC:一种能够有效消除抖动的软硬件合作管理Cache》(吴俊杰,杨学军,曾坤等,计算机研究与发展,2008)的1.1节中给出了一个典型例子。其他具体的例子本文档暂不赘述。
发明内容
为了解决现有技术中所存在的硬件固定替换方法无法顾及具体程序的访存特性问题,本发明提供一种Cache替换方法,包括:
硬件结构;所述硬件结构包括基于n路组相联Cache定义的二叉树结构和基于每个Cache块分别定义的重用信息;其中,所述二叉树包括n-1个节点,每个节点为一个比特;基于所述重用信息和访问信息对所述二叉树对应节点的比特进行修改;
当被引用的块在缓存中不存在时,基于比特值确定最近几次内存引用期间都没有被访问的块;
将所述没有被访问的块从缓存中删除;同时将被引用的块加入所述缓存中,同时对二叉树节点比特进行修改;
其中,所述二叉树对应节点的比特,基于本发明提供的基于二叉树的伪LRU更新逻辑进行修改;
所述更新逻辑,包括:
当程序访问某Cache块时,接收所述Cache的访问信息;
基于重用信息和所述访问信息对所述二叉树对应节点的比特进行更新。
优选的,所述重用信息包括:预期重用计数器和保留信号;
所述预期重用计数器用于当对应Cache块被访问时进行计数;
所述保留信号用于存储对应Cache是否被保留。
优选的,所述预期重用计数器被映射到全局地址空间。
优选的,所述重用计数器在系统复位时被赋予初值。
优选的,所述基于重用信息和所述访问信息对所述二叉树对应节点的比特进行更新,还包括:
基于所述访问信息修改对应Cache块所对应的预期重用计数器;
基于所述保留信号值对所述二叉树节点比特进行修改。
优选的,所述修改对应Cache块所对应的预期重用计数器包括:
如果所述Cache块对应的预期重用计数器大于0,则预期重用计数器在该Cache块被访问时减1,否则保持0。
优选的,所述基于所述保留信号值对所述二叉树节点比特进行修改,包括:
如果所述二叉树节点左分支对应的所有Cache块的保留信号都为1,则所述比特置为1;
如果所述二叉树节点右分支对应的所有Cache块的保留信号都为1,则所述比特置为0;
优选的,所述基于重用信息和所述访问信息对所述二叉树对应节点的比特进行更新,之前包括:
如果保留信号对应路的预期重用计数器的值大于0,则对应保留信号置为1,否则,置为0。
与现有技术相比,本发明的有益效果为:
本发明提供一种Cache替换方法,能够通过软件干预Cache替换方法的行为,面向人工智能等应用能有效提高Cache命中率,降低程序访存开销。
附图说明
图1为基于二叉树的伪LRU替换方法对应的数据结构;
图2为增加了预期访问机制的伪LRU替换方法数据结构;
图3为传统伪LRU算法的二叉树硬件结构;
图4为在图3基础上增加了预期访问机制的伪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、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上仅为本发明的实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均包含在申请待批的本发明的权利要求范围之内。

Claims (8)

1.一种Cache替换方法,其特征在于,包括:
硬件结构;所述硬件结构包括基于n路组相联Cache定义的二叉树结构和基于每个Cache块分别定义的重用信息;其中,所述二叉树包括n-1个节点,每个节点为一个比特;基于所述重用信息和访问信息对所述二叉树对应节点的比特进行修改;
当被引用的块在缓存中不存在时,基于比特值确定最近几次内存引用期间都没有被访问的块;
将所述没有被访问的块从缓存中删除;同时将被引用的块加入所述缓存中,同时对二叉树节点比特进行修改;
其中,所述二叉树对应节点的比特,基于更新逻辑进行修改;
所述更新逻辑,包括:
当程序访问某Cache块时,接收所述Cache的访问信息;基于重用信息和所述访问信息对所述二叉树对应节点的比特进行更新。
2.如权利要求1所述的替换方法,其特征在于,所述重用信息包括:预期重用计数器和保留信号;
所述预期重用计数器用于当对应Cache块被访问时进行计数;
所述保留信号用于存储对应Cache是否被保留。
3.如权利要求2所述的替换方法,其特征在于,所述预期重用计数器被映射到全局地址空间。
4.如权利要求3所述的替换方法,其特征在于,所述重用计数器在系统复位时被赋予初值。
5.如权利要求2所述的替换方法,其特征在于,所述基于重用信息和所述访问信息对所述二叉树对应节点的比特进行更新,还包括:
基于所述访问信息修改对应Cache块所对应的预期重用计数器;
基于所述保留信号值对所述二叉树节点比特进行修改。
6.如权利要求5所述的替换方法,其特征在于,所述修改对应Cache块所对应的预期重用计数器包括:
如果所述Cache块对应的预期重用计数器大于0,则预期重用计数器在该Cache块被访问时减1,否则保持0。
7.如权利要求5所述的替换方法,其特征在于,所述基于所述保留信号值对所述二叉树节点比特进行修改,包括:
如果所述二叉树节点左分支对应的所有Cache块的保留信号都为1,则所述比特置为1;
如果所述二叉树节点右分支对应的所有Cache块的保留信号都为1,则所述比特置为0。
8.如权利要求1所述的替换方法,其特征在于,所述基于重用信息和所述访问信息对所述二叉树对应节点的比特进行更新,之前包括:
如果保留信号对应路的预期重用计数器的值大于0,则对应保留信号置为1,否则,置为0。
CN202110096298.0A 2021-01-25 2021-01-25 一种Cache替换方法 Active CN112948283B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110096298.0A CN112948283B (zh) 2021-01-25 2021-01-25 一种Cache替换方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110096298.0A CN112948283B (zh) 2021-01-25 2021-01-25 一种Cache替换方法

Publications (2)

Publication Number Publication Date
CN112948283A CN112948283A (zh) 2021-06-11
CN112948283B true CN112948283B (zh) 2024-03-08

Family

ID=76236438

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110096298.0A Active CN112948283B (zh) 2021-01-25 2021-01-25 一种Cache替换方法

Country Status (1)

Country Link
CN (1) CN112948283B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116737609A (zh) * 2022-03-04 2023-09-12 格兰菲智能科技有限公司 选择替换缓存行的方法及其装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7516275B2 (en) * 2006-04-25 2009-04-07 International Business Machines Corporation Pseudo-LRU virtual counter for a locking cache
US9715461B2 (en) * 2014-03-03 2017-07-25 Kabushiki Kaisha Toshiba Cache memory control circuit and processor
US20200301840A1 (en) * 2019-03-20 2020-09-24 Shanghai Zhaoxin Semiconductor Co., Ltd. Prefetch apparatus and method using confidence metric for processor cache

Also Published As

Publication number Publication date
CN112948283A (zh) 2021-06-11

Similar Documents

Publication Publication Date Title
Jaleel et al. High performance cache replacement using re-reference interval prediction (RRIP)
EP2478442B1 (en) Caching data between a database server and a storage system
US7783836B2 (en) System and method for cache management
US5625793A (en) Automatic cache bypass for instructions exhibiting poor cache hit ratio
US7363433B2 (en) Cache member protection with partial make MRU allocation
US8250306B2 (en) Method for improving frequency-based caching algorithms by maintaining a stable history of evicted items
US7512739B2 (en) Updating a node-based cache LRU tree
US7552286B2 (en) Performance of a cache by detecting cache lines that have been reused
US7844778B2 (en) Intelligent cache replacement mechanism with varying and adaptive temporal residency requirements
US20130007373A1 (en) Region based cache replacement policy utilizing usage information
US20130311724A1 (en) Cache system with biased cache line replacement policy and method therefor
JP6630449B2 (ja) 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換
US20110320720A1 (en) Cache Line Replacement In A Symmetric Multiprocessing Computer
US8856453B2 (en) Persistent prefetch data stream settings
WO2016133521A1 (en) Application-layer managed memory cache
CN112948283B (zh) 一种Cache替换方法
CN116955213A (zh) 一种基于Caffeine优化的缓存方法及装置
CN115617712A (zh) 一种基于组相联高速缓存Cache的LRU替换算法
US7555610B2 (en) Cache memory and control method thereof
CN107562806B (zh) 混合内存文件系统的自适应感知加速方法及系统
JP2014115851A (ja) データ処理装置及びその制御方法
CN112363958A (zh) 高速缓存替换的方法及装置
US6715040B2 (en) Performance improvement of a write instruction of a non-inclusive hierarchical cache memory unit
US11372760B2 (en) Storage control device for controlling cache memory based on access frequencies
KR20040076313A (ko) 버퍼 캐시 분할 관리 방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant