CN114924999A - 一种高速缓存管理方法、装置、系统、设备及介质 - Google Patents

一种高速缓存管理方法、装置、系统、设备及介质 Download PDF

Info

Publication number
CN114924999A
CN114924999A CN202210856082.4A CN202210856082A CN114924999A CN 114924999 A CN114924999 A CN 114924999A CN 202210856082 A CN202210856082 A CN 202210856082A CN 114924999 A CN114924999 A CN 114924999A
Authority
CN
China
Prior art keywords
target
cache
operation request
request
target operation
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.)
Granted
Application number
CN202210856082.4A
Other languages
English (en)
Other versions
CN114924999B (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology 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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202210856082.4A priority Critical patent/CN114924999B/zh
Publication of CN114924999A publication Critical patent/CN114924999A/zh
Application granted granted Critical
Publication of CN114924999B publication Critical patent/CN114924999B/zh
Priority to PCT/CN2023/071904 priority patent/WO2024016617A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking

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

本发明涉及缓存管理领域,公开了一种高速缓存管理方法、装置、系统、设备及介质,包括:存储系统高速缓存管理器接收目标用户发送的目标操作请求,通过流水线方式处理目标操作请求,以便利用目标操作请求对缓存行执行对应的处理操作;将目标操作请求的处理结果反馈至目标用户,并通过软件高速缓存管理器根据处理结果执行对应的高速缓存维护操作。可见,在本方案中,针对实时性要求较低的高速缓存维护操作,可通过软件高速缓存管理器实现,针对实时性要求较高的操作请求,可通过存储系统高速缓存管理器以流水线方式并行处理,降低缓存行操作的处理延迟,提高高速缓存管理的实时性。

Description

一种高速缓存管理方法、装置、系统、设备及介质
技术领域
本发明涉及缓存管理技术领域,更具体地说,涉及一种高速缓存管理方法、装置、系统、设备及介质。
背景技术
在计算机系统中,Cache是一种用于存放少量,且需要被快速访问的临时数据的一种存储器,例如常见的位于CPU(central processing unit,中央处理器)和主存储器之间的CPU Cache。而在外部存储系统中,磁盘或者固态硬盘由于其存储介质的物理特性,拥有各自不同的访问延迟。这个延迟一般是远远大于主存储器的访问延迟的。为了加快外部存储的访问速度,磁盘或者固态硬盘上一般使用DRAM(Dynamic Random Access Memory,动态随机存取存储器)作为盘上数据Cache。更进一步的,对于位置处于磁盘、固态盘和主机CPU之间的存储加速卡,例如Raid(Redundant Arrays of Independent Disks,磁盘阵列)卡这类设备,为了提高整个存储系统的性能,也需要具备Cache。
在实践中,一个外部存储的Cache管理系统一般至少需要支持以下功能:
1、Cache entry和Cache line的申请和释放;其中,Cache line为缓存行,是Cache操作的基本单位;Cache entry特指在存储Cache系统中管理Cache Line的节点,与CacheLine一一对应且指向Cache Line;
2、Cache entry到Cache line的映射;
3、Cache hit/miss的判断;其中,Cache Hit为Cache 命中,表示某次访问时,需要被操作的数据在Cache中被找到;Cache Miss为Cache 未命中,表示某次访问时,需要被操作的数据未在Cache中被找到;
4、保证Cache Line和外部存储数据的一致性。
在外部存储系统中,基于CPU软件实现的Cache管理系统较为常见。一般使用哈希表的形式来组织和存储Cache Entry。参见图1,为哈希表示意图;如图1所示,多个CacheEntry存放在一个哈希表(Hash Table)中,Hash值(散列,是把任意长度的输入数据(key)通过散列算法变换成固定长度的输出,是一种压缩映射)相同的Cache Entry存放在同一个双向链表中。而属于同一个存储介质的(例如硬盘驱动器HDD_0或Logic Drive 0)的CacheEntry使用则使用另外一个双向链表(虚线)连接。哈希表中的每个Cache Entry都指向一条Cache line。
但是,该方案的主要缺点有:
1、软件负责的Cache管理,包括分配,释放和Cache hit/miss检测,往往需要遍历链表,导致耗时较长且时延抖动,对实时性无法保证。
2、当有多个Cache访问者进行Cache操作时,往往需要软件使用互斥锁等机制来串行进行,由于被保护的临界区耗时较长,使得多个请求需排队等待,影响了吞吐率,CPU单核性能成为了系统性能瓶颈。
因此,如何降低Cache操作的延迟,提高Cache管理的实时性,是本领域技术人员需要解决的问题。
发明内容
本发明的目的在于提供一种高速缓存管理方法、装置、系统、设备及介质,以降低Cache操作的延迟,提高Cache管理的实时性。
为实现上述目的,本发明提供一种高速缓存管理方法,所述高速缓存管理方法应用于存储系统高速缓存管理器,所述高速缓存管理方法包括:
接收目标用户发送的目标操作请求;
通过流水线方式处理所述目标操作请求,以便利用所述目标操作请求对缓存行执行对应的处理操作;
将所述目标操作请求的处理结果反馈至所述目标用户,并通过软件高速缓存管理器根据所述处理结果执行对应的高速缓存维护操作。
其中,利用所述目标操作请求对缓存行执行对应的处理操作,包括:
根据所述目标操作请求中的键值计算目标哈希值;
利用所述目标哈希值在目标数据表中进行查表;
若未查找到对应的目标地址,则输出对应的查询结果;若查找到目标地址,则根据所述目标地址在对应的缓存条目表中进行检索,并将检索到的键值与所述目标操作请求的键值进行比较,输出对应的查询结果;
根据查询结果及所述目标操作请求执行对应的处理操作。
其中,根据所述目标操作请求中的键值计算目标哈希值之前,还包括:
利用仲裁规则对各目标操作请求进行优先级排序。
其中,所述利用仲裁规则对各目标操作请求进行优先级排序之后,还包括:
若所述目标操作请求为分配请求,则判断所述分配请求是否超出剩余配额;
若否,则继续执行根据所述目标操作请求中的键值计算目标哈希值的步骤;若是,则根据超额配置模式处理所述目标操作请求。
其中,所述判断所述分配请求是否超出剩余配额,包括:
确定所述分配请求的键值;
根据所述分配请求的键值确定对应的缓存计数;
判断所述缓存计数加一后是否大于对应的第一门限值;
若是,则判定所述分配请求超出剩余配额;若否,则判断所述缓存计数加一后的全局计数是否大于对应的第二门限值;
若大于对应的第二门限值,则判定所述分配请求超出剩余配额;若不大于对应的第二门限值,则判定所述分配请求未超出剩余配额。
其中,所述根据超额配置模式处理所述目标操作请求,包括:
若所述超额配置模式为警告模式,则继续根据所述目标操作请求中的键值计算目标哈希值,并生成对应的事件信息发送至所述软件高速缓存管理器;
若所述超额配置模式为阻塞模式,则直接生成处理失败的处理结果。
其中,根据所述目标操作请求中的键值计算目标哈希值,利用所述目标哈希值在目标数据表中进行查表,包括:
根据各目标操作请求中的键值计算对应的目标哈希值,并将目标操作请求及对应的目标哈希值存储至第一目标队列;
从所述第一目标队列中获取未查表的目标操作请求的目标哈希值,根据获取的目标哈希值在目标数据表中进行查表;
将已查表的目标操作请求及对应的目标哈希值从所述第一目标队列中删除,并添加至第二目标队列;
若接收到目标操作请求已处理的通知信息,则将与所述通知信息对应的目标操作请求及对应的目标哈希值从所述第二目标队列中删除。
其中,所述根据各目标操作请求中的键值计算对应的目标哈希值之后,还包括:
判断所述目标哈希值与目标队列中操作请求的哈希值是否碰撞;所述目标队列包括所述第一目标队列及所述第二目标队列;
若否,则继续执行将目标操作请求及对应的目标哈希值存储至第一目标队列的步骤;
若是,则暂缓将目标操作请求及对应的目标哈希值存储至第一目标队列,若检测到所述目标队列中不存在与所述目标哈希值碰撞的哈希值,则继续执行将目标操作请求及对应的目标哈希值存储至第一目标队列的步骤。
其中,所述目标操作请求为以下请求中的任意一者:分配请求、释放请求、检查请求、锁定请求、解锁请求、设置请求。
其中,所述接收目标用户发送的目标操作请求,包括:
接收硬件高速缓存用户发送的目标操作请求,或者软件高速缓存用户通过所述软件高速缓存管理器发送的目标操作请求。
其中,将所述目标操作请求的处理结果反馈至所述目标用户,并通过软件高速缓存管理器根据所述处理结果执行对应的高速缓存维护操作,包括:
若所述目标操作请求为所述硬件高速缓存用户发送的请求,则将所述目标操作请求的响应信息发送至所述硬件高速缓存用户,并生成与所述响应信息对应的事件信息发送至所述软件高速缓存管理器,以便所述软件高速缓存管理器根据所述事件信息执行对应的高速缓存维护操作;
若所述目标操作请求为所述软件高速缓存用户发送的请求,则将所述目标操作请求的响应信息发送至所述软件高速缓存用户,以便所述软件高速缓存管理器根据所述响应信息执行对应的高速缓存维护操作。
为实现上述目的,本发明进一步提供一种高速缓存管理装置,所述高速缓存管理装置应用于存储系统高速缓存管理器,所述高速缓存管理装置包括:
接收模块,用于接收目标用户发送的目标操作请求;
处理模块,用于通过流水线方式处理所述目标操作请求,以便利用所述目标操作请求对缓存行执行对应的处理操作;
发送模块,用于将所述目标操作请求的处理结果反馈至所述目标用户,并通过软件高速缓存管理器根据所述处理结果执行对应的高速缓存维护操作。
为实现上述目的,本发明进一步提供一种高速缓存管理系统,包括:
存储系统高速缓存管理器,用于接收目标用户发送的目标操作请求,通过流水线方式处理所述目标操作请求,以便利用所述目标操作请求对缓存行执行对应的处理操作;将所述目标操作请求的处理结果反馈至所述目标用户;
软件高速缓存管理器,用于根据所述处理结果执行对应的高速缓存维护操作。
为实现上述目的,本发明进一步提供一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述高速缓存管理方法的步骤。
为实现上述目的,本发明进一步提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述高速缓存管理方法的步骤。
通过以上方案可知,本发明实施例提供的一种高速缓存管理方法,该高速缓存管理方法应用于存储系统高速缓存管理器,具体包括如下内容:接收目标用户发送的目标操作请求;通过流水线方式处理目标操作请求,以便利用目标操作请求对缓存行执行对应的处理操作;将目标操作请求的处理结果反馈至目标用户,并通过软件高速缓存管理器根据处理结果执行对应的高速缓存维护操作。
可见,在本方案中,针对实时性要求较低的高速缓存维护操作,可通过软件高速缓存管理器实现,针对实时性要求较高的操作请求,可通过存储系统高速缓存管理器以硬件流水线方式并行处理,降低缓存行操作的处理延迟,提高高速缓存管理的实时性。
本方案还公开了一种高速缓存管理装置、系统、设备及介质,同样能实现上述技术效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为哈希表示意图;
图2为本发明实施例公开的一种高速缓存管理方法流程示意图;
图3为本发明实施例公开的一种Cache管理系统结构示意图;
图4a为本发明实施例公开的一种操作请求的格式定义图;
图4b为本发明实施例公开的一种处理结果的格式定义图;
图5为本发明实施例公开的操作请求与响应信息对应关系示意图;
图6为本发明实施例公开的状态转换示意图;
图7为本发明实施例公开的一种目标操作请求处理流程示意图;
图8为本发明实施例公开的一种硬件Cache管理器的整体结构示意图;
图9为本发明实施例公开的限额模块工作流程示意图;
图10为本发明实施例公开的Cache Line Lookup 引擎结构示意图;
图11为本发明实施例公开的请求节流模块结构示意图;
图12为本发明实施例公开的Multibin哈希表结构示意图;
图13a为本发明实施例公开的一种以流水线的方式处理操作请求的示意图;
图13b为本发明实施例公开的另一种以流水线的方式处理操作请求的示意图;
图14为本发明实施例公开的一种软件Cache管理器的结构示意图;
图15为本发明实施例公开的一种高速缓存管理装置结构示意图;
图16为本发明实施例公开的一种电子设备结构示意图。
具体实施方式
目前,外部存储设备中的Cache能够为存储系统带来以下优点:
1.当主机向外部存储系统写入数据时,数据可以先写入Cache进行暂存并立即向主机返回“写成功”,减少访问延迟。
2. 需要写入存储介质的数据,可以在Cache中排列成对存储介质更友好的方式,批量写入,提升吞吐率。
3. 主机读取数据时,如果Cache hit,则直接从Cache中把读取的数据返回。减少访问延迟。而且,Cache系统还可以根据读取数据的特征,从存储介质中选择性的预先读取可能将要被访问的数据放入Cache中,提升Cache hit的概率。
4. Cache系统根据主机访问数据的特征,把数据区分为冷热数据。进一步的,把经常被访问的热数据保留在Cache中,而把很少使用的冷数据落盘。提升Cache的使用效率。
在外部存储系统中,基于CPU软件实现的Cache管理系统较为常见,虽然该方案具有如下优点:软件对链表的长度没有限制,灵活性高;Cache Entry可以动态分配,利用率高;Cache Entry的冷热关系可以由链表中的位置表示;但是,通过CPU软件实现的Cache管理的方式,存在操作耗时较长、对实时性无法保证、影响了吞吐率等问题。
因此本发明提供了一种高速缓存管理方法、装置、系统、设备及介质,以降低Cache操作的延迟,提高Cache管理的实时性。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图2,本发明实施例提供的一种高速缓存管理方法流程示意图,该高速缓存管理方法应用于存储系统高速缓存管理器,该高速缓存管理方法包括如下步骤:
S101、接收目标用户发送的目标操作请求;
在本实施例中,对Cache进行管理主要通过存储系统高速缓存管理器和软件高速缓存管理器两部分,在本实施例中,高速缓存即为Cache。其中,存储系统高速缓存管理器可以理解为硬件Cache管理器,其主要负责高实时性的、逻辑相对简单的任务,例如:对缓存行执行的处理操作,包括:Cache分配、释放,以及Cache hit/miss查询等。而软件高速缓存管理器即为软件Cache管理器,其主要处理实时性要求相对较低,但逻辑复杂的Cache维护操作,例如冷热数据的维护,Cache落盘策略实现等。
参见图3,为本发明实施例公开的一种Cache管理系统结构示意图,该Cache管理系统包括硬件Cache管理器及软件Cache管理器,该硬件Cache管理器具体用于接收硬件高速缓存用户发送的目标操作请求,或者软件高速缓存用户通过软件高速缓存管理器发送的目标操作请求,其中,该硬件高速缓存用户为硬件Cache用户,是可以发起Cache业务请求的外部硬件模块,软件高速缓存用户为软件Cache用户,是可以发起Cache业务请求的外部软件模块。硬件Cache管理器向硬件Cache用户和软件Cache管理器分别提供请求和响应的信号或寄存器接口,并按照Cache管理系统定义的格式发起请求和接收响应。软件Cache管理器向软件Cache用户提供Cache操作API(Application Programming Interface,应用程序编程接口)接口,软件Cache用户发起的操作请求通过软件Cache管理器发送给硬件Cache管理器。
需要说明的是,硬件Cache管理器所接收的硬件Cache用户或软件Cache用户发送的Cache请求均为操作请求,在本实施例中,将硬件Cache管理器当前接收的操作请求称为目标操作请求。并且, Cache管理系统以device_id(驱动器设备号)和lba(Logical blockaddressing,逻辑区块地址)建立对缓存行Cache Line的索引,仅支持固定大小的CacheLine。Device代表一个逻辑或者物理存储设备。参见图4a,为本发明实施例公开的一种操作请求的格式定义图,在图4a中,各字段定义如下:
Requester:标识请求发起方,包含User_type及User_id;
User_type:用来区分硬件Cache用户及软件Cache用户;
User_id:有多个硬件Cache用户/软件Cache用户时,使用User_id区分;
Request Seq:每个硬件Cache用户/软件Cache用户发送请求的请求序号,从0开始,每个请求加1;
Key:用来进行Cache操作的参数数据元组,包含device_id及lba;在本实施例中,该Key的具体数值通过键值表示;
device_id:驱动器设备号;
lba:Cache Line对应的Device LBA地址;
Action:表示请求是哪种操作,可能是以下操作中的一种:
alloc:分配Cache Line;
free:释放Cache Line;
check: 检测数据是否在Cache Line;
Lock: 锁定Cache Line,锁定后不能free,且Check返回locked;
Unlock: 解锁Cache Line;
Set Modify: 设置Cache数据状态为“已修改”;
Set Invalid: 设置Cache Line数据状态为“无效”。
可以看出,本申请可根据操作请求中的Action确定目标操作请求具体为哪种类型的操作请求,在本实施例中,该目标操作请求为以下请求中的任意一者:分配请求、释放请求、检查请求、锁定请求、解锁请求、设置请求。
S102、通过流水线方式处理目标操作请求,以便利用目标操作请求对缓存行执行对应的处理操作;
具体来说,本实施例中的硬件Cache管理器允许软件Cache用户和硬件Cache用户以异步的方式提交多个操作请求。硬件Cache管理器接收到软件Cache用户和硬件Cache用户发起的操作请求时,使用硬件流水线的方式处理这些请求,以达到Cache请求处理的高吞吐率。
S103、将目标操作请求的处理结果反馈至目标用户,并通过软件高速缓存管理器根据处理结果执行对应的高速缓存维护操作。
具体来说,由于本方案中的目标用户可以为硬件Cache用户及软件Cache用户,因此本方案在反馈处理结果时,需要确定目标操作请求具体是哪个用户发送的,然后将操作结果反馈至对应用户。具体来说,本方案中的处理结果包括:响应信息及事件信息两种,若目标操作请求为硬件高速缓存用户发送的请求,则将目标操作请求的响应信息发送至硬件高速缓存用户,并生成与该响应信息对应的事件信息发送至软件高速缓存管理器,以便软件高速缓存管理器根据事件信息执行对应的高速缓存维护操作;若目标操作请求为软件高速缓存用户发送的请求,则将目标操作请求的响应信息发送至软件高速缓存用户,以便软件高速缓存管理器根据响应信息执行对应的高速缓存维护操作。也就是说,本申请中的硬件Cache管理器在响应软件Cache用户的操作请求时,通过响应信息通知软件Cache管理器,硬件Cache管理器在响应硬件Cache用户发起的请求时,不仅需要将响应信息发送给硬件Cache用户,还需要通过事件上报的方式异步通知软件Cache管理器,包括Cache分配、使用、查询等行为,通过该方式,使得软件Cache管理器可从响应/事件中提取有用的信息,完成各种复杂的Cache维护工作。如:对某个Device的Cache Line进行冷热数据排序,或者对连续地址的Cache Line进行连接等等。
参见图4b,为本发明实施例公开的一种处理结果的格式定义图,图4a与图4b中相同字段在此并不赘述。处理结果中各字段定义如下:
SW Hash Value:由硬件Cache管理器代为计算的,由软件Cache管理器检索CacheEntry的哈希值;
Type:用来区分响应信息还是事件信息;
Response:表示处理结果为响应信息;
Event:表示处理结果为事件信息;
Result:表示请求成功或失败;
Ok:表示请求处理成功;
Fail:表示请求处理失败;
Status:表示成功或失败的原因,是一个数据元组,包含:Invalid/Modified、Miss、Col、Qouta及Locked/Unlocked;
Invalid/Modified: 表示Cache系统中有对应的Cache Line,且状态为Invalid(无效)或Modified(被修改)两种状态之一;
Miss:表示Cache miss,即未找到对应的Cache Line;
Col:collision,表示硬件Cache管理器中由于哈希冲突,导致无法分配CacheLine;
Qouta:表示请求的Cache Line请求超过了某个配额规则的限制。
Locked/Unlocked:表示Cache系统中有对应的Cache Line,且状态为locked或unlocked两种状态之一;
Response/ Event Data Length:响应或者事件的附加数据的长度;
Response/ Event Data:响应或者事件的附加数据。对于Alloc、hit、check命令的响应和事件,其内容为Cache Entry;仅当Alloc申请block超过限额的响应或事件,其内容为限额模块内对应的超限表项。
参见图5,为本发明实施例公开的操作请求与响应信息对应关系示意图。可以看出,不同的操作请求根据操作结果生成不同的响应信息。当然,图5所示的对应关系仅仅为请求和可能收到的响应之间的对应关系,在实际应用中,本方案并不仅仅局限于图5所示的对应关系。
参见图6,为本发明实施例提供的状态转换示意图,如图6所示,对于每个CacheLine来说,可能的状态包括:Not Cached、Invalid、Invalid&locked、Modify、Modify&locked,通过外部输入的操作请求,控制Cache Line的状态在多个状态间跳转。其中, NotCache表示尚未纳入Cache管理器管理的Cache Line的状态,并不在Cache管理器中记录;申请Cache Line后状态变为Invalid,表示Cache Line已申请但是Cache Line中的数据是无效的;如果硬件或软件Cache用户需要独占某个Cache Line,则可以通过lock命令把CacheLine改变为Lock状态,如:Invalid&locked及Modify& locked,处于Lock状态时Cache Line不支持Free,也不能被再次lock。如果需要标记Cache Line中的数据是否被改写,则可以通过Set State Modify命令转换Cache Line为Modify。处于Modify状态时Cache Line不支持Free。
需要说明的是,对Lock状态和Modify状态的使用完全是由Cache管理器的用户决定的。在实际的应用中,用户可根据实际的需求,仅使用Action和Cache Line状态的子集。例如:
1、仅支持最基本的Cache分配,释放和hit/miss check功能。
Action:Alloc/Free/Check ;
State: Not Cached/Invalid;
2、在最基本的Cache功能上,增加对Cache Line锁的支持。
Action:Alloc/Free/Check/Lock/Unlock;
State: Not Cached/Invalid/Invalid locked;
3、在最基本的Cache功能上,增加对Cache Line Modify和Invalid状态的支持。
Action:Alloc/Free/Check/Set M/ Set I;
State: Not Cached/Invalid/Modified;
4、全功能模式,包含所有的Action和State。
综上可见,在本方案中,通过软件和硬件相结合的方式对Cache进行管理,针对实时性要求较低的Cache维护操作,可通过软件Cache管理器实现,针对实时性要求较高的操作请求,可通过硬件Cache管理器以流水线方式并行处理,降低缓存行操作的处理延迟,提高Cache管理的实时性。
参见图7,为本发明实施例提供的一种目标操作请求处理流程示意图,如图7所示,本实施例对S102利用目标操作请求对缓存行执行对应的处理操作的过程进行说明,该过程具体包括如下步骤:
S201、利用仲裁规则对各目标操作请求进行优先级排序;
参见图8,为本发明实施例提供的一种硬件Cache管理器的整体结构示意图,在本实施例中,对于硬件和软件Cache用户发起的多路Cache Line操作请求,会在硬件Cache管理器内先进入FIFO(First Input First Output,先进先出)队列进行缓冲,之后在仲裁器内通过一定的规则仲裁后,输出到限额模块。在本实施例中,仲裁器中设置的仲裁规则可根据实际需求进行设定,如:设置硬件Cache用户发送的操作请求的优先级高于软件Cache用户发送的操作请求的优先级,那么进行优先级排序时,需要将硬件Cache用户发送的操作请求排在软件Cache用户发送的操作请求之前,以便根据各操作请求的优先级排序,依次将各操作请求输入限额模块,继续执行后续步骤。
S202、若目标操作请求为分配请求,则判断分配请求是否超出剩余配额;
若是,则执行S203;若否,则执行S204;
S203、根据超额配置模式处理目标操作请求;
其中,在S202中判断分配请求是否超出剩余配额时,需要确定分配请求的键值;根据分配请求的键值确定对应的缓存计数;判断缓存计数加一后是否大于对应的第一门限值;若是,则判定分配请求超出剩余配额;若否,则判断缓存计数加一后的全局计数是否大于对应的第二门限值;若大于对应的第二门限值,则判定所述分配请求超出剩余配额;若不大于对应的第二门限值,则判定所述分配请求未超出剩余配额。
具体来说,本方案中的限额模块负责各Device和全局的Cache配额管理,当输入的Alloc分配请求没有超过剩余配额时,限额模块转发该分配请求到缓存行查找引擎(即图10的Cache Line lookup引擎),如果超出,则限额模块拦截此分配请求,并发送超出限额响应到响应器。
具体来说,本方案中的限额模块实现了若干个逐盘的Cache计数器和门限值的表项,以及若干个全局Cache门限表项。参见图9,为本发明实施例提供的限额模块工作流程示意图,通过图9可以看出,接收到操作请求Request后,对于分配请求Alloc,限额模块提取Alloc分配请求的key中的device id项,并在限额表项中读取对应的缓存计数Cachecounter。计算缓存计数Cache Counter加1后的值是否大于第一门限值Threshold(T_hold)。同理,并行检查所有的全局表项。如果计算结果均小于对应的第二门限值,则允许该分配请求通过,并转发给Cache Line lookup引擎,否则返回Fail的响应给响应器。
需要说明的是,若Cache Counter加1后的值大于门限,或者所有的全局表项的值大于门限,此时可根据超额配置模式来决定如何处理该操作请求。具体来说,每个表项的超额配置模式可配置为警告(Warning)模式或阻塞(Blocking)模式。若超额配置模式为警告模式,则继续执行S204,并生成对应的事件信息发送至软件高速缓存管理器;若超额配置模式为阻塞模式,则直接生成处理失败的处理结果。也就是说:在警告模式下,当检测超过门限后,仍会向后转发请求,但同时会通过响应器上报事件给软件Cache管理器。在阻塞模式下,限额向响应器直接返回Fail 响应,响应器收到从限额模块发来的Fail后,若是软件chche用户发起的操作请求,则上报响应信息给软件Cache管理器,若是硬件Cache用户发起的操作请求,则上报响应信息给硬件Cache用户后,还需要复制一份事件信息上报给软件Cache管理器。
S204、根据目标操作请求中的键值计算目标哈希值;
S205、利用目标哈希值在目标数据表中进行查表;
其中,本实施例中的S204和S205具体包括如下内容:根据各目标操作请求中的键值计算对应的目标哈希值,并将目标操作请求及对应的目标哈希值存储至第一目标队列;从第一目标队列中获取未查表的目标操作请求的目标哈希值,根据获取的目标哈希值在目标数据表中进行查表;将已查表的目标操作请求及对应的目标哈希值从第一目标队列中删除,并添加至第二目标队列;若接收到目标操作请求已处理的通知信息,则将与通知信息对应的目标操作请求及对应的目标哈希值从第二目标队列中删除。
进一步的,在本实施例中,为了避免出现哈希碰撞现象,本方案根据各目标操作请求中的键值计算对应的目标哈希值之后,还需要判断目标哈希值与目标队列中操作请求的哈希值是否碰撞;该目标队列包括第一目标队列及第二目标队列;若否,则继续将目标操作请求及对应的目标哈希值存储至第一目标队列;若是,则暂缓将目标操作请求及对应的目标哈希值存储至第一目标队列,若检测到目标队列中不存在与目标哈希值碰撞的哈希值,则继续将目标操作请求及对应的目标哈希值存储至第一目标队列。
具体来说,在本实施例中,Cache Line lookup引擎主要负责查表并输出查询结果,并将操作请求及查询结果输出给命令处理引擎。参见图10,为本发明实施例提供的Cache Line Lookup 引擎结构示意图。通过图10可以看出,Cache Line Lookup引擎收到操作请求后,先送往其内部的请求节流模块对操作请求进行缓冲,请求节流模块负责控制命令下发的时机,保证在任意的时刻,在其后的输入的操作请求与请求节流模块中排队等待的所有请求没有哈希碰撞,其中:哈希碰撞是指两个内容不相同的key通过hash计算后,获得的输出值一样,则是一个哈希碰撞(Collision)。同时,该请求节流模块也从key指计算出了用于查表的目标哈希值,在本实施例中,该目标哈希值包括:row,signature和CAM val。用于分别查Multibin hash table和CAM表。
参见图11,为本发明实施例提供的请求节流模块结构示意图,通过图11可以看出,请求节流模块从限额模块接收到操作请求后,送入请求 FIFO队列。经过FIFO队列缓冲过的操作请求的Key被依次送入三个哈希函数计算模块进行计算得到目标哈希值,目标哈希值包括row,sig和CAM val这三个值,这三个值与原始的请求合并作为一个查表元素LE(lookup element)。在Throttle节流子模块的控制下,转发至LE Send Queue(查表元素发送队列)。LE Send Queue中暂存的是待送往下游模块查表的LE。LE output模块(查表元素输出模块)会在next_stage_ready信号(下一阶段就绪)的控制下,从LE Send Queue中读取去LE,并把LE送往目标数据表进行查表,在本方案中,目标数据表包括mutilbin哈希表和CAM进行;同时,LE output模块会把送去查表的LE拷贝一份送往LE response Queue(查表元素响应队列)。需要说明的是,命令处理引擎每处理完一个操作请求会,便会向Sink模块发送完成请求的ID信息,Sink模块将该请求 ID信息与LE response Queue的队首元素进行对比,如果匹配,则从LE response Queue读出一个LE并丢弃。
通过上述内容可以看出,本方案在任意时刻均需要检测目标哈希值与目标队列(第一目标队列及第二目标队列)中操作请求的哈希值是否碰撞,该目标哈希值是指待进入LE Send Queue的LE中的哈希值,目标队列是指LE Send Queue(第一目标队列)和LEresponse Queue(第二目标队列),也即:本方案需要将LE Send Queue和LE responseQueue的所有元素与待进入LE Send Queue的LE进行对比,仅当Row,Sig和CAM val不冲突的情况下,才允许LE通过Throttle模块进入LE Send Queue。否则,则阻塞当前LE,并等待LESend Queue和LE response Queue中相冲突的LE服务完毕,即被Sink丢弃后才放行。通过此机制,能够保证有冲突的多个请求的从查表到执行(命令处理引擎)的过程是串行的,而不冲突的请求是按照流水的方式并发执行的。
S206、若未查找到对应的目标地址,则输出对应的查询结果;若查找到目标地址,则根据目标地址在对应的缓存条目表中进行检索,并将检索到的键值与目标操作请求的键值进行比较,输出对应的查询结果;
具体来说,本实施例中的Cache Line Lookup引擎的内部有两个查表机制,该目标数据表包括: Multibin哈希表和CAM表。参见图10,请求节流输出操作请求的三个哈希值后,需要在Multibin哈希表和CAM表中进行查表。参见图12,为本发明实施例提供的Multibin哈希表结构示意图,Multibin哈希表是一个二维的哈希表,有2^m行和2^n列。当进行查表时,需要现根据输入的宽度为m的Row值来选定行,然后根据输入的signature值来进行每行数据的匹配。匹配输出的结果包括以下三项:
1. matched。为1表示匹配到了相同的signature值。
2. pointer。匹配上的signature的bin里,存放的pointer(指针)值。
3. first_free_bin。表示该行第一个空闲的bin的index。用于命令处理引擎插入新的表项时使用。
定义pointer = 0为非法值,在初始化时所有bin中元素初始化为0。
如图10所示,根据Row值和signature值在Multibin哈希表中查表后,可从匹配结果中输出指针,该指针可指向Cache Entry Table(缓存条目表)中的目标地址,同样的,根据CAM val值在CAM表进行查表后,可得出目标地址,若在这两个表中均未找到匹配的目标地址,则说明Cache Line未命中;若查找到指针/地址,则根据目标地址在对应的CacheEntry Table中进行检索,将检索结果中的Key的数值与操作请求中原始的Key的数值进行对比,如果对比后发现有完全匹配的项,则说明Cache Line命中,如果没有则说明CacheLine未命中,Cache Line的查询结果和原始操作请求会在拼接后发送给命令处理引擎。
S207、根据查询结果及目标操作请求执行对应的处理操作。
在本实施例中,命令处理引擎会根据Cache Line Lookup引擎发送的Cache Line查询结果,以及目标操作请求中的Action来做出对应的处理操作,包括从Cache Line分配器申请或释放Cache Line,更新Multibin哈希表和CAM,更新Cache Entry表,组织响应和事件发送给响应器,更新限额模块的计数。
需要说明的是,在本实施例中,命令处理引擎与Cache Line Lookup引擎配合,以多级流水线的方式并行完成各操作请求的处理。命令处理引擎流水线的每一级由一个状态机实现,当本级工作完成后,传递处理完的结果到流水线的下一级。参见图13a,为本发明实施例提供的一种以流水线的方式处理操作请求的示意图,图13a流水线中每一级的命名和功能描述如下:
Lookup: Cache Line查表,由Cache Line Lookup 引擎实现。
Execute:负责处理请求,提取Action并执行对应的操作。为后续流水线生成指令。
Update LK:更新Cache Line Lookup 引擎中的Multibin哈希表和CAM。
Update CL:更新Cache Entry Table。
Update 限额:更新限额模块中对应device id的counter和global counter。
Update CPL:通知Cache Line Lookup 引擎请求已经处理完毕。
响应: 把响应送往响应器。
需要说明的是,并不是所有类型的命令都需要每级流水线参与处理。参见图13b,为本发明实施例提供的另一种以流水线的方式处理操作请求的示意图,通过图13b所示,若某些命令不需要某一级流水线,则在执行时生成NOP指令跳过即可。
在本实施例中,Cache Line分配器管理Cache Line的申请和释放,当命令处理引擎发送Alloc操作命令时,Cache Line分配器其内部的Cache Line资源池获取一个CacheLine返回给命令处理引擎。当收到释放命令时,把释放的Cache Line存储内部的资源池。具体来说,Cache Line分配器是由一个传统的环形队列实现的,内部有头尾指针分别指向首节点和尾结点。在系统初始化时由软件Cache管理器填入所有的Cache Line。当收到有Alloc请求时,从头指针读出一个元素,之后头指针模加1。当收到Free请求时,把输入的元素放到尾指针,之后尾指针模加1。当队列空时,对Alloc请求返回失败。当队列满时,对Free请求返回失败。
在本实施例中,响应器负责接收限额和命令处理引擎发来的响应和事件,并根据响应中的信息区分是发送给硬件还是软件,如果需要发送给硬件,则直接通过硬件Cache用户的接口信号发送给对应的硬件Cache用户。如果需要发送给软件,则把响应转发给软件接口逻辑。软硬件接口逻辑内部负责接收软件Cache管理器下发的Cache操作请求,并将该操作请求发送至硬件Cache管理器,并汇聚硬件Cache管理器中的响应器发送的响应信息以及命令处理引擎发送的事件信息,并上报给软件Cache管理器。软硬件接口使用单一请求和响应队列,具体交互流程与NVMe的IO队列协议相同。
参见图14,为本发明实施例提供的一种软件Cache管理器的结构示意图,在本实施例中,软件Cache管理器是基于传统的软件Cache管理机制的一种实现。图14中软件Hash表部分与传统软件Cache Hash表管理逻辑相同。在此基础之上,软件Cache管理器增加了请求处理模块,该请求处理模块用于接收软件Cache用户的API调用,组织Cache操作请求和接收响应。响应,事件分流模块负责从响应,事件队列中获取响应信息及事件信息,队列中的响应信息及事件信息是硬件Cache管理器下发的,该响应信息及事件信息在软件Cache管理器内部区分并进行分流。事件信息直接路由给软件Hash表进行表项的更新,而响应信息则交由请求处理模块,在请求处理模块处理完响应后,也改为事件通知软件Hash表进行更新。
需要说明的是,本方案可适用于存储加速中,需要对存储介质进行Cache缓冲,而且硬件加速引擎和软件任务需要并行操作Cache的场景。为了对本方案进行详细说明,在此,分别对硬件Cache用户及软件Cache用户发起的操作请求进行处理的流程进行举例说明:
若以操作请求为硬件Cache用户发起的,在multibin哈希表中分配Cache Line的Alloc请求为例,则完整操作步骤如下:
1. 硬件Cache用户发送Cache Line操作请求,通过Arbiter_0发送给限额模块;
2. 限额模块检查Alloc请求的Device和Global门限项,发现没有超过剩余配额,限额模块转发请求到下游的Cache Line lookup模块;
3. Cache Line lookup收到请求后,完成Key的查找,发现multibin hash table没有Cache hit,输出结果到命令处理引擎模块;
5. 命令处理引擎发现是Alloc命令,而且multibin哈希表未命中。向AllocEngine申请并获得Cache Line;
6. 命令处理引擎更新Multibin哈希表对应Row的first_free_bin地址的CacheLine Entry为signature和pointer;
7. 命令处理引擎更新Cache Entry Table,内容包含Alloc分配获得的CacheLine地址;
8. 命令处理引擎向响应器发送响应信息;
9. 响应器向限额模块发送对应的Device ID 限额 Entry加1的指令;
10. 命令处理引擎向Cache Line lookup 模块发送completion Req ID;
11. 响应器向硬件Cache用户发送响应。
若以一个软件Cache用户发起的,在CAM中分配Cache Line的Alloc请求为例,则完整操作步骤如下:
1.软件Cache用户发送Cache Line操作请求,通过Arbiter_0发送给限额模块;
2. 限额模块检查Alloc请求的Device和Global门限项,发现没有超过剩余配额,限额模块转发请求到下游的Cache Line lookup模块;
3. Cache Line lookup收到请求后,完成Key的查找,发现multibin hash table已经冲突,且连读地址中没有空闲的entry。但是CAM中没有匹配项,输出结果到命令处理引擎模块;
5. 命令处理引擎根据Cache Line查询结果,向Alloc Engine申请并获得CacheLine;
6. 命令处理引擎更新CAM表,增加Cache Entry到CAM表;
7. 命令处理引擎更新CAM Cache Entry Table;
8. 命令处理引擎向响应器发送响应信息;
9. 命令处理引擎向Cache Line lookup 模块发送completion Req ID;
10.命令处理引擎向软件接口发送给响应信息;
11. 软件Cache管理器从接口读取响应,计算哈希值并把Cache Entry加入软件Hash表。
综上可以看出,在本方案中,公开了一种软硬件结合的Cache管理方案,本方案使用硬件实现Cache Line的查询、分配和释放逻辑,使得Cache Line操作的延迟降低,满足了高吞吐率和高灵活性的要求。本方案还支持硬件和软件发起的Cache Line并发访问,并且通过Cache Line锁和Cache Line状态的机制保证了Cache Line的一致性。本方案通过限额模块,实现了实时的门限检测和拦截,本方案通过冲突检测和规避的技术,实现了保证Cache一致性的前提下的Cache Line请求的流水线处理。
下面对本发明实施例提供的高速缓存管理装置、系统、设备及存储介质进行介绍,下文描述的高速缓存管理装置、系统、设备及存储介质与上文描述的高速缓存管理方法可以相互参照。
参见图15,本发明实施例提供的一种高速缓存管理装置结构示意图,该高速缓存管理装置应用于存储系统高速缓存管理器,该高速缓存管理装置包括:
接收模块11,用于接收目标用户发送的目标操作请求;
处理模块12,用于通过流水线方式处理所述目标操作请求,以便利用所述目标操作请求对缓存行执行对应的处理操作;
发送模块13,用于将所述目标操作请求的处理结果反馈至所述目标用户,并通过软件Cache管理器根据所述处理结果执行对应的高速缓存维护操作。
其中,处理模块12包括:
查表单元,用于根据所述目标操作请求中的键值计算目标哈希值,利用所述目标哈希值在目标数据表中进行查表;
输出单元,用于在未查找到对应的目标地址时,输出对应的查询结果;查找到目标地址时,根据目标地址在对应的缓存条目表中进行检索,并将检索到的键值与所述目标操作请求的键值进行比较,输出对应的查询结果;
第一处理单元,用于根据查询结果及所述目标操作请求执行对应的处理操作。
其中,处理模块12还包括:
排序单元,用于利用仲裁规则对各目标操作请求进行优先级排序;
第一判断单元,用于在目标操作请求为分配请求时,判断分配请求是否超出剩余配额;若否,则触发计算单元根据所述目标操作请求中的键值计算目标哈希值;若是,则通过第二处理单元根据超额配置模式处理所述目标操作请求。
其中,第一判断单元具体用于:确定所述分配请求的键值;根据所述分配请求的键值确定对应的缓存计数;判断所述缓存计数加一后是否大于对应的第一门限值;若是,则判定所述分配请求超出剩余配额;若否,则判断所述缓存计数加一后的全局计数是否大于对应的第二门限值;若大于对应的第二门限值,则判定所述分配请求超出剩余配额;若不大于对应的第二门限值,则判定所述分配请求未超出剩余配额。
其中,第二处理单元具体用于:若所述超额配置模式为警告模式,则继续根据所述目标操作请求中的键值计算目标哈希值,并生成对应的事件信息发送至所述软件高速缓存管理器;若所述超额配置模式为阻塞模式,则直接生成处理失败的处理结果。
其中,查表单元具体用于:根据各目标操作请求中的键值计算对应的目标哈希值,并将目标操作请求及对应的目标哈希值存储至第一目标队列;从所述第一目标队列中获取未查表的目标操作请求的目标哈希值,根据获取的目标哈希值在目标数据表中进行查表;将已查表的目标操作请求及对应的目标哈希值从所述第一目标队列中删除,并添加至第二目标队列;若接收到目标操作请求已处理的通知信息,则将与所述通知信息对应的目标操作请求及对应的目标哈希值从所述第二目标队列中删除。
其中,查表单元还用于:判断所述目标哈希值与目标队列中操作请求的哈希值是否碰撞;所述目标队列包括所述第一目标队列及所述第二目标队列;若否,则继续将目标操作请求及对应的目标哈希值存储至第一目标队列;若是,则暂缓将目标操作请求及对应的目标哈希值存储至第一目标队列,若检测到所述目标队列中不存在与所述目标哈希值碰撞的哈希值,则继续将目标操作请求及对应的目标哈希值存储至第一目标队列。
其中,所述目标操作请求为以下请求中的任意一者:分配请求、释放请求、检查请求、锁定请求、解锁请求、设置请求。
其中,接收模块11具体用于接收硬件高速缓存用户发送的目标操作请求,或者软件高速缓存用户通过所述软件高速缓存管理器发送的目标操作请求。
其中,发送模块13包括:
第一发送单元,用于在所述目标操作请求为所述硬件高速缓存用户发送的请求时,则将所述目标操作请求的响应信息发送至所述硬件高速缓存用户,并生成与所述响应信息对应的事件信息发送至所述软件高速缓存管理器,以便所述软件Cache管理器根据所述事件信息执行对应的高速缓存维护操作;
第二发送单元,用于在所述目标操作请求为所述软件高速缓存用户发送的请求时,则将所述目标操作请求的响应信息发送至所述软件高速缓存用户,以便所述软件Cache管理器根据所述响应信息执行对应的高速缓存维护操作。
本发明实施例还公开了一种高速缓存管理系统,该系统包括:
存储系统高速缓存管理器,用于接收目标用户发送的目标操作请求,通过流水线方式处理所述目标操作请求,以便利用所述目标操作请求对缓存行执行对应的处理操作;将所述目标操作请求的处理结果反馈至所述目标用户;
软件高速缓存管理器,用于根据所述处理结果执行对应的高速缓存维护操作。
其中,该存储系统高速缓存管理器具体用于:根据所述目标操作请求中的键值计算目标哈希值,利用所述目标哈希值在目标数据表中进行查表,若未查找到对应的目标地址,则输出对应的查询结果;若查找到目标地址,则根据所述目标地址在对应的缓存条目表中进行检索,并将检索到的键值与所述目标操作请求的进行比较,输出对应的查询结果,根据查询结果及所述目标操作请求执行对应的处理操作。
其中,该存储系统高速缓存管理器还用于:利用仲裁规则对各目标操作请求进行优先级排序。
其中,该存储系统高速缓存管理器还用于:若所述目标操作请求为分配请求,则分配请求是否超出剩余配额;若否,则继续执行根据所述目标操作请求中的键值计算目标哈希值的步骤;若是,则根据超额配置模式处理所述目标操作请求。
其中,该存储系统高速缓存管理器具体用于:确定所述分配请求的键值;根据所述分配请求的键值确定对应的缓存计数;判断所述缓存计数加一后是否大于对应的第一门限值;若是,则判定所述分配请求超出剩余配额;若否,则判断所述缓存计数加一后的全局计数是否大于对应的第二门限值;若大于对应的第二门限值,则判定所述分配请求超出剩余配额;若不大于对应的第二门限值,则判定所述分配请求未超出剩余配额。
其中,该存储系统高速缓存管理器具体用于:若所述超额配置模式为警告模式,则继续根据所述目标操作请求中的键值计算目标哈希值,并生成对应的事件信息发送至所述软件高速缓存管理器;若所述超额配置模式为阻塞模式,则直接生成处理失败的处理结果。
其中,该存储系统高速缓存管理器具体用于:根据各目标操作请求中的键值计算对应的目标哈希值,并将目标操作请求及对应的目标哈希值存储至第一目标队列;从所述第一目标队列中获取未查表的目标操作请求的目标哈希值,根据获取的目标哈希值在目标数据表中进行查表;将已查表的目标操作请求及对应的目标哈希值从所述第一目标队列中删除,并添加至第二目标队列;若接收到目标操作请求已处理的通知信息,则将与所述通知信息对应的目标操作请求及对应的目标哈希值从所述第二目标队列中删除。
其中,该存储系统高速缓存管理器还用于:判断所述目标哈希值与目标队列中操作请求的哈希值是否碰撞;所述目标队列包括所述第一目标队列及所述第二目标队列;若否,则继续将目标操作请求及对应的目标哈希值存储至第一目标队列;若是,则暂缓将目标操作请求及对应的目标哈希值存储至第一目标队列,若检测到所述目标队列中不存在与所述目标哈希值碰撞的哈希值,则继续将目标操作请求及对应的目标哈希值存储至第一目标队列。
其中,所述目标操作请求为以下请求中的任意一者:分配请求、释放请求、检查请求、锁定请求、解锁请求、设置请求。
其中,该存储系统高速缓存管理器具体用于:接收硬件高速缓存用户发送的目标操作请求,或者软件高速缓存用户通过所述软件高速缓存管理器发送的目标操作请求。
其中,该存储系统高速缓存管理器具体用于:若所述目标操作请求为所述硬件高速缓存用户发送的请求,则将所述目标操作请求的响应信息发送至所述硬件高速缓存用户,并生成与所述响应信息对应的事件信息发送至所述软件高速缓存管理器,以便所述软件高速缓存管理器根据所述事件信息执行对应的高速缓存维护操作;若所述目标操作请求为所述软件高速缓存用户发送的请求,则将所述目标操作请求的响应信息发送至所述软件高速缓存用户,以便所述软件高速缓存管理器根据所述响应信息执行对应的高速缓存维护操作。
参见图16,本发明实施例提供的一种电子设备结构示意图,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述方法实施例所述的高速缓存管理方法的步骤。
在本实施例中,设备可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机等终端设备。
该设备可以包括存储器21、处理器22和总线23。
其中,存储器21至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器21在一些实施例中可以是设备的内部存储单元,例如该设备的硬盘。存储器21在另一些实施例中也可以是设备的外部存储设备,例如设备上配备的插接式硬盘,智能存储卡(SmartMedia Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)等。进一步地,存储器21还可以既包括设备的内部存储单元也包括外部存储设备。存储器21不仅可以用于存储安装于设备的应用软件及各类数据,例如执行高速缓存管理方法的程序代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器22在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器21中存储的程序代码或处理数据,例如执行高速缓存管理方法的程序代码等。
该总线23可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图16中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
进一步地,设备还可以包括网络接口24,网络接口24可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该设备与其他电子设备之间建立通信连接。
可选地,该设备还可以包括用户接口25,用户接口25可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口25还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在设备中处理的信息以及用于显示可视化的用户界面。
图16仅示出了具有组件21-25的设备,本领域技术人员可以理解的是,图16示出的结构并不构成对设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法实施例所述的高速缓存管理方法的步骤。
其中,该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory ,ROM)、随机存取存储器(Random Access Memory ,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (15)

1.一种高速缓存管理方法,其特征在于,所述高速缓存管理方法应用于存储系统高速缓存管理器,所述高速缓存管理方法包括:
接收目标用户发送的目标操作请求;
通过流水线方式处理所述目标操作请求,以便利用所述目标操作请求对缓存行执行对应的处理操作;
将所述目标操作请求的处理结果反馈至所述目标用户,并通过软件高速缓存管理器根据所述处理结果执行对应的高速缓存维护操作。
2.根据权利要求1所述的高速缓存管理方法,其特征在于,利用所述目标操作请求对缓存行执行对应的处理操作,包括:
根据所述目标操作请求中的键值计算目标哈希值;
利用所述目标哈希值在目标数据表中进行查表;
若未查找到对应的目标地址,则输出对应的查询结果;若查找到目标地址,则根据所述目标地址在对应的缓存条目表中进行检索,并将检索到的键值与所述目标操作请求的键值进行比较,输出对应的查询结果;
根据查询结果及所述目标操作请求执行对应的处理操作。
3.根据权利要求2所述的高速缓存管理方法,其特征在于,根据所述目标操作请求中的键值计算目标哈希值之前,还包括:
利用仲裁规则对各目标操作请求进行优先级排序。
4.根据权利要求3所述的高速缓存管理方法,其特征在于,所述利用仲裁规则对各目标操作请求进行优先级排序之后,还包括:
若所述目标操作请求为分配请求,则判断所述分配请求是否超出剩余配额;
若否,则继续执行根据所述目标操作请求中的键值计算目标哈希值的步骤;若是,则根据超额配置模式处理所述目标操作请求。
5.根据权利要求4所述的高速缓存管理方法,其特征在于,所述判断所述分配请求是否超出剩余配额,包括:
确定所述分配请求的键值;
根据所述分配请求的键值确定对应的缓存计数;
判断所述缓存计数加一后是否大于对应的第一门限值;
若是,则判定所述分配请求超出剩余配额;若否,则判断所述缓存计数加一后的全局计数是否大于对应的第二门限值;
若大于对应的第二门限值,则判定所述分配请求超出剩余配额;若不大于对应的第二门限值,则判定所述分配请求未超出剩余配额。
6.根据权利要求4所述的高速缓存管理方法,其特征在于,所述根据超额配置模式处理所述目标操作请求,包括:
若所述超额配置模式为警告模式,则继续根据所述目标操作请求中的键值计算目标哈希值,并生成对应的事件信息发送至所述软件高速缓存管理器;
若所述超额配置模式为阻塞模式,则直接生成处理失败的处理结果。
7.根据权利要求2所述的高速缓存管理方法,其特征在于,根据所述目标操作请求中的键值计算目标哈希值,利用所述目标哈希值在目标数据表中进行查表,包括:
根据各目标操作请求中的键值计算对应的目标哈希值,并将目标操作请求及对应的目标哈希值存储至第一目标队列;
从所述第一目标队列中获取未查表的目标操作请求的目标哈希值,根据获取的目标哈希值在目标数据表中进行查表;
将已查表的目标操作请求及对应的目标哈希值从所述第一目标队列中删除,并添加至第二目标队列;
若接收到目标操作请求已处理的通知信息,则将与所述通知信息对应的目标操作请求及对应的目标哈希值从所述第二目标队列中删除。
8.根据权利要求7所述的高速缓存管理方法,其特征在于,所述根据各目标操作请求中的键值计算对应的目标哈希值之后,还包括:
判断所述目标哈希值与目标队列中操作请求的哈希值是否碰撞;所述目标队列包括所述第一目标队列及所述第二目标队列;
若否,则继续执行将目标操作请求及对应的目标哈希值存储至第一目标队列的步骤;
若是,则暂缓将目标操作请求及对应的目标哈希值存储至第一目标队列,若检测到所述目标队列中不存在与所述目标哈希值碰撞的哈希值,则继续执行将目标操作请求及对应的目标哈希值存储至第一目标队列的步骤。
9.根据权利要求1所述的高速缓存管理方法,其特征在于,所述目标操作请求为以下请求中的任意一者:分配请求、释放请求、检查请求、锁定请求、解锁请求、设置请求。
10.根据权利要求1至9中任意一项所述的高速缓存管理方法,其特征在于,所述接收目标用户发送的目标操作请求,包括:
接收硬件高速缓存用户发送的目标操作请求,或者软件高速缓存用户通过所述软件高速缓存管理器发送的目标操作请求。
11.根据权利要求10所述的高速缓存管理方法,其特征在于,将所述目标操作请求的处理结果反馈至所述目标用户,并通过软件高速缓存管理器根据所述处理结果执行对应的高速缓存维护操作,包括:
若所述目标操作请求为所述硬件高速缓存用户发送的请求,则将所述目标操作请求的响应信息发送至所述硬件高速缓存用户,并生成与所述响应信息对应的事件信息发送至所述软件高速缓存管理器,以便所述软件高速缓存管理器根据所述事件信息执行对应的高速缓存维护操作;
若所述目标操作请求为所述软件高速缓存用户发送的请求,则将所述目标操作请求的响应信息发送至所述软件高速缓存用户,以便所述软件高速缓存管理器根据所述响应信息执行对应的高速缓存维护操作。
12.一种高速缓存管理装置,其特征在于,所述高速缓存管理装置应用于存储系统高速缓存管理器,所述高速缓存管理装置包括:
接收模块,用于接收目标用户发送的目标操作请求;
处理模块,用于通过流水线方式处理所述目标操作请求,以便利用所述目标操作请求对缓存行执行对应的处理操作;
发送模块,用于将所述目标操作请求的处理结果反馈至所述目标用户,并通过软件高速缓存管理器根据所述处理结果执行对应的高速缓存维护操作。
13.一种高速缓存管理系统,其特征在于,包括:
存储系统高速缓存管理器,用于接收目标用户发送的目标操作请求,通过流水线方式处理所述目标操作请求,以便利用所述目标操作请求对缓存行执行对应的处理操作;将所述目标操作请求的处理结果反馈至所述目标用户;
软件高速缓存管理器,用于根据所述处理结果执行对应的高速缓存维护操作。
14.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至11任一项所述的高速缓存管理方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至11任一项所述的高速缓存管理方法的步骤。
CN202210856082.4A 2022-07-21 2022-07-21 一种高速缓存管理方法、装置、系统、设备及介质 Active CN114924999B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210856082.4A CN114924999B (zh) 2022-07-21 2022-07-21 一种高速缓存管理方法、装置、系统、设备及介质
PCT/CN2023/071904 WO2024016617A1 (zh) 2022-07-21 2023-01-12 高速缓存管理方法、装置、系统、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210856082.4A CN114924999B (zh) 2022-07-21 2022-07-21 一种高速缓存管理方法、装置、系统、设备及介质

Publications (2)

Publication Number Publication Date
CN114924999A true CN114924999A (zh) 2022-08-19
CN114924999B CN114924999B (zh) 2022-12-09

Family

ID=82815728

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210856082.4A Active CN114924999B (zh) 2022-07-21 2022-07-21 一种高速缓存管理方法、装置、系统、设备及介质

Country Status (2)

Country Link
CN (1) CN114924999B (zh)
WO (1) WO2024016617A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115442443A (zh) * 2022-11-03 2022-12-06 之江实验室 一种数据处理方法、装置、存储介质及电子设备
WO2024016617A1 (zh) * 2022-07-21 2024-01-25 苏州元脑智能科技有限公司 高速缓存管理方法、装置、系统、设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263302B1 (en) * 1999-10-29 2001-07-17 Vast Systems Technology Corporation Hardware and software co-simulation including simulating the cache of a target processor
CN104536911A (zh) * 2014-12-31 2015-04-22 华为技术有限公司 一种多路组相联的高速缓冲存储器及其处理方法
CN110147254A (zh) * 2019-05-23 2019-08-20 苏州浪潮智能科技有限公司 一种数据缓存处理方法、装置、设备及可读存储介质
US20190286563A1 (en) * 2018-03-15 2019-09-19 Intel Corporation Apparatus and method for improved cache utilization and efficiency on a many core processor
CN110688160A (zh) * 2019-09-04 2020-01-14 苏州浪潮智能科技有限公司 一种指令流水线处理方法、系统、设备及计算机存储介质
US20200081840A1 (en) * 2018-09-07 2020-03-12 Apple Inc. Coherence flows for dual-processing pipelines

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7752350B2 (en) * 2007-02-23 2010-07-06 International Business Machines Corporation System and method for efficient implementation of software-managed cache
CN105453056B (zh) * 2013-09-19 2019-05-17 英特尔公司 用于在多高速缓存环境中管理高速缓冲存储器的方法和装置
US10223271B2 (en) * 2017-03-31 2019-03-05 Intel Corporation Apparatus, computer program product, and method to perform cache operations in a solid state drive
US11347647B2 (en) * 2018-12-18 2022-05-31 Western Digital Technologies, Inc. Adaptive cache commit delay for write aggregation
CN113032293A (zh) * 2019-12-24 2021-06-25 北京忆芯科技有限公司 缓存管理器及控制部件
CN114924999B (zh) * 2022-07-21 2022-12-09 苏州浪潮智能科技有限公司 一种高速缓存管理方法、装置、系统、设备及介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263302B1 (en) * 1999-10-29 2001-07-17 Vast Systems Technology Corporation Hardware and software co-simulation including simulating the cache of a target processor
CN104536911A (zh) * 2014-12-31 2015-04-22 华为技术有限公司 一种多路组相联的高速缓冲存储器及其处理方法
US20190286563A1 (en) * 2018-03-15 2019-09-19 Intel Corporation Apparatus and method for improved cache utilization and efficiency on a many core processor
US20200081840A1 (en) * 2018-09-07 2020-03-12 Apple Inc. Coherence flows for dual-processing pipelines
CN110147254A (zh) * 2019-05-23 2019-08-20 苏州浪潮智能科技有限公司 一种数据缓存处理方法、装置、设备及可读存储介质
CN110688160A (zh) * 2019-09-04 2020-01-14 苏州浪潮智能科技有限公司 一种指令流水线处理方法、系统、设备及计算机存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
宋汉广: "基于软件流水线的并行多源视频处理", 《电视技术》 *
李永进等: "频率2GHz的16核处理器二级缓存设计", 《上海交通大学学报》 *
黄河等: "硬件结构支持的基于同步的高速缓存一致性协议", 《计算机学报》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024016617A1 (zh) * 2022-07-21 2024-01-25 苏州元脑智能科技有限公司 高速缓存管理方法、装置、系统、设备及介质
CN115442443A (zh) * 2022-11-03 2022-12-06 之江实验室 一种数据处理方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN114924999B (zh) 2022-12-09
WO2024016617A1 (zh) 2024-01-25

Similar Documents

Publication Publication Date Title
CN114924999B (zh) 一种高速缓存管理方法、装置、系统、设备及介质
US10176057B2 (en) Multi-lock caches
US9830189B2 (en) Multi-threaded queuing system for pattern matching
US10162686B2 (en) Cache affinity and processor utilization technique
US8447897B2 (en) Bandwidth control for a direct memory access unit within a data processing system
US9229869B1 (en) Multi-lock caches
JP3528150B2 (ja) コンピュータ・システム
US20110093429A1 (en) Search device and search method
EP3115904B1 (en) Method for managing a distributed cache
US11960945B2 (en) Message passing circuitry and method
US10922147B2 (en) Storage system destaging based on synchronization object with watermark
CN109783012A (zh) 基于闪存的储存器及其控制器
KR101915944B1 (ko) 클러스터 시스템에서의 클라이언트 요청 처리 방법, 상기 클라이언트 요청에 따른 입출력 처리 방법 및 장치
US20050149562A1 (en) Method and system for managing data access requests utilizing storage meta data processing
JP6823626B2 (ja) データベース管理システム及び方法
US11875198B2 (en) Synchronization object issue detection using object type queues and associated monitor threads in a storage system
CN110162395B (zh) 一种内存分配的方法及装置
EP3293625B1 (en) Method and device for accessing file, and storage system
EP3696674A1 (en) Triggered operations for collective communication
US20240061780A1 (en) Systems and methods for memory bandwidth allocation
CN118034932A (zh) 一种内存管理方法、装置、设备和存储介质
CN116996449A (zh) 数据报文处理系统、方法、计算机设备、存储介质
CN111309772A (zh) 数据操作的管理方法及硬件处理模块
JPH09319652A (ja) 先読み制御方法

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