CN117349199A - 缓存管理装置及系统 - Google Patents

缓存管理装置及系统 Download PDF

Info

Publication number
CN117349199A
CN117349199A CN202311634783.4A CN202311634783A CN117349199A CN 117349199 A CN117349199 A CN 117349199A CN 202311634783 A CN202311634783 A CN 202311634783A CN 117349199 A CN117349199 A CN 117349199A
Authority
CN
China
Prior art keywords
data block
node
partition
cache line
request
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
CN202311634783.4A
Other languages
English (en)
Other versions
CN117349199B (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.)
Moore Threads Technology Co Ltd
Original Assignee
Moore Threads 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 Moore Threads Technology Co Ltd filed Critical Moore Threads Technology Co Ltd
Priority to CN202311634783.4A priority Critical patent/CN117349199B/zh
Publication of CN117349199A publication Critical patent/CN117349199A/zh
Application granted granted Critical
Publication of CN117349199B publication Critical patent/CN117349199B/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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/0893Caches characterised by their organisation or structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及存储管理技术领域,尤其涉及一种缓存管理装置及系统。该装置用于对存储区域中的多个数据块进行管理控制,每个数据块中包括多个缓存行,装置包括:至少一个控制中心模块、多个控制模块,各控制中心模块用于控制对应的至少一个控制模块,各控制模块用于控制对应的一个数据块;各控制中心模块根据接收到的访问申请生成第一请求,并将带有缓存行标签的第一请求广播至所控制的各控制模块;各控制模块中的命中测试单元,用于根据接收到的第一请求对所控制的数据块进行缓存行的命中测试,并将测试结果返回控制中心模块;控制中心模块,还用于根据控制模块返回的测试结果生成总结果。在增加缓存存储容量的同时减少命中测试所需的时间。

Description

