CN116340205B - 访问请求处理方法以及缓存装置 - Google Patents

访问请求处理方法以及缓存装置 Download PDF

Info

Publication number
CN116340205B
CN116340205B CN202211614514.7A CN202211614514A CN116340205B CN 116340205 B CN116340205 B CN 116340205B CN 202211614514 A CN202211614514 A CN 202211614514A CN 116340205 B CN116340205 B CN 116340205B
Authority
CN
China
Prior art keywords
target
cache line
matching
binary tree
state
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
CN202211614514.7A
Other languages
English (en)
Other versions
CN116340205A (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.)
Glenfly Tech Co Ltd
Original Assignee
Glenfly Tech Co Ltd
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 Glenfly Tech Co Ltd filed Critical Glenfly Tech Co Ltd
Priority to CN202211614514.7A priority Critical patent/CN116340205B/zh
Publication of CN116340205A publication Critical patent/CN116340205A/zh
Application granted granted Critical
Publication of CN116340205B publication Critical patent/CN116340205B/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请涉及一种访问请求处理方法以及缓存装置。所述方法包括:接收至少两个访问请求;将各所述访问请求与匹配二叉树进行匹配得到目标匹配结果;基于所述目标匹配结果确定各所述访问请求对应的目标缓存行,并更新所述匹配二叉树;基于所述目标缓存行对所述访问请求进行处理。采用本方法能够提高访问请求的处理效率,能够每个时钟周期处理至少两个请求,并且增加的硬件成本不大。

Description

