CN111602377B - 高速缓存中资源调整方法、数据访问方法及装置 - Google Patents

高速缓存中资源调整方法、数据访问方法及装置 Download PDF

Info

Publication number
CN111602377B
CN111602377B CN201780097989.4A CN201780097989A CN111602377B CN 111602377 B CN111602377 B CN 111602377B CN 201780097989 A CN201780097989 A CN 201780097989A CN 111602377 B CN111602377 B CN 111602377B
Authority
CN
China
Prior art keywords
cache
lines
data
mark
line
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
CN201780097989.4A
Other languages
English (en)
Other versions
CN111602377A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN111602377A publication Critical patent/CN111602377A/zh
Application granted granted Critical
Publication of CN111602377B publication Critical patent/CN111602377B/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

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

本发明实施例公开了一种高速缓存中资源调整方法及装置,该高速缓存可实现数据去重,包括数据域和标志域,该方法包括:在检测针对缓存行的数据去重操作且所述数据域中空闲数据行的数量满足第一条件的情况下,将所述数据域中P个空闲数据行划分出Q个标志行,基于高速缓存与内存的映射方式,配置所述Q个标志行与内存中数据块的映射关系,以使所述数据域中的所述P个空闲数据行复用为所述Q个标志行。本发明实施例公开了一种高速缓存中数据访问方法及装置。实施本发明实施例可以实现数据域复用为标志域,进而增大cache的可访地址空间,增大cache的容量,提升数据处理效率。

Description