缓存管理装置及系统
技术领域
本公开涉及存储管理技术领域,尤其涉及一种缓存管理装置及系统。
背景技术
图形处理器(Graphic Process Unit,GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器。图形处理器运算工作相关的数据可以存储在片上或片外的存储单元中。其中,外部全局存储器(Global Memory)作为片外存储单元,设置在离GPU核心处理器较远的地方,访问速度慢。为了解决外部全局存储器访问速度慢的问题,通常在处理器核心内部增加片上缓存(cache),其先对读写数据进行缓存,方便后续GPU读写时访问到缓存,可快速获得,无需再从外部全局存储器中获取。缓存包括多个缓存行(Cache line),访问时通过行地址(line address)进行该缓存行的访问。但相关技术中,对缓存的管理方式存在缓存行命中次数不一致,部分缓存行的数据被频繁替换等亟待解决的问题。
发明内容
有鉴于此,本公开提出了一种缓存管理装置及系统。
根据本公开的一方面,提供了一种缓存管理装置,用于对存储区域中的多个数据块进行管理控制,每个所述数据块中包括多个缓存行,所述装置包括:至少一个控制中心模块、多个控制模块,各所述控制中心模块用于控制对应的至少一个控制模块,各所述控制模块用于控制对应的一个数据块,
各所述控制中心模块,用于根据接收到的访问申请生成第一请求,并将所述第一请求广播至所控制的各所述控制模块,所述第一请求中携带有缓存行标签;
各所述控制模块中的命中测试单元,用于根据接收到的第一请求对所控制的数据块进行缓存行的命中测试,并将测试结果返回所述控制中心模块;
所述控制中心模块,还用于根据所述控制模块返回的测试结果生成总结果。
在一种可能的实现方式中,所述控制中心模块,包括:
控制单元,用于根据接收到的访问申请生成第一请求,并将所述第一请求发送至广播单元;
广播单元,用于将所述第一请求广播至各所述控制模块。
在一种可能的实现方式中,所述控制中心模块,还包括:
统计单元,用于接收所述控制模块返回的测试结果,并根据所述控制模块返回的测试结果生成总结果,并将所述总结果发送至控制单元;
其中,所述总结果包括命中结果和命中失败结果,所述命中结果是接收到任意第一个结果为命中的测试结果的情况下生成的;所述命中失败结果是接收到来自各控制模块的测试结果均为未命中的情况下生成的;
所述测试结果中携带有以下信息的至少一种:指示命中测试是否命中的状态信息、进行命中测试的数据块的数据块ID、所述缓存行标签;结果为命中的测试结果中还携带有命中缓存行的缓存行ID。
在一种可能的实现方式中,所述统计单元,还用于在生成的总结果为所述命中结果的情况下,生成停止信号请求,并将所述停止信号请求发送至广播单元,所述停止信号请求用于指示停止针对所述第一请求的命中测试;
所述广播单元,还用于将所述停止信号请求广播至还未返回测试结果的各控制模块中;
所述控制模块中的命中测试单元,用于响应于接收到的所述停止信号请求,停止针对所述第一请求的命中测试。
在一种可能的实现方式中,所述控制中心模块还包括重构单元,所述控制模块还包括替换单元,
所述控制单元,还用于在所述总结果为表示全部未命中的失败结果的情况下,向所述重构单元发送替换请求;
所述重构单元,用于在接收到替换请求的情况下,根据预先构建的管理组织结构从数据块分区中确定出待查数据块,并向管理所述待查数据块的控制模块中的替换单元发送查找请求,所述数据块分区包括所述重构单元所在的控制中心模块控制的各所述控制模块所控制的数据块;
所述替换单元,用于响应于所述查找请求,采用PLRU算法查找出所述待查数据块中的可替换缓存行,并生成查找结果返回所述重构单元;
所述重构单元,还用于根据所述查找结果生成替换结果并返回所述控制单元,所述替换结果携带有所述可替换缓存行的缓存行ID、所述可替换缓存行所在的数据块的数据块ID;
其中,所述管理组织结构包括对应于所述数据块分区的二叉树结构和所述二叉树结构中各节点的节点信息,所述二叉树结构为满二叉树结构或非满二叉树结构。
在一种可能的实现方式中,所述节点信息包括:处理状态、左分区计数器和右分区计数器,
其中,根据预先构建的管理组织结构从数据块分区中确定出待查数据块,包括:
在接收到替换请求的情况下,将数据块分区对应的二叉树结构中的根节点确定为第一个目标节点并获取所述目标节点的节点信息;
在所述目标节点为非叶节点的情况下,将当前所述目标节点的处理状态所指示的替换方向上的所述目标节点的子节点确定为下一目标节点以及更新所述目标节点的对应于替换方向的目标计数器,直至确定出的目标节点为叶节点,则基于所述叶节点确定出待查数据块;所述目标计数器为所述目标节点的左分区计数器和右分区计数器中对应于所述目标节点的处理状态所指示的替换方向的计数器,各节点的处理状态所指示的替换方向为节点的左侧分支或右侧分支;
所述控制模块还包括信息存储单元,所述信息存储单元,用于存储所控制数据块中各缓存行的基本信息,所述基本信息包括各缓存行的缓存行标签和缓存行ID。
在一种可能的实现方式中,基于所述叶节点确定出待查数据块,包括:
将所述叶节点的处理状态所指示的替换方向对应的数据块确定为待查数据块;或者
将所述叶节点对应的数据块确定为待查数据块。
在一种可能的实现方式中,所述节点信息还包括左分区权重和右分区权重,
所述重构单元,还用于在所述目标计数器的数值为预设值的情况下,重置所述目标计数器为初始值以及更改所述目标节点的处理状态所指示的替换方向;
其中,所述初始值为对应于所述目标计数器所在分支方向的分区权重、所述预设值为0;或者,所述初始值为0、所述预设值为对应于所述目标计数器所在分支方向的分区权重;左分区计数器所在分支方向的分区权重为左分区权重,右分区计数器所在分支方向的分区权重为右分区权重。
在一种可能的实现方式中,所述重构单元,还用于在确定所述目标节点的目标计数器为无效和/或所述目标节点对应于处理状态所指示的替换方向的分区权重为0的情况下,确定所述目标节点为叶节点;
其中,所述目标节点对应于处理状态所指示的替换方向的分区权重为左分区权重或右分区权重。
在一种可能的实现方式中,所述节点信息还包括左指针和右指针,
所述重构单元,还用于根据当前所述目标节点的处理状态所指示的替换方向对应的目标指针查找到下一目标节点;
其中,若当前所述目标节点的处理状态所指示的替换方向为左侧分支,则所述目标指针为左指针;若当前所述目标节点的处理状态所指示的替换方向为右侧分支,则所述目标指针为右指针。
在一种可能的实现方式中,所述叶节点的节点信息还包括:右地址索引、右有效索引标识、左地址索引和左有效索引标识,
其中,将所述叶节点的处理状态所指示的替换方向对应的数据块确定为待查数据块,包括:在所述叶节点的处理状态所指示的替换方向对应的有效索引标识为有效的情况下,将所述叶节点的处理状态所指示的替换方向对应的地址索引所指向的数据块确定为待查数据块;
其中,若当前所述目标节点的处理状态所指示的替换方向为左侧分支,则所述目标地址索引为所述左地址索引、指向待查数据块的地址索引为所述左有效索引标识;若当前所述目标节点的处理状态所指示的替换方向为右侧分支,则所述目标地址索引为所述右地址索引、指向待查数据块的地址索引为所述右有效索引标识。
在一种可能的实现方式中,所述叶节点的节点信息还包括左地址索引、左有效索引标识,或者所述叶节点的节点信息还包括右地址索引和右有效索引标识,
其中,将所述叶节点对应的数据块确定为待查数据块,包括:在所述叶节点的节点信息中存在的左有效索引标识或右有效索引标识为有效的情况下,将所述叶节点的节点信息中存在的地址索引所指向的数据块确定为待查数据块。
在一种可能的实现方式中,各节点的左分区权重、右分区权重与所述节点的左侧分支中数据块的左侧数量、所述节点的右侧分支中数据块的右侧数量相关,
在所述节点的左侧数量和右侧数量均不为零的情况下,所述节点的左分区权重、右分区权重的值,根据节点的左侧数量和右侧数量的最简整数比确定;
在所述节点的左侧数量和/或右侧数量为零的情况下,所述节点的左分区权重、右分区权重的值分别设置为节点的左侧数量和右侧数量。
在一种可能的实现方式中,所述重构单元,还用于响应于重构请求,根据配置信息设置所述数据块分区中的数据块的块数量以及各所述数据块中缓存行的行数量,并设置各所述数据块的数据块ID、缓存行的缓存行ID;根据所述数据块分区中数据块的块数量,创建对应所述数据块分区的二叉树结构,以及确定所述二叉树结构中各节点的节点信息,完成所述数据块分区的管理组织结构配置。
在一种可能的实现方式中,各所述数据块中包括个缓存行,n为正整数。
根据本公开的另一方面,提供了一种缓存管理系统,包括:缓存管理装置和存储区域,
所述存储区域,包括多个数据块,每个所述数据块中包括多个缓存行;
所述缓存管理装置包括:至少一个控制中心模块、多个控制模块,各所述控制中心模块用于控制对应的至少一个控制模块,各所述控制模块用于控制对应的一个数据块,
所述控制中心模块,用于根据接收到的访问申请生成第一请求,并将所述第一请求广播至所控制的各所述控制模块,所述第一请求中携带有缓存行标签;
各所述控制模块中的命中测试单元,用于根据接收到的第一请求对所控制的数据块进行缓存行的命中测试,并将测试结果返回所述控制中心模块;
所述控制中心模块,还用于根据所述控制模块返回的测试结果生成总结果。
根据本公开实施例提供的一种缓存管理装置及系统。将存储区域划分为多个数据块,每个数据块中包括多个缓存行,各控制中心模块控制对应的至少一个控制模块,各控制模块用于控制对应的一个数据块。控制中心模块通过广播的形式将第一请求广播至各控制模块。各控制模块中的命中测试单元根据接收到的第一请求对所控制的数据块进行缓存行的命中测试,并将测试结果返回控制中心模块;控制中心模块根据控制模块返回的测试结果生成总结果。在增加缓存存储容量的同时减少命中测试所需的时间。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出相关技术中基于满二叉树进行缓存行替换的示意图。
图2示出相关技术中缓存行对应的一种非满二叉树结构示意图。
图3、图4示出本公开实施例的一种缓存管理装置的框图。
图5示出本公开实施例的一种示例一数据块分区对应的二叉树结构的示意图。
图6示出本公开实施例的一种二叉树结构的节点信息的示意图。
图7示出本公开实施例的一种示例二数据块分区对应的二叉树结构的示意图。
图8示出本公开实施例的一种替换步骤的流程图。
图9示出本公开实施例的一种缓存管理装置的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
缓存(cache)是设置在主存(main memory,也称内存)与GPU、CPU等处理器之间的,用于作为主存数据的缓存。根据速度的不同,缓存可以分为一级缓存(L1 Cache)、二级缓存(L2 Cache)、三级缓存(L3 Cache),速度不断降低。
相关技术中,针对cache中缓存行的访问通过以下方式实现:当确定需要访问的缓存行的行地址之后,先进行Hit/MissTest(命中/未命中测试、命中测试),当命中(hit)时,可以直接访问该缓存行;当未命中(miss)时,则会通过替换算法(如伪最近最少使用算法(Pseudo Least Recently Used,PLRU)),选择最近最少使用的缓存行进行替换,完成替换后再进行访问。在这过程中,使用Tag Ram(标记随机访问存储器)对每个缓存行的tag(标签)、valid(有效位),dirty mask(脏数据标记)、contextid(上下文编号)等信息进行存储管理。
其中,当未命中(miss)时,会通过PLRU算法选择出需要被替换的缓存行进而得到 该缓存行的缓存行ID(cacheline id),然后从Tag Ram中查询该缓存行的dirty mask是否 为dirty,若是dirty则将该缓存行中的数据存储到下一级缓存中的对应位置后再访问该缓 存行。若不是dirty,则直接将该缓存行中存储的数据替换成新的数据、或待该缓存行存储 了请求返回的数据后读取该数据,并更新Tag Ram中存储的该缓存行对应的信息。PLRU算法 简单迅速,对于如图1所示的满二叉树结构,可以实现均衡的替换管理。但是,PLRU算法存在 限制,需要缓存中缓存行的数量为(n为整数),才能保证各缓存行的命中率都相同。但是, 在一些情况下,尤其是一些可配置存储环境中,缓存中缓存行的数量往往不是,所形成的 二叉树结构左右两边是不均衡的,可能一边多、另一边少。例如,假如缓存中缓存行的数量 为如图2所示的3个,形成了非满二叉树结构,则通过PLRU算法做替换,最右侧叶子节点命中 率为50%,而左侧两个叶子节点均为25%,显然无法保证所有缓存行被命中的次数相等,而且 还会导致部分缓存行数据会被频繁替换出去,导致程序执行不稳定的情况发生。另外,针对 tag做Hit/Miss Test命中测试时,n条缓存行的访问等待时间基本始终为n/2,也即缓存行 的数量越多,比较次数越多,查找和替换速度就会下降。
为解决上述技术问题,本公开提供了一种缓存管理装置及系统。将存储区域划分为多个数据块,每个数据块中包括多个缓存行,各控制中心模块控制对应的至少一个控制模块,各控制模块用于控制对应的一个数据块。控制中心模块通过广播的形式将第一请求广播至各控制模块。各控制模块中的命中测试单元根据接收到的第一请求对所控制的数据块进行缓存行的命中测试,并将测试结果返回控制中心模块;控制中心模块根据控制模块返回的测试结果生成总结果。在增加缓存存储容量的同时减少命中测试所需的时间。
如图3、图4所示,该缓存管理装置1用于对存储区域2进行管理。缓存管理装置1包 括至少一个控制中心模块(Data Block Control Center,DBCC)10、多个控制模块(Data Block Control,DBC)20。其中,存储区域2中可以包括多个数据块分区(Data Block Partition,亦可称DB区域、DB分区)30,每个数据块分区30中包括多个数据块(Data Block, DB)301。每个数据块301包括多个缓存行(cache line),例如每个数据块301包括(n为正 整数)个缓存行。各控制模块20用于对存储区域2中对应的某一个数据块301进行控制管理, 针对每一个数据块分区30中各数据块301的控制,需要配一个控制中心模块10、该控制中心 模块10控制各数据块301的控制模块20。其中,图3、图4中仅示意性给出缓存管理装置1的设 置,本领域技术人员可以根据实际需要对控制中心模块、数据块分区中数据块的数量、数据 块中包含的缓存行的数量进行设置,本公开对此不作限制。该存储区域2可以是缓存,例如 一级缓存(L1 Cache)、二级缓存(L2 Cache)、三级缓存(L3 Cache)等,本公开对此不作限 制。
在本实施例中,如图3、图4所示,各控制中心模块10用于实现对数据块分区30中各数据块301的访问控制。如图3、图4所示,控制中心模块10可以包括控制单元101、广播单元102、统计单元103和重构单元104。控制模块20可以包括:命中测试单元201、信息存储单元202和替换单元203。以下以某一个数据块分区30的管理控制为例对缓存管理装置1进行示意性说明。
如图3、图4所示,各重构单元104,用于在响应于重构请求所对应的数据块分区30的配置,完成所述数据块分区30的管理组织结构配置。
在一些实施例中,重构单元104通过执行“初始化配置步骤”完成所述数据块分区30的管理组织结构配置。“初始化配置步骤”包括:响应于重构请求(重构请求可以是用户发出的;也可以是在检测到满足预设条件后产生的,如检测到程序启动则可以形成重构请求),根据配置信息对数据块分区30进行使用配置。该配置信息可以指示以下信息中的部分或全部:数据块分区30当前可用的存储量(也可以为当前可用缓存行的数量)、数据块分区中数据块的块数量(Data Block Partition number)、每个数据块的大小(size)。对数据块分区30进行使用配置可以包括:根据各数据块分区对应的块数量,为各数据块分区配置数据块以及确定出各数据块DB的数据块ID(DB id);根据各数据块对应的行数量,为各数据块分配缓存行并确定各缓存行的缓存行ID(cacheline id)和缓存行标签(cacheline tag)。在一些实施例中,该“初始化配置步骤”中的配置信息来源于存储区域2的配置信息,存储区域2的配置信息还可以指示存储区域2当前可用的板块分组(Bank Group)数量、每个板块分组的大小,每个板块分组中设置哪些数据块分区。而后根据数据块分区30中数据块301的块数量,创建对应各数据块分区30的二叉树结构,以及确定二叉树结构中各节点的节点信息,完成数据块分区30的管理组织结构配置。而后存储二叉树结构及其各节点的节点信息。在一些实施例中,可以将二叉树结构及其各节点的节点信息存储至对应的存储器中,如对应的缓冲器。
在本实施例中,各数据块分区对应的二叉树结构中节点的层数和数量与该数据块分区中数据块的块数量相关,二叉树结构中各叶节点最多能够对应该数据块分区中的一个数据块或两个数据块。叶节点最多所能够对应的数据块的数量的不同,二叉树结构存在两种不同的实现方式。
示例一:若叶节点最多所能够对应的数据块的数量为2。如图5、图6所示,在该示例中数据块分区1包括6个数据块,对应的二叉树有3层、5个节点,其中叶节点有3个,每个叶节点对应两个数据块。每个节点确定有对应该节点的节点信息。
示例二:若叶节点最多所能够对应的数据块的数量为1。如图7所示,在该示例中数据块分区1包括6个数据块,对应的二叉树有4层、11个节点,其中叶节点有6个,每个叶节点对应一个数据块。每个节点确定有对应该节点的节点信息。
在一些实施例中,节点信息包括以下信息中的部分或全部:处理状态(ProcessingStatus,S)、左分区权重(Left Partition weight,LW)、左分区计数器(Left Partitioncounter,LC)、左指针(Left Pointer,LP)、左有效索引标识(Left VldIdx_flag,LVF)、左地址索引(Left AddrIndex,LAI)、右分区权重(Right Partition weight,RW)、右分区计数器(Right Partition counter,RC)、右指针(Right Pointer,RP)、右有效索引标识(RightVldIdx_flag,RVF)、右地址索引(Right AddrIndex,RAI)。
处理状态S,用于指示当前该对节点左右两侧分支中对应的数据块进行处理的状态,指示替换方向,各节点的处理状态所指示的替换方向为该节点的左侧分支或右侧分支。在一些实施例中,处理状态可以指示当前可以替换该节点的左侧分支中数据块的缓存行还是右侧分支中数据块的缓存行。可以设置不同的处理状态标识以表示不同的替换方向,例如,可以设置“0”表示处理状态S为替换左侧分支,设置“1”表示处理状态S为替换右侧分支。其中,示例一中各节点的节点信息中均设置有处理状态。示例二中,仅非叶节点的节点信息中设置有处理状态,叶节点的节点信息中不含有处理状态或处理状态位为无效。
左分区权重LW,用于表示该节点左侧分支的对应权重。左分区权重LW是与该节点 左侧分支中数据块的数量(也即左侧数量)、该节点左右两侧分支中数据块的数量(也即右 侧数量)相关的。右分区权重RW,用于表示该节点右侧分支的对应权重。右分区权重RW是与 该节点右侧分支中数据块的数量、该节点左右两侧分支中数据块的数量相关的。左分区权 重LW:右分区权重RW=该节点左侧分支中数据块的数量LN:该节点右侧分支中数据块的数量 RN。在一些示例中,可以根据的最简整数比确定LW、RW。以图5、图6、图7所示的示例为 例,其根节点的,则根节点的LW、RW可以分别设置为2、1。其中,在示例 一中若叶节点的LN和/或RN为0,则节点的LW、RW分别设置为LN、RN。在示例二中叶节点的LW、 RW均设置为0、或者也可以设置为其他可以指示该节点为叶节点的特定数值,本公开对此不 作限制。
左分区计数器LC,用于进行计数。不断根据节点左侧分支中数据块的使用情况对左分区计数器LC的数值进行更新。在一些实施例中,可根据左分区计数器LC表示的含义设置左分区计数器LC的初始值、以及结束计数的预设值。若左分区计数器LC当前的数值与该节点左侧分支中剩余未被替换使用的数据块的比例存在对应关系(也即,LC/LW=节点左侧未被替换使用的数据块的数量/节点左侧全部数据块的数量),则该左分区计数器LC的初始值等于左分区权重LW、最小值为0(也即预设值为0)。或者,若左分区计数器LC当前的数值与该节点左侧分支中已经被替换使用的数据块的比例存在对应关系(也即,LC/LW=该节点左侧已经被替换使用的数据块的数量/该节点左侧全部数据块的数量),则该左分区计数器LC的初始值等于0、最大值为左分区权重LW(也即预设值为左分区权重LW)。
右分区计数器RC,用于进行计数。不断根据节点右侧分支中数据块的使用情况对右分区计数器RC的数值进行更新。在一些实施例中,可根据右分区计数器RC表示的含义设置右分区计数器RC的初始值、以及结束计数的预设值。若右分区计数器RC当前的数值与该节点右侧分支中剩余未被替换使用的数据块的比例存在对应关系(也即,RC/RW=节点右侧未被替换使用的数据块的数量/节点右侧全部数据块的数量),则该右分区计数器RC的初始值等于右分区权重RW、最小值为0(也即预设值为0)。或者,若右分区计数器RC当前的数值与该节点右侧分支中已经被替换使用的数据块的比例存在对应关系(也即,RC/RW=该节点右侧已经被替换使用的数据块的数量/该节点右侧全部数据块的数量),则该右分区计数器RC的初始值等于0、最大值为右分区权重RW(也即预设值为右分区权重RW)。
其中,示例二中,叶节点的节点信息中并不包括左分区计数器LC和右分区计数器RC,或者,叶节点的节点信息中左分区计数器LC和右分区计数器RC为无效。
左地址索引LAI用于指向对应的数据块。左有效索引标识LVF用于表示左地址索引LAI是否有效(例如,1表示有效,0表示无效)。其中,在示例一中,若当前节点的左分区权重LW为0且左有效索引标识LVF为有效时,则该节点为叶节点且该节点的左地址索引LAI指向该叶节点对应的某一个数据块。若当前节点的左分区权重LW为非0和/或左有效索引标识LVF为无效时,则该节点为非叶节点且该节点的左地址索引LAI无效。在示例二中,若当前节点的左分区权重LW为0且左有效索引标识LVF为有效时,则该节点为叶节点且该节点的左地址索引LAI指向该叶节点一一对应的一个数据块。若当前节点的左分区权重LW为非0和/或左有效索引标识LVF为无效时,则该节点为非叶节点且该节点的左地址索引LAI无效。
左指针LP指向该节点左侧的子节点的位置,右指针RP表示该节点右侧的子节点的位置,硬件用硬连线表示,如图6中左指针LP为图中指向左节点箭头表示,如图6中右指针RP为图中指向右节点箭头表示。其中,非叶节点的节点信息中包括左指针LP,叶节点的节点信息中不包括左指针LP、或节点信息中该左指针LP位为无效。非叶节点的节点信息中包括右指针RP,叶节点的节点信息中不包括右指针RP、或节点信息中该右指针RP位为无效。
右地址索引RAI用于指向对应的数据块。右有效索引标识RVF用于表示右地址索引RAI是否有效(例如,1表示有效,0表示无效)。其中,在示例一中,若当前节点的右分区权重RW为0且右有效索引标识RVF为有效时,则该节点为叶节点且该节点的右地址索引RAI指向该叶节点对应的某一个数据块。若当前节点的右分区权重RW为非0和/或右有效索引标识RVF为无效时,则该节点为非叶节点且该节点的右地址索引RAI无效。在示例二中,若当前节点的右分区权重RW为0且右有效索引标识RVF为有效时,则该节点为叶节点且该节点的右地址索引RAI指向该叶节点一一对应的一个数据块。若当前节点的右分区权重RW为非0和/或右有效索引标识RVF为无效时,则该节点为非叶节点且该节点的右地址索引RAI无效。其中,在示例二中,叶节点的节点信息仅有“右地址索引RAI、右有效索引标识RVF”或“左有效索引标识LVF、左地址索引LAI”。
这样,通过上述管理组织结构(二叉树结构及其节点信息)的设置,在进行替换的过程中,由于对应于数据块分区的二叉树结构使得替换中各数据块之间的替换概率相同,而进一步对于每一个数据块中的缓存行采用PLRU算法进行替换查找能够实现同数据块中缓存行之间的替换概率相同,这样从整体上就可以使得各数据块分区中各缓存行具有相同的替换概率。
如图3、图4所示,控制单元101,用于生成第一请求,并将该第一请求发送至广播单元102。其中,第一请求可以为针对数据进行读取或写入的访问请求,该第一请求中可以包括指示进行数据读取或写入的缓存行的缓存行标签,例如,第一请求可以为缓存行标签。其中,控制单元101可以接收外部装置的进行数据读取或写入的缓存行访问申请并根据该访问申请生成第一请求,该访问申请中包括缓存行标签或者可以将缓存行标签作为该访问申请。
如图3、图4所示,广播单元102,用于将第一请求广播至各控制模块20中的命中测试单元201。
如图3、图4所示,各控制模块20中的命中测试单元201在接收到第一请求之后,针对其所控制的数据块301中的各缓存行进行命中测试,并将测试结果返回所述统计单元103。在一些实施例中,测试结果包括命中和未命中两种,测试结果中携带有指示是否命中的状态信息,若状态信息为hit状态即表示命中、状态信息为miss状态即表示未命中。其中,命中表示在该命中测试单元201所在的控制模块20所控制的数据块301中存在对应于第一请求的缓存行。未命中表示在该命中测试单元201所在的控制模块20所控制的数据块301中不存在对应于第一请求的缓存行。在一些实施例中,测试结果中还可以携带有命中测试单元201所测试的数据块的数据块ID和/或命中缓存行的缓存行标签。其中,对于为命中的测试结果,其中还可以携带有被命中的命中缓存行的缓存行ID。例如,对于命中的测试结果,其可以携带有hit状态、数据块ID、缓存行标签、缓存行ID。对于未命中的测试结果,其可以携带有miss状态、数据块ID、缓存行标签。
这样,由于第一请求被广播到每个命中测试单元201,各命中测试单元201可以同步进行命中测试,相比于相关技术中的命中测试,整体的命中测试的等待时间降低至原来的1/x(x为数据块的数量)。则在数据块数量x>1时,本公开所提供的方式能够减少命中测试的等待时间,且x越大等待时间所能减少的就越长,等待时间的缩短效果就越明显。
在一种可能的实现方式中,信息存储单元202用于存储其所在控制模块20所控制的数据块301中各缓存行的缓存行标签、缓存行ID、有效位(valid),脏数据标记(dirtymask)、上下文编号(context id)等基本信息并进行存储管理,信息存储单元202可以为随机访问存储器。各命中测试单元201可以基于信息存储单元202中存储的各缓存行的缓存行标签,进行命中测试。
其中,若命中测试命中对应于第一请求的命中缓存行,则命中测试单元201向所述统计单元103返回为命中的测试结果。若命中测试未命中对应于第一请求的缓存行,则命中测试单元201向统计单元103返回为未命中的测试结果。
如图3、图4所示,统计单元103,用于接收各命中测试单元201返回的测试结果。并根据各命中测试单元201返回的测试结果生成总结果,并将总结果发送至控制单元101。其中,总结果包括表示已经命中的命中结果和表示全部未命中的命中失败结果两种,已经命中是指通过各命中测试单元201的测试,某一个命中测试单元201已经找到满足第一请求的命中缓存行,也即当前已经接收到的测试结果中有一个为命中;全部未命中是指通过各命中测试单元201的测试均为找到满足第一请求的命中缓存行,也即所有测试结果均为未命中。
其中,统计单元103还用于在接收各测试结果的过程中,对各测试结果进行识别,在确定接收到的测试结果为命中的情况下,生成停止信号请求并发送至广播单元102。该停止信号请求携带有被命中的命中缓存行的缓存行标签,该停止信号请求用于指示各命中测试单元201停止针对“停止信号请求中携带的缓存行标签”的命中测试。广播单元102还用于将停止信号请求广播至并未返回测试结果的各命中测试单元201。各命中测试单元201则根据接收到的停止信号请求停止正在进行的(或者即将进行的)针对“停止信号请求中携带的缓存行标签”的命中测试。
统计单元103还用于在接收各测试结果的过程中,对各测试结果进行识别,在确定接收到的测试结果为命中的情况下,生成并发送命中结果(也即总结果)至控制单元101,命中结果中可以包括命中缓存行所在的数据块的数据块ID、该命中缓存行的缓存行ID和缓存行标签等。
在一种可能的实现方式中,为实现测试结果统计比对,统计单元103中存储有初始化状态记录,该初始化状态记录中包括各数据块的初始化未命中状态。在一些实施例中,可以用1bit记录各数据块的初始化未命中状态,如可以设置“1”表示初始化的未命中状态。统计单元103针对每个第一请求还会建立对应于各数据块的状态记录,该状态记录中记录有根据各命中测试单元201返回的测试结果确定的未命中状态,各未命中状态可以通过1bit表示,设置“1”表示未命中、设置“0”表示命中。若某一个数据块的命中测试单元201返回的测试结果为未命中则可以将状态记录中对应的命中状态写为“1”,而后可以在状态记录中记录完每个数据块对应的未命中状态之后,对初始化状态记录和对应于第一请求的状态记录进行比较得到比较结果,若确定比较结果为二者相同,则可以确定各命中测试单元201的测试均未找到满足第一请求的命中缓存行,生成“全部未命中”的命中失败结果(也即总结果)。
在一些实施例中,控制单元101还用于在确定总结果为全部未命中的命中失败结果情况下,生成替换请求并发送至重构单元104。该替换请求用于指示所述重构单元104基于预先配置的针对其管理控制的数据块分区的管理组织结构,寻找到该数据块分区中可以作为替换的缓存行。重构单元104还用于响应于替换请求执行下述“替换步骤”进行替换查找,并将得到的替换结果发送至控制单元101。其中,替换结果可以包括可替换缓存行所在的数据块的数据块ID、该可替换缓存行的缓存行ID等。
其中,控制单元101,还用于在接收到来自重构单元104的替换结果、或接收到来自所述统计单元103的命中结果的情况下,基于所述替换结果或命中结果生成请求结果发送至发出第一请求的外部装置。以使得外部装置可以基于请求结果进行执行相应操作。
在本实施例中,“替换步骤”可以包括:在接收到替换请求的情况下,将数据块分区对应的二叉树结构中的根节点确定为第一个目标节点并获取所述目标节点的节点信息;在所述目标节点为非叶节点的情况下,将当前所述目标节点的处理状态所指示的替换方向上的目标节点的子节点确定为下一目标节点以及更新目标节点的对应于替换方向的目标计数器,直至确定出的目标节点为叶节点。其中,若确定目标节点为叶节点则基于所述叶节点确定出待查数据块;采用PLRU算法查找出所述待查数据块中的可替换缓存行;根据所述待查数据块的数据块ID和所述可替换缓存行的缓存行ID生成查找结果。这样,替换过程中,先寻找到待查数据块缩小缓存行查找范围,再从待查数据块中寻找到可替换缓存行,可以提高缓存行替换的效率,避免逐条查找。
而因管理组织结构的差异,替换步骤也存在一定区别,以下结合图8对基于“上述示例一所提供的管理组织结构”的“替换步骤”进行说明。
如图8所示,重构单元104所执行的“替换步骤”是基于“上述示例一所提供的管理组织结构”进行缓存行替换查找的步骤,“替换步骤”可以包括步骤S201-步骤S213。
如图8所示,在步骤S201中,接收替换请求。并将其所控制的数据块分区所对应的二叉树结构中的根节点确定为第一个目标节点。在步骤S202中,在确定出目标节点后,获取到该目标节点的节点信息。
如图8所示,在步骤S203中,在得到目标节点的节点信息之后,根据目标节点的节点信息中的处理状态S的指示将目标节点的左侧分支或右侧分支确定为替换方向。例如,若“0”表示左侧分支、“1”表示右侧分支,则在处理状态S为0时,替换方向即为目标节点的左侧分支;在处理状态为1时,替换方向即为目标节点的右侧分支。
如图8所示,在步骤S204中,确定出替换方向之后,确定该替换方向对应的权重(例如,若替换方向为目标节点的左侧分支,则替换方向对应的权重即为左分区权重LW)。其中,若替换方向对应的权重为0和/或者对应的目标计数器为无效,则继续执行步骤S205。若替换方向对应的权重不为0且目标计数器有效,则继续执行步骤S209。其中,目标计数器为左分区计数器右分区计数器中与替换方向对应的计数器。
如图8所示,在步骤S205中,确定出替换方向对应的有效索引标识(例如,若替换方向为目标节点的左侧分支,则替换方向对应的有效索引标识即为左有效索引标识LVF),并进一步确定替换方向对应的有效索引标识是否为有效。其中,若替换方向对应的有效索引标识为有效,则继续执行步骤S207。若替换方向对应的有效索引标识为无效,则继续执行步骤S206。其中,如图8所示,在步骤S206中,若替换方向对应的有效索引标识为无效,则可以确定目标节点的替换方向上的各数据块均不符合查找条件,丢弃该替换请求、停止查找,并生成替换失败异常并上报异常寄存器,以使得后续可以针对该异常进行处理。
如图8所示,在步骤S207中,若替换方向对应的有效索引标识为有效,则可以确定当前该目标节点为叶节点,则将该叶节点的与替换方向对应的右地址索引RAI或左地址索引LAI确定为目标地址索引。例如,若替换方向为目标节点的左侧分支,则替换方向对应的有效索引标识即为左有效索引标识LVF,此时若左有效索引标识LVF有效就可以将左地址索引LAI确定为目标地址索引。
如图8所示,在步骤S208中,在确定出目标地址索引之后,重构单元104将所述目标索引地址所指向的数据块确定为待查数据块,而后向管理所述待查数据块的控制模块20中的替换单元103发出查找请求(S2081)。
其中,替换单元203接收到查找请求之后,会基于PLRU算法查找出待查数据块中能够作为替换的缓存行,替换单元203若能够查找到能够作为替换的缓存行,则将该缓存行作为可替换缓存行、并向重构单元104返回查找结果(该查找结果可以指示可替换缓存行的缓存行ID、以及该可替换缓存行所在的数据块的数据块ID),进而使得重构单元104可以基于接收到的查找结果生成替换结果(S2082)。
在一些实施例中,叶节点的右地址索引RAI、左地址索引LAI还可以设置为指向对应的数据块的控制模块20,则右地址索引RAI、左地址索引LAI可以设置为对应的数据块的控制模块20的控制模块标识(DBC id),以便于重构单元104基于目标地址索引直接确定出对应的控制模块20并向其中的替换单元103发出查找请求。
如图8所示,在步骤S209中,继续确定出替换方向对应的目标计数器(例如,若替换方向为目标节点的左侧分支,则替换方向对应的目标计数器即为左分区计数器LC)当前的数值,若目标计数器当前的数值为预设值(如0),则继续执行步骤S211。若目标计数器当前的数值不是预设值,则执行步骤S210。在一些实施例中,也可以先更新目标计数器的值后,再确定目标计数器当前的数值是否为预设值,若目标计数器当前的数值为预设值(如0),则继续执行步骤S211;若不是预设值则执行步骤S212,本公开对此不作限制。
如图8所示,在步骤S210中,更新目标计数器的值,而后执行步骤S212。其中,若目标节点的目标计数器(也即目标节点的左分区计数器LC或右分区计数器RC)的初始值为对该目标节点的左分区权重LW或右分区权重RW、预设值为0,则“更新目标计数器的值”就可以为使得目标计数器的值减1。若目标节点的目标计数器(也即目标节点的左分区计数器LC或右分区计数器RC)的初始值为0、预设值为该目标节点的左分区权重LW或右分区权重RW,则“更新目标计数器的值”就可以为使得目标计数器的值加1。
如图8所示,在步骤S211中,重置目标计数器的数值,并更改该目标节点的处理状态S。而后执行步骤S212。其中,若目标节点的目标计数器的初始值为对该目标节点的左分区权重LW或右分区权重RW、预设值为0,则“重置目标计数器的数值”就可以为使得目标计数器的值重新设置为左分区权重LW或右分区权重RW。若目标节点的目标计数器的初始值为0、预设值为该目标节点的左分区权重LW或右分区权重RW,则“重置目标计数器的数值”就可以为使得目标计数器的值重新设置为0。其中,“更改该目标节点的处理状态S”可以为:若目标节点的处理状态S指示替换方向为左侧分支,则将目标节点的处理状态S修改为指示替换方向为右侧分支,例如,将处理状态S由“0”修改为“1”。或者,若目标节点的处理状态S指示替换方向为右侧分支,则将目标节点的处理状态S修改为指示替换方向为左侧分支,例如,将处理状态S由“1”修改为“0”。
如图8所示,在步骤S212中,更新所存储的目标节点的节点信息。更新所存储的目标节点的节点信息可以包括:将目标计数器的值从原数值替换为当前数值、更新目标节点的处理状态S;或者,将目标计数器的值从原数值替换为当前数值。以保证所存储的各节点的节点信息始终与数据块的访问情况对应,保证缓存行替换的均衡性。
如图8所示,在步骤S213中,确定出指示下一目标节点的目标指针,其中,该目标指针可以为目标节点的替换方向所对应的指针,为左指针LP或右指针RP。例如,若替换方向为目标节点的左侧分支,则替换方向对应的目标指针即为左指针LP。而后执行步骤S202,进一步根据目标指针确定出下一目标节点的节点信息的存储地址,进而根据存储地址获取到下一目标节点的节点信息。
其中,步骤S212和步骤S213的执行顺序可如图8所示,也可以步骤S212在步骤S213之后、或者同步执行,本公开对此不作限制。
在本实施例中,若“替换步骤”是基于“上述示例二所提供的管理组织结构”进行缓存行替换查找的步骤,则基于“示例二所提供的管理组织结构”的“替换步骤”与图8所示的替换步骤仅部分步骤存在区别,为简明仅对区别步骤进行说明。其中,因为基于“示例二所提供的管理组织结构”中叶节点与数据块是一一对应的,则基于“示例二所提供的管理组织结构”的“替换步骤”与图8所示的替换步骤的区别在于:
在步骤S206之后,在确定目标节点为叶节点的情况下,直接将该目标节点中存储的左地址索引或右地址索引确定为目标地址索引,而后继续执行步骤S208。
为简明示意“替换步骤”的实现方式,以下通过简单示例进行说明。其中,处理状态指示的替换方向均为先左后右。
假设“替换步骤”是如图5所示的基于“示例一所提供的管理组织结构”或如图7所示的基于“示例二所提供的管理组织结构”进行缓存行替换查找,若根节点的左分区权重和右分区权重分别为4和2、根节点的左子节点的左分区权重和右分区权重均为2,则会按照“数据块DB_a、数据块DB_b、数据块DB_c、数据块DB_d、数据块DB_e、数据块DB_f、数据块DB_a……”这样的循环顺序确定出待查数据块。
假设“替换步骤”是如图5所示的基于“示例一所提供的管理组织结构”或如图7所示的基于“示例二所提供的管理组织结构”进行缓存行替换查找,若根节点的左分区权重和右分区权重分别为2和1、根节点的左子节点的左分区权重和右分区权重均为1,则会按照“数据块DB_a、数据块DB_c、数据块DB_e、数据块DB_b、数据块DB_d、数据块DB_f、数据块DB_a……”这样的循环顺序确定出待查数据块。
在本实施例中,第一请求针对数据所需进行的操作(读取或写入)的不同,装置1所执行的操作存在一定区别,以下对不同情况进行示意性解释。
情况一:
若外部装置发来的是针对数据进行读取的访问申请,则第一请求还可以指示需要对数据进行的操作是读取。则命中测试单元201在确定出命中缓存行之后,确定信息存储单元202中存储的该命中缓存行的有效位valid和脏数据标记dirty mask。
命中测试单元201若基于有效位valid和脏数据标记dirty mask确定该命中缓存行中存储的数据为无效且为非脏数据,则命中测试单元201可以向所述统计单元103返回为命中的测试结果。统计单元103继而可以向控制单元101发送命中结果,以使得控制单元101基于数据块ID和缓存行ID读取到命中缓存行中的数据,并将该数据作为请求结果返回外部装置。
命中测试单元201若基于有效位valid和脏数据标记dirty mask确定该命中缓存行中存储的数据为有效且为脏数据,则可以先将该命中缓存行中存储的数据存储到下一级缓存,而后命中测试单元201向所述统计单元103返回为命中的测试结果。统计单元103继而可以向控制单元101发送命中结果,以使得控制单元101基于数据块ID和缓存行ID读取到命中缓存行中的数据,并将该数据作为请求结果返回外部装置。
在一些实施例中,控制单元101可以将数据块ID和缓存行ID发送至读端口(readport),读端口基于数据块ID和缓存行ID读取到数据之后返回给控制单元101。
情况二:
若外部装置发来的是针对数据进行读取的访问申请,则第一请求还可以指示需要对数据进行的操作是读取。则命中测试单元201在未命中之后,重构单元104查找到可替换缓存行之后,还用于根据该可替换缓存行对应数据块ID从对应的信息存储单元202获取到该可替换缓存行的有效位valid和脏数据标记dirty mask。
重构单元104若基于有效位valid和脏数据标记dirty mask确定该可替换缓存行中存储的数据为无效且为非脏数据,则可以向控制单元101返回替换结果(携带有可替换缓存行的所在的数据块的数据块ID和可替换缓存行的缓存行ID)。以使得控制单元101基于数据块ID和缓存行ID读取到可替换缓存行中的数据,并将该数据作为请求结果返回外部装置。
重构单元104若基于有效位valid和脏数据标记dirty mask确定该可替换缓存行中存储的数据为有效且为脏数据,则可以先将该可替换缓存行中存储的数据存储到下一级缓存,而后向控制单元101返回替换结果(携带有可替换缓存行的所在的数据块的数据块ID和可替换缓存行的缓存行ID)。以使得控制单元101基于数据块ID和缓存行ID读取到可替换缓存行中的数据,并将该数据作为请求结果返回外部装置。
在一些实施例中,控制单元101可以将数据块ID和缓存行ID发送至读端口(readport),读端口基于数据块ID和缓存行ID读取到数据之后返回给控制单元101。
情况三:
若外部装置发来的是针对数据进行写入的访问申请,访问申请中可以携带有需要写入的数据,则第一请求还可以指示需要对数据进行的操作是写入。则命中测试单元201在确定出命中缓存行之后,确定信息存储单元202中存储的该命中缓存行的有效位valid和脏数据标记dirty mask。
命中测试单元201若基于有效位valid和脏数据标记dirty mask确定该命中缓存行中存储的数据为无效且为非脏数据,则可以命中测试单元201向所述统计单元103返回为命中的测试结果。统计单元103继而可以向控制单元101发送命中结果,以使得控制单元101基于数据块ID和缓存行ID将数据写入到命中缓存行,并将写入成功作为请求结果返回外部装置。其中,还需要将命中缓存行的valid和dirty mask分别更新为有效、脏数据状态。
命中测试单元201若基于有效位valid和脏数据标记dirty mask确定该命中缓存行中存储的数据为有效且为脏数据,则可以先将该命中缓存行中存储的数据存储到下一级缓存,而后命中测试单元201向所述统计单元103返回为命中的测试结果。统计单元103继而可以向控制单元101发送命中结果,以使得控制单元101基于数据块ID和缓存行ID将数据写入到命中缓存行,并将写入成功作为请求结果返回外部装置。
在一些实施例中,控制单元101可以将待写入的数据、数据块ID和缓存行ID发送至写端口(write port),写端口基于数据块ID和缓存行ID将数据写入命中缓存行之后报告控制单元101。
情况四:
若外部装置发来的是针对数据进行写入的访问申请,访问申请中可以携带有需要写入的数据,则第一请求还可以指示需要对数据进行的操作是写入。则命中测试单元201在未命中之后,重构单元104查找到可替换缓存行之后,还用于根据该可替换缓存行对应数据块ID从对应的信息存储单元202获取到该可替换缓存行的有效位valid和脏数据标记dirtymask。
重构单元104若基于有效位valid和脏数据标记dirty mask确定该可替换缓存行中存储的数据为无效且为非脏数据,则可以向控制单元101返回替换结果(携带有可替换缓存行的所在的数据块的数据块ID和可替换缓存行的缓存行ID)。以使得控制单元101基于数据块ID和缓存行ID将数据写入到可替换缓存行,并将写入成功作为请求结果返回外部装置。其中,还需要将命中缓存行的valid和dirty mask分别更新为有效、脏数据状态。
重构单元104若基于有效位valid和脏数据标记dirty mask确定该可替换缓存行中存储的数据为有效且为脏数据,则可以先将该可替换缓存行中存储的数据存储到下一级缓存,而后向控制单元101返回替换结果(携带有可替换缓存行的所在的数据块的数据块ID和可替换缓存行的缓存行ID)。以使得控制单元101基于数据块ID和缓存行ID将数据写入到可替换缓存行,并将写入成功作为请求结果返回外部装置。
在一些实施例中,控制单元101可以将待写入的数据、数据块ID和缓存行ID发送至写端口(write port),写端口基于数据块ID和缓存行ID将数据写入命中缓存行之后报告控制单元101。
在一种可能的实现方式中,如图9所示,控制中心模块(DBCC)10还可以包括端口105。该端口包括上述写端口和读端口。端口105用于在控制单元101的控制下从对应的数据块存储空间(DB SRAM)中进行缓存行ID所对应的缓存行的数据读取、数据写入。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
如图3、图4所示,本公开实施例还提供一种缓存管理系统,该系统包括上述缓存管理装置1和存储区域2。
需要说明的是,尽管以上述实施例作为示例介绍了缓存管理装置及系统如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本公开的发明构思即可。
本公开实施例还提出一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述装置所执行的各步骤对应的方法。计算机可读存储介质可以是易失性或非易失性计算机可读存储介质。
本公开实施例还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为在执行所述存储器存储的指令时,实现上述装置所执行的各步骤对应的方法。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备的处理器中运行时,所述电子设备中的处理器执行上述装置所执行的各步骤对应的方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (16)

1.一种缓存管理装置,其特征在于,用于对存储区域中的多个数据块进行管理控制,每个所述数据块中包括多个缓存行,所述装置包括:至少一个控制中心模块、多个控制模块,各所述控制中心模块用于控制对应的至少一个控制模块,各所述控制模块用于控制对应的一个数据块,
各所述控制中心模块,用于根据接收到的访问申请生成第一请求,并将所述第一请求广播至所控制的各所述控制模块,所述第一请求中携带有缓存行标签;
各所述控制模块中的命中测试单元,用于根据接收到的第一请求对所控制的数据块进行缓存行的命中测试,并将测试结果返回所述控制中心模块;
所述控制中心模块,还用于根据所述控制模块返回的测试结果生成总结果。
2.根据权利要求1所述的装置,其特征在于,所述控制中心模块,包括:
控制单元,用于根据接收到的访问申请生成第一请求,并将所述第一请求发送至广播单元;
广播单元,用于将所述第一请求广播至各所述控制模块。
3.根据权利要求2所述的装置,其特征在于,所述控制中心模块,还包括:
统计单元,用于接收所述控制模块返回的测试结果,并根据所述控制模块返回的测试结果生成总结果,并将所述总结果发送至控制单元;
其中,所述总结果包括命中结果和命中失败结果,所述命中结果是接收到任意第一个结果为命中的测试结果的情况下生成的;所述命中失败结果是接收到来自各控制模块的测试结果均为未命中的情况下生成的;
所述测试结果中携带有以下信息的至少一种:指示命中测试是否命中的状态信息、进行命中测试的数据块的数据块ID、所述缓存行标签;结果为命中的测试结果中还携带有命中缓存行的缓存行ID。
4.根据权利要求3所述的装置,其特征在于,
所述统计单元,还用于在生成的总结果为所述命中结果的情况下,生成停止信号请求,并将所述停止信号请求发送至广播单元,所述停止信号请求用于指示停止针对所述第一请求的命中测试;
所述广播单元,还用于将所述停止信号请求广播至还未返回测试结果的各控制模块中;
所述控制模块中的命中测试单元,用于响应于接收到的所述停止信号请求,停止针对所述第一请求的命中测试。
5.根据权利要求3所述的装置,其特征在于,所述控制中心模块还包括重构单元,所述控制模块还包括替换单元,
所述控制单元,还用于在所述总结果为表示全部未命中的失败结果的情况下,向所述重构单元发送替换请求;
所述重构单元,用于在接收到替换请求的情况下,根据预先构建的管理组织结构从数据块分区中确定出待查数据块,并向管理所述待查数据块的控制模块中的替换单元发送查找请求,所述数据块分区包括所述重构单元所在的控制中心模块控制的各所述控制模块所控制的数据块;
所述替换单元,用于响应于所述查找请求,采用PLRU算法查找出所述待查数据块中的可替换缓存行,并生成查找结果返回所述重构单元;
所述重构单元,还用于根据所述查找结果生成替换结果并返回所述控制单元,所述替换结果携带有所述可替换缓存行的缓存行ID、所述可替换缓存行所在的数据块的数据块ID;
其中,所述管理组织结构包括对应于所述数据块分区的二叉树结构和所述二叉树结构中各节点的节点信息,所述二叉树结构为满二叉树结构或非满二叉树结构。
6.根据权利要求5所述的装置,其特征在于,所述节点信息包括:处理状态、左分区计数器和右分区计数器,
其中,根据预先构建的管理组织结构从数据块分区中确定出待查数据块,包括:
在接收到替换请求的情况下,将数据块分区对应的二叉树结构中的根节点确定为第一个目标节点并获取所述目标节点的节点信息;
在所述目标节点为非叶节点的情况下,将当前所述目标节点的处理状态所指示的替换方向上的所述目标节点的子节点确定为下一目标节点以及更新所述目标节点的对应于替换方向的目标计数器,直至确定出的目标节点为叶节点,则基于所述叶节点确定出待查数据块;所述目标计数器为所述目标节点的左分区计数器和右分区计数器中对应于所述目标节点的处理状态所指示的替换方向的计数器,各节点的处理状态所指示的替换方向为节点的左侧分支或右侧分支;
所述控制模块还包括信息存储单元,所述信息存储单元,用于存储所控制数据块中各缓存行的基本信息,所述基本信息包括各缓存行的缓存行标签和缓存行ID。
7. 根据权利要求6所述的装置,其特征在于,基于所述叶节点确定出待查数据块,包括:
将所述叶节点的处理状态所指示的替换方向对应的数据块确定为待查数据块;或者
将所述叶节点对应的数据块确定为待查数据块。
8.根据权利要求6所述的装置,其特征在于,所述节点信息还包括左分区权重和右分区权重,
所述重构单元,还用于在所述目标计数器的数值为预设值的情况下,重置所述目标计数器为初始值以及更改所述目标节点的处理状态所指示的替换方向;
其中,所述初始值为对应于所述目标计数器所在分支方向的分区权重、所述预设值为0;或者,所述初始值为0、所述预设值为对应于所述目标计数器所在分支方向的分区权重;左分区计数器所在分支方向的分区权重为左分区权重,右分区计数器所在分支方向的分区权重为右分区权重。
9.根据权利要求8所述的装置,其特征在于,
所述重构单元,还用于在确定所述目标节点的目标计数器为无效和/或所述目标节点对应于处理状态所指示的替换方向的分区权重为0的情况下,确定所述目标节点为叶节点;
其中,所述目标节点对应于处理状态所指示的替换方向的分区权重为左分区权重或右分区权重。
10.根据权利要求6所述的装置,其特征在于,所述节点信息还包括左指针和右指针,
所述重构单元,还用于根据当前所述目标节点的处理状态所指示的替换方向对应的目标指针查找到下一目标节点;
其中,若当前所述目标节点的处理状态所指示的替换方向为左侧分支,则所述目标指针为左指针;若当前所述目标节点的处理状态所指示的替换方向为右侧分支,则所述目标指针为右指针。
11.根据权利要求7所述的装置,其特征在于,所述叶节点的节点信息还包括:右地址索引、右有效索引标识、左地址索引和左有效索引标识,
其中,将所述叶节点的处理状态所指示的替换方向对应的数据块确定为待查数据块,包括:在所述叶节点的处理状态所指示的替换方向对应的有效索引标识为有效的情况下,将所述叶节点的处理状态所指示的替换方向对应的地址索引所指向的数据块确定为待查数据块;
其中,若当前所述目标节点的处理状态所指示的替换方向为左侧分支,则所述目标地址索引为所述左地址索引、指向待查数据块的地址索引为所述左有效索引标识;若当前所述目标节点的处理状态所指示的替换方向为右侧分支,则所述目标地址索引为所述右地址索引、指向待查数据块的地址索引为所述右有效索引标识。
12.根据权利要求7所述的装置,其特征在于,所述叶节点的节点信息还包括左地址索引、左有效索引标识,或者所述叶节点的节点信息还包括右地址索引和右有效索引标识,
其中,将所述叶节点对应的数据块确定为待查数据块,包括:在所述叶节点的节点信息中存在的左有效索引标识或右有效索引标识为有效的情况下,将所述叶节点的节点信息中存在的地址索引所指向的数据块确定为待查数据块。
13.根据权利要求8所述的装置,其特征在于,各节点的左分区权重、右分区权重与所述节点的左侧分支中数据块的左侧数量、所述节点的右侧分支中数据块的右侧数量相关,
在所述节点的左侧数量和右侧数量均不为零的情况下,所述节点的左分区权重、右分区权重的值,根据节点的左侧数量和右侧数量的最简整数比确定;
在所述节点的左侧数量和/或右侧数量为零的情况下,所述节点的左分区权重、右分区权重的值分别设置为节点的左侧数量和右侧数量。
14.根据权利要求6-13任意一项所述的装置,其特征在于,
所述重构单元,还用于响应于重构请求,根据配置信息设置所述数据块分区中的数据块的块数量以及各所述数据块中缓存行的行数量,并设置各所述数据块的数据块ID、缓存行的缓存行ID;根据所述数据块分区中数据块的块数量,创建对应所述数据块分区的二叉树结构,以及确定所述二叉树结构中各节点的节点信息,完成所述数据块分区的管理组织结构配置。
15.根据权利要求1所述的装置,其特征在于,各所述数据块中包括个缓存行,n为正整数。
16.一种缓存管理系统,其特征在于,包括:缓存管理装置和存储区域,
所述存储区域,包括多个数据块,每个所述数据块中包括多个缓存行;
所述缓存管理装置包括:至少一个控制中心模块、多个控制模块,各所述控制中心模块用于控制对应的至少一个控制模块,各所述控制模块用于控制对应的一个数据块,
所述控制中心模块,用于根据接收到的访问申请生成第一请求,并将所述第一请求广播至所控制的各所述控制模块,所述第一请求中携带有缓存行标签;
各所述控制模块中的命中测试单元,用于根据接收到的第一请求对所控制的数据块进行缓存行的命中测试,并将测试结果返回所述控制中心模块;
所述控制中心模块,还用于根据所述控制模块返回的测试结果生成总结果。
CN202311634783.4A 2023-11-30 2023-11-30 缓存管理装置及系统 Active CN117349199B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311634783.4A CN117349199B (zh) 2023-11-30 2023-11-30 缓存管理装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311634783.4A CN117349199B (zh) 2023-11-30 2023-11-30 缓存管理装置及系统

Publications (2)

Publication Number Publication Date
CN117349199A true CN117349199A (zh) 2024-01-05
CN117349199B CN117349199B (zh) 2024-07-23

Family

ID=89366957

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311634783.4A Active CN117349199B (zh) 2023-11-30 2023-11-30 缓存管理装置及系统

Country Status (1)

Country Link
CN (1) CN117349199B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070156972A1 (en) * 2006-01-04 2007-07-05 Keitaro Uehara Cache coherency control method, chipset, and multi-processor system
WO2019128958A1 (zh) * 2017-12-29 2019-07-04 华为技术有限公司 缓存替换技术
US20200341961A1 (en) * 2019-04-25 2020-10-29 EMC IP Holding Company LLC Method, device, and computer program product for managing storage system
CN112363958A (zh) * 2020-11-12 2021-02-12 上海兆芯集成电路有限公司 高速缓存替换的方法及装置
WO2022178869A1 (zh) * 2021-02-26 2022-09-01 华为技术有限公司 一种缓存替换方法和装置
CN115454887A (zh) * 2022-08-23 2022-12-09 北京奕斯伟计算技术股份有限公司 数据处理方法、装置、电子设备及可读存储介质
CN117132446A (zh) * 2023-05-26 2023-11-28 摩尔线程智能科技(北京)有限责任公司 Gpu的数据访问处理方法、装置及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070156972A1 (en) * 2006-01-04 2007-07-05 Keitaro Uehara Cache coherency control method, chipset, and multi-processor system
WO2019128958A1 (zh) * 2017-12-29 2019-07-04 华为技术有限公司 缓存替换技术
US20200341961A1 (en) * 2019-04-25 2020-10-29 EMC IP Holding Company LLC Method, device, and computer program product for managing storage system
CN112363958A (zh) * 2020-11-12 2021-02-12 上海兆芯集成电路有限公司 高速缓存替换的方法及装置
WO2022178869A1 (zh) * 2021-02-26 2022-09-01 华为技术有限公司 一种缓存替换方法和装置
CN115454887A (zh) * 2022-08-23 2022-12-09 北京奕斯伟计算技术股份有限公司 数据处理方法、装置、电子设备及可读存储介质
CN117132446A (zh) * 2023-05-26 2023-11-28 摩尔线程智能科技(北京)有限责任公司 Gpu的数据访问处理方法、装置及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
叶晨;张延园;: "一种海量存储系统二级缓存的设计与实现", 计算机与现代化, no. 12, 18 December 2013 (2013-12-18), pages 56 - 59 *
祖文强;王芳;李焱;万进;: "可配置及历史信息感知的多级缓存策略", 计算机研究与发展, no. 2, 15 December 2015 (2015-12-15), pages 170 - 177 *

Also Published As

Publication number Publication date
CN117349199B (zh) 2024-07-23

Similar Documents

Publication Publication Date Title
US11157449B2 (en) Managing data in storage according to a log structure
US8502819B1 (en) System and method for performing ray tracing node traversal in image rendering
TW201841118A (zh) 採用映射記憶體提供多重命名空間的方法及設備
US9507731B1 (en) Virtualized cache memory
CN105677580A (zh) 访问缓存的方法和装置
KR101662969B1 (ko) 동적으로 할당된 더티 마스크 공간을 이용한 메모리 관리
US11074189B2 (en) FlatFlash system for byte granularity accessibility of memory in a unified memory-storage hierarchy
US9582424B2 (en) Counter-based wide fetch management
CN110347338B (zh) 混合内存数据交换处理方法、系统及可读存储介质
CN115061972B (zh) 处理器、数据读写方法、装置和存储介质
US20230102891A1 (en) Re-reference interval prediction (rrip) with pseudo-lru supplemental age information
US20130036271A1 (en) Dynamic index selection in a hardware cache
CN115952110A (zh) 一种数据缓存方法、装置、设备和计算机可读存储介质
US10831659B2 (en) Scope resolution tag buffer to reduce cache miss latency
US9734089B2 (en) Memory management unit and method for accessing data
CN117349199B (zh) 缓存管理装置及系统
CN117349198A (zh) 缓存行替换方法及装置
CN117331858B (zh) 存储装置及数据处理系统
US11720486B2 (en) Memory data access apparatus and method thereof
WO2023088535A1 (en) Cache eviction based on current tiering status
KR20220110226A (ko) 고빈도 액세스 버킷 세트와 저빈도 액세스 버킷 세트를 갖는 해시 테이블을 사용하는 시스템 및 방법
CN117539803B (zh) 一种可变换Cache存储系统
US10884949B2 (en) On-chip logic accelerator
US11704250B2 (en) Using request class and reuse recording in one cache for insertion policies of another cache
US10831661B2 (en) Coherent cache with simultaneous data requests in same addressable index

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