CN117093371A - 缓存资源分配方法、装置、电子设备和存储介质 - Google Patents
缓存资源分配方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN117093371A CN117093371A CN202311076545.6A CN202311076545A CN117093371A CN 117093371 A CN117093371 A CN 117093371A CN 202311076545 A CN202311076545 A CN 202311076545A CN 117093371 A CN117093371 A CN 117093371A
- Authority
- CN
- China
- Prior art keywords
- shared cache
- identification information
- data request
- cache
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000003860 storage Methods 0.000 title claims abstract description 31
- 238000013468 resource allocation Methods 0.000 title claims abstract description 23
- 230000004044 response Effects 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 abstract description 24
- 238000010586 diagram Methods 0.000 description 22
- 238000013507 mapping Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 4
- 230000010365 information processing Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本申请是在2023年02月23日提交中国专利局、申请号为202310153348.3、发明名称为“缓存资源分配方法、装置、电子设备和存储介质”的中国专利申请的分案申请。
技术领域
本公开涉及电数字数据处理技术领域,尤其涉及一种缓存资源分配方法、缓存资源分配装置、电子设备和存储介质。
背景技术
缓存是一种片上存储器,它位于CPU(Central Processing Unit,中央处理器)/GPU(Graphics Processing Unit,图形处理器)与内存之间,可以提供快速且小容量的数据读写。缓存内的数据是主内存的一部分,通过一定的映射关系存储在缓存中,并通过对比标签信息来获得数据。映射关系主要分为以下三种:第一种为直接映射。在直接映射中,内存中的某一块地址只能映射到缓存中的固定位置。第二种为全相连映射。在全相连映射中,内存中的某一块地址可以映射到缓存中的任意位置。第三种为组相连映射。组相连映射是直接映射和全相连映射的折中方案。在组相连映射中,将缓存分为若干组(set),每组有多个路(way)。内存中的某一块地址只能映射到固定的组,但是可以映射到每个组内不同的路。由于物理实现的复杂度,在组相连中,每组包含的路的数量通常不超过16个或32个。表1示出了组相连映射的一示例性的实现方式。在表1所示的实现方式中,将缓存分为M+1组,每个组包括N+1个路。
表1
路#0 | 路#1 | … | 路#N | |
组#0 | 数据 | 数据 | 数据 | 数据 |
… | 数据 | 数据 | 数据 | 数据 |
组#M | 数据 | 数据 | 数据 | 数据 |
缓存利用了程序的局部性原理,分为时间局部性和空间局部性。时间局部性是指某一个地址可能会在一段时间内重复被访问。空间局部性是指一个地址被访问,则附近的地址也有很大可能会被访问。由于不同程序表现出的局部性也会不同,所以对于缓存的利用率也有差异。如何提高缓存资源的利用率,是亟待解决的技术问题。
发明内容
本公开提供了一种缓存资源分配技术方案。
根据本公开的一方面,提供了一种缓存资源分配方法,处理器系统包括至少两级缓存,所述至少两级缓存中的最高级为共享缓存,所述共享缓存包括多个共享缓存组,所述方法包括:
响应于来自于任一应用的第一数据请求,获取所述第一数据请求携带的第一标识信息;
响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分配预设数量的共享缓存组。
在一种可能的实现方式中,所述共享缓存包括多个共享缓存通道;
所述响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分配预设数量的共享缓存组,包括:
响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分别分配所述多个共享缓存通道中的预设数量的共享缓存组。
在一种可能的实现方式中,所述预设数量包括第一预设数量和第二预设数量,且所述第一预设数量小于所述第二预设数量;
所述响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分别分配所述多个共享缓存通道中的预设数量的共享缓存组,包括:
响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,从所述多个共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道,其中,所述第一参照共享缓存通道表示所述第一标识信息对应的参照共享缓存通道;
向所述第一标识信息分配第一普通共享缓存通道中的所述第一预设数量的共享缓存组,并向所述第一标识信息分配所述第一参照共享缓存通道中的所述第二预设数量的共享缓存组,其中,所述第一普通共享缓存通道表示所述多个共享缓存通道中除所述第一参照共享缓存通道以外的共享缓存通道。
在一种可能的实现方式中,所述响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,从所述多个共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道,包括:
响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,且所述多个共享缓存通道中存在未被确定为参照共享缓存通道的共享缓存通道,从所述未被确定为参照共享缓存通道的共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道。
在一种可能的实现方式中,所述方法还包括:
获取所述第一参照共享缓存通道针对所述第一标识信息的第一命中率,以及所述第一普通共享缓存通道针对所述第一标识信息的第二命中率;
根据所述第一命中率和所述第二命中率,调节分配给所述第一标识信息的共享缓存组的数量。
在一种可能的实现方式中,所述根据所述第一命中率和所述第二命中率,调节分配给所述第一标识信息的共享缓存组的数量,包括:
确定所述第一命中率与所述第二命中率的比值;
响应于所述比值大于或等于第一预设阈值,增大所述多个共享缓存通道中分配给所述第一标识信息的共享缓存组的数量;或者,响应于所述比值小于或等于第二预设阈值,减少所述多个共享缓存通道中分配给所述第一标识信息的共享缓存组的数量;其中,所述第一预设阈值大于所述第二预设阈值,且所述第一预设阈值和所述第二预设阈值均大于1。
在一种可能的实现方式中,所述方法还包括:
获取所述第一数据请求对应的第一请求地址;
响应于根据所述第一请求地址确定在本地缓存中发生缓存缺失,获取所述第一标识信息对应的组掩码、组偏移和标志位偏移量;
根据所述第一数据请求对应的第二请求地址、所述组掩码、所述组偏移和所述标志位偏移量,确定所述第一数据请求对应的新组位和新标签信息,其中,所述第二请求地址根据所述第一请求地址确定;
根据所述第二请求地址中的通道信息和行内偏移地址,以及所述新组位和所述新标签信息,查找目标数据。
在一种可能的实现方式中,所述方法还包括:
对所述第一请求地址进行重映射,得到所述第二请求地址。
在一种可能的实现方式中,所述根据所述第一数据请求对应的第二请求地址、所述组掩码、所述组偏移和所述标志位偏移量,确定所述第一数据请求对应的新组位和新标签信息,包括:
从所述第二请求地址中,获取原始组位和原始标签信息;
将所述原始组位与所述组掩码进行与运算,得到所述第一数据请求所请求的目标数据在所述第一标识信息对应的多个共享缓存组中的相对位置;
根据所述组偏移和所述相对位置,确定所述第一数据请求对应的新组位;
根据所述原始标签信息、所述标志位偏移量和所述原始组位中的指定位,确定所述第一数据请求对应的新标签信息。
在一种可能的实现方式中,所述根据所述第二请求地址中的通道信息和行内偏移地址,以及所述新组位和所述新标签信息,查找目标数据,包括:
响应于根据所述通道信息、所述新组位、所述新标签信息和所述行内偏移地址,查找不到目标数据,从内存或外存中获取所述目标数据,将所述目标数据写入所述新组位对应的共享缓存组中,并向所述第一数据请求返回所述目标数据。
在一种可能的实现方式中,所述第一标识信息包括以下任意一项:
根据所述应用调用的模块确定的标识信息、根据上下文的标识信息确定的标识信息、根据所述第一数据请求所请求的目标数据在内存中的地址区间确定的标识信息。
根据本公开的一方面,提供了一种缓存资源分配装置,处理器系统包括至少两级缓存,所述至少两级缓存中的最高级为共享缓存,所述共享缓存包括多个共享缓存组,所述装置包括:第一获取模块,用于响应于来自于任一应用的第一数据请求,获取所述第一数据请求携带的第一标识信息;分配模块,用于响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分配预设数量的共享缓存组。
在一种可能的实现方式中,所述共享缓存包括多个共享缓存通道;所述分配模块用于:响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分别分配所述多个共享缓存通道中的预设数量的共享缓存组。
在一种可能的实现方式中,所述预设数量包括第一预设数量和第二预设数量,且所述第一预设数量小于所述第二预设数量;所述分配模块用于:响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,从所述多个共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道,其中,所述第一参照共享缓存通道表示所述第一标识信息对应的参照共享缓存通道;向所述第一标识信息分配第一普通共享缓存通道中的所述第一预设数量的共享缓存组,并向所述第一标识信息分配所述第一参照共享缓存通道中的所述第二预设数量的共享缓存组,其中,所述第一普通共享缓存通道表示所述多个共享缓存通道中除所述第一参照共享缓存通道以外的共享缓存通道。
在一种可能的实现方式中,所述分配模块用于:响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,且所述多个共享缓存通道中存在未被确定为参照共享缓存通道的共享缓存通道,从所述未被确定为参照共享缓存通道的共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道。
在一种可能的实现方式中,所述装置还包括:第二获取模块,用于获取所述第一参照共享缓存通道针对所述第一标识信息的第一命中率,以及所述第一普通共享缓存通道针对所述第一标识信息的第二命中率;调节模块,用于根据所述第一命中率和所述第二命中率,调节分配给所述第一标识信息的共享缓存组的数量。
在一种可能的实现方式中,所述调节模块用于:确定所述第一命中率与所述第二命中率的比值;响应于所述比值大于或等于第一预设阈值,增大所述多个共享缓存通道中分配给所述第一标识信息的共享缓存组的数量;或者,响应于所述比值小于或等于第二预设阈值,减少所述多个共享缓存通道中分配给所述第一标识信息的共享缓存组的数量;其中,所述第一预设阈值大于所述第二预设阈值,且所述第一预设阈值和所述第二预设阈值均大于1。
在一种可能的实现方式中,所述装置还包括:第三获取模块,用于获取所述第一数据请求对应的第一请求地址;第四获取模块,用于响应于根据所述第一请求地址确定在本地缓存中发生缓存缺失,获取所述第一标识信息对应的组掩码、组偏移和标志位偏移量;确定模块,用于根据所述第一数据请求对应的第二请求地址、所述组掩码、所述组偏移和所述标志位偏移量,确定所述第一数据请求对应的新组位和新标签信息,其中,所述第二请求地址根据所述第一请求地址确定;查找模块,用于根据所述第二请求地址中的通道信息和行内偏移地址,以及所述新组位和所述新标签信息,查找目标数据。
在一种可能的实现方式中,所述装置还包括:重映射模块,用于对所述第一请求地址进行重映射,得到所述第二请求地址。
在一种可能的实现方式中,所述确定模块用于:从所述第二请求地址中,获取原始组位和原始标签信息;将所述原始组位与所述组掩码进行与运算,得到所述第一数据请求所请求的目标数据在所述第一标识信息对应的多个共享缓存组中的相对位置;根据所述组偏移和所述相对位置,确定所述第一数据请求对应的新组位;根据所述原始标签信息、所述标志位偏移量和所述原始组位中的指定位,确定所述第一数据请求对应的新标签信息。
在一种可能的实现方式中,所述查找模块用于:响应于根据所述通道信息、所述新组位、所述新标签信息和所述行内偏移地址,查找不到目标数据,从内存或外存中获取所述目标数据,将所述目标数据写入所述新组位对应的共享缓存组中,并向所述第一数据请求返回所述目标数据。
在一种可能的实现方式中,所述第一标识信息包括以下任意一项:根据所述应用调用的模块确定的标识信息、根据上下文的标识信息确定的标识信息、根据所述第一数据请求所请求的目标数据在内存中的地址区间确定的标识信息。
根据本公开的一方面,提供了一种电子设备,包括:一个或多个处理器;用于存储可执行指令的存储器;其中,所述一个或多个处理器被配置为调用所述存储器存储的可执行指令,以执行上述方法。
根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
根据本公开的一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述方法。
在本公开实施例中,处理器系统包括至少两级缓存,所述至少两级缓存中的最高级为共享缓存,所述共享缓存包括多个共享缓存组,通过响应于来自于任一应用的第一数据请求,获取所述第一数据请求携带的第一标识信息,并响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分配预设数量的共享缓存组,由此基于组进行共享缓存资源的分配。由于组的数量比路的数量多(例如,共享缓存包括多个共享缓存通道,每个共享缓存通道包括256组,而组包含的路的数量通常不超过16个或32个),因此,基于组进行共享缓存资源的分配,能够更容易实现共享缓存资源的合理分配,并能够提高共享缓存资源的利用率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1示出GPU的缓存结构的一示意图。
图2示出本公开实施例提供的缓存资源分配方法的流程图。
图3示出本公开实施例提供的缓存资源分配方法中针对数据请求的标识信息按组分配的示意图。
图4示出本公开实施例提供的GPU的缓存结构的一示意图。
图5示出本公开实施例提供的缓存查找方法的一示意图。
图6示出本公开实施例提供的缓存资源分配装置的框图。
图7示出本公开实施例提供的一电子设备1900的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出GPU(Graphics Processing Unit,图形处理器)的缓存结构的一示意图。GPU系统中通常存在至少两级缓存结构。在图1所示的示例中,GPU系统包括两级缓存。
GPU上存在多个运算单元集群(GPU cluster),且每个运算单元集群内部有多个运算单元。本地缓存(Local Cache)可以认为是第一级缓存,只被对应的运算单元集群访问。在图1中,包括K+1个运算单元集群(运算单元集群0至运算单元集群K),以及与K+1个运算单元集群一一对应的K+1个本地缓存(本地缓存0至本地缓存K)。其中,本地缓存也可以称为局部缓存、1级缓存、L1缓存等,在此不做限定。
联通模块(interconnect)可以用于将请求传递给对应的外部存储区块。
共享缓存(Shared Cache)可以认为是第二级缓存。共享缓存可以被所有运算单元集群访问。其中,共享缓存也可以称为2级缓存、L2缓存、全局缓存等,在此不做限定。在图1中,包括L+1个共享缓存通道,分别为共享缓存通道0至共享缓存通道L。
另外,在图1中,包括L+1个DRAM存储体(Dynamic Random Access Memory bank,动态随机存取内存存储体),分别为DRAM存储体0至DRAM存储体L。
其中,共享缓存通道与DRAM存储体之间可以是一对一或多对一的关系。
由于GPU可以并行处理很多运算或者应用,这些运算和应用的数据局部性并不一定相同,因此对缓存的要求也不同,甚至应用之间没有数据共享,那么都放在共享缓存里反而会影响运行效率。
由于共享缓存可能被多线程、多核心或者多个不同的应用共同使用,而每个应用需要的缓存大小或者数据特性都有差别,因此最好可以区别对待,避免冲突,合理分配缓存资源。相关技术采用按路数划分(way partitioning)的方式,将不同的路分配给不同的应用。表2示出了组相连映射的另一示例性的实现方式。在表2所示的实现方式中,将缓存分为M+1组,每个组包括4个路。
表2
路#0 | 路#1 | 路#2 | 路#3 | |
组#0 | 数据 | 数据 | 数据 | 数据 |
… | 数据 | 数据 | 数据 | 数据 |
组#M | 数据 | 数据 | 数据 | 数据 |
在一个按路数划分的示例中,路0和路1只存应用A的数据,路2只存应用B的数据,路3只存应用C的数据。这样不同应用不会互相影响。
在这种按路数划分的方式的实际物理实现中,每组中路的数量是有限的(每组包含的路的数量通常不超过16个或32个),当请求者的数量过多,超过路的数量时(在GPU应用中很普遍),按路分配就产生了局限性,导致资源无法合理分配。
本公开实施例提供了一种缓存资源分配方法,处理器系统包括至少两级缓存,所述至少两级缓存中的最高级为共享缓存,所述共享缓存包括多个共享缓存组,通过响应于来自于任一应用的第一数据请求,获取所述第一数据请求携带的第一标识信息,并响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分配预设数量的共享缓存组,由此基于组进行共享缓存资源的分配。由于组的数量比路的数量多(例如,共享缓存包括多个共享缓存通道,每个共享缓存通道包括256组,而组包含的路的数量通常不超过16个或32个),因此,基于组进行共享缓存资源的分配,能够更容易实现共享缓存资源的合理分配,并能够提高共享缓存资源的利用率。
下面结合附图对本公开实施例提供的缓存资源分配方法进行详细的说明。
图2示出本公开实施例提供的缓存资源分配方法的流程图。所述缓存资源分配方法用于对缓存(Cache)的资源进行分配。在一种可能的实现方式中,所述缓存资源分配方法的执行主体可以是缓存资源分配装置,例如,所述缓存资源分配方法可以由终端设备或服务器或其它电子设备执行。其中,终端设备可以是用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备或者可穿戴设备等。在一些可能的实现方式中,所述缓存资源分配方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。如图2所示,所述缓存资源分配方法包括步骤S21至步骤S22。
在步骤S21中,响应于来自于任一应用的第一数据请求,获取所述第一数据请求携带的第一标识信息。
在步骤S22中,响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分配预设数量的共享缓存组。
在本公开实施例中,处理器系统包括至少两级缓存,所述至少两级缓存中的最高级为共享缓存,所述共享缓存包括多个共享缓存组。
其中,所述处理器系统可以为GPU(Graphics Processing Unit,图形处理器)系统或者CPU(Central Processing Unit,中央处理器)系统,在此不做限定。在下文中,以所述处理器系统为GPU系统为例进行说明。
在一种可能的实现方式中,所述处理器系统可以包括两级缓存。其中,第一级缓存可以为本地缓存,第二级缓存可以为共享缓存。
在另一种可能的实现方式中,所述处理器系统可以包括三级缓存。其中,第一级缓存和第二级缓存可以为本地缓存,第三级缓存可以为共享缓存。
在本公开实施例中,共享缓存可以包括至少一个通道,即,共享缓存可以包括至少一个共享缓存通道。其中,共享缓存通道表示共享缓存的通道。任一共享缓存通道能够被不同的运算单元集群访问。
在一种可能的实现方式中,共享缓存可以包括多个共享缓存通道。例如,共享缓存通道的数量可以为16、24、32、48等等,在此不做限定。在该实现方式中,每个共享缓存通道可以分别包括多个组(set),即,每个共享缓存通道可以分别包括多个共享缓存组。例如,每个共享缓存通道可以分别包括256个共享缓存组。
在本公开实施例中,每个共享缓存组可以分别包括多个路(way)。例如,每个共享缓存组中的路的数量可以为4、8、16、32等等。
在本公开实施例中,第一数据请求可以为任一应用发出的任一数据请求。第一标识信息可以标识第一数据请求携带的标识信息。
任一应用可以发出大量的数据请求。同一应用发出的不同数据请求携带的标识信息可以不同,也可以相同。不同应用发出的不同数据请求携带的标识信息可以不同,也可以相同。
在一种可能的实现方式中,所述第一标识信息包括以下任意一项:根据所述应用调用的模块确定的标识信息、根据上下文的标识信息确定的标识信息、根据所述第一数据请求所请求的目标数据在内存中的地址区间确定的标识信息。
作为该实现方式的一个示例,可以根据应用调用的模块确定数据请求的标识信息。以GPU为例,应用调用的GPU模块可以包括GPU中处理坐标变换的专用单元、GPU中负责纹理压缩的专用单元等等,在此不做限定。在该示例中,在同一应用调用同一模块发出两个数据请求时,该两个数据请求的标识信息相同;在同一应用调用两个不同的模块发出两个数据请求时,该两个数据请求的标识信息不同;在两个应用调用同一模块分别发出数据请求时,该两个数据请求的标识信息相同;在两个应用调用两个不同的模块分别发出数据请求时,该两个数据请求的标识信息不同。例如,应用A1调用模块M1发出的第一数据请求与应用A1调用模块M1发出的第二数据请求的标识信息相同,应用A1调用模块M1发出的第一数据请求与应用A1调用模块M2发出的第三数据请求的标识信息不同,应用A1调用模块M1发出的第一数据请求与应用A2调用模块M1发出的第四数据请求的标识信息相同,应用A1调用模块M1发出的第一数据请求与应用A2调用模块M2发出的第五数据请求的标识信息不同。
作为该实现方式的另一个示例,可以根据上下文的标识信息,确定数据请求的标识信息。在该示例中,上下文的标识信息可以指应用的标识信息。在该示例中,同一应用发出的不同数据请求的标识信息相同,不同应用发出的数据请求的标识信息不同。
作为该实现方式的另一个示例,可以根据数据请求所请求的目标数据在内存中的地址区间,确定数据请求的标识信息。不同应用可以访问内存中的同一段地址,因此,不同应用发出的数据请求的标识信息可能相同。同一应用可以访问内存中的不同地址,因此,同一应用发出的不同数据请求的标识信息可能不同。
在该实现方式中,通过根据所述应用调用的模块确定第一标识信息,或者根据上下文的标识信息确定第一标识信息,或者根据所述第一数据请求所请求的目标数据在内存中的地址区间确定第一标识信息,由此能够合理地确定数据请求的标识信息,从而有助于实现更合理的共享缓存资源的分配。
尽管以上实现方式介绍了数据请求的标识信息的确定方式如上,但本领域技术人员能够理解,本公开应不限于此。本领域技术人员可以根据实际应用场景需求和/或个人喜好灵活确定数据请求的标识信息的确定方式。
在一种可能的实现方式中,所述共享缓存包括多个共享缓存通道;所述响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分配预设数量的共享缓存组,包括:响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分别分配所述多个共享缓存通道中的预设数量的共享缓存组。
例如,所述共享缓存包括16个共享缓存通道,分别为共享缓存通道0至共享缓存通道15,那么,可以响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分别分配所述16个共享缓存通道中的预设数量的共享缓存组。
在该实现方式中,通过响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分别分配所述多个共享缓存通道中的预设数量的共享缓存组,由此有利于平衡每个共享缓存通道得到的请求。
作为该实现方式的一个示例,所述预设数量包括第一预设数量和第二预设数量,且所述第一预设数量小于所述第二预设数量;所述响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分别分配所述多个共享缓存通道中的预设数量的共享缓存组,包括:响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,从所述多个共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道,其中,所述第一参照共享缓存通道表示所述第一标识信息对应的参照共享缓存通道(reference cache);向所述第一标识信息分配第一普通共享缓存通道中的所述第一预设数量的共享缓存组,并向所述第一标识信息分配所述第一参照共享缓存通道中的所述第二预设数量的共享缓存组,其中,所述第一普通共享缓存通道表示所述多个共享缓存通道中除所述第一参照共享缓存通道以外的共享缓存通道。
在该示例中,第二预设数量可以为第一预设数量的2倍、1.5倍、3倍等,在此不做限定。第一预设数量可以表示普通共享缓存通道对应的预设数量,第二预设数量可以表示参照共享缓存通道对应的预设数量。第一参照共享缓存通道可以表示第一标识信息对应的参照共享缓存通道。不同标识信息对应的参照共享缓存通道可以不同。任一标识信息对应的参照共享缓存通道的数量可以为一个或两个以上。例如,任一标识信息对应的参照共享缓存通道的数量可以为一个。对于任一标识信息,普通共享缓存通道可以表示除该标识信息对应的参照共享缓存通道以外的共享缓存通道。例如,共享缓存通道的数量为16个,参照共享缓存通道的数量为1个,则普通共享缓存通道的数量为15个。
在一个例子中,第一预设数量为16,第二预设数量为32。在这个例子中,各个第一普通共享缓存通道可以分别为第一标识信息分配16个共享缓存组,第一参照共享缓存通道可以分别为第一标识信息分配32个共享缓存组。
在该示例中,通过响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,从所述多个共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道,向所述第一标识信息分配第一普通共享缓存通道中的所述第一预设数量的共享缓存组,并向所述第一标识信息分配所述第一参照共享缓存通道中的所述第二预设数量的共享缓存组,由此能够基于参照共享缓存通道确定第一标识信息对应的数据请求所需的共享缓存资源的大小情况,从而有利于提高共享缓存的利用率。
在一个示例中,所述响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,从所述多个共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道,包括:响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,且所述多个共享缓存通道中存在未被确定为参照共享缓存通道的共享缓存通道,从所述未被确定为参照共享缓存通道的共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道。
在该示例中,对于不同的标识信息,参照共享缓存通道的选取应尽量均衡。例如,共4个共享缓存通道和3个数据请求的标识信息。其中,4个共享缓存通道分别为共享缓存通道0、共享缓存通道1、共享缓存通道2和共享缓存通道3,3个数据请求的标识信息分别为第一标识信息(ID0)、第二标识信息(ID1)和第三标识信息(ID2)。例如,在针对第一标识信息选取共享缓存通道2作为参照共享缓存通道之后,在针对第二标识信息选取参照共享缓存通道时,可以避开共享缓存通道2,例如选取共享缓存通道3作为参照共享缓存通道。在针对第三标识信息选取参照共享缓存通道时,可以避开共享缓存通道2和共享缓存通道3,例如选择共享缓存通道0或共享缓存通道1作为参照共享缓存通道。
在该示例中,通过响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,且所述多个共享缓存通道中存在未被确定为参照共享缓存通道的共享缓存通道,从所述未被确定为参照共享缓存通道的共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道,由此能够提高共享缓存资源的利用率。
在另一个示例中,所述响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,从所述多个共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道,包括:响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,将所述多个共享缓存通道中剩余容量最大的共享缓存通道,确定为所述第一标识信息对应的第一参照共享缓存通道。
在另一个示例中,所述响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,从所述多个共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道,包括:响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,从所述多个共享缓存通道中,随机选取所述第一标识信息对应的第一参照共享缓存通道。
在另一个示例中,对于不同的标识信息,可以按顺序选取参照共享缓存通道。例如,第一次选取共享缓存通道0作为参照共享缓存通道,第二次选取共享缓存通道1作为参照共享缓存通道,第三次选取共享缓存通道2作为参照共享缓存通道,以此类推。
在一个示例中,所述方法还包括:获取所述第一参照共享缓存通道针对所述第一标识信息的第一命中率,以及所述第一普通共享缓存通道针对所述第一标识信息的第二命中率;根据所述第一命中率和所述第二命中率,调节分配给所述第一标识信息的共享缓存组的数量。
在该示例中,可以以预设频率统计第一命中率和第二命中率,从而可以以预设频率调节分配给各个标识信息的共享缓存资源。
在该示例中,在普通共享缓存通道的数量为多个的情况下,可以将各个普通共享缓存通道针对第一标识信息的命中率的平均值或者中位数,确定为第二命中率。
在该示例中,通过获取所述第一参照共享缓存通道针对所述第一标识信息的第一命中率,以及所述第一普通共享缓存通道针对所述第一标识信息的第二命中率,并根据所述第一命中率和所述第二命中率,调节分配给所述第一标识信息的共享缓存组的数量,由此基于第一参照共享缓存通道和第一普通共享缓存通道的性能差异,动态调节分配给第一标识信息的共享缓存资源,从而能够进一步提高共享缓存资源的利用率,提高不同应用的运行效率。
在一个例子中,所述根据所述第一命中率和所述第二命中率,调节分配给所述第一标识信息的共享缓存组的数量,包括:确定所述第一命中率与所述第二命中率的比值;响应于所述比值大于或等于第一预设阈值,增大所述多个共享缓存通道中分配给所述第一标识信息的共享缓存组的数量;或者,响应于所述比值小于或等于第二预设阈值,减少所述多个共享缓存通道中分配给所述第一标识信息的共享缓存组的数量;其中,所述第一预设阈值大于所述第二预设阈值,且所述第一预设阈值和所述第二预设阈值均大于1。
其中,第一预设阈值和第二预设阈值可以通过寄存器配置。第二预设阈值可以略大于1。
由于第一标识信息在第一参照共享缓存通道中分配得到的共享缓存组的数量大于第一标识信息在第一普通共享缓存通道中分配得到的共享缓存组的数量,因此,若更多的共享缓存资源带来了显著更高的命中率(例如所述比值大于或等于第一预设阈值),则可以认为缓存资源的增加对提高命中率有明显收益,进而可以考虑增加针对第一标识信息的缓存空间。若更多的共享缓存资源并未带来明显的命中率的增加(例如所述比值小于或等于第二预设阈值),则可以认为缓存资源的增加对提高命中率无益,进而可以减少分配给第一标识信息的共享缓存资源。
在上述例子中,在所述比值小于第一预设阈值且大于第二预设阈值的情况下,可以不改变第一标识信息对应的共享缓存组的数量。
另外,在缓存资源的分配变更时,为了维护数据一致性,可以采用额外的缓存维护操作,例如清空缓存操作(flush操作)、清除操作(invalidate)等。
在上述例子中,通过确定所述第一命中率与所述第二命中率的比值,响应于所述比值大于或等于第一预设阈值,增大所述多个共享缓存通道中分配给所述第一标识信息的共享缓存组的数量,或者,响应于所述比值小于或等于第二预设阈值,减少所述多个共享缓存通道中分配给所述第一标识信息的共享缓存组的数量,其中,所述第一预设阈值大于所述第二预设阈值,且所述第一预设阈值和所述第二预设阈值均大于1,由此能够进一步提高共享缓存资源的利用率。
在一种可能的实现方式中,所述方法还包括:获取所述第一数据请求对应的第一请求地址;响应于根据所述第一请求地址确定在本地缓存中发生缓存缺失,获取所述第一标识信息对应的组掩码、组偏移和标志位偏移量;根据所述第一数据请求对应的第二请求地址、所述组掩码、所述组偏移和所述标志位偏移量,确定所述第一数据请求对应的新组位和新标签信息,其中,所述第二请求地址根据所述第一请求地址确定;根据所述第二请求地址中的通道信息和行内偏移地址,以及所述新组位和所述新标签信息,查找目标数据。
在该实现方式中,第一请求地址可以表示第一数据请求携带的请求地址。第一请求地址可以为虚拟地址或物理地址。
作为该实现方式的一个示例,可以从ID-缓存组映射表中,获取第一标识信息对应的组掩码(set mask)、组偏移(set offset)和标志位偏移量(tag shift)。其中,组掩码可以用于确定分配给第一标识信息的共享缓存组的数量。例如,组掩码set mask=0x0f,可以表示分配给第一标识信息的共享缓存组的数量为16。组偏移可以表示分配给第一标识信息的共享缓存组的起始位置。例如,组偏移set offset=0x10,可以表示第一标识信息的共享缓存组的起始位置为共享缓存通道中的第17组。标志位偏移量可以用于确定标签的移位量。
在该实现方式中,新组位表示用于存储第一数据请求所请求的目标数据的组位。新标签信息可以表示目标数据对应的新的标签信息。新标签信息可以存储在目标数据对应的共享缓存组中,以用于后续缓存查找及命中与否的判断。
在该实现方式中,不同标识信息对应的组掩码的大小可以相同,也可以不同。例如,各个标识信息对应的组掩码均为0x0f。又如,数据请求可以携带共享缓存组的请求大小,并可以根据该请求大小确定分配给该数据请求的标识信息的共享缓存组的数量。
在该实现方式中,通过获取所述第一数据请求对应的第一请求地址,响应于根据所述第一请求地址确定在本地缓存中发生缓存缺失,获取所述第一标识信息对应的组掩码、组偏移和标志位偏移量,根据所述第一数据请求对应的第二请求地址、所述组掩码、所述组偏移和所述标志位偏移量,确定所述第一数据请求对应的新组位和新标签信息,其中,所述第二请求地址根据所述第一请求地址确定,根据所述第二请求地址中的通道信息和行内偏移地址,以及所述新组位和所述新标签信息,查找目标数据,由此能够实现基于数据请求的标识信息进行共享缓存组的分配。
作为该实现方式的一个示例,所述方法还包括:对所述第一请求地址进行重映射,得到所述第二请求地址。
在一个例子中,可以通过地址交织和哈希运算,将GPU发出的地址(即数据请求携带的请求地址)打乱,以平均分配给不同的共享缓存通道。
在该示例中,通过对所述第一请求地址进行重映射,得到所述第二请求地址,由此能够平衡每个共享缓存通道得到的请求,提高共享缓存资源的利用率。
作为该实现方式的另一个示例,第一请求地址为虚拟地址;所述方法还包括:通过内存管理单元对第一请求地址进行虚拟地址至物理地址的转换,得到第二请求地址。在该示例中,第二请求地址为物理地址。
作为该实现方式的另一个示例,第一请求地址为物理地址,可以直接将第一请求地址作为第二请求地址。
作为该实现方式的一个示例,所述根据所述第一数据请求对应的第二请求地址、所述组掩码、所述组偏移和所述标志位偏移量,确定所述第一数据请求对应的新组位和新标签信息,包括:从所述第二请求地址中,获取原始组位和原始标签信息;将所述原始组位与所述组掩码进行与运算,得到所述第一数据请求所请求的目标数据在所述第一标识信息对应的多个共享缓存组中的相对位置;根据所述组偏移和所述相对位置,确定所述第一数据请求对应的新组位;根据所述原始标签信息、所述标志位偏移量和所述原始组位中的指定位,确定所述第一数据请求对应的新标签信息。
例如,第二请求地址包括32比特,以16进制表示为0x12345678。其中,高4比特(0x1)为通道信息;第16~27比特(0x234)为原始标签信息;第8~15比特(0x56)为原始组位;低8比特(0x78)为行内偏移地址,用于确定其访问的是缓存行中的第0x78字节的数据。
例如,组掩码set mask=0x0f,组偏移set offset=0x10,标志位偏移量tagshift=0x4。
将原始组位0x56与组掩码0x0f进行与运算,可以得到第一数据请求所请求的目标数据在第一标识信息对应的多个共享缓存组中的相对位置0x06。其中,将原始组位和组掩码分别转换为二进制,得到0000010100000110和0000000011111111。0000010100000110&0000000011111111=0000000000000110,从而确定第一数据请求所请求的目标数据在第一标识信息对应的多个共享缓存组中的相对位置为0x06。
将组偏移和所述相对位置相加,可以得到第一数据请求对应的新组位0x16。即,根据组掩码,选择第二请求地址中的第8~11比特作为新组位的一部分,并增加0x10的偏移。
根据原始标签信息0x234、标志位偏移量0x4以及原始组位中的0x5,可以得到新标签信息0x2345。
从而,可以得到新的请求地址0x123451678。在这个例子中,新的请求地址中的第8~11比特根据第二请求地址确定,且共有16个共享缓存组分配给第一标识信息。
在该示例中,通过从所述第二请求地址中,获取原始组位和原始标签信息,将所述原始组位与所述组掩码进行与运算,得到所述第一数据请求所请求的目标数据在所述第一标识信息对应的多个共享缓存组中的相对位置,根据所述组偏移和所述相对位置,确定所述第一数据请求对应的新组位,并根据所述原始标签信息、所述标志位偏移量和所述原始组位中的指定位,确定所述第一数据请求对应的新标签信息,由此能够实现基于数据请求的标识信息进行共享缓存组的分配,且在确定新标签信息时,保留了原始组位中的指定位,从而能够保持原始地址的完整。
图3示出本公开实施例提供的缓存资源分配方法中针对数据请求的标识信息按组分配的示意图。在图3中,请求ID表示数据请求携带的标识信息,例如第一数据请求携带的第一标识信息。可以从ID-缓存组映射表中,获取第一标识信息对应的组掩码、组偏移和标志位偏移量。在图3所示的ID-缓存组映射表中,包括ID0~IDN与组掩码、组偏移、标志位偏移量之间的映射关系。可以从请求地址(例如第二请求地址)中获取原始标签信息、原始组位和行内偏移地址。可以将原始组位与组掩码进行按位与运算,得到第一数据请求所请求的目标数据在第一标识信息对应的多个共享缓存组中的相对位置。可以将组偏移与所述相对位置相加,得到新组位。可以通过移位器对原始标签信息、标志位偏移量、原始组位中的指定位进行处理,得到新标签信息。可以根据通道信息、行内偏移地址、新组位和新标签信息,进行缓存查找。
需要注意的是,以上的组掩码与组偏移的定义仅为一个例子,而非唯一的定义方式。例如,还可以通过新组位=原始组位+组偏移&组掩码等方式,实现同样的按组分配的功能。
作为该实现方式的一个示例,所述根据所述第二请求地址中的通道信息和行内偏移地址,以及所述新组位和所述新标签信息,查找目标数据,包括:响应于根据所述通道信息、所述新组位、所述新标签信息和所述行内偏移地址,查找不到目标数据,从内存或外存中获取所述目标数据,将所述目标数据写入所述新组位对应的共享缓存组中,并向所述第一数据请求返回所述目标数据。
在该示例中,在所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求的情况下,在共享缓存通道中查找不到目标数据。此时,可以从内存或外存中获取所述目标数据,将所述目标数据写入所述新组位对应的共享缓存组中,并向所述第一数据请求返回所述目标数据。
在该示例中,通过响应于根据所述通道信息、所述新组位、所述新标签信息和所述行内偏移地址,查找不到目标数据,从内存或外存中获取所述目标数据,将所述目标数据写入所述新组位对应的共享缓存组中,并向所述第一数据请求返回所述目标数据,由此能够实现将目标数据写入第一标识信息对应的共享缓存组中。
图4示出本公开实施例提供的GPU的缓存结构的一示意图。其中,与图1重复的部分不再赘述。在图4中,可以通过地址交织和哈希运算,将GPU发出的地址(即数据请求携带的请求地址)打乱,以平均分配给不同的共享缓存通道。另外,针对数据请求携带的标识信息,可以从各个共享缓存通道中,选取所述标识信息对应的参照共享缓存通道。
图5示出本公开实施例提供的缓存查找方法的一示意图。如图5所示,可以响应于数据请求,进行本地缓存查找。若在本地缓存中命中(即,在本地缓存中查找到数据请求所请求的目标数据),则从本地缓存中取出目标数据并返回目标数据给数据请求。若在本地缓存中未命中(即,在本地缓存中发生缓存缺失),则可以通过地址交织和哈希运算,将数据请求携带的第一请求地址转换为第二请求地址。可以根据第二请求地址中的通道信息,确定目标数据对应的共享缓存通道,并可以将数据请求发送至对应的共享缓存通道。可以根据数据请求携带的标识信息,从ID-缓存组映射表中,获取对应的组掩码、组偏移和标志位偏移量。可以从第二请求地址中获取原始标签信息、原始组位和行内偏移地址。可以将原始组位与组掩码进行按位与运算,得到数据请求所请求的目标数据在所述标识信息对应的多个共享缓存组中的相对位置。可以将组偏移与所述相对位置相加,得到新组位。可以通过对原始标签信息、标志位偏移量、原始组位中的指定位进行处理,得到新标签信息。可以根据通道信息、行内偏移地址、新组位和新标签信息,在目标数据对应的共享缓存通道进行共享缓存查找。若在共享缓存中命中,则从共享缓存中取出目标数据并返回目标数据给数据请求。若在共享缓存中未命中(即缺失),则可以将数据请求发送至对应的DRAM存储体,从该DRAM存储体中取出目标数据并返回目标数据给数据请求,并可以根据缓存请求控制信号判断是否将目标数据填入缓存。
下面通过一个具体的应用场景说明本公开实施例提供的缓存资源分配方法。在该应用场景中,可以响应于来自于任一应用的第一数据请求,获取所述第一数据请求携带的第一标识信息。其中,所述第一标识信息包括以下任意一项:根据所述应用调用的模块确定的标识信息、根据上下文的标识信息确定的标识信息、根据所述第一数据请求所请求的目标数据在内存中的地址区间确定的标识信息。可以响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,且所述多个共享缓存通道中存在未被确定为参照共享缓存通道的共享缓存通道,从所述未被确定为参照共享缓存通道的共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道,其中,所述第一参照共享缓存通道表示所述第一标识信息对应的参照共享缓存通道,向所述第一标识信息分配第一普通共享缓存通道中的所述第一预设数量的共享缓存组,并向所述第一标识信息分配所述第一参照共享缓存通道中的所述第二预设数量的共享缓存组,其中,所述第一普通共享缓存通道表示所述多个共享缓存通道中除所述第一参照共享缓存通道以外的共享缓存通道。
可以响应于根据所述第一请求地址确定在本地缓存中发生缓存缺失,获取所述第一标识信息对应的组掩码、组偏移和标志位偏移量。可以通过地址交织和哈希运算,对所述第一请求地址进行重映射,得到第二请求地址。可以从所述第二请求地址中,获取原始组位和原始标签信息;将所述原始组位与所述组掩码进行与运算,得到所述第一数据请求所请求的目标数据在所述第一标识信息对应的多个共享缓存组中的相对位置;根据所述组偏移和所述相对位置,确定所述第一数据请求对应的新组位;根据所述原始标签信息、所述标志位偏移量和所述原始组位中的指定位,确定所述第一数据请求对应的新标签信息。可以根据所述第二请求地址中的通道信息和行内偏移地址,以及所述新组位和所述新标签信息,进行缓存查找。
可以以预设频率调节调节分配给第一标识信息的共享缓存资源。例如,可以获取所述第一参照共享缓存通道针对所述第一标识信息的第一命中率,以及所述第一普通共享缓存通道针对所述第一标识信息的第二命中率;确定所述第一命中率与所述第二命中率的比值;响应于所述比值大于或等于第一预设阈值,增大所述多个共享缓存通道中分配给所述第一标识信息的共享缓存组的数量;或者,响应于所述比值小于或等于第二预设阈值,减少所述多个共享缓存通道中分配给所述第一标识信息的共享缓存组的数量;其中,所述第一预设阈值大于所述第二预设阈值,且所述第一预设阈值和所述第二预设阈值均大于1。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了缓存资源分配装置、电子设备、计算机可读存储介质、计算机程序产品,上述均可用来实现本公开提供的任一种缓存资源分配方法,相应技术方案和技术效果可参见方法部分的相应记载,不再赘述。
图6示出本公开实施例提供的缓存资源分配装置的框图。在本公开实施例中,处理器系统包括至少两级缓存,所述至少两级缓存中的最高级为共享缓存,所述共享缓存包括多个共享缓存组。如图6所示,所述缓存资源分配装置包括:
第一获取模块61,用于响应于来自于任一应用的第一数据请求,获取所述第一数据请求携带的第一标识信息;
分配模块62,用于响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分配预设数量的共享缓存组。
在一种可能的实现方式中,所述共享缓存包括多个共享缓存通道;
所述分配模块62用于:
响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分别分配所述多个共享缓存通道中的预设数量的共享缓存组。
在一种可能的实现方式中,所述预设数量包括第一预设数量和第二预设数量,且所述第一预设数量小于所述第二预设数量;
所述分配模块62用于:
响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,从所述多个共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道,其中,所述第一参照共享缓存通道表示所述第一标识信息对应的参照共享缓存通道;
向所述第一标识信息分配第一普通共享缓存通道中的所述第一预设数量的共享缓存组,并向所述第一标识信息分配所述第一参照共享缓存通道中的所述第二预设数量的共享缓存组,其中,所述第一普通共享缓存通道表示所述多个共享缓存通道中除所述第一参照共享缓存通道以外的共享缓存通道。
在一种可能的实现方式中,所述分配模块62用于:
响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,且所述多个共享缓存通道中存在未被确定为参照共享缓存通道的共享缓存通道,从所述未被确定为参照共享缓存通道的共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道。
在一种可能的实现方式中,所述装置还包括:
第二获取模块,用于获取所述第一参照共享缓存通道针对所述第一标识信息的第一命中率,以及所述第一普通共享缓存通道针对所述第一标识信息的第二命中率;
调节模块,用于根据所述第一命中率和所述第二命中率,调节分配给所述第一标识信息的共享缓存组的数量。
在一种可能的实现方式中,所述调节模块用于:
确定所述第一命中率与所述第二命中率的比值;
响应于所述比值大于或等于第一预设阈值,增大所述多个共享缓存通道中分配给所述第一标识信息的共享缓存组的数量;或者,响应于所述比值小于或等于第二预设阈值,减少所述多个共享缓存通道中分配给所述第一标识信息的共享缓存组的数量;其中,所述第一预设阈值大于所述第二预设阈值,且所述第一预设阈值和所述第二预设阈值均大于1。
在一种可能的实现方式中,所述装置还包括:
第三获取模块,用于获取所述第一数据请求对应的第一请求地址;
第四获取模块,用于响应于根据所述第一请求地址确定在本地缓存中发生缓存缺失,获取所述第一标识信息对应的组掩码、组偏移和标志位偏移量;
确定模块,用于根据所述第一数据请求对应的第二请求地址、所述组掩码、所述组偏移和所述标志位偏移量,确定所述第一数据请求对应的新组位和新标签信息,其中,所述第二请求地址根据所述第一请求地址确定;
查找模块,用于根据所述第二请求地址中的通道信息和行内偏移地址,以及所述新组位和所述新标签信息,查找目标数据。
在一种可能的实现方式中,所述装置还包括:
重映射模块,用于对所述第一请求地址进行重映射,得到所述第二请求地址。
在一种可能的实现方式中,所述确定模块用于:
从所述第二请求地址中,获取原始组位和原始标签信息;
将所述原始组位与所述组掩码进行与运算,得到所述第一数据请求所请求的目标数据在所述第一标识信息对应的多个共享缓存组中的相对位置;
根据所述组偏移和所述相对位置,确定所述第一数据请求对应的新组位;
根据所述原始标签信息、所述标志位偏移量和所述原始组位中的指定位,确定所述第一数据请求对应的新标签信息。
在一种可能的实现方式中,所述查找模块用于:
响应于根据所述通道信息、所述新组位、所述新标签信息和所述行内偏移地址,查找不到目标数据,从内存或外存中获取所述目标数据,将所述目标数据写入所述新组位对应的共享缓存组中,并向所述第一数据请求返回所述目标数据。
在一种可能的实现方式中,所述第一标识信息包括以下任意一项:
根据所述应用调用的模块确定的标识信息、根据上下文的标识信息确定的标识信息、根据所述第一数据请求所请求的目标数据在内存中的地址区间确定的标识信息。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现和技术效果可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。其中,所述计算机可读存储介质可以是非易失性计算机可读存储介质,或者可以是易失性计算机可读存储介质。
本公开实施例还提出一种计算机程序,包括计算机可读代码,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述方法。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述方法。
本公开实施例还提供一种电子设备,包括:一个或多个处理器;用于存储可执行指令的存储器;其中,所述一个或多个处理器被配置为调用所述存储器存储的可执行指令,以执行上述方法。
电子设备可以被提供为终端、服务器或其它形态的设备。
图7示出本公开实施例提供的一电子设备1900的框图。例如,电子设备1900可以被提供为一终端或服务器。参照图7,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入/输出接口1958(I/O接口)。电子设备1900可以操作基于存储在存储器1932的操作系统,例如微软服务器操作系统(Windows ServerTM),苹果公司推出的基于图形用户界面操作系统(MacOS XTM),多用户多进程的计算机操作系统(UnixTM),自由和开放原代码的类Unix操作系统(LinuxTM),开放原代码的类Unix操作系统(FreeBSDTM)或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
若本公开实施例的技术方案涉及个人信息,应用本公开实施例的技术方案的产品在处理个人信息前,已明确告知个人信息处理规则,并取得个人自主同意。若本公开实施例的技术方案涉及敏感个人信息,应用本公开实施例的技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标识告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标识/信息告知个人信息处理规则的情况下,通过弹窗信息或请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式以及处理的个人信息种类等信息。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (14)
1.一种缓存资源分配方法,其特征在于,处理器系统包括至少两级缓存,所述至少两级缓存中的最高级为共享缓存,所述共享缓存包括多个共享缓存组,所述方法包括:
响应于来自于任一应用的第一数据请求,获取所述第一数据请求携带的第一标识信息;
获取所述第一数据请求对应的第一请求地址;
响应于根据所述第一请求地址确定在本地缓存中发生缓存缺失,获取所述第一标识信息对应的组掩码、组偏移和标志位偏移量;其中,所述组掩码用于确定分配给所述第一标识信息的共享缓存组的数量;
根据所述第一数据请求对应的第二请求地址、所述组掩码、所述组偏移和所述标志位偏移量,确定所述第一数据请求对应的新组位和新标签信息,其中,所述第二请求地址根据所述第一请求地址确定;
根据所述第二请求地址中的通道信息和行内偏移地址,以及所述新组位和所述新标签信息,查找目标数据。
2.根据权利要求1所述的方法,其特征在于,在所述获取所述第一数据请求携带的第一标识信息之后,所述方法还包括:
响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分配预设数量的共享缓存组。
3.根据权利要求1所述的方法,其特征在于,所述共享缓存包括多个共享缓存通道;
所述响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分配预设数量的共享缓存组,包括:
响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分别分配所述多个共享缓存通道中的预设数量的共享缓存组。
4.根据权利要求3所述的方法,其特征在于,所述预设数量包括第一预设数量和第二预设数量,且所述第一预设数量小于所述第二预设数量;
所述响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,向所述第一标识信息分别分配所述多个共享缓存通道中的预设数量的共享缓存组,包括:
响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,从所述多个共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道,其中,所述第一参照共享缓存通道表示所述第一标识信息对应的参照共享缓存通道;
向所述第一标识信息分配第一普通共享缓存通道中的所述第一预设数量的共享缓存组,并向所述第一标识信息分配所述第一参照共享缓存通道中的所述第二预设数量的共享缓存组,其中,所述第一普通共享缓存通道表示所述多个共享缓存通道中除所述第一参照共享缓存通道以外的共享缓存通道。
5.根据权利要求4所述的方法,其特征在于,所述响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,从所述多个共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道,包括:
响应于所述第一数据请求为首次接收到的所述第一标识信息对应的数据请求,且所述多个共享缓存通道中存在未被确定为参照共享缓存通道的共享缓存通道,从所述未被确定为参照共享缓存通道的共享缓存通道中,确定所述第一标识信息对应的第一参照共享缓存通道。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
获取所述第一参照共享缓存通道针对所述第一标识信息的第一命中率,以及所述第一普通共享缓存通道针对所述第一标识信息的第二命中率;
根据所述第一命中率和所述第二命中率,调节分配给所述第一标识信息的共享缓存组的数量。
7.根据权利要求6所述的方法,其特征在于,所述根据所述第一命中率和所述第二命中率,调节分配给所述第一标识信息的共享缓存组的数量,包括:
确定所述第一命中率与所述第二命中率的比值;
响应于所述比值大于或等于第一预设阈值,增大所述多个共享缓存通道中分配给所述第一标识信息的共享缓存组的数量;或者,响应于所述比值小于或等于第二预设阈值,减少所述多个共享缓存通道中分配给所述第一标识信息的共享缓存组的数量;其中,所述第一预设阈值大于所述第二预设阈值,且所述第一预设阈值和所述第二预设阈值均大于1。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述第一请求地址进行重映射,得到所述第二请求地址。
9.根据权利要求1所述的方法,其特征在于,所述根据所述第一数据请求对应的第二请求地址、所述组掩码、所述组偏移和所述标志位偏移量,确定所述第一数据请求对应的新组位和新标签信息,包括:
从所述第二请求地址中,获取原始组位和原始标签信息;
将所述原始组位与所述组掩码进行与运算,得到所述第一数据请求所请求的目标数据在所述第一标识信息对应的多个共享缓存组中的相对位置;
根据所述组偏移和所述相对位置,确定所述第一数据请求对应的新组位;
根据所述原始标签信息、所述标志位偏移量和所述原始组位中的指定位,确定所述第一数据请求对应的新标签信息。
10.根据权利要求1所述的方法,其特征在于,所述根据所述第二请求地址中的通道信息和行内偏移地址,以及所述新组位和所述新标签信息,查找目标数据,包括:
响应于根据所述通道信息、所述新组位、所述新标签信息和所述行内偏移地址,查找不到目标数据,从内存或外存中获取所述目标数据,将所述目标数据写入所述新组位对应的共享缓存组中,并向所述第一数据请求返回所述目标数据。
11.根据权利要求1至10中任意一项所述的方法,其特征在于,所述第一标识信息包括以下任意一项:
根据所述应用调用的模块确定的标识信息、根据上下文的标识信息确定的标识信息、根据所述第一数据请求所请求的目标数据在内存中的地址区间确定的标识信息。
12.一种缓存资源分配装置,其特征在于,处理器系统包括至少两级缓存,所述至少两级缓存中的最高级为共享缓存,所述共享缓存包括多个共享缓存组,所述装置包括:
第一获取模块,用于响应于来自于任一应用的第一数据请求,获取所述第一数据请求携带的第一标识信息;
第三获取模块,用于获取所述第一数据请求对应的第一请求地址;
第四获取模块,用于响应于根据所述第一请求地址确定在本地缓存中发生缓存缺失,获取所述第一标识信息对应的组掩码、组偏移和标志位偏移量;其中,所述组掩码用于确定分配给所述第一标识信息的共享缓存组的数量;
确定模块,用于根据所述第一数据请求对应的第二请求地址、所述组掩码、所述组偏移和所述标志位偏移量,确定所述第一数据请求对应的新组位和新标签信息,其中,所述第二请求地址根据所述第一请求地址确定;
查找模块,用于根据所述第二请求地址中的通道信息和行内偏移地址,以及所述新组位和所述新标签信息,查找目标数据。
13.一种电子设备,其特征在于,包括:
一个或多个处理器;
用于存储可执行指令的存储器;
其中,所述一个或多个处理器被配置为调用所述存储器存储的可执行指令,以执行权利要求1至11中任意一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至11中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311076545.6A CN117093371B (zh) | 2023-02-23 | 2023-02-23 | 缓存资源分配方法、装置、电子设备和存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311076545.6A CN117093371B (zh) | 2023-02-23 | 2023-02-23 | 缓存资源分配方法、装置、电子设备和存储介质 |
CN202310153348.3A CN116010109B (zh) | 2023-02-23 | 2023-02-23 | 缓存资源分配方法、装置、电子设备和存储介质 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310153348.3A Division CN116010109B (zh) | 2023-02-23 | 2023-02-23 | 缓存资源分配方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117093371A true CN117093371A (zh) | 2023-11-21 |
CN117093371B CN117093371B (zh) | 2024-05-17 |
Family
ID=86037526
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310153348.3A Active CN116010109B (zh) | 2023-02-23 | 2023-02-23 | 缓存资源分配方法、装置、电子设备和存储介质 |
CN202311076545.6A Active CN117093371B (zh) | 2023-02-23 | 2023-02-23 | 缓存资源分配方法、装置、电子设备和存储介质 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310153348.3A Active CN116010109B (zh) | 2023-02-23 | 2023-02-23 | 缓存资源分配方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN116010109B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116010109B (zh) * | 2023-02-23 | 2023-07-04 | 摩尔线程智能科技(北京)有限责任公司 | 缓存资源分配方法、装置、电子设备和存储介质 |
CN116521095B (zh) * | 2023-07-03 | 2023-09-08 | 摩尔线程智能科技(北京)有限责任公司 | 响应输出系统、方法、电子设备、存储介质及程序产品 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102270180A (zh) * | 2011-08-09 | 2011-12-07 | 清华大学 | 一种多核处理器高速缓存及其管理方法 |
EP3151125A1 (en) * | 2015-09-29 | 2017-04-05 | NXP USA, Inc. | Shared cache protocol for parallel search and replacement |
CN106909515A (zh) * | 2017-02-11 | 2017-06-30 | 郑州云海信息技术有限公司 | 面向混合主存的多核共享末级缓存管理方法及装置 |
CN108984428A (zh) * | 2017-06-01 | 2018-12-11 | 迈络思科技有限公司 | 多核片上系统中的缓存策略 |
CN109857681A (zh) * | 2017-11-30 | 2019-06-07 | 华为技术有限公司 | 高速缓存cache地址映射方法以及相关设备 |
US20200310969A1 (en) * | 2019-04-01 | 2020-10-01 | Arm Limited | Replacement of cache entries in a set-associative cache |
CN112148665A (zh) * | 2019-06-28 | 2020-12-29 | 深圳市中兴微电子技术有限公司 | 缓存的分配方法及装置 |
US10949352B1 (en) * | 2020-03-05 | 2021-03-16 | Nxp Usa, Inc. | Data processing system having a shared cache |
CN115052042A (zh) * | 2022-06-07 | 2022-09-13 | 成都北中网芯科技有限公司 | 一种高性能多通道共享缓存的实现方法 |
CN115061972A (zh) * | 2022-07-05 | 2022-09-16 | 摩尔线程智能科技(北京)有限责任公司 | 处理器、数据读写方法、装置和存储介质 |
CN115168247A (zh) * | 2022-09-02 | 2022-10-11 | 北京登临科技有限公司 | 用于并行处理器中动态共享存储空间的方法及相应处理器 |
US11481332B1 (en) * | 2021-05-07 | 2022-10-25 | Ventana Micro Systems Inc. | Write combining using physical address proxies stored in a write combine buffer |
US20220391208A1 (en) * | 2021-06-07 | 2022-12-08 | International Business Machines Corporation | Sharing instruction cache lines between mulitple threads |
CN116010109A (zh) * | 2023-02-23 | 2023-04-25 | 摩尔线程智能科技(北京)有限责任公司 | 缓存资源分配方法、装置、电子设备和存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8401994B2 (en) * | 2009-09-18 | 2013-03-19 | Oracle International Corporation | Distributed consistent grid of in-memory database caches |
US8935483B2 (en) * | 2009-04-27 | 2015-01-13 | Lsi Corporation | Concurrent, coherent cache access for multiple threads in a multi-core, multi-thread network processor |
US9021179B2 (en) * | 2011-06-10 | 2015-04-28 | International Business Machines Corporation | Store storage class memory information command |
CN114217861A (zh) * | 2021-12-06 | 2022-03-22 | 海光信息技术股份有限公司 | 数据处理方法及装置、电子装置和存储介质 |
CN114928652B (zh) * | 2022-04-29 | 2023-06-20 | 高德软件有限公司 | 地图数据传输方法、装置、电子设备、存储介质和程序 |
CN115098169B (zh) * | 2022-06-24 | 2024-03-05 | 海光信息技术股份有限公司 | 基于容量共享的调取指令的方法及装置 |
CN115357196A (zh) * | 2022-08-31 | 2022-11-18 | 鹏城实验室 | 动态可扩展的组相联高速缓存方法、装置、设备及介质 |
-
2023
- 2023-02-23 CN CN202310153348.3A patent/CN116010109B/zh active Active
- 2023-02-23 CN CN202311076545.6A patent/CN117093371B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102270180A (zh) * | 2011-08-09 | 2011-12-07 | 清华大学 | 一种多核处理器高速缓存及其管理方法 |
EP3151125A1 (en) * | 2015-09-29 | 2017-04-05 | NXP USA, Inc. | Shared cache protocol for parallel search and replacement |
CN106909515A (zh) * | 2017-02-11 | 2017-06-30 | 郑州云海信息技术有限公司 | 面向混合主存的多核共享末级缓存管理方法及装置 |
CN108984428A (zh) * | 2017-06-01 | 2018-12-11 | 迈络思科技有限公司 | 多核片上系统中的缓存策略 |
CN109857681A (zh) * | 2017-11-30 | 2019-06-07 | 华为技术有限公司 | 高速缓存cache地址映射方法以及相关设备 |
US20200310969A1 (en) * | 2019-04-01 | 2020-10-01 | Arm Limited | Replacement of cache entries in a set-associative cache |
CN112148665A (zh) * | 2019-06-28 | 2020-12-29 | 深圳市中兴微电子技术有限公司 | 缓存的分配方法及装置 |
US10949352B1 (en) * | 2020-03-05 | 2021-03-16 | Nxp Usa, Inc. | Data processing system having a shared cache |
US11481332B1 (en) * | 2021-05-07 | 2022-10-25 | Ventana Micro Systems Inc. | Write combining using physical address proxies stored in a write combine buffer |
US20220391208A1 (en) * | 2021-06-07 | 2022-12-08 | International Business Machines Corporation | Sharing instruction cache lines between mulitple threads |
CN115052042A (zh) * | 2022-06-07 | 2022-09-13 | 成都北中网芯科技有限公司 | 一种高性能多通道共享缓存的实现方法 |
CN115061972A (zh) * | 2022-07-05 | 2022-09-16 | 摩尔线程智能科技(北京)有限责任公司 | 处理器、数据读写方法、装置和存储介质 |
CN115168247A (zh) * | 2022-09-02 | 2022-10-11 | 北京登临科技有限公司 | 用于并行处理器中动态共享存储空间的方法及相应处理器 |
CN116010109A (zh) * | 2023-02-23 | 2023-04-25 | 摩尔线程智能科技(北京)有限责任公司 | 缓存资源分配方法、装置、电子设备和存储介质 |
Non-Patent Citations (7)
Title |
---|
JONGWOOK CHUNG等: "Enforcing Last-Level Cache Partitioning through Memory Virtual Channels", 《2019 28TH INTERNATIONAL CONFERENCE ON PARALLEL ARCHITECTURES AND COMPILATION TECHNIQUES (PACT)》, 7 November 2019 (2019-11-07), pages 97 - 109 * |
VINEETH MEKKAT等: "Managing shared last-level cache in a heterogeneous multicore processor", 《PROCEEDINGS OF THE 22ND INTERNATIONAL CONFERENCE ON PARALLEL ARCHITECTURES AND COMPILATION TECHNIQUES》, 3 October 2013 (2013-10-03), pages 225 - 234 * |
张剑飞;: "多处理器共享缓存设计与实现", 计算机与数字工程, no. 09, 20 September 2008 (2008-09-20), pages 148 - 150 * |
李功明: "片上多处理器体系结构中Cache一致性模型研究", 《中国博士学位论文全文数据库 信息科技辑》, no. 10, 15 October 2013 (2013-10-15), pages 137 - 15 * |
李松林: "基于缓存技术的互联网内容平台研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 2, 15 February 2018 (2018-02-15), pages 139 - 229 * |
郭人通: "末级缓存的资源分配与结构设计", 《中国博士学位论文全文数据库 (信息科技辑)》, no. 3, 15 March 2019 (2019-03-15), pages 137 - 10 * |
郭人通: "末级缓存的资源分配与结构设计", 《中国博士学位论文全文数据库 信息科技辑》, no. 3, 15 March 2019 (2019-03-15), pages 137 - 10 * |
Also Published As
Publication number | Publication date |
---|---|
CN116010109B (zh) | 2023-07-04 |
CN116010109A (zh) | 2023-04-25 |
CN117093371B (zh) | 2024-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117093371B (zh) | 缓存资源分配方法、装置、电子设备和存储介质 | |
US10572378B2 (en) | Dynamic memory expansion by data compression | |
US10152501B2 (en) | Rollover strategies in a n-bit dictionary compressed column store | |
US10769073B2 (en) | Bandwidth-based selective memory channel connectivity on a system on chip | |
US20170364442A1 (en) | Method for accessing data visitor directory in multi-core system and device | |
CN107003940B (zh) | 用于在非统一存储器架构中提供改进的延迟的系统和方法 | |
US8707006B2 (en) | Cache index coloring for virtual-address dynamic allocators | |
JP2022539285A (ja) | キャッシュの割当方法と装置、記憶媒体、電子装置 | |
US11567661B2 (en) | Virtual memory management method and processor | |
US8935508B1 (en) | Implementing pseudo content access memory | |
CN107111560B (zh) | 用于在非统一存储器架构中提供改进的延迟的系统和方法 | |
US20200167286A1 (en) | Increasing the lookahead amount for prefetching | |
TWI777268B (zh) | 虛擬記憶管理方法及處理器 | |
CN111026680B (zh) | 数据处理系统、电路及方法 | |
CN116107926B (zh) | 缓存替换策略的管理方法、装置、设备、介质和程序产品 | |
CN113805845A (zh) | 随机数序列生成方法和随机数引擎 | |
CN116166575B (zh) | 访存段长度的配置方法、装置、设备、介质和程序产品 | |
CN112839071A (zh) | 训练系统、训练数据访问方法及装置、电子设备、介质 | |
CN117539636A (zh) | 总线模块的内存管理方法、装置、电子设备和存储介质 | |
CN117742957A (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 |