高速缓存中资源调整方法、数据访问方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种高速缓存中资源调整方法、数据访问方法及相关装置、设备。
背景技术
在计算机存储系统的层次结构中,高速缓冲存储器(Cache,简称为高速缓存)是介于中央处理器和主存储器之间的高速小容量存储器。Cache中缓存的是主存储器(内存)中的数据。高速缓存和主存储器之间信息的调度和传送是由硬件自动进行的。
Cache包括标志域(Tag Ram)和数据域(Date Ram),其中,标志域包括多个标志行(Tag Entry),数据域包括多个数据行(Date Entry),一个标志行和一个数据行映射,形成一个缓存行。缓存行是Cache与下级Cache,或Cache与内存数据交换的最小单位。内存中数据以数据块为单位存储数据,缓存行与内存中数据块进行数据交换,内存中一个数据块存储的数据大小与Cache中一个缓存行可存储数据的大小相一致。主存中的数据存储到有限的cache中,数据块所在的主存地址必须映射到cache地址。映射方式包括直接映射、全相连映射、组相连映射或其他映射方式等。
为增大cache可缓存的数据量,可以对缓存行进行去重或压缩操作,压缩或去重后的cache中不存在大量相同数据的数据行,多个标志行可以映射同一个数据行。标志域和数据域的映射的实现方式可以是双向链表、单向链表或其他实现方式等。
然而,去重在一定程度上增加了cache访问的命中率,然而当数据冗余度较大时,由于标志域资源的限制,cache中依然会存在大量相同数据的数据行,限制了cache中数据的压缩率以及cache的命中率。
发明内容
本申请的目的在于,提供一种高速缓存中资源调整方法、数据访问方法及相关装置、设备,可以增大cache的可访地址空间,增大cache的容量,提升数据处理效率。
第一方面,本发明实施例提供了一种高速缓存中资源调整方法,所述高速缓存可实现数据去重,包括数据域和标志域,所述方法包括:
在检测针对缓存行的数据去重操作且所述数据域中空闲数据行的数量满足第一条件的情况下,将所述数据域中P个空闲数据行划分出Q个标志行;所述数据域包括多个数据行,所述多个数据行包括所述P个空闲数据行;P、Q为正整数;
基于高速缓存与内存的映射方式,配置所述Q个标志行与内存中数据块的映射关系,以使所述数据域中的所述P个空闲数据行复用为所述Q个标志行。
通过执行上述方法,通过将所述数据域中P个空闲数据行划分出Q个标志行,以及基于高速缓存与内存的映射方式,配置所述Q个标志行与内存中数据块的映射关系,实现数据域复用为标志域,进而增大cache的可访地址空间,增大cache的容量,提升数据处理效率。
在又一种可能的实现方式中,所述基于高速缓存与内存的映射方式,配置所述Q个标志行与内存中数据块的映射关系包括:
基于高速缓存与内存的映射方式,通过映射关系表存储所述Q个标志行与内存中数据块的映射关系;
其中,所述映射关系表包括所述第一标志行的地址信息;所述地址信息包括缓存块号和块内编号;所述缓存块号用于指示所述第一标志行所属数据行在所述数据域中的地址,所述块内编号用于指示所述第一标志行在所述第一标志行所属数据行中的地址;所述第一标志行为所述Q个标志行中任意一个标志行。
通过执行上述方法,可实现通过映射关系表来实现数据域中Q个标注行与内存的映射。Cache可以通过访问映射关系表,定位到标志行。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为全相连映射;所述映射关系表的存储空间包括至少Q个存储单元;所述通过映射关系表存储所述Q个标志行与内存中数据块的映射关系包括:
将所述Q个标志行的地址信息分别写入所述Q个存储单元。
上述方法提供了一种全相连映射方式下,映射关系表的存储结构。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为N路组相连映射,所述高速缓存的缓存行划分为M组,M、N为正整数;所述映射关系表还包括:所述第一标志行与组号、组内块号的映射关系。
对应原高速缓存与内存的映射方式为N路组相连映射,在本发明实施例提供了以下三种映射关系表的存储结构:
第一种:所述映射关系表的存储空间包括Q个存储单元,所述Q个存储单元以M行R列的阵列排列,所述通过映射关系表存储所述Q个标志行与内存中数据块的映射关系包括:
在第i行第j列存储单元存储中写入所述Q个标志行中第k个标志行的地址信息;
所述第k个标志行的组号为i-1,所述第k个标志行的组内块号为N+j-1;
其中,R为Q/M的商,R为整数;k=(i-1)*M+j,i、j、k为正整数。
上述方法提供了一种组相连映射方式下,映射关系表的存储结构。
第二种:一个空闲数据行被划分为D*M个标志行,D为正整数;所述映射关系表的存储空间包括至少R个存储单元,所述R个存储单元以R行1列的阵列排列,所述存储单元包括M+1个存储子单元,R≥Q/M,R为正整数;所述通过映射关系表存储所述Q个标志行与内存中数据块的映射关系包括:
在第i行存储单元的第一个存储子单元中写入第k个标志行所属的数据行的缓存块号;以及,
在第i行存储单元的第j个存储子单元中写入所述Q个标志行中第k个标志行的块内编号;
所述第k个标志行的组内块号为N+i-1,所述第k个标志行的组号为j-2;
其中,i≤R,2≤j≤M+1,k=(i-1)*M+j,i、j、k为正整数。
通过执行上述方法,映射关系表的仅仅只存储一次缓存块号,减少映射关系表的存储空间。
第三种:H个空闲数据行划分出M个标志行,H为正整数;所述映射关系表的存储空间包括至少R个存储单元,所述R个存储单元以R行1列的阵列排列;所述通过映射关系表存储所述Q个标志行与内存中数据块的映射关系包括:
第i个存储单元包括第k个标志行所属的数据行的缓存块号,以及通过所述第k个标志行在第(i-1)*M+1至i*M的M个标志行中的排序指示所述第k标志行的块内编号;
所述第k个标志行的组内块号为N+i-1,所述第k个标志行的组号为所述第k个标志行在第(i-1)*M+1至i*M的M个标志行中的排序;
其中,(i-1)*M+1≤k≤i*M,i、k为正整数;R≥Q/M,R为正整数。
通过执行上述方法,映射关系表的仅仅存储缓存块号,极大的减少映射关系表的存储空间。
在又一种可能的实现方式中,所述方法还包括:
在所述数据域中空闲数据行的存储空间大于第一阈值时,则判断为所述数据域中空闲数据行的数量满足第一条件。
通过执行上述方法,在数据域中空闲数据行的存储空间大于第一阈值,才触发将数据域中P个空闲数据行划分出Q个标志行的操作,优化cache处理效率。
在又一种可能的实现方式中,所述配置所述Q个标志行与内存中数据块的映射关系之后,所述方法还包括:
在所述高速缓存内空闲的数据行的数量小于第二阈值或所述高速缓存的未命中率大于第三阈值的情况下,将所述数据域中S个标志行对应的缓存行内的数据回写到所述内存;
将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
通过执行上述方法,可实现在数据行数量紧张时,数据域中标志行恢复至数据行,提高cache的命中率。
在又一种可能的实现方式中,所述配置所述Q个标志行与内存中数据块的映射关系之后,所述方法还包括:
在所述高速缓存内空闲的数据行的数量小于第二阈值或所述高速缓存的未命中率大于第三阈值的情况下,将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行;
将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
通过执行上述方法,可实现在数据行数量紧张时,数据域中标志行恢复至数据行,且不需要进行回写操作,提高cache的处理效率。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为组相连映射,所述高速缓存包括多个缓存组,所述将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行包括:
将第二标志行对应的缓存行映射到所述标志域中所述第二标志行所在的缓存组内的标志行;
所述第二标志行为所述数据域中S个标志行中任意一个标志行。
第二方面,本发明实施例还提供了一种高速缓存中数据访问方法,所述方法包括:
接收处理器发送的携带主存地址的请求;
读取高速缓存与内存的映射关系,比较所述主存地址与缓存行的标签字段,查看是否在命中所述请求的缓存行;
在存在命中所述请求的缓存行时,访问命中的缓存行内的数据;或者,在不存在命中所述请求的缓存行时,分配缓存行,读取内存中所述主存地址对应的数据到分配的缓存行,访问所述分配的缓存行中数据;
其中,所述高速缓存可实现数据去重,包括数据域和标志域;所述数据域中包括Q个标志行,所述Q个标志行由所述数据域中P个空闲数据行划分得到;所述高速缓存中缓存行与内存中数据块的映射关系包括所述Q个标志行与内存中数据块的映射关系。
通过执行上述方法,数据域中包括Q个标志行,cache在数据访问时根据高速缓存与内存的映射关系,比较主存地址与缓存行的标签字段,判断请求是否命中,以实现数据域部分复用为标志域的cache中数据的访问,数据域复用为标志域,增大cache的可访地址空间,增大cache的容量,提升数据处理效率。
在一种可能的实现方式中,所述高速缓存与内存的映射方式为全相连映射;所述比较所述主存地址与缓存行的标签字段,查看是否存在命中所述请求的缓存行包括:
比较所述主存地址的主存字块标记与所述高速缓存中所有的标志行的标签字段,查看是否存在与所述主存地址的主存字块标记相符合的标志行;所述高速缓存中所有的标志行包括所述数据域中Q个标志行;
所述与所述主存地址的主存字块标记相符合的标志行对应的缓存行为命中的缓存行;
其中,所述主存地址包括主存字块标记以及字块内地址;标志行的标签字段包括主存字块标记。
上述方法提供了一种全相连映射方式下,查看请求是否存命中的方法。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为组相连映射;所述高速缓存划分为多个缓存组,所述比较所述主存地址与缓存行的标签字段,查看是否存在命中所述请求的缓存行包括:
根据所述主存地址中组号确定缓存组;
比较所述主存地址的主存字块标记与确定的缓存组中所有的标志行的标签字段,查看是否存在与主存地址的主存字块标记相符合的标志行;
所述与主存地址的主存字块标记相符合的标志行对应的缓存行为命中的缓存行;
其中,所述主存地址包括主存字块标记、组号以及字块内地址;标志行的标签字段包括主存字块标记。
上述方法提供了一种组相连映射方式下,查看请求是否存命中的方法。
在又一种可能的实现方式中,,所述高速缓存与内存的映射方式为组相连映射;所述根据所述主存地址中组号确定缓存组之后,所述比较所述主存地址的主存字块标记与所述缓存组中所有的标志行的标签字段之前,所述方法还包括:
根据映射关系表查找所述数据域中与所述组号对应的标志行,所述数据域中与所述组号对应的标志行为所述缓存组内标志行;
其中,所述映射关系表用于存储所述Q个标志行与内存中数据块的映射关系,包括所述第一标志行的地址信息以及所述第一标志行对应的组号、组内块号;所述地址信息包括缓存块号和块内编号;所述缓存块号用于指示所述第一标志行所属数据行在所述数据域中的地址,所述块内编号用于指示所述第一标志行在所述第一标志行所属数据行中的地址;所述第一标志行为所述Q个标志行中任意一个标志行。
上述方法提供了一种组相连映射方式下,定位到组号内缓存行的方法。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为N+R路组相连;所述根据映射关系表查找所述数据域中与所述组号对应的标志行,所述数据域中与所述组号对应的标志行为所述缓存组内标志行包括:
根据所述映射关系表查找所述Q个标志行中与所述组号对应的R个标志行;所述R个标志行为所述缓存组内标志行;其中,R=Q/M,R为整数。
上述方法提供了一种组相连映射方式下,定位到组号内缓存行之后,查看请求是否存命中的方法。
在又一种可能的实现方式中,所述方法还包括:
在所述高速缓存内空闲的数据行的数量小于第一阈值或所述高速缓存的未命中率大于第二阈值的情况下,将所述数据域中S个标志行对应的缓存行内的数据回写到所述内存;
将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
通过执行上述方法,可实现在数据行数量紧张时,数据域中标志行恢复至数据行,提高cache的命中率。
在又一种可能的实现方式中,所述方法还包括:
在所述高速缓存内空闲的数据行的数量小于第一阈值或所述高速缓存的未命中率大于第二阈值的情况下,将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行;
将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
通过执行上述方法,可实现在数据行数量紧张时,数据域中标志行恢复至数据行,且不需要进行回写操作,提高cache的处理效率。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为组相连映射,所述高速缓存包括多个缓存组,所述将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行包括:
将第二标志行对应的缓存行映射到所述标志域中所述第二标志行所在的缓存组内的标志行;
所述第二标志行为所述数据域中S个标志行中任意一个标志行。
第三方面,本发明实施例还提供了一种高速缓存,所述高速缓存可实现数据去重,包括数据存储器和缓存控制器,所述数据存储器包括数据域和标志域,所述缓存控制器包括:
划分单元,用于在检测针对缓存行的数据去重操作且所述数据域中空闲数据行的数量满足第一条件的情况下,将所述数据域中P个空闲数据行划分出Q个标志行;所述数据域包括多个数据行,所述多个数据行包括所述P个空闲数据行;P、Q为正整数;
配置单元,基于高速缓存与内存的映射方式,配置所述Q个标志行与内存中数据块的映射关系,以使所述数据域中的所述P个空闲数据行复用为所述Q个标志行。
在一种可能的实现方式中,所述配置单元,具体用于:
基于高速缓存与内存的映射方式,通过映射关系表存储所述Q个标志行与内存中数据块的映射关系;
其中,所述映射关系表包括所述第一标志行的地址信息;所述地址信息包括缓存块号和块内编号;所述缓存块号用于指示所述第一标志行所属数据行在所述数据域中的地址,所述块内编号用于指示所述第一标志行在所述第一标志行所属数据行中的地址;所述第一标志行为所述Q个标志行中任意一个标志行。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为全相连映射;所述映射关系表的存储空间包括至少Q个存储单元;所述配置单元通过映射关系表存储所述Q个标志行与内存中数据块的映射关系,具体包括:
将所述Q个标志行的地址信息分别写入所述Q个存储单元。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为N路组相连映射,所述高速缓存的缓存行划分为M组,M、N为正整数;所述映射关系表还包括:所述第一标志行与组号、组内块号的映射关系。
在又一种可能的实现方式中,所述映射关系表的存储空间包括Q个存储单元,所述Q个存储单元以M行R列的阵列排列,所述配置单元通过映射关系表存储所述Q个标志行与内存中数据块的映射关系,具体包括:
在第i行第j列存储单元存储中写入所述Q个标志行中第k个标志行的地址信息;
所述第k个标志行的组号为i-1,所述第k个标志行的组内块号为N+j-1;
其中,R为Q/M的商,R为整数;k=(i-1)*M+j,i、j、k为正整数。
在又一种可能的实现方式中,一个空闲数据行被划分为D*M个标志行,D为正整数;所述映射关系表的存储空间包括至少R个存储单元,所述R个存储单元以R行1列的阵列排列,所述存储单元包括M+1个存储子单元,R≥Q/M,R为正整数;所述配置单元通过映射关系表存储所述Q个标志行与内存中数据块的映射关系,具体包括:
在第i行存储单元的第一个存储子单元中写入第k个标志行所属的数据行的缓存块号;以及,
在第i行存储单元的第j个存储子单元中写入所述Q个标志行中第k个标志行的块内编号;
所述第k个标志行的组内块号为N+i-1,所述第k个标志行的组号为j-2;
其中,i≤R,2≤j≤M+1,k=(i-1)*M+j,i、j、k为正整数。
在又一种可能的实现方式中,H个空闲数据行划分出M个标志行,H为正整数;所述映射关系表的存储空间包括至少R个存储单元,所述R个存储单元以R行1列的阵列排列;所述配置单元通过映射关系表存储所述Q个标志行与内存中数据块的映射关系,具体包括:
第i个存储单元包括第k个标志行所属的数据行的缓存块号,以及通过所述第k个标志行在第(i-1)*M+1至i*M的M个标志行中的排序指示所述第k标志行的块内编号;
所述第k个标志行的组内块号为N+i-1,所述第k个标志行的组号为所述第k个标志行在第(i-1)*M+1至i*M的M个标志行中的排序;
其中,(i-1)*M+1≤k≤i*M,i、k为正整数;R≥Q/M,R为正整数。
在又一种可能的实现方式中,所述缓存控制器还包括:
判断单元,用于在所述数据域中空闲数据行的存储空间大于第一阈值时,则判断为所述数据域中空闲数据行的数量满足第一条件。
在又一种可能的实现方式中,所述配置所述Q个标志行与内存中数据块的映射关系之后,所述缓存控制器还包括:
回写单元,用于在所述高速缓存内空闲的数据行的数量小于第二阈值或所述高速缓存的未命中率大于第三阈值的情况下,将所述数据域中S个标志行对应的缓存行内的数据回写到所述内存;
第一恢复单元,用于将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
在又一种可能的实现方式中,所述配置所述Q个标志行与内存中数据块的映射关系之后,所述缓存控制器还包括:
映射单元,用户在所述高速缓存内空闲的数据行的数量小于第二阈值或所述高速缓存的未命中率大于第三阈值的情况下,将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行;
第二恢复单元,用于将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为组相连映射,所述高速缓存包括多个缓存组,所述映射单元将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行,具体包括:
将第二标志行对应的缓存行映射到所述标志域中所述第二标志行所在的缓存组内的标志行对应的缓存行;
所述第二标志行为所述数据域中S个标志行中任意一个标志行。
第四方面,本发明实施例还提供了一种高速缓存中数据访问方法,所述高速缓存可实现数据去重,包括数据存储器和缓存控制器,所述数据存储器包括数据域和标志域,所述缓存控制器包括:
接收单元,用于接收处理器发送的携带主存地址的请求;
命中判断单元,用于读取高速缓存与内存的映射关系,比较所述主存地址与缓存行的标签字段,查看是否在命中所述请求的缓存行;
第一响应单元,用于在存在命中所述请求的缓存行时,访问命中的缓存行内的数据;或者,第二响应单元,用于在不存在命中所述请求的缓存行时,分配缓存行,读取内存中所述主存地址对应的数据到分配的缓存行,访问所述分配的缓存行中数据;
其中,所述数据域中包括Q个标志行,所述Q个标志行由所述数据域中P个空闲数据行划分得到;所述高速缓存中缓存行与内存中数据块的映射关系包括所述Q个标志行与内存中数据块的映射关系。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为全相连映射;所述命中判断单元比较所述主存地址与缓存行的标签字段,查看是否存在命中所述请求的缓存行,具体包括:
比较所述主存地址的主存字块标记与所述高速缓存中所有的标志行的标签字段,查看是否存在与所述主存地址的主存字块标记相符合的标志行;所述高速缓存中所有的标志行包括所述数据域中Q个标志行;
所述与所述主存地址的主存字块标记相符合的标志行对应的缓存行为命中的缓存行;
其中,所述主存地址包括主存字块标记以及字块内地址;标志行的标签字段包括主存字块标记。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为组相连映射;所述高速缓存划分为多个缓存组,所述命中判断单元比较所述主存地址与缓存行的标签字段,查看是否存在命中所述请求的缓存行,具体包括:
根据所述主存地址中组号确定缓存组;
比较所述主存地址的主存字块标记与确定的缓存组中所有的标志行的标签字段,查看是否存在与主存地址的主存字块标记相符合的标志行;
所述与主存地址的主存字块标记相符合的标志行对应的缓存行为命中的缓存行;
其中,所述主存地址包括主存字块标记、组号以及字块内地址;标志行的标签字段包括主存字块标记。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为组相连映射;所述缓存控制器还包括:
查找单元,用于在所述命中判断单元根据所述主存地址中组号确定缓存组之后,所述比较所述主存地址的主存字块标记与所述缓存组中所有的标志行的标签字段之前,根据映射关系表查找所述数据域中与所述组号对应的标志行,所述数据域中与所述组号对应的标志行为所述缓存组内标志行;
其中,所述映射关系表用于存储所述Q个标志行与内存中数据块的映射关系,包括所述第一标志行的地址信息以及所述第一标志行对应的组号、组内块号;所述地址信息包括缓存块号和块内编号;所述缓存块号用于指示所述第一标志行所属数据行在所述数据域中的地址,所述块内编号用于指示所述第一标志行在所述第一标志行所属数据行中的地址;所述第一标志行为所述Q个标志行中任意一个标志行。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为N+R路组相连;所述查找单元具体用于:
根据所述映射关系表查找所述Q个标志行中与所述组号对应的R个标志行;所述R个标志行为所述缓存组内标志行;其中,R=Q/M,R为整数。
在又一种可能的实现方式中,所述缓存控制器还包括:
回写单元,用于在所述高速缓存内空闲的数据行的数量小于第一阈值或所述高速缓存的未命中率大于第二阈值的情况下,将所述数据域中S个标志行对应的缓存行内的数据回写到所述内存;
第一恢复单元,用于将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
在又一种可能的实现方式中,所述缓存控制器还包括:
映射单元,用于在所述高速缓存内空闲的数据行的数量小于第一阈值或所述高速缓存的未命中率大于第二阈值的情况下,将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行;
第二恢复单元,用于将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为组相连映射,所述高速缓存包括多个缓存组,所述映射单元将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行,具体包括:
将第二标志行对应的缓存行映射到所述标志域中所述第二标志行所在的缓存组内的标志行对应的缓存行;
所述第二标志行为所述数据域中S个标志行中任意一个标志行。
第五方面,本发明实施例还提供了一种计算设备,所述计算设备包括:至少一个处理器以及存储器,所述处理器包括至少一个高速缓存;所述存储器包括内存;所述处理器用于通过所述高速缓存调用所述存储器中的数据和程序执行所述计算设备的功能,所述高速缓存用于执行如第一方面所述的部分或全部流程。
第六方面,本发明实施例还提供了一种计算设备,所述计算设备包括:至少一个处理器以及存储器,所述处理器包括至少一个高速缓存;所述存储器包括内存;所述处理器用于通过所述高速缓存调用所述存储器中的数据和程序执行所述计算设备的功能,所述高速缓存用于执行如第二方面所述的部分或全部流程。
附图说明
图1是本发明实施例提供的一种计算机处理系统的示意性框架图;
图2是本发明实施例提供的一种cache的框架示意图;
图3A是本发明实施例提供的一种内存与cache直接映射的示意性说明图;
图3B是本发明实施例提供的一种直接映射中主存地址和cache地址的示意性说明图;
图3C是本发明实施例提供的一种内存与cache全相连映射的示意性说明图;
图3D是本发明实施例提供的一种全相连映射中主存地址和cache地址的示意性说明图;
图3E是本发明实施例提供的一种内存与cache组相连映射的示意性说明图;
图3F是本发明实施例提供的一种组相连映射中主存地址和cache地址的示意性说明图;
图4是本发明实施例提供的一种cache的数据结构的示意图;
图5是本发明实施例提供的一种cache中资源调整的方法的流程示意图;
图6A所示的全相连映射中映射关系表的存储结构的示意图;
图6B所示的全相连映射中映射关系表的存储结构的示意图;
图6C所示的全相连映射中映射关系表的存储结构的示意图;
图6D所示的组相连映射中映射关系表的存储结构的示意图;
图6E所示的组相连映射中映射关系表的存储结构的示意图;
图6F所示的组相连映射中映射关系表的存储结构的示意图;
图6G是本发明实施例提供的一种cache中标志行的示意性说明图;
图7是本发明实施例提供的一种4路组相连转变为5路组相连的原理示意图;
图8是本发明实施例提供的一种cache中数据访问方法的流程示意图;
图9是本发明实施例提供的一种cache结构示意图;
图10是本发明实施例提供的一种缓存控制器的结构示意图;
图11是本发明实施例提供的一种cache结构示意图;
图12是本发明实施例提供的一种缓存控制器结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
下面介绍本发明涉及的处理器(central processing unit,CPU)、高速缓冲存储器(Cache,简称高速缓存)、内存(也称主存储器(main memory))之间的关系。
可以理解,本发明涉及的CPU、Cache和内存可以应用于计算设备中,计算设备可以包括处理器和内存,该电子终端可以包括计算机,智能手机,平板电脑,智能电视,智能手环、VR眼镜、智能手表等可穿戴设备,车载终端等,本发明不作限制。
高速缓冲存储器是介于CPU与内存之间的高速小容量的存储器,由静态存储芯片(static random access memory,SRAM)组成,其速度接近CPU的速度,存在多级的分层架构。请参阅图1,图1是本发明实施例提供的一种处理器、高速缓冲存储器以及内存所组成的计算机处理系统的示意性框架图。可以理解,图1所述的计算机处理系统也可以位于单一的计算设备中。处理器可以是单核处理器也可以是多核处理器,即包括第一核CPU、第二核CPU,处理器可以包括三个级别的高速缓存存储器,分别为一级高速缓冲存储器(也称L1Cache)、二级高速缓冲存储器(也称L2 Cache)和三级高速缓冲存储器(也称L3 Cache)。其中,L1 Cache由指令Cache和数据Cache组成,L2 Cache或L3 Cache可以包括数据和指令,L1Cache和L2 Cache为每个核独有,L3 Cache为同一个CPU中所有的核共享。
Cache被分为多个缓存行(Cache line),每个缓存行可以是64比特(byte)、126比特或其他数值等,缓存行是Cache与下级Cache,或Cache与内存数据交换的最小单位。内存中数据以数据块为单位存储数据,缓存行与内存中数据块进行数据交换,内存中一个数据块存储的数据大小与Cache中一个缓存行可存储数据的大小相一致。主存中的数据存储到有限的cache中,数据块所在的主存地址必须映射到cache地址。映射方式包括但不限于直接映射、全相连映射、组相连映射或其他映射方式等。
请参阅图2,图2是本发明实施例提供的一种cache的框架示意图,Cache包括了两部分:缓存控制器210和缓存存储器220。其中,缓存存储器包括标志域(Tag Ram)221、数据域(Date Ram)222。其中,标志域包括多个标志行(Tag Entry),数据域包括多个数据行(Date Entry),一个标志行和一个数据行映射,形成一个缓存行。本发明各实施例中cache是可压缩或去重的cache,cache中不存在大量相同数据的数据行,多个标志行可以映射一个数据行。标志域和数据域的映射的实现方式可以包括但不限于双向链表、单向链表或其他实现方式等,本发明不作限定。
其中,缓存控制器210用于接收CPU发送的携带主存地址的请求,在cache中查找是否命中的缓存行,如果是,则命中(cache hit),缓存控制器读取该命中的缓存行中的数据(请求的类型为读请求的情况下),并返回给CPU;否者,则未命中(cache miss),缓存控制器读取内存240中的数据到空闲的缓存行,再从缓存行中读取数据返回给CPU,进而实现对请求的处理。缓存控制器与内存之间通过总线230进行通信。
缓存控制器210还统计CPU下发的请求的命中率,还可以实现数据去重。当多个缓存行内存储的数据一致时,可以共用数据行,该数据行可以映射到多个标志行,以实现数据去重。
下面介绍本发明实施例涉及的内存中与cache的映射方式:
内存被划分为多个数据块,通过主存字块标记来区分各个数据块。高速缓存中数据域被划分为多个缓存块(本申请中也称数据行),通过缓存字块标记(本申请中也称缓存块号)来区分各个缓存块。
直接映射:
请参阅图3A,图3A是本发明实施例提供的一种内存与cache直接映射的示意性说明图。
直接映射是一种多对一的映射关系,即主存中的数据块只能映射到唯一的缓存行,多个数据块可以映射同一缓存行。
请参阅图3B,图3B是本发明实施例提供的一种直接映射中主存地址和cache地址的示意性说明图。
主存地址包括主存字块标记、缓存块标记、字块内地址。
Cache地址包括缓存块标记和字块内地址。
可以理解,主存字块标记可以是主存块号,缓存块标记可以是缓存块号。
当cache接收到CPU发送的携带主存地址的请求后,根据主存地址中间“缓存字块标记”字段找到缓存行,比如该缓存行为第一缓存行,然后比较该第一缓存行的标签(Tag)字段是否与主存地址的“主存字块标记”位相符合,若符合,则表示该第一缓存行已经和主存中的该请求所要访问数据块配置了对应关系,第一缓存行命中CPU发送的请求。
全相连映射:
请参阅图3C,图3C是本发明实施例提供的一种内存与cache全相连映射的示意性说明图。
全相连映射是一种多对多的映射关系,主存中任一数据块都可以映射到cache中任一缓存行。
请参阅图3D,图3D是本发明实施例提供的一种全相连映射中主存地址和cache地址的示意性说明图。
主存地址包括主存字块标记、字块内地址。
Cache地址包括缓存块标记和字块内地址。
可以理解,主存字块标记可以是主存块号,缓存块标记可以是缓存块号。
当cache接收到CPU发送的携带主存地址的请求后,将主存地址中的“主存字块标记”与cache中每个缓存行的Tag字段进行比较,如果找到与主存地址中“主存字块标记”相同标记的缓存行,则该与主存地址中“主存字块标记”相同标记的缓存行命中CPU发送的请求。
组相连映射:
请参阅图3E,图3E是本发明实施例提供的一种内存与cache组相连映射的示意性说明图。
组相连映射,指主存和cache都分组,组间采用直接映射,组内采用全相连映射。例如,cache中块缓块分为M组,每个组中包括R块缓存行。若每组内有n块缓存行,则该种映射方式又称为n路组相联。如图3E所示的映射关系为2路组相联。
请参阅图3F,图3F是本发明实施例提供的一种组相连映射中主存地址和cache地址的示意性说明图。
主存地址包括s位主存字块标记、q位组号,b位字块内地址。
Cache地址包括q位组号、e位组内块号和b位字块内地址。
当cache接收到CPU发送的携带主存地址的请求后,首先通过主存地址中“组号”找到缓存行所在的组,之后按照全相联映射方式,通过主存地址中“主存字块标记”字段与该组内各个缓存行的Tag字段进行比较,如果找到与主存地址中“主存字块标记”相同标记的缓存行,则该与主存地址中“主存字块标记”相同标记的缓存行命中CPU发送的请求,根据cache与内存的映射关系确定该命中的缓存行对应的组内块号,进而基于组号和组内块号确定的命中的缓存行。
其中,字块内地址的长度b=log2 (Sc),Sc为缓存行的大小;组号的长度q=log2 (Ns),Ns为cache中组的个数,主存字块标记的长度s=l-b-q,l为主存地址的长度。
本发明实施例中,资源调整后,组的个数不变,组内块数(即组内缓存行)的数量增加。因而,组内块号的长度e>log2 n,且e为正整数,其中,n为组相连路数。
例如,以4路组相连为例,cache的大小为4Mb,缓存行的长度为64b,主存地址为32位,则字块内地址的长度b为8位,组号的长度q为12位,主存字块标记的长度s为12位。由于需要进行资源调整,组内块号的最小长度e最小为3位,组内地址的长度可以扩充到4位或5位等,以适应资源调整后组内块号的要求。
需要说明的是,关于Tag字段的描述请参阅图4中相关描述,本申请不再赘述。
下面介绍本发明实施例涉及的cache的数据结构:
请参阅图4,图4是本发明实施例提供的一种cache的数据结构的示意图。该Cache可实现数据去重,可以包括标志域和数据域,cache还可以包括哈希表(Hash Table)。图4中未示出该哈希表。其中,标志域包括Cache的多个标志行,如图4中标志行T0、T1、T2等等;数据域包括Cache的多个数据行,如图4中数据字段标记为d0、d1、d2等等的数据行。哈希表用于存储新存储的数据的哈希值,用于判断数据是否重复。图4中,标志阵列采用4路组相连的方式进行排列。标志行包括标签(Tag)字段、数据指针(Tptr)字段、标记索引字段等。标志行还可以包括淘汰算法标识字段或其他字段,本发明不作限制。
其中,Tag字段包括该缓存行的主存字块标记字段、状态(State)字段、有效位(Valid)等,Tag字段还可以包括淘汰算法标识字段或其它字段等,本发明不做限制。
若标志行对应的缓存行包括有效数据,则该标志行的主存字块标记字段可以是该主存中存储该数据的数据块对应主存字块标记。
状态字段用于存储缓存行的一致性状态,缓存行的一致性状态可以包括但不限于修改(modified)态(也称M态)、专有(exclusive)态(也称E态)、共享(shared)态(也称S态)以及无效(invalid)态(也称I态)等。
有效字段用于指示缓存行的存储的数据是否有效。
淘汰算法标识字段用于指示该缓存行所使用的淘汰算法,可以是LRU(英文:LeastRecently Used)标记或其他标记,本发明不作限定。
Tptr字段指示该标志行对应的数据行的地址。
标记索引字段指示多个标志行的索引,该多个标志行映射同一数据行。索引的方式可以是双向链表、单向链表或其他形式,本发明不作限定。对于双向链表来说,标记索引字段包括前向链表和后向链表,其中,前向链表指示前一个标志行的索引,当新存储的缓存行与该多个标志行对应的数据行内数据一致时,后向的链表保存新增缓存行对应的标志行的索引,否则为空。双向链表或单向链表中多个标志行映射同一数据行。
如图4所示,数据行可以包括表头(Dptr)字段、数据(Data Frame)字段、指针(Ctr)字段等。数据行还可以包括去重(flag)字段或其他字段等,本发明不作限制。Dptr字段指示标志行的索引,可以是双向链表或单向链表的表头,其中,双向链表或单向链表为该数据行对应的所有标志行组成的链表。Data Frame字段存储数据、缓存行的长度等。Ctr字段指示该数据行被共享的标志行的数量,也就是说有几个标志行共享了该数据行,当新增共享的标志行时,Ctr至则增加,反之,则减少。当Ctr为0时,表明该数据行未被使用,可以重新分配其他的数据进行存储。flag字段用于表明该数据行是否已经进行了去重判断。
可以理解,数据行还可以包括其他字段比如错误纠正码(error-correctingcode,ECC)字段,本发明不作限定。
下面介绍本发明实施例涉及的cache中资源调整的方法:
本申请中,cache可实现数据去重,包括数据域和标志域。当cache进行去重操作后,cache中存在大量的空闲数据行,cache可以将部分空闲数据行划分出多个标志行,实现数据域复用为标志域,进而增大cache的可访地址空间,增大cache的容量,提升数据处理效率。
请参阅图5,图5是本发明实施例提供的一种cache中资源调整的方法的流程示意图,该方法中各个步骤可以由计算机设备、或计算机设备中cache或缓存控制器执行,本申请以计算机设备中cache为例来介绍cache中资源调整的方法,该方法包括以下全部或部分步骤:
步骤S500:cache在检测针对缓存行的数据去重操作且数据域中空闲数据行的数量满足第一条件的情况下,将数据域中P个空闲数据行划分出Q个标志行;数据域包括多个数据行,该多个数据行包括P个空闲数据行;P、Q为正整数。
可以理解,在cache检测到针对缓存行的数据去重操作后,cache可以检测数据域中空闲数据行的数量,当数据域中空闲数据行的数量满足第一条件时进行资源调整,即将数据域中P个空闲数据行划分出Q个标志行。该Q个标志行组成的标志域即为新增标志域。
本发明一实施例中,Q=P*Sc/St,其中,Sc为一个数据行的长度,St为一个标志行的长度;可选地,当Sc/St为非整数时,Sc/St可以取其商,进而避免一个标志行跨越两个数据行。
可以理解,P个空闲的数据行可以是缓存块号连续的数据行,也可以是缓存块号不联系的数据行。本发明作限定。
步骤S501:基于高速缓存与内存的映射方式,cache建立Q个标志行与内存中数据块的映射关系,以使数据域中的P个空闲数据行复用为Q个标志行。
数据域中Q个标志行的数据结构与标志域中标志行的数据结构相同,标志行的数据结构可以参见上述cache的数据结构中相关描述,本发明不再赘述。
可以理解,被复用为标志行的数据行不再是数据行,不能用来缓存数据,可以作为标志行;当被复用为标志行的数据行通过解复用后,该被解复用数据行恢复数据缓存功能。
本法一实施例中,步骤S500之前,该方法还包括:在数据域中空闲数据行的存储空间大于第一阈值时,数据域中空闲数据行的数量满足第一条件;否则,数据域中空闲数据行的数量不满足第一条件,cache可以结束资源调整的流程,也可以执行其他操作,本发明不作限制。可以理解,第一阈值可以是预设个数的标志行存储空间,也可以是预设个数的数据行的存储空间,本发明不作限定。
可选地,对于N路组相连映射,若cache包括M个缓存组,则该预设个数可以大于划分M个标志行所需要的数据行的个数。
需要说明的是,该第一条件还可以包括其它形式,本发明不做限定。
本发明一实施例中,步骤S501的一种实施方式可以包括:基于高速缓存与内存的映射方式,通过映射关系表存储Q个标志行与内存中数据块的映射关系。其中,该映射关系表包括第一标志行的地址信息;该地址信息包括缓存块号和块内编号;该缓存块号用于指示第一标志行所属数据行在数据域中的地址,该块内编号用于指示第一标志行在该第一标志行所属数据行中的地址;第一标志行为Q个标志行中任意一个标志行。
其中,数据域包括多个数据行,各个数据行根据其地址的顺序进行编号,该编号即为缓存块号。通常,数据行的长度远大于标志行的长度,在数据域内数据行复用为标志行时,一个数据行被划分为多个标志行,各个数据行中被划分的标志行可以基于其地址的顺序进行编号,该编号即为块内编号。
下面分别介绍全相连映射和组相连映射中映射关系表的存储结构:
高速缓存与内存的映射方式为全相连映射:
在一种实施方式中,请参阅图6A所示的全相连映射中映射关系表的存储结构的示意图,映射关系表的存储空间包括至少Q个存储单元,该至少Q个存储单元可以以A行B列的阵列的方式存储。可以将Q个标志行的地址信息分别写入Q个存储单元以存储Q个标志行与内存中数据块的映射关系,其中,A、B为正整数,A*B≥Q。该各个存储单元用于存储标志行的地址信息,包括缓存块号字段和块内编号字段。
可选地,cache可以在第i行第j列存储单元存储中写入Q个标志行中第k个标志行的地址信息;其中,k=(i-1)*B+j,i≤A、j≤B、k≤Q,i、j、k为正整数。
在另一种实施方式中,请参阅图6B所示的全相连映射中映射关系表的存储结构的示意图。映射关系表的存储空间包括至少P个存储单元,该P个存储单元以P行1列的阵列排列,各个存储单元包括C+1个存储子单元。cache可以在第i行存储单元的第一个存储子单元中写入第k个标志行所属的数据行的缓存块号,以及,在第i行存储单元的第j个存储子单元中写入Q个标志行中第k个标志行的块内编号。其中,i≤P、2≤j≤C、k=(i-1)*(C-1)+j-1,i、j、k为正整数。可以理解,一个数据行可以被划分为C-1个标志行。
在又一种实施方式中,请参阅图6C所示的全相连映射中映射关系表的存储结构的示意图,映射关系表的存储空间包括至少P个存储单元,该P个存储单元以P行1列的阵列排列或以1行P列的阵列排列。若一个空闲数据行被划分为Y个标志行,Y为正整数,P*Y≥Q,Cache可以在第i行存储单元写入第(i-1)*Y+1至i*Y的Y个标志行所属数据行的缓存块号。
可以理解,第i行存储单元包括第k个标志行所属的数据行的缓存块号,通过第k个标志行在第(i-1)*Y+1至i*Y的Y个标志行中的排序来确定第k标志行的块内编号,以通过映射关系表存储该Q个标志行与内存中数据块的映射关系。其中,(i-1)*Y+1≤k≤i*Y,i、k为正整数。
可以理解,本发明实施例所述的映射关系表仅仅存储缓存块号,通过第k个标志行在第(i-1)*Y+1至i*Y的Y个标志行中的排序来确定第k标志行的块内编号,极大的节省了映射关系表的存储空间。
需要说明的是,映射关系表还可以以其他形式的存储结构进行存储,本发明不作限定。
高速缓存与内存的映射方式为组相连映射:
以下以高速缓存与内存以N路组相连的方式映射,高速缓存的标志域被划分为M组标志行,每组中包括N个标志行为例来说明Q个标志行与内存中数据块的映射关系。其中,M、N为正整数。对应组相连映射,映射关系表还包括:第一标志行与组号、组内块号的映射关系,第一标志行为Q个标志行中任意一个标志行。
在一种实施方式中,请参阅图6D所示的组相连映射中映射关系表的存储结构的示意图,该映射关系表的存储空间包括Q个存储单元,Q个存储单元以M行R列的阵列排列,cache可以在第i行第j列存储单元存储中写入Q个标志行中第k个标志行的地址信息,以通过映射关系表存储Q个标志行与内存中数据块的映射关系。其中,R为Q/M的商,R为正整数;k=(i-1)*M+j,i、j、k为正整数。
其中,可以通过标志行所在的行号来指示标志行的组号,通过标志行所在列来指示标志行的块内组号或路数。例如第k个标志行的组号为i-1,第k个标志行的路数为N+j-1,第k个标志行的组内块号为N+j-1。
可以理解,上述映射关系表的存储结构可以根据标志行的地址信息快速定位该标志行,提高数据处理效率。
在另一种实施方式中,请参阅图6E所示的组相连映射中映射关系表的存储结构的示意图,若一个空闲数据行被划分为D*M个标志行,D为正整数;该映射关系表的存储空间包括至少R个存储单元,该R个存储单元以R行1列的阵列排列,各个存储单元包括M+1个存储子单元,R≥Q/M,R为正整数。cache可以在第i行存储单元的第一个存储子单元中写入第k个标志行所属的数据行的缓存块号;以及,在第i行存储单元的第j个存储子单元中写入Q个标志行中第k个标志行的块内编号,以通过映射关系表存储Q个标志行与内存中数据块的映射关系。其中,i≤R,2≤j≤M+1,k=(i-1)*M+j,i、j、k为正整数,D*P=R。
其中,可以通过标志行所在的存储单元的序号来指示标志行的块内组号,通过标志行所在子存储单元中的序号来指示标志行的组号。例如,例如第k个标志行的组内块号为N+i-1,第k个标志行的组号为j-2。
需要说明的是,在图6E中,第1数据行、第2数据行、第3数据行等可以是同一数据行,也可以是不同数据行。
例如,当D=1时,R=P,一个数据行被划分为M个标志行,M个标志行分配到不同的组中,使得组相连结构增加1路。
又例如,当D=2时,第1数据行与第2数据行为同一数据行,一个数据行被划分为2M个标志行。前M个标志行被分配到不同的组中,使得组相连结构增加1路;后M个标志行被分配到不同的组中,也使得组相连结构增加1路。
可以理解,本发明实施例所述的映射关系表仅仅存储缓存块号,通过标志行所在子存储单元中的序号来指示标志行的组号,节省了映射关系表的存储空间。
在又一种实施方式中,H个空闲数据行划分出M个标志行,H为正整数,请参阅图6F所示的组相连映射中映射关系表的存储结构的示意图,映射关系表的存储空间包括至少R个存储单元,该R个存储单元以R行1列的阵列排列。Cache可以在第i行存储单元写入第(i-1)*M+1至i*M的M个标志行所属数据行的缓存块号,可以理解,第i个存储单元包括第k个标志行所属的数据行的缓存块号,并通过所述第k个标志行在第(i-1)*M+1至i*M的M个标志行中的排序指示所述第k标志行的块内编号,以通过映射关系表存储该Q个标志行与内存中数据块的映射关系。其中。该第k个标志行的组内块号为N+i-1,该第k个标志行的组号为该第k个标志行在第(i-1)*M+1至i*M的M个标志行中的排序。其中,(i-1)*M+1≤k≤i*M,i、k为正整数;R≥Q/M,R为正整数。可以理解,各个存储单元分别包括H个存储子单元,分别用于存储H个数据行的缓存块号。
例如,两个数据行可划分为M个标志行,则第1存储单元存储P个空闲数据行中第1数据行的缓存块号和第2数据行的缓存块号;第2存储单元存储P个空闲数据行中第3数据行的缓存块号和第4数据行的缓存块号,以此类推,第i存储单元存储P个空闲数据行中第2*i-1数据行的缓存块号和第2*i数据行的缓存块号。其中,i≤R。
需要说明的是,本发明实施例中,当M个标志行需要H个数据行来划分,且H个数据行可划分的标志行数据大于M的情况下,H个数据行仅划分出M个标志行,以避免同一数据行划分出组内块号不同的标志行。
可以理解,本发明实施例所述的映射关系表仅仅存储缓存块号,通过第k个标志行在第(i-1)*M+1至i*M的M个标志行中的排序来确定第k标志行的组号,极大的节省了映射关系表的存储空间。
可以理解,对应组相连映射,资源调整后,高速缓存与内存的映射方式为由N组相连映射转变为N+R路组相连。请参阅图6G,图6G是本发明实施例提供的一种cache中标志行的示意性说明图。标志域中N路的标志行与数据域中新增加的R路标志行一起形成具有N+R路组相连映射方式的cache。
需要说明的是,图6G中标志行可以包括Tag字段、Tptr字段、标记索引字段或其他字段等。Tag字段可以包括但不限于主存字块标记字段、state字段、valid字段或其他字段等,本发明不作限定。
需要说明的是,若Q为M的非整数倍,例如,Q大于M*R,小于M*(R+1),则高速缓存与内存的映射方式为由N组相连映射转变部分组N+R路组相连,部分组N+R+1路组相连。
还需要说明的是,映射关系表还可以以其他形式的存储结构进行存储,本发明不作限定。
例如,请参阅图7,图7是本发明实施例提供的一种4路组相连转变为5路组相连的原理示意图。Cache中划分为16个数据行和16个标志行,采用4路组相连的方式映射到内存。标志域中标志行被划分为4组(Set),每个组内包括4个标志行。数据域中数据行采用去重结构,各个数据行内存储的数据可以互不相同,标志域中标志行以链表的方式映射到数据行中形成缓存行。位于同一的链表的标志行对应同一数据行,即同一的链表下各个缓存行内存储的数据相同。进行资源调整后,将空闲数据行(如图7所示的缓存块号为15的数据行)划分出4个标志行,该4个标志行的(组号,组内块号)依次是(0,4)、(1,4)、(2,4)、(3,4)。
本发明一实施例中,步骤S501之后,在cache内空闲的数据行的数量小于第二阈值或cache的未命中率大于第三阈值的情况下,cache可以将数据域中S个标志行对应的缓存行内的数据回写到内存;进而,将S个标志行恢复为T个数据行,并清除S个标志行与内存中数据块的映射关系;其中,Q个标志行包括S个标志行;S≤Q、T≤P,S、T为正整数。
具体地,当未命中率大于第三阈值,则cache中数据行存在频繁的替换,此时,cache查看是否存在数据域中数据行被复用为标志行,如果是,则代理第一缓存行向内存控制器发送回写指令,该回写指令携带第一缓存行中的数据。该第一缓存行为S个标志行对应的S个缓存行。可以理解,该第二阈值可以是1、4、6、10、16或其他数值等,本发明不作限定。第三阈值可以是0.1、0.2、0.25、0.4或其他数值,本发明不作限定。
本发明一实施例中,步骤S501之后,在高速缓存内空闲的数据行的数量小于第二阈值或高速缓存的未命中率大于第三阈值或情况下,cache可以将数据域中S个标志行对应的缓存行映射到标志域中S个标志行;进而,将该S个标志行恢复为T个数据行,并清除该S个标志行与内存中数据块的映射关系;其中,Q个标志行包括该S个标志行;S≤Q、T≤P,S、T为正整数。
对于全相连映射方式来说,该标志域中S个标志行可以是标志域中状态为无效态的任意S个标志行,也可以是标志域中状态为非无效态(如M态、E态、S态)的任意S个标志行,还可以既包括无效态的S个标志行又包括非无效态的标志行。对于M态的标志行,还需要将该M态的标志行对应的缓存行内数据回写到内存,以维持高速缓存内数据的一致性。
对于组相连映射方式来说,数据域中S个标志行包括第二标志行,该第二标志行为数据域中S个标志行中任意一个标志行。cache将数据域中S个标志行对应的缓存行映射到标志域中S个标志行的一种实施方式可以是:cache将第二标志行对应的缓存行映射到标志域中该第二标志行所在的缓存组内的标志行。同理,该标志域中该第二标志行所在的缓存组内的标志行可以是状态为无效态的任意S个标志行,也可以是状态为非无效态(如M态、E态、S态)的个标志行。对于M态的标志行,还需要将该M态的标志行对应的缓存行内数据回写到内存,以维持高速缓存内数据的一致性。
本发明一实施例中,数据域中S个标志行由T个数据行划分;T个数据行为资源调整前数据域中的数据行。可以理解,cache可以根据映射关系表确定属于同一个或多个数据行的S个标志行,进而释放该S个标志行,并清除该映射关系表中S个标志行对应的存储单元中地址信息。具体可参阅上述图6A-6F所示的映射关系表的存储结构,本发明不再赘述。本发明实施例中,cache可实现数据去重,包括数据域和标志域,cache在检测针对缓存行的数据去重操作且数据域中空闲数据行的数量满足第一条件的情况下,将数据域中P个空闲数据行划分出Q个标志行,进而,基于高速缓存与内存的映射方式,建立Q个标志行与内存中数据块的映射关系,以实现数据域中的P个空闲数据行复用为Q个标志行,进而增大cache的可访地址空间,增大cache的容量,提升数据处理效率。
本发明实施例中,所述高速缓存可实现数据去重,包括数据域和标志域,cache在检测针对缓存行的数据去重操作且所述数据域中空闲数据行的数量满足第一条件的情况下,将所述数据域中P个空闲数据行划分出Q个标志行;并基于高速缓存与内存的映射方式,配置所述Q个标志行与内存中数据块的映射关系,以使所述数据域中的所述P个空闲数据行复用为所述Q个标志行,实现数据域复用为标志域,进而增大cache的可访地址空间,增大cache的容量,提升数据处理效率。
下面介绍本发实施涉及的一种高速缓存中数据访问方法,请参阅图8所示的cache中数据访问方法的流程示意图,该数据访问方法的执行主体可以是计算机设备中cache或者缓存控制器,本申请以cache为例来介绍高速缓存中数据访问方法,该方法可以包括以下部分或全部步骤:
需要说明的是,本申请中,cache可实现数据去重,包括数据域和标志域。当cache进行去重操作后,cache中存在大量的空闲数据行,cache可以将部分空闲数据(本发明实施例中也称P个空闲数据行或P个数据行)行划分出多个标志行(本发明实施例中也称Q个标志行),高速缓存中缓存行与内存中数据块的映射关系包括该Q个标志行与内存中数据块的映射关系,进而实现数据域复用为标志域,进而增大cache的可访地址空间,增大cache的容量,提升数据处理效率。
步骤S800:cache接收处理器发送的携带主存地址的请求。
可以理解,请求的类型包括读请求和写请求,主存地址包括主存字块标记以及字块内地址。
步骤S801:cache读取高速缓存与内存的映射关系,比较主存地址与缓存行的标签字段,查看是否在命中请求的缓存行。
对于高速缓存与内存的映射方式为全相连映射来说,主存地址包括主存字块标记以及字块内地址;标志行中标签字段中包括主存字块标记。步骤S801的一种实现方式可以是:cache比较主存地址的主存字块标记与高速缓存中所有的标志行的标签字段,查看是否存在与主存地址的主存字块标记相符合的标志行,即查看所有的标志行中是否存在标记字段包括的主存字块标记与主存地址的主存字块标记相同的标记行,该标记字段包括的主存字块标记与主存地址的主存字块标记相同的标记行对应的缓存行即为命中的缓存行。其中,高速缓存中所有的标志行包括数据域中Q个标志行。
可以理解,cache可以根据如图6A或图6B所示的映射关系表或其它形式的映射关系来查找Q个标志行的位置。该映射关系表用于指示Q个标志行与内存中数据块的映射关系,包括第一标志行的地址信息;该地址信息包括缓存块号和块内编号;该缓存块号用于指示该第一标志行所属数据行在数据域中的地址,该块内编号用于指示第一标志行在第一标志行所属数据行中的地址;第一标志行为该Q个标志行中任意一个标志行。
可选地,标志行的标签字段还包括有效字段,当有效字段的内容为1时,该标志行对应的缓存行内数据有效。有效字段的内容为1且标记字段包括的主存字块标记与主存地址的主存字块标记相同的标记行对应的缓存行为命中的缓存行。
对于高速缓存与内存的映射方式为组相连映射来说,cache划分为多个缓存组,各个缓存组内包括多个标志行,在资源调整后的cache的数据域中包括Q个标志行,假定资源调整后,组相连映射的路数增加。主存地址包括主存字块标记、组号以及字块内地址,标志行的标签字段包括主存字块标记。步骤S801的一种实现方式可以是:cache根据主存地址中组号确定缓存组,比较主存地址的主存字块标记与该确定的缓存组中所有的标志行的标签字段,查看是否存在与主存地址的主存字块标记相符合的标志行,即查看缓存组中所有的标志行中是否存在标记字段包括的主存字块标记与主存地址的主存字块标记相同的标记行,该标记字段包括的主存字块标记与主存地址的主存字块标记相同的标记行对应的缓存行即为命中的缓存行。
可选地,cache在根据主存地址中组号确定缓存组之后,在比较主存地址的主存字块标记与该确定的缓存组中所有的标志行的标签字段之前,cache可以根据映射关系表查找数据域中与组号对应的标志行,该数据域中与组号对应的标志行为缓存组内标志行。
可以理解,cache可以根据如图6C或图6D所示的映射关系表或其它形式的映射关系表来查找缓存组内标志行的位置。其中,映射关系表用于指示所述Q个标志行与内存中数据块的映射关系,包括第一标志行的地址信息以及第一标志行对应的组号、组内块号;该地址信息包括缓存块号和块内编号;该缓存块号用于指示第一标志行所属数据行在数据域中的地址,该块内编号用于指示第一标志行在所述第一标志行所属数据行中的地址;第一标志行为该Q个标志行中任意一个标志行。
例如,资源调整后cache与主存的映射方式为N路组相连,在资源调整后,N路组相连转变为N+R路组相连。其中,R=Q/M,R为整数。新增的R路由Q个标志行形成。
cache根据映射关系表查找数据域中与组号对应的标志行的一种实现方式可以是cache根据映射关系表查找该Q个标志行中与组号对应的R个标志行,该数据域中查找到的R个标志行即为确定的缓存组内标志行。
可选地,标志行的标签字段还包括有效字段,当有效字段的内容为1时,该标志行对应的缓存行内数据有效。有效字段的内容为1且标记字段包括的主存字块标记与主存地址的主存字块标记相同的标记行对应的缓存行为命中的缓存行。
步骤S802:在存在命中请求的缓存行时,访问命中的缓存行内的数据。
对于读请求,在存在命中读请求的缓存行时,即cache命中时,cache读取该命中的缓存行内主存地址中字块内标记对应的数据,并将该数据发送给处理器。
对于写请求,写请求还携带请求数据。在存在命中读请求的缓存行时,即cache命中时,cache将携带的请求数据写入到命中的缓存行内主存地址中字块内标记对应的位置。
步骤S803:在不存在命中请求的缓存行时,分配缓存行,读取内存中主存地址对应的数据到分配的缓存行,访问分配的缓存行中数据;
对于读请求,在不存在命中请求的缓存行时,即cache未命中时,cache分配缓存行,并读取内存中该主存地址对应的数据到分配的缓存行,在将分配的缓存行内主存地址中字块内标记对应的数据,并将该数据发送给处理器。
对于写请求,写请求还携带请求数据。在不存在命中请求的缓存行时,即cache未命中时,cache分配缓存行,并读取内存中该主存地址对应的数据到分配的缓存行,cache将携带的请求数据写入到分配的缓存行内主存地址中字块内标记对应的位置。
可以理解,cache还可以修改还缓存行对应的标志行中状态字段,也可以对该分配的缓存行进行去重操作等,还可以执行其它操作,本发明不作限制。
还需要说明的是,对于组相连映射方式来说,分配的缓存行为该主存地址的组号所确定的缓存组内的缓存行。对于全相连映射方式来说,分配的缓存行可以是cache中空闲缓存行,也可以是任意一个缓存行。
本发明一实施例中,在高速缓存内空闲的数据行的数量小于第一阈值的情况下;或高速缓存的未命中率大于第二阈值的情况下,或,在cache分配缓存行之前,cache还可以在cache内不存在空闲的数据行的情况下,cache可以将数据域中S个标志行对应的缓存行内的数据回写到内存;以及,将该S个标志行恢复为T个数据行,,并清除该S个标志行与内存中数据块的映射关系。其中,该Q个标志行包括该S个标志行;S≤Q、T≤P,S、T为正整数。
具体地,当未命中率大于第二阈值,则cache中数据行存在频繁的替换;或,在cache需要分配缓存行时,cache还可以在cache内不存在空闲的数据行时,此时,cache查看是否存在数据域中数据行被复用为标志行,如果是,则代理第一缓存行向内存控制器发送回写指令,该回写指令携带第一缓存行中的数据。该第一缓存行为S个标志行对应的缓存行,可以包括是一个或多个缓存行。可以理解,该第一阈值可以是1、4、6、10、16或其他数值等,本发明不作限定。第二阈值可以是0.1、0.2、0.25、0.4或其他数值,本发明不作限定。
本发明一实施例中,在高速缓存内空闲的数据行的数量小于第一阈值的情况下;或高速缓存的未命中率大于第二阈值的情况下,或,在cache分配缓存行之前,cache还可以在cache内不存在空闲的数据行的情况下,cache可以将数据域中S个标志行对应的缓存行映射到标志域中S个标志行;进而,将该S个标志行恢复为T个数据行,并清除该S个标志行与内存中数据块的映射关系;其中,Q个标志行包括S个标志行;S≤Q、T≤P,S、T为正整数。
对于全相连映射方式来说,该标志域中S个标志行可以是标志域中状态为无效态的任意S个标志行,也可以是标志域中状态为非无效态(如M态、E态、S态)的任意S个标志行,还可以既包括无效态的S个标志行又包括非无效态的标志行。对于M态的标志行,还需要将该标志行对应的缓存行内数据回写到内存,以维持高速缓存内数据的一致性。
对于组相连映射方式来说,数据域中S个标志行包括第二标志行,该第二标志行为数据域中S个标志行中任意一个标志行。cache将数据域中S个标志行对应的缓存行映射到标志域中S个标志行的一种实施方式可以是:cache将第二标志行对应的缓存行映射到标志域中该第二标志行所在的缓存组内的标志行。同理,该标志域中该第二标志行所在的缓存组内的标志行可以是状态为无效态的任意S个标志行,也可以是状态为非无效态(如M态、E态、S态)的个标志行。对于M态的标志行,还需要将该M态的标志行对应的缓存行内数据回写到内存,以维持高速缓存内数据的一致性。
可以理解,该第一阈值可以是1、4、6、10、16或其他数值等,本发明不作限定。第二阈值可以是0.1、0.2、0.25、0.4或其他数值,本发明不作限定。
本发明一实施例中,数据域中S个标志行由T个数据行划分;T个数据行为资源调整前数据域中的数据行。可以理解,cache可以根据映射关系表确定属于同一个或多个数据行的S个标志行,进而释放该S个标志行,并清除该映射关系表中S个标志行对应的存储单元中地址信息。具体可参阅上述图6A-6F所示的映射关系表的存储结构,本发明不再赘述。
本发明实施例中,cache接收处理器发送的携带主存地址的请求;读取高速缓存与内存的映射关系,比较主存地址与缓存行的标签字段,查看是否在命中请求的缓存行;在存在命中请求的缓存行时,访问命中的缓存行内的数据;或,在不存在命中请求的缓存行时,分配缓存行,读取内存中主存地址对应的数据到分配的缓存行,访问分配的缓存行中数据;其中,cache可实现数据去重,包括数据域和标志域,且数据域中包括Q个标志行,该Q个标志行由数据域中P个空闲数据行划分得到;高速缓存可实现数据去重,包括数据域和标志域,进而实现数据域中的P个空闲数据行复用为Q个标志行,进而增大cache的可访地址空间,增大cache的容量,提升数据处理效率。
下面介绍本发明实施例涉及的一种cache:
请参阅图9和图10,图9是本发明实施例提供的一种cache的结构示意图,图10是本发明实施例提供的一种缓存控制器的结构示意图。所述高速缓存90可实现数据去重,包括数据存储器91和缓存控制器92,所述数据存储器91包括数据域911和标志域912,
数据域911包括多个数据行以及划分的Q个标志行,标志域包括多个标志行,一个标志行可以对应到一个数据行形成一个缓存行。其中,多个标志行可以对应同一数据行,来实现缓存行的数据去重。
其中,所述缓存控制器92包括以下部分或全部单元:
划分单元921,用于在检测针对缓存行的数据去重操作且所述数据域中空闲数据行的数量满足第一条件的情况下,将所述数据域中P个空闲数据行划分出Q个标志行;所述数据域包括多个数据行,所述多个数据行包括所述P个空闲数据行;P、Q为正整数;
配置单元922,基于高速缓存与内存的映射方式,配置所述Q个标志行与内存中数据块的映射关系,以使所述数据域中的所述P个空闲数据行复用为所述Q个标志行。
在一种可能的实现方式中,所述配置单元922,具体用于:
基于高速缓存与内存的映射方式,通过映射关系表存储所述Q个标志行与内存中数据块的映射关系;
其中,所述映射关系表包括所述第一标志行的地址信息;所述地址信息包括缓存块号和块内编号;所述缓存块号用于指示所述第一标志行所属数据行在所述数据域中的地址,所述块内编号用于指示所述第一标志行在所述第一标志行所属数据行中的地址;所述第一标志行为所述Q个标志行中任意一个标志行。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为全相连映射;所述映射关系表的存储空间包括至少Q个存储单元;所述配置单元922通过映射关系表存储所述Q个标志行与内存中数据块的映射关系,具体包括:
将所述Q个标志行的地址信息分别写入所述Q个存储单元。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为N路组相连映射,所述高速缓存的缓存行划分为M组,M、N为正整数;所述映射关系表还包括:所述第一标志行与组号、组内块号的映射关系。
在又一种可能的实现方式中,所述映射关系表的存储空间包括Q个存储单元,所述Q个存储单元以M行R列的阵列排列,所述配置单元922通过映射关系表存储所述Q个标志行与内存中数据块的映射关系,具体包括:
在第i行第j列存储单元存储中写入所述Q个标志行中第k个标志行的地址信息;
所述第k个标志行的组号为i-1,所述第k个标志行的组内块号为N+j-1;
其中,R为Q/M的商,R为整数;k=(i-1)*M+j,i、j、k为正整数。
在又一种可能的实现方式中,一个空闲数据行被划分为D*M个标志行,D为正整数;所述映射关系表的存储空间包括至少R个存储单元,所述R个存储单元以R行1列的阵列排列,所述存储单元包括M+1个存储子单元,R≥Q/M,R为正整数;所述配置单元922通过映射关系表存储所述Q个标志行与内存中数据块的映射关系,具体包括:
在第i行存储单元的第一个存储子单元中写入第k个标志行所属的数据行的缓存块号;以及,
在第i行存储单元的第j个存储子单元中写入所述Q个标志行中第k个标志行的块内编号;
所述第k个标志行的组内块号为N+i-1,所述第k个标志行的组号为j-2;
其中,i≤R,2≤j≤M+1,k=(i-1)*M+j,i、j、k为正整数。
在又一种可能的实现方式中,H个空闲数据行划分出M个标志行,H为正整数;所述映射关系表的存储空间包括至少R个存储单元,所述R个存储单元以R行1列的阵列排列;所述配置单元922通过映射关系表存储所述Q个标志行与内存中数据块的映射关系,具体包括:
第i个存储单元包括第k个标志行所属的数据行的缓存块号,以及通过所述第k个标志行在第(i-1)*M+1至i*M的M个标志行中的排序指示所述第k标志行的块内编号;
所述第k个标志行的组内块号为N+i-1,所述第k个标志行的组号为所述第k个标志行在第(i-1)*M+1至i*M的M个标志行中的排序;
其中,(i-1)*M+1≤k≤i*M,i、k为正整数;R≥Q/M,R为正整数。
在又一种可能的实现方式中,所述缓存控制器92还包括:
判断单元923,用于在所述数据域中空闲数据行的存储空间大于第一阈值时,则判断为所述数据域中空闲数据行的数量满足第一条件。
在又一种可能的实现方式中,所述配置所述Q个标志行与内存中数据块的映射关系之后,所述缓存控制器92还包括:
回写单元924,用于在所述高速缓存内空闲的数据行的数量小于第二阈值或所述高速缓存的未命中率大于第三阈值的情况下,将所述数据域中S个标志行对应的缓存行内的数据回写到所述内存;
第一恢复单元925,用于将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
在又一种可能的实现方式中,所述配置所述Q个标志行与内存中数据块的映射关系之后,所述缓存控制器还包括:
映射单元926,用户在所述高速缓存内空闲的数据行的数量小于第二阈值或所述高速缓存的未命中率大于第三阈值的情况下,将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行;
第二恢复单元927,用于将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为组相连映射,所述高速缓存包括多个缓存组,所述映射单元926将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行,具体包括:
将第二标志行对应的缓存行映射到所述标志域中所述第二标志行所在的缓存组内的标志行对应的缓存行;
所述第二标志行为所述数据域中S个标志行中任意一个标志行。
需要说明的是,映射关系表的存储空间可以位于数据存储器91内,为不同于数据域911和标志域912的存储域;也可以位于缓存控制器92内,此时缓存控制器92还可包括可用于存储映射关系表的存储器。
本发明实施例中,所述高速缓存可实现数据去重,包括数据域和标志域,cache在检测针对缓存行的数据去重操作且所述数据域中空闲数据行的数量满足第一条件的情况下,将所述数据域中P个空闲数据行划分出Q个标志行;并基于高速缓存与内存的映射方式,配置所述Q个标志行与内存中数据块的映射关系,以使所述数据域中的所述P个空闲数据行复用为所述Q个标志行,实现数据域复用为标志域,进而增大cache的可访地址空间,增大cache的容量,提升数据处理效率。
请参阅图11,图11是本发明实施例提供的另一种cache的结构示意图,所述高速缓存110可实现数据去重,包括数据存储器111和缓存控制器112,所述数据存储器111包括数据域1111和标志域1112,所述缓存控制器112包括:
接收单元1121,用于接收处理器发送的携带主存地址的请求;
命中判断单元1122,用于读取高速缓存与内存的映射关系,比较所述主存地址与缓存行的标签字段,查看是否在命中所述请求的缓存行;
第一响应单元1123,用于在存在命中所述请求的缓存行时,访问命中的缓存行内的数据;或者,第二响应单元1124,用于在不存在命中所述请求的缓存行时,分配缓存行,读取内存中所述主存地址对应的数据到分配的缓存行,访问所述分配的缓存行中数据;
其中,所述数据域中包括Q个标志行,所述Q个标志行由所述数据域中P个空闲数据行划分得到;所述高速缓存中缓存行与内存中数据块的映射关系包括所述Q个标志行与内存中数据块的映射关系。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为全相连映射;所述命中判断单元1122比较所述主存地址与缓存行的标签字段,查看是否存在命中所述请求的缓存行,具体包括:
比较所述主存地址的主存字块标记与所述高速缓存中所有的标志行的标签字段,查看是否存在与所述主存地址的主存字块标记相符合的标志行;所述高速缓存中所有的标志行包括所述数据域中Q个标志行;
所述与所述主存地址的主存字块标记相符合的标志行对应的缓存行为命中的缓存行;
其中,所述主存地址包括主存字块标记以及字块内地址;标志行的标签字段包括主存字块标记。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为组相连映射;所述高速缓存划分为多个缓存组,所述命中判断单元1122比较所述主存地址与缓存行的标签字段,查看是否存在命中所述请求的缓存行,具体包括:
根据所述主存地址中组号确定缓存组;
比较所述主存地址的主存字块标记与确定的缓存组中所有的标志行的标签字段,查看是否存在与主存地址的主存字块标记相符合的标志行;
所述与主存地址的主存字块标记相符合的标志行对应的缓存行为命中的缓存行;
其中,所述主存地址包括主存字块标记、组号以及字块内地址;标志行的标签字段包括主存字块标记。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为组相连映射;所述缓存控制器112还包括:
查找单元1125,用于在所述命中判断单元根据所述主存地址中组号确定缓存组之后,所述比较所述主存地址的主存字块标记与所述缓存组中所有的标志行的标签字段之前,根据映射关系表查找所述数据域中与所述组号对应的标志行,所述数据域中与所述组号对应的标志行为所述缓存组内标志行;
其中,所述映射关系表用于存储所述Q个标志行与内存中数据块的映射关系,包括所述第一标志行的地址信息以及所述第一标志行对应的组号、组内块号;所述地址信息包括缓存块号和块内编号;所述缓存块号用于指示所述第一标志行所属数据行在所述数据域中的地址,所述块内编号用于指示所述第一标志行在所述第一标志行所属数据行中的地址;所述第一标志行为所述Q个标志行中任意一个标志行。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为N+R路组相连;所述查找单元1125具体用于:
根据所述映射关系表查找所述Q个标志行中与所述组号对应的R个标志行;所述R个标志行为所述缓存组内标志行;其中,R=Q/M,R为整数。
在又一种可能的实现方式中,所述缓存控制器112还包括:
回写单元1126,用于在所述高速缓存内空闲的数据行的数量小于第一阈值或所述高速缓存的未命中率大于第二阈值的情况下,将所述数据域中S个标志行对应的缓存行内的数据回写到所述内存;
第一恢复单元1127,用于将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
在又一种可能的实现方式中,所述缓存控制器还包括:
映射单元1129,用于在所述高速缓存内空闲的数据行的数量小于第一阈值或所述高速缓存的未命中率大于第二阈值的情况下,将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行;
第二恢复单元1128,用于将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
在又一种可能的实现方式中,所述高速缓存与内存的映射方式为组相连映射,所述高速缓存包括多个缓存组,所述映射单元1129将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行,具体包括:
将第二标志行对应的缓存行映射到所述标志域中所述第二标志行所在的缓存组内的标志行对应的缓存行;
所述第二标志行为所述数据域中S个标志行中任意一个标志行。
需要说明的是,映射关系表的存储空间可以位于数据存储器111内,为不同于数据域1111和标志域1112的存储域;也可以位于缓存控制器112内,此时缓存控制器112还可包括可用于存储映射关系表的存储器。
本发明实施例中,cache接收处理器发送的携带主存地址的请求;读取高速缓存与内存的映射关系,比较主存地址与缓存行的标签字段,查看是否在命中请求的缓存行;在存在命中请求的缓存行时,访问命中的缓存行内的数据;或,在不存在命中请求的缓存行时,分配缓存行,读取内存中主存地址对应的数据到分配的缓存行,访问分配的缓存行中数据;其中,cache可实现数据去重,包括数据域和标志域,且数据域中包括Q个标志行,该Q个标志行由数据域中P个空闲数据行划分得到;高速缓存可实现数据去重,包括数据域和标志域,进而实现数据域中的P个空闲数据行复用为Q个标志行,进而增大cache的可访地址空间,增大cache的容量,提升数据处理效率。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (38)