访问请求处理方法以及缓存装置
技术领域
本申请涉及数据存储技术领域,特别是涉及一种访问请求处理方法以及缓存装置。
背景技术
Cache称作高速缓存,是硬件设计中常见的单元,用于暂存数据、指令、常数等信息,良好的Cache设计,既可以大大提高访问存储器的效率,也可以显著减小存储带宽的压力。Cache包括缓存空间、匹配控制逻辑、Tag单元等部分,缓存空间一般划分为多行缓存行(cache line),由Tag单元进行管理,而每次选择合适缓存行进行匹配、替换和读写,是由匹配控制逻辑决定的。其中Cache替换策略是影响Cache性能的主要因素,常用的替换策略包括:随机替换策略Random,先进先出FIFO(First in First out),最近最少使用策略LRU(Least Recently Used),伪最近最少使用策略PLRU(Pseudo LRU)等。
Random和FIFO算法的硬件实现简单,但容易造成刚被使用的缓存行被替换出去,导致性能不佳。而LRU算法优先寻找到最不常用的缓存行进行替换,所以性能最佳,但是硬件设计复杂,并且时序上难以收敛。与LRU相比,PLRU是一种近似的LRU算法,通过建立二叉树进行堆排序的搜索,达到较快的性能,并且硬件资源消耗较少,所以常采用在高性能缓存设计中。
传统的PLRU算法每次仅能处理一个访问请求,效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高处理效率的访问请求处理方法以及缓存装置。
第一方面,本申请提供一种访问请求处理方法,所述方法包括:
接收至少两个访问请求;
将各所述访问请求与匹配二叉树进行匹配得到目标匹配结果;
基于所述目标匹配结果确定各所述访问请求对应的目标缓存行,并更新所述匹配二叉树;
基于所述目标缓存行对所述访问请求进行处理。
在其中一个实施例中,所述将各所述访问请求与匹配二叉树进行匹配得到目标匹配结果,包括:
将所述访问请求与所述匹配二叉树进行匹配检测,得到初始匹配结果;
基于所述初始匹配结果以及所述匹配二叉树,得到目标匹配结果。
在其中一个实施例中,所述基于所述初始匹配结果以及所述匹配二叉树,得到目标匹配结果,包括:
当所述初始匹配结果为均匹配时,将所述初始匹配结果作为目标匹配结果;
当所述初始匹配结果中既存在匹配的结果,又存在失配的结果时,锁定所述匹配二叉树中匹配的第一缓存行,并从所述匹配二叉树中检索与失配的所述访问请求对应的第二缓存行,基于所述第一缓存行和所述第二缓存行得到目标匹配结果;
当所述初始匹配结果为均失配时,从所述匹配二叉树中检索与失配的所述访问请求对应的第三缓存行,基于所述第三缓存行得到目标匹配结果。
在其中一个实施例中,所述从所述匹配二叉树中检索与失配的所述访问请求对应的第三缓存行,包括:
当所述访问请求需要的缓存行相同时,从所述匹配二叉树中获取与失配的所述访问请求对应的第三缓存行,且各所述访问请求对应的第三缓存行相同;
当所述访问请求需要的缓存行不相同时,从所述匹配二叉树中获取与失配的所述访问请求对应的第三缓存行。
在其中一个实施例中,所述更新所述匹配二叉树,包括:
从所述目标缓存行开始,按照从叶节点到根节点的顺序对所述匹配二叉树进行遍历,并更新所述匹配二叉树每一层中对应的节点的状态。
在其中一个实施例中,所述更新所述匹配二叉树每一层中对应的节点的状态,包括:
获取所述目标缓存行在所述匹配二叉树每一层中对应的当前节点;
当所述当前节点不是所述目标缓存行的父节点或祖父节点时,则跳过所述当前节点;
当所述当前节点是所述目标缓存行的父节点或祖父节点,且根据所述目标缓存行与所述当前节点的位置关系,更新对应的节点的状态。
在其中一个实施例中,所述根据所述目标缓存行与所述当前节点的位置关系,更新对应的节点的状态,包括:
当所述目标缓存行分别位于所述当前节点不同方向的子树,则保持所述当前节点的状态不变;
当至少一个所述目标缓存行位于所述当前节点的目标方向的子树,且所述当前节点的状态为与所述目标方向对应的目标状态时,更新所述目标状态;
当至少一个所述目标缓存行位于所述当前节点的目标方向的子树,且所述当前节点的状态为与所述目标方向相反的目标状态时,保持所述目标状态不变。
在其中一个实施例中,所述当至少一个所述目标缓存行位于所述当前节点的目标方向的子树,且所述当前节点的状态为与所述目标方向对应的目标状态时,更新所述目标状态,包括:
当至少一个所述目标缓存行位于所述当前节点的第一方向的子树,且所述当前节点的状态为第一状态,则更新为第二状态;
当至少一个所述目标缓存行位于所述当前节点的第二方向的子树,且所述当前节点的状态为第二状态,则更新为第一状态;
所述当至少一个所述目标缓存行位于所述当前节点的目标方向的子树,且所述当前节点的状态为与所述目标方向相反的目标状态时,保持所述目标状态不变,包括:
当至少一个所述目标缓存行位于所述当前节点的第一方向的子树,且所述当前节点的状态为第二状态,则保持第二状态不变;
当至少一个所述目标缓存行位于所述当前节点的第二方向的子树,且所述当前节点的状态为第一状态,则保持第一状态不变。
在其中一个实施例中,所述基于所述目标缓存行对所述访问请求进行处理,包括:
按照先进先出顺序,分别从所述目标缓存行进行数据读写得到所述访问请求的处理结果。
在其中一个实施例中,所述按照先进先出顺序,从所述目标缓存行进行数据读写得到所述访问请求的处理结果之前,还包括:
当所述目标匹配结果为失配时,从外部存储器读取对应的数据,并更新至所述目标缓存行。
第二方面,本申请还提供一种缓存装置,所述装置包括:
缓存模块,包括多个缓存行;
信息记录模块,用于记录所述缓存模块中各所述缓存行的缓存信息;
控制模块,用于接收至少两个访问请求;将各所述访问请求与匹配二叉树进行匹配得到目标匹配结果,并基于所述目标匹配结果确定所述缓存模块中与各所述访问请求对应的目标缓存行,基于所述匹配结果更新所述信息记录模块中的缓存信息以及所述匹配二叉树;
暂存模块,用于暂存所述目标匹配结果,并基于所述目标缓存行对所述访问请求进行处理;
输出模块,用于输出所述目标缓存行的处理结果。
上述访问请求处理方法以及缓存装置,每次至少接收两个访问请求,并将各访问请求与匹配二叉树进行匹配得到目标匹配结果;这样基于目标匹配结果确定各访问请求对应的目标缓存行,从而基于目标缓存行对访问请求进行并行处理,并更新匹配二叉树后以便于下次处理,这样能够每个时钟周期处理至少两个访问请求,并且增加的硬件成本不大,提高了处理效率。
附图说明
图1为一个实施例中的原始PLRU的匹配二叉树的示意图;
图2为一个实施例中缓存行ca4匹配成功后状态位的更新结果的示意图;
图3为一个实施例中缓存失配后状态位的更新结果的示意图;
图4为一个实施例中缓存行失配以及锁定后状态位的更新结果的示意图;
图5为一个实施例中的缓存装置的结构示意图;
图6为一个实施例中访问请求处理方法的流程示意图;
图7为一个实施例中的四种目标匹配结果的示意图;
图8为一个实施例中的匹配二叉树节点状态位更新策略的示意图;
图9为一个实施例中的增强型PLRU的匹配二叉树的示意图;
图10为一个实施例中req0匹配并且req1匹配时匹配二叉树的示意图;
图11为另一个实施例中req0匹配并且req1匹配时匹配二叉树的示意图;
图12为一个实施例中req0匹配并且req1失配时匹配二叉树的示意图;
图13为另一个实施例中req0匹配并且req1失配时匹配二叉树的示意图;
图14为一个实施例中req0失配并且req1失配时匹配二叉树的示意图;
图15为另一个实施例中req0失配并且req1失配时匹配二叉树的示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
具体地,为了方便理解先对相关技术中的伪最近最少使用策略(PLRU)进行介绍,其中PLRU算法的主要核心是管理一个匹配二叉树,其中算法中主要涉及到以下概念:
缓存行(Cache Line):缓存行是高速缓存cache的基本存储单位,总数一般为2n个,每个缓存行记录一个固定大小的数据(例如2kbits),每个缓存行标记为cai,(i=0,1,…,(2n-1))。
Tag:用于记录每个缓存行的基本信息,该基本信息包括用于请求匹配检测的信息,包括缓存行的虚拟地址、优先级、状态等信息。
匹配和失配(Hit and Miss):当收到一个缓存请求时,PLRU算法通过对每个缓存行的Tag信息进行匹配检测,如果当前请求的地址和某一个Tag信息记录的一样,那么对应的缓存行被匹配(Hit);如果当前请求的地址和所有的Tag信息均不一样,那么处于失配(Miss)状态。
匹配二叉树(Matched Binary-Tree):用于把缓存行组织为叶节点,依次建立起一棵二叉树,用于PLRU算法的匹配请求访问,该二叉树称作匹配二叉树。
状态位(Status Bit):匹配二叉树中所有非叶子节点均有1bit的状态位,记录缓存行的历史访问信息,状态位0表示下一次优先选择二叉树的左侧,1表示下一次优先选择二叉树的右侧。
锁定(Lock):如果某个缓存行还在被读写,那么会处于锁定状态,不能够被替换;必须等到cache把请求处理完毕,该缓存行才能被解锁(Unlock);只有那些没有被锁定的缓存行才能被替换。
最老缓存行(Oldest Cache Line):从上到下遍历匹配二叉树,根据节点的状态位选择左侧(0)或者右侧(1)的子树继续遍历,所找到的最终叶节点就是最老缓存行。
次老缓存行(Second Oldest Cache Line):如果最老缓存行被锁定,那么从下到上调整匹配二叉树相关节点状态位后,再次遍历当前匹配二叉树的每个节点,根据节点的状态位,选择左侧(0)或者右侧(1)的子树,找到的最终叶节点就是次老的缓存行。
以8路缓存为例,如图1所示,图1为一个实施例中的原始PLRU的匹配二叉树的示意图。原始PLRU的匹配二叉树有8个缓存行(Cache Line,简称ca0~ca7),共使用7个状态位,用于记录每个中间节点的状态信息。假设图1为当前PLRU的匹配二叉树的状态位信息,那么可知ca5为当前最老的缓存行,将会被优先替换,而ca1为次老的缓存行。这8个缓存行被替换的优先级顺序为:ca5、ca1、ca6、ca3、ca4、ca0、ca7、ca2,如果ca5和ca1均被锁定,那么将继续按照优先级顺序进行选择,如果所有缓存行都被锁定,那么挂起当前请求。
当收到一个缓存请求时,PLRU算法通过对每个缓存行的Tag信息进行匹配检测,确定是否匹配(hit)或者失配(miss):
如果匹配(hit)成功,那么选择匹配对应的缓存行,读写相应的数据并返回;同时更新匹配二叉树各个节点的状态位。调整策略为:
对每个节点从下到上进行遍历,如果匹配的缓存行在当前节点的左子树,而节点的状态位为0,那么更新为1,使得右侧子树将被优先访问;如果节点的状态位为1,那么保持不变。
如果匹配的缓存行在当前节点的右子树,而节点的状态位为1,那么更新为0,使得左侧子树将被优先访问;如果节点的状态位为0,那么保持不变。
假设ca4被发现匹配成功,如图2所示,图2为一个实施例中,缓存行ca4匹配成功后状态位的更新结果的示意图,那么图2中的对应节点(图2中被填充)需要更新状态位,其他节点状态位保持不变。
如果失配(miss),那么根据当前的匹配二叉树节点的状态位选择当前的最老缓存行,作为新的请求的读写位置;如果最老缓存行被锁定(Lock),那么需要调整匹配二叉树的状态位,选择次老缓存行;如果所有缓存行都被锁定,那么挂起当前请求。
仍以图1的示例,假设当前的请求失配,那么根据当前匹配二叉树的状态位,选择ca5作为最老缓存行,将被替换成当前请求的读写缓存,同时一些节点状态位将被更新,如图3对应的被填充节点所示,其中图3为一个实施例中缓存失配后状态位的更新结果的示意图。
如果缓存行ca5被锁定,由于被锁定的缓存行不允许被替换,那么次老缓存行ca1将被选中,如果ca1没有被锁定,替换后并更新的匹配二叉树如图4所示,图4为一个实施例中缓存行失配以及锁定后状态位的更新结果的示意图,更新规则同上文。如果ca1也被锁定,则继续寻找可替换的缓存行。如果所有缓存行都被锁定,则挂起当前请求。
传统的PLRU算法每次仅能处理一个请求,尽管可以把整个cache做成pipe流水线结构,但是每个时钟周期(cycle)也只能响应一个请求,在所有请求都是匹配(hit)的情况下,每个cycle也仅能返回一个数据。在芯片设计中,由于处理单元翻倍,需要使用的cache数量也需要翻倍,这样才能达到每个cycle响应两个请求的吞吐率,但是带来的问题是,硬件逻辑单元也是成倍增加的。
为了节省硬件逻辑,本申请中提出了一种增强型的PLRU算法,能够做到每个cycle处理两个请求,并且增加的成本不大。其中需要增加的硬件逻辑,主要集中在cache的匹配控制逻辑,其他部分,例如缓存空间和Tag单元都不变,从而大幅度节省了整个设计所使用的硬件逻辑。
本申请实施例提供的访问请求处理方法,可以应用于如图5所示的缓存装置。
其中,该缓存装置包括缓存模块、信息记录模块、控制模块、暂存模块以及输出模块。其中缓存模块包括多个缓存行,缓存模块在图5中标识为CRAM,其是Cache实际的缓存空间,被组织成多个缓存行的存储结构,每个缓存行记录一个固定大小的数据(例如2kbits),总数一般为2n个,每个缓存行的Tag信息记录在信息记录模块中。
信息记录模块,在图5中被标识为TAG,其用于记录缓存模块中各缓存行的缓存信息,每个缓存行的Tag信息包括虚拟地址、优先级、状态等信息,该些Tag信息用于请求匹配检测操作。
控制模块,在图5中被标识为EPLRU_CTRL,其用于接收至少两个访问请求;将各访问请求与匹配二叉树进行匹配得到目标匹配结果,并基于目标匹配结果确定缓存模块中与各访问请求对应的目标缓存行,基于匹配结果更新信息记录模块中的缓存信息以及匹配二叉树。具体地,控制模块基于匹配控制逻辑,接收两个访问请求,从信息记录模块读取缓存行的Tag信息,进行地址的匹配检测,并更新信息记录模块,更新匹配二叉树,输出匹配结果。
暂存模块,在图5中被标识为Pending_Fifo,其用于暂存目标匹配结果,并基于目标缓存行对访问请求进行处理。具体地,该暂存模块用于暂存控制模块输出的目标匹配结果,并按照先进先出顺序从缓存模块中读写数据;如果是失配的请求,还需等待从外部存储器读取相应数据更新到缓存模块对应的目标缓存行后,才能继续执行。
输出模块,在图5中被标识为OUT,其用于输出目标缓存行的处理结果,例如将缓存模块中的读写的结果,组织成2路的结构,并返回给对应的外部单元。
在一个实施例中,如图6所示,提供了一种访问请求处理方法,以该方法应用于图5中的缓存装置为例进行说明,包括以下步骤:
S602:接收至少两个访问请求。
具体地,访问请求是对缓存的读写操作请求,在本实施例中,缓存装置可以并行接收至少两个访问请求,为了方便本申请中以两个访问请求为例进行说明,但是本领域技术人员可以根据需要扩展为三个,甚至更多的访问请求,在此不做赘述。
S604:将各访问请求与匹配二叉树进行匹配得到目标匹配结果。
具体地,匹配二叉树是根据缓存模块的各个缓存行得到的,具体可以参见上文。目标匹配结果是缓存装置同时对两个访问请求进行匹配检测时得到的结果,其中针对两个访问请求,其存在四种匹配结果,为了方便,假设两个访问请求分别为req0和req1,那么这四种结果是均匹配(both_hit)、req0匹配并且req1失配(req0_hit and req1_miss)、req0失配并且req1匹配(req0_miss and req1_hit)、均失配(both miss)。针对失配的结果,再根据二叉树进行替换,以得到失配的访问请求对应的目标缓存行。
S606:基于目标匹配结果确定各访问请求对应的目标缓存行,并更新匹配二叉树。
S608:基于目标缓存行对访问请求进行处理。
具体地,目标匹配结果包括对应各个访问请求的目标缓存行,其中包括与访问请求直接匹配的目标缓存行,和/或与访问请求失配,后续进行替换操作得到的与访问请求对应的目标缓存行。这样基于目标匹配结果即可获取到各访问请求对应的目标缓存行,从而对目标缓存行进行读写操作,以得到访问结果。
匹配二叉树的更新则是基于目标缓存行的进行更新的,即从需要更新的两个缓存行(cai和caj)开始,从下到上(从叶节点到根节点)依次遍历,更新每个节点状态位。
上述访问请求处理方法,每次至少接收两个访问请求,并将各访问请求与匹配二叉树进行匹配得到目标匹配结果;这样基于目标匹配结果确定各访问请求对应的目标缓存行,从而基于目标缓存行对访问请求进行并行处理,并更新匹配二叉树后以便于下次处理,这样能够每个时钟周期处理至少两个访问请求,并且增加的硬件成本不大,提高了处理效率。
在其中一个实施例中,将各访问请求与匹配二叉树进行匹配得到目标匹配结果,包括:将访问请求与匹配二叉树进行匹配检测,得到初始匹配结果;基于初始匹配结果以及匹配二叉树,得到目标匹配结果。
具体地,初始匹配结果是缓存装置并行计算得到各个访问请求的虚拟地址,将虚拟地址与信息记录模块的缓存行的信息进行匹配检测操作所得到的结果,该结果包括四种,具体可以参见上文。
其中该四种结果中包括匹配和失配的情况,对于失配的情况则需要继续根据匹配二叉树进行替换操作,以得到与失配的访问请求对应的目标缓存行,具体地,对于该四种结果的处理可以参见下文。
为了方便说明,请结合图7所示,图7为一个实施例中的四种目标匹配结果的示意图。在其中一个实施例中,基于初始匹配结果以及匹配二叉树,得到目标匹配结果,包括:当初始匹配结果为均匹配时,将初始匹配结果作为目标匹配结果;当初始匹配结果中既存在匹配的结果,又存在失配的结果时,锁定匹配二叉树中匹配的第一缓存行,并从匹配二叉树中检索与失配的访问请求对应的第二缓存行,基于第一缓存行和第二缓存行得到目标匹配结果;当初始匹配结果为均失配时,从匹配二叉树中检索与失配的访问请求对应的第三缓存行,基于第三缓存行得到目标匹配结果。
其中均匹配的结果是对于req0和req1均匹配到对应的缓存行cai和caj,在该实施例中,将匹配得到的目标缓存行进行锁定,防止被其他失配的请求替换掉。然后更新匹配二叉树相关节点的状态位。这里有一个特例,就是req0和req1匹配到的缓存行可能是同一个cai,那么只需要合并两个请求,并更新受cai影响的二叉树节点状态位,由于更新策略包含这种特例,所以不需要特殊处理。
对于既存在匹配又存在失配的结果,例如req0匹配并且req1失配(req0_hit andreq1_miss)以及req0失配并且req1匹配(req0_miss and req1_hit),则锁定匹配的目标缓存行,然后从剩余的缓存行中确定失配的访问请求对应的第二缓存行。
为了方便,以req0匹配并且req1失配为例说明,req0的对应缓存行cai将被锁定,然后根据匹配二叉树的状态位搜索最老缓存行分配给req1。如果最老缓存行被锁定,那么检查次老缓存行是否被锁定,直到找到合适的缓存行caj,然后锁定caj,再根据更新策略更新匹配二叉树的状态位。
对于req0失配并且req1匹配的情况,req1的对应缓存行caj将被锁定,然后根据匹配二叉树的状态位搜索最老缓存行分配给req0。如果最老缓存行被锁定,那么检查次老缓存行是否被锁定,直到找到合适的缓存行cai,然后锁定cai,再根据更新策略更新匹配二叉树的状态位。
在其中一个实施例中,从匹配二叉树中检索与失配的访问请求对应的第三缓存行,包括:当访问请求需要的缓存行相同时,从匹配二叉树中获取与失配的访问请求对应的第三缓存行,且各访问请求对应的第三缓存行相同;当访问请求需要的缓存行不相同时,从匹配二叉树中获取与失配的访问请求对应的第三缓存行。
也就是说对于均失配的结果,如果req0和req1需要的缓存行一样,那么合并两个请求,只需要寻找没有锁定的最老缓存行cai同时分配给req0和req1,然后锁定cai根据更新策略更新匹配二叉树的状态位;否则需要寻找没有锁定的最老和次老缓存行cai和caj同时分配给req0和req1,然后同时锁定cai和caj,再根据更新策略更新匹配二叉树的状态位。
上述实施例中,加强PLRU的处理能力能够同时处理两个访问请求,并给出了匹配检测和替换方法。
在其中一个实施例中,更新匹配二叉树,包括:从目标缓存行开始,按照从叶节点到根节点的顺序对匹配二叉树进行遍历,并更新匹配二叉树每一层中对应的节点的状态。
具体地,更新策略是从需要更新的两个目标缓存行(cai和caj)(若是多个访问请求,则存在多个目标缓存行)开始,从下到上(从叶节点到根节点)依次遍历,更新每个节点状态位。对每一层的节点进行判断,检查两个目标缓存行(cai和caj)在该节点的分布,并基于目标缓存行在该节点的分布来更新节点的状态。
在其中一个实施例中,更新匹配二叉树每一层中对应的节点的状态,包括:获取目标缓存行在匹配二叉树每一层中对应的当前节点;当当前节点不是目标缓存行的父节点或祖父节点时,则跳过当前节点;当当前节点是目标缓存行的父节点或祖父节点,且根据目标缓存行与当前节点的位置关系,更新对应的节点的状态。
本实施例中,是第一个节点分布的判断,具体点判断目标缓存行与当前节点的关系,若是当前节点不是目标缓存行的父节点或祖父节点时,则跳过当前节点,否则根据目标缓存行与当前节点的位置关系,更新对应的节点的状态。
在其中一个实施例中,根据目标缓存行与当前节点的位置关系,更新对应的节点的状态,包括:当目标缓存行分别位于当前节点不同方向的子树,则保持当前节点的状态不变;当至少一个目标缓存行位于当前节点的目标方向的子树,且当前节点的状态为与目标方向对应的目标状态时,更新目标状态;当至少一个目标缓存行位于当前节点的目标方向的子树,且当前节点的状态为与目标方向相反的目标状态时,保持目标状态不变。
具体地,该实施例是第二个节点分布的判断,具体地判断当前缓存行与当前节点的位置关系,如果cai和caj分别位于该节点的左右两个子树,那么该节点的状态位保持不变。
当至少一个目标缓存行位于当前节点的目标方向的子树,其中目标方向可以为左或右,当目标方向为左时,则目标状态为0,当目标方向为右时,则目标状态为1。当当前节点的状态为与目标方向对应的目标状态时,更新目标状态,若是当前节点的状态为与目标方向相反的目标状态时,保持目标状态不变,也就是说如果cai和caj其中至少一个位于左子树,则修改状态位,以使得下一次访问为右子树,如果cai和caj其中至少一个位于右子树,则修改状态位,以使得下一次访问为左子树。
在其中一个实施例中,当至少一个目标缓存行位于当前节点的目标方向的子树,且当前节点的状态为与目标方向对应的目标状态时,更新目标状态,包括:当至少一个目标缓存行位于当前节点的第一方向的子树,且当前节点的状态为第一状态,则更新为第二状态;当至少一个目标缓存行位于当前节点的第二方向的子树,且当前节点的状态为第二状态,则更新为第一状态;当至少一个目标缓存行位于当前节点的目标方向的子树,且当前节点的状态为与目标方向相反的目标状态时,保持目标状态不变,包括:当至少一个目标缓存行位于当前节点的第一方向的子树,且当前节点的状态为第二状态,则保持第二状态不变;当至少一个目标缓存行位于当前节点的第二方向的子树,且当前节点的状态为第一状态,则保持第一状态不变。
为了方便理解,结合图8所示,图8为一个实施例中的匹配二叉树节点状态位更新策略的示意图,在该实施例中,对每一层的节点进行判断,检查两个缓存行(cai和caj)在该节点的分布,如果当前节点不是(cai或者caj)的父节点或者祖父节点,那么跳过该节点。如果当前节点是(cai或者caj)的父节点或者祖父节点,且如果cai和caj分别位于该节点的左右两个子树,那么该节点的状态位保持不变;如果当前节点是(cai或者caj)的父节点或者祖父节点,且如果cai和caj均位于该节点的左子树,或者只有一个位于该节点的左子树,而节点的状态位为0,那么更新为1,使得右侧子树将被优先访问;如果节点的状态位为1,那么保持不变;如果当前节点是(cai或者caj)的父节点或者祖父节点,且如果cai和caj均位于该节点的右子树,或者只有一个位于该节点的右子树,而节点的状态位为1,那么更新为0,使得左侧子树将被优先访问;如果节点的状态位为0,那么保持不变。
这里需要注意,两个缓存行可能是一样的(cai==caj),此时,如果某个节点是它们的父节点或者祖父节点,那么它们要么均位于该节点的左子树,要么均位于右子树,分别位于左右子树的情形不存在。这种情形等价于普通的PLRU更新策略,但是这里提出的E-PLRU更新策略,能够包含这种特例,因此不需要特别处理。
为了便于理解,以8个缓存行的cache进行举例说明。假设当前的E-PLRU匹配二叉树如图9所示,8个缓存行(ca0~ca7)构成了该匹配二叉树的8个叶子节点,中间节点共有7个状态位,0代表左侧子树将被优先访问,1代表右侧子树将被优先访问。ca5为当前最老的缓存行,将会被优先替换,而ca1为次老的缓存行。这8个缓存行被替换的优先级顺序为:ca5、ca1、ca6、ca3、ca4、ca0、ca7、ca2,如果ca5和ca1均被锁定,那么将继续按照优先级顺序进行选择,如果所有缓存行都被锁定,那么挂起当前请求。
具体地,对于两个访问请求req0和req1经过匹配检测,发现是均匹配(both_hit)的情况,并且分别匹配到缓存行ca4和ca5,那么ca4和ca5的第一个父节点的状态位保持不变,因为ca4和ca5分布在该节点的左右两侧;但是其它祖父节点(图10中的被填充的节点)需要根据更新策略更新状态位,使得新的请求将优先选择其它缓存行。
另一个例子,如图11所示,对于两个请求req0和req1经过检测,发现是both_hit的情况,并且分别匹配到ca0和ca5,那么其中的被填充的节点的状态位需要根据更新策略进行更新,使得新的请求将优先选择其它缓存行。而整个匹配二叉树的根节点状态位保持不变,因为根节点是ca0和ca5共同祖父节点,并且它们位于根节点的左右子树上,则保持根节点状态位不变。
对于req0匹配并且req1失配的情况,两个请求req0和req1经过匹配检测,发现是req0_hit and req1_miss的情况,如图12所示,假设req0匹配到缓存行ca7,而req1是失配,选择ca5进行替换,再应用前述的策略更新E-PLRU二叉树的状态位,根节点的状态位也需要改变,因为ca5和ca7均位于它的右侧,需要更改根节点的状态位为0,指向左侧子树。
另一个例子,如图13所示,对于两个请求req0和req1经过匹配检测,发现是req0_hit and req1_miss的情况,假设req0匹配到缓存行ca5,而req1是失配,选择ca5进行替换,但是由于ca5被req0锁定,那么只能选择次老的节点ca1,作为req1的新缓存行。图13中的被填充的节点的状态位需要根据更新策略进行更新,使得新的请求将优先选择其它缓存行。而整个匹配二叉树的根节点状态位保持不变,因为ca1和ca5分别位于它的左右子树上,则保持根节点状态位不变。
对于req0失配并且req1匹配的情况的限定可以参见req0匹配并且req1失配的情况,在此不再赘述。
对于均失配的情况,即两个请求req0和req1经过匹配检测,发现是均失配(both_miss)的情况,并且req0和req1需要的缓存行一样,那么可以同时为两者寻找一个合适的缓存行,如图14所示,选择当前最老的缓存行ca5,作为req0和req1共同的缓存行,此时只需要针对ca5一个节点进行匹配二叉树状态位的更新。
如果两个请求req0和req1均失配并且需要的缓存行不一样,那么从匹配二叉树中选择最老和次老缓存行分配给这两个请求。但是如果最老和次老缓存行均被锁定,那么继续寻找可替代的缓存行,如图15所示,以缓存行ca0、ca1、ca5和ca7被锁定为例,按照匹配二叉树的优先级顺序,可选择ca6和ca3作为req0和req1的匹配缓存行,然后更新被填充的节点的状态位。
在其中一个实施例中,基于目标缓存行对访问请求进行处理,包括:按照先进先出顺序,分别从目标缓存行进行数据读写得到访问请求的处理结果。
在其中一个实施例中,按照先进先出顺序,从目标缓存行进行数据读写得到访问请求的处理结果之前,还包括:当目标匹配结果为失配时,从外部存储器读取对应的数据,并更新至目标缓存行。
具体地,为了方便理解,给出一个详细的实施例:
如图5所示,缓存装置接收输入的两个访问请求req0和req1,控制模块EPLRU_CTRL计算它们的虚拟地址,读取信息记录模块的信息进行匹配检测操作。
这样得到四种匹配检测结果,控制模块EPLRU_CTRL更新信息记录模块的信息和匹配二叉树,输出匹配结果到暂存模块。
其中按照先进先出顺序从暂存模块Pending Fifo获得匹配结果,并对缓存模块CRAM中相应的缓存行进行读写数据操作,这里需要同时处理两个读写请求。
其中,对于适配的情况,需要把脏(dirty)的缓存行输出,然后从外部存储器读取新的数据;这一过程可能较长,在暂存模块中的对应请求将被挂起,直到外部数据返回,外部数据返回后,更新相应的缓存行,并唤起在暂存模块中被挂起的对应请求,从而可以继续执行。
在req0和req1完成缓存模块的读写操作后,由输出模块Out组织成2路的结构,返回读写结果。
上述实施例中,能够每个时钟周期处理两个请求,并且增加的硬件成本不大;可以应用到只读、可读可写等各种类型的高速缓存中。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
上述缓存装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种访问请求处理方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置。显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,上述的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (10)

