CN116897335A - 一种缓存替换方法和装置 - Google Patents
一种缓存替换方法和装置 Download PDFInfo
- Publication number
- CN116897335A CN116897335A CN202180093712.0A CN202180093712A CN116897335A CN 116897335 A CN116897335 A CN 116897335A CN 202180093712 A CN202180093712 A CN 202180093712A CN 116897335 A CN116897335 A CN 116897335A
- Authority
- CN
- China
- Prior art keywords
- cache
- cache line
- access
- line
- value
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000014759 maintenance of location Effects 0.000 claims description 35
- 230000002829 reductive effect Effects 0.000 description 12
- 230000000977 initiatory effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例公开了一种缓存替换方法和装置,涉及计算机技术领域,改善了现有技术中缓存的利用率不高的问题。具体方案为:缓存控制器获取访问请求和第一访问次数;访问请求包括请求访问的目的地址,第一访问次数为预先确定的访问请求请求访问的缓存行会被访问的次数;缓存控制器基于目的地址,查询缓存,若目的地址未命中缓存中的任意一个缓存行,且缓存中存在第二缓存行,缓存控制器采用第一缓存行替换第二缓存行,并将第一缓存行对应的计数器的值初始化;其中,第二缓存行为访问次数达到第二访问次数的缓存行,第二访问次数为预先确定的第二缓存行会被访问的次数。
Description
本申请实施例涉及计算机技术领域,尤其涉及一种缓存替换方法和装置。
高速缓冲存储器cache是一种特殊的存储器,用于存储中央处理器(central processing unit,CPU)频繁访问的数据,以提高CPU的访问速度。但是,由于cache的存储空间有限,因此合理的缓存替换策略能够有效的提高cache的利用率。
现有的缓存替换一般通过先进先出(first input first output,FIFO)策略、最近最久未使用(the least recently used,LRU)策略、或随机策略等方法实现缓存替换。但是,现有的缓存替换策略不够灵活,无法准确的控制每个缓存行cache line被替换的时间点,导致cache的利用率不够高。
发明内容
本申请实施例提供一种缓存替换方法和装置,可以较为准确的控制每个cache line被替换的时间点,能够提高cache的利用率。
为达到上述目的,本申请实施例采用如下技术方案:
本申请实施例的第一方面,提供一种缓存替换方法,该缓存包括多个缓存行cache line,每个cache line对应一个计数器,该方法包括:缓存控制器获取访问请求和第一访问次数;该访问请求包括请求访问的目的地址,该第一访问次数为预先确定的第一cache line会被访问的次数,该第一cache line为上述访问请求请求访问的cache line;上述缓存控制器基于上述目的地址,查询缓存,若该目的地址未命中缓存中的任意一个cache line,且缓存中存在第二cache line,上述缓存控制器采用第一cache line替换第二cache line,并将第一cache line对应的计数器的值初始化;其中,第二cache line为访问次数达到第二访问次数的cache line,该第二访问次数为预先确定的第二cache line会被访问的次数。基于本方案,在对cache中的cache line进行替换时,通过将访问次数达到预先确定的访问次数的cache line替换出去,能够较为准确的控制每个cache line被替换的时间点,降低cache被误替换的概率,提高cache的利用率。
可选的,上述第一访问次数可以携带在访问请求中。
可以理解的,由于在一些专用领域中,数据会被访问的次数是可以预见的,因此通过计数器维护cache line被访问的次数,如果需要进行缓存替换,通过将cache中访问次数达到预先确定的访问次数的cache line替换出去,从而不仅能够降低误替换发生的概率,而且能够准确的控制每个cache line被替换的时间点,提升cache的利用率。
可选的,本申请实施例中的访问次数可以为读取次数,也可以为写入次数,还可以既包括读取次数又包括写入次数。
可选的,上述第一访问次数可以通过页表或者寄存器配置或其他方式下发给缓存控制器。
结合第一方面,在一种可能的实现方式中,在上述第二cache line对应的计数器初始化时的值为上述第二访问次数的情况下,上述第二cache line的访问次数达到上述第二访问次数为上述第二cache line对应的计数器的值为0。基于本方案,在将第二cache line从内存写入cache中时,如果将第二cache line对应的计数器的值初始化为第二访问次数,那么该第二cache line每被访问一次,该第二cache line对应的计数器的值减一,当该第二cache line对应的计数器的值为0时,确定第二cache line的访问次数达到第二访问次数,从而能够准确的控制第二cache line的访问次数,以及第二cache line被替换的时间点。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,在上述第二cache line对应的计数器初始化时的值为0的情况下,上述第二cache line的访问次数达到上述第二访问次数为上述第二cache line对应的计数器的值为上述第二访问次数。基于本方案,在将第二cache line从内存写入cache中时,如果将第二cache line对应的计数器的值初始化为0,那么该第二cache line每被访问一次,该第二cache line对应的计数器的值加一,当该第二cache line对应的计数器的值为第二访问次数时,确定第二cache line的访问次数达到第二访问次数,从而能够准确的控制第二cache line的访问次数,以及第二cache line被替换的时间点。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,若上述目的地址在缓存中命中,上述方法还包括:在第一cache line对应的计数器初始化时的值为第一访问次数的情况下,将该第一cache line对应的计数器的值减一;或者,在第一cache line对应的计数器初始化时的值为0的情况下,将第一cache line对应的计数器的值加一。基于本方案,通过为缓存中的每个cache line设置一个计数器,cache line每被访问一次,缓存控制器控制计数器进行相应的计数,从而能够在该cache line被访问的次数到达预先确定的访问次数时,如果需要进行缓存替换,可以优先将该访问次数到达预先确定的访问次数的cache line替换出去,从而能够较为准确的控制每个cache line被替换的时间点,降低cache被误替换的概率,提高cache的利用率。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,在上述目的地址未命中缓存中的任意一个cache line,且缓存中不存在第二cache line情况下,上述方法还包括:若确定缓存中存在第三cache line,缓存控制器采用第一cache line替换第三cache line,并将第一cache line对应的计数器的值初始化;其中,第三cache line为缓存中滞留时长超过预设时长的cache line。基于本方案,在进行缓存替换时,如果cache中不存在第二cache line,可以将cache中长期滞留的第三cache line替换出去,改善访问次数设置的不准确,导致cache line长期滞留在cache中影响cache利用率的问题。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,上述缓存中的每个cache line对应一个滞留域,上述方法还包括:缓存控制器周期性的扫描缓存中的每个cache line,每扫描到一次cache line,缓存控制器将该cache line对应的滞留域的值加一;cache line每被访问一次,缓存控制器将该cache line对应的滞留域的值清零。基于本方案,可以通过为每个cache line设置滞留域,确定每个cache line在cache中滞留的时长,滞留域的数值越大,代表该滞留域对应的cache line滞留的时间越长。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,上述第三cache line对应的滞留域的值超过预设阈值。基于本方案,在缓存中不存在第二cache line情况下,可以通过将缓存中长期滞留的cache line替换出去,能够进一步提高cache的利用率。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,在上述目的地址未命中缓存中的任意一个cache line,且缓存中不存在上述第二cache line及上述第三cache line的情况下,上述方法还包括:缓存控制器确定待替换cache line,采用第一cache line替换待替换cache line,并将第一cache line对应的计数器的值初始化。基于本方案,目的地址未命中cache时,如果需要进行缓存替换,但cache中所有cache line被访问的次数均未达到预先确定的访问次数,而且没有长期滞留的cache line,那么缓存控制器可以确定待替换的cache line,并将该待替换的cache line替换出去,以提高处理器的访问速度。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,上述缓存控制器确定待替换cache line,包括:缓存控制器采用先进先出FIFO策略、最近最少使用LRU策略、或随机策略,确定待替换cache line。基于本方案,通过FIFO策略、LRU策略、或随机策略,可以确定cache中的待替换cache line,通过将该待替换的cache line替换出去,能够提高处理器的访问速度。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,上述方法还包括:处理器获取第一访问次数;处理器向上述缓存控制器发送所述第一访问次数。基于本方案,处理器可以通过软件下发预先确定的每个cache line会被访问的次数,使得缓存控制器可以获知每个cache line会被访问的总次数,从而缓存控制器在通过计数器维护每个cache line被访问的次数时,可以在cache line被访问的次数到达预先确定的访问次数时,优先将该cache line替换出去,从而能够降低cache被误替换的概率,提高cache的利用率。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,上述访问请求为读请求或写请求。基于本方案,当访问次数为读取次数时,处理器每发起读请求读取一次cache line,该cache line对应的计数器会进行相应的计数,从而缓存控制器能够确定该cache line被读取的总次数。当访问次数为写入次数时,处理器每发起写请求写入一次cache line,该cache line对应的计数器会进行相应的计数,从而缓存控制器能够确定该cache line被写入的总次数。当访问次数既包括读取次数又包括写入次数时,处理器每发起读请求读取一次cache line,该cache line对应的计数器会进行相应的计数,处理器每发起写请求写入一次cache line,该cache line对应的计数器也会进行相应的计数,从而缓存控制器能够确定该cache line被读取及被写入的总次数。
本申请实施例的第二方面,提供一种缓存替换装置,该缓存包括多个缓存行cache line,每个cache line对应一个计数器,缓存替换装置包括:缓存控制器,用于获取访问请求和第一访问次数;该访问请求包括请求访问的目的地址,该第一访问次数为预先确定的第一cache line会被访问的次数,第一cache line为访问请求请求访问的cache line;缓存控制器,还用于基于目的地址,查询缓存,若目的地址未命中缓存中的任意一个cache line,且缓存中存在第二cache line,缓存控制器采用第一cache line替换第 二cache line,并将第一cache line对应的计数器的值初始化;其中,该第二cache line为访问次数达到第二访问次数的cache line,第二访问次数为预先确定的第二cache line会被访问的次数。
结合第二方面,在一种可能的实现方式中,在上述第二cache line对应的计数器初始化时的值为第二访问次数的情况下,第二cache line的访问次数达到第二访问次数为第二cache line对应的计数器的值为0。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,在上述第二cache line对应的计数器初始化时的值为0的情况下,第二cache line的访问次数达到第二访问次数为第二cache line对应的计数器的值为第二访问次数。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,若上述目的地址在缓存中命中,上述缓存控制器,还用于:在第一cache line对应的计数器初始化时的值为第一访问次数的情况下,将第一cache line对应的计数器的值减一;或者,在第一cache line对应的计数器初始化时的值为0的情况下,将第一cache line对应的计数器的值加一。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,在上述目的地址未命中缓存中的任意一个cache line,且缓存中不存在第二cache line情况下,上述缓存控制器,还用于:若确定缓存中存在第三cache line,采用第一cache line替换第三cache line,并将第一cache line对应的计数器的值初始化;其中,第三cache line为缓存中滞留时长超过预设时长的cache line。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,上述缓存中的每个cache line对应一个滞留域,缓存控制器,还用于:周期性的扫描缓存中的每个cache line,每扫描到一次cache line,缓存控制器将该cache line对应的滞留域的值加一;cache line每被访问一次,缓存控制器将该cache line对应的滞留域的值清零。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,上述第三cache line对应的滞留域的值超过预设阈值。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,在上述目的地址未命中缓存中的任意一个cache line,且缓存中不存在上述第二cache line及上述第三cache line的情况下,缓存控制器,还用于:确定待替换cache line,采用第一cache line替换待替换cache line,并将第一cache line对应的计数器的值初始化。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,上述缓存控制器,具体用于采用先进先出FIFO策略、最近最少使用LRU策略、或随机策略,确定上述待替换cache line。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,上述缓存替换装置还包括处理器,该处理器,用于:获取第一访问次数;向缓存控制器发送该第一访问次数。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,上述访问请求为读请求或写请求。
上述第二方面的效果描述可以参考第一方面的效果描述,在此不再赘述。
本申请实施例的第三方面,提供一种电子设备,该电子设备包括缓存、缓存控制 器及处理器,该缓存包括多个缓存行cache line,每个cache line对应一个计数器;该处理器,用于向缓存控制器发送访问请求和第一访问次数;访问请求包括请求访问的目的地址,第一访问次数为预先确定的第一cache line会被访问的次数,第一cache line为所述访问请求请求访问的cache line;缓存控制器,用于获取该访问请求和第一访问次数;基于目的地址,查询缓存,若目的地址未命中所述缓存中的任意一个cache line,且缓存中存在第二cache line,缓存控制器采用第一cache line替换第二cache line,并将第一cache line对应的计数器的值初始化;其中,第二cache line为访问次数达到第二访问次数的cache line,第二访问次数为预先确定的所述第二cache line会被访问的次数。
图1为本申请实施例提供的一种计算系统的结构示意图;
图2为本申请实施例提供的一种缓存替换方法的流程示意图;
图3为本申请实施例提供的另一种计算系统的结构示意图;
图4为本申请实施例提供的另一种缓存替换方法的流程示意图;
图5为本申请实施例提供的另一种缓存替换方法的流程示意图;
图6为本申请实施例提供的另一种缓存替换方法的流程示意图;
图7为本申请实施例提供的另一种缓存替换方法的流程示意图;
图8为本申请实施例提供的一种电子设备的组成示意图。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。在本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c,或,a和b和c,其中a、b和c可以是单个,也可以是多个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。比如,本申请实施例中的第一访问次数中的“第一”和第二访问次数中的“第二”仅用于区分不同的访问次数。本申请实施例中出现的第一、第二等描述,仅作示意与区分描述对象之用,没有次序之分,也不表示本申请实施例中对设备个数的特别限定,不能构成对本申请实施例的任何限制。
需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
高速缓冲存储器cache是位于CPU与内存之间的临时存储器,cache的容量比内存小但交换速度快,能够平衡CPU和内存之间速度不匹配的问题。
cache中一般存储CPU频繁访问的数据,能够提高CPU的访问速度。当CPU发出内存访问请求时,会先查看cache内是否有请求数据。如果CPU请求的数据在cache中命中,可以直接返回该数据,无需访问内存。如果CPU请求的数据在cache中未命中,那么要先把内存中的相应数据写入缓存,再将其返回给CPU。
但是,由于cache的容量有限,如果CPU请求的数据在cache中未命中,而且cache中有空闲缓存行cache line,那么可以将CPU请求的数据由内存载入cache中。如果CPU请求的数据在cache中未命中,而且cache中没有空闲的cache line,那么可以通过合理的缓存替换策略,对cache中的cache line进行替换,以提高cache的利用率。
一种缓存替换策略是通过先进先出(first input first output,FIFO)、最近最久未使用(the least recently used,LRU)、或随机法RAND进行缓存替换。例如,采用FIFO将最早载入cache的cache line进行替换。再例如,采用LRU将最近最少使用的cache line进行替换。再例如,采用随机法,随机选择一条cache line进行替换。
但是,采用FIFO策略和随机策略有可能将近期会被再次用到的cache line替换出去,而将近期不会被用到的cache line滞留在cache中,造成cache的利用率较低,影响CPU的访问速度。LRU策略虽然可以识别近期使用最少的cache line,但是该缓存替换策略不够灵活,无法准确的控制每个cache line被替换的时间点,导致cache的利用率不够高。
另一种缓存替换策略,通过每个cache line的历史信息预测该cache line未来是否会被再次读取,如果硬件预测器认为该cache line不会被再次读取,那么在对cache中的cache line进行替换时,可以优先将该cache line进行替换。
但是,基于历史信息预测cache line是否会被再次读取的可靠性较低,偶然性较大,无法与业务本身的特点结合,因此,无法较为精确的控制每个cache line被替换的时间点。
为了改善现有技术中的缓存替换策略不够灵活,无法准确的控制每个cache line被替换的时间点,导致cache的利用率不够高的问题,本申请实施例提供一种缓存替换方法,该方法能够较为准确的控制每个cache line被替换的时间点,提高cache的利用率。
本申请实施例提供的缓存替换方法可以应用于图1所示的计算系统,如图1所示,该计算系统包括CPU、缓存cache和内存,cache中包括缓存控制器,cache的所有硬件控制逻辑均由缓存控制器实现。
当CPU发出访问请求后,cache控制器基于访问请求中的目的地址查看cache是否有请求数据,如果CPU请求的数据在cache中命中,可以直接返回该数据,无需访问内存。如果CPU请求的数据在cache中未命中,而且确定要将CPU请求的数据载入cache,那么可以在cache中选择待替换的cache line,并采用内存中基于目的地址获取的cache line替换cache中的待替换cache line。
需要说明的是,当CPU请求的数据在cache中未命中时,若需要对cache中的数据进行替换,数据替换的单位为缓存行cache line。即cache与内存之间的数据交换的粒度为cache line。
如图1所示,为了较为精确的控制cache line被替换的时间点,提升cache的利用 率,降低cache line被误替换的概率,本申请实施例为每个cache line设置一个计数器,该计数器用于维护该cache line被访问的次数。
示例性的,在一些专用的领域,数据会被访问的次数在一定程度是可以预见的。比如,人工智能(artificial intelligence,AI)训练中,可以将训练集分成32个mini batch,并将其部署在32个计算节点(比如,AI core),那么权重就会被32个计算节点各读取一次,即该数据被读取的次数总共为32次。当该数据被读取32次后,如果需要进行缓存替换,就可以优先将这些数据从cache中替换出去,因此能够准确的控制每个cache line被替换的时间点,提升cache的利用率。
可选的,本申请实施例中的cache可以由静态随机存取存储器(static random-access memory,SRAM)构成。
可选的,cache可以集成在CPU上,也可以集成在内存上,还可以独立设置。图1仅以cache独立于CPU和内存为例进行示意。
结合图1,如图2所示,为本申请实施例提供的一种缓存替换方法,该缓存替换方法包括以下步骤:
S201、缓存控制器获取访问请求和第一访问次数。
该访问请求包括请求访问的目的地址,该第一访问次数为预先确定的第一cache line会被访问的次数,该第一cache line为缓存控制器获取的访问请求请求访问的cache line。
可选的,缓存控制器获取的第一访问次数可以携带在访问请求中,也可以不携带在访问请求中,本申请实施例对此并不限定。
可选的,缓存控制器获取访问请求可以包括:缓存控制器接收来自处理器的访问请求。
可选的,上述访问请求可以为读请求,也可以为写请求,本申请实施例对此并不限定。
可选的,上述第一访问次数可以为预先确定的第一cache line会被读取的次数。或者,上述第一访问次数也可以为预先确定的第一cache line会被写入的次数。或者,上述第一访问次数还可以为预先确定的第一cache line会被读取的次数,以及第一cache line会被写入的次数的总和。
本申请实施例中,cache中的每个cache line对应一个计数器,该计数器用于对该cache line被访问的次数进行计数。例如,CPU请求访问的第一cache line每被访问一次,该第一cache line对应的计数器会进行计数,当该第一cache line被访问的次数达到第一访问次数时,如果需要进行缓存替换,就可以优先将该第一cache line替换出去。
示例性的,当上述第一访问次数为预先确定的第一cache line会被读取的次数时,第一cache line对应的计数器用于对该第一cache line被读取的次数进行计数。当上述第一访问次数为预先确定的第一cache line会被写入的次数时,第一cache line对应的计数器用于对该第一cache line被写入的次数进行计数。当上述第一访问次数为预先确定的第一cache line会被读取及写入的次数时,第一cache line对应的计数器用于对该第一cache line被读取以及被写入的次数进行计数。
可选的,在上述步骤S201之前还可以包括:处理器可以通过软件下发每个cache line会被访问次数(access counter,AC)。例如,处理器获取第一访问次数,并通过软件向缓存控制器下发第一访问次数。
示例性的,上述第一访问次数可以是程序编程人员预先确定的第一cache line会被访问的次数,也可以是通过软件算法预先确定的第一cache line会被访问的次数。例如,编程人员在申请内存时,可以将第一访问次数传参传下来,在操作系统建立页表的时候,将第一访问次数写入到页表中,在CPU或者加速器发出访问请求,请求访问该页表对应的物理地址时,可以从页表中获取第一访问次数,并发送给缓存控制器。也就是说,本申请实施例中可以通过软件提前预测数据未来会被访问的次数,并通过页表或者寄存器配置或其他方式下发该访问次数,从而使得缓存控制器能够基于每个cache line会被访问的次数,确定该cache line是否可以被替换。
例如,如图3所示,CPU可以通过内存管理单元(memory management unit,MMU)将访问次数AC带出,发送给缓存控制器。可选的,访问次数也可以通过其他方式下发,例如,也可以是加速器通过系统内存管理单元(system memory management unit,SMMU)将访问次数AC带出,该加速器可以为神经网络处理器(network process unit,NPU)、图形处理器(graphics processing unit,GPU)、或数字信号处理器(digital signal processing,DSP)等处理器,本申请实施例对此并不限定。
S202、缓存控制器基于目的地址,查询缓存。
示例性的,缓存控制器可以基于访问请求中的目的地址,查询缓存,确定请求访问的数据是否在cache中命中。若请求访问的数据在cache中命中,将该数据返回给CPU。若请求访问的数据在cache中未命中,确定cache中未存储请求访问的数据。
可选的,在缓存控制器确定目的地址未命中cache中的任意一个cache line,而且cache中没有空闲的cache line的情况下,如果需要将CPU请求访问的数据存入cache中,可以进一步确定cache中是否存在访问次数到达预先确定的访问次数的cache line,如果cache中存在访问次数到达预先确定的访问次数的cache line,该方法还可以包括步骤S203。
S203、若目的地址未命中缓存中的任意一个cache line,且缓存中存在第二cache line,缓存控制器采用第一cache line替换第二cache line,并将第一cache line对应的计数器的值初始化。
其中,第二cache line为访问次数达到第二访问次数的cache line,第二访问次数为预先确定的第二cache line会被访问的次数。
可选的,在第二cache line对应的计数器初始化时的值为第二访问次数的情况下,上述第二cache line的访问次数达到第二访问次数是指第二cache line对应的计数器的值为0。
例如,以第二访问次数为预先确定的第二cache line会被读取的次数,该第二cache line会被读取的次数AC为32为例。如图3所示,在将第二cache line载入缓存中时,可以将第二cache line对应的计数器的值初始化为32,该第二cache line每被读取一次,该第二cache line对应的计数器的值相应的减一。当该第二cache line对应的计数器的值为0时,确定该第二cache line的读取次数达到第二访问次数,因此该第二cache line可能不会再被读取,进而如果需要进行缓存替换,可以将该第二cache line替换出去。 需要说明的是,以将第二cache line从内存载入缓存中时,将第二cache line对应的计数器的值初始化为32为例,缓存每向处理器返回一次该第二cache line中的数据,即为该第二cache line被读取一次,那么该第二cache line对应的计数器的值减一。当该第二cache line对应的计数器的值减为0时,确定第二cache line的访问次数达到第二访问次数32。
可选的,在第二cache line对应的计数器初始化时的值为0的情况下,上述第二cache line的访问次数达到第二访问次数是指第二cache line对应的计数器的值为第二访问次数。
例如,以第二访问次数为预先确定的第二cache line会被读取的次数,该第二cache line会被读取的次数为32为例。在将第二cache line载入缓存中时,可以将第二cache line对应的计数器的值初始化为0,该第二cache line每被读取一次,该第二cache line对应的计数器的值相应的加一。当该第二cache line对应的计数器的值为32时,确定该第二cache line的读取次数达到第二访问次数,因此该第二cache line可能不会再被读取,进而如果需要进行缓存替换,可以将该第二cache line替换出去。
可以理解的,本申请实施例在对cache中的cache line进行替换时,优先替换的是cache中访问次数达到预先确定的访问次数的cache line。由于在一些专用领域中,数据会被访问的次数是可以预见的,因此通过计数器维护cache line被访问的次数,如果需要进行缓存替换,可以将cache中访问次数达到预先确定的访问次数的cache line替换出去,从而不仅能够降低误替换发生的概率,而且能够准确的控制每个cache line被替换的时间点,提升cache的利用率。
可选的,缓存控制器采用第一cache line替换第二cache line时,可以基于访问请求中的目的地址,在内存中获取第一cache line,并用第一cache line替换第二cache line写入缓存中。
可选的,缓存控制器在将第二cache line替换为第一cache line后,可以将第一cache line对应的计数器的数值初始化为0,也可以将第一cache line对应的计数器的数值初始化为第一访问次数,还可以将第一cache line对应的计数器的数值初始化为其他数值,本申请实施例对此并不限定。本实施例仅以在cache line从内存载入缓存中时,将cache line对应的计数器初始化为0或该cache line对应的访问次数为例进行说明。可以理解的,计数器初始化的值不同,对应的计数策略可能不同。
例如,在将cache中的第二cache line替换为第一cache line后,如果将第一cache line对应的计数器的值初始化为0,那么该第一cache line每被访问一次,缓存控制器将第一cache line对应的计数器的值加一,当第一cache line对应的计数器的值到达第一访问次数时,确定该第一cache line不会再被访问,如果需要进行缓存替换,可以优先将该第一cache line替换出去。
再例如,在将cache中的第二cache line替换为第一cache line后,如果将第一cache line对应的计数器的值初始化为第一访问次数,那么该第一cache line每被访问一次,缓存控制器将第一cache line对应的计数器的值减一,当第一cache line对应的计数器的值到达0时,确定该第一cache line不会再被访问,如果需要进行缓存替换,可以优先将该第一cache line替换出去。
可选的,缓存控制器将第二cache line替换为第一cache line,将第一cache line对应的计数器的值初始化以后,缓存控制器可以向处理器返回第一cache line中处理器请求的数据,并将该第一cache line对应的计数器的值加一或减一。后续当处理器再次访问第一cache line时,每访问一次第一cache line,该第一cache line对应的计数器的值相应的加一或减一。可以理解的,缓存控制器中的cache line每被处理器访问一次,该cache line对应的计数器的值将加一或减一。
本申请实施例在将cache line从内存载入缓存中时,缓存控制器会对该cache line对应的计数器进行初始化。可选的,每个cache line对应的计数器初始化的值可以为0,也可以为预先确定的该cache line会被访问次数,当然也可以为其它数值,本申请实施例对此并不限定。本申请实施例仅以cache line初始化的值为0或预先确定的该cache line会被访问次数为例进行说明。
可以理解的,本申请实施例在进行缓存替换时,通过将替换后的cache line对应的计数器的值初始化,该cache line每被访问一次,计数器进行相应的计数,从而能够在该cache line被访问的次数到达预先确定的访问次数时,如果需要进行缓存替换,可以优先将该访问次数到达预先确定的访问次数的cache line替换出去,从而能够较为准确的控制每个cache line被替换的时间点,降低cache被误替换的概率,提高cache的利用率。
可选的,本申请实施例还提供一种缓存替换方法,如图4所示,若确定目的地址在cache中命中,该方法在上述步骤S201-S202之后还可以包括步骤S204或S205。
S204、在第一cache line对应的计数器初始化时的值为第一访问次数的情况下,缓存控制器将第一cache line对应的计数器的值减一。
示例性的,如果步骤S201中的访问请求请求访问的目的地址在cache中命中,即缓存中存储了访问请求请求的数据,那么该数据所在的第一cache line每被访问一次,缓存控制器对第一cache line对应的计数器进行相应的计数。
可选的,在第一cache line对应的计数器初始化时的值为第一访问次数的情况下,若目的地址在cache中命中,那么访问请求请求访问的第一cache line会被访问一次,缓存控制器将该第一cache line对应的计数器的值减一。
可以理解的,当第一cache line对应的计数器的值减为0时,缓存控制器确定该第一cache line的访问次数达到预先确定的访问次数。
S205、在第一cache line对应的计数器初始化时的值为0的情况下,缓存控制器将第一cache line对应的计数器的值加一。
可选的,在第一cache line对应的计数器初始化时的值为0的情况下,若目的地址在cache中命中,那么访问请求请求访问的第一cache line会被访问一次,缓存控制器将该第一cache line对应的计数器的值加一。
可以理解的,当第一cache line对应的计数器的值达到第一访问次数时,缓存控制器确定该第一cache line的访问次数达到预先确定的访问次数。
本申请实施例提供的缓存替换方法,通过为缓存中的每个cache line设置一个计数器,cache line每被访问一次,缓存控制器控制计数器进行相应的计数,从而能够在该cache line被访问的次数到达预先确定的访问次数时,如果需要进行缓存替换,可以优 先将该访问次数到达预先确定的访问次数的cache line替换出去,从而能够较为准确的控制每个cache line被替换的时间点,降低cache被误替换的概率,提高cache的利用率。
可选的,为了防止访问次数设置的不够准确,导致cache line长期滞留在cache中,本申请实施例还提供一种缓存替换方法,如图5所示,在上述步骤S201-S202以后该方法还可以包括以下步骤:
S206、在目的地址未命中缓存中的任意一个cache line,且缓存中不存在第二cache line情况下,若确定缓存中存在第三cache line,缓存控制器采用第一cache line替换第三cache line,并将第一cache line对应的计数器的值初始化。
其中,第三cache line为缓存中滞留时长超过预设时长的cache line。
可选的,在目的地址未命中cache时,如果需要进行缓存替换,但cache中所有cache line被访问的次数均未达到预先确定的访问次数,那么可以将cache中长期滞留的第三cache line替换出去。也就是说,在进行缓存替换时,如果所有cache line被访问的次数均未达到预先确定的访问次数,那么这些cache line未来都有可能被访问。但是有可能是因为预先确定的访问次数设置的不够准确,导致一些cache line被访问的次数未达到预先确定的访问次数,这将造成这些cache line长期滞留在cache中,因此在cache中不存在第二cache line的情况下,可以将cache中长期滞留的第三cache line替换出去,改善访问次数设置的不准确,导致cache line长期滞留在cache中影响cache利用率的问题。
可选的,上述第三cache line的滞留时长可以通过为每个cache line设置滞留域的方式进行维护。示例性的,缓存控制器可以周期性的扫描缓存中的每个cache line,每扫描到一次cache line,缓存控制器将该cache line对应的滞留域的值加一,cache line每被访问一次,缓存控制器将该cache line对应的滞留域的值清零。因此,滞留域的数值越大,代表该滞留域对应的cache line滞留的时间越长。
可选的,上述第三cache line可以为滞留域的值超过预设阈值的cache line。
本申请实施例提供的缓存替换方法,通过为缓存中的每个cache line设置一个计数器,cache line每被访问一次,缓存控制器控制计数器进行相应的计数,从而能够在该cache line被访问的次数到达预先确定的访问次数时,如果需要进行缓存替换,可以优先将该访问次数到达预先确定的访问次数的cache line替换出去,从而能够较为准确的控制每个cache line被替换的时间点,降低cache被误替换的概率,提高cache的利用率。而且在缓存中不存在第二cache line情况下,可以通过将缓存中长期滞留的cache line替换出去,能够进一步提高cache的利用率。
可选的,本申请实施例还提供一种缓存替换方法,如图6所示,在上述步骤S201-S202以后,该方法还可以包括以下步骤:
S207、在目的地址未命中缓存中的任意一个cache line,且缓存中不存在第二cache line及第三cache line的情况下,缓存控制器确定待替换cache line。
可选的,上述步骤S207可以包括:缓存控制器采用先进先出FIFO策略、最近最少使用LRU策略、或随机策略,确定待替换cache line。对于缓存控制器采用先进先出FIFO策略、最近最少使用LRU策略、或随机策略,确定待替换cache line的具体 实现方式,在此不再赘述。
示例性的,在目的地址未命中cache时,如果需要进行缓存替换,但cache中所有cache line被访问的次数均未达到预先确定的访问次数,而且没有长期滞留的cache line,那么缓存控制器可以基于FIFO策略、LRU策略、或随机策略,确定待替换的cache line。
S208、缓存控制器采用第一cache line替换待替换cache line,并将第一cache line对应的计数器的值初始化。
示例性的,缓存控制器用第一cache line将待替换cache line替换出去后,可以初始化第一cache line对应的计数器的值。可选的,当缓存控制器将第一cache line对应的计数器的值初始化为0时,该第一cache line每被访问一次,该第一cache line对应的计数器的值加一。当缓存控制器将第一cache line对应的计数器的值初始化为第一读取次数时,该第一cache line每被访问一次,该第一cache line对应的计数器的值减一。
本申请实施例提供的缓存替换方法,通过为缓存中的每个cache line设置一个计数器,cache line每被访问一次,缓存控制器控制计数器进行相应的计数,从而能够在该cache line被访问的次数到达预先确定的访问次数时,如果需要进行缓存替换,可以优先将该访问次数到达预先确定的访问次数的cache line替换出去,从而能够较为准确的控制每个cache line被替换的时间点,降低cache被误替换的概率,提高cache的利用率。而且在缓存中不存在第二cache line以及第三cache line的情况下,可以通过FIFO策略、LRU策略、或随机策略,确定待替换的cache line,并将该待替换的cache line替换出去,以提高处理器的访问速度。
本申请实施例还提供一种缓存替换方法,如图7所示,该方法包括以下步骤:
S701、缓存控制器获取访问请求。
该访问请求包括请求访问的目的地址以及第一访问次数,该第一访问次数为预先确定的第一cache line会被访问的次数,该第一cache line为缓存控制器获取的访问请求请求访问的cache line。
S702、缓存控制器基于目的地址,查询缓存,确定目的地址是否在缓存中命中。
若确定目的地址在缓存中命中,继续执行步骤S703或S704;若确定目的地址未命中缓存中的任意一个cache line,继续执行步骤S705。
S703、在第一cache line对应的计数器初始化时的值为第一访问次数的情况下,缓存控制器将第一cache line对应的计数器的值减一。
S704、在第一cache line对应的计数器初始化时的值为0的情况下,缓存控制器将第一cache line对应的计数器的值加一。
S705、缓存控制器确定缓存中是否存在第二cache line。
其中,第二cache line为访问次数达到第二访问次数的cache line,第二访问次数为预先确定的第二cache line会被访问的次数。
若确定缓存中存在第二cache line,继续执行步骤S706;若确定缓存中不存在第二cache line,继续执行步骤S707。
S706、缓存控制器采用第一cache line替换第二cache line,并将第一cache line对应的计数器的值初始化。
S707、缓存控制器确定缓存中是否存在第三cache line。
其中,第三cache line为缓存中滞留时长超过预设时长的cache line。
若确定缓存中存在第三cache line,继续执行步骤S708;若确定缓存中不存在第三cache line,继续执行步骤S709。
S708、缓存控制器采用第一cache line替换第三cache line,并将第一cache line对应的计数器的值初始化。
S709、缓存控制器确定待替换cache line,采用第一cache line替换待替换cache line,并将第一cache line对应的计数器的值初始化。
S710、缓存控制器返回数据。
示例性的,缓存控制器返回的数据为处理器请求访问的第一cache line中的数据。
可选的,缓存控制器返回数据,即为该第一cache line被读取一次,那么该第一cache line对应的计数器的值相应的加一或减一。例如,如果初始化时将第一cache line对应的计数器的值初始化为0,那么步骤S710返回数据时,确定该第一cache line被读取一次,将该第一cache line对应的计数器的值加一。再例如,如果初始化时将第一cache line对应的计数器的值初始化为第一访问次数,那么步骤S710返回数据时,确定该第一cache line被读取一次,将该第一cache line对应的计数器的值减一。
可以理解的,上述步骤S701-S709的具体实现方式可以参考前述步骤S201-S207中相应步骤的实现方式,在此不再赘述。
本申请实施例提供的缓存替换方法,通过为缓存中的每个cache line设置一个计数器,cache line每被访问一次,缓存控制器控制计数器进行相应的计数,从而能够在该cache line被访问的次数到达预先确定的访问次数时,如果需要进行缓存替换,可以优先将该访问次数到达预先确定的访问次数的cache line替换出去,从而能够较为准确的控制每个cache line被替换的时间点,降低cache被误替换的概率,提高cache的利用率。而且在缓存中不存在第二cache line情况下,可以通过将缓存中长期滞留的cache line替换出去,能够进一步提高cache的利用率。
本申请实施例还提供一种缓存替换装置,该缓存替换装置包括缓存及缓存控制器,缓存控制器用于实现图2、图4至图7中任一所示的缓存替换方法。
本申请实施例还提供一种电子设备,如图8所示,该电子设备包括处理器、缓存、缓存控制器,以及内存,处理器用于向缓存控制器发送访问请求,该访问请求包括请求访问的目的地址以及上述第一访问次数。缓存控制器用于获取该访问请求,并基于访问请求中的目的地址,查询缓存。若的地址未命中缓存中的任意一个cache line,且缓存中存在上述第二cache line,缓存控制器采用第一cache line替换第二cache line,并将第一cache line对应的计数器的值初始化。可选的,缓存控制器可以从内存中获取上述第一cache line。
可选的,图8所示的缓存控制器还用于实现图2、图4至图7中任一所示的缓存替换方法。
结合本申请公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、可擦 除可编程只读存储器(erasable programmable ROM,EPROM)、电可擦可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于核心网接口设备中。当然,处理器和存储介质也可以作为分立组件存在于核心网接口设备中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (23)
- 一种缓存替换方法,其特征在于,所述缓存包括多个缓存行cache line,每个所述cache line对应一个计数器,所述方法包括:缓存控制器获取访问请求和第一访问次数;所述访问请求包括请求访问的目的地址,所述第一访问次数为预先确定的第一cache line会被访问的次数,所述第一cache line为所述访问请求请求访问的cache line;所述缓存控制器基于所述目的地址,查询所述缓存,若所述目的地址未命中所述缓存中的任意一个cache line,且所述缓存中存在第二cache line,所述缓存控制器采用所述第一cache line替换所述第二cache line,并将所述第一cache line对应的计数器的值初始化;其中,所述第二cache line为访问次数达到第二访问次数的cache line,所述第二访问次数为预先确定的所述第二cache line会被访问的次数。
- 根据权利要求1所述的方法,其特征在于,在所述第二cache line对应的计数器初始化时的值为所述第二访问次数的情况下,所述第二cache line的访问次数达到所述第二访问次数为所述第二cache line对应的计数器的值为0。
- 根据权利要求1所述的方法,其特征在于,在所述第二cache line对应的计数器初始化时的值为0的情况下,所述第二cache line的访问次数达到所述第二访问次数为所述第二cache line对应的计数器的值为所述第二访问次数。
- 根据权利要求1-3中任一项所述的方法,其特征在于,若所述目的地址在所述缓存中命中,所述方法还包括:在所述第一cache line对应的计数器初始化时的值为所述第一访问次数的情况下,将所述第一cache line对应的计数器的值减一;或者,在所述第一cache line对应的计数器初始化时的值为0的情况下,将所述第一cache line对应的计数器的值加一。
- 根据权利要求1-4中任一项所述的方法,其特征在于,在所述目的地址未命中所述缓存中的任意一个cache line,且所述缓存中不存在所述第二cache line情况下,所述方法还包括:若确定所述缓存中存在第三cache line,所述缓存控制器采用所述第一cache line替换所述第三cache line,并将所述第一cache line对应的计数器的值初始化;其中,所述第三cache line为所述缓存中滞留时长超过预设时长的cache line。
- 根据权利要求5所述的方法,其特征在于,所述缓存中的每个所述cache line对应一个滞留域,所述方法还包括:所述缓存控制器周期性的扫描所述缓存中的每个所述cache line,每扫描到一次所述cache line,所述缓存控制器将该cache line对应的滞留域的值加一;所述cache line每被访问一次,所述缓存控制器将该cache line对应的滞留域的值清零。
- 根据权利要求6所述的方法,其特征在于,所述第三cache line对应的滞留域的值超过预设阈值。
- 根据权利要求5-7中任一项所述的方法,其特征在于,在所述目的地址未命中所述缓存中的任意一个cache line,且所述缓存中不存在所述第二cache line及所述第三cache line的情况下,所述方法还包括:所述缓存控制器确定待替换cache line,采用所述第一cache line替换所述待替换cache line,并将所述第一cache line对应的计数器的值初始化。
- 根据权利要求8所述的方法,其特征在于,所述缓存控制器确定所述待替换cache line,包括:所述缓存控制器采用先进先出FIFO策略、最近最少使用LRU策略、或随机策略,确定所述待替换cache line。
- 根据权利要求1-9中任一项所述的方法,其特征在于,所述方法还包括:处理器获取所述第一访问次数;所述处理器向所述缓存控制器发送所述第一访问次数。
- 根据权利要求1-10中任一项所述的方法,其特征在于,所述访问请求为读请求或写请求。
- 一种缓存替换装置,其特征在于,所述缓存包括多个缓存行cache line,每个所述cache line对应一个计数器,所述缓存替换装置包括:缓存控制器,用于获取访问请求和第一访问次数;所述访问请求包括请求访问的目的地址,所述第一访问次数为预先确定的第一cache line会被访问的次数,所述第一cache line为所述访问请求请求访问的cache line;所述缓存控制器,还用于基于所述目的地址,查询所述缓存,若所述目的地址未命中所述缓存中的任意一个cache line,且所述缓存中存在第二cache line,所述缓存控制器采用所述第一cache line替换所述第二cache line,并将所述第一cache line对应的计数器的值初始化;其中,所述第二cache line为访问次数达到第二访问次数的cache line,所述第二访问次数为预先确定的所述第二cache line会被访问的次数。
- 根据权利要求12所述的装置,其特征在于,在所述第二cache line对应的计数器初始化时的值为所述第二访问次数的情况下,所述第二cache line的访问次数达到所述第二访问次数为所述第二cache line对应的计数器的值为0。
- 根据权利要求12所述的装置,其特征在于,在所述第二cache line对应的计数器初始化时的值为0的情况下,所述第二cache line的访问次数达到所述第二访问次数为所述第二cache line对应的计数器的值为所述第二访问次数。
- 根据权利要求12-14中任一项所述的装置,其特征在于,若所述目的地址在所述缓存中命中,所述缓存控制器,还用于:在所述第一cache line对应的计数器初始化时的值为所述第一访问次数的情况下,将所述第一cache line对应的计数器的值减一;或者,在所述第一cache line对应的计数器初始化时的值为0的情况下,将所述第一cache line对应的计数器的值加一。
- 根据权利要求12-15中任一项所述的装置,其特征在于,在所述目的地址未命中所述缓存中的任意一个cache line,且所述缓存中不存在所述第二cache line情况下,所述缓存控制器,还用于:若确定所述缓存中存在第三cache line,采用所述第一cache line替换所述第三cache line,并将所述第一cache line对应的计数器的值初始化;其中,所述第三cache line为所述缓存中滞留时长超过预设时长的cache line。
- 根据权利要求16所述的装置,其特征在于,所述缓存中的每个所述cache line对应一个滞留域,所述缓存控制器,还用于:周期性的扫描所述缓存中的每个所述cache line,每扫描到一次所述cache line,所述缓存控制器将该cache line对应的滞留域的值加一;所述cache line每被访问一次,所述缓存控制器将该cache line对应的滞留域的值清零。
- 根据权利要求17所述的装置,其特征在于,所述第三cache line对应的滞留域的值超过预设阈值。
- 根据权利要求16-18中任一项所述的装置,其特征在于,在所述目的地址未命中所述缓存中的任意一个cache line,且所述缓存中不存在所述第二cache line及所述第三cache line的情况下,所述缓存控制器,还用于:确定待替换cache line,采用所述第一cache line替换所述待替换cache line,并将所述第一cache line对应的计数器的值初始化。
- 根据权利要求19所述的装置,其特征在于,所述缓存控制器,具体用于采用先进先出FIFO策略、最近最少使用LRU策略、或随机策略,确定所述待替换cache line。
- 根据权利要求12-20中任一项所述的装置,其特征在于,所述缓存替换装置还包括处理器,所述处理器,用于:获取所述第一访问次数;向所述缓存控制器发送所述第一访问次数。
- 根据权利要求12-21中任一项所述的装置,其特征在于,所述访问请求为读请求或写请求。
- 一种电子设备,其特征在于,所述电子设备包括缓存、缓存控制器及处理器,所述缓存包括多个缓存行cache line,每个cache line对应一个计数器;所述处理器,用于向所述缓存控制器发送访问请求和第一访问次数;所述访问请求包括请求访问的目的地址,所述第一访问次数为预先确定的第一cache line会被访问的次数,所述第一cache line为所述访问请求请求访问的cache line;所述缓存控制器,用于获取所述访问请求和第一访问次数;基于所述目的地址,查询所述缓存,若所述目的地址未命中所述缓存中的任意一个cache line,且所述缓存中存在第二cache line,所述缓存控制器采用所述第一cache line替换所述第二cache line,并将所述第一cache line对应的计数器的值初始化;其中,所述第二cache line为访问次数达到第二访问次数的cache line,所述第二访问次数为预先确定的所述第二cache line会被访问的次数。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/078278 WO2022178869A1 (zh) | 2021-02-26 | 2021-02-26 | 一种缓存替换方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116897335A true CN116897335A (zh) | 2023-10-17 |
Family
ID=83047652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180093712.0A Pending CN116897335A (zh) | 2021-02-26 | 2021-02-26 | 一种缓存替换方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116897335A (zh) |
WO (1) | WO2022178869A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349198A (zh) * | 2023-11-30 | 2024-01-05 | 摩尔线程智能科技(北京)有限责任公司 | 缓存行替换方法及装置 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116107926B (zh) * | 2023-02-03 | 2024-01-23 | 摩尔线程智能科技(北京)有限责任公司 | 缓存替换策略的管理方法、装置、设备、介质和程序产品 |
CN117349199B (zh) * | 2023-11-30 | 2024-07-23 | 摩尔线程智能科技(北京)有限责任公司 | 缓存管理装置及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011150684A (ja) * | 2009-12-21 | 2011-08-04 | Sony Corp | キャッシュメモリおよびキャッシュメモリ制御装置 |
JP5494834B2 (ja) * | 2011-01-12 | 2014-05-21 | 富士通株式会社 | キャッシュメモリ装置,キャッシュメモリの制御装置,情報処理装置,キャッシュメモリの制御方法,及びキャッシュメモリ装置の閾値決定プログラム |
US9003126B2 (en) * | 2012-09-25 | 2015-04-07 | Intel Corporation | Apparatus, system and method for adaptive cache replacement in a non-volatile main memory system |
CN105094686B (zh) * | 2014-05-09 | 2018-04-10 | 华为技术有限公司 | 数据缓存方法、缓存和计算机系统 |
CN108139872B (zh) * | 2016-01-06 | 2020-07-07 | 华为技术有限公司 | 一种缓存管理方法、缓存控制器以及计算机系统 |
US10223278B2 (en) * | 2016-04-08 | 2019-03-05 | Qualcomm Incorporated | Selective bypassing of allocation in a cache |
-
2021
- 2021-02-26 CN CN202180093712.0A patent/CN116897335A/zh active Pending
- 2021-02-26 WO PCT/CN2021/078278 patent/WO2022178869A1/zh active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117349198A (zh) * | 2023-11-30 | 2024-01-05 | 摩尔线程智能科技(北京)有限责任公司 | 缓存行替换方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2022178869A1 (zh) | 2022-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116897335A (zh) | 一种缓存替换方法和装置 | |
CN107066397B (zh) | 用于管理数据迁移的方法、系统和存储介质 | |
US8176258B2 (en) | System and method for cache management | |
US9767140B2 (en) | Deduplicating storage with enhanced frequent-block detection | |
US8271729B2 (en) | Read and write aware cache storing cache lines in a read-often portion and a write-often portion | |
US9971698B2 (en) | Using access-frequency hierarchy for selection of eviction destination | |
US10007614B2 (en) | Method and apparatus for determining metric for selective caching | |
CN110737399B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
US20060282620A1 (en) | Weighted LRU for associative caches | |
US11314689B2 (en) | Method, apparatus, and computer program product for indexing a file | |
JP6106028B2 (ja) | サーバ及びキャッシュ制御方法 | |
EP4020153A1 (en) | Cache space management method and device | |
US11593268B2 (en) | Method, electronic device and computer program product for managing cache | |
CN113094392A (zh) | 数据缓存的方法和装置 | |
US8707006B2 (en) | Cache index coloring for virtual-address dynamic allocators | |
CN114217861A (zh) | 数据处理方法及装置、电子装置和存储介质 | |
CN112631504A (zh) | 利用堆外内存实现本地缓存的方法和装置 | |
CN115080459A (zh) | 缓存管理方法及装置、计算机可读存储介质 | |
CN107562806B (zh) | 混合内存文件系统的自适应感知加速方法及系统 | |
US8656106B2 (en) | Managing unforced injections of cache lines into a cache utilizing predetermined address ranges | |
US10997077B2 (en) | Increasing the lookahead amount for prefetching | |
CN114296635B (zh) | 缓存数据的缓存淘汰方法、装置、终端及存储介质 | |
CN113791989B (zh) | 基于cache的缓存数据处理方法、存储介质及芯片 | |
CN115827507A (zh) | 数据预取的方法、装置、电子设备及存储介质 | |
US11481143B2 (en) | Metadata management for extent-based storage system |
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 |