1.一种高速缓存中资源调整方法,其特征在于,所述高速缓存可实现数据去重,包括数据域和标志域,所述方法包括:
在检测针对缓存行的数据去重操作且所述数据域中空闲数据行的数量满足第一条件的情况下,将所述数据域中P个空闲数据行划分出Q个标志行;所述数据域包括多个数据行,所述多个数据行包括所述P个空闲数据行;P、Q为正整数;
基于高速缓存与内存的映射方式,配置所述Q个标志行与内存中数据块的映射关系,以使所述数据域中的所述P个空闲数据行复用为所述Q个标志行。
2.根据权利要求1所述的方法,其特征在于,所述基于高速缓存与内存的映射方式,配置所述Q个标志行与内存中数据块的映射关系包括:
基于高速缓存与内存的映射方式,通过映射关系表存储所述Q个标志行与内存中数据块的映射关系;
其中,所述映射关系表包括第一标志行的地址信息;所述地址信息包括缓存块号和块内编号;所述缓存块号用于指示所述第一标志行所属数据行在所述数据域中的地址,所述块内编号用于指示所述第一标志行在所述第一标志行所属数据行中的地址;所述第一标志行为所述Q个标志行中任意一个标志行。
3.根据权利要求2所述的方法,其特征在于,所述高速缓存与内存的映射方式为全相连映射;所述映射关系表的存储空间包括至少Q个存储单元;所述通过映射关系表存储所述Q个标志行与内存中数据块的映射关系包括:
将所述Q个标志行的地址信息分别写入所述Q个存储单元。
4.根据权利要求2所述的方法,其特征在于,所述高速缓存与内存的映射方式为N路组相连映射,所述高速缓存的缓存行划分为M组,M、N为正整数;所述映射关系表还包括:所述第一标志行与组号、组内块号的映射关系。
5.根据权利要求4所述的方法,其特征在于,所述映射关系表的存储空间包括Q个存储单元,所述Q个存储单元以M行R列的阵列排列,所述通过映射关系表存储所述Q个标志行与内存中数据块的映射关系包括:
在第i行第j列存储单元存储中写入所述Q个标志行中第k个标志行的地址信息;
所述第k个标志行的组号为i-1,所述第k个标志行的组内块号为N+j-1;
其中,R为Q/M的商,R为整数;k=(i-1)*M+j,i、j、k为正整数。
6.根据权利要求4所述的方法,其特征在于,一个空闲数据行被划分为D*M个标志行,D为正整数;所述映射关系表的存储空间包括至少R个存储单元,所述R个存储单元以R行1列的阵列排列,所述存储单元包括M+1个存储子单元,R≥Q/M,R为正整数;所述通过映射关系表存储所述Q个标志行与内存中数据块的映射关系包括:
在第i行存储单元的第一个存储子单元中写入第k个标志行所属的数据行的缓存块号;以及,
在第i行存储单元的第j个存储子单元中写入所述Q个标志行中第k个标志行的块内编号;
所述第k个标志行的组内块号为N+i-1,所述第k个标志行的组号为j-2;
其中,i≤R,2≤j≤M+1,k=(i-1)*M+j,i、j、k为正整数。
7.根据权利要求4所述的方法,其特征在于,H个空闲数据行划分出M个标志行,H为正整数;所述映射关系表的存储空间包括至少R个存储单元,所述R个存储单元以R行1列的阵列排列;所述通过映射关系表存储所述Q个标志行与内存中数据块的映射关系包括:
第i个存储单元包括第k个标志行所属的数据行的缓存块号,以及通过所述第k个标志行在第(i-1)*M+1至i*M的M个标志行中的排序指示所述第k个标志行的块内编号;
所述第k个标志行的组内块号为N+i-1,所述第k个标志行的组号为所述第k个标志行在第(i-1)*M+1至i*M的M个标志行中的排序;
其中,(i-1)*M+1≤k≤i*M,i、k为正整数;R≥Q/M,R为正整数。
8.根据权利要求1-7任意一项权利要求所述的方法,其特征在于,所述方法还包括:
在所述数据域中空闲数据行的存储空间大于第一阈值时,则判断为所述数据域中空闲数据行的数量满足所述第一条件。
9.根据权利要求1-7任意一项权利要求所述的方法,其特征在于,所述配置所述Q个标志行与内存中数据块的映射关系之后,所述方法还包括:
在所述高速缓存内空闲的数据行的数量小于第二阈值或所述高速缓存的未命中率大于第三阈值的情况下,将所述数据域中S个标志行对应的缓存行内的数据回写到所述内存;
将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
10.根据权利要求1-7任意一项权利要求所述的方法,其特征在于,所述配置所述Q个标志行与内存中数据块的映射关系之后,所述方法还包括:
在所述高速缓存内空闲的数据行的数量小于第二阈值或所述高速缓存的未命中率大于第三阈值的情况下,将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行;
将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
11.根据权利要求10所述的方法,其特征在于,所述高速缓存与内存的映射方式为组相连映射,所述高速缓存包括多个缓存组,所述将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行包括:
将第二标志行对应的缓存行映射到所述标志域中所述第二标志行所在的缓存组内的标志行对应的缓存行;
所述第二标志行为所述数据域中S个标志行中任意一个标志行。
12.一种高速缓存中数据访问方法,其特征在于,所述方法包括:
接收处理器发送的携带主存地址的请求;
读取高速缓存与内存的映射关系,比较所述主存地址与缓存行的标签字段,查看是否在命中所述请求的缓存行;
在存在命中所述请求的缓存行时,访问命中的缓存行内的数据;或者,在不存在命中所述请求的缓存行时,分配缓存行,读取内存中所述主存地址对应的数据到分配的缓存行,访问所述分配的缓存行中数据;
其中,所述高速缓存可实现数据去重,包括数据域和标志域;所述数据域中包括Q个标志行,所述Q个标志行由所述数据域中P个空闲数据行划分得到;所述高速缓存中缓存行与内存中数据块的映射关系包括所述Q个标志行与内存中数据块的映射关系。
13.根据权利要求12所述的方法,其特征在于,所述高速缓存与内存的映射方式为全相连映射;所述比较所述主存地址与缓存行的标签字段,查看是否存在命中所述请求的缓存行包括:
比较所述主存地址的主存字块标记与所述高速缓存中所有的标志行的标签字段,查看是否存在与所述主存地址的主存字块标记相符合的标志行;所述高速缓存中所有的标志行包括所述数据域中Q个标志行;
所述与所述主存地址的主存字块标记相符合的标志行对应的缓存行为命中的缓存行;
其中,所述主存地址包括主存字块标记以及字块内地址;标志行的标签字段包括主存字块标记。
14.根据权利要求12所述的方法,其特征在于,所述高速缓存与内存的映射方式为组相连映射;所述高速缓存划分为多个缓存组,所述比较所述主存地址与缓存行的标签字段,查看是否存在命中所述请求的缓存行包括:
根据所述主存地址中组号确定缓存组;
比较所述主存地址的主存字块标记与确定的缓存组中所有的标志行的标签字段,查看是否存在与主存地址的主存字块标记相符合的标志行;
所述与主存地址的主存字块标记相符合的标志行对应的缓存行为命中的缓存行;
其中,所述主存地址包括主存字块标记、组号以及字块内地址;标志行的标签字段包括主存字块标记。
15.根据权利要求14所述的方法,其特征在于,所述高速缓存与内存的映射方式为组相连映射;所述根据所述主存地址中组号确定缓存组之后,所述比较所述主存地址的主存字块标记与所述缓存组中所有的标志行的标签字段之前,所述方法还包括:
根据映射关系表查找所述数据域中与所述组号对应的标志行,所述数据域中与所述组号对应的标志行为所述缓存组内标志行;
其中,所述映射关系表用于存储所述Q个标志行与内存中数据块的映射关系,包括第一标志行的地址信息以及所述第一标志行对应的组号、组内块号;所述地址信息包括缓存块号和块内编号;所述缓存块号用于指示所述第一标志行所属数据行在所述数据域中的地址,所述块内编号用于指示所述第一标志行在所述第一标志行所属数据行中的地址;所述第一标志行为所述Q个标志行中任意一个标志行。
16.根据权利要求15所述的方法,其特征在于,所述高速缓存与内存的映射方式为N+R路组相连;所述根据映射关系表查找所述数据域中与所述组号对应的标志行,所述数据域中与所述组号对应的标志行为所述缓存组内标志行包括:
根据所述映射关系表查找所述Q个标志行中与所述组号对应的R个标志行;所述R个标志行为所述缓存组内标志行;其中,R=Q/M,N、M、R为整数。
17.根据权利要求12-16任意一项权利要求所述的方法,其特征在于,所述方法还包括:
在所述高速缓存内空闲的数据行的数量小于第一阈值或所述高速缓存的未命中率大于第二阈值的情况下,将所述数据域中S个标志行对应的缓存行内的数据回写到所述内存;
将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
18.根据权利要求12-16任意一项权利要求所述的方法,其特征在于,所述方法还包括:
在所述高速缓存内空闲的数据行的数量小于第一阈值或所述高速缓存的未命中率大于第二阈值的情况下,将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行;
将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
19.根据权利要求18所述的方法,其特征在于,所述高速缓存与内存的映射方式为组相连映射,所述高速缓存包括多个缓存组,所述将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行包括:
将第二标志行对应的缓存行映射到所述标志域中所述第二标志行所在的缓存组内的标志行对应的缓存行;
所述第二标志行为所述数据域中S个标志行中任意一个标志行。
20.一种高速缓存,其特征在于,所述高速缓存可实现数据去重,包括数据存储器和缓存控制器,所述数据存储器包括数据域和标志域,所述缓存控制器包括:
划分单元,用于在检测针对缓存行的数据去重操作且所述数据域中空闲数据行的数量满足第一条件的情况下,将所述数据域中P个空闲数据行划分出Q个标志行;所述数据域包括多个数据行,所述多个数据行包括所述P个空闲数据行;P、Q为正整数;
配置单元,基于高速缓存与内存的映射方式,配置所述Q个标志行与内存中数据块的映射关系,以使所述数据域中的所述P个空闲数据行复用为所述Q个标志行。
21.根据权利要求20所述的高速缓存,其特征在于,所述配置单元,具体用于:
基于高速缓存与内存的映射方式,通过映射关系表存储所述Q个标志行与内存中数据块的映射关系;
其中,所述映射关系表包括第一标志行的地址信息;所述地址信息包括缓存块号和块内编号;所述缓存块号用于指示所述第一标志行所属数据行在所述数据域中的地址,所述块内编号用于指示所述第一标志行在所述第一标志行所属数据行中的地址;所述第一标志行为所述Q个标志行中任意一个标志行。
22.根据权利要求21所述的高速缓存,其特征在于,所述高速缓存与内存的映射方式为全相连映射;所述映射关系表的存储空间包括至少Q个存储单元;所述配置单元通过映射关系表存储所述Q个标志行与内存中数据块的映射关系,具体包括:
将所述Q个标志行的地址信息分别写入所述Q个存储单元。
23.根据权利要求21所述的高速缓存,其特征在于,所述高速缓存与内存的映射方式为N路组相连映射,所述高速缓存的缓存行划分为M组,M、N为正整数;所述映射关系表还包括:所述第一标志行与组号、组内块号的映射关系。
24.根据权利要求23所述的高速缓存,其特征在于,所述映射关系表的存储空间包括Q个存储单元,所述Q个存储单元以M行R列的阵列排列,所述配置单元通过映射关系表存储所述Q个标志行与内存中数据块的映射关系,具体包括:
在第i行第j列存储单元存储中写入所述Q个标志行中第k个标志行的地址信息;
所述第k个标志行的组号为i-1,所述第k个标志行的组内块号为N+j-1;
其中,R为Q/M的商,R为整数;k=(i-1)*M+j,i、j、k为正整数。
25.根据权利要求23所述的高速缓存,其特征在于,一个空闲数据行被划分为D*M个标志行,D为正整数;所述映射关系表的存储空间包括至少R个存储单元,所述R个存储单元以R行1列的阵列排列,所述存储单元包括M+1个存储子单元,R≥Q/M,R为正整数;所述配置单元通过映射关系表存储所述Q个标志行与内存中数据块的映射关系,具体包括:
在第i行存储单元的第一个存储子单元中写入第k个标志行所属的数据行的缓存块号;以及,
在第i行存储单元的第j个存储子单元中写入所述Q个标志行中第k个标志行的块内编号;
所述第k个标志行的组内块号为N+i-1,所述第k个标志行的组号为j-2;
其中,i≤R,2≤j≤M+1,k=(i-1)*M+j,i、j、k为正整数。
26.根据权利要求23所述的高速缓存,其特征在于,H个空闲数据行划分出M个标志行,H为正整数;所述映射关系表的存储空间包括至少R个存储单元,所述R个存储单元以R行1列的阵列排列;所述配置单元通过映射关系表存储所述Q个标志行与内存中数据块的映射关系,具体包括:
第i个存储单元包括第k个标志行所属的数据行的缓存块号,以及通过所述第k个标志行在第(i-1)*M+1至i*M的M个标志行中的排序指示所述第k个 标志行的块内编号;
所述第k个标志行的组内块号为N+i-1,所述第k个标志行的组号为所述第k个标志行在第(i-1)*M+1至i*M的M个标志行中的排序;
其中,(i-1)*M+1≤k≤i*M,i、k为正整数;R≥Q/M,R为正整数。
27.根据权利要求20-26任意一项权利要求所述的高速缓存,其特征在于,所述缓存控制器还包括:
判断单元,用于在所述数据域中空闲数据行的存储空间大于第一阈值时,则判断为所述数据域中空闲数据行的数量满足第一条件。
28.根据权利要求20-26任意一项权利要求所述的高速缓存,其特征在于,所述配置所述Q个标志行与内存中数据块的映射关系之后,所述缓存控制器还包括:
回写单元,用于在所述高速缓存内空闲的数据行的数量小于第二阈值或所述高速缓存的未命中率大于第三阈值的情况下,将所述数据域中S个标志行对应的缓存行内的数据回写到所述内存;
第一恢复单元,用于将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
29.根据权利要求20-26任意一项权利要求所述的高速缓存,其特征在于,所述配置所述Q个标志行与内存中数据块的映射关系之后,所述缓存控制器还包括:
映射单元,用户在所述高速缓存内空闲的数据行的数量小于第二阈值或所述高速缓存的未命中率大于第三阈值的情况下,将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行;
第二恢复单元,用于将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
30.根据权利要求29所述的高速缓存,其特征在于,所述高速缓存与内存的映射方式为组相连映射,所述高速缓存包括多个缓存组,所述映射单元将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行,具体包括:
将第二标志行对应的缓存行映射到所述标志域中所述第二标志行所在的缓存组内的标志行对应的缓存行;
所述第二标志行为所述数据域中S个标志行中任意一个标志行。
31.一种高速缓存,其特征在于,所述高速缓存可实现数据去重,包括数据存储器和缓存控制器,所述数据存储器包括数据域和标志域,所述缓存控制器包括:
接收单元,用于接收处理器发送的携带主存地址的请求;
命中判断单元,用于读取高速缓存与内存的映射关系,比较所述主存地址与缓存行的标签字段,查看是否在命中所述请求的缓存行;
第一响应单元,用于在存在命中所述请求的缓存行时,访问命中的缓存行内的数据;或者,第二响应单元,用于在不存在命中所述请求的缓存行时,分配缓存行,读取内存中所述主存地址对应的数据到分配的缓存行,访问所述分配的缓存行中数据;
其中,所述数据域中包括Q个标志行,所述Q个标志行由所述数据域中P个空闲数据行划分得到;所述高速缓存中缓存行与内存中数据块的映射关系包括所述Q个标志行与内存中数据块的映射关系。
32.根据权利要求31所述的高速缓存,其特征在于,所述高速缓存与内存的映射方式为全相连映射;所述命中判断单元比较所述主存地址与缓存行的标签字段,查看是否存在命中所述请求的缓存行,具体包括:
比较所述主存地址的主存字块标记与所述高速缓存中所有的标志行的标签字段,查看是否存在与所述主存地址的主存字块标记相符合的标志行;所述高速缓存中所有的标志行包括所述数据域中Q个标志行;
所述与所述主存地址的主存字块标记相符合的标志行对应的缓存行为命中的缓存行;
其中,所述主存地址包括主存字块标记以及字块内地址;标志行的标签字段包括主存字块标记。
33.根据权利要求31所述的高速缓存,其特征在于,所述高速缓存与内存的映射方式为组相连映射;所述高速缓存划分为多个缓存组,所述命中判断单元比较所述主存地址与缓存行的标签字段,查看是否存在命中所述请求的缓存行,具体包括:
根据所述主存地址中组号确定缓存组;
比较所述主存地址的主存字块标记与确定的缓存组中所有的标志行的标签字段,查看是否存在与主存地址的主存字块标记相符合的标志行;
所述与主存地址的主存字块标记相符合的标志行对应的缓存行为命中的缓存行;
其中,所述主存地址包括主存字块标记、组号以及字块内地址;标志行的标签字段包括主存字块标记。
34.根据权利要求33所述的高速缓存,其特征在于,所述高速缓存与内存的映射方式为组相连映射;所述缓存控制器还包括:
查找单元,用于在所述命中判断单元根据所述主存地址中组号确定缓存组之后,所述比较所述主存地址的主存字块标记与所述缓存组中所有的标志行的标签字段之前,根据映射关系表查找所述数据域中与所述组号对应的标志行,所述数据域中与所述组号对应的标志行为所述缓存组内标志行;
其中,所述映射关系表用于存储所述Q个标志行与内存中数据块的映射关系,包括第一标志行的地址信息以及所述第一标志行对应的组号、组内块号;所述地址信息包括缓存块号和块内编号;所述缓存块号用于指示所述第一标志行所属数据行在所述数据域中的地址,所述块内编号用于指示所述第一标志行在所述第一标志行所属数据行中的地址;所述第一标志行为所述Q个标志行中任意一个标志行。
35.根据权利要求34所述的高速缓存,其特征在于,所述高速缓存与内存的映射方式为N+R路组相连;所述查找单元具体用于:
根据所述映射关系表查找所述Q个标志行中与所述组号对应的R个标志行;所述R个标志行为所述缓存组内标志行;其中,R=Q/M,R为整数。
36.根据权利要求31-35任意一项权利要求所述的高速缓存,其特征在于,所述缓存控制器还包括:
回写单元,用于在所述高速缓存内空闲的数据行的数量小于第一阈值或所述高速缓存的未命中率大于第二阈值的情况下,将所述数据域中S个标志行对应的缓存行内的数据回写到所述内存;
第一恢复单元,用于将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
37.根据权利要求31-35任意一项权利要求所述的高速缓存,其特征在于,所述缓存控制器还包括:
映射单元,用于在所述高速缓存内空闲的数据行的数量小于第一阈值或所述高速缓存的未命中率大于第二阈值的情况下,将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行;
第二恢复单元,用于将所述S个标志行恢复为T个数据行,并清除所述S个标志行与所述内存中数据块的映射关系;
其中,所述Q个标志行包括所述S个标志行;S≤Q、T≤P,S、T为正整数。
38.根据权利要求37所述的高速缓存,其特征在于,所述高速缓存与内存的映射方式为组相连映射,所述高速缓存包括多个缓存组,所述映射单元将所述数据域中S个标志行对应的缓存行映射到标志域中S个标志行对应的缓存行,具体包括:
将第二标志行对应的缓存行映射到所述标志域中所述第二标志行所在的缓存组内的标志行对应的缓存行;
所述第二标志行为所述数据域中S个标志行中任意一个标志行。
CN201780097989.4A 2017-12-27 2017-12-27 高速缓存中资源调整方法、数据访问方法及装置 Active CN111602377B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/119013 WO2019127104A1 (zh) 2017-12-27 2017-12-27 高速缓存中资源调整方法、数据访问方法及装置