1.一种访问请求处理方法,其特征在于,所述方法包括:
接收至少两个访问请求,所述访问请求是对缓存的读写操作请求,缓存每个时钟周期并行接收至少两个访问请求;
将各所述访问请求与匹配二叉树进行匹配得到目标匹配结果;
基于所述目标匹配结果确定各所述访问请求对应的目标缓存行,并更新所述匹配二叉树;
基于所述目标缓存行对所述访问请求进行并行处理;
所述将各所述访问请求与匹配二叉树进行匹配得到目标匹配结果,包括:
将所述访问请求与所述匹配二叉树进行匹配检测,得到初始匹配结果;
基于所述初始匹配结果以及所述匹配二叉树,得到目标匹配结果;
所述基于所述初始匹配结果以及所述匹配二叉树,得到目标匹配结果,包括:
当所述初始匹配结果为均匹配时,将所述初始匹配结果作为目标匹配结果;
当所述初始匹配结果中既存在匹配的结果,又存在失配的结果时,锁定所述匹配二叉树中匹配的第一缓存行,并从所述匹配二叉树中检索与失配的所述访问请求对应的第二缓存行,基于所述第一缓存行和所述第二缓存行得到目标匹配结果;
当所述初始匹配结果为均失配时,从所述匹配二叉树中检索与失配的所述访问请求对应的第三缓存行,基于所述第三缓存行得到目标匹配结果;
其中,从所述匹配二叉树中检索与失配的所述访问请求对应的第二缓存行,包括:根据匹配二叉树的节点状态搜索最老缓存行,作为与失配的所述访问请求对应的第二缓存行,若所述最老缓存行被锁定,则继续检查次老缓存行,直至找到与失配的所述访问请求对应的第二缓存行。
2.根据权利要求1所述的方法,其特征在于,所述从所述匹配二叉树中检索与失配的所述访问请求对应的第三缓存行,包括:
当所述访问请求需要的缓存行相同时,从所述匹配二叉树中获取与失配的所述访问请求对应的第三缓存行,且各所述访问请求对应的第三缓存行相同;
当所述访问请求需要的缓存行不相同时,从所述匹配二叉树中获取与失配的所述访问请求对应的第三缓存行。
3.根据权利要求1或2所述的方法,其特征在于,所述更新所述匹配二叉树,包括:
从所述目标缓存行开始,按照从叶节点到根节点的顺序对所述匹配二叉树进行遍历,并更新所述匹配二叉树每一层中对应的节点的状态。
4.根据权利要求3所述的方法,其特征在于,所述更新所述匹配二叉树每一层中对应的节点的状态,包括:
获取所述目标缓存行在所述匹配二叉树每一层中对应的当前节点;
当所述当前节点不是所述目标缓存行的父节点或祖父节点时,则跳过所述当前节点;
当所述当前节点是所述目标缓存行的父节点或祖父节点,且根据所述目标缓存行与所述当前节点的位置关系,更新对应的节点的状态。
5.根据权利要求4所述的方法,其特征在于,所述根据所述目标缓存行与所述当前节点的位置关系,更新对应的节点的状态,包括:
当所述目标缓存行分别位于所述当前节点不同方向的子树,则保持所述当前节点的状态不变;
当至少一个所述目标缓存行位于所述当前节点的目标方向的子树,且所述当前节点的状态为与所述目标方向对应的目标状态时,更新所述目标状态;
当至少一个所述目标缓存行位于所述当前节点的目标方向的子树,且所述当前节点的状态为与所述目标方向相反的目标状态时,保持所述目标状态不变。
6.根据权利要求5所述的方法,其特征在于,所述当至少一个所述目标缓存行位于所述当前节点的目标方向的子树,且所述当前节点的状态为与所述目标方向对应的目标状态时,更新所述目标状态,包括:
当至少一个所述目标缓存行位于所述当前节点的第一方向的子树,且所述当前节点的状态为第一状态,则更新为第二状态;
当至少一个所述目标缓存行位于所述当前节点的第二方向的子树,且所述当前节点的状态为第二状态,则更新为第一状态;
所述当至少一个所述目标缓存行位于所述当前节点的目标方向的子树,且所述当前节点的状态为与所述目标方向相反的目标状态时,保持所述目标状态不变,包括:
当至少一个所述目标缓存行位于所述当前节点的第一方向的子树,且所述当前节点的状态为第二状态,则保持第二状态不变;
当至少一个所述目标缓存行位于所述当前节点的第二方向的子树,且所述当前节点的状态为第一状态,则保持第一状态不变。
7.根据权利要求1或2所述的方法,其特征在于,所述基于所述目标缓存行对所述访问请求进行并行处理,包括:
按照先进先出顺序,分别从所述目标缓存行进行数据读写得到所述访问请求的处理结果。
8.根据权利要求7所述的方法,其特征在于,所述按照先进先出顺序,从所述目标缓存行进行数据读写得到所述访问请求的处理结果之前,还包括:
当所述目标匹配结果为失配时,从外部存储器读取对应的数据,并更新至所述目标缓存行。
9.一种缓存装置,其特征在于,所述装置包括:
缓存模块,包括多个缓存行;
信息记录模块,用于记录所述缓存模块中各所述缓存行的缓存信息;
控制模块,用于接收至少两个访问请求,所述访问请求是对缓存的读写操作请求,缓存每个时钟周期并行接收至少两个访问请求;将各所述访问请求与匹配二叉树进行匹配得到目标匹配结果,并基于所述目标匹配结果确定所述缓存模块中与各所述访问请求对应的目标缓存行,基于所述匹配结果更新所述信息记录模块中的缓存信息以及所述匹配二叉树;
暂存模块,用于暂存所述目标匹配结果,并基于所述目标缓存行对所述访问请求进行并行处理;
输出模块,用于输出所述目标缓存行的处理结果;
所述控制模块还用于将所述访问请求与所述匹配二叉树进行匹配检测,得到初始匹配结果;基于所述初始匹配结果以及所述匹配二叉树,得到目标匹配结果;
所述控制模块还用于当所述初始匹配结果为均匹配时,将所述初始匹配结果作为目标匹配结果;当所述初始匹配结果中既存在匹配的结果,又存在失配的结果时,锁定所述匹配二叉树中匹配的第一缓存行,并从所述匹配二叉树中检索与失配的所述访问请求对应的第二缓存行,基于所述第一缓存行和所述第二缓存行得到目标匹配结果;当所述初始匹配结果为均失配时,从所述匹配二叉树中检索与失配的所述访问请求对应的第三缓存行,基于所述第三缓存行得到目标匹配结果;
所述控制模块还用于根据匹配二叉树的节点状态搜索最老缓存行,作为与失配的所述访问请求对应的第二缓存行,若所述最老缓存行被锁定,则继续检查次老缓存行,直至找到与失配的所述访问请求对应的第二缓存行。
10.根据权利要求9所述的装置,其特征在于,所述控制模块还用于当所述访问请求需要的缓存行相同时,从所述匹配二叉树中获取与失配的所述访问请求对应的第三缓存行,且各所述访问请求对应的第三缓存行相同;当所述访问请求需要的缓存行不相同时,从所述匹配二叉树中获取与失配的所述访问请求对应的第三缓存行。
CN202211614514.7A 2022-12-15 2022-12-15 访问请求处理方法以及缓存装置 Active CN116340205B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211614514.7A CN116340205B (zh) 2022-12-15 2022-12-15 访问请求处理方法以及缓存装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211614514.7A CN116340205B (zh) 2022-12-15 2022-12-15 访问请求处理方法以及缓存装置

