CN107861819B - 一种缓存组负载均衡的方法、装置和计算机可读存储介质 - Google Patents
一种缓存组负载均衡的方法、装置和计算机可读存储介质 Download PDFInfo
- Publication number
- CN107861819B CN107861819B CN201711285384.6A CN201711285384A CN107861819B CN 107861819 B CN107861819 B CN 107861819B CN 201711285384 A CN201711285384 A CN 201711285384A CN 107861819 B CN107861819 B CN 107861819B
- Authority
- CN
- China
- Prior art keywords
- cache
- group
- cache group
- access address
- data
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000012546 transfer Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 11
- 101150117538 Set2 gene Proteins 0.000 description 12
- 239000000872 buffer Substances 0.000 description 11
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 2
- 101100533306 Mus musculus Setx gene Proteins 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003631 expected effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (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
技术领域
本发明涉及数据缓存技术领域,特别是涉及一种缓存组负载均衡的方法、装置和计算机可读存储介质。
背景技术
相比于片上的中央处理器(Central Processing Unit,CPU),片外主存的高延迟和低带宽一直是影响系统性能的瓶颈。为减轻片外主存和CPU的性能差距,芯片内部都设有缓存空间,存放那些可能被频繁访问的指令和数据,以减少对片外主存的访问。因此,能否有效地利用片上缓存的空间资源,对系统的性能起着至关重要的作用。
片上缓存通常都采用组相联(set-associative)的映射方式,缓存分为多个组(set),每组包含相同的路数(way),每一路缓存区域即为一个缓存行。路数的取值通常为2的幂次方,比如8路或16路。
当前缓存通常采用最近最少使用(Least Recently Used,LRU)管理策略进行管理,其可分为三个子策略:1)插入策略,第一次访问的数据被插入到对应缓存组的最高优先级的缓存行中;2)提升策略,缓存组中某个缓存行被访问命中,就把命中的缓存行提升到当前组的最高优先级位置;3)替换策略,缓存组的所有缓存行都已被填充数据,当需要插入新的数据时,选择把最低优先级位置的缓存行数据替换出当前缓存组。
基于当前缓存组的缓存设计,主存访问的压力在片上缓存组间并非都是均匀分布。在程序执行期间,某些缓存组被频繁访问,承担的工作集超过其缓存组的容量,导致其命中率很低;而有些缓存组的某些缓存行可能并没有被有效地利用,存在资源浪费的现象。
针对这种组间压力不均匀的问题,一种比较直观的解决方法是增加组相连度,即增大缓存组的路数,比如先前8路,可增大至16路。这种增加组相连度的方式,就像把两个组进行合并,以分摊两个组的工作集,达到低压力的缓存组分担高压力缓存组的目的。然而,这种增加组相连度的方式,不仅会增加缓存访问的延迟和能耗,而且会导致缓存管理的复杂度上升。并且增加组相连度并不会提高缓存组总的命中率。
可见,如何解决片上缓存组间压力不均匀的问题,是本领域技术人员亟待解决的问题。
发明内容
本发明实施例的目的是提供一种缓存组负载均衡的方法、装置和计算机可读存储介质,可以解决片上缓存组间压力不均匀的问题,提高缓存组的利用率以及缓存命中率。
为解决上述技术问题,本发明实施例提供一种缓存组负载均衡的方法,包括:
依据访问地址中携带的组号,从所有缓存组中查找所述组号对应的第一缓存组;
判断所述第一缓存组中是否存储有所述访问地址对应的数据;
若所述第一缓存组中未存储所述访问地址对应的数据,则依据预先划分的联合组,查找与所述第一缓存组相关联的第二缓存组;
判断所述第一缓存组是否达到饱和状态,并且所述第二缓存组的剩余存储空间是否满足预设条件;
若是,则将所述第一缓存组中优先级最低的缓存行存储的数据转移至所述第二缓存组中,并将所述访问地址对应的数据存储于所述第一缓存组中。
可选的,所述联合组的划分过程包括:
依据各个缓存组对应的二进制组号,将最高位相反、其余位相同的两个二进制组号对应的缓存组划分为一个联合组。
可选的,所述将所述访问地址对应的数据存储于所述第一缓存组中包括:
将所述第一缓存组中各个缓存行中存储的数据依次转移至优先级低一级的缓存行,并将所述访问地址对应的数据存储于所述第一缓存组中优先级最高的缓存行中。
可选的,所述将所述第一缓存组中优先级最低的缓存行存储的数据转移至所述第二缓存组中包括:
依据所述第二缓存组包含的缓存行的个数,将所述第二缓存组中间位置的缓存行作为目标缓存行;并将所述第一缓存组中优先级最低的缓存行存储的数据转移至所述目标缓存行中。
可选的,还包括:
在每个缓存行中添加一个替换标记位,当第一缓存行中的数据转移至第二缓存行时,则修改所述第二缓存行的替换标记位的状态值;其中,所述第一缓存行所属的缓存组,与所述第二缓存行所属的缓存组为两个不同的缓存组,并且所述两个不同的缓存组属于同一个联合组。
可选的,还包括:
在每个缓存组中添加一个查找标记位,当所述第一缓存组中优先级最低的缓存行存储的数据转移至所述第二缓存组中时,则修改所述第一缓存组的查找标记位的状态值。
本发明实施例还提供了一种缓存组负载均衡的装置,包括查找单元、第一判断单元、第二判断单元、转移单元和存储单元;
所述查找单元,用于依据访问地址中携带的组号,从所有缓存组中查找所述组号对应的第一缓存组;
所述第一判断单元,用于判断所述第一缓存组中是否存储有所述访问地址对应的数据;
若所述第一缓存组中未存储所述访问地址对应的数据,则触发所述查找单元,所述查找单元还用于依据预先划分的联合组,查找与所述第一缓存组相关联的第二缓存组;
所述第二判断单元,用于判断所述第一缓存组是否达到饱和状态,并且所述第二缓存组的剩余存储空间是否满足预设条件;
若是,则触发所述转移单元,所述转移单元,用于将所述第一缓存组中优先级最低的缓存行存储的数据转移至所述第二缓存组中;
所述存储单元,用于将所述访问地址对应的数据存储于所述第一缓存组中。
可选的,还包括划分单元,所述划分单元,用于依据各个缓存组对应的二进制组号,将最高位相反、其余位相同的两个二进制组号对应的缓存组划分为一个联合组。
可选的,所述存储单元具体用于将所述第一缓存组中各个缓存行中存储的数据依次转移至优先级低一级的缓存行,并将所述访问地址对应的数据存储于所述第一缓存组中优先级最高的缓存行中。
可选的,所述转移单元具体用于依据所述第二缓存组包含的缓存行的个数,将所述第二缓存组中间位置的缓存行作为目标缓存行;并将所述第一缓存组中优先级最低的缓存行存储的数据转移至所述目标缓存行中。
可选的,还包括添加单元和修改单元;
所述添加单元,用于在每个缓存行中添加一个替换标记位;
当第一缓存行中的数据转移至第二缓存行时,则触发所述修改单元,所述修改单元,用于修改所述第二缓存行的替换标记位的状态值;其中,所述第一缓存行所属的缓存组,与所述第二缓存行所属的缓存组为两个不同的缓存组,并且所述两个不同的缓存组属于同一个联合组。
可选的,所述添加单元还用于在每个缓存组中添加一个查找标记位;
当所述第一缓存组中优先级最低的缓存行存储的数据转移至所述第二缓存组中时,则触发所述修改单元,所述修改单元还用于修改所述第一缓存组的查找标记位的状态值。
本发明实施例还提供了一种缓存组负载均衡的装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上述缓存组负载均衡的方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述缓存组负载均衡的方法的步骤。
由上述技术方案可以看出,系统依据访问地址中携带的组号,从所有缓存组中查找所述组号对应的第一缓存组;判断第一缓存组中是否存储有所述访问地址对应的数据;当第一缓存组中未存储所述访问地址对应的数据时,则依据预先划分的联合组,查找与第一缓存组相关联的第二缓存组,并判断第一缓存组是否达到饱和状态,以及第二缓存组的剩余存储空间是否满足预设条件;当这两个条件均满足时,则说明第二缓存组具有足够的空间容纳第一缓存组中需要转移的数据,此时可以将第一缓存组中优先级最低的缓存行存储的数据转移至第二缓存组中,并将所述访问地址对应的数据存储于所述第一缓存组中。该技术方案中,通过将缓存组进行联合,从而可以将压力较大的缓存组中的数据转移至压力较小的缓存组中,有效地解决片上缓存组间压力不均匀的问题,提高了缓存组的利用率以及缓存命中率。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种缓存组负载均衡的方法的流程图;
图2为本发明实施例提供的一种缓存组负载均衡的装置的结构示意图;
图3为本发明实施例提供的一种缓存组负载均衡的装置的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
接下来,详细介绍本发明实施例所提供的一种缓存组负载均衡的方法。图1为本发明实施例提供的一种缓存组负载均衡的方法的流程图,该方法包括:
S101:依据访问地址中携带的组号,从所有缓存组中查找所述组号对应的第一缓存组。
片上缓存可以划分成多个缓存组,每个缓存组有其对应的一个组号,例如,片上缓存包含有10个缓存组,其对应的组号依次为0-9。
在一个访问地址中可以包含有标签信息(tags)和组号,依据该组号可以确定系统所要访问的是哪一个缓存组。
S102:判断所述第一缓存组中是否存储有所述访问地址对应的数据。
一个缓存组可以包含有多个缓存行,每个缓存行中可以存储相应的数据。标签信息代表数据的一个标识,在具体实现中,可以依据标签信息,判断缓存组中是否存储有访问地址对应的数据。
当第一缓存组中存在与访问地址中标签信息相同的标签信息时,则说明第一缓存组中已经存储了访问地址对应的数据;当第一缓存组中不存在与访问地址中标签信息相同的标签信息时,则说明第一缓存组未存储有访问地址对应的数据,此时需要将该访问地址对应的数据存储于第一缓存组中,但是考虑到第一缓存组的缓存空间有限,在将数据存储于第一缓存组之前,需要进行相应的判断。当所述第一缓存组中未存储所述访问地址对应的数据时,执行S103。
S103:依据预先划分的联合组,查找与所述第一缓存组相关联的第二缓存组。
在本发明实施例中,为了有效解决缓存组间压力不均匀的问题,可以将缓存组进行联合,例如,可以将两个缓存组划分为一个联合组。这两个缓存组的压力往往不同,当这个联合组中的任意一个缓存组压力较大,导致缓存命中率较低时,则可以将压力较大的缓存组中数据转移至另一个压力较小的缓存组中,以实现压力的均衡。
在本发明实施例中,可以依据各缓存组的组号,进行联合组的划分。具体的,可以依据各个缓存组对应的二进制组号,将最高位相反、其余位相同的两个二进制组号对应的缓存组划分为一个联合组。
例如,二进制组号占用4位,第一缓存组的组号为5,其二进制形式为0101B;与该二进制组号最高位相反,其余位相同的二进制组号为1101B,即组号13,因此,可以将组号为5的缓存组和组号为13的缓存组作为一个联合组。
为了便于后续介绍,可以将与第一缓存组属于同一个联合组的缓存组称作第二缓存组。
S104:判断所述第一缓存组是否达到饱和状态,并且所述第二缓存组的剩余存储空间是否满足预设条件。
在本发明实施例中,为了更加准确的统计各缓存组的压力状态,可以对各缓存组所承载的压力进行量化统计。具体的,可以在每个缓存组中添加一个饱和计数器(Saturating Counter,SC),当缓存组中并未存储访问地址对应的数据时,也即出现命中缺失时,则将该缓存组的饱和计数器加1;当缓存组中存储有访问地址对应的数据时,也即命中时,则将该缓存组的饱和计数器减1。
饱和计数器的计数值反映了缓存组所承载的压力程度,饱和计数器的计数值越高,表明该缓存组的压力越大,其命中率越低。
对于饱和计数器的计数值的范围,可以依据缓存组的组相连度设置。计数值往往以二进制形式表示,相应的,饱和计数器计数值的位数可以按照1+log2k设置,其中,k表示缓存组的组相连度,即缓存组中包含的缓存行的个数。
例如,第一缓存组的组相连度为8,则饱和计数器计数值的位数为1+log28=4,也即计数值范围为[0,15]。
饱和状态可以是缓存组的一个极限状态,在本发明实施例中,可以将饱和状态设定为饱和计数器的计数值达到2k-1。
缓存组的剩余存储空间是否满足预设条件,可以设定为缓存组的饱和计数器的计数值是否小于k。当缓存组的饱和计数器的计数值小于k时,则说明该缓存组的剩余存储空间满足预设条件,可以用于存储其相关联的缓存组转移来的数据;当缓存组的饱和计数器的计数值大于等于k时,则说明该缓存组的剩余存储空间不满足预设条件,不适合存储其相关联的缓存组转移来的数据。
当第一缓存组达到饱和状态,并且第二缓存组的剩余存储空间满足预设条件,则可以执行S105;也即当这两个条件同时满足时,缓存行数据在组间交换的操作才能进行,否则按照传统方式,将缓存行数据送到下级存储层中。
S105:将所述第一缓存组中优先级最低的缓存行存储的数据转移至所述第二缓存组中,并将所述访问地址对应的数据存储于所述第一缓存组中。
缓存组中的数据往往按照优先级顺序依次存储,第一个缓存行的优先级最高,最后一个缓存行的优先级最低。
如果将第一缓存组中优先级最低的缓存行存储的数据插入到第二缓存组中最高优先级位置,会对联合缓存组的命中率产生较大的影响;但是若将该数据插入到最低优先级位置,又达不到预想的效果,因为若插入到最低优先级位置会很快被替换出去,不能被再次命中。
故此,在本发明实施例中,可以依据所述第二缓存组包含的缓存行的个数,将所述第二缓存组中间位置的缓存行作为目标缓存行;从而将第一缓存组中优先级最低的缓存行存储的数据转移至所述目标缓存行中。
例如,第二缓存组包含的缓存行的个数为8即k=8,则可以选取第k/2=4个缓存行作为目标缓存行,用来存储第一缓存组转移来的数据。若第4个缓存行已经存储有数据,则可以将第4缓存行以及后续存储有数据的缓存行依次转移至优先级低一级的缓存行,从而空出第4个缓存行用于存储第一缓存组转移来的数据。
在实际应用中,往往将内存访问引入的数据存储在缓存组优先级最高的位置,故此,当第一缓存组中优先级最低的缓存行存储的数据转移至第二缓存组后,可以将所述第一缓存组中各个缓存行中存储的数据依次转移至优先级低一级的缓存行,并将所述访问地址对应的数据存储于所述第一缓存组中优先级最高的缓存行中。
如表1所示,片上缓存共有四个缓存组,组号依次为0、1、2和3,缓存组的组相连度k=2,依据上述联合组的划分方式可知,组号0和组号2的两个缓存组为一个联合组;组号1和组号3的两个缓存组为一个联合组。表1中标头为“tags”的第2列数据表示各缓存行的标签信息;标头为“SC”的第5列数据表示各缓存组的饱和计数器的计数值。
表1
以7位的访问地址为例,前5位代表标签信息tags,后2位代表组号,假设访问地址为“1111000”,表示系统需要访问组号为0的缓存组,由表1可知,组号为0的缓存组中并不存在“11110”,也即该缓存组中未存储该访问地址对应的数据。为方便介绍,用setx表示组号为x(0、1、2或3)的缓存组。因为set0的SC=3(2k-1),说明set0达到了饱和状态,与其相关联的set2的SC=1(小于k),说明set2的剩余存储空间满足预设条件,所以可以将set0中缓存行“10010”的数据转移至set2的第一行(k/2)中,并将“11110”对应的数据写入set0的第一行,数据转移后的片上缓存的数据分布如表2所示。
表2
结合表2,假设第二次的访问地址为“1001000”,表示系统需要访问组号为0的缓存组,由表2可知,set0中并不存在“10010”,也即该缓存组中未存储该访问地址对应的数据。由于在接收第二次的访问地址之前,将set0中的一部分数据转移至了set2中,故此,可以再查询set2中是否存储有第二次的访问地址对应的数据,由表2可知,set2中存在“10010”,也即该缓存组中存储该访问地址对应的数据,故此,可以将set2中的SC减1,此时片上缓存的数据分布如表3所示。
表3
由上述技术方案可以看出,系统依据访问地址中携带的组号,从所有缓存组中查找所述组号对应的第一缓存组;判断第一缓存组中是否存储有所述访问地址对应的数据;当第一缓存组中未存储所述访问地址对应的数据时,则依据预先划分的联合组,查找与第一缓存组相关联的第二缓存组,并判断第一缓存组是否达到饱和状态,以及第二缓存组的剩余存储空间是否满足预设条件;当这两个条件均满足时,则说明第二缓存组具有足够的空间容纳第一缓存组中需要转移的数据,此时可以将第一缓存组中优先级最低的缓存行存储的数据转移至第二缓存组中,并将所述访问地址对应的数据存储于所述第一缓存组中。该技术方案中,通过将缓存组进行联合,从而可以将压力较大的缓存组中的数据转移至压力较小的缓存组中,有效地解决片上缓存组间压力不均匀的问题,提高了缓存组的利用率以及缓存命中率。
考虑到缓存组中存储的数据既有因内存访问引入的数据,也有来自于其相关联的缓存组转移的数据,为了对这两类数据进行区分,可以在每个缓存行中添加一个替换标记位,当第一缓存行中的数据转移至第二缓存行时,则修改所述第二缓存行的替换标记位的状态值;其中,所述第一缓存行所属的缓存组,与所述第二缓存行所属的缓存组为两个不同的缓存组,并且所述两个不同的缓存组属于同一个联合组。
结合上述表1-表3,以表1为例,在表1中标头“D”表示替换标记位,表1中标头为“D”的第3列数据表示各缓存行替换标记位的状态值,其中D的取值可以有0和1,D=0表示缓存行中数据属于内存访问引入的数据,D=1表示缓存行中数据属于其相关联的缓存组转移的数据。结合上述对表2的介绍可知,由于set2第一行的数据来自于set0,因此,表2中set2第一行的替换标记位的状态值为1。
结合上述对表2的介绍可知,由于set2中存储有来自于set0的数据,因此,当set0中不存在访问地址对应的数据时,需要查询set2。为了便于系统识别是否需要二次查找,可以在在每个缓存组中添加一个查找标记位,当所述第一缓存组中优先级最低的缓存行存储的数据转移至所述第二缓存组中时,则修改所述第一缓存组的查找标记位的状态值。
结合上述表1-表3,以表1为例,在表1中标头“SS”表示查找标记位,表1中标头为“SS”的第4列数据表示各缓存组查找标记位的状态值,其中SS的取值可以有0和1,SS=0表示只查询该缓存组即可,SS=1表示除了查询该缓存组外,还需要查询其相关联的缓存组。结合上述对表2的介绍可知,由于set2第一行的数据来自于set0,因此,表2中set0的查找标记位的状态值为1。
当缓存组数据替换出某一缓存行数据时,对缓存组中的所有缓存行的替换标记位D进行“或”运算,若结果为0,表明当前缓存组不再包含其相关联的缓存组转移的数据,此时可以令缓存组查找标记位SS的状态值为0,从而避免二次查找。
图2为本发明实施例提供的一种缓存组负载均衡的装置的结构示意图,包括查找单元21、第一判断单元22、第二判断单元23、转移单元24和存储单元25;
所述查找单元21,用于依据访问地址中携带的组号,从所有缓存组中查找所述组号对应的第一缓存组;
所述第一判断单元22,用于判断所述第一缓存组中是否存储有所述访问地址对应的数据;
若所述第一缓存组中未存储所述访问地址对应的数据,则触发所述查找单元21,所述查找单元21还用于依据预先划分的联合组,查找与所述第一缓存组相关联的第二缓存组;
所述第二判断单元23,用于判断所述第一缓存组是否达到饱和状态,并且所述第二缓存组的剩余存储空间是否满足预设条件;
若是,则触发所述转移单元24,所述转移单元24,用于将所述第一缓存组中优先级最低的缓存行存储的数据转移至所述第二缓存组中;
所述存储单元25,用于将所述访问地址对应的数据存储于所述第一缓存组中。
可选的,还包括划分单元,所述划分单元,用于依据各个缓存组对应的二进制组号,将最高位相反、其余位相同的两个二进制组号对应的缓存组划分为一个联合组。
可选的,所述存储单元具体用于将所述第一缓存组中各个缓存行中存储的数据依次转移至优先级低一级的缓存行,并将所述访问地址对应的数据存储于所述第一缓存组中优先级最高的缓存行中。
可选的,所述转移单元具体用于依据所述第二缓存组包含的缓存行的个数,将所述第二缓存组中间位置的缓存行作为目标缓存行;并将所述第一缓存组中优先级最低的缓存行存储的数据转移至所述目标缓存行中。
可选的,还包括添加单元和修改单元;
所述添加单元,用于在每个缓存行中添加一个替换标记位;
当第一缓存行中的数据转移至第二缓存行时,则触发所述修改单元,所述修改单元,用于修改所述第二缓存行的替换标记位的状态值;其中,所述第一缓存行所属的缓存组,与所述第二缓存行所属的缓存组为两个不同的缓存组,并且所述两个不同的缓存组属于同一个联合组。
可选的,所述添加单元还用于在每个缓存组中添加一个查找标记位;
当所述第一缓存组中优先级最低的缓存行存储的数据转移至所述第二缓存组中时,则触发所述修改单元,所述修改单元还用于修改所述第一缓存组的查找标记位的状态值。
图2所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,系统依据访问地址中携带的组号,从所有缓存组中查找所述组号对应的第一缓存组;判断第一缓存组中是否存储有所述访问地址对应的数据;当第一缓存组中未存储所述访问地址对应的数据时,则依据预先划分的联合组,查找与第一缓存组相关联的第二缓存组,并判断第一缓存组是否达到饱和状态,以及第二缓存组的剩余存储空间是否满足预设条件;当这两个条件均满足时,则说明第二缓存组具有足够的空间容纳第一缓存组中需要转移的数据,此时可以将第一缓存组中优先级最低的缓存行存储的数据转移至第二缓存组中,并将所述访问地址对应的数据存储于所述第一缓存组中。该技术方案中,通过将缓存组进行联合,从而可以将压力较大的缓存组中的数据转移至压力较小的缓存组中,有效地解决片上缓存组间压力不均匀的问题,提高了缓存组的利用率以及缓存命中率。
图3为本发明实施例提供的一种缓存组负载均衡的装置30的硬件结构示意图,包括:
存储器31,用于存储计算机程序;
处理器32,用于执行所述计算机程序以实现如上述缓存组负载均衡的方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述缓存组负载均衡的方法的步骤。
以上对本发明实施例所提供的一种缓存组负载均衡的方法、装置和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
Claims (8)
1.一种缓存组负载均衡的方法,其特征在于,包括:
依据访问地址中携带的组号,从所有缓存组中查找所述组号对应的第一缓存组;
判断所述第一缓存组中是否存储有所述访问地址对应的数据;
若所述第一缓存组中未存储所述访问地址对应的数据,则依据预先划分的联合组,查找与所述第一缓存组相关联的第二缓存组;
判断所述第一缓存组是否达到饱和状态,并且所述第二缓存组的剩余存储空间是否满足预设条件;
若是,则将所述第一缓存组中优先级最低的缓存行存储的数据转移至所述第二缓存组中,并将所述访问地址对应的数据存储于所述第一缓存组中;
所述联合组的划分过程包括:
依据各个缓存组对应的二进制组号,将最高位相反、其余位相同的两个二进制组号对应的缓存组划分为一个联合组。
2.根据权利要求1所述的方法,其特征在于,所述将所述访问地址对应的数据存储于所述第一缓存组中包括:
将所述第一缓存组中各个缓存行中存储的数据依次转移至优先级低一级的缓存行,并将所述访问地址对应的数据存储于所述第一缓存组中优先级最高的缓存行中。
3.根据权利要求1所述的方法,其特征在于,所述将所述第一缓存组中优先级最低的缓存行存储的数据转移至所述第二缓存组中包括:
依据所述第二缓存组包含的缓存行的个数,将所述第二缓存组中间位置的缓存行作为目标缓存行;并将所述第一缓存组中优先级最低的缓存行存储的数据转移至所述目标缓存行中。
4.根据权利要求1-3任意一项所述的方法,其特征在于,还包括:
在每个缓存行中添加一个替换标记位,当第一缓存行中的数据转移至第二缓存行时,则修改所述第二缓存行的替换标记位的状态值;其中,所述第一缓存行所属的缓存组,与所述第二缓存行所属的缓存组为两个不同的缓存组,并且所述两个不同的缓存组属于同一个联合组。
5.根据权利要求4所述的方法,其特征在于,还包括:
在每个缓存组中添加一个查找标记位,当所述第一缓存组中优先级最低的缓存行存储的数据转移至所述第二缓存组中时,则修改所述第一缓存组的查找标记位的状态值。
6.一种缓存组负载均衡的装置,其特征在于,包括查找单元、第一判断单元、第二判断单元、转移单元和存储单元;
所述查找单元,用于依据访问地址中携带的组号,从所有缓存组中查找所述组号对应的第一缓存组;
所述第一判断单元,用于判断所述第一缓存组中是否存储有所述访问地址对应的数据;
若所述第一缓存组中未存储所述访问地址对应的数据,则触发所述查找单元,所述查找单元还用于依据预先划分的联合组,查找与所述第一缓存组相关联的第二缓存组;
所述第二判断单元,用于判断所述第一缓存组是否达到饱和状态,并且所述第二缓存组的剩余存储空间是否满足预设条件;
若是,则触发所述转移单元,所述转移单元,用于将所述第一缓存组中优先级最低的缓存行存储的数据转移至所述第二缓存组中;
所述存储单元,用于将所述访问地址对应的数据存储于所述第一缓存组中;
还包括划分单元,所述划分单元,用于依据各个缓存组对应的二进制组号,将最高位相反、其余位相同的两个二进制组号对应的缓存组划分为一个联合组。
7.一种缓存组负载均衡的装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至5任意一项所述缓存组负载均衡的方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述缓存组负载均衡的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711285384.6A CN107861819B (zh) | 2017-12-07 | 2017-12-07 | 一种缓存组负载均衡的方法、装置和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711285384.6A CN107861819B (zh) | 2017-12-07 | 2017-12-07 | 一种缓存组负载均衡的方法、装置和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107861819A CN107861819A (zh) | 2018-03-30 |
CN107861819B true CN107861819B (zh) | 2021-07-16 |
Family
ID=61705460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711285384.6A Active CN107861819B (zh) | 2017-12-07 | 2017-12-07 | 一种缓存组负载均衡的方法、装置和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107861819B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10909038B2 (en) * | 2018-12-30 | 2021-02-02 | Chengdu Haiguang Integrated Circuit Design Co. Ltd. | Cache management method, cache and storage medium |
CN117149781B (zh) * | 2023-11-01 | 2024-02-13 | 中电科申泰信息科技有限公司 | 一种组相联自适应扩展的缓存架构及其访问处理方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6145056A (en) * | 1998-06-08 | 2000-11-07 | Compaq Computer Corporation | Method and apparatus for caching the results of function applications with dynamic, fine-grained dependencies |
US7032073B2 (en) * | 2001-07-02 | 2006-04-18 | Shay Mizrachi | Cache system for network and multi-tasking applications |
CN105095116B (zh) * | 2014-05-19 | 2017-12-12 | 华为技术有限公司 | 缓存替换的方法、缓存控制器和处理器 |
US9612970B2 (en) * | 2014-07-17 | 2017-04-04 | Qualcomm Incorporated | Method and apparatus for flexible cache partitioning by sets and ways into component caches |
CN104156323B (zh) * | 2014-08-07 | 2017-10-20 | 浪潮(北京)电子信息产业有限公司 | 一种高速缓冲存储器的数据块长度自适应读取方法及装置 |
CN104166631B (zh) * | 2014-09-11 | 2017-08-01 | 浪潮(北京)电子信息产业有限公司 | LLC中Cache行的替换方法 |
CN104834608B (zh) * | 2015-05-12 | 2017-09-29 | 华中科技大学 | 一种异构内存环境下的缓存替换方法 |
CN106569960B (zh) * | 2016-11-08 | 2019-05-28 | 郑州云海信息技术有限公司 | 一种混合主存的末级缓存管理方法 |
CN106909515B (zh) * | 2017-02-11 | 2020-09-18 | 苏州浪潮智能科技有限公司 | 面向混合主存的多核共享末级缓存管理方法及装置 |
CN107368437B (zh) * | 2017-07-24 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种末级缓存管理方法及系统 |
-
2017
- 2017-12-07 CN CN201711285384.6A patent/CN107861819B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107861819A (zh) | 2018-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10558577B2 (en) | Managing memory access requests with prefetch for streams | |
US10198363B2 (en) | Reducing data I/O using in-memory data structures | |
US6381676B2 (en) | Cache management for a multi-threaded processor | |
US11086792B2 (en) | Cache replacing method and apparatus, heterogeneous multi-core system and cache managing method | |
US7284096B2 (en) | Systems and methods for data caching | |
US7380065B2 (en) | Performance of a cache by detecting cache lines that have been reused | |
EP3089039B1 (en) | Cache management method and device | |
CN109582600B (zh) | 一种数据处理方法及装置 | |
US9009401B2 (en) | Multi-updatable least recently used mechanism | |
CN109933543B (zh) | Cache的数据锁定方法、装置和计算机设备 | |
US20130061009A1 (en) | High Performance Free Buffer Allocation and Deallocation | |
US20170364442A1 (en) | Method for accessing data visitor directory in multi-core system and device | |
CN107861819B (zh) | 一种缓存组负载均衡的方法、装置和计算机可读存储介质 | |
US11256630B2 (en) | Cache address mapping method and related device | |
CN115357196A (zh) | 动态可扩展的组相联高速缓存方法、装置、设备及介质 | |
US20220188230A1 (en) | Cache Management Method and Apparatus | |
CN101520751B (zh) | Cache的自适应插入策略的实现方法 | |
US7007135B2 (en) | Multi-level cache system with simplified miss/replacement control | |
CN110990300B (zh) | 一种基于使用热度的高速缓冲存储器替换方法及系统 | |
US20180052778A1 (en) | Increase cache associativity using hot set detection | |
US20090157968A1 (en) | Cache Memory with Extended Set-associativity of Partner Sets | |
US8756362B1 (en) | Methods and systems for determining a cache address | |
US10942859B2 (en) | Computing system and method using bit counter | |
KR101358407B1 (ko) | 계층 캐시 시스템 및 방법 | |
CN117149781B (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 |