CN117882058A - 用于存储器带宽控制的方法和系统 - Google Patents
用于存储器带宽控制的方法和系统 Download PDFInfo
- Publication number
- CN117882058A CN117882058A CN202280056615.9A CN202280056615A CN117882058A CN 117882058 A CN117882058 A CN 117882058A CN 202280056615 A CN202280056615 A CN 202280056615A CN 117882058 A CN117882058 A CN 117882058A
- Authority
- CN
- China
- Prior art keywords
- memory
- data access
- bandwidth usage
- level
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 118
- 238000005192 partition Methods 0.000 claims abstract description 195
- 238000012545 processing Methods 0.000 claims description 287
- 230000004044 response Effects 0.000 claims description 57
- 238000012544 monitoring process Methods 0.000 claims description 4
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000002131 composite material Substances 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 239000012620 biological material Substances 0.000 description 1
- 239000002041 carbon nanotube Substances 0.000 description 1
- 229910021393 carbon nanotube Inorganic materials 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003071 parasitic effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
将电子设备的资源划分成多个资源部分以供多个客户端使用。每个资源部分被分配给相应客户端,具有相应分区标识符(ID),并且对应于针对多个存储器块跟踪的多个存储器带宽使用状态。针对每个资源部分,该存储器带宽使用状态中的每个存储器带宽使用状态与相应存储器块相关联,并且指示分配给该相应分区ID以访问该相应存储器块的存储器访问带宽中的至少多少被使用。基于该存储器带宽使用状态确定每个资源分区的使用水平,并且将该使用水平应用于调整信用计数。当该信用计数调整到超过请求发出阈值时,从存储器访问请求队列发出该相应分区ID的下一数据访问请求。
Description
相关申请
本申请要求提交于2021年9月1日的标题为“Methods and Systems for MemoryBandwidth Control”的美国临时专利申请63/239,702号、提交于2021年10月1日的标题为“Methods and Systems for Memory Bandwidth Control”的美国临时专利申请63/251,517号以及提交于2021年10月1日的标题为“Methods and Systems for Memory BandwidthControl”的美国临时专利申请63/251,518号的优先权,这些专利申请中的每一者据此全文以引用方式并入。
本申请还要求提交于2022年2月7日的标题为“Methods and Systems for MemoryBandwidth Control”的美国专利申请17/666,438号的优先权,该专利申请据此全文以引用方式并入。
技术领域
本申请整体涉及微处理器技术,包括但不限于用于控制对微处理器的一个或多个处理集群外部的存储器的存储器访问的方法、系统和设备,该微处理器向多个客户端提供计算和存储资源。
背景技术
计算机系统的微处理器中常常存在较大通信量,以促进从较慢存储器或高速缓存到较快本地高速缓存的高速缓存预取以及微处理器的单独处理器单元的操作所需的常规存储器访问两者。在处理器集群(即,多核微处理器)的上下文中,可划分微处理器的计算和存储资源以向多个租户或客户端提供这些资源的不同部分。非常期望提供一种针对多核微处理器的每个处理器集群有效地管理与不同客户端相关联的高速缓存预取和常规存储器访问的电子设备或系统。
发明内容
所附权利要求书的范围内的系统、方法和设备的各种具体实施各自具有若干方面,这些方面中没有任何单一方面唯一地负责本文所述的属性。在不限制所附权利要求的范围的情况下,在考虑本公开之后,并且特别是在考虑标题为“具体实施方式”的部分之后,将理解如何使用一些具体实施的方面来基于电子设备的不同客户端的存储器带宽使用状态来管理对处理集群外部的存储器块(例如,双倍数据速率同步动态随机存取存储器(DDRSDRAM))的存储器请求访问。将电子设备的资源划分成由不同客户端使用的资源部分。针对每个资源部分跟踪存储器带宽使用状态,以实时监测分配给相应资源部分以访问存储器块的存储器访问带宽中的多少被使用。从资源部分的存储器带宽使用状态导出使用水平,以控制是否发出存储器访问请求队列中与相应资源部分相关联的下一数据访问请求。在一些具体实施中,对于每个资源部分,存储器块的较低使用水平和/或停留在低使用水平上的较长持续时间导致发出下一数据访问请求的较高机会。通过这些手段,可基于这些客户端对存储器块的现有使用水平有效地且单独地管理与不同客户端相关联的数据访问请求。
在一个方面,在电子设备处实施一种用于管理存储器访问的方法。该电子设备包括一个或多个处理集群和多个存储器块,并且每个处理集群包括一个或多个相应处理器并且耦合到该存储器块中的至少一个存储器块。该方法包括:将该电子设备的资源划分成多个资源部分以供多个客户端使用。每个资源部分被分配给相应客户端并且具有相应分区标识符(ID)。该方法还包括:接收与该多个客户端相关联的对该多个存储器块的多个数据访问请求。该方法还包括:针对具有该相应分区ID的每个资源部分,跟踪对应于该存储器块的多个存储器带宽使用状态,以及根据该多个存储器带宽使用状态确定与该相应分区ID相关联的使用水平。每个存储器带宽使用状态与相应存储器块相关联,并且指示分配给该相应分区ID以访问该相应存储器块的存储器访问带宽中的至少多少被使用。该方法还包括:针对具有该相应分区ID的每个资源部分,基于该使用水平调整信用计数,将所调整的信用计数与请求发出阈值进行比较,以及根据确定该信用计数大于该请求发出阈值,发出存储器访问请求队列中与该相应分区ID相关联的下一数据访问请求。
在一些情况下,该方法还包括:针对具有该相应分区ID的每个资源部分,根据确定该信用计数小于该请求发出阈值,暂停从该存储器访问请求队列发出该相应分区ID的任何数据访问请求,直到该信用计数调整到大于该请求发出阈值。
在另一方面,在第一存储器处实施一种用于管理存储器访问的方法。该第一存储器耦合到电子设备中的一个或多个处理集群和多个存储器块。该方法包括:将与多个客户端相关联的多个数据访问请求转发到多个存储器块。该电子设备的资源被划分成多个资源部分以供该多个客户端使用,并且每个资源部分被分配给相应客户端并且具有相应分区ID。该方法还包括:针对具有该相应分区ID的每个资源部分,标识与该相应ID相关联的用于访问该存储器块的数据访问请求的子集,以及跟踪对应于该存储器块的多个存储器带宽使用状态。每个存储器带宽使用状态与相应存储器块相关联,并且指示分配给该相应分区ID以访问该相应存储器块的存储器访问带宽中的至少多少被使用。该方法还包括:针对具有该相应分区ID的每个资源部分,响应于数据访问请求的该子集中的每个数据访问请求,确定该相应数据访问请求是访问对应存储器块,接收该对应存储器块的存储器带宽使用状态,并且将该对应存储器块的该存储器带宽使用状态报告给该一个或多个处理集群。
在又一方面,在存储器系统处实施一种用于跟踪存储器使用的方法。该存储器系统经由电子设备中的第一存储器耦合到一个或多个处理集群,并且包括存储器块。该方法包括:接收与多个客户端相关联的对该存储器块的数据访问请求的集合。资源被划分成多个资源部分以供该多个客户端使用,并且每个资源部分被分配给相应客户端并且具有相应分区ID。该方法包括:针对具有该相应分区ID的每个资源部分,标识与该相应ID相关联的用于访问该存储器块的数据访问请求的子集,以及跟踪与该相应分区ID相关联的存储器带宽使用状态。该存储器带宽使用状态指示分配给该相应分区ID以访问该存储器块的存储器访问带宽中的至少多少被使用。该方法还包括:响应于数据访问请求的该集合中的每个数据访问请求,将该存储器带宽使用状态报告给该一个或多个处理集群。
根据本说明书中的描述和附图,其他具体实施和优点对于本领域技术人员来说可以是显而易见的。
附图说明
图1是根据一些具体实施的典型电子设备中的示例系统模块的框图。
图2是根据一些具体实施的具有一个或多个处理集群的示例电子设备的框图。
图3A和图3B是根据一些具体实施的控制和跟踪用于访问存储在处理集群外部的存储器块中的数据的请求的示例电子设备的框图。
图4示出了根据一些具体实施的由处理集群的控制器实施以基于存储器带宽使用状态来控制资源分区的访问存储在存储器块中的数据的请求的示例过程。
图5A和图5B示出了根据一些具体实施的由存储器实施以跟踪单独存储器块的存储器带宽使用状态和该存储器的当前拥塞水平的示例过程。
图6A示出了根据一些具体实施的由高速缓存实施以跟踪存储器带宽使用状态和每个存储器块的当前拥塞水平的示例过程。
图6B示出了根据一些具体实施的由高速缓存实施以跟踪高速缓存自身的当前拥塞水平的示例过程。
图6C示出了根据一些具体实施的由高速缓存实施以跟踪存储器带宽使用状态、每个存储器块的当前拥塞水平以及高速缓存自身的当前拥塞水平的另一示例过程。
图7A、图7B和图7C分别是根据一些具体实施的用于管理多个资源分区的数据访问请求的存储在处理集群、高速缓存和存储器块处的数据的示例数据结构。
图8示出了根据一些具体实施的确定处理集群的拥塞水平以便控制该处理集群中的高速缓存预取的示例方法。
图9示出了根据一些具体实施的确定系统拥塞水平以便控制单独处理集群中的高速缓存预取的示例方法。
图10是根据一些具体实施的由电子设备管理对存储器104的存储器访问的方法的流程图。
图11是根据一些具体实施的在耦合到一个或多个处理集群和多个存储器块的第一存储器(例如,高速缓存)处跟踪存储器带宽使用的方法的流程图。
图12是根据一些具体实施的跟踪存储器系统的存储器块的存储器带宽使用的方法的流程图。
提及这些例示性实施方案和具体实施不在于限制或定义本公开的范围,而是提供用于有助于理解本公开的示例。具体实施方式中讨论了附加实施方案,并且在那里提供了进一步描述。根据本说明书中的描述和附图,其他具体实施和优点对于本领域技术人员来说可以是显而易见的。
具体实施方式
现在将详细地参考具体实施方案,这些实施方案的示例在附图中示出。在以下详细描述中,阐述了许多非限制性具体细节以便有助于理解本文呈现的主题。然而,将对本领域普通技术人员显而易见的是,可在不脱离权利要求书的范围的情况下使用各种另选方案,并且可在没有这些具体细节的情况下实践本主题。
图1是根据一些具体实施的典型电子设备中的示例系统模块100的框图。该电子设备中的系统模块100至少包括片上系统(SoC)102、用于存储程序、指令和数据的存储器模块104、输入/输出(I/O)控制器106、一个或多个通信接口(诸如网络接口108)以及用于将这些部件互连的一个或多个通信总线140。在一些具体实施中,I/O控制器106允许SoC 102经由通用串行总线接口与I/O设备(例如,键盘、鼠标或触控板)通信。在一些具体实施中,网络接口108包括用于Wi-Fi、以太网和蓝牙网络的一个或多个接口,每个接口允许电子设备与外部源(例如,服务器或另一电子设备)交换数据。在一些具体实施中,通信总线140包括将系统模块100中包括的各种系统部件互连并控制这些系统部件之间的通信的电路(有时被称为芯片集)。
在一些具体实施中,存储器模块104(例如,图2至图11中的存储器104、图12中的存储器系统)包括高速随机存取存储器,诸如DRAM、SRAM、DDR RAM或其他随机存取固态存储器设备。在一些具体实施中,存储器模块104包括非易失性存储器,诸如一个或多个磁盘存储设备、光盘存储设备、闪存存储器设备或其他非易失性固态存储设备。在一些具体实施中,存储器模块104或另选地存储器模块104内的非易失性存储器设备包括非暂态计算机可读存储介质。在一些具体实施中,系统模块100上预留了存储器插槽以用于接收存储器模块104。一旦被插入存储器插槽中,存储器模块104就集成到系统模块100中。
在一些具体实施中,系统模块100还包括选自以下项的一个或多个部件:
·存储器控制器110,其在电子设备中控制SoC 102与存储器部件(包括存储器模块104)之间的通信;
·固态驱动器(SSD)112,其应用集成电路组件以将数据存储在电子设备中,并且在许多具体实施中,基于NAND或NOR存储器配置;
·硬盘驱动器114,其是用于基于机电磁盘来存储和检索数字信息的常规数据存储设备;
·电源连接器116,其电耦合以接收外部电源;
·功率管理集成电路(PMIC)118,其将所接收的外部电源调制到其他期望DC电压电平,例如,5V、3.3V或1.8V,如电子设备内的各种部件或电路(例如,SoC 102)所要求;
·图形模块120,其根据一个或多个显示设备的期望图像/视频格式生成输出图像到该一个或多个显示设备的馈送;以及
·声音模块122,其促进在计算机程序的控制下向电子设备输入以及从电子设备输出音频信号。
需注意,通信总线140还将包括部件110至122的各种系统部件互连并控制这些系统部件之间的通信。
另外,本领域的技术人员知道,可使用其他非暂态计算机可读存储介质,因为新的数据存储技术被开发用于将信息存储在存储器模块104中的非暂态计算机可读存储介质中以及SSD 112中。这些新的非暂态计算机可读存储介质包括但不限于由生物材料、纳米线、碳纳米管和单独分子制造的那些非暂态计算机可读存储介质,即使相应数据存储技术当前正在开发并仍有待商业化。
在一些具体实施中,SoC 102被实施在集成电路上,该集成电路将一个或多个微处理器或中央处理单元、存储器、输入/输出端口和次级存储装置集成在单个衬底上。SoC 102被配置为接收由PMIC 118提供的一个或多个内部供电电压。在一些具体实施中,SoC 102和PMIC 118两者安装在主逻辑板上,例如安装在主逻辑板的两个不同区域上,并且经由形成在主逻辑板中的传导线彼此电耦合。如上所述,该布置引入寄生效应和电噪声,该寄生效应和电噪声可能折损SoC的性能,例如导致在内部电压供应处的电压降。另选地,在一些具体实施中,SoC 102和PMIC 118竖直地布置在集成半导体设备中,使得它们经由未形成在主逻辑板中的电连接彼此电耦合。SoC 102和PMIC 118的这种竖直布置可减小SoC 102和PMIC118之间的电连接的长度并避免由主逻辑板的传导线引起的性能退化。在一些具体实施中,SoC 102和PMIC 118的竖直布置部分地通过将薄膜电感器集成在SoC 102和PMIC 118之间的有限空间中来实现。
图2是根据一些具体实施的具有一个或多个处理集群202(例如,第一处理集群202-1、第M处理集群202-M)的示例电子设备200的框图。除了处理集群202之外,电子设备200还包括高速缓存220和存储器104。高速缓存220耦合到SOC 102上的处理集群202,该高速缓存还耦合到在SOC 102外部的存储器104。存储器104包括多个存储器块222,并且任选地是动态随机存取存储器(DRAM)。每个处理集群202包括一个或多个处理器204、集群高速缓存212和控制器216。集群高速缓存212耦合到一个或多个处理器204,并且维护用于一个或多个处理器204的一个或多个请求队列214。每个处理器204还包括相应预取器208,该相应预取器耦合到相应处理集群202的控制器216以控制与相应处理器204相关联的高速缓存预取。在一些具体实施中,每个处理器204还包括核心高速缓存218,该核心高速缓存任选地分为指令高速缓存和数据高速缓存,并且核心高速缓存218存储可立即由相应处理器204执行的指令和数据。
在一个示例中,第一处理集群202-1包括第一处理器204-1、……、第N处理器204-N、第一集群高速缓存212-1以及第一控制器216-1,其中N是大于1的整数。第一集群高速缓存212-1具有一个或多个第一请求队列214-1,并且每个第一请求队列包括从第一处理集群202-1的处理器204的子集接收的需求请求和预取请求的队列。在一些具体实施中,SOC 102仅包括单个处理集群202-1。另选地,在一些具体实施中,SOC 102至少包括附加处理集群202,例如第M处理集群202-M。第M处理集群202-M包括第一处理器206-1、……、第N'处理器206-N'、第M集群高速缓存212-M以及第M控制器216-M,其中N'是大于1的整数,并且第M集群高速缓存212-M具有一个或多个第M请求队列214-M。
在一些具体实施中,一个或多个处理集群202被配置为给电子设备提供中央处理单元(CPU)并与高速缓存分级结构相关联。例如,高速缓存分级结构包括三个级,这三个级基于它们的不同操作速度和大小来区分。出于本申请的目的,对存储器(包括高速缓存存储器)的“速度”的引用涉及向存储器写入数据或从存储器读取数据所需的时间(例如,更快的存储器与更慢的存储器相比具有更短的写入和/或读取时间),并且对存储器的“大小”的引用涉及存储器的存储容量(例如,更小的存储器与更大的存储器相比提供更少的存储空间)。核心高速缓存218、集群高速缓存212和高速缓存220分别对应于第一级(L1)高速缓存、第二级(L2)高速缓存和第三级(L3)高速缓存。每个核心高速缓存218保存将直接地由相应处理器204执行的指令和数据,并且在三个存储器级之间具有最快的操作速度和最小的大小。对于每个处理集群202,集群高速缓存212与核心高速缓存218相比在操作上更慢且在大小上更大,并且保存与保存在核心高速缓存218中的数据相比不太可能被相应处理集群202的处理器204访问的数据。高速缓存220由多个处理集群202共享,并且与每个核心高速缓存218和集群高速缓存212相比在大小上更大并在速度上更慢。在每个处理集群202中,相应控制器216监测与对高速缓存220和存储器104的存储器访问相关联的系统拥塞水平以及与集群高速缓存212相关联的本地集群拥塞水平,并且基于系统和/或集群拥塞水平来控制指令和数据到核心高速缓存218和/或集群高速缓存212的预取。每个单独的处理器204进一步监测处理器拥塞水平,以控制指令和数据从相应集群高速缓存212到相应单独的核心高速缓存218中的预取。
在一些具体实施中,第一处理集群202-1的第一集群高速缓存212-1耦合到同一处理集群中的单个处理器204-1,并且不耦合到任何其他处理器(例如,204-N)。在一些具体实施中,第一处理集群202-1的第一集群高速缓存212-1耦合到同一处理集群中的多个处理器204-1和204-N。在一些具体实施中,第一处理集群202-1的第一集群高速缓存212-1耦合到同一处理集群202-1中的一个或多个处理器204,并且不耦合到除第一处理集群202-1之外的任何集群中的处理器(例如,集群202-M中的处理器206)。在此类情况下,第一处理集群202-1的第一集群高速缓存212-1有时被称为第二级高速缓存。
在每个处理集群202中,每个请求队列214任选地包括从相应处理集群202的处理器204的子集接收的需求请求和预取请求的队列。从相应处理器204接收的每个数据访问请求被分配到请求队列214中的一个请求队列。在一些具体实施中,请求队列214仅接收从特定处理器204接收的请求。在一些具体实施中,请求队列214从处理集群202中的多于一个处理器204接收请求,从而允许在多个请求队列214之间平衡请求负载。具体地,在一些情况下,请求队列214从同一处理集群202中的不同处理器204接收仅一种类型的数据访问请求(例如,预取请求)。请求队列214中的每个数据访问请求在控制器216-1的控制下发出以访问高速缓存220和/或存储器104,从而实施存储器读取或写入操作。在一些具体实施中,仅将未被高速缓存220满足的数据访问请求进一步发送到存储器104,并且此类数据访问请求中的每个数据访问请求可由存储器104的相应存储器块222满足。
在每个处理集群202中,控制器216耦合到集群高速缓存212的输出端、集群高速缓存212中的请求队列214、以及处理集群202的一个或多个处理器204。具体地,控制器216经由集群高速缓存212的输出端耦合到高速缓存220和存储器104两者。电子设备200的计算和存储资源被划分成多个资源部分以供多个客户端224使用。每个资源部分被分配给相应客户端224并且具有相应分区标识符(ID)。请求队列214包括与多个客户端224相关联的用于请求对高速缓存220或存储器104中的多个存储器块222的存储器访问的多个数据访问请求。针对具有相应分区ID的每个资源部分(即,每个客户端224),控制器216跟踪对应于存储器104的不同存储器块222的多个存储器带宽使用状态(即,图4中的402)。每个存储器带宽使用状态与存储器104的相应存储器块222相关联,并且指示分配给相应分区ID以访问存储器104的相应存储器块222的存储器访问带宽中的至少多少被使用。控制器216根据多个存储器带宽使用状态确定与每个分区ID相关联的使用水平(即,图4中的406),基于综合使用水平调整信用计数(即,图4中的408),并且基于信用计数发出请求队列214中与每个分区ID(即,每个客户端224)相关联的下一数据访问请求(即,图4中的412)。
在一些具体实施中,关于集群水平,控制器216基于从请求队列214接收的信号来监测对应处理集群202的本地集群拥塞水平。具体地,控制器216基于从处理集群202中的一个或多个处理器204发送到集群高速缓存212的多个数据访问请求未被集群高速缓存212满足的程度来确定处理集群202的拥塞水平。根据确定处理集群202的拥塞水平满足要求处理集群202的拥塞水平高于第一集群拥塞阈值的第一拥塞标准,控制器216致使一个或多个处理器204中的第一相应处理器(例如,处理器204-1)将对集群高速缓存212的预取请求限制到具有至少第一阈值质量的预取请求(即,将预取请求限制到高质量预取)。具体地,在一个示例中,控制器216向处理器204(例如,处理器204-1中的预取器208-1)传输启用预取节制的信号或其他信息,使得仅具有至少第一阈值质量的预取请求被发送到集群高速缓存212。这任选地对应于第二预取节制模式M2,该第二预取节制模式不同于第一预取节制模式并且将由处理器204从集群高速缓存212进行的预取限制到具有图8中的至少第一阈值质量804的预取请求。
另选地,根据确定处理集群202的拥塞水平不满足第一拥塞标准(例如,处理集群202的拥塞水平低于第一集群拥塞阈值),控制器216放弃致使一个或多个处理器将对集群高速缓存212的预取请求限制到具有至少第一阈值质量的预取请求。例如,控制器216完全放弃致使处理器204限制对集群高速缓存212的预取请求,使得不限制任何质量的预取请求。这任选地对应于第一预取节制模式M1,其中控制器216不限制处理器204从集群高速缓存212进行的预取,如参考图8所解释。
在一些具体实施中,低于第一集群拥塞阈值的拥塞水平指示集群高速缓存212中的低拥塞程度,并且高于第一集群拥塞阈值的拥塞水平指示一个或多个更高拥塞程度。如果一个或多个更高拥塞程度对应于单个高拥塞程度,则高于第一集群拥塞阈值的拥塞水平指示该高拥塞程度。相反,如果一个或多个更高拥塞程度对应于一组拥塞程度(例如,中、高和非常高),则高于第一集群拥塞阈值的拥塞水平与该组拥塞程度中的任何程度相关联。
此外,在一些具体实施中,关于系统水平,控制器216基于从集群高速缓存212的输出端接收的系统繁忙水平信号(即,当前拥塞水平504或604)监测耦合到处理集群202的存储器系统的系统拥塞水平。系统繁忙水平信号包括由高速缓存220或存储器104接收但未满足的未完成的进行中请求的信息。具体地,控制器216基于高速缓存220接收的未完成的进行中请求的数量来获得高速缓存220的当前拥塞水平604(例如,图6B中的HN[2]),并且维护包括高速缓存220的所获得的当前拥塞水平604的第一拥塞水平历史(例如,图9中的历史902)。控制器216还基于存储器104接收的未完成的进行中请求的数量来获得存储器104的当前拥塞水平504(例如,图5B中的SN[2]),并且维护包括存储器104的当前拥塞水平504的第二拥塞水平历史(例如,图9中的历史904)。在一些情况下,将未被高速缓存220满足的数据访问请求进一步发送到存储器104,并且因此,存储器104接收的未完成的进行中请求的数量(即,当前拥塞水平504)基于发送到高速缓存220的数据访问请求未被高速缓存220满足的程度来确定。
控制器216基于高速缓存220的当前拥塞水平604和存储器104的当前拥塞水平504中的至少一者致使处理集群202限制来自处理集群202的预取请求。在一些具体实施中,基于第一拥塞水平历史和/或第二拥塞水平历史来限制来自处理集群202的预取请求。在一些具体实施中,控制器216被配置为基于第一拥塞水平历史确定高速缓存220的第一拥塞水平(其是复合拥塞水平),或者基于第二拥塞水平历史确定存储器104的第二拥塞水平(其是复合拥塞水平)。可基于第一拥塞水平和/或第二拥塞水平来禁止来自处理集群202的预取请求加入处理集群202的请求队列214。在一些具体实施中,第一拥塞水平的历史和/或第二拥塞水平的历史由控制器216自身维护。另外,应用于控制预取质量的集群拥塞阈值基于高速缓存220和存储器104的第一拥塞水平历史和/或第二拥塞水平历史来阐述。关于高速缓存220和存储器104的系统拥塞水平的应用的更多细节在下文中参考图8和图9进行解释。
图3A和图3B是根据一些具体实施的控制和跟踪用于访问存储在处理集群202外部的存储器块222中的数据的请求的示例电子设备300和350的框图。在电子设备300和350中的每一者中,一个或多个处理集群202耦合到高速缓存220,该高速缓存进一步耦合到包括多个存储器块222的存储器104。每个处理集群202包括一个或多个处理器204和耦合到该一个或多个处理器204的集群高速缓存212。每个处理器204还包括核心高速缓存218和预取器208,并且集群高速缓存212还包括一个或多个请求队列214和控制器216。核心高速缓存218、集群高速缓存212和高速缓存220形成高速缓存分级结构以向处理器204提供指令和数据。核心高速缓存218被配置为存储将由每个处理器204直接执行的指令和数据,并且集群高速缓存212被配置为提供不太可能被处理器204执行并且将在需要时加载到核心高速缓存218中的指令和数据。高速缓存220被配置为提供与集群高速缓存212中的那些指令和数据相比不太可能被处理器204执行并且将在需要时加载到集群高速缓存212中的指令和数据。处理集群202的集群高速缓存212包括一个或多个数据访问请求队列214,该一个或多个数据访问请求队列还包括在预定义时间段内从一个或多个处理器204发送到高速缓存220的多个数据访问请求,即,包括所有需求请求和所有预取请求。在一些具体实施中,如果高速缓存220未满足数据访问请求,则该数据访问请求被进一步发送到存储器104的多个存储器块222中的一个存储器块(例如,第一存储器块222A)。
参考图3A,在一些具体实施中,一个或多个数据访问请求队列214中的多个数据访问请求包括读取请求302,该读取请求被配置为请求从存储器104中的第一存储器块222A提取数据项。读取请求302与多个客户端224中的一个客户端(例如,第一客户端224A)相关联并且由处理集群202代表该多个客户端224中的该一个客户端作出。控制器216控制处理集群202向高速缓存220发出读取请求302。高速缓存220将读取请求302转发到第一存储器块222A。在接收到读取请求302时,第一存储器块222A提取读取请求所请求的数据项,确定读取请求与该多个客户端224中的该一个客户端相关联,并且获得已针对该多个客户端224中的该一个客户端本地跟踪的存储器带宽使用状态MBUS。存储器带宽使用状态MBUS指示分配给该多个客户端224中的该一个客户端以访问第一存储器块222A的存储器访问带宽中的至少多少被使用。响应于读取请求302,第一存储器块222A将所请求的数据项直接发送到处理集群202。在一些具体实施中,该多个客户端224中的该一个客户端的存储器带宽使用状态MBUS与所请求的数据项一起直接发送到处理集群202。另选地,在一些具体实施中,该多个客户端224中的该一个客户端的存储器带宽使用状态MBUS被发送到高速缓存220,并且高速缓存220将存储器带宽使用状态MBUS转发到处理集群202。另外,在一些具体实施中,响应于单个读取请求302,第一存储器块222A报告该多个客户端224中的该一个客户端的存储器带宽使用状态MBUS两次,即,从第一存储器块222A直接报告给处理集群202,以及经由高速缓存220间接地报告。
在一些具体实施中,每个处理集群202的一个或多个数据访问请求队列214中的多个数据访问请求包括多个读取请求302,并且每个读取请求302被配置为请求从存储器104中的相应存储器块222提取相应数据项。每个读取请求302与相应客户端224相关联并且由处理集群202代表该相应客户端作出。响应于每个读取请求302,对应于相应读取请求302的存储器块222将相应客户端224的存储器带宽使用状态MBUS直接地或经由高速缓存220间接地报告给处理集群202,从而允许处理集群202跟踪多个客户端224的多个存储器带宽使用状态MBUS。每个客户端224对应于各自与存储器104的存储器块222中的相应存储器块相关联的存储器带宽使用状态MBUS的子集。通过这些手段,针对每个客户端224,响应于由用于相应客户端224的处理集群202发出的读取请求302,更新与存储器104的存储器块222相关联的存储器带宽使用状态MBUS。
参考图3B,在一些具体实施中,一个或多个数据访问请求队列214中的多个数据访问请求包括写入请求304,该写入请求被配置为请求将数据项存储到存储器104中的第一存储器块222A中。写入请求304与多个客户端224中的一个客户端相关联并且由处理集群202代表该多个客户端224中的该一个客户端作出。因此,写入请求304使用分配给该多个客户端224中的该一个客户端的存储资源来实施。控制器216控制处理集群202向高速缓存220发出写入请求304。高速缓存220将写入请求304转发到第一存储器块222A。在接收到写入请求304时,第一存储器块222A根据其是否具有分配给该多个客户端224中的该一个客户端的任何剩余存储器访问带宽而任选地将包含在写入请求304中的数据项写入或不写入到存储器单元中。另外,第一存储器块222A确定写入请求304与该多个客户端224中的该一个客户端相关联,并且获得已针对该多个客户端224中的该一个客户端跟踪的存储器带宽使用状态MBUS。响应于写入请求304,第一存储器块222A向高速缓存220发送指示数据项是否已被写入第一存储器块222A中的写入确认消息。写入确认消息还包括该多个客户端224中的该一个客户端的存储器带宽使用状态MBUS。高速缓存220将写入确认消息转发到处理集群202,该写入确认消息包括该多个客户端224中的该一个客户端对第一存储器块222A的存储器带宽使用状态MBUS。
在一些具体实施中,一个或多个数据访问请求队列214中的多个数据访问请求包括多个读取请求304,并且每个写入请求304被配置为请求将相应数据项存储到存储器104中的相应存储器块222中。每个写入请求304与相应客户端224相关联并且由处理集群202代表该相应客户端224作出。响应于每个写入请求304,对应于相应写入请求304的存储器块222经由高速缓存220将相应客户端224的存储器带宽使用状态MBUS间接地报告给处理集群202。通过这些手段,针对每个客户端224,响应于由用于相应客户端224的处理集群202发出的写入请求304,更新与存储器104的存储器块222相关联的存储器带宽使用状态。
图4示出了根据一些具体实施的由处理集群202的控制器216实施以基于存储器带宽使用状态402来控制资源分区的访问存储在存储器块222中的数据的请求的示例过程400。如上所述,电子设备包括一个或多个处理集群202、高速缓存220和存储器104。此类计算和存储资源在多个客户端224之间共享,并且因此被划分成多个资源部分以供多个客户端224使用。每个资源部分被分配给相应客户端224,并且具有表示相应资源部分和相应客户端224的相应分区标识符(ID)。处理集群202的控制器216针对第一客户端224A实施过程400,该第一客户端被分配有与相应分区ID相关联的资源分区。每个客户端224任选地是订阅由电子设备提供的计算机服务的私人或商业实体。处理集群202的控制器216针对包括第一客户端224A的多个客户端中的每个客户端存储存储器块使用表401。
具体地,存储器块使用表401包括多个行。每个行对应于存储器104的存储器块222中的相应存储器块,并且被配置为存储并跟踪对应于存储器块222的多个存储器带宽使用状态402。每个存储器带宽使用状态402与相应存储器块222相关联,并且指示分配给第一客户端224A的相应分区ID以访问相应存储器块222的存储器访问带宽中的至少多少(例如,75%)被使用。例如,参考图4,存储器块使用表401包括与存储器104的32个存储器块222相对应的32个行。对于每一行,第一列包括表示每个存储器块222的存储器块标识的整数数字,并且第二列包括表示相应存储器带宽使用状态402(例如,是否分配给第一客户端224A以访问相应存储器块222的存储器访问带宽的多于75%被使用)的标志。至少存储器块0和31已使用分配给第一客户端224A的存储器访问带宽的多于75%,并且至少存储器块1没有使用分配给第一客户端224A的存储器访问带宽的多于75%。
多个数据访问请求在处理集群202的一个或多个请求队列214内等待。控制器216根据时钟频率操作,并且被配置为基于存储器块222的存储器带宽使用状态402来管理多个数据访问请求的发出。在一些情况下,该多个数据访问请求由多于一个客户端224的多于一个资源分区生成,并且包括第一客户端224A的资源分区的数据访问请求的子集。数据访问请求的子集还包括第一请求404A和在第一请求404A之后的第二请求404B。每个请求404任选地是从相应存储器块222读取数据项的读取请求(例如,读取请求302),或将数据项存储到相应存储器块222中的写入请求(例如,写入请求304)。控制器216基于存储在存储器块使用表401中的与不同存储器块222相关联的存储器带宽使用状态402来发出与第一客户端224A的资源分区相关联的访问不同存储器块222的数据访问请求的子集。
在一些具体实施中,控制器216根据存储在存储器块使用表401中的多个存储器带宽使用状态402生成与第一客户端224A的分区ID相关联的使用水平406。例如,使用水平406等于已使用分配给第一客户端224A的分区ID的存储器访问带宽的多于75%的存储器块222的数量,即,存储器块使用表401的第二列中的“Y”的数量。更具体地,在一个示例中,使用水平406等于11,并且32个存储器块222中的11个存储器块已使用分配给第一客户端224A的分区ID的存储器访问带宽的多于75%。
控制器216基于使用水平406调整(例如,累积)信用计数408,并且将信用计数408与请求发出阈值410进行比较以确定是否需要发出与第一客户端224A的分区ID相关联的下一数据访问请求412。如果信用计数408已累积超过请求发出阈值410,则发出与第一客户端224A的分区ID相关联的下一数据访问请求412。信用计数408任选地重置(414)为零或减少预定义值(例如,减少1,减少请求发出阈值410)。相反,如果信用计数408小于请求发出阈值410,则控制器216暂停(416)一个或多个请求队列214发出相应分区ID的任何数据访问请求,直到信用计数408调整到大于请求发出阈值410。
在一些具体实施中,控制器216至少部分地根据时钟频率来基于使用水平406调整信用计数408。在发出对访问与第一客户端224A相关联的分区ID的相应存储器块222的第一请求404A之后,更新存储在存储器块使用表401中的多个存储器带宽使用状态402中与第一客户端224A相关联的一个或多个存储器带宽使用状态。在更新存储器带宽使用状态402之后的预定义数量的时钟循环之后,根据存储在存储器块使用表401中的多个存储器带宽使用状态402来确定使用水平406。此外,在更新存储器带宽使用状态402之后的预定义数量的时钟循环之后并且直到发出下一数据访问请求412(例如,第二请求404B),周期性地(例如,每个后续时钟循环期间一次或每5个时钟循环一次)调整信用计数408并且将所调整的信用计数与请求发出阈值进行比较。
在一些具体实施中,在根据存储器带宽使用状态402确定与第一客户端224A的相应分区ID相关联的使用水平406之后,控制器216将使用水平406与同该分区ID相关联的一个或多个使用阈值(例如,高使用阈值High-SN和低使用阈值Low-SN)进行比较。在一些具体实施中,使用阈值High-SN或Low-SN针对不同客户端224而有所不同。另选地,在一些具体实施中,使用阈值High-SN或Low-SN对于不同客户端224是相同的。根据确定使用水平406等于或大于(418)第一客户端224A的高使用阈值High-SN,控制器216将信用计数408减少(420)与第一客户端224A的相应分区ID相对应的相应信用单位CU。在一些具体实施中,信用计数408每一个或多个时钟循环周期性地减少(422)相应信用单位CU,直到发出下一数据访问请求412(例如,第二请求404B)。相反,根据确定使用水平406等于或小于(424)第一客户端的低使用阈值Low-SN,控制器216将信用计数408增加(426)与分区ID相对应的相应信用单位。在一些具体实施中,信用计数408每一个或多个时钟循环周期性地增加(428)相应信用单位,直到发出下一数据访问请求412(例如,第二请求404B)。另外,根据确定使用水平406在高使用阈值High-SN和低使用阈值Low-SN之间,控制器216维持信用计数408。
针对相应客户端224(例如,第一客户端224A)的每个分区ID,信用计数408指示用于发出第一客户端224A的数据访问请求的优先级水平。在一些具体实施中,第一客户端的使用水平406为高(即,基本上接近其用于访问存储器块222的存储器访问带宽),并且基本上高的信用计数408仍然可导致发出与第一客户端224A相关联的下一数据访问请求412的相对高的优先级水平。尽管第一客户端的使用水平406高,但由于基本上高的信用计数408,仍然针对第一客户端224A的分区ID发出下一数据访问412。相反,在一些具体实施中,第一客户端的使用水平406为低(即,基本上远离其用于访问存储器块222的存储器访问带宽),并且基本上低的信用计数408仍然可导致发出与第一客户端224A相关联的下一数据访问请求412的相对低的优先级水平。尽管第一客户端的使用水平406低,但由于基本上低的信用单位408,仍然不能针对第一客户端224A的分区ID发出下一数据访问请求412。然而,在一些情况下,尽管第一客户端的使用水平406低,但基本上低的信用单位408随时间推移而逐渐增加,用于发出第一客户端224A的数据访问请求的相对低的优先级水平也增加,直到针对第一客户端224A的分区ID发出下一数据访问请求412。在最坏的情况下,第一客户端的使用水平406为高(即,基本上接近其用于访问存储器块222的存储器访问带宽),并且基本上低的信用单位408导致发出与第一客户端224A相关联的下一数据访问请求412的相对低的优先级水平。控制器216等待基本上低的信用计数408随时间推移而逐渐增加,直到针对第一客户端224A的分区ID发出下一数据访问请求412。因此,存储器块的较低使用水平406和/或停留在低使用水平上的较长持续时间导致发出下一数据访问请求412的较高机会。
在控制器216发出每个请求404之后,高速缓存220接收相应请求404并且将其转发到存储器104的对应存储器块222。在一些具体实施中,响应于从第一客户端224A的相应分区ID向相应存储器块222发出的读取请求404,与提供读取请求所请求的数据项同时地,相应存储器块222将相应存储器块222的相应存储器带宽使用状态402直接地更新(430)到处理集群202。另选地,在一些具体实施中,响应于从第一客户端224A的相应分区ID发出的读取请求404,相应存储器块222经由高速缓存220间接地更新(432A)相应存储器块222的相应存储器带宽使用状态402。另外,在一些具体实施中,在存储器块使用表401中更新相应存储器块222的相应存储器带宽使用状态402两次:从存储器104直接地更新(430),以及通过高速缓存220间接地更新(432A)。关于响应于读取请求而更新与第一客户端224A相关联的存储器带宽使用状态402的更多细节在上文中参考图3A进行了讨论。
此外,在一些具体实施中,响应于从第一客户端224A的相应分区ID向相应存储器块222发出的每个写入请求404,相应存储器块222通过高速缓存220更新(432B)与相应存储器块222相关联的相应存储器带宽使用状态402。对于写入请求404,不存在相应存储器带宽使用状态402的直接更新。在一些具体实施中,多个存储器块222被配置为接收从一个或多个处理集群202发送到高速缓存220的未被高速缓存220满足的数据访问请求。关于响应于写入请求而更新与第一客户端224A相关联的存储器带宽使用状态402的更多细节在上文中参考图3B进行了讨论。
在一些具体实施中,与存储器块222相关联的存储器带宽使用状态402中的每个存储器带宽使用状态由相应存储器块222作为多位状态号提供。使用水平406通过确定存储器带宽使用状态402的相应多位状态号中有多少等于预定义值来确定。例如,相应存储器块222的每个存储器带宽使用状态402具有两个位,并且使用水平406基于存储器块222的存储器带宽使用状态402中有多少等于“11”来确定。在一些具体实施中,存储器带宽使用状态402中与存储器块222相关联的每个存储器带宽使用状态是具有两个预定义值(例如,“Y”、“N”)中的一个预定义值的标志。
图5A和图5B示出了根据一些具体实施的由存储器104实施以跟踪单独存储器块222的存储器带宽使用状态402和存储器104的当前拥塞水平504的示例过程500和550。存储器104包括多个存储器块222。存储器控制器110耦合到存储器块222,以管理由存储器104接收的数据访问请求并且跟踪存储器带宽使用状态402和存储器104的当前拥塞水平504。存储器带宽使用状态402(即,SN[0:1)与第一客户端224A的相应分区ID相关联,并且指示分配给相应分区ID以访问第一存储器块222A的存储器访问带宽中的至少多少被使用,即,第一客户端224A的分区ID对第一存储器块222A的平均数据访问水平。当前拥塞水平504(即,SN[2])指示正在存储器104的第二请求队列510中等待的数据访问请求的第二总数量MCQ是否超过外部存储器容量的第二预定义部分(例如,75%)。
存储器控制器110确定由处理集群202发出的数据访问请求的集合与第一存储器块222A相关联,并且第一存储器块222A接收数据访问请求的该集合。数据访问请求的该集合与多个客户端224相关联,其中包括该第一存储器块222A的存储能力的资源被划分成多个资源部分以供多个客户端224使用。每个资源部分被分配给相应客户端224并且具有相应客户端224的相应分区ID。针对第一客户端224A,将用于访问第一存储器块222A的数据访问请求的子集标识为与第一客户端224A的相应ID相关联。针对第一客户端224A的相应分区ID跟踪第一存储器块的存储器带宽使用状态402中的一个存储器带宽使用状态。响应于数据访问请求的集合中的每个数据访问请求,存储器控制器110代表第一存储器块222A将与第一客户端224A的相应分区ID相关联的存储器带宽使用状态402报告给一个或多个处理集群202。
存储器控制器110针对包括第一客户端224A的分区ID的每个分区ID保持存储器块使用窗口506,并且存储器块使用窗口506对应于多个最近连续时钟循环。在存储器块使用窗口506中,在第二数量的时钟循环期间,第一客户端224A的相应分区ID已经访问了第一存储器块222A中的第三数量的字节。在接收到与第一客户端224A的相应分区ID相关联的每个数据访问请求时,存储器控制器110确定在存储器块使用窗口506中在第一存储器块222A中针对第一客户端224A处理的字节的总数量(即,窗口字节数)。窗口506包括历史数量的时钟循环,例如,等于16×128个时钟循环。字节的总数量(即,窗口字节数)表示在窗口506内第一客户端224A的分区ID对存储器块222的平均数据访问水平,并且与分配给相应分区ID以访问存储器块222的存储器访问带宽进行比较,以确定分配给相应分区ID以访问存储器块222的存储器访问带宽中的多少被使用,即,指示第一客户端224A对第一存储器块222A的平均数据访问水平的存储器带宽使用状态402。
在一些具体实施中,与第一客户端224A的相应分区ID相关联的存储器带宽使用状态402由第二多位状态号SN(例如,3b状态号SN[0:2]或2b状态号SN[0:1]的2个位)表示。如果分配给第一客户端224A的相应分区ID以访问第一存储器块222A的存储器访问带宽的一部分被使用并且满足第一使用条件UC1,则2b状态号SN[0:1]等于“00”。如果分配给第一客户端224A的相应分区ID以访问第一存储器块222A的存储器访问带宽的已使用部分满足第二使用条件UC2,则2b状态号SN[0:1]等于“01”。如果分配给第一客户端224A的相应分区ID以访问第一存储器块222A的存储器访问带宽的已使用部分满足第三使用条件UC3,则2b状态号SN[0:1]等于“10”。如果分配给第一客户端224A的相应分区ID以访问存储器块222的存储器访问带宽的已使用部分满足第四使用条件UC4(例如,已使用部分大于所分配的存储器访问带宽的75%),则2b状态号SN[0:1]等于“11”。因此,第二多位状态号SN[0:1]的量值随着分配给相应分区ID以访问存储器块的存储器访问带宽中的多少被使用而增加,存储器带宽使用状态402以及第一客户端224A对第一存储器块222A的平均数据访问水平也是如此。在一些实施方案中,使用条件UC1、UC2、UC3和UC4彼此排斥。
另选地,在一些具体实施中,与第一客户端224A的相应分区ID相关联的存储器带宽使用状态(例如,2b状态号SN[0:1])还基于存储器块222的另选当前拥塞水平和/或是否强制执行预定义存储器访问带宽(即,是否HardLimit=1)来跟踪。存储器控制器110监测正在存储器104的第二请求队列510中等待的数据访问请求的第二总数量MCQ,以及指示数据访问请求的第二总数量MCQ是否超过外部存储器容量的另选预定义部分的另选当前拥塞水平。
在一些具体实施中,第一存储器块222A的2b状态号SN[0:1]在两个条件下等于“11”。具体地,在第一条件下,第一存储器块222A到第一客户端224A的分配被大量使用,并且存储器104整体上过于繁忙。2b状态号SN[0:1]在以下情况时等于“11”:(a)分配给第一客户端224A的相应分区ID以访问存储器块222的存储器访问带宽中的多于75%被使用,以及(b)另选当前拥塞水平指示数据访问请求的第二总数量MCQ超过外部存储器容量的另选预定义部分(例如,x%,其中x任选地等于85)。在第二条件下,第一存储器块222A到第一客户端224A的分配被大量使用,并且该分配被严格地强制执行。2b状态号SN[0:1]在以下情况时等于“11”:(a)分配给第一客户端224A的相应分区ID以访问存储器块222的存储器访问带宽中的多于75%被使用,即,对存储器块的平均数据访问水平已经超过预定义阈值部分(100%);以及(b)强制执行预定义存储器访问带宽(即,HardLimit=1)。换句话讲,根据以下将存储器带宽使用状态402设置为与高使用状态相关联的预定义值:(a)确定第一客户端对第一存储器块222A的平均数据访问水平已经超过预定义存储器访问带宽的预定义阈值部分,以及(b)确定强制执行预定义存储器访问带宽或者确定存储器104的另选当前拥塞水平为高。
在一些具体实施中,存储器控制器110监测正在存储器104的第二请求队列510中等待的数据访问请求的第二总数量MCQ,并且第二请求队列510任选地包括对与其他客户端224相关联的其他分区ID的请求。存储器104的当前拥塞水平504指示数据访问请求的第二总数量MCQ是否超过包括存储器块222的存储器104的外部存储器容量的第二预定义部分(例如,75%)。在一些具体实施中,存储器104的当前拥塞水平504由第二多位状态号的位SN[2]表示。在一些具体实施中,存储器104的第二当前拥塞水平504用于控制预取请求的节制。在一些具体实施中,包括多个存储器块222的存储器104的第二当前拥塞水平504用于控制一个或多个处理集群的预取请求的质量。关于存储器104的当前拥塞水平504的应用的更多细节在下文中参考图8和图9进行讨论。
图6A示出了根据一些具体实施的由高速缓存220实施以跟踪每个存储器块222的存储器带宽使用状态402和存储器104的当前拥塞水平504的示例过程600。高速缓存220耦合到一个或多个处理集群202和包括多个存储器块222的存储器104。高速缓存220将与多个客户端224相关联的多个数据访问请求从处理集群202转发到存储器104的多个存储器块222。考虑到资源被划分成多个资源部分以供多个客户端224使用,每个资源部分被分配给相应客户端224并且具有相应分区标识符(ID)。高速缓存220跟踪用于访问存储器104的所有存储器块222的所有客户端224的存储器带宽使用状态402以及存储器104的当前拥塞水平。为方便起见,过程600的解释集中于与具有相应分区ID的相应资源部分相关联的第一客户端224A。
响应于数据访问请求的子集(例如,与第一客户端224A相关联的所有写入请求以及读取请求的子集)中的每个数据访问请求,高速缓存220接收存储器带宽使用状态402(例如,SN[0:1])和存储器104的当前拥塞水平504(例如,SN[2])。高速缓存220由此跟踪对应于用于第一客户端224A的存储器块222的多个存储器带宽使用状态402。每个存储器带宽使用状态与相应存储器块222相关联,并且指示分配给相应分区ID以访问相应存储器块222的存储器访问带宽中的至少多少(例如,75%)被使用。在一些具体实施中,每个存储器带宽使用状态包括从相应存储器块222接收的第二多位状态号SN(例如,“11”、“00”、“10”和“01”),并且被转换成存储在第一多位状态号HN的第一单个位(例如,HN[0])中的标志。例如,在一些具体实施中,对于每个存储器块222,如果与第一客户端224A相关联的相应存储器带宽使用等于“11”,则HN[0]等于“1”,否则,HN[0]等于“0”。高速缓存220还跟踪存储器104的当前拥塞水平504(例如,SN[2]),该当前拥塞水平被转换成第一多位状态号HN的第二单个位(例如,HN[1])。在一些具体实施中,高速缓存220保存与第一客户端224A相关联的每个存储器块222的最近更新的存储器带宽使用状态402(例如,在HN[0]中)和存储器104的当前拥塞水平504(例如,在HN[1]中)的记录602。
响应于由高速缓存220转发到用于第一客户端224A的存储器块222的数据访问请求的子集中的每个数据访问请求,高速缓存220接收关于存储器带宽使用状态402和/或存储器104的当前拥塞水平504的记录602的更新,并且将该存储器带宽使用状态和/或当前拥塞水平报告给已经作出相应数据请求的处理集群202。在一些具体实施中,响应于每个数据访问请求并且与数据访问请求是读取请求还是写入请求无关,高速缓存220接收存储器块222的存储器带宽使用状态402和/或存储器104的当前拥塞水平504的更新,并且将该存储器带宽使用状态和/或当前拥塞水平报告给处理集群202。在一些具体实施中,高速缓存220仅响应于每个写入请求而接收存储器带宽使用状态402和/或存储器104的当前拥塞水平504的更新,并且将该存储器带宽使用状态和/或当前拥塞水平报告给处理集群202。
图6B示出了根据一些具体实施的由高速缓存220实施以跟踪高速缓存220自身的当前拥塞水平604的示例过程650。高速缓存220监测正在第一请求队列610中等待的与高速缓存220相关联的数据访问请求的第一总数量HNQ,并且第一请求队列610任选地包括对除第一客户端224A的相应分区ID之外的其他分区ID的请求。高速缓存220的当前拥塞水平604指示数据访问请求的第一总数量HNQ是否超过该高速缓存220的系统高速缓存容量的第一预定义部分(例如,c%,其中c任选地等于75)。在一些具体实施中,当前拥塞水平604由第一多位状态号HN的位HN[2]表示。在一些具体实施中,高速缓存220的第一当前拥塞水平604用于控制预取请求的节制。在一些具体实施中,高速缓存220的第一当前拥塞水平604用于控制一个或多个处理集群202的预取请求的质量。
响应于由高速缓存220转发到存储器块222的数据访问请求的子集中的每个数据访问请求,高速缓存220将第一当前拥塞水平604与相应存储器块222的存储器带宽使用状态402和/或存储器104的当前拥塞水平504共同报告给已经做出相应数据请求的处理集群202。在一些具体实施中,处理集群202确定第一当前拥塞水平604是否满足节制条件。根据确定第一当前拥塞水平604满足节制条件,处理集群202节制来自多个资源部分的多个预取请求,即,不使该多个预取请求进入处理集群202的一个或多个请求队列214中。在一些具体实施中,根据确定第一当前拥塞水平604和第二当前拥塞水平504满足预取控制条件,处理集群202的控制器216选择质量超过对应于预取控制条件的阈值质量的预取请求的第一子集,将预取请求的该子集包括在存储器访问请求队列214中,并且将质量不超过阈值质量的预取请求的第二子集从一个或多个请求队列214中排除。关于高速缓存220的当前拥塞水平604的应用的更多细节在下文中参考图8和图9进行讨论。
图6C示出了根据一些具体实施的由高速缓存220实施以跟踪存储器带宽使用状态402、每个存储器块的当前拥塞水平504以及高速缓存220自身的当前拥塞水平604的另一示例过程680。高速缓存220跟踪用于访问存储器104的所有存储器块222的所有客户端224的存储器带宽使用状态402以及存储器104的当前拥塞水平。为方便起见,过程680的解释集中于与具有相应分区ID的相应资源部分相关联的第一客户端224A。
响应于数据访问请求的子集(例如,与第一客户端224A相关联的所有写入请求以及读取请求的子集)中的每个数据访问请求,高速缓存220接收存储器带宽使用状态402(例如,SN[0:1])和存储器104的当前拥塞水平504(例如,SN[2])。高速缓存220由此跟踪对应于用于第一客户端224A的存储器块222的多个存储器带宽使用状态402。每个存储器带宽使用状态与相应存储器块222相关联,并且指示分配给相应分区ID以访问相应存储器块222的存储器访问带宽中的至少多少(例如,75%)被使用。在一些具体实施中,每个存储器带宽使用状态402(例如,SN[0:1])包括从相应存储器块222接收的第二多位状态号SN(例如,“11”、“00”、“10”和“01”),并且被转换成存储在第一多位状态号HN的第一单个位(例如,HN[2])中的标志。例如,在一些具体实施中,对于每个存储器块222,如果与第一客户端224A相关联的相应存储器带宽使用402等于“11”,则HN[2]等于“1”,与存储器104的当前拥塞水平504(例如,SN[2])是“0”还是“1”无关。相反,如果与第一客户端224A相关联的相应存储器带宽使用402不等于“11”,则HN[2]等于“0”。针对第一客户端402,经由第一多位状态号HN的第一单个位(例如,HN[2])将存储器块222的存储器带宽使用状态402提供到控制器216,该第一多位状态号HN由控制器216进一步应用以控制第一客户端402对访问存储在存储器块222中的数据的请求。
在一些具体实施中,第一多位状态号HN还包括两个附加位HN[0]和HN[1]。高速缓存220监测正在第一请求队列610中等待的与高速缓存220相关联的数据访问请求的第一总数量HNQ,并且第一请求队列610任选地包括对除第一客户端224A的相应分区ID之外的其他分区ID的请求。高速缓存220的当前拥塞水平604是基于数据访问请求的第一总数量HNQ生成的,并且指示数据访问请求的第一总数量HNQ是否超过该高速缓存220的系统高速缓存容量的第一预定义部分(例如,c%,其中c任选地等于75)。在一些具体实施中,高速缓存220的该当前拥塞水平604和存储器104的当前拥塞水平504(例如,SN[2])由第一多位状态号HN的两个附加位HN[0]和HN[1]表示。在一些具体实施中,高速缓存220的第一当前拥塞水平604和/或存储器104的第二当前拥塞水平504(例如,SN[2])用于控制预取请求的节制。在一些具体实施中,高速缓存220的第一当前拥塞水平604和/或存储器104的第二当前拥塞水平504(例如,SN[2])用于控制一个或多个处理集群202的预取请求的质量。换句话讲,高速缓存220将包括HN[0:1]的第一多位状态号HN返回到控制器216,该控制器使用HN[0:1]来控制预取请求的节制和/或质量。关于高速缓存220的当前拥塞水平604的应用的更多细节在下文中参考图8和图9进行讨论。
图7A、图7B和图7C分别是根据一些具体实施的用于管理多个资源分区的数据访问请求的存储在处理集群202、高速缓存220和存储器块222处的数据的示例数据结构。电子设备(例如,服务器或服务器系统)被配置为向多个客户端224提供服务,并且因此,电子设备的计算和存储资源被划分成多个资源部分以供多个客户端224使用。每个资源部分被分配给相应客户端224并且具有与相应客户端224相关联的相应分区ID。处理集群202具有一个或多个请求队列214,该一个或多个请求队列存储与多个客户端224相关联的对存储器104的多个存储器块222的多个数据访问请求。数据结构700、740和780应用于管理存储在每个处理集群202的一个或多个请求队列214中的数据访问请求。
参考图7A,针对具有相应客户端224(例如,第一客户端224A)的相应分区ID的每个资源部分,处理集群202应用存储器块使用表401,该存储器块使用表包括存储器104的多个存储器块222的多个存储器带宽使用状态402。每个存储器带宽使用状态402唯一地与相应存储器块222相关联,并且指示分配给相应分区ID以访问相应存储器块的存储器访问带宽中的至少多少被使用。处理集群202基于存储器块222的存储器带宽使用状态402来应用使用水平406、信用计数408和请求发出阈值410,以动态地控制存储在一个或多个请求队列214中的数据访问请求。具体地,对于每个资源部分,使用水平406是存储器带宽使用状态402的组合,并且信用计数408基于使用水平406来调整(例如,增加或减少信用单位CU)。根据确定信用计数408大于请求发出阈值410,发出与相应分区ID相关联的下一数据访问请求412。相反,根据确定信用计数408不大于请求发出阈值410,继续调整信用计数408,直到可发出下一数据访问请求412。
应用预定义数量的时钟循环和与每个客户端224相关联的一个或多个使用阈值(例如,高使用阈值High-SN和低使用阈值Low-SN)来控制信用计数408的调整。在发出与相应客户端224相关联的每个数据请求之后,就更新存储器带宽使用状态402的子集,而直到已经经过预定义数量的时钟循环,才更新相应客户端224的使用水平406。将使用水平406与一个或多个使用阈值进行比较,以确定信用计数408是增加了信用单位CU、减少了信用单位CU还是保持不变。每一个或多个时钟循环周期性地实施此类调整,直到信用计数408的量值触发下一数据访问请求412的发出。
在一些具体实施中,处理集群202还跟踪存储器104的当前拥塞水平504和高速缓存220的当前拥塞水平604。处理集群的控制器216维护包括高速缓存220的所获得的当前拥塞水平604的第一拥塞水平历史(例如,图9中的历史902),并且维护包括存储器104的当前拥塞水平504的第二拥塞水平历史(例如,图9中的历史904)。在一些情况下,将未被高速缓存220满足的数据访问请求进一步发送到存储器104,并且因此,存储器104接收的未完成的进行中请求的数量基于发送到高速缓存220的数据访问请求未被高速缓存220满足的程度来确定。控制器216基于高速缓存220的当前拥塞水平604和存储器104的当前拥塞水平504中的至少一者致使处理集群202限制来自处理集群202的预取请求。在一些具体实施中,基于第一拥塞水平历史和/或第二拥塞水平历史来限制来自处理集群202的预取请求。关于高速缓存220和存储器104的系统拥塞水平的应用的更多细节在下文中参考图9进行解释。
参考图7B,高速缓存220耦合在处理集群202和存储器104的存储器块222之间。高速缓存220保存每个客户端的针对每个存储器块222的最近更新的存储器带宽使用状态402(例如,在HN[0]中)和存储器104的当前拥塞水平504(例如,在HN[1]中)的记录602。高速缓存220存储高速缓存220自身的当前拥塞水平604。高速缓存220具有第一请求队列610,并且监测正在第一请求队列610中等待的数据访问请求的第一总数量HNQ。高速缓存220的当前拥塞水平604指示数据访问请求的第一总数量HNQ是否超过该高速缓存220的系统高速缓存容量的第一预定义部分(例如,c%)。
参考图7C,存储器块222耦合到处理集群202和高速缓存220两者,并且经由高速缓存220从处理集群202接收不同客户端224的数据访问请求。针对存储器块222中的每个客户端224跟踪存储器块使用窗口506。确定在窗口506中针对每个客户端224(例如,第一客户端224A)处理的字节的总数量(即,窗口字节数),并应用其导出每个客户端224的分区ID对存储器块222的平均数据访问水平。该平均数据访问水平用于确定每个客户端的存储器带宽使用状态402,即,分配给相应分区ID以访问存储器块222的存储器访问带宽中的多少被使用。
存储器块222还跟踪第二请求队列510、在队列510中等待的数据访问请求的第二总数量MCQ、外部存储器容量的第二预定义部分、外部存储器容量的另选预定义部分(例如,x%)以及存储器104的当前拥塞水平504。当前拥塞水平504指示正在第二请求队列510中等待的数据访问请求的第二总数量MCQ是否超过外部存储器容量的第二预定义部分(例如,75%)。处理集群202中的预取请求的节制部分地由存储器104的当前拥塞水平504控制。另外,在一些具体实施中,每个客户端的存储器带宽使用状态402部分地基于正在第二请求队列510中等待的数据访问请求的第二总数量MCQ是否超过外部存储器容量的另选预定义部分(例如,75%)来确定。例如,当对该特定存储器块222的平均数据访问水平以及在第二请求队列510中等待的数据访问请求的第二总数量MCQ两者都高时(例如,当对该特定存储器块222的平均数据访问水平已经超过预定义存储器访问带宽的预定义阈值部分(例如,100%)并且数据访问请求的第二总数量MCQ超过外部存储器容量的另选预定义部分(例如,75%)时),存储器带宽使用状态402等于“11”。
图8示出了根据一些具体实施的确定拥塞水平以用于控制处理集群202(例如,图2的第一处理集群202-1)中的高速缓存预取的示例方法800。在该处理集群202中,集群高速缓存202的控制器216基于从处理集群202中的处理器204发送到集群高速缓存212的数据访问请求未被集群高速缓存212满足的程度来确定处理集群202的拥塞水平,并且控制来自与处理集群212中的第一相应处理器204-1相关联的预取器208的预取请求。具体地,根据确定处理集群202的拥塞水平满足要求处理集群202的拥塞水平高于第一集群拥塞阈值802的第一拥塞标准,控制器216致使一个或多个处理器204中的第一相应处理器204-1将对集群高速缓存212的预取请求限制到具有至少第一阈值质量804的预取请求。相反,根据确定处理集群202的拥塞水平不满足第一拥塞标准,控制器216放弃致使一个或多个处理器204(包括第一相应处理器204-1)将对集群高速缓存212的预取请求限制(806)到具有至少第一阈值质量804的预取请求。换句话讲,当处理集群202的拥塞水平低于第一集群拥塞阈值802时,控制器216在第一预取节制模式M1下不限制处理集群202的预取请求;并且当处理集群202的拥塞水平超过集群拥塞阈值802时,控制器216致使第一相应处理器204-1在第二预取节制模式M2下将预取请求限制到具有至少第一阈值质量804的预取请求,即,将预取请求限制到高质量预取。
在一些具体实施中,根据确定处理集群202的拥塞水平满足要求处理集群202的拥塞水平高于第二集群拥塞阈值808(其高于第一集群拥塞阈值802)的不同于第一拥塞标准的第二拥塞标准,控制器216致使第一相应处理器204-1将预取请求限制到具有高于第一阈值质量804的至少第二阈值质量810的预取请求。在一些具体实施中,如果处理集群202的拥塞水平高于第二集群拥塞阈值808(例如,指示高拥塞而不是低拥塞或中拥塞),则控制器216致使处理集群202的至少相应处理器204(例如,第一相应处理器204-1)在第三预取节制模式M3下操作,在该第三预取节制模式中,预取被限制到具有至少第二阈值质量810的预取(例如,仅允许至少为非常高质量预取的预取)。相反,在第一预取节制模式M1下,不限制预取,并且在第二预取节制模式M2下,预取被限制到质量在第一阈值质量804和第二阈值质量810之间的预取(例如,允许至少为高质量预取的预取)。
在一些具体实施中,根据确定处理集群202的拥塞水平满足第三拥塞标准,控制器216致使第一相应处理器204-1完全放弃将预取请求传输(812)到高速缓存,例如,不考虑所请求的预取的质量。在一些具体实施中,第三拥塞标准包括:(1)处理集群202的拥塞水平高于集群拥塞阈值808的第一要求,以及(2)电子设备200的系统拥塞水平历史822满足第一系统拥塞条件816(例如,系统拥塞水平历史中的75%为高)的第二要求。系统拥塞水平历史822由控制器216基于从高速缓存220接收的系统繁忙水平信号(即,当前拥塞水平604)来监测,从而指示高速缓存220的拥塞水平。例如,系统拥塞水平历史822基于系统繁忙水平信号的多个采样值而用“H”或“L”填充。第一系统拥塞条件816要求系统拥塞水平历史822中的75%或更多填充有“H”,以启用第四预取节制模式M4(即,节制所有模式)。相反,在一些具体实施中,当满足第二系统拥塞条件时,例如当系统拥塞水平历史822中的25%或更少填充有“H”时,控制器216禁用并重置第四预取节制模式M4。
在一些具体实施中,从处理集群202中的处理器204发送到集群高速缓存212的多个数据访问请求未被集群高速缓存212满足的程度由处理集群202的一个或多个历史拥塞水平表示。一个或多个历史拥塞水平被维护在处理集群202的拥塞水平历史818中。处理集群202的拥塞水平基于拥塞水平历史818中的一个或多个历史拥塞水平中的一部分或全部来确定。在一个示例中,拥塞水平历史818中的每个历史拥塞水平对应于不同的相应时间段,并且表示在相应时间段期间数据访问请求未被高速缓存满足的程度。处理集群202的历史拥塞水平可能已经周期性地采样并存储在拥塞水平历史818中。在一些具体实施中,相应历史拥塞水平(或每个相应历史拥塞水平)具有从预先确定的拥塞水平值集合选择的值。例如,在使用两个拥塞水平的情况下,相应历史拥塞水平具有例如基于第一集群拥塞阈值802定义的第一拥塞水平值(例如,“低”)或第二拥塞水平值(例如,“高”)。在另一示例中,在使用三个拥塞水平的情况下,相应历史拥塞水平具有例如基于集群拥塞阈值802和808定义的第一拥塞水平值(例如,“低”)、或第二拥塞水平值(例如,“中”)、或第三拥塞水平值(例如,“高”)。本领域普通技术人员将认识到,可使用任何数量的拥塞水平,并且相应地使用任何数量的不同的拥塞水平值。
在一些具体实施中,基于与拥塞阈值802和808的比较来确定处理集群202的当前集群拥塞水平818A,并且将其存储到拥塞水平历史818中,例如,取代其中存储的最旧历史拥塞水平。基于包括处理集群202的当前集群拥塞水平818A的拥塞水平历史818的一部分或全部来确定处理集群202的拥塞水平。例如,根据确定当前集群拥塞水平(例如,等于“高”)818A大于处理集群202的拥塞水平(例如,等于“中”),将处理集群202的拥塞水平增加一个水平或增加到当前集群拥塞水平818A。根据确定历史818中的所有现有历史拥塞水平(例如,等于“中”或“低”)都低于处理集群202的拥塞水平(例如,等于“高”),将处理水平202的拥塞水平减少一个水平。否则,不改变处理级202的拥塞水平。当前集群拥塞水平818是基于集群拥塞阈值802和808测量的最近集群拥塞水平。另选地,在一些具体实施中,结合历史拥塞阈值(例如,拥塞水平历史818的10%)来应用第一集群拥塞阈值802和第二集群拥塞阈值808。例如,如果拥塞水平历史818的一部分(例如,75%)高于第一集群拥塞阈值802(即,具有“中”或“高”的值)并且超过历史拥塞阈值(例如,10%),则处理集群202的拥塞水平满足第一拥塞标准。
需注意,在一些具体实施中,基于从处理集群202中的一个或多个处理器204发送到集群高速缓存212的多个数据访问请求未被高速缓存212满足的程度来确定处理集群202的拥塞水平,而不考虑一个或多个处理器204中的哪一个处理器发送了多个数据访问请求。也就是说,在不考虑来自一个或多个处理器204中的特定处理器的数据访问请求未被集群高速缓存212满足的程度的情况下确定处理集群202的拥塞水平。
在一些具体实施中,确定处理集群202的拥塞水平包括:将从处理集群202中的一个或多个处理器204发送到集群高速缓存212的未被集群高速缓存212满足的数据访问请求(例如,也称为高速缓存未命中)的数量与一个或多个高速缓存未命中阈值进行比较。每个集群拥塞阈值802和808包括相应高速缓存未命中阈值802'或808'。在一些具体实施中,将处理集群202的高速缓存未命中的数量与一个或多个高速缓存未命中阈值802'或808'进行比较以确定高速缓存未命中值(例如,低、中、高等),当确定处理集群202的拥塞水平时,考虑该高速缓存未命中值。例如,如果处理集群202的高速缓存未命中的数量低于第一高速缓存未命中阈值802',则在确定处理集群202的拥塞水平时考虑第一高速缓存未命中值(例如,低值)。在另一示例中,如果处理集群202的高速缓存未命中的数量高于第一高速缓存未命中阈值802',则在确定处理集群202的拥塞水平时考虑第二高速缓存未命中值(例如,中值或高值)。再如,如果处理集群202的高速缓存未命中的数量高于第二高速缓存未命中阈值808',则在确定处理集群202的拥塞水平时考虑第三高速缓存未命中值(例如,高值)。在一些具体实施中,在处理集群202的拥塞水平历史818中的一个或多个历史拥塞水平的上下文中考虑高速缓存未命中值。在一个示例中,高速缓存未命中值定义存储在处理集群202的拥塞水平历史818中的历史拥塞水平。
此外,在一些具体实施中,基于电子设备200的系统拥塞水平(例如,图9中的910)来确定一个或多个高速缓存未命中阈值(即,高速缓存未命中阈值802'和808')。在一些具体实施中,根据确定系统拥塞水平是第一拥塞值826而使用一个或多个高速缓存未命中阈值的第一集合820,并且根据确定系统拥塞水平是不同的第二拥塞值828而使用一个或多个高速缓存未命中阈值的不同的第二集合820'。如果需要,可针对任何数量的不同系统拥塞值使用一个或多个高速缓存未命中阈值的不同的附加集合。在一些具体实施中,第二拥塞值828低于第一拥塞值826,并且每个高速缓存未命中阈值802'或808'被调整到与第二拥塞值828相关联的更高值,因为在系统拥塞低的情况下,可容忍更高量的集群拥塞。例如,当系统拥塞水平从第一拥塞值826下降到第二拥塞值828时,将第一高速缓存未命中阈值802'从30%调整到50%。另一方面,系统拥塞水平越高,集合820中的一个或多个高速缓存未命中阈值就越低,因为在系统拥塞已经为高的情况下,与系统拥塞低的情况相比,(例如,处理集群202的)更低量的集群拥塞可保证节制。
在一些具体实施中,多个数据访问请求包括在预定义时间段内从一个或多个处理器204发送到集群高速缓存212的所有数据访问请求,即,包括所有需求请求和所有预取请求。
在一些具体实施中,控制器216确定相应处理器204-1或204-N的拥塞水平低于与用于集群高速缓存212的拥塞阈值802或808不同的处理器拥塞阈值836,而不管处理集群202的拥塞水平如何,并且放弃限制来自相应处理器204-1或204-N的对集群高速缓存212的预取请求。也就是说,在这些具体实施中,当相应处理器的拥塞水平低于处理器拥塞阈值836(例如,等于“L”)时,不基于集群拥塞水平和系统拥塞水平来限制来自相应处理器204-1或204-N的预取请求。相反,如果相应处理器204-1或204-N的拥塞水平超过处理器拥塞阈值836(例如,等于“H”),则基于处理集群和系统的拥塞水平来限制或节制来自相应处理器204-1或204-N的对集群高速缓存212的预取请求。相应处理器204-1或204-N的拥塞水平基于从相应处理器204-1或204-N发送到集群高速缓存212的数据访问请求未被集群高速缓存212满足的程度来确定,例如与从除相应处理器204-1或204-N之外的任何处理器发送到集群高速缓存212的数据访问请求是否被集群高速缓存212满足无关。
换句话讲,在一些具体实施中,第一拥塞标准进一步要求相应处理器204的拥塞水平高于处理器拥塞阈值836,以便控制器216限制来自相应处理器的预取请求。在一些具体实施中,基于相应处理器的拥塞水平是否高于处理器拥塞阈值836来确定是否限制来自相应处理器的预取请求优先于关于是否限制预取请求的其他确定(例如,相对于关于处理集群202的拥塞水平的第一拥塞标准、第二拥塞标准和/或第三拥塞标准)。
在一些具体实施中,控制器216维护存储每个处理器204的历史拥塞水平的处理器拥塞水平历史834。基于处理器204的拥塞水平来限制来自相应处理器的预取请求,该拥塞水平基于该处理器204的拥塞水平历史834中的至少一部分来确定。记录处理器204的当前拥塞水平并且将其与处理器拥塞阈值836进行比较,并且基于比较结果来确定多个值(例如,“L”和“H”)中的一个值,并且将其作为当前拥塞水平834A存储在该处理器204的拥塞水平历史834中(例如,取代历史834中的最旧高速缓存未命中水平)。根据确定处理器204的当前拥塞水平834A指示比处理器202的拥塞水平高的拥塞水平,将处理器202的拥塞水平增加一个水平或增加到当前拥塞水平834A。根据确定处理器204的整个拥塞水平历史834低于处理器202的拥塞水平,将处理器202的拥塞水平减少一个水平或减少到更低的拥塞水平,例如从“H”减少到“L”。
此外,在一些具体实施中,处理器拥塞阈值836包括处理器高速缓存未命中阈值836'。确定处理器204的拥塞水平包括:将从相应处理器204发送到集群高速缓存212的未被集群高速缓存212满足的数据访问请求(即,高速缓存未命中)的数量与处理器高速缓存未命中阈值836进行比较。例如,如果处理器204的高速缓存未命中的数量低于高速缓存未命中阈值836',则在确定处理器204的拥塞水平时考虑第一高速缓存未命中值(例如,低值);如果处理器204的高速缓存未命中的数量高于高速缓存未命中阈值836',则在确定处理器204的拥塞水平时考虑第二高速缓存未命中值(例如,中值或高值)。具体地,在一些具体实施中,针对在采样持续时间期间未被集群高速缓存212满足的数据访问请求的当前数量,确定当前高速缓存未命中。将当前高速缓存未命中与高速缓存未命中阈值836进行比较,并且基于比较结果来确定多个高速缓存未命中值(例如,“L”和“H”)中的一个高速缓存未命中值,并且将其作为当前高速缓存未命中水平834A存储在该处理器204的拥塞水平历史834中(例如,取代历史834中的最旧高速缓存未命中水平)。根据确定处理器204的当前高速缓存未命中水平834A指示比处理器202的拥塞水平高的拥塞水平,将处理器202的拥塞水平增加一个水平或增加到当前高速缓存未命中水平834A。根据确定处理器204的拥塞水平历史834指示比处理器202的拥塞水平低的拥塞水平(例如,拥塞水平历史834中的所有高速缓存未命中水平都低于处理器202的拥塞水平),将处理器202的拥塞水平减少一个水平或减少到更低的拥塞水平,例如从“H”减少到“L”。
在一些具体实施中,电子设备200包括第二处理集群202-M,该第二处理集群具有与处理集群202-1的一个或多个处理器204不同的一个或多个第二处理器206。控制器216-1限制由处理集群202-1进行的预取请求,与来自第二处理集群202-M的一个或多个第二处理器206的预取请求是否被限制无关。在一些具体实施中,由第二处理集群202-M进行的预取根据本文相对于处理集群202-1描述的用于控制预取的方法中的任一方法来控制。在一些具体实施中,由第二处理集群202-M进行的预取可通过间接地影响系统拥塞来间接地影响由处理集群202-1进行的预取;然而,在确定是否限制由处理集群202-1进行的预取时,并不直接考虑第二处理集群202-M的预取或预取节制。
图9示出了根据一些具体实施的确定系统拥塞水平以用于控制单独处理集群202(例如,第一处理集群202-1)中的高速缓存预取的示例方法900。将处理集群202的处理器204的数据访问请求发送到集群高速缓存212。如果集群高速缓存212未满足该数据访问请求,则继续将其发送到高速缓存220,该高速缓存由处理集群202与一个或多个其他处理集群共享。如果高速缓存220未满足数据访问请求,则进一步将其发送到存储器104。系统拥塞水平指示有多少数据访问请求从处理器204发送到高速缓存220或存储器104。具体地,由控制器216维护第一拥塞水平历史902和第二拥塞水平历史904。基于由高速缓存220接收的未完成的进行中请求的数量来获得高速缓存220的当前拥塞水平604,并且将其存储在第一拥塞水平历史902中。基于由存储器104接收的未完成的进行中请求的数量来获得存储器104的当前拥塞水平504,并且将其存储在第二拥塞水平历史904中。在一些具体实施中,基于分别响应于发送到高速缓存220和存储器104的数据访问请求而从高速缓存220和存储器104接收的系统繁忙水平信号(即,当前拥塞水平504和604)来确定未被高速缓存220或存储器104满足的未完成的进行中请求的信息。
存储器104和高速缓存220的当前拥塞水平504和604以任选地彼此相等或不同的相应采样速率来监测。第一拥塞水平历史902和第二拥塞水平历史904可存储至多相应有限数量的历史拥塞水平,并且该相应有限数量任选地彼此相等或不同。在一个示例中,第一拥塞水平历史902和第二拥塞水平历史904跟踪高速缓存220的第一整数数量的历史拥塞水平和存储器104的第二整数数量的历史拥塞水平。第一整数数量和第二整数数量任选地彼此相等或不同。
在一些具体实施中,控制器216被配置为基于高速缓存220的第一拥塞水平历史902(包括高速缓存220的所获得的当前拥塞水平604)致使处理集群202根据最高节制水平920来限制来自处理集群202的预取请求。在一些情况下,在不考虑存储器104的所获得的当前拥塞水平504的情况下确定最高节制水平920。在一些具体实施中,是否根据最高节制水平920来限制来自处理集群202的预取请求基于高速缓存220的所获得的当前拥塞水平604,基于高速缓存220的第一拥塞水平历史902,并且/或者基于根据高速缓存220的第一拥塞水平历史902的至少一部分确定的高速缓存220的第一拥塞水平。例如,可参考第一系统拥塞条件816(例如,第一拥塞水平历史902的至少预定义百分比等于“H”)来确定最高节制水平920。在一些具体实施中,高速缓存220的拥塞而非存储器104的拥塞确定是否根据最高节制水平920来限制来自处理集群202的预取请求。另外,在一些具体实施中,控制器216被配置为基于处理集群202和高速缓存220两者的拥塞水平致使处理集群202根据最高节制水平920来限制预取请求。例如,当处理集群202的拥塞水平高于集群拥塞阈值808并且高速缓存220的第一拥塞水平历史902满足第一系统拥塞条件816时,应用最高节制水平920来限制预取。在一些具体实施中,最高节制水平920对应于其中不允许预取的节制所有模式M4(812)。
此外,在一些具体实施中,控制器216被配置为基于高速缓存220的第一拥塞水平历史902(例如,基于第一拥塞水平历史902的子集)和/或第二拥塞水平历史904致使处理集群202根据最高节制水平920来限制来自处理集群202的预取请求。第一拥塞水平历史902的子集包括部分或全部拥塞水平存储历史902。在一个示例中,控制器216致使处理集群202基于高速缓存220的一个或多个最近确定和记录的拥塞水平来限制来自处理集群202的预取请求。在一些具体实施中,第一拥塞水平历史902的子集具有与第二拥塞水平历史904相同数量的所记录的历史拥塞水平(例如,相同数量的样本或条目)。
在一些具体实施中,控制器216被配置为基于确定第一拥塞水平历史902包括多于第一阈值数量的指示高速缓存220的相应拥塞水平(例如,高于系统拥塞阈值的高拥塞水平“H”)的所确定的拥塞水平,致使处理集群202根据最高节制水平920来限制来自处理集群202的预取请求,例如,激活最高节制水平920。例如,如果第一拥塞水平历史902(或第一拥塞水平历史902的子集)包括大于第一阈值数量(或另选地,第一阈值百分比)的其中针对高速缓存220记录高拥塞水平(例如,“H”)的实例,则激活最高节制水平920。
在一些具体实施中,控制器216被配置为基于确定第一拥塞水平历史902包括少于第二阈值数量的指示高速缓存220的相应拥塞水平(例如,高于系统拥塞阈值的高拥塞水平“H”)的所确定的拥塞水平,致使处理集群202放弃根据最高节制水平920限制来自处理集群202的预取请求,例如,去激活最高节制水平920。例如,如果第一拥塞水平历史902(或第一拥塞水平历史902的子集)包括少于第二阈值数量(或另选地,第二阈值百分比)的其中针对高速缓存220记录高拥塞水平(例如,“H”)的实例,则去激活最高节制水平920。在一些具体实施中,第一阈值数量与第二阈值数量相同(或另选地,第一阈值百分比与第二阈值百分比相同)。在一些具体实施中,第一阈值数量不同于(例如,大于)第二阈值数量(或另选地,第一阈值百分比不同于第二阈值百分比)。在一个示例中,第一阈值百分比和第二阈值百分比都是50%。在另一示例中,第一阈值百分比为75%,并且第二阈值百分比为25%。
在一些具体实施中,根据最高节制水平920限制来自处理集群202的预取请求包括:例如以节制所有模式M4限制来自处理集群202的所有预取请求。根据最高节制水平920,不允许来自处理集群202的预取请求。
在一些具体实施中,控制器216确定高速缓存220的第一拥塞水平和存储器104的第二拥塞水平。根据确定高速缓存220的所获得的当前拥塞水平604指示比第一拥塞水平高的拥塞水平,控制器216将第一拥塞水平增加到例如一组可能拥塞水平中的下一更高水平。相反,根据确定第一拥塞水平历史902指示比第一拥塞水平低的拥塞水平(例如,整个第一拥塞水平历史902低于第一拥塞水平),控制器216降低第一拥塞水平。例如,根据确定第一拥塞水平历史902中没有条目指示比第一拥塞水平的当前值高的拥塞水平,控制器216将第一拥塞水平降低到例如该组可能拥塞水平中的下一更低水平。类似地,在一些具体实施中,根据确定存储器104的所获得的当前拥塞水平504指示比第二拥塞水平(例如,第二拥塞水平的当前值)高的拥塞水平,控制器216将第二拥塞水平增加到例如该组可能拥塞水平中的下一更高水平。根据确定第二拥塞水平历史904指示比第二拥塞水平低的拥塞水平(例如,整个第二拥塞水平历史904低于第二拥塞水平),控制器216降低第二拥塞水平。例如,在一些具体实施中,根据确定第二拥塞水平历史904中没有条目指示比第二拥塞水平的当前值高的拥塞水平,控制器216将第二拥塞水平降低到例如该组可能拥塞水平中的下一更低水平。因此,控制器216基于第一拥塞水平和第二拥塞水平致使处理集群202限制来自处理集群202的预取请求,并且在确定是否根据低于最高节制水平的相应节制水平限制预取请求时考虑第一拥塞水平和第二拥塞水平。
在一些具体实施中,第一系统拥塞水平906基于高速缓存220的所获得的当前拥塞水平604、基于高速缓存220的第一拥塞水平历史902并且/或者基于根据高速缓存220的第一拥塞水平历史902的至少一部分确定的高速缓存220的第一拥塞水平来确定。第二系统拥塞水平908基于存储器104的所获得的当前拥塞水平504、基于存储器104的第二拥塞水平历史904并且/或者基于根据存储器104的第二拥塞水平历史904的至少一部分确定的存储器104的第二拥塞水平来确定。组合拥塞水平906和908以生成组合系统拥塞水平910,该组合系统拥塞水平具有两个或更多个拥塞值,诸如第一拥塞值826和第二拥塞值828,该两个或更多个拥塞值应用于确定不同的高速缓存未命中阈值(即,高速缓存未命中阈值802'和808')。在一些具体实施中,组合系统拥塞水平910等于高速缓存220的拥塞水平906和存储器104的拥塞水平908中的较大者。例如,如果拥塞水平906是“L”并且拥塞水平908是“H”,则组合系统拥塞水平910是“H”。如果拥塞水平906是“H”并且拥塞水平908是“L”,则组合系统拥塞水平910仍然是“H”。
应当理解,描述图8和图9中的操作的特定次序仅是示例性的并且不旨在指示所述的次序是可执行操作的唯一次序。本领域的普通技术人员将认识到对本文所述的操作进行重新排序的各种方式。另外,应当注意,本文中相对于方法800和900(例如,图8和图9)描述的其他过程的细节也可以可交换的方式应用。为了简洁起见,这里不再重复这些细节。
图10是根据一些具体实施的由电子设备管理对存储器104的存储器访问的方法1000的流程图。电子设备包括(1002)一个或多个处理集群202以及存储器104的多个存储器块222。每个处理集群202包括一个或多个相应处理器204并且耦合到存储器块222中的至少一个存储器块。在一些实施方案中,每个处理集群202具有被配置为实施方法1000的控制器216。在一些实施方案中,电子设备包括其上存储有指令的非暂态计算机可读介质,该指令当由电子设备的控制器216执行时致使控制器实施方法1000。
根据方法1000,电子设备将电子设备的资源划分(1004)成多个资源部分以供多个客户端使用。每个资源部分被分配给相应客户端并且具有相应ID。电子设备接收(1006)与多个客户端224相关联的对多个存储器块222的多个数据访问请求。在一些具体实施中,数据访问请求包括需求请求和预取请求两者。针对具有相应分区ID的每个资源部分(1008),每个处理集群202跟踪(1010)对应于存储器块222的多个存储器带宽使用状态402。每个存储器带宽使用状态402与相应存储器块相关联(1012),并且指示分配给相应分区ID以访问相应存储器块222的存储器访问带宽中的至少多少被使用。处理集群202根据多个存储器带宽使用状态402确定(1014)与相应分区ID相关联的使用水平406,基于使用水平406调整(1016)信用计数408,将所调整的信用计数408与请求发出阈值410进行比较(1018),并且根据确定信用计数大于请求发出阈值,发出(1020)存储器访问请求队列214中与相应分区ID相关联的下一数据访问请求412。在一些情况下,针对具有相应分区ID的每个资源部分,根据确定信用计数408小于请求发出阈值410,处理集群202暂停从存储器访问请求队列214发出相应分区ID的任何数据访问请求,直到信用计数408调整到大于请求发出阈值410。
在一些具体实施中,针对具有相应分区ID的每个资源部分,处理集群202响应于紧接在下一数据访问请求412之前发出的先前数据访问请求(例如,请求404A)而更新多个存储器带宽使用状态402中的一个或多个存储器带宽使用状态。在更新多个存储器带宽使用状态中的一个或多个存储器带宽使用状态之后的预定义数量的时钟循环之后,根据多个存储器带宽使用状态402确定使用水平406。在更新多个存储器带宽使用状态中的一个或多个存储器带宽使用状态之后的预定义数量的时钟循环之后并且直到发出下一数据访问请求,周期性地(例如,在每个后续时钟循环内)调整信用计数408并且将其与请求发出阈值410进行比较。
在一些具体实施中,在发出多个数据访问请求中的每个数据访问请求之后,处理集群202从与所发出的数据访问请求相关联的相应存储器块直接地或间接地接收相应响应,并且更新对应于与所发出的数据访问请求相关联的相应存储器块222的相应存储器带宽使用状态502。
在一些具体实施中,根据确定使用水平等于或大于高使用阈值,处理集群202将信用计数408减少对应于相应分区ID的相应信用单位CU。根据确定使用水平等于或小于低使用阈值,处理集群202将信用计数408增加相应信用单位CU。根据确定使用水平在高使用阈值和低使用阈值之间,处理集群202维持信用计数408。
在一些具体实施中,针对具有相应分区ID的每个资源部分,多个存储器带宽使用状态402中的每个存储器带宽使用状态包括相应多位状态号。处理集群202确定存储器带宽使用状态的相应多位状态号中有多少等于预定义值(例如,“11”)。
在一些具体实施中,针对具有相应分区ID的每个资源部分,多个存储器带宽使用状态402中的每个存储器带宽使用状态由标志表示,该标志指示相应存储器块的平均数据访问水平是否已经超过分配给相应分区ID以访问相应存储器块的预定义存储器访问带宽的预定义阈值部分。此外,在一些具体实施中,针对具有相应分区ID的每个资源部分,使用水平406由存储器块的总数量来表示,对于该存储器块中的每个存储器块,标志具有第一值(例如,“Y”)。另外,在一些具体实施中,针对第一存储器块222A,标志具有第一值。针对第一存储器块222A,处理集群202监测正在多个存储器块的第二请求队列510中等待的数据访问请求的第二总数量。根据确定(a)第一平均数据访问水平超过分配给相应分区ID以访问第一存储器块的第一预定义存储器访问带宽的第一预定义阈值部分以及(b)数据访问请求的第二总数量MCQ超过外部存储器容量的另选预定义部分,处理集群202确定表示第一存储器块的第一存储器带宽使用状态的标志具有第一值。
此外,在一些具体实施中,针对第一存储器块222A,标志具有第一值(例如,“Y”)。针对第一存储器块222A,根据确定(a)第一平均数据访问水平超过分配给相应分区ID以访问第一存储器块的第一预定义存储器访问带宽的第一预定义阈值部分以及(b)强制执行第一预定义存储器访问带宽,处理集群202确定表示第一存储器块222A的第一存储器带宽使用状态402的标志具有第一值(例如,“Y”)。
在一些具体实施中,针对具有相应分区ID的每个资源部分,处理集群202经由与一个或多个处理集群202相关联且与存储器块222不同的第一存储器(例如,高速缓存220)将多个数据访问请求中的每个读取请求或写入请求发送到相应存储器块222。响应于从相应分区ID向相应存储器块222发出的每个读取请求,处理集群202从相应存储器块222与读取请求所请求的数据项一起直接地或经由第一存储器间接地更新相应存储器块222的相应存储器带宽使用状态402。响应于从相应分区ID向相应存储器块发出的每个写入请求,处理集群202从第一存储器更新与相应存储器块222相关联的相应存储器带宽使用状态402。该多个存储器块被配置为接收从一个或多个处理集群202发送到第一存储器的未被第一存储器满足的数据访问请求。
在一些具体实施中,电子设备还包括第一存储器(例如,高速缓存220),该第一存储器被配置为接收多个数据访问请求并且将未被满足的数据访问请求的子集传递到存储器块222。处理集群202获得第一存储器的第一当前拥塞水平604,该第一当前拥塞水平指示正在第一存储器的第一请求队列610中等待的数据访问请求的第一总数量是否超过系统高速缓存容量的第一预定义部分,并且获得多个存储器块的第二当前拥塞水平504,该第二当前拥塞水平指示正在多个存储器块的第二请求队列510中等待的数据访问请求的第二总数量是否超过外部存储器容量的第二预定义部分。此外,在一些具体实施中,该多个数据访问请求包括多个预取请求。根据确定第一当前拥塞水平604满足节制条件,节制来自多个资源部分的多个预取请求。另外,在一些具体实施中,该多个数据访问请求包括多个预取请求。根据确定第一当前拥塞水平和第二当前拥塞水平满足预取控制条件,处理集群202选择质量超过对应于预取控制条件的阈值质量的预取请求的第一子集,将预取请求的该子集包括在存储器访问请求队列中,并且将质量不超过阈值质量的预取请求的第二子集从存储器访问请求队列214中排除。
在一些具体实施中,电子设备还包括第一存储器(例如,高速缓存220),并且在一个或多个处理集群202处跟踪对应于存储器块222的多个存储器带宽使用状态402。针对具有相应分区ID的每个资源部分,在每个存储器块222处,实时跟踪相应分区ID对相应存储器块222的平均数据访问水平,并且基于该平均数据访问水平来确定与相应存储器块222相关联的相应存储器带宽使用状态402。响应于从一个或多个处理集群202接收的数据访问请求,将相应存储器带宽使用状态402报告给第一存储器和一个或多个处理集群202。第一存储器接收由多个存储器块222响应于从一个或多个处理集群202接收的多个数据访问请求而报告的相应存储器带宽使用状态402。
图11是根据一些具体实施的在耦合到一个或多个处理集群202和多个存储器块222的第一存储器(例如,高速缓存220)处跟踪存储器带宽使用的方法1100的流程图。方法1100在第一存储器处实施(1102)。第一存储器耦合到电子设备中的一个或多个处理集群202和多个存储器块222。第一存储器将与多个客户端224相关联的多个数据访问请求转发(1104)到多个存储器块222。电子设备的资源被划分(1106)成多个资源部分以供多个客户端使用,并且每个资源部分被分配给相应客户端并且具有相应分区ID。针对具有相应分区ID的每个资源部分(1108),第一存储器标识(1110)与相应分区ID相关联的用于访问存储器块222的数据访问请求的子集,并且跟踪(1112)对应于存储器块222的多个存储器带宽使用状态402。每个存储器带宽使用状态402与相应存储器块相关联(1114),并且指示分配给相应分区ID以访问相应存储器块的存储器访问带宽中的至少多少被使用。响应于数据访问请求的子集中的每个数据访问请求(1116),第一存储器确定(1118)相应数据访问请求是访问对应存储器块,接收(1120)对应存储器块的存储器带宽使用状态,并且将对应存储器块的存储器带宽使用状态报告(1122)给一个或多个处理集群。
在一些具体实施中,第一存储器监测正在第一存储器的第一请求队列610中等待的数据访问请求的第一总数量HNQ,并且确定第一当前拥塞水平604(即,HN[2]),该第一当前拥塞水平指示数据访问请求的第一总数量是否超过系统高速缓存容量的第一预定义部分。响应于数据访问请求的子集中的每个数据访问请求,第一存储器将第一当前拥塞水平604(即,HN[2])与对应存储器块的存储器带宽使用状态502共同报告给一个或多个处理集群202。此外,在一些具体实施中,在一个或多个处理集群202处,根据确定第一当前拥塞水平604(即,HN[2])满足节制条件,节制来自多个资源部分的多个预取请求。
在一些具体实施中,响应于数据访问请求的子集中的每个数据访问请求,第一存储器从对应存储器块更新第二当前拥塞水平504(即,SN[2]),该第二当前拥塞水平指示正在多个存储器块的第二请求队列中等待的数据访问请求的第二总数量是否超过外部存储器容量的第二预定义部分。第一存储器将第二当前拥塞水平504(即,SN[2])与对应存储器块的存储器带宽使用状态402和第一当前拥塞水平604(即,HN[2])共同报告给一个或多个处理集群。另外,在一些具体实施中,根据确定第一当前拥塞水平604和第二当前拥塞水平504满足预取控制条件,一个或多个处理集群202选择质量超过对应于预取控制条件的阈值质量的预取请求的第一子集,将预取请求的该子集包括在存储器访问请求队列214中,并且将质量不超过阈值质量的预取请求的第二子集从存储器访问请求队列214中排除。
在一些具体实施中,与相应存储器块222相关联的每个存储器带宽使用状态402包括相应标志,该相应标志被配置为由相应存储器块222根据以下各项来启用:(a)确定对相应存储器块222的平均数据访问水平已经超过预定义存储器访问带宽的预定义阈值部分,以及(b)确定强制执行预定义存储器访问带宽或者存储器块的另选拥塞水平为高。
图12是根据一些具体实施的跟踪存储器系统的存储器块222的存储器带宽使用的方法1200的流程图。存储器系统包括存储器控制器(例如,存储器控制器110)和存储器块222。存储器块222经由电子设备中的第一存储器(例如,高速缓存220)耦合到一个或多个处理集群202。该方法在存储器系统处实施(1202)。存储器系统接收(1204)与多个客户端224相关联的对存储器块222的数据访问请求的集合。资源被划分(1206)成多个资源部分以供多个客户端224使用,每个资源部分被分配给相应客户端并且具有相应分区ID。针对具有相应分区ID的每个资源部分(1208),存储器系统(具体地,存储器控制器110)标识(1210)与相应ID相关联的用于访问存储器块222的数据访问请求的子集,并且跟踪(1212)与相应分区ID相关联的存储器带宽使用状态402。存储器带宽使用状态402指示(1214)分配给相应分区ID以访问存储器块的存储器访问带宽中的至少多少被使用。响应于数据访问请求的集合中的每个数据访问请求,存储器系统将存储器带宽使用状态报告(1216)给一个或多个处理集群202。
在一些具体实施中,响应于接收到读取请求,存储器系统将存储器带宽使用状态402与读取请求所请求的数据项一起直接地或经由第一存储器(例如,高速缓存220)间接地报告给一个或多个处理集群202。响应于接收到写入请求,存储器系统经由第一存储器将存储器块222的存储器带宽使用状态402间接地报告给一个或多个处理集群202。
在一些具体实施中,还基于存储器块222的另选当前拥塞水平和/或是否强制执行预定义存储器访问带宽来跟踪与相应分区ID相关联的存储器带宽使用状态402。存储器块222的另选当前拥塞水平指示数据访问请求的第二总数量MCQ是否超过外部存储器容量的另选预定义部分。
在一些具体实施中,针对相应分区ID,存储器系统确定对存储器块222的平均数据访问水平是否已经超过分配给相应分区ID以访问存储器块222的预定义存储器访问带宽的预定义阈值部分。此外,在一些具体实施中,存储器系统监测正在存储器系统的第二请求队列510中等待的数据访问请求的第二总数量,并且确定指示数据访问请求的第二总数量是否超过外部存储器容量的另选预定义部分(例如,x%)的另选当前拥塞水平。另外,在一些具体实施中,存储器系统确定存储器系统的第二当前拥塞水平504,该第二当前拥塞水平指示数据访问请求的第二总数量MCQ是否超过外部存储器容量的第二预定义部分。第二当前拥塞水平504用于控制一个或多个处理集群的预取请求的节制或质量。任选地,第二预定义部分和另选预定义部分彼此不同或相等。另外,在一些实施方案中,存储器带宽使用状态402包括被配置为指示忙碌存储器带宽使用状态的标志。存储器系统根据以下各项来启用标志:(a)确定对存储器块222的平均数据访问水平已经超过预定义存储器访问带宽的预定义阈值部分,以及(b)确定强制执行预定义存储器访问带宽或者确定存储器块222的另选当前拥塞水平为高。
在一些具体实施中,对于每个分区ID,与相应分区ID相关联的存储器带宽使用状态402包括多位状态号(例如,SN[0:1]),并且多位状态号(例如,SN[0:1])的量值随着分配给相应分区ID以访问存储器块222的存储器访问带宽中的多少被使用而增加。
应当理解,描述图10至图12中的操作的特定次序仅是示例性的并且不旨在指示所述的次序是可执行操作的唯一次序。本领域的普通技术人员将认识到对本文所述的操作进行重新排序的各种方式。另外,应当注意,本文中相对于方法1000、1100和1200(例如,图10至图12)描述的其他过程的细节也可以可交换的方式应用。为了简洁起见,这里不再重复这些细节。
在至少以下经编号条款中描述了具体实施示例:
条款1.一种用于管理存储器访问的方法,包括:在包括一个或多个处理集群和多个存储器块的电子设备处,每个处理集群包括一个或多个相应处理器并且耦合到该存储器块中的至少一个存储器块:将该电子设备的资源划分成多个资源部分以供多个客户端使用,每个资源部分被分配给相应客户端并且具有相应分区标识符(ID);接收与该多个客户端相关联的对该多个存储器块的多个数据访问请求;以及针对具有该相应分区ID的每个资源部分:跟踪对应于该存储器块的多个存储器带宽使用状态,其中每个存储器带宽使用状态与相应存储器块相关联,并且指示分配给该相应分区ID以访问该相应存储器块的存储器访问带宽中的至少多少被使用;根据该多个存储器带宽使用状态确定与该相应分区ID相关联的使用水平;基于该使用水平调整信用计数;将所调整的信用计数与请求发出阈值进行比较;以及根据确定该信用计数大于该请求发出阈值,发出存储器访问请求队列中与该相应分区ID相关联的下一数据访问请求。
条款2.根据条款1所述的方法,还包括:针对具有该相应分区ID的每个资源部分:根据确定该信用计数小于该请求发出阈值,暂停从该存储器访问请求队列发出该相应分区ID的任何数据访问请求,直到该信用计数调整到大于该请求发出阈值。
条款3.根据条款1或2所述的方法,还包括:针对具有该相应分区ID的每个资源部分:响应于紧接在该下一数据访问请求之前发出的先前数据访问请求,更新该多个存储器带宽使用状态中的一个或多个存储器带宽使用状态;其中在更新该多个存储器带宽使用状态中的该一个或多个存储器带宽使用状态之后的预定义数量的时钟循环之后,根据该多个存储器带宽使用状态确定该使用水平;并且其中在更新该多个存储器带宽使用状态中的该一个或多个存储器带宽使用状态之后的该预定义数量的时钟循环之后并且直到发出该下一数据访问请求,周期性地调整该信用计数并且将所调整的信用计数与该请求发出阈值进行比较。
条款4.根据前述条款中任一项所述的方法,还包括:在发出该多个数据访问请求中的每个数据访问请求之后:从与所发出的数据访问请求相关联的相应存储器块直接地或间接地接收相应响应;以及更新对应于与所发出的数据访问请求相关联的该相应存储器块的相应存储器带宽使用状态。
条款5.根据前述条款中任一项所述的方法,其中基于该使用水平调整该信用计数还包括:根据确定该使用水平等于或大于高使用阈值,将该信用计数减少与该相应分区ID相对应的相应信用单位;根据确定该使用水平等于或小于低使用阈值,将该信用计数增加该相应信用单位;以及根据确定该使用水平在该高使用阈值和该低使用阈值之间,维持该信用计数。
条款6.根据前述条款中任一项所述的方法,其中针对具有该相应分区ID的每个资源部分:该多个存储器带宽使用状态中的每个存储器带宽使用状态包括相应多位状态号;并且确定该使用水平包括:确定该存储器带宽使用状态的该相应多位状态号中有多少等于预定义值。
条款7.根据前述条款中任一项所述的方法,其中针对具有该相应分区ID的每个资源部分:该多个存储器带宽使用状态中的每个存储器带宽使用状态由标志表示,该标志指示该相应存储器块的平均数据访问水平是否已经超过分配给该相应分区ID以访问该相应存储器块的预定义存储器访问带宽的预定义阈值部分。
条款8.根据条款7所述的方法,其中针对具有该相应分区ID的每个资源部分,该使用水平由存储器块的总数量来表示,对于该存储器块中的每个存储器块,该标志具有第一值。
条款9.根据条款8所述的方法,其中对于第一存储器块,该标志具有该第一值,该方法还包括:针对该第一存储器块:监测正在该多个存储器块的第二请求队列中等待的数据访问请求的第二总数量;根据确定(a)第一平均数据访问水平超过分配给该相应分区ID以访问该第一存储器块的第一预定义存储器访问带宽的第一预定义阈值部分以及(b)数据访问请求的该第二总数量超过外部存储器容量的另选预定义部分,确定表示该第一存储器块的第一存储器带宽使用状态的该标志具有该第一值。
条款10.根据条款8所述的方法,其中对于第一存储器块,该标志具有该第一值,该方法还包括:针对该第一存储器块:根据确定(a)第一平均数据访问水平超过分配给该相应分区ID以访问该第一存储器块的第一预定义存储器访问带宽的第一预定义阈值部分以及(b)强制执行该第一预定义存储器访问带宽,确定表示该第一存储器块的第一存储器带宽使用状态的该标志具有该第一值。
条款11.根据前述条款中任一项所述的方法,其中针对具有该相应分区ID的每个资源部分,跟踪该多个存储器带宽使用状态还包括:经由与该一个或多个处理集群相关联且与该存储器块不同的第一存储器,将该多个数据访问请求中的每个读取请求或写入请求发送到相应存储器块;响应于从该相应分区ID向相应存储器块发出的每个读取请求,从该相应存储器块与该读取请求所请求的数据项一起直接地或经由该第一存储器间接地更新该相应存储器块的该相应存储器带宽使用状态;以及响应于从该相应分区ID向该相应存储器块发出的每个写入请求,从该第一存储器更新与该相应存储器块相关联的该相应存储器带宽使用状态;并且其中该多个存储器块被配置为接收从该一个或多个处理集群发送到该第一存储器的未被该第一存储器满足的数据访问请求。
条款12.根据前述条款中任一项所述的方法,其中该电子设备还包括第一存储器,该第一存储器被配置为接收该多个数据访问请求并且将未被满足的数据访问请求的子集传递到该存储器块,该方法还包括:获得该第一存储器的第一当前拥塞水平,该第一当前拥塞水平指示正在该第一存储器的第一请求队列中等待的数据访问请求的第一总数量是否超过系统高速缓存容量的第一预定义部分;以及获得该多个存储器块的第二当前拥塞水平,该第二当前拥塞水平指示正在该多个存储器块的第二请求队列中等待的数据访问请求的第二总数量是否超过外部存储器容量的第二预定义部分。
条款13.根据条款12所述的方法,其中该多个数据访问请求包括多个预取请求,该方法还包括:根据确定该第一当前拥塞水平满足节制条件,节制来自该多个资源部分的该多个预取请求。
条款14.根据条款12所述的方法,其中该多个数据访问请求包括多个预取请求,该方法还包括:根据确定该第一当前拥塞水平和该第二当前拥塞水平满足预取控制条件,选择质量超过对应于该预取控制条件的阈值质量的预取请求的第一子集,将预取请求的该子集包括在该存储器访问请求队列中,并且将质量不超过该阈值质量的预取请求的第二子集从该存储器访问请求队列中排除。
条款15.根据前述条款中任一项所述的方法,其中该电子设备还包括第一存储器,并且对应于该存储器块的该多个存储器带宽使用状态是在该一个或多个处理集群处跟踪的,该方法还包括:针对具有该相应分区ID的每个资源部分:在每个存储器块处,实时跟踪该相应分区ID对该相应存储器块的平均数据访问水平,基于该平均数据访问水平确定与该相应存储器块相关联的该相应存储器带宽使用状态,并且响应于从该一个或多个处理集群接收的该数据访问请求,将该相应存储器带宽使用状态报告给该第一存储器和该一个或多个处理集群;以及在该第一存储器处,接收由该多个存储器块响应于从该一个或多个处理集群接收的该多个数据访问请求而报告的该相应存储器带宽使用状态。
条款16.一种用于管理存储器访问的方法,包括:在耦合到电子设备中的一个或多个处理集群和多个存储器块的第一存储器处:将与多个客户端相关联的多个数据访问请求转发到多个存储器块,其中该电子设备的资源被划分成多个资源部分以供该多个客户端使用,每个资源部分被分配给相应客户端并且具有相应分区标识符(ID);针对具有该相应分区ID的每个资源部分:标识与该相应分区ID相关联的用于访问该存储器块的数据访问请求的子集;跟踪对应于该存储器块的多个存储器带宽使用状态,其中每个存储器带宽使用状态与相应存储器块相关联,并且指示分配给该相应分区ID以访问该相应存储器块的存储器访问带宽中的至少多少被使用;响应于数据访问请求的该子集中的每个数据访问请求,确定该相应数据访问请求是访问对应存储器块,接收该对应存储器块的存储器带宽使用状态,并且将该对应存储器块的该存储器带宽使用状态报告给该一个或多个处理集群。
条款17.根据条款16所述的方法,还包括:监测正在该第一存储器的第一请求队列中等待的数据访问请求的第一总数量,并且确定指示数据访问请求的该第一总数量是否超过系统高速缓存容量的第一预定义部分的第一当前拥塞水平;以及响应于数据访问请求的该子集中的每个数据访问请求,将该第一当前拥塞水平与该对应存储器块的该存储器带宽使用状态共同报告给该一个或多个处理集群。
条款18.根据条款17所述的方法,还包括:在该一个或多个处理集群处,根据确定该第一当前拥塞水平满足节制条件,节制来自该多个资源部分的多个预取请求。
条款19.根据条款17或18所述的方法,还包括:响应于数据访问请求的该子集中的每个数据访问请求:从该对应存储器块更新第二当前拥塞水平,该第二当前拥塞水平指示正在该多个存储器块的第二请求队列中等待的数据访问请求的第二总数量是否超过外部存储器容量的第二预定义部分;将该第二当前拥塞水平与该对应存储器块的该存储器带宽使用状态以及该第一当前拥塞水平共同报告给该一个或多个处理集群。
条款20.根据条款19所述的方法,还包括:在该一个或多个处理集群处:根据确定该第一当前拥塞水平和该第二当前拥塞水平满足预取控制条件,选择质量超过对应于该预取控制条件的阈值质量的预取请求的第一子集,将预取请求的该子集包括在存储器访问请求队列中,并且将质量不超过该阈值质量的预取请求的第二子集从该存储器访问请求队列中排除。
条款21.根据条款16至20中任一项所述的方法,其中与相应存储器块相关联的每个存储器带宽使用状态包括相应标志,该相应标志被配置为由该相应存储器块根据以下各项来启用:(a)确定对该相应存储器块的平均数据访问水平已经超过该预定义存储器访问带宽的该预定义阈值部分,以及(b)确定强制执行该预定义存储器访问带宽或者该存储器块的另选拥塞水平为高。
条款22.一种用于跟踪存储器使用的方法,包括:在经由电子设备中的第一存储器耦合到一个或多个处理集群的存储器系统处,该存储器系统包括存储器块:接收与多个客户端相关联的对该存储器块的数据访问请求的集合,其中资源被划分成多个资源部分以供该多个客户端使用,每个资源部分被分配给相应客户端并且具有相应分区标识符(ID);针对具有该相应分区ID的每个资源部分:标识与该相应ID相关联的用于访问该存储器块的数据访问请求的子集;跟踪与该相应分区ID相关联的存储器带宽使用状态,其中该存储器带宽使用状态指示分配给该相应分区ID以访问该存储器块的存储器访问带宽中的至少多少被使用;以及响应于数据访问请求的该集合中的每个数据访问请求,将该存储器带宽使用状态报告给该一个或多个处理集群。
条款23.根据条款22所述的方法,其中将该存储器带宽使用报告给该一个或多个处理集群还包括:响应于接收到读取请求,将该存储器带宽使用状态与该读取请求所请求的数据项一起直接地或经由该第一存储器间接地报告给该一个或多个处理集群;以及响应于接收到写入请求,经由该第一存储器将该存储器带宽使用状态间接地报告给该一个或多个处理集群。
条款24.根据条款22或23所述的方法,其中还基于该存储器块的另选当前拥塞水平以及/或者是否强制执行预定义存储器访问带宽来跟踪与该相应分区ID相关联的该存储器带宽使用状态。
条款25.根据条款22至24中任一项所述的方法,跟踪与该相应分区ID相关联的该存储器带宽使用状态还包括:针对该相应分区ID:确定对该存储器块的平均数据访问水平是否已经超过分配给该相应分区ID以访问该存储器块的该预定义存储器访问带宽的预定义阈值部分。
条款26.根据条款25所述的方法,跟踪与该相应分区ID相关联的该存储器带宽使用状态还包括:监测正在该存储器系统的第二请求队列中等待的数据访问请求的第二总数量;以及确定指示数据访问请求的该第二总数量是否超过外部存储器容量的另选预定义部分的另选当前拥塞水平。
条款27.根据条款26所述的方法,还包括:确定指示数据访问请求的该第二总数量是否超过该外部存储器容量的第二预定义部分的第二当前拥塞水平,其中该第二当前拥塞水平用于控制该一个或多个处理集群的预取请求的节制或质量。
条款28.根据条款26所述的方法,其中该存储器带宽使用状态包括被配置为指示忙碌存储器带宽使用状态的标志,该方法还包括:根据以下各项来启用该标志:(a)确定对该存储器块的该平均数据访问水平已经超过该预定义存储器访问带宽的该预定义阈值部分,以及(b)确定强制执行该预定义存储器访问带宽或者该存储器块的该另选当前拥塞水平为高。
条款29.根据条款16至28中任一项所述的方法,其中对于每个分区ID,与该相应分区ID相关联的该存储器带宽使用状态包括多位状态号,并且该多位状态号的量值随着分配给该相应分区ID以访问该存储器块的该存储器访问带宽中的多少被使用而增加。
条款30.一种电子设备,包括:一个或多个处理集群;和多个存储器块,该多个存储器块耦合到每个处理集群;其中每个处理集群包括控制器和一个或多个相应处理器,并且该控制器被配置为执行根据条款1至29中任一项所述的方法。
条款31.一种非暂态计算机可读介质,该非暂态计算机可读介质具有存储在其上的指令,该指令当由电子设备的控制器执行时致使该控制器执行根据条款1至29中任一项所述的方法。
条款32.一种用于在包括一个或多个处理集群和多个存储器块的电子设备处管理存储器访问的装置,每个处理集群包括一个或多个相应处理器并且耦合到该存储器块中的至少一个存储器块,该装置包括用于执行根据条款1至15中任一项所述的方法的操作的构件。
条款33.一种用于在耦合到电子设备中的一个或多个处理集群和多个存储器块的第一存储器处管理存储器访问的装置,该装置包括用于执行根据条款16至21中任一项所述的方法的操作的构件。
条款34.一种用于在经由电子设备中的第一存储器耦合到一个或多个处理集群的存储器系统处跟踪存储器使用的装置,该存储器系统包括存储器块,该装置包括用于执行根据条款22至29中任一项所述的方法的操作的构件。
已经参考特定具体实施提供了以上描述。然而,以上例示性讨论不旨在是详尽的或局限于所公开的精确形式。鉴于以上教导内容,许多修改和变化是可能的。选择和描述具体实施是为了最好地解释所公开的原理及其实际应用,从而使得其他人能够最好地利用本公开以及具有适于所设想的特定用途的各种修改的各种具体实施。
本文的各种所述的具体实施的描述中使用的术语仅出于描述特定具体实施的目的,而不旨在进行限制。如在各种所述的具体实施的描述和所附权利要求中所用,单数形式的“一个”、“一种”和“该”旨在也包括复数形式,除非上下文另有明确指示。还将理解,如本文所用的术语“和/或”是指并且涵盖相关联的所列项中的一项或多项的任何和所有可能组合。将进一步理解,术语“包括”、“包含”当在本说明书中使用时指定所陈述的特征、整体、步骤、操作、元件和/或部件的存在,但是不排除一个或多个其他特征、整体、步骤、操作、元件、部件和/或它们的组的存在或添加。另外,将理解,尽管术语“第一”、“第二”等可在本文中用于描述各种元件,但是这些元件不应当受这些术语限制。这些术语仅用于区分一个元件与另一个元件。
如本文所用,术语“如果”任选地被解释为意指“当……时”或“在……时”或“响应于确定……”或“响应于检测到……”或“根据确定……”,这取决于上下文。类似地,短语“如果确定……”或“如果检测到[所陈述的条件或事件]”任选地被解释为意指“在确定……时”或“响应于确定……”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”或“根据确定检测到[所陈述的条件或事件]”,这取决于上下文。
出于解释的目的,前述描述已经参考具体实施方案进行描述。然而,以上例示性讨论不旨在是详尽的或将权利要求限制于所公开的精确形式。鉴于以上教导内容,许多修改和变化是可能的。实施方案经选择和描述以便最佳地解释操作原理和实际应用,由此使得本领域其他技术人员能够进行实现。
虽然各个附图以特定次序例示多个逻辑阶段,但是可将不取决于次序的阶段重新排序并可组合或拆分其他阶段。虽然具体地提及一些重新排序或其他分组,但是其他重新排序或其他分组将对本领域普通技术人员显而易见,因此本文呈现的排序和分组不是另选方案的详尽列表。此外,应当认识到,阶段可实施在硬件、固件、软件或它们的任何组合中。
Claims (20)
1.一种用于管理存储器访问的方法,包括:在包括一个或多个处理集群和多个存储器块的电子设备处,每个处理集群包括一个或多个相应处理器并且耦合到所述存储器块中的至少一个存储器块:
将所述电子设备的资源划分成多个资源部分以供多个客户端使用,每个资源部分被分配给相应客户端并且具有相应分区标识符(ID);
接收与所述多个客户端相关联的对所述多个存储器块的多个数据访问请求;以及
针对具有所述相应分区ID的每个资源部分:
跟踪对应于所述存储器块的多个存储器带宽使用状态,其中每个存储器带宽使用状态与相应存储器块相关联,并且指示分配给所述相应分区ID以访问所述相应存储器块的存储器访问带宽中的至少多少被使用;
根据所述多个存储器带宽使用状态确定与所述相应分区ID相关联的使用水平;
基于所述使用水平调整信用计数;
将所调整的信用计数与请求发出阈值进行比较;以及
根据确定所述信用计数大于所述请求发出阈值,发出存储器访问请求队列中与所述相应分区ID相关联的下一数据访问请求。
2.根据权利要求1所述的方法,还包括:针对具有所述相应分区ID的每个资源部分:
根据确定所述信用计数小于所述请求发出阈值,暂停从所述存储器访问请求队列发出所述相应分区ID的任何数据访问请求,直到所述信用计数调整到大于所述请求发出阈值。
3.根据权利要求1所述的方法,还包括:针对具有所述相应分区ID的每个资源部分:
响应于紧接在所述下一数据访问请求之前发出的先前数据访问请求,更新所述多个存储器带宽使用状态中的一个或多个存储器带宽使用状态;
其中在更新所述多个存储器带宽使用状态中的所述一个或多个存储器带宽使用状态之后的预定义数量的时钟循环之后,根据所述多个存储器带宽使用状态确定所述使用水平;并且
其中在更新所述多个存储器带宽使用状态中的所述一个或多个存储器带宽使用状态之后的所述预定义数量的时钟循环之后并且直到发出所述下一数据访问请求,周期性地调整所述信用计数并且将所述信用计数与所述请求发出阈值进行比较。
4.根据权利要求1所述的方法,还包括:在发出所述多个数据访问请求中的每个数据访问请求之后:
从与所发出的数据访问请求相关联的相应存储器块直接地或间接地接收相应响应;以及
更新对应于与所发出的数据访问请求相关联的所述相应存储器块的相应存储器带宽使用状态。
5.根据权利要求1所述的方法,其中基于所述使用水平调整所述信用计数还包括:
根据确定所述使用水平等于或大于高使用阈值,将所述信用计数减少与所述相应分区ID相对应的相应信用单位;
根据确定所述使用水平等于或小于低使用阈值,将所述信用计数增加所述相应信用单位;以及
根据确定所述使用水平在所述高使用阈值和所述低使用阈值之间,维持所述信用计数。
6.根据权利要求1所述的方法,其中针对具有所述相应分区ID的每个资源部分:
所述多个存储器带宽使用状态中的每个存储器带宽使用状态包括相应多位状态号;并且
确定所述使用水平包括:确定所述存储器带宽使用状态的所述相应多位状态号中有多少等于预定义值。
7.根据权利要求1所述的方法,其中针对具有所述相应分区ID的每个资源部分:
所述多个存储器带宽使用状态中的每个存储器带宽使用状态由标志表示,所述标志指示所述相应存储器块的平均数据访问水平是否已经超过分配给所述相应分区ID以访问所述相应存储器块的预定义存储器访问带宽的预定义阈值部分。
8.根据权利要求7所述的方法,其中针对具有所述相应分区ID的每个资源部分,所述使用水平由存储器块的总数量来表示,对于所述存储器块中的每个存储器块,所述标志具有第一值。
9.根据权利要求8所述的方法,其中对于第一存储器块,所述标志具有所述第一值,所述方法还包括:针对所述第一存储器块:
监测正在所述多个存储器块的第二请求队列中等待的数据访问请求的第二总数量;
根据确定(a)第一平均数据访问水平超过分配给所述相应分区ID以访问所述第一存储器块的第一预定义存储器访问带宽的第一预定义阈值部分以及(b)数据访问请求的所述第二总数量超过外部存储器容量的另选预定义部分,确定表示所述第一存储器块的第一存储器带宽使用状态的所述标志具有所述第一值。
10.根据权利要求8所述的方法,其中对于第一存储器块,所述标志具有所述第一值,所述方法还包括:针对所述第一存储器块:
根据确定(a)第一平均数据访问水平超过分配给所述相应分区ID以访问所述第一存储器块的第一预定义存储器访问带宽的第一预定义阈值部分以及(b)强制执行所述第一预定义存储器访问带宽,确定表示所述第一存储器块的第一存储器带宽使用状态的所述标志具有所述第一值。
11.根据权利要求1所述的方法,其中针对具有所述相应分区ID的每个资源部分,跟踪所述多个存储器带宽使用状态还包括:
经由与所述一个或多个处理集群相关联且与所述存储器块不同的第一存储器,将所述多个数据访问请求中的每个读取请求或写入请求发送到相应存储器块;
响应于从所述相应分区ID向相应存储器块发出的每个读取请求,从所述相应存储器块与所述读取请求所请求的数据项一起直接地或经由所述第一存储器间接地更新所述相应存储器块的所述相应存储器带宽使用状态;以及
响应于从所述相应分区ID向所述相应存储器块发出的每个写入请求,从所述第一存储器更新与所述相应存储器块相关联的所述相应存储器带宽使用状态;并且
其中所述多个存储器块被配置为接收从所述一个或多个处理集群发送到所述第一存储器的未被所述第一存储器满足的数据访问请求。
12.根据权利要求1所述的方法,其中所述电子设备还包括:第一存储器,所述第一存储器被配置为接收所述多个数据访问请求并且将未被满足的数据访问请求的子集传递到所述存储器块,所述方法还包括:
获得所述第一存储器的第一当前拥塞水平,所述第一当前拥塞水平指示正在所述第一存储器的第一请求队列中等待的数据访问请求的第一总数量是否超过系统高速缓存容量的第一预定义部分;以及
获得所述多个存储器块的第二当前拥塞水平,所述第二当前拥塞水平指示正在所述多个存储器块的第二请求队列中等待的数据访问请求的第二总数量是否超过外部存储器容量的第二预定义部分。
13.根据权利要求12所述的方法,其中所述多个数据访问请求包括多个预取请求,所述方法还包括:
根据确定所述第一当前拥塞水平满足节制条件,节制来自所述多个资源部分的所述多个预取请求。
14.根据权利要求12所述的方法,其中所述多个数据访问请求包括多个预取请求,所述方法还包括:
根据确定所述第一当前拥塞水平和所述第二当前拥塞水平满足预取控制条件,选择质量超过对应于所述预取控制条件的阈值质量的预取请求的第一子集,将预取请求的所述子集包括在所述存储器访问请求队列中,并且将质量不超过所述阈值质量的预取请求的第二子集从所述存储器访问请求队列中排除。
15.根据权利要求1所述的方法,其中所述电子设备还包括第一存储器,并且对应于所述存储器块的所述多个存储器带宽使用状态是在所述一个或多个处理集群处跟踪的,所述方法还包括:针对具有所述相应分区ID的每个资源部分:
在每个存储器块处,实时跟踪所述相应分区ID对所述相应存储器块的平均数据访问水平,基于所述平均数据访问水平确定与所述相应存储器块相关联的所述相应存储器带宽使用状态,并且响应于从所述一个或多个处理集群接收的所述数据访问请求,将所述相应存储器带宽使用状态报告给所述第一存储器和所述一个或多个处理集群;以及
在所述第一存储器处,接收由所述多个存储器块响应于从所述一个或多个处理集群接收的所述多个数据访问请求而报告的所述相应存储器带宽使用状态。
16.一种电子设备,包括:
一个或多个处理集群;和
多个存储器块,所述多个存储器块耦合到每个处理集群;
其中每个处理集群包括控制器和一个或多个相应处理器,并且所述控制器被配置为执行以下操作:
将所述电子设备的资源划分成多个资源部分以供多个客户端使用,每个资源部分被分配给相应客户端并且具有相应分区标识符(ID);
接收与所述多个客户端相关联的对所述多个存储器块的多个数据访问请求;以及
针对具有所述相应分区ID的每个资源部分:
跟踪对应于所述存储器块的多个存储器带宽使用状态,其中每个存储器带宽使用状态与相应存储器块相关联,并且指示分配给所述相应分区ID以访问所述相应存储器块的存储器访问带宽中的至少多少被使用;
根据所述多个存储器带宽使用状态确定与所述相应分区ID相关联的使用水平;
基于所述使用水平调整信用计数;
将所调整的信用计数与请求发出阈值进行比较;以及
根据确定所述信用计数大于所述请求发出阈值,发出存储器访问请求队列中与所述相应分区ID相关联的下一数据访问请求。
17.根据权利要求16所述的电子设备,其中所述控制器被进一步配置为针对具有所述相应分区ID的每个资源部分执行以下操作:
根据确定所述信用计数小于所述请求发出阈值,暂停从所述存储器访问请求队列发出所述相应分区ID的任何数据访问请求,直到所述信用计数调整到大于所述请求发出阈值。
18.根据权利要求16所述的电子设备,其中所述控制器被进一步配置为针对具有所述相应分区ID的每个资源部分执行以下操作:
响应于紧接在所述下一数据访问请求之前发出的先前数据访问请求,更新所述多个存储器带宽使用状态中的一个或多个存储器带宽使用状态;
其中在更新所述多个存储器带宽使用状态中的所述一个或多个存储器带宽使用状态之后的预定义数量的时钟循环之后,根据所述多个存储器带宽使用状态确定所述使用水平;并且
其中在更新所述多个存储器带宽使用状态中的所述一个或多个存储器带宽使用状态之后的所述预定义数量的时钟循环之后并且直到发出所述下一数据访问请求,周期性地调整所述信用计数并且将所述信用计数与所述请求发出阈值进行比较。
19.一种非暂态计算机可读介质,所述非暂态计算机可读介质具有存储在其上的指令,所述指令当由电子设备的控制器执行时致使所述控制器执行包括以下各项的操作:
在具有一个或多个处理集群和耦合到每个处理集群的多个存储器块的电子设备处,其中每个处理集群包括所述控制器和一个或多个相应处理器:
将所述电子设备的资源划分成多个资源部分以供多个客户端使用,每个资源部分被分配给相应客户端并且具有相应分区标识符(ID);
接收与所述多个客户端相关联的对所述多个存储器块的多个数据访问请求;以及
针对具有所述相应分区ID的每个资源部分:
跟踪对应于所述存储器块的多个存储器带宽使用状态,其中每个存储器带宽使用状态与相应存储器块相关联,并且指示分配给所述相应分区ID以访问所述相应存储器块的存储器访问带宽中的至少多少被使用;
根据所述多个存储器带宽使用状态确定与所述相应分区ID相关联的使用水平;
基于所述使用水平调整信用计数;
将所调整的信用计数与请求发出阈值进行比较;以及
根据确定所述信用计数大于所述请求发出阈值,发出存储器访问请求队列中与所述相应分区ID相关联的下一数据访问请求。
20.一种用于在包括一个或多个处理集群和多个存储器块的电子设备处管理存储器访问的装置,每个处理集群包括一个或多个相应处理器并且耦合到所述存储器块中的至少一个存储器块,所述装置包括:
用于将所述电子设备的资源划分成多个资源部分以供多个客户端使用的构件,每个资源部分被分配给相应客户端并且具有相应分区标识符(ID);
用于接收与所述多个客户端相关联的对所述多个存储器块的多个数据访问请求的构件;以及
针对具有所述相应分区ID的每个资源部分:
用于跟踪对应于所述存储器块的多个存储器带宽使用状态的构件,其中每个存储器带宽使用状态与相应存储器块相关联,并且指示分配给所述相应分区ID以访问所述相应存储器块的存储器访问带宽中的至少多少被使用;
用于根据所述多个存储器带宽使用状态确定与所述相应分区ID相关联的使用水平的构件;
用于基于所述使用水平调整信用计数的构件;
用于将所调整的信用计数与请求发出阈值进行比较的构件;以及
用于根据确定所述信用计数大于所述请求发出阈值而发出存储器访问请求队列中与所述相应分区ID相关联的下一数据访问请求的构件。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/239,702 | 2021-09-01 | ||
US63/251,517 | 2021-10-01 | ||
US63/251,518 | 2021-10-01 | ||
US17/666,438 US11899964B2 (en) | 2021-09-01 | 2022-02-07 | Methods and systems for memory bandwidth control |
US17/666,438 | 2022-02-07 | ||
PCT/US2022/073925 WO2023034661A1 (en) | 2021-09-01 | 2022-07-20 | Methods and systems for memory bandwidth control |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117882058A true CN117882058A (zh) | 2024-04-12 |
Family
ID=90588722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280056615.9A Pending CN117882058A (zh) | 2021-09-01 | 2022-07-20 | 用于存储器带宽控制的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117882058A (zh) |
-
2022
- 2022-07-20 CN CN202280056615.9A patent/CN117882058A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11899964B2 (en) | Methods and systems for memory bandwidth control | |
US11829637B2 (en) | Methods and systems for memory bandwidth control | |
CN110058786B (zh) | 用于控制存储系统中的写请求的方法、装置和计算机程序产品 | |
US7971074B2 (en) | Method, system, and apparatus for a core activity detector to facilitate dynamic power management in a distributed system | |
TWI627536B (zh) | 用於具有調適分割之一共用快取之系統及方法 | |
US7308539B2 (en) | Concurrent read access and exclusive write access to data in shared memory architecture | |
WO2006057790A9 (en) | System and method for managing quality of service for a storage system | |
US8898674B2 (en) | Memory databus utilization management system and computer program product | |
US9354989B1 (en) | Region based admission/eviction control in hybrid aggregates | |
US10496550B2 (en) | Multi-port shared cache apparatus | |
WO2021036689A1 (zh) | 一种缓存空间的管理方法及装置 | |
US7392353B2 (en) | Prioritization of out-of-order data transfers on shared data bus | |
US20200310690A1 (en) | Dynamic near-data processing control mechanism based on computer resource availability on solid-state disk platforms | |
CN117882058A (zh) | 用于存储器带宽控制的方法和系统 | |
US11733757B2 (en) | Hierarchical power management architecture for SoC-based electronic devices | |
US20220365879A1 (en) | Throttling Schemes in Multicore Microprocessors | |
US20230384855A1 (en) | Reducing system power consumption when capturing data from a usb device | |
US11609700B2 (en) | Pacing in a storage sub-system | |
US11327909B1 (en) | System for improving input / output performance | |
EP4057150B1 (en) | Systems, methods, and devices for data storage with specified data transfer rate | |
EP4134806A1 (en) | Improving pacing in a storage sub-system | |
CN117461011A (zh) | 用于基于SoC的电子设备的分级功率管理架构 | |
CN117642731A (zh) | 级感知高速缓存替换 | |
CN115698971A (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 |