Publications (2)

Publication Number Publication Date
CN116340205A CN116340205A (zh) 2023-06-27
CN116340205B true CN116340205B (zh) 2024-04-12

Family

ID=86888244

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211614514.7A Active CN116340205B (zh) 2022-12-15 2022-12-15 访问请求处理方法以及缓存装置

Country Status (1)

Country Link
CN (1) CN116340205B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117349198A (zh) * 2023-11-30 2024-01-05 摩尔线程智能科技(北京)有限责任公司 缓存行替换方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014189344A1 (ko) * 2013-05-24 2014-11-27 고려대학교 산학협력단 캐시 장치 및 캐시 운영 방법
CN109597915A (zh) * 2018-09-18 2019-04-09 北京微播视界科技有限公司 访问请求处理方法和装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7020748B2 (en) * 2003-01-21 2006-03-28 Sun Microsystems, Inc. Cache replacement policy to mitigate pollution in multicore processors
US7055004B2 (en) * 2003-09-04 2006-05-30 International Business Machines Corporation Pseudo-LRU for a locking cache
US7917700B2 (en) * 2007-10-25 2011-03-29 International Business Machines Corporation Method and cache control circuit for replacing cache lines using alternate PLRU algorithm and victim cache coherency state
US20090113137A1 (en) * 2007-10-30 2009-04-30 Grayson Brian C Pseudo least recently used (plru) cache replacement
US8180969B2 (en) * 2008-01-15 2012-05-15 Freescale Semiconductor, Inc. Cache using pseudo least recently used (PLRU) cache replacement with locking

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014189344A1 (ko) * 2013-05-24 2014-11-27 고려대학교 산학협력단 캐시 장치 및 캐시 운영 방법
CN109597915A (zh) * 2018-09-18 2019-04-09 北京微播视界科技有限公司 访问请求处理方法和装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Adapting cache partitioning algorithms to pseudo-LRU replacement policies;Kamil Kędzierski;《2010 IEEE International Symposium on Parallel & Distributed Processing (IPDPS)》;20100524;1-12 *
H. Ghasemzadeh.Modified pseudo LRU replacement algorithm.《13th Annual IEEE International Symposium and Workshop on Engineering of Computer-Based Systems (ECBS'06)》.2006,1-6. *
PLRU替换算法在嵌入式系统cache中的实现;李洪;《微处理机》;20100215;第31卷(第01期);16-19 *

Also Published As

Publication number Publication date
CN116340205A (zh) 2023-06-27

Similar Documents

Publication Publication Date Title
US10303596B2 (en) Read-write control method for memory, and corresponding memory and server
JP6356675B2 (ja) 集約/グループ化動作:ハッシュテーブル法のハードウェア実装
US6901483B2 (en) Prioritizing and locking removed and subsequently reloaded cache lines
US8386746B2 (en) Storage unit management methods and systems
US6490666B1 (en) Buffering data in a hierarchical data storage environment
US8095728B2 (en) Method and system for power aware I/O scheduling
US8533397B2 (en) Improving performance in a cache mechanism by way of destaging data in partial strides
CN109085997A (zh) 用于非易失性存储器的存储器高效持续键值储存
CN101187898A (zh) 管理非易失性存储器的设备和方法
US11314689B2 (en) Method, apparatus, and computer program product for indexing a file
CN104503703B (zh) 缓存的处理方法和装置
CN110555001B (zh) 数据处理方法、装置、终端及介质
CN114860785B (zh) 缓存数据处理系统、方法、计算机设备和存储介质
US11269772B2 (en) Persistent memory storage engine device based on log structure and control method thereof
CN116340205B (zh) 访问请求处理方法以及缓存装置
CN110968269A (zh) 基于scm与ssd的键值存储系统及读写请求处理方法
CN111177143A (zh) 键值数据存储方法、装置、存储介质与电子设备
CN114817341A (zh) 访问数据库的方法和装置
CN107766258A (zh) 内存存储方法与装置、内存查询方法与装置
KR20160121819A (ko) 이종 메모리 기반 데이터 관리 장치
US20230281125A1 (en) Method and device for selecting cache line to be replaced, and storage medium
US11055025B2 (en) Semiconductor memory device performing command merge operation and operation method thereof
US8533398B2 (en) Combination based LRU caching
CN116719646A (zh) 热点数据处理方法、装置、电子装置和存储介质
CN115878625A (zh) 数据处理方法和装置及电子设备

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