Publications (2)

Publication Number Publication Date
CN111602377A CN111602377A (zh) 2020-08-28
CN111602377B true CN111602377B (zh) 2021-12-24

Family

ID=67064289

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780097989.4A Active CN111602377B (zh) 2017-12-27 2017-12-27 高速缓存中资源调整方法、数据访问方法及装置

Country Status (2)

Country Link
CN (1) CN111602377B (zh)
WO (1) WO2019127104A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111241009B (zh) * 2019-12-31 2023-05-16 西安翔腾微电子科技有限公司 一种数据反馈方法及装置
CN112037119A (zh) * 2020-09-09 2020-12-04 绍兴埃瓦科技有限公司 一种基于高速缓冲存储器结构的图像处理方法及系统
CN112579481B (zh) * 2020-12-07 2023-01-20 海光信息技术股份有限公司 数据处理方法、数据处理装置和计算装置
CN112948437B (zh) * 2021-03-03 2023-12-19 苏州合数科技有限公司 一种大数据高并发下全域频控系统及方法
CN113297211B (zh) * 2021-03-03 2023-12-22 苏州合数科技有限公司 一种大数据高并发下人群画像存储及定向系统及方法
CN113778912B (zh) * 2021-08-25 2024-05-07 深圳市中科蓝讯科技股份有限公司 cache映射架构动态调整方法及cache控制器
CN113791989B (zh) * 2021-09-15 2023-07-14 深圳市中科蓝讯科技股份有限公司 基于cache的缓存数据处理方法、存储介质及芯片
CN113641596B (zh) * 2021-10-18 2022-07-19 北京壁仞科技开发有限公司 缓存管理方法、缓存管理装置、处理器
CN115794675B (zh) * 2023-01-19 2023-05-16 北京象帝先计算技术有限公司 写数据方法、装置、图形处理系统、电子组件及电子设备
CN117453423B (zh) * 2023-12-25 2024-04-19 北京趋动智能科技有限公司 Gpu显存管理方法和系统,存储介质和电子设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1499382A (zh) * 2002-11-05 2004-05-26 华为技术有限公司 廉价冗余磁盘阵列系统中高效高速缓存的实现方法
US7624235B2 (en) * 2006-11-30 2009-11-24 Apple Inc. Cache used both as cache and staging buffer
CN103150269B (zh) * 2011-12-06 2017-07-14 广东新岸线计算机系统芯片有限公司 一种数据缓存控制方法和系统
US8832376B2 (en) * 2012-03-16 2014-09-09 Infineon Technologies Ag System and method for implementing a low-cost CPU cache using a single SRAM
US9298637B2 (en) * 2013-03-13 2016-03-29 International Business Machines Corporation Dynamic caching module selection for optimized data deduplication
US9729659B2 (en) * 2013-03-14 2017-08-08 Microsoft Technology Licensing, Llc Caching content addressable data chunks for storage virtualization
CN104346404B (zh) * 2013-08-08 2018-05-18 华为技术有限公司 一种访问数据的方法、设备及系统
CN107291630B (zh) * 2016-03-30 2020-08-25 华为技术有限公司 一种高速缓冲存储器处理方法及装置
CN106227676B (zh) * 2016-09-22 2019-04-19 大唐微电子技术有限公司 一种高速缓存以及从高速缓存中读取数据的方法和装置

