CN117667776A - 存储器带宽分配方法及设备 - Google Patents
存储器带宽分配方法及设备 Download PDFInfo
- Publication number
- CN117667776A CN117667776A CN202211008980.0A CN202211008980A CN117667776A CN 117667776 A CN117667776 A CN 117667776A CN 202211008980 A CN202211008980 A CN 202211008980A CN 117667776 A CN117667776 A CN 117667776A
- Authority
- CN
- China
- Prior art keywords
- level cache
- access request
- last level
- memory bandwidth
- last
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 245
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000005192 partition Methods 0.000 claims description 51
- 230000004044 response Effects 0.000 claims description 40
- 238000013507 mapping Methods 0.000 claims description 18
- 238000003491 array Methods 0.000 claims description 14
- 238000010801 machine learning Methods 0.000 claims description 12
- 230000015556 catabolic process Effects 0.000 abstract description 3
- 238000006731 degradation reaction Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004793 poor memory Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/16—General purpose computing application
- G06F2212/163—Server or database system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开一种存储器带宽分配方法及设备。该存储器带宽分配方法包括:接收对服务器中的多个处理器核共享的末级缓存的访问请求,访问请求从具有私有缓存的处理器核发送,私有缓存保存存储器中的频繁访问的数据的副本;确定访问请求是末级缓存命中还是末级缓存未命中;基于所确定的结果来控制存储器带宽控制器,存储器带宽控制器执行存储器带宽节流,以控制私有缓存和末级缓存之间的请求速率,访问请求的末级缓存命中导致禁用由存储器带宽控制器启动的存储器带宽节流,访问请求的末级缓存未命中导致启用由存储器带宽控制器启动的存储器带宽节流。本公开实现了高效的存储器带宽使用控制和分配,减少了由存储器带宽使用限制引起的性能下降。
Description
技术领域
本公开一般涉及计算系统中的多核处理器架构,更具体地说,涉及多核处理器架构中的存储器带宽分配方法及设备。
背景技术
在应用云计算时,多个工作负载可位于同一台服务器上,以提高当代数据中心中的处理器的利用率。在多核处理器架构中,包括末级缓存(last level cache,LLC)和存储器带宽的多个系统资源可以由处理器的各个核共享。末级缓存是指在访问存储器之前被调用的最高级别的共享缓存,用于减少从存储器访问数据的平均成本(例如处理时间)。为了优化数据中心中的服务器的性能并满足具有不同优先级的工作负载,需要准确高效地监控并分配系统中的末级缓存和存储器带宽。
发明内容
本公开实施例提供一种计算机实现的方法,该方法用于分配服务器中的多个处理器核的存储器带宽。该方法包括:接收对服务器中的多个处理器核共享的末级缓存(LLC)的访问请求,该访问请求由具有私有缓存的核发送,所述私有缓存保存存储器中频繁访问的数据的副本;确定访问请求是末级缓存命中还是末级缓存未命中;以及基于所确定的结果来控制存储器带宽控制器。存储器带宽控制器执行存储器带宽节流,以控制私有缓存和末级缓存之间的请求速率。访问请求的末级缓存命中导致禁用由存储器带宽控制器启动的存储器带宽节流,访问请求的末级缓存未命中导致启用由存储器带宽控制器启动的存储器带宽节流。
本公开实施例提供一种设备。该设备包括至少一个处理器,所述处理器包括:多个处理器核、由多个处理器核共享的末级缓存、缓存访问预测器和存储器带宽控制器。多个处理器核包括相应的私有缓存,末级缓存用于接收从多个处理器核中的一个处理器核发送的对末级缓存的访问请求,私有缓存保存该至少一个处理器外部的存储器的频繁访问的数据的副本。缓存访问预测器用于确定访问请求是末级缓存命中还是末级缓存未命中。存储器带宽控制器用于执行存储器带宽节流,以控制私有缓存和末级缓存之间的请求速率。存储器带宽控制器进一步用于响应于确定访问请求为末级缓存命中,禁用由存储器带宽控制器启动的存储器带宽节流,并且,响应于确定访问请求为末级缓存未命中,启用由存储器带宽控制器启动的存储器带宽节流。
本公开实施例提供了一种非暂时性的计算机可读存储介质。该非暂时性的计算机可读存储介质存储可由设备的一个或多个处理器执行的一组指令,以使设备执行上述的存储器带宽分配方法。
附图说明
以下详细描述和附图说明了本公开的实施例以及各个方面。图中所示的各种特征并不是按比例绘制的。
图1示出了根据本公开的一些实施例的示例性的计算系统的示意图;
图2示出了根据本公开的一些实施例的存储器带宽分配过程的示意图;
图3示出了根据本公开的一些实施例的示例性的用于分配存储器带宽的存储器带宽分配方法的流程图;
图4示出了根据本公开的一些实施例的一示例性的缓存访问预测器的示意图;
图5示出了根据本公开的一些实施例的另一示例性的缓存访问预测器的示意图;
图6示出了根据本公开的一些实施例的另一示例性的缓存访问预测器的示意图;
图7示出了根据本公开的一些实施例的另一示例性的缓存访问预测器的示意图。
具体实施方式
下文将详细介绍本公开的实施例,其示例如附图所示。以下描述涉及的附图中,除非另有说明,否则在不同的附图中相同数字表示相同或类似的元件。以下示例性实施例的描述中阐述的实现并不代表与本公开一致的所有实现。相反,它们仅仅是与所附权利要求中叙述的与本公开相关的方面一致的设备和方法的示例。下文将详细描述本公开的特定方面。如果本文提供的术语和定义与通过引用合并的术语和/或定义冲突,则以本文提供的术语和定义为准。
本文描述的实施例解决了在现代多核处理器架构中由于私有缓存和共享缓存之间的节流(throttling)而导致的存储器带宽分配效率差和性能下降的问题。现有的存储器带宽分配技术通常提供针对末级缓存(LLC)的节流请求,以控制存储器带宽使用。然而,在末级缓存命中的情况下,限制LLC访问在控制存储器带宽使用方面并不有效。为了解决这个问题,提出了一种缓存访问预测,通过基于预测的缓存访问结果选择性地限制LLC访问来改进存储器带宽分配过程。缓存访问预测可以通过不同的方法实现,包括各种基于布隆过滤器(bloom filter)的预测、基于机器学习的预测或查找查询(look-up queries)。
图1示出了根据本公开的一些实施例的示例性的计算系统100的示意图。如图1所示,计算系统100包括多核处理器110和存储信息的存储器120(例如,主存储器)。处理器110包括多个核C0-Cn、分别与多个核C0-Cn相关联的多个存储器带宽控制器112、分别与多个核C0-Cn相关联的多个缓存访问预测器114、末级缓存(LLC)116和集成在处理器110中并用于与存储器120通信的存储器控制器118。在一些实施例中,上述提到的处理器110中的每个组件通过通信互连总线互相通信。
在计算系统100中,使用缓存来减少性能损失。更具体地说,处理器110使用被称为硬件缓存的内部存储器来保存外部存储器120的频繁访问的数据的副本,以便比从存储器120提取这些数据更快的速度访问这些数据。包含硬件缓存的处理器110(或其他数据元件)确定要在硬件缓存中保留哪些数据,并且还确定要删除哪些保留的数据。
如图1所示,处理器110具有多层硬件缓存(例如,多级缓存),其形成缓存层次结构。在一些实施例中,多个核C0-Cn中的每个核包括处理单元102(例如,CPU)和一层或多层私有缓存,例如一级(L1)缓存104和二级(L2)缓存106。多个核C0-Cn可以在各自的缓存中存储要访问的数据,以加快处理器的核的处理。为了减少缓存冗余,处理器110提供末级缓存116(末级缓存116是由核C0-Cn共享的共享缓存),以减少通信延迟和数据冗余,并提高缓存空间的使用效率。
在图1所示的示例中,一级缓存104是距离处理器的寄存器最近的硬件缓存(即,位于缓存层次结构的顶部),二级缓存106是次近的,依此类推。与二级缓存106相比,一级缓存104更快,但存储容量更小。另一方面,二级缓存106更慢,但具有更大的存储容量。在操作中,当处理单元102访问数据时,处理单元102首先访问一级缓存104。如果一级缓存104不包含所需数据,则处理单元102访问二级缓存106。如果二级缓存106也不包含所需数据,则在处理器110通过存储器控制器118从存储器120获取数据之前,可以访问共享的末级缓存116,该共享的末级缓存116是图1所示的实施例中的三级(L3)缓存。
在数据中心,多个工作负载可位于同一台服务器上,并且同地协作的工作负载之间共享的资源(例如CPU核、共享的末级缓存116和存储器带宽)是隔离的。因此,处理器110需要实现共享资源(包括处理器核、共享的末级缓存116和存储器带宽)的准确高效的分配和再分配。特别地,同地协作的工作负载可以包括延迟关键型(Latency Critical,LC)工作负载和尽力而为型(Best Effort,BE))工作负载。对于延迟关键型工作负载,需要满足服务级别协议(Service Level Agreement,SLA)中的服务级别目标(Service LevelObjectives,SLO)。例如,服务级别目标可以包括一个或多个性能目标指标,例如响应时间或吞吐量。因此,为了优化服务器性能,服务器在不违反LC工作负载的服务级别目标的情况下,提高BE工作负载的吞吐量。例如,服务器可以临时为BE工作负载分配空闲资源。当LC工作负载要求变高且即将违反SLO时,服务器可将共享资源重新分配给LC工作负载。
例如,在一些实施例中,末级缓存116支持缓存分配,并提供用于高优先级的应用程序的缓存空间1162和用于低优先级的应用程序的缓存空间1164。例如,在缓存分配中引入服务类(Class of Service,CLOS),以实现对线程、应用程序、虚拟机(virtual machine,VM)或容器的灵活控制。服务类充当资源控制标签,并具有相关的资源容量位掩码(bitmask,CBM),线程、应用程序、虚拟机和/或容器可以分组到服务类中,通过资源容量位掩码指示给定服务类可用的末级缓存的大小。
存储器带宽控制器112用于对每个核提供带宽控制。具体来说,存储器带宽控制器112在私有缓存(例如二级缓存106)和共享缓存(例如末级缓存116)之间执行请求速率控制(例如“节流(throttling)”),以使用不同的延迟值来实现存储器带宽分配。
图2示出了根据本公开的一些实施例的存储器带宽分配过程200的示意图。在一些实施例中,服务类还允许将正在运行的线程、应用程序或虚拟机映射到相应的存储器带宽设置上。如图2所示,与多个核相关联的存储器带宽控制器112可以分别将相应的延迟值应用到在这些核上运行的线程上。
例如,对于核210上运行的两个线程,即线程0和线程1,线程0和线程1都映射到具有第一延迟值(例如0)的第一服务类(例如CLOS[0]),所应用的延迟值是第一延迟值。对于核220上运行的两个线程,即线程0和1,线程0映射到具有第二延迟值(例如60)的第二服务类(例如CLOS[1]),而线程1映射到具有第三延迟值(例如50)的第三服务类(例如CLOS[2]),所应用的延迟值是第二延迟值和第三延迟值中的较大者(例如60),以确保对“嘈杂的邻居”线程进行优化控制,这些线程指的是数据中心环境中的带宽密集型应用程序。类似地,对于核230上运行的两个线程,即线程0和线程1,线程0映射到具有第四延迟值(例如50)的第四服务类(例如CLOS[3]),而线程1映射到第一服务类(例如CLOS[0]),所应用的延迟值是第一延迟值和第四延迟值中的较大者,即第四个延迟值。类似地,对于核240上运行的两个线程,即线程0和线程1,线程0映射到第三服务类(例如CLOS[2]),而线程1映射到第四服务类(例如CLOS[3])。如核240中所示,不同的服务类可以对应于相同的延迟值。例如,在本实施例中,第三延迟值和第四延迟值均为50。
应当注意的是,本文所描述的延迟值可被看作从软件到硬件关于应该应用多少节流的提示。特别是,每个服务类的带宽限制可以被指定为从零到平台支持的最大节流水平的范围内的一个值,该值可以是高达约90%的节流,并且约为10%的步长。这些步长可以是近似的并可表示校准值,由此产生的带宽可因系统配置、代际(generations)和存储器配置而发生变化。
在一些实施例中,通过上述的存储器带宽分配,存储器带宽控制器112控制对末级缓存116的请求速率和延迟访问,这在某些情况下可能会导致性能损失,因为对末级缓存116的延迟访问也会限制末级缓存116的命中。此外,对于命中的末级缓存的访问,存储器带宽使用不受节流的影响。
再次参考图1,分别与多个核C0-Cn相关联的缓存访问预测器114用于预测从多个核C0-Cn的相应核发送的访问请求是末级缓存命中还是末级缓存未命中。在各种实施例中,缓存访问预测器114基于与访问请求相关联的一个或多个输入数据,例如请求的存储器线地址、请求类型、数据大小、源标识符(源ID)、目标标识符(目标ID)或其任何组合,来预测访问请求为末级缓存命中或末级缓存未命中。
缓存访问预测器114进一步根据预测结果启用或禁用存储器带宽分配功能。例如,当与核C0相关联的缓存访问预测器114预测来自核C0的访问请求是末级缓存命中时,缓存访问预测器114禁用由与核C0相关联的存储器带宽控制器112启动的存储器带宽节流。由于对末级缓存116的访问没有被限制,因此可以减少或避免由于存储器带宽使用限制而导致的性能下降。换言之,当预测末级缓存命中时,在不需要节流的情况下,可以忽略从存储器带宽控制器112发送的节流请求,因为可以在不访问存储器120和消耗存储器带宽的情况下从末级缓存116访问所请求的数据。
另一方面,当与核C0相关联的缓存访问预测器114预测来自核C0的访问请求是末级缓存未命中时,缓存访问预测器114启用由与核C0相关联的存储器带宽控制器112启动的存储器带宽节流。因此,可以通过使用不同延迟设置的核的节流,实现高优先级的核和低优先级的核的存储器带宽分配。换句话说,当预测末级缓存未命中时,相应的核响应从存储器带宽控制器112发送的节流请求以控制存储器带宽使用。
图3示出了根据本公开的一些实施例的示例性的用于分配存储器带宽的存储器带宽分配方法300的流程图。方法300可由图1所示的计算系统100单独或与其他系统一起执行。参考图3,方法300包括以下步骤310、320、330和340。
在步骤310中,缓存访问预测器(例如,图1中的缓存访问预测器114)从核(例如,图1中的核C0-Cn的任何一个)接收对末级缓存(例如,图1中的末级缓存116)的访问请求,末级缓存由服务器中的处理器的多个核与私有缓存(例如,图1中的二级缓存106)共享。在一些实施例中,当核访问分配给该核的私有缓存后发生一级缓存未命中和二级缓存未命中时,相应的核发送对末级缓存的访问请求。
在步骤320中,缓存访问预测器确定访问请求是末级缓存命中还是末级缓存未命中。具体而言,在一些实施例中,缓存访问预测器对访问请求的末级缓存命中/未命中状态进行预测。在各种实施例中,可以使用不同的设计来实现缓存访问预测器,这将在以下段落的图4到图7的实施例中详细讨论。需要注意的是,图4到图7所示的缓存访问预测器仅为示例,并不用于限制本公开。
在一些实施例中,步骤320由分区地址布隆滤波器预测器(Partitioned-AddressBloom Filter Predictor)执行。图4示出了根据本公开的一些实施例的一示例性的缓存访问预测器400的示意图。缓存访问预测器400接收到访问请求时,将具有与访问请求相关联的n位的所请求的存储器线地址410拆分为m个分区地址412、414、416和418。分区地址412、414、416和418分别用于索引对应布隆滤波器数组420、430、440和450。
在本文中,布隆滤波器使用比特位(bit)数组(例如密集存储比特位的数组结构)对一组项或键进行近似编码。当数组初始化时,每个比特位被设置为初始值0。为了将一个项插入比特位数组中,将该项哈希处理为1到b之间的数字,b是比特位数组所持有的比特位的数量。哈希函数的结果对应于比特位数组中的地址,然后将其值设置为1。
为了检查一个项是否位于布隆过滤器中,对该项进行哈希处理,对该项的哈希处理次数与插入布隆过滤器中的每个项的哈希处理次数相同。例如,如果每个插入的项被哈希处理了b次,则正在检查的项也被哈希处理b次。检查哈希处理结果对应的地址,如果有一个哈希函数的处理结果指向0,则100%确定该项不在集合中。然而,如果哈希函数的处理结果指向1,则为以下情况中的任一项:i)该项存在于布隆过滤器中;或ii)该项的哈希值与布隆过滤器中的其他某个项的哈希值冲突。由于哈希冲突,布隆过滤器可能会产生误报,即某个项被错误报告为在布隆过滤器中。然而,布隆过滤器不会产生这样的误报:某项在布隆过滤器中,但却未报告。
为了减少误报频率,可以增加布隆过滤器使用的哈希函数的个数,哈希函数的个数越多,误报率越低。然而,随着哈希函数的个数的增加,在布隆过滤器中设置和检查项的过程的计算成本变得更高。一种加速设置和检查操作的方法是并行执行操作。然而,CPU对比特位进行操作,这会导致装桶(bucketing)问题,例如,当需要对多个比特位进行操作时,然而这多个比特位属于同一字节。因此,当并行运行时,操作可能会遇到读/写问题。
在图4的实施例中,布隆过滤器技术可用于预测缓存未命中或命中。在一些实施例中,布隆过滤器数组420、430、440和450可以是计数式布隆过滤器,其提供多比特位计数器(例如,k位饱和计数器),用于跟踪添加到缓存或从缓存中移除的地址。当在缓存中添加新的缓存线时,与地址哈希处理对应的计数器将递增。当发生缓存替换时,相应的计数器将递减。因此,计数器为零表示相应的地址不在缓存中。另一方面,计数器大于1表示可能遇到该地址。
特别是,缓存访问预测器400可以分别将分区地址412、414、416和418映射到布隆过滤器数组420、430、440和450中的相应条目(例如条目422、432、442和452)。每个条目指示末级缓存116中的多条缓存线,末级缓存116包括与该条目相关联的分区地址。因此,如果布隆过滤器数组420、430、440和450中的一个或多个指示末级缓存116中不存在分区地址412、414、416和418中的一个或多个(例如,NAND逻辑460的一个或多个输入为0),则请求的存储器线地址410不在末级缓存116中,这表示末级缓存未命中(例如,NAND逻辑460的输出为1)。
另一方面,如果布隆过滤器数组420、430、440和450指示分区地址412、414、416和418中的每一个都和末级缓存116中的一条或多条线匹配(例如,NAND逻辑460的所有输入均为1),则预测请求的存储器线地址410位于末级缓存116中。因此,缓存访问预测器400预测末级缓存命中(例如,NAND逻辑460的输出为0)。或者,响应于分区地址412、414、416和418中的一个或多个被映射到具有零值的一个或多个条目,缓存访问预测器400将访问请求确定为末级缓存未命中。否则,响应于分区地址412、414、416和418均被映射为具有非零值的条目,缓存访问预测器400预测访问请求为末级缓存命中。应当注意的是,由于滤波器错误,当未识别出缓存未命中时,此时末级缓存命中的预测是错误的预测。例如,可能所有m个分区地址412、414、416和418均与末级缓存116中的其他缓存线的地址分区匹配,但请求的存储器线地址410不在末级缓存116中。
响应于确定访问请求为末级缓存未命中,缓存访问预测器400相应地更新布隆过滤器数组420、430、440和450中的条目。特别地,缓存访问预测器400可以在布隆过滤器数组420、430、440和450增加条目422、432、442和452,因为条目422、432、442和452与要新添加到末级缓存116的请求的存储器线地址410的分区地址412、414、416和418相关联。此外,由于被替换的存储器线地址470被请求的存储器线地址410替换,缓存访问预测器400进一步递减布隆过滤器数组420、430、440和450中的相应条目424、434、444和454。条目424、434、444和454分别与被替换的存储器线地址470的分区地址472、474、476和478相关联。
因此,图4所示的缓存访问预测器400可以在步骤320中通过分割被请求的存储器线地址410来执行末级缓存命中/未命中的预测/确定,分别将分区地址412、414、416和418映射到布隆过滤器数组420、430、440和450中的相应条目。当分区地址412、414、416和418中的一个或多个映射到具有零值的条目时,缓存访问预测器400将访问请求确定为末级缓存未命中。当分区地址412、414、416和418映射到具有非零值的条目时,缓存访问预测器400将访问请求预测为末级缓存命中。
再次参考图3,在一些其他实施例中,步骤320可以由部分地址布隆过滤器预测器(Partial-Address Bloom Filter Predictor)执行。图5示出了根据本公开的一些实施例的另一示例性的缓存访问预测器500的示意图。当接收到访问请求时,缓存访问预测器500从与访问请求相关联的被请求的存储器线地址510获得部分地址512。
如图5所示,一个被请求的存储器线地址510包括偏移部分514、索引部分516和标签部分518,标签部分518包含地址的最高有效位。在一些实施例中,部分地址512包括被请求的存储器线地址510的最低有效p位,并且部分地址512的长度大于或等于索引部分516。即,p大于或等于被请求的存储器线地址中的索引位数。
与图4的示例类似,部分地址512可用于索引布隆过滤器数组520。特别是,缓存访问预测器500可将部分地址512映射到布隆过滤器数组520中的相应比特位522。布隆过滤器数组520中的每个比特位指示部分地址是否与末级缓存116中的任何缓存线匹配。因此,响应于相应的比特位522被设置为真(true),缓存访问预测器500可以将接收到的访问请求预测为末级缓存命中。否则,缓存访问预测器500可以响应于相应的比特位522被重置为假(false),将访问请求确定为末级缓存未命中。
响应于确定访问请求为末级缓存未命中,缓存访问预测器500还相应地更新布隆过滤器数组520中的条目。特别地,假设比特位522与要新添加到末级缓存116的被请求的存储器线地址510的部分地址512相关联,则缓存访问预测器500将相应的比特位522设置为真(true)。此外,当要替换末级缓存116中的存储器线地址时,冲突检测器530检查同一集合中的剩余缓存线540。如果剩余缓存线中的一个或多个缓存线具有与要被替换的存储器线地址相同的部分地址,则相应的布隆过滤器的比特位524不会被重置。否则,相应的布隆过滤器的比特位524被重置为假(false)。在一些实施例中,冲突检测可以与缓存命中/未命中预测并行执行。
因此,图5所示的缓存访问预测器500可以通过从被请求的存储器线地址510获得部分地址512并将部分地址512映射到布隆过滤器数组520中的相应比特位来执行步骤320中的末级缓存命中/未命中的预测/确定。当相应比特位被重置为假(false)时,缓存访问预测器500将访问请求确定为末级缓存未命中。另一方面,当相应比特位被设置为真(true)时,缓存访问预测器500将访问请求预测为末级缓存命中。
再次参考图3,在一些其他实施例中,步骤320可以由基于机器学习的预测器执行。图6示出了根据本公开的一些实施例的另一示例性的缓存访问预测器600的示意图。缓存访问预测器600可以应用先前训练的机器学习模型610来实现基于机器学习的预测器,利用机器学习过程来做出决策以评估缓存命中/未命中状态,而不是使用布隆滤波器进行缓存命中/未命中的预测。在本公开的各种实施例中,可以使用和实现不同的机器学习算法,并使用不同的训练数据进行训练。在一些实施例中,基于机器学习的缓存访问预测器600可以基于一个或多个输入630,例如被请求的存储器线地址、请求类型、数据大小、源标识符、目标标识符或以上任何组合,来提供指示末级缓存命中/未命中状态的预测输出620。
再次参考图3,在一些其他实施例中,可以通过缓存访问预测器向LLC发送查询来执行步骤320,以查找LLC是否会发生命中或未命中。图7示出了根据本公开的一些实施例的另一示例性的缓存访问预测器700的示意图。缓存访问预测器700用于根据访问请求向末级缓存116发送查询710。查询710可以是一个查找查询,用于检查二级缓存未命中的请求在末级缓存116中是命中还是未命中。作为对查询710的响应,末级缓存116将缓存命中或未命中状态720返回给缓存访问预测器700。缓存访问预测器700在接收到从末级缓存116返回的缓存命中或未命中状态720后,基于接收到的缓存命中或未命中状态720来确定访问请求是末级缓存命中还是末级缓存未命中。
在一些实施例中,查询710仅用于查找末级缓存116以确定一个访问的命中/未命中状态,即使缓存命中或未命中状态720指示它是末级缓存116命中,也不会返回数据。因此,与正常访问相比,查询710的响应时间更短,这允许缓存访问预测器700在缓存命中或未命中状态720指示末级缓存命中时高效地禁用存储器带宽节流。
再次参考图3,在缓存访问预测器确定或预测访问请求是末级缓存命中还是未命中后,在步骤330和340中,缓存访问预测器基于该确定的结果控制存储器带宽控制器,并选择性地禁用存储器带宽节流或允许存储器带宽控制器执行存储器带宽节流。访问请求的末级缓存命中导致存储器带宽控制器启动的存储器带宽节流被禁用。另一方面,访问请求的末级缓存未命中导致由存储器带宽控制器启动的存储器带宽节流被启用。
特别是,响应于确定访问请求为末级缓存命中(步骤320为缓存访问预测器确定访问请求是末级缓存命中),在步骤330,缓存访问预测器禁用由存储器带宽控制器(例如,图1中的存储器带宽控制器112)启动的存储器带宽节流。因此,当末级缓存命中时,可以通过避免不必要的过度节流来提高整体上的系统性能。
响应于确定访问请求为末级缓存未命中(步骤320为缓存访问预测器确定访问请求是末级缓存未命中),在步骤340,缓存访问预测器启用由相应的存储器带宽控制器启动的存储器带宽节流。然后,存储器带宽控制器执行存储器带宽节流,以控制私有缓存和末级缓存之间的请求速率。换句话说,相应的存储器带宽控制器可以通过动态设置和更新请求速率控制的延迟值来继续执行存储器带宽分配,以确保有足够的存储器带宽可用于高优先级的工作负载。
综上所述,本公开的各种实施例提供了一种经济高效且简单的设计,通过基于对多核处理器架构中的共享缓存的命中/未命中的预测,选择性地启用或禁用动态存储器带宽节流,来实现高效的存储器带宽使用控制和分配。此外,可以避免或减少由存储器带宽使用限制引起的不期望的性能下降。本文描述的方法和系统可应用于计算系统中的任何级别的缓存或存储器子系统。此外,本文描述的方法和系统独立于指令集架构(instructionset architecture,ISA),因此可以应用于具有不同指令集架构的不同处理器设计和架构,例如Arm、RISC-V等。
本文描述的各种示例性的实施例可以包括由计算机程序产品执行的多个方面,并具体体现在包括由计算机在网络环境中执行的计算机可执行指令(例如程序代码)的计算机可读介质中。计算机可读介质可以包括可移动和不可移动的存储设备,包括但不限于只读存储器(ROM)、随机存取存储器(RAM)、光盘(CD)、数字多功能光盘(DVD)等。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、等等。计算机可读介质可以是有形和非暂时性的计算机可读介质。非暂时性的介质的常见形式包括,例如软盘、磁盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、任何具有孔图案的物理介质、RAM、PROM、EPROM、FLASH-EPROM或任何其他闪存、NVRAM、缓存、寄存器、任何其他存储器芯片或盒带,以及其网络版本。
计算机可执行指令、相关数据结构和程序模块表示用于执行本文所公开的方法的步骤的程序代码的示例。此类可执行指令或相关数据结构的特定序列表示用于实现此类步骤或过程中描述的功能的相应动作的示例。
应当注意,本文中的关系术语,例如“第一”和“第二”,仅用于区分实体(或操作)与另一实体(或操作),并不要求或暗示这些实体或操作之间的任何实际关系或顺序。此外,词语“包含”、“具有”和“包括”以及其他类似形式的含义是等效的,并且是开放式的,因为在这些词语的任何一个之后的一个或多个项或条目并不意味着是此类项或条目的详尽列表,也不意味着仅限于所列出的项或条目。
如本文所用,除非另有特别说明或不可实现,否则术语“或”包括所有可能的组合。例如,如果声明数据库包括A或B,则除非另有明确说明或不可实现,否则数据库包括A、B或A和B的组合。作为第二个示例,如果声明数据库包括A、B或C,则除非另有明确说明或不可实现,否则数据库包括A、B、C、A和B的组合、A和C的组合、B和C的组合、或A和B和C的组合。
可以理解,上述实施例可以通过硬件、软件(程序代码)或硬件和软件的组合来实现。如果通过软件实现,则可以将其存储在上述计算机可读介质中。当由处理器执行时,该软件可以执行所公开的方法。本公开描述的计算单元和其他功能单元可以通过硬件、软件或硬件和软件的组合来实现。本领域的普通技术人员还将理解,上述模块/单元中的多个模块/单元可以组合为一个模块/单元,并且上述每个模块/单元可以进一步划分为多个子模块/子单元。
在本文中,参考许多具体细节描述实施例,这些细节可以随实现的不同而变化。可以对所描述的实施例进行某些调整和修改。考虑到本文所公开的说明和实践,本领域技术人员可以清楚地得到其他实施例。本文中的实施例仅被视为示例性的,所附权利要求表明本公开真正范围和精神。图中所示的步骤序列也仅用于说明的目的,不限于任何特定的步骤序列。因此,本领域技术人员可以理解,在实现相同方法的同时,可以以不同的顺序执行这些步骤。
可以使用以下权利要求进一步描述实施例。
1、一种用于服务器中的多个处理器核的存储器带宽分配的存储器带宽分配方法,包括:
接收对服务器中的多个处理器核共享的末级缓存的访问请求,所述访问请求由具有私有缓存的处理器核发送,所述私有缓存保存存储器中频繁访问的数据的副本;
确定所述访问请求是末级缓存命中还是末级缓存未命中;和
基于所确定的结果控制存储器带宽控制器,其中,所述存储器带宽控制器执行存储器带宽节流以控制所述私有缓存和所述末级缓存之间的请求速率,所述访问请求的末级缓存命中导致禁用由所述存储器带宽控制器启动的存储器带宽节流,所述访问请求的末级缓存未命中导致启用由所述存储器带宽控制器启动的存储器带宽节流。
2、根据权利要求1所述的存储器带宽分配方法,其中,所述确定所述访问请求是末级缓存命中还是末级缓存未命中包括:
基于与所述访问请求相关联的被请求的存储器线地址、与所述访问请求相关联的请求类型、与所述访问请求相关联的数据大小、与所述访问请求相关联的源标识符、与所述访问请求相关联的目标标识符或其任何组合,确定所述访问请求是末级缓存命中还是末级缓存未命中。
3、根据权利要求1或2所述的存储器带宽分配方法,其中,所述确定所述访问请求是末级缓存命中还是末级缓存未命中包括:
将与所述访问请求相关联的被请求的存储器线地址分割成多个分区地址;
分别将所述多个分区地址映射到多个布隆过滤器数组中的相应条目,其中,每个条目指示包括与该条目相关联的相应分区地址的末级缓存中的多个缓存线;以及
响应于将所述多个分区地址中的一个或多个分区地址映射到具有零值的条目,将所述访问请求确定为末级缓存未命中;否则,将所述访问请求确定为末级缓存命中。
4、根据权利要求3所述的存储器带宽分配方法,还包括:
响应于确定所述访问请求为末级缓存未命中,执行以下操作:
递增所述布隆过滤器数组中的第一条目,所述第一条目与要添加到所述末级缓存的被请求的存储器线地址的分区地址相关联;和
递减所述布隆过滤器数组中的第二条目,所述第二条目与要替换的存储器线地址的第二分区地址相关联,所述要替换的存储器线地址将被所述被请求的存储器线地址替换。
5、根据权利要求1或2所述的存储器带宽分配方法,其中,所述确定所述访问请求是末级缓存命中还是末级缓存未命中包括:
从与所述访问请求相关联的被请求的存储器线地址获取部分地址;
将所述部分地址映射到布隆过滤器数组中的对应比特位,其中,每个比特位指示所述部分地址是否与所述末级缓存中的任何缓存线匹配;和
响应于所述对应比特位被设置为真,将所述访问请求确定为末级缓存命中;否则,将所述访问请求确定为末级缓存未命中。
6、根据权利要求5所述的存储器带宽分配方法,还包括:
响应于确定所述访问请求为末级缓存未命中,将所述布隆过滤器数组中的第一比特位设置为真,所述第一比特位与所述被请求的存储器线地址相关联的部分地址相关联。
7、根据权利要求5或6所述的存储器带宽分配方法,其中,所述部分地址包括所述被请求的存储器线地址的最低有效p位,p大于或等于所述被请求的存储器线地址中的索引位数。
8、根据权利要求1所述的存储器带宽分配方法,其中,通过基于机器学习的预测器来确定所述访问请求是末级缓存命中还是末级缓存未命中。
9、根据权利要求1或2所述的存储器带宽分配方法,其中,所述确定所述访问请求是末级缓存命中还是末级缓存未命中包括:
根据所述访问请求向所述末级缓存发送查询;
接收所述末级缓存响应所述查询返回的缓存命中或未命中状态;和
根据接收到的缓存命中或未命中状态,确定所述访问请求是末级缓存命中还是末级缓存未命中。
10、一种设备,包括:
至少一个处理器,包括:
包含相应私有缓存的多个处理器核;
由所述多个处理器核共享的末级缓存,所述末级缓存用于接收从所述多个处理器核中的第一处理器核发送的访问请求,所述第一处理器核的私有缓存保存所述至少一个处理器外部的存储器中频繁访问的数据的副本;
缓存访问预测器,用于确定所述访问请求是末级缓存命中还是末级缓存未命中;
存储器带宽控制器,用于执行存储器带宽节流以控制所述私有缓存和所述末级缓存之间的请求速率,所述存储器带宽控制器进一步用于:
响应于确定所述访问请求为末级缓存命中,禁用所述存储器带宽控制器启动的存储器带宽节流;以及
响应于确定所述访问请求为末级缓存未命中,启用所述存储器带宽控制器启动的存储器带宽节流。
11、根据权利要求10所述的设备,其中,所述缓存访问预测器用于基于与所述访问请求相关联的被请求的存储器线地址、与所述访问请求相关联的请求类型、与所述访问请求相关联的数据大小、与所述访问请求相关联的源标识符、与所述访问请求相关联的目标标识符或其任何组合,确定所述访问请求是末级缓存命中还是末级缓存未命中。
12、根据权利要求10或11所述的设备,其中,所述缓存访问预测器用于通过以下方式确定所述访问请求是末级缓存命中还是末级缓存未命中:
将与所述访问请求相关联的被请求的存储器线地址分割成多个分区地址;
分别将所述多个分区地址映射到多个布隆过滤器数组中的相应条目,其中,每个条目指示包括与该条目相关联的相应分区地址的末级缓存中的多个缓存线;以及
响应于将所述多个分区地址中的一个或多个分区地址映射到具有零值的条目,将所述访问请求确定为末级缓存未命中;否则,将所述访问请求确定为末级缓存命中。
13、根据权利要求12所述的设备,其中,响应于确定所述访问请求为末级缓存未命中,所述缓存访问预测器用于:
递增所述布隆过滤器数组中的第一条目,所述第一条目与要添加到所述末级缓存的被请求的存储器线地址的分区地址相关联;和
递减布隆过滤器数组中的第二条目,所述第二条目与被替换的存储器线地址的第二分区地址相关联,所述被替换的存储器线地址将被所述被请求的存储器线地址替换。
14、根据权利要求10或11所述的设备,其中,所述缓存访问预测器用于通过以下方式确定所述访问请求是末级缓存命中还是末级缓存未命中:
从与所述访问请求相关联的被请求的存储器线地址获取部分地址;
将所述部分地址映射到布隆过滤器数组中的对应比特位,其中,每个比特位指示所述部分地址是否与所述末级缓存中的任何缓存线匹配;和
响应于所述对应比特位被设置为真,将所述访问请求确定为末级缓存命中;否则,将所述访问请求确定为末级缓存未命中。
15、根据权利要求14所述的设备,其中,响应于确定所述访问请求为末级缓存未命中,所述缓存访问预测器用于将所述布隆过滤器数组中的第一比特位设置为真,所述第一比特位与所述被请求的存储器线地址相关联的部分地址相关联。
16、根据权利要求14或15所述的设备,其中,所述部分地址包括所述被请求的存储器线地址的最低有效p位,p大于或等于所述被请求的存储器线地址中的索引位数。
17、根据权利要求10所述的设备,其中,所述缓存访问预测器是基于机器学习的预测器,用来确定所述访问请求是末级缓存命中还是末级缓存未命中。
18、根据权利要求10所述的设备,其中,所述缓存访问预测器用于通过以下方式确定所述访问请求是末级缓存命中还是末级缓存未命中:
根据所述访问请求向所述末级缓存发送查询;
接收所述末级缓存响应所述查询返回的缓存命中或未命中状态;和
根据接收到的缓存命中或未命中状态,确定所述访问请求是末级缓存命中还是末级缓存未命中。
19、一种非暂时性的计算机可读存储介质,所述计算机可读存储介质存储可由设备的一个或多个处理器执行的一组指令,以使所述设备执行一种存储器带宽分配方法,所述存储器带宽分配方法包括:
接收对服务器中的多个处理器核共享的末级缓存的访问请求,所述访问请求是由具有私有缓存的处理器核发送,所述私有缓存保存存储器中频繁访问的数据的副本;
确定所述访问请求是末级缓存命中还是末级缓存未命中;和
基于所确定的结果控制存储器带宽控制器,其中,所述存储器带宽控制器执行存储器带宽节流以控制所述私有缓存和所述末级缓存之间的请求速率,所述访问请求的末级缓存命中导致禁用由所述存储器带宽控制器启动的存储器带宽节流,所述访问请求的末级缓存未命中导致启用由所述存储器带宽控制器启动的存储器带宽节流。
20、根据权利要求19所述的计算机可读存储介质,其中,所述确定所述访问请求是末级缓存命中还是末级缓存未命中包括:
基于与所述访问请求相关联的被请求的存储器线地址、与所述访问请求相关联的请求类型、与所述访问请求相关联的数据大小、与所述访问请求相关联的源标识符、与所述访问请求相关联的目标标识符或其任何组合,确定所述访问请求是末级缓存命中还是末级缓存未命中。
21、根据权利要求19或20所述的计算机可读存储介质,其中,所述确定所述访问请求是末级缓存命中还是末级缓存未命中包括:
将与所述访问请求相关联的被请求的存储器线地址分割成多个分区地址;
分别将所述多个分区地址映射到多个布隆过滤器数组中的相应条目,其中,每个条目指示包括与该条目相关联的相应分区地址的末级缓存中的多个缓存线;以及
响应于将所述多个分区地址中的一个或多个分区地址映射到具有零值的条目,将所述访问请求确定为末级缓存未命中;否则,将所述访问请求确定为末级缓存命中。
22、根据权利要求21所述的计算机可读存储介质,其中,所述可由设备的一个或多个处理器执行的一组指令,使所述设备进一步执行:
响应于确定所述访问请求为末级缓存未命中,执行以下操作:
递增所述布隆过滤器数组中的第一条目,所述第一条目与要添加到所述末级缓存的被请求的存储器线地址的分区地址相关联;和
递减所述布隆过滤器数组中的第二条目,所述第二条目与要替换的存储器线地址的第二分区地址相关联,所述要替换的存储器线地址将被所述被请求的存储器线地址替换。
23、根据权利要求19或20所述的计算机可读存储介质,其中,所述确定所述访问请求是末级缓存命中还是末级缓存未命中包括:
从与所述访问请求相关联的被请求的存储器线地址获取部分地址;
将所述部分地址映射到布隆过滤器数组中的对应比特位,其中,每个比特位指示所述部分地址是否与所述末级缓存中的任何缓存线匹配;和
响应于所述对应比特位被设置为真,将所述访问请求确定为末级缓存命中;否则,将所述访问请求确定为末级缓存未命中。
24、根据权利要求23所述的计算机可读存储介质,所述可由设备的一个或多个处理器执行的一组指令,使所述设备进一步执行:
响应于确定所述访问请求为末级缓存未命中,将所述布隆过滤器数组中的第一比特位设置为真,所述第一比特位与所述被请求的存储器线地址相关联的部分地址相关联。
25、根据权利要求23或24所述的计算机可读存储介质,其中,所述部分地址包括所述被请求的存储器线地址的最低有效p位,p大于或等于所述被请求的存储器线地址中的索引位数。
26、根据权利要求19所述的计算机可读存储介质,其中,通过基于机器学习的预测器来确定所述访问请求是末级缓存命中还是末级缓存未命中。
27、根据权利要求19所述的计算机可读存储介质,其中,所述确定所述访问请求是末级缓存命中还是末级缓存未命中包括:
根据所述访问请求向所述末级缓存发送查询;
接收所述末级缓存响应所述查询返回的缓存命中或未命中状态;和
根据接收到的缓存命中或未命中状态,确定所述访问请求是末级缓存命中还是末级缓存未命中。
在附图和说明书中,已经公开了示例性的实施例,然而,可以对这些实施例进行许多变化和修改。因此,尽管使用了特定术语,但它们仅在一般和描述性意义上使用,而不是出于限制的目的。
Claims (20)
1.一种存储器带宽分配方法,包括:
接收对服务器中的多个处理器核共享的末级缓存的访问请求,所述访问请求是由具有私有缓存的处理器核发送,所述私有缓存保存存储器中频繁访问的数据的副本;
确定所述访问请求是末级缓存命中还是末级缓存未命中;和
基于所确定的结果控制存储器带宽控制器,其中,所述存储器带宽控制器执行存储器带宽节流以控制所述私有缓存和所述末级缓存之间的请求速率,所述访问请求的末级缓存命中导致禁用由所述存储器带宽控制器启动的存储器带宽节流,所述访问请求的末级缓存未命中导致启用由所述存储器带宽控制器启动的存储器带宽节流。
2.根据权利要求1所述的存储器带宽分配方法,其中,所述确定所述访问请求是末级缓存命中还是末级缓存未命中包括:
基于与所述访问请求相关联的被请求的存储器线地址、与所述访问请求相关联的请求类型、与所述访问请求相关联的数据大小、与所述访问请求相关联的源标识符、与所述访问请求相关联的目标标识符或其任何组合,确定所述访问请求是末级缓存命中还是末级缓存未命中。
3.根据权利要求1所述的存储器带宽分配方法,其中,所述确定所述访问请求是末级缓存命中还是末级缓存未命中包括:
将与所述访问请求相关联的被请求的存储器线地址分割成多个分区地址;
分别将所述多个分区地址映射到多个布隆过滤器数组中的相应条目,其中,每个条目指示包括与该条目相关联的相应分区地址的末级缓存中的多个缓存线;以及
响应于将所述多个分区地址中的一个或多个分区地址映射到具有零值的条目,将所述访问请求确定为末级缓存未命中;否则,将所述访问请求确定为末级缓存命中。
4.根据权利要求3所述的存储器带宽分配方法,还包括:
响应于确定所述访问请求为末级缓存未命中,执行以下操作:
递增所述布隆过滤器数组中的第一条目,所述第一条目与要添加到所述末级缓存的被请求的存储器线地址的分区地址相关联;和
递减所述布隆过滤器数组中的第二条目,所述第二条目与要替换的存储器线地址的第二分区地址相关联,所述要替换的存储器线地址将被所述被请求的存储器线地址替换。
5.根据权利要求1所述的存储器带宽分配方法,其中,所述确定所述访问请求是末级缓存命中还是末级缓存未命中包括:
从与所述访问请求相关联的被请求的存储器线地址获取部分地址;
将所述部分地址映射到布隆过滤器数组中的对应比特位,其中,每个比特位指示所述部分地址是否与所述末级缓存中的任何缓存线匹配;和
响应于所述对应比特位被设置为真,将所述访问请求确定为末级缓存命中;否则,将所述访问请求确定为末级缓存未命中。
6.根据权利要求5所述的存储器带宽分配方法,还包括:
响应于确定所述访问请求为末级缓存未命中,将所述布隆过滤器数组中的第一比特位设置为真,所述第一比特位与所述被请求的存储器线地址相关联的部分地址相关联。
7.根据权利要求5所述的存储器带宽分配方法,其中,所述部分地址包括所述被请求的存储器线地址的最低有效p位,p大于或等于所述被请求的存储器线地址中的索引位数。
8.根据权利要求1所述的存储器带宽分配方法,其中,通过基于机器学习的预测器来确定所述访问请求是末级缓存命中还是末级缓存未命中。
9.根据权利要求1所述的存储器带宽分配方法,其中,所述确定所述访问请求是末级缓存命中还是末级缓存未命中包括:
根据所述访问请求向所述末级缓存发送查询;
接收所述末级缓存响应所述查询返回的缓存命中或未命中状态;和
根据接收到的缓存命中或未命中状态,确定所述访问请求是末级缓存命中还是末级缓存未命中。
10.一种设备,包括:
至少一个处理器,包括:
包含相应私有缓存的多个处理器核;
由所述多个处理器核共享的末级缓存,所述末级缓存用于接收从所述多个处理器核中的第一处理器核发送的访问请求,所述第一处理器核的私有缓存保存所述至少一个处理器外部的存储器中频繁访问的数据的副本;
缓存访问预测器,用于确定所述访问请求是末级缓存命中还是末级缓存未命中;
存储器带宽控制器,用于执行存储器带宽节流以控制所述私有缓存和所述末级缓存之间的请求速率,所述存储器带宽控制器进一步用于:
响应于确定所述访问请求为末级缓存命中,禁用所述存储器带宽控制器启动的存储器带宽节流;以及
响应于确定所述访问请求为末级缓存未命中,启用所述存储器带宽控制器启动的存储器带宽节流。
11.根据权利要求10所述的设备,其中,所述缓存访问预测器用于基于与所述访问请求相关联的被请求的存储器线地址、与所述访问请求相关联的请求类型、与所述访问请求相关联的数据大小、与所述访问请求相关联的源标识符、与所述访问请求相关联的目标标识符或其任何组合,确定所述访问请求是末级缓存命中还是末级缓存未命中。
12.根据权利要求10所述的设备,其中,所述缓存访问预测器用于通过以下方式确定所述访问请求是末级缓存命中还是末级缓存未命中:
将与所述访问请求相关联的被请求的存储器线地址分割成多个分区地址;
分别将所述多个分区地址映射到多个布隆过滤器数组中的相应条目,其中,每个条目指示包括与该条目相关联的相应分区地址的末级缓存中的多个缓存线;以及
响应于将所述多个分区地址中的一个或多个分区地址映射到具有零值的条目,将所述访问请求确定为末级缓存未命中;否则,将所述访问请求确定为末级缓存命中。
13.根据权利要求12所述的设备,其中,响应于确定所述访问请求为末级缓存未命中,所述缓存访问预测器用于:
递增所述布隆过滤器数组中的第一条目,所述第一条目与要添加到所述末级缓存的被请求的存储器线地址的分区地址相关联;和
递减所述布隆过滤器数组中的第二条目,所述第二条目与被替换的存储器线地址的第二分区地址相关联,所述被替换的存储器线地址将被所述被请求的存储器线地址替换。
14.根据权利要求10所述的设备,其中,所述缓存访问预测器用于通过以下方式确定所述访问请求是末级缓存命中还是末级缓存未命中:
从与所述访问请求相关联的被请求的存储器线地址获取部分地址;
将所述部分地址映射到布隆过滤器数组中的对应比特位,其中,每个比特位指示所述部分地址是否与所述末级缓存中的任何缓存线匹配;和
响应于所述对应比特位被设置为真,将所述访问请求确定为末级缓存命中;否则,将所述访问请求确定为末级缓存未命中。
15.根据权利要求14所述的设备,其中,响应于确定所述访问请求为末级缓存未命中,所述缓存访问预测器用于将所述布隆过滤器数组中的第一比特位设置为真,所述第一比特位与所述被请求的存储器线地址相关联的部分地址相关联。
16.根据权利要求14所述的设备,其中,所述部分地址包括所述被请求的存储器线地址的最低有效p位,p大于或等于所述被请求的存储器线地址中的索引位数。
17.根据权利要求10所述的设备,其中,所述缓存访问预测器是基于机器学习的预测器,用来确定所述访问请求是末级缓存命中还是末级缓存未命中。
18.根据权利要求10所述的设备,其中,所述缓存访问预测器用于通过以下方式确定所述访问请求是末级缓存命中还是末级缓存未命中:
根据所述访问请求向所述末级缓存发送查询;
接收所述末级缓存响应所述查询返回的缓存命中或未命中状态;和
根据接收到的缓存命中或未命中状态,确定所述访问请求是末级缓存命中还是末级缓存未命中。
19.一种非暂时性的计算机可读存储介质,所述计算机可读存储介质存储可由设备的一个或多个处理器执行的一组指令,以使所述设备执行一种存储器带宽分配方法,所述存储器带宽分配方法包括:
接收对服务器中的多个处理器核共享的末级缓存的访问请求,所述访问请求由具有私有缓存的处理器核发送,所述私有缓存保存存储器中频繁访问的数据的副本;
确定所述访问请求是末级缓存命中还是末级缓存未命中;和
基于所确定的结果控制存储器带宽控制器,其中,所述存储器带宽控制器执行存储器带宽节流以控制所述私有缓存和所述末级缓存之间的请求速率,所述访问请求的末级缓存命中导致禁用由所述存储器带宽控制器启动的存储器带宽节流,所述访问请求的末级缓存未命中导致启用由所述存储器带宽控制器启动的存储器带宽节流。
20.根据权利要求19所述的计算机可读存储介质,其中,所述确定所述访问请求是末级缓存命中还是末级缓存未命中包括:
基于与所述访问请求相关联的被请求的存储器线地址、与所述访问请求相关联的请求类型、与所述访问请求相关联的数据大小、与所述访问请求相关联的源标识符、与所述访问请求相关联的目标标识符或其任何组合,确定所述访问请求是末级缓存命中还是末级缓存未命中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211008980.0A CN117667776A (zh) | 2022-08-22 | 2022-08-22 | 存储器带宽分配方法及设备 |
US18/450,663 US20240061780A1 (en) | 2022-08-22 | 2023-08-16 | Systems and methods for memory bandwidth allocation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211008980.0A CN117667776A (zh) | 2022-08-22 | 2022-08-22 | 存储器带宽分配方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117667776A true CN117667776A (zh) | 2024-03-08 |
Family
ID=89906699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211008980.0A Pending CN117667776A (zh) | 2022-08-22 | 2022-08-22 | 存储器带宽分配方法及设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240061780A1 (zh) |
CN (1) | CN117667776A (zh) |
-
2022
- 2022-08-22 CN CN202211008980.0A patent/CN117667776A/zh active Pending
-
2023
- 2023-08-16 US US18/450,663 patent/US20240061780A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240061780A1 (en) | 2024-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10289555B1 (en) | Memory read-ahead using learned memory access patterns | |
US8095736B2 (en) | Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures | |
US11086792B2 (en) | Cache replacing method and apparatus, heterogeneous multi-core system and cache managing method | |
US9223712B2 (en) | Data cache method, device, and system in a multi-node system | |
KR102028096B1 (ko) | 하이퍼바이저 기반의 가상 머신 격리 장치 및 방법 | |
JP7340326B2 (ja) | メンテナンス動作の実行 | |
US8312201B2 (en) | Managing memory allocations loans | |
US10216414B2 (en) | Frame choosing during storage constraint condition | |
KR101587579B1 (ko) | 가상화 시스템에서 메모리 조정방법 | |
WO2021232769A1 (zh) | 一种存储数据的方法及数据处理装置 | |
CN114860329B (zh) | 动态一致性偏置配置引擎及方法 | |
JP6042170B2 (ja) | キャッシュ制御装置及びキャッシュ制御方法 | |
Min et al. | Vmmb: Virtual machine memory balancing for unmodified operating systems | |
US11928061B2 (en) | Cache management method and apparatus | |
CN115617542A (zh) | 内存交换方法、装置、计算机设备及存储介质 | |
CN115357196A (zh) | 动态可扩展的组相联高速缓存方法、装置、设备及介质 | |
US10997077B2 (en) | Increasing the lookahead amount for prefetching | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
CN117667776A (zh) | 存储器带宽分配方法及设备 | |
CN117546148A (zh) | 动态地合并原子存储器操作以进行存储器本地计算 | |
CN115407931A (zh) | 映射分区标识符 | |
US10051087B2 (en) | Dynamic cache-efficient event suppression for network function virtualization | |
CN117331858B (zh) | 存储装置及数据处理系统 | |
JP7311959B2 (ja) | 複数のデータ・タイプのためのデータ・ストレージ | |
CN117271107A (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 |