Also Published As

Publication number Publication date
WO2019127104A1 (zh) 2019-07-04
CN111602377A (zh) 2020-08-28

Similar Documents

Publication Publication Date Title
CN111602377B (zh) 高速缓存中资源调整方法、数据访问方法及装置
EP3414665B1 (en) Profiling cache replacement
US7711902B2 (en) Area effective cache with pseudo associative memory
US10169232B2 (en) Associative and atomic write-back caching system and method for storage subsystem
US8412907B1 (en) System, method and computer program product for application-level cache-mapping awareness and reallocation
EP1654660B1 (en) A method of data caching
US7552286B2 (en) Performance of a cache by detecting cache lines that have been reused
CN113853593A (zh) 支持清空写入未命中条目的受害者高速缓存
US10007614B2 (en) Method and apparatus for determining metric for selective caching
US6098152A (en) Method and apparatus for miss sequence cache block replacement utilizing a most recently used state
KR20190058316A (ko) 예측에 기초하여 효율적으로 캐시 라인을 관리하는 시스템 및 방법
CN1940892A (zh) 逐出高速缓存的行的电路布置、数据处理系统和方法
CN110730956A (zh) 用于降低存储器系统中的页面迁移开销的机制
KR101509628B1 (ko) 프로세서의 하이 어소시에이티브 캐시 메모리를 위한 scr 매커니즘
US7197605B2 (en) Allocating cache lines
US7721047B2 (en) System, method and computer program product for application-level cache-mapping awareness and reallocation requests
US7702875B1 (en) System and method for memory compression
CN115357196A (zh) 动态可扩展的组相联高速缓存方法、装置、设备及介质
CN113138851A (zh) 一种缓存管理方法及装置
KR101976320B1 (ko) 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법
WO2010098152A1 (ja) キャッシュメモリシステムおよびキャッシュメモリ制御方法
KR20230148736A (ko) 연산 스토리지 장치가 있는 교차 계층 키-밸류 스토어 아키텍처를 위한 시스템 및 방법
CN116910019A (zh) 用于具有计算存储设备的跨层键-值存储库的系统和方法
CN116069719A (zh) 处理器、内存控制器、片上系统芯片和数据预取方法
Liu EECS 252 Graduate Computer Architecture

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