CN116028386A - 缓存资源的动态分配 - Google Patents
缓存资源的动态分配 Download PDFInfo
- Publication number
- CN116028386A CN116028386A CN202211113932.8A CN202211113932A CN116028386A CN 116028386 A CN116028386 A CN 116028386A CN 202211113932 A CN202211113932 A CN 202211113932A CN 116028386 A CN116028386 A CN 116028386A
- Authority
- CN
- China
- Prior art keywords
- page lock
- cache
- entries
- data
- memory
- 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
Images
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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文描述的示例包括缓存控制器和缓存设备。在一些示例中,缓存控制器被配置为在可操作时:在处理器操作期间,基于分页锁定区域的使用率动态地调整缓存设备中分配的分页锁定区域的最大数目。在一些示例中,缓存控制器将基于缓存设备中的分页锁定条目的数目未被超过来将条目存储到标签存储器中。在一些示例中,条目包括指示数据是否被存储在缓存设备中的元数据信息。
Description
背景技术
与从主存储器存取数据相比,缓存存储器用于减少存取数据的时间。在联网应用中,位于主机存储器中的查找表能够被存储在缓存中以供更快速的存取。然而,缓存存储器具有数量有限的存储器资源。缓存中的数据,诸如特许流条目,能够被分页锁定(pinned)以防止数据被从缓存逐出并且基于特许流条目提供分组数据的及时处理。非分页锁定数据能够被从缓存逐出,以为其他数据腾出空间。
缓存逐出方案包括当数据最近未被及时存取时不保证将数据保留在缓存中的最近最少使用(LRU)技术。当请求的数据未被存储在缓存中时,发生缓存未命中,并且可能发生从主存储器读取数据的存取。然而,从主存储器存取数据会增加数据存取时间并且导致较差的缓存性能。一些缓存解决方案能够分页锁定每缓存集合的固定数目的条目,以防止数据被从缓存逐出。将数据分页锁定在缓存中能够减少缓存未命中的数目。
附图说明
图1描绘了示例系统。
图2描绘了示例系统。
图3描绘了示例过程。
图4描绘了示例过程。
图5描绘了测试结果的示例。
图6描绘了示例系统。
具体实施方式
从缓存存取并且将被分页锁定在缓存中的数据可根据流量状态(例如,活动或非活动流)动态地改变。在应用运行时间期间,一些示例确定缓存中的分页锁定条目和非分页锁定条目之间的比率并且实时地对来自缓存的数据的变化存取和对数据的对应分页锁定做出响应,以修改缓存中的分页锁定条目和非分页锁定条目之间的比率。一些示例在[0...通道数目]的范围内调整每集合的最大分页锁定对象的数目以适应应用运行时间期间的用户需要,然而如果某个集合的分页锁定对象或通道的数目被超过,则溢出存储器可存储一个或多个条目。除缓存中的分页锁定条目的数目的配置所支持的数目的分页锁定条目以外,溢出存储器还可灵活地存储附加数目的分页锁定条目。如果做出了存储分页锁定条目的请求,但是在标签存储器中没有未占用的分页锁定条目,则可将分页锁定条目或标签存储在溢出存储器中。在一些示例中,不使用溢出存储器,而是标签存储器替代地存储分页锁定条目或标签。
一些示例提供了缓存的每集合的分页锁定通道的数目的动态修改。基于对溢出存储器的占用水平的监测,可自适应地修改每集合的分页锁定条目的数目。此系统可动态地生成分页锁定水平,增加缓存利用率,并且解决不断变化的分页锁定请求。跨缓存动态地调谐分页锁定水平的能力转化成对缓存的更好利用,并且在我们设法交付某个分页锁定水平时节省管芯面积。
缓存中的条目可表示存储器中存储被存储在缓存存储器中的数据的地址范围或区域。一些示例允许将缓存中的条目配置为分页锁定条目。缓存条目内部的字段(例如,一个或多个比特)可指示存储器区域是否被分页锁定在缓存中。
在缓存中分页锁定条目和对应数据可提供可预测的数据存取时延并且减少由于缓存未命中而导致的存储器存取的数目。例如,当某个设备使用高优先级很少使用的流上下文但是需要对流上下文进行可预测存取时,应该将流上下文保持在缓存中,即使最近未使用也如此。
图1描绘了可通过使用标签存储器和溢出标签存储器来管理分页锁定条目的系统。处理器102-0至102-A可包括XPU。XPU可包括以下项中的一个或多个:中央处理单元(CPU)、图形处理单元(GPU)、通用GPU(GPGPU)、现场可编程门阵列(FPGA)、加速处理单元(APU)、加速器、或其他处理器。核心可以是能够运行指令的运行核心或计算引擎。核心可以访问它自己的缓存和只读存储器(ROM),或者多个核心可以共享缓存或ROM。核心可以是同构设备和/或异构设备。
处理器102-0至102-A可存取并利用以下项中的一个或多个:第1级(L1)缓存104-0至104-A、第2级(L2)缓存106-0至106-A、第3级(L3)缓存或最后级缓存(LLC)108、易失性或非易失性存储器110、存储装置112、和设备114。L1、L2、或LLC中的一个或多个可包括分页锁定条目管理器120,该分页锁定条目管理器120可如本文所描述的那样管理标签存储器122中的分页锁定条目的数目以及分页锁定条目到溢出存储器124中的存储。L1、L2、或LLC中的一个或多个可包括标签存储器122,该标签存储器122可用于存储指定哪些可能的存储器区域当前被存储在缓存中的条目。标签存储器122中的条目可包括以下字段中的一个或多个:条目标识符(ID)、地址段、有效指示、分页锁定指示、最近最少使用(LRU)指示符。地址段可包括存储在缓存中的数据在主存储器中的地址的部分。L1、L2、或LLC中的一个或多个可包括溢出标签存储器,该溢出标签存储器与标签存储器一起位于管芯上并且可用于在分页锁定条目在标签存储器122中不可用的情况下存储与分页锁定数据写入请求相关联的条目。为了设置或修改标签存储器122中的分页锁定条目的数目,处理器102-0至102-A可运行驱动器或者管芯上固件引擎可管理可用的分页锁定条目的数目。注意,尽管示例是关于处理器102-0至102-A的,但是本文描述的其他设备(例如,设备114)可访问以下项中的一个或多个:第1级(L1)缓存104-0至104-A、第2级(L2)缓存106-0至106-A、第3级(L3)或最后级缓存(LLC)108、易失性或非易失性存储器110、或存储装置112。
处理器102-0至102-A可运行任何应用(例如,虚拟机(VM)、容器、微服务、无服务器应用、进程等)。应用可请求从存储器读取或向缓存写入数据。应用的各种示例可基于数据平面开发套件(DPDK)、存储性能开发套件(SPDK)、开放数据平面(OpenDataPlane)、网络功能虚拟化(NFV)、软件定义联网(SDN)、演进分组核心(EPC)、或5G网络切片中的一种或多种执行分组处理。在来自ETSI的开源Mano(OSM)小组的开源NFV MANO或ETSI规范中描述了NFV的一些示例实施方式。虚拟网络功能(VNF)可包括在通用可配置硬件,如防火墙、域名系统(DNS)、缓存或网络地址转换(NAT)上运行的虚拟化任务的服务链或序列并且可在VEE中运行。VNF可作为服务链被链接在一起。在一些示例中,EPC是至少用于长期演进(LTE)接入的3GPP指定的核心架构。5G网络切片可提供在同一物理网络基础设施上复用虚拟化的独立逻辑网络。一些应用可执行视频处理或媒体转码(例如,改变音频、图像、或视频文件的编码)。
可被分页锁定在缓存中的数据可包括但不限于从外部存储器查找的数据。例如,存储的数据可包括以下项中的一个或多个:MAC上下文信息、IPv4上下文信息、TCP上下文信息、端口/套接字上下文信息、或应用地址信息。MAC上下文信息可包括与MAC上下文相关的信息并且可包括驱动器数据结构、驱动器统计结构等。例如,IPv4上下文信息可指代诸如路由表,转发、传送到主机的决策等的IPv4分组处理信息。例如,TCP上下文信息可指代与TCP连接相关的信息并且可包括以下项中的一个或多个:顺序编号、拥塞窗口、未确认分组、乱序队列信息等。例如,端口/套接字上下文信息可指代套接字水平上下文信息,诸如但不限于套接字设置、套接字标志、套接字的地址族、与套接字相关联的网络接口设备中的队列、连接的状态(例如,等待、睡眠、活动)、正在等待动作的线程等。例如,应用地址信息可指代与处理上下文信息的应用相关的数据。
设备114可包括以下项中的一个或多个:XPU、CPU、CPU插口、图形处理单元(GPU)、处理器、网络接口设备、加速器设备、板管理控制器(BMC)、存储控制器、存储器控制器、显示引擎、外围设备、管理或可管理性引擎(ME)、AMD平台安全处理器(PSP)、带有TrustZone扩展的ARM核心、平台控制器集线器(PCH)、专用集成电路(ASIC)等。网络接口设备可包括以下项中的一个或多个:网络接口控制器(NIC)、网络接口卡、SmartNIC、路由器、交换机、转发元件、基础设施处理单元(IPU)、或数据处理单元(DPU)。
图2描绘了示例系统。该系统可以是缓存库(CB)的部分。缓存存储器2010可包括以下项中的一个或多个:L1缓存、L2缓存、L3缓存、LLC、或易失性或非易失性存储器。缓存存储器2010可将与存储器地址区域或范围(未示出)相关联的数据存储在本地或远程存储器设备中。标签存储器2012可使用条目来识别存储在缓存存储器2010中的数据。在一些示例中,条目可包括以下字段中的一个或多个:条目标识符(ID)、有效指示、分页锁定/非分页锁定指示、或最近最少使用(LRU)指示符。
标签存储器2012可存储缓存存储器2010中存储的数据的元数据信息(条目)。在此示例中,标签存储器2012被配置为存储与缓存存储器2010中存储的数据相对应的N-1个集合的X个通道的条目。可在不同方案中配置缓存存储器2010。在一些示例中,缓存存储器2010可以是具有8个通道、1024个集合的集合关联缓存,然而可使用其他数目的集合和通道。可将集合关联缓存划分成称作缓存通道的多个部分。可将缓存通道视为主存储器中的存储器位置的直接映射缓存。可将缓存通道分组成集合以创建集合关联方案,其中集合对应于主存储器位置的集合。例如,主存储器可具有1024个存储器位置并且可被划分成四个集合。第一集合的主存储器位置可包括位置0-255,第二集合的主存储器位置可包括位置256-511,依此类推。集合关联缓存可具有200个通道,这200个通道可以被划分为4个集合,每个集合包括50个通道,其中每个集合的通道对应于一个集合的主存储器位置。例如,第一集合的通道可包括可在其中存储来自第一集合的主存储器位置(存储器位置1-250)中的任一个主存储器位置的数据的50个通道。在另一示例中,第一集合的通道可包括可在其中存储来自一个集合的主存储器位置(例如,存储器位置1、5、9、13...993、997)中的任一个主存储器位置的数据的50个通道。
溢出标签存储器2014可存储请求被分页锁定的数据的元数据信息,但是提前满足了分页锁定条目的最大配置数目。与存储在溢出标签存储器2014中的条目相对应的数据可被存储在缓存存储器2010中。在一些示例中,控制器2000可基于标签存储器2012中的分页锁定条目的许可数目被超过来将条目存储到溢出标签存储器2014中。在一些示例中,可基于完全关联缓存来实现溢出标签存储器2014。在一些示例中,可将标签存储器2012和/或溢出标签存储器2014实现为内容可寻址存储器(CAM)设备。寻址到溢出标签存储器表2014可使用内容可寻址存储器(CAM)来进行。在一些示例中,溢出标签存储器2014可以不与集合相关联。
在一些示例中,缓存条目计数可小于存储器大小。例如,400万个主存储器条目可按1:512的比率映射到具有8K个条目的缓存。在这种示例中,可分配1K个集合和8个通道。标签存储器2012可包括1024个集合和每个集合中的8个通道。数据存储器可包括8192个条目并且溢出存储器2014可包括512个条目。为溢出标签存储器2014分配的数据存储器可以是缓存数据存储器以外的数据存储器。例如,对于1K个集合、8个通道、以及512个溢出条目,数据存储器中的8K个条目可被用于缓存(集合*通道)并且附加的512个数据条目可被用于溢出存储器2014。
例如,控制器2000可接收以下项中的至少一个作为输入:来自缓存的引起从存储器读取数据并向缓存存储器2010写入数据的数据读取请求(例如,非分页锁定);对于缓存存储器2010的数据写入;到外部存储器(未示出)的写入和从到缓存存储器2010的数据冲刷;或数据到缓存存储器2010的分页锁定写入请求。例如,分页锁定写入请求(缓存库(CB)Pin WR Req)可请求将数据写入到缓存存储器2010,将此类数据分页锁定在缓存存储器2010中,并且将关联条目分页锁定在标签存储器2012中。如果标签存储器2012尚未满足并且未超过与分页锁定写入请求相关联的集合的分页锁定条目的数目,则控制器2000可通过输出分页锁定写入请求(Tag Mem Pin WR Req)来使得将与分页锁定写入请求相关联的条目分页锁定到标签存储器2012。
然而,如果标签存储器2012已经满足或超过与分页锁定写入请求相关联的集合的分页锁定条目的数目,则控制器2000可使得将与分页锁定写入请求相关联的条目分页锁定到溢出标签存储器2014。
控制器2000可基于溢出标签存储器2014的使用水平来增加标签存储器2012中的分页锁定条目的数目。例如,如果标签存储器2012中的阈值数目的分页锁定条目被使用,则可增加标签存储器2012中的分页锁定条目的数目。相反地,如果标签存储器2012中的少于第二阈值数目的分页锁定条目被使用,其中第二阈值数目小于上述阈值数目,则可减小标签存储器2012中的分页锁定条目的数目。可以设置阈值数目以防止溢出标签存储器2014被过度使用而不可用于提供针对将数据分页锁定在缓存存储器2010中的过多请求的缓冲。因此,可进行标签存储器2012中的分页锁定条目和缓存存储器2010中的对应存储器区域的动态分配。在一些示例中,控制器2000可运行固件代码。
接下来描述图2的系统的示例操作。在此示例中,每集合存在2个分页锁定条目。响应于接收到带有要分页锁定在缓存存储器2010中(而不可逐出)的数据的分页锁定写入请求,可将数据写入到缓存存储器2010。如果在缓存存储器2010中存在可用的存储器区域,则可将数据存储在缓存存储器2010中并且将其对应的条目存储在标签存储器2012中。如果在缓存存储器2010中没有可用的存储器区域,则可逐出非分页锁定数据,并且可将数据作为分页锁定条目代替被逐出的非分页锁定数据存储在缓存存储器2010中并且将其对应的条目存储在标签存储器2012中。
带有要分页锁定在缓存存储器2010中的第二数据的第二分页锁定写入请求被接收。如果在缓存存储器2010中存在可用的存储器区域,则可将第二数据存储在缓存存储器2010中并且将其对应的条目存储在标签存储器2012中。如果在缓存存储器2010中没有可用的存储器区域,则可逐出非分页锁定数据,并且可将第二数据作为分页锁定条目代替被逐出的非分页锁定数据存储在缓存存储器2010中并且将第二数据的对应条目存储在标签存储器2012中。
带有要分页锁定在缓存存储器2010中的第二数据的第三分页锁定写入请求被接收。如果在缓存存储器2010中存在可用的存储器区域,则可将第三数据存储在缓存存储器2010中,并且将其对应的条目存储在标签存储器2012中。例如,如果用于集合的分页锁定阈值是2,并且2个分页锁定项目在用于集合的标签存储器2012中,则即使在集合中存在空条目,也可将第三分页锁定请求项存储在溢出存储器2014中。
如果在缓存存储器2010中没有可用的存储器区域,则可逐出非分页锁定数据,并且可将第三数据作为分页锁定条目代替被逐出的非分页锁定数据存储在缓存存储器2010中,并且将第三数据的对应条目存储在标签存储器2012中。由于分配了两个分页锁定条目,所以可将第三数据的条目写入到溢出存储器2014。
可通知请求将第三数据存储到缓存存储器2010中的客户端是否由于缺少可用的存储器区域,例如在缓存存储器2010中没有可逐出的数据,而未将第三数据分页锁定在缓存存储器2010中。如果在标签存储器2012中没有地方并且溢出存储器2014满了,则可能发生这种反馈。
如果溢出标签存储器2014中的分页锁定条目的数目超过阈值(例如,50%),则可增加每集合的分页锁定条目的数目。可设置多个阈值,每集合的分页锁定条目的数目的增加可通过满足不同的增加阈值(例如,75%、90%)而升高。
对于接收到的对缓存中的第三数据的读取请求,可将第三数据识别为被存储在缓存存储器2010中并且可更新针对与第三数据相关联的条目更新的LRU。可将第三数据提供给请求者。
图3描绘了用于分配每集合的分页锁定条目的数目的示例过程。在302,可配置每集合的分页锁定条目的数目以及溢出标签存储器的第一和第二填充水平阈值。每集合的分页锁定条目的数目可指定标签存储器中的分页锁定条目的极限。第一填充水平阈值可指定溢出缓存的、可触发每集合的分页锁定条目的数目的减少的更低填充水平。第二填充水平阈值可指定溢出缓存的、可触发每集合的分页锁定条目的数目的增加的更高填充水平。例如,可基于每集合的分页锁定条目的数目来分页锁定集合关联缓存的一个或多个集合。在一些示例中,分页锁定条目的数目、第一填充水平阈值、和/或第二填充水平阈值可能基于服务水平协定(SLA)。例如,编排器、驱动器、负责缓存管理的管芯上固件引擎、由服务器处理器运行的控制平面、或其他示例可执行配置。
例如,MAX_PIN控制和状态寄存器(CSR)可将每集合的分页锁定条目的数目定义在[0到通道数目]的范围内。CSR中的值可在利用分页锁定条目的应用的运行时间期间改变,从而确保每集合的分页锁定对象针对有限时间帧的分配。参数OVF_DEPTH可定义分页锁定条目的溢出存储的大小。
在304,可监测溢出缓冲器中的分页锁定条目的数目。以CB块接收分页锁定写入请求可使分页锁定对象数据被写入到标签存储器。如果在另一分页锁定条目的集合中没有空闲条目,则可将条目写入到溢出标签存储器中并且将相关数据写入到缓存存储器中。
在306,可作出关于溢出标签存储器中的分页锁定条目的数目是满足或低于第一阈值还是满足或超过第二阈值的判定。基于任何一个条件被满足,该过程可返回到302,其中基于溢出标签存储器中的分页锁定条目的数目满足或低于第一阈值,可减少标签存储器中的分页锁定条目的数目;或者基于溢出标签存储器中的分页锁定条目的数目满足或超过第二阈值,可增加标签存储器中的分页锁定条目的数目。在一些示例中,第一阈值可以是25%的占用率。在一些示例中,第二阈值可以是50%的占用率。可限制溢出标签存储器的占用率水平,以提供吸收对分页锁定条目的请求的能力。
图4描绘了可用于存储与分页锁定写入请求相关联的条目的示例过程。在402,可以缓存块接收分页锁定数据写入请求。在404,可做出与分页锁定数据写入请求相关联的条目是否可被存储在缓存的标签存储器中的判定。标签存储器中可用的分页锁定条目的数目可基于能够被动态地调整的配置。如果标签存储器中的分页锁定条目可用,则该过程可继续到406。在406,与分页锁定数据写入请求相关联的条目可被存储在缓存的标签存储器中。
如果标签存储器中的分页锁定条目不可用,则该过程可继续到410。在410,与分页锁定数据写入请求相关联的条目可被存储在溢出标签存储器中。注意,在一些情况下,如果在溢出标签存储器中没有可用的分页锁定区域,则可将数据及其条目存储为非分页锁定的。
图5针对每集合的分页锁定条目的不同数目描绘了按缓存分页锁定水平存储在溢出存储器中的分页锁定对象的数目。使用动态分页锁定分配流程允许按集合选择分页锁定条目以使溢出存储器分页锁定水平维持在50%的占用率以下。例如,当缓存的30%被分页锁定对象占用时,每集合分配的分页锁定条目的数目可以是8分之4,以确保溢出存储器填充低于50%。
图6描绘了一种系统。如本文所描述的,各种示例可被系统600用来基于溢出标签存储器的占用率来调整标签存储器中的分页锁定条目的水平。系统600包括处理器610,其为系统600提供指令的处理、操作管理、和运行。处理器610可包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、处理核心、或用于为系统600提供处理的其他处理硬件、或处理器的组合。处理器610控制系统600的整体操作,并且可以是或者包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)等,或此类设备的组合。如本文所描述的,处理器610的微代码可通过离线到在线操作来更新并且允许由这种处理器执行的工作负载被另一处理器运行。
在一个示例中,系统600包括耦合到处理器610的接口612,其可表示用于需要更高带宽连接的系统组件(例如,存储器子系统620、图形接口640、或加速器642)的更高速度接口或高吞吐量接口。接口612表示接口电路,其可以是独立组件或者被集成到处理器管芯上。在存在的情况下,图形接口640接口到图形组件以便向系统600的用户提供视觉显示。在一个示例中,图形接口640可驱动向用户提供输出的高清晰度(HD)显示器。高清晰度可以指具有大约100PPI(每英寸像素)或更大的像素密度的显示器并且可包括诸如全HD(例如,1180p)、视网膜显示器、6K(超高清晰度或UHD)或其他的格式。在一个示例中,显示器可包括触摸屏显示器。在一个示例中,图形接口640基于存储在存储器630中的数据或者基于由处理器610执行的操作或它们二者来生成显示。在一个示例中,图形接口640基于存储在存储器630中的数据或者基于由处理器610执行的操作或它们二者来生成显示。
加速器642可以是可被处理器610访问或使用的可编程或固定功能卸载引擎。例如,加速器642当中的加速器可以提供本文描述的方式的推测性解码操作,压缩(DC)能力,诸如公钥加密(PKE)、密码、散列/认证能力、解密的密码服务,或其他能力或服务。在一些实施例中,另外或替换地,加速器642当中的加速器提供如本文所描述的现场选择控制器能力。在一些情况下,加速器642可被集成到CPU插口(例如,到包括CPU并且提供与CPU的电接口的主板或电路板的连接器)中。例如,加速器642可包括单核心或多核心处理器、图形处理单元、逻辑执行单元单级或多级缓存、可用于独立执行程序或线程的功能单元、专用集成电路(ASIC)、神经网络处理器(NNP)、可编程控制逻辑、和可编程处理元件(诸如现场可编程门阵列(FPGA))。加速器642可提供多个神经网络、CPU、处理器核心、通用图形处理单元,或者可使图形处理单元用于人工智能(AI)或机器学习(ML)模型。例如,AI模型可使用或者包括以下项中的任一个或组合:强化学习方案、Q学习方案、深度Q学习、或异步优势演员-评论员(A3C)、组合神经网络、递归组合神经网络、或其他AI或ML模型。可使多个神经网络、处理器核心、或图形处理单元供AI或ML模型使用。
存储器子系统620表示系统600的主存储器并且为要由处理器610执行的代码或要在运行例程时使用的数据值提供存储。存储器子系统620可包括一个或多个存储器设备630,诸如只读存储器(ROM)、闪存、一种或多种随机存取存储器(RAM)(诸如DRAM)、或其他存储器设备、或此类设备的组合。存储器630存储并托管操作系统(OS)632,以提供用于执行系统600中的指令的软件平台。另外,应用634可在来自存储器630的OS 632的软件平台上执行。应用634表示具有它们自己的操作逻辑来执行一个或多个功能的运行的程序。进程636表示向OS 632或一个或多个应用634或组合提供辅助功能的代理或例程。OS 632、应用634、和进程636提供软件逻辑来为系统600提供功能。在一个示例中,存储器子系统620包括存储器控制器622,其是用于生成命令并向存储器630发出命令的存储器控制器。应理解的是,存储器控制器622可以是处理器610的物理部分或接口612的物理部分。例如,存储器控制器622可以是与处理器610一起集成到电路上的集成存储器控制器。
在一些示例中,OS 632可以是服务器或个人计算机、VMware vSphere、openSUSE、RHEL、CentOS、Debian、Ubuntu、或任何其他操作系统。OS和驱动器可在由 等销售或设计的CPU上执行。在一些示例中,驱动器可如本文所描述的那样配置标签存储器中的分页锁定条目的数目以及溢出标签存储器的、触发对标签存储器中的分页锁定条目的数目进行调整的阈值占用率水平。
虽然未具体地图示,但是应理解的是,系统600可包括设备之间的一个或多个总线或总线系统,诸如存储器总线、图形总线、接口总线、或其他总线。总线或其他信号线可将组件通信地或电力地耦合在一起,或者既通信地又电力地耦合组件。总线可包括物理通信线、点对点连接、桥接器、适配器、控制器、或其他电路系统或组合。总线可包括例如以下项中的一个或多个:系统总线、外围组件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)、或电气与电子工程师协会(IEEE)标准1394总线(Firewire)。
在一个示例中,系统600包括接口614,其可以耦合到接口612。在一个示例中,接口614表示接口电路,其可以包括独立组件和集成电路系统。在一个示例中,多个用户接口组件或外围组件或它们两者耦合到接口614。网络接口650为系统600提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)进行通信的能力。网络接口650可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)、或其他基于有线或无线标准的或专有接口。网络接口1050可以向位于同一数据中心或机架中的设备或远程设备发送数据,这可以包括发送存储在存储器中的数据。网络接口650可以从远程设备接收数据,这可以包括将接收到的数据存储到存储器中。如本文所描述的,处理器610、存储器子系统620、网络接口650、或加速器642的微代码可通过离线到在线操作来更新并且允许由这种处理器执行的工作负载被另一处理器或加速器运行。
在一个示例中,系统600包括一个或多个输入/输出(I/O)接口660。I/O接口660可包括用户通过其来与系统600交互(例如,音频、字母数字、触觉/触摸或其他接口)的一个或多个接口组件。外围接口670可包括在上面未具体地提及的任何硬件接口。外围设备通常是指从属地连接到系统600的设备。从属连接是这样的连接,其中系统600提供操作在其上运行并且用户与之交互的软件平台或硬件平台或它们两者。
在一个示例中,系统600包括以非易失性方式存储数据的存储子系统680。在一个示例中,在某些系统实施方式中,存储装置680的至少某些组件可与存储器子系统620的组件重叠。存储子系统680包括(一个或多个)存储设备684,其可以是或者包括用于以非易失性方式存储大量数据的任何常规介质,诸如一个或多个磁盘、固态盘、或光盘、或组合。存储装置684将代码或指令以及数据646保持在持久状态下(即,即使到系统600的电力中断,值也被保持)。存储装置684可以被通常认为是“存储器”,但是存储器630通常是用于向处理器610提供指令的运行或工作存储器。然而,存储装置684是非易失性的,存储器630可包括易失性存储器(即,如果到系统600的电力被中断,则数据的值或状态是不确定的)。在一个示例中,存储子系统680包括与存储装置684接口的控制器682。在一个示例中,控制器682是接口614或处理器610的物理部分或者可包括处理器610和接口614两者中的电路或逻辑。
易失性存储器是其状态(以及因此存储在其中的数据)在到设备的电力被中断的情况下不确定的存储器。动态易失性存储器可涉及刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器)或诸如同步DRAM(SDRAM)的某些变体。如本文所描述的存储器子系统可以与诸如以下项的多种存储器技术兼容:DDR3(由JEDEC(电子器件工程联合会)于2007年6月27日最初发布的双倍数据速率版本3)、DDR4(DDR版本4,由JEDEC于2012年9月发布的初始规范)、DDR4E(DDR版本4)、LPDDR3(由JEDEC于2013年8月最初发布的低功率DDR版本3,JESD209-3B)、LPDDR4(由JEDEC于2014年8月最初发布的LPDDR版本4,JESD209-4)、WIO2(由JEDEC于2014年8月最初发布的宽输入/输出版本2,JESD229-2)、HBM(由JEDEC于2013年10月最初发布的高带宽存储器,JESD325)、LPDDR5(当前JEDEC正在讨论)、HBM2(HBM版本2,当前JEDEC或其他人正在讨论)、或存储器技术的组合,以及基于此类规范的衍生物或扩展的技术。
非易失性存储器(NVM)设备是即使到该设备的电力被中断其状态也是确定的存储器。在一些示例中,NVM设备可包括可块寻址的存储器设备,诸如NAND技术,或更具体地,多阈值级NAND闪存(例如,单级单元(“SLC”)、多级单元(“MLC”)、四级单元(“QLC”)、三级单元(“TLC”)、或某些其他NAND)。NVM设备还可包括可字节寻址的就地写入三维交叉点存储器设备或其他可字节寻址的就地写入NVM设备(也称为持久存储器),诸如单级或多级相变存储器(PCM)或带开关的相变存储器(PCMS)、使用硫族化物相变材料(例如,硫族化物玻璃)的NVM设备、包括金属氧化物基、氧空位基、和导电桥随机存取存储器(CB-RAM)的电阻式存储器、纳米线存储器、铁电随机存取存储器(FeRAM、FRAM)、包含忆阻器技术的磁阻式随机存取存储器(MRAM)、自旋转移矩(STT)-MRAM、基于自旋电子磁结存储器的设备、基于磁隧穿结(MTJ)的设备、基于DW(域壁)和SOT(自旋轨道转移)的设备、基于晶闸管的存储器设备、或上述各项的任意组合,或其他存储器。
电源(未描绘)向系统600的组件提供电力。更具体地,电源通常接口到系统600中的一个或多个电力供应源,以向系统600的组件提供电力。在一个示例中,电力供应源包括要插入墙壁插座的AC至DC(交流电到直流电)适配器。这种AC电源可以是可再生能源(例如,太阳能)电源。在一个示例中,电源包括DC电源,诸如外部AC至DC转换器。在一个示例中,电源或电力供应源包括经由与充电场的接近充电的无线充电硬件。在一个示例中,电源可包括内部电池、交流电源、基于运动的电力供应源、太阳能电力供应源、或燃料电池源。
在示例中,系统600可使用处理器、存储器、存储装置、网络接口、和其他组件的互连计算雪橇(compute sled)来实现。可使用诸如以下项的高速互连:以太网(IEEE 802.3)、远程直接存储器存取(RDMA)、InfiniBand、因特网广域RDMA协议(iWARP)、快速UDP因特网连接(QUIC)、基于融合以太网的RDMA(RoCE)、外围组件互连快速(PCIe)、英特尔QuickPath互连(QPI)、英特尔超路径互连(UPI)、英特尔片上系统结构(IOSF)、Omnipath、计算快速链路(CXL)、HyperTransport、高速结构、NVLink、高级微控制器总线架构(AMBA)互连、OpenCAPI、Gen-Z、加速器用缓存一致互连(CCIX)、3GPP长期演进(LTE)(4G)、3GPP 5G及其变体。可使用诸如基于结构的NVM(NVMe-oF)或NVMe的协议来将数据拷贝或存储到虚拟化存储节点。
可以在诸如以下项的各种类型的计算和联网设备中实现本文的示例:交换机、路由器、机架、和刀片服务器,诸如在数据中心和/或服务器场环境中采用的那些。在数据中心和服务器场中使用的服务器包括阵列服务器配置,诸如基于机架的服务器或刀片服务器。这些服务器经由各种网络规定通信地互连,诸如将服务器集分区成局域网(LAN),同时在LAN之间具有适当的交换和路由设施以形成专用内联网。例如,云托管设施通常可以采用具有大量服务器的大型数据中心。刀片包括被配置为执行服务器类型功能的单独计算平台,即“卡上服务器”。因此,刀片包括为常规服务器所共用的组件,包括提供内部布线(即,总线)以用于耦合安装到板的适当的集成电路(IC)和其他组件的主印刷电路板(主板)。
可以在以下项中使用各种示例:使用有线或无线协议(例如,3GPP长期演进(LTE)(4G)或3GPP 5G)来支持通信的基站、驻地上数据中心、驻地外数据中心、边缘网络元件、边缘服务器和交换机、雾网络元件、和/或混合数据中心(例如,使用虚拟化、云和软件定义联网来跨物理数据中心和分布式多云环境递送应用工作负载的数据中心)。
可以在诸如以下项的各种类型的计算和联网设备中实现本文的示例:交换机、路由器、机架、和刀片服务器,诸如在数据中心和/或服务器场环境中采用的那些。在数据中心和服务器场中使用的服务器包括阵列服务器配置,诸如基于机架的服务器或刀片服务器。这些服务器经由各种网络规定通信地互连,诸如将服务器集分区成局域网(LAN),同时在LAN之间具有适当的交换和路由设施以形成专用内联网。例如,云托管设施通常可以采用具有大量服务器的大型数据中心。刀片包括被配置为执行服务器类型功能的单独计算平台,即“卡上服务器”。因此,每个刀片包括为常规服务器所共用的组件,包括提供内部布线(即,总线)以用于耦合安装到板的适当的集成电路(IC)和其他组件的主印刷电路板(主板)。
在一些示例中,本文描述的网络接口和其他示例可以连同基站(例如,3G、4G、5G等)、宏基站(例如,5G网络)、微微站(例如,IEEE802.11兼容接入点)、纳米站(例如,用于点对多点(PtMP)应用)一起使用。
可以使用硬件元件、软件元件、或它们两者的组合来实现各种示例。在一些示例中,硬件元件可以包括设备、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。在一些示例中,软件元件可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、进程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或它们的任何组合。确定是否使用硬件元件和/或软件元件来实现示例可以依照如给定实施方式所期望的任何数目的因素而变化,这些因素诸如期望计算速率、功率水平、热容差、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度、和其他设计或性能约束。处理器可以是硬件状态机、数字控制逻辑、中央处理单元、或任何硬件、固件、和/或软件元件的一个或多个组合。
一些示例可以使用或作为制品或至少一个计算机可读介质来实现。计算机可读介质可以包括用于存储逻辑的非暂态存储介质。在一些示例中,非暂态存储介质可以包括能够存储电子数据的一种或多种类型的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移动或不可移动存储器、可擦除或不可擦除存储器、可写入或可重写存储器等。在一些示例中,逻辑可以包括各种软件元件,诸如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、进程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号、或它们的任何组合。
根据一些示例,计算机可读介质可以包括用于存储或维持指令的非暂态存储介质,所述指令当由机器、计算设备或系统运行时,使得该机器、计算设备或系统执行依照所描述的示例的方法和/或操作。指令可以包括任何合适类型的代码,诸如源代码、编译代码、解析代码、可运行代码、静态代码、动态代码等。可以根据预定义计算机语言、方式、或语法来实现指令,以用于指示机器、计算设备或系统执行某个功能。指令可以使用任何合适的高级、低级、面向对象、可视、编译、和/或解析编程语言来实现。
至少一个示例的一个或多个方面可以通过存储在至少一个机器可读介质上的、表示处理器内的各种逻辑的代表性指令来实现,这些代表性指令当由机器、计算设备或系统读取时,使得该机器、计算设备或系统制作逻辑来执行本文描述的技术。称为“IP核”的此类表示可以被存储在有形机器可读介质上并且供应给各种客户或制造设施,以加载到实际做出逻辑或处理器的制作机器中。
短语“一个示例”或“示例”的出现不一定都是指同一示例或实施例。本文描述的任何方面可以与本文描述的任何其他方面或类似方面组合,而不管这些方面是否是相对于相同的附图或元件描述的。对附图中描绘的块功能的划分、省略、或包括不意味着一定在示例中划分、省略、或包括用于实现这些功能的硬件组件、电路、软件、和/或元件。
可以使用表述“耦合”和“连接”以及它们的派生词来描述一些示例。这些术语不一定打算作为彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可以指示两个或更多个元件彼此直接物理或电接触。然而,术语“耦合”还可能意味着两个或更多个元件彼此不直接接触,但是仍然彼此合作或交互。
术语“第一”、“第二”等在本文中不表示任何次序、量、或重要性,而是相反用于区分一个元件和另一元件。本文中的术语“一”和“一个”不表示量的限制,而是相反表示存在所引用的至少一个项目。本文参考信号使用的术语“断言”表示信号的状态,其中信号是有效的,并且能够通过对信号应用逻辑0或逻辑1的任何逻辑电平来实现。术语“跟随”或“在…之后”可以指紧跟某个或某些其他事件或跟在某个或某些其他事件之后。还可以根据替代示例执行其他操作序列。此外,可以取决于特定应用而添加或移除附加操作。可以使用变化的任何组合,并且受益于本公开的本领域普通技术人员将理解它们的许多变化、修改、和替代示例。
除非另外具体地陈述,否则诸如短语“X、Y、或Z中的至少一个”的析取语言在上下文内被理解为通常用于呈现项目、术语等可以是X、Y、或Z、或它们的任何组合(例如,X、Y、和/或Z)。因此,这种析取语言通常不旨在并且不应该暗示某些示例需要至少一个X、至少一个Y、或至少一个Z分别存在。另外地,除非另外具体地陈述,否则诸如短语“X、Y、和Z中的至少一个”的析取语言也应该被理解为意指X、Y、Z、或它们的任何组合,包括“X、Y、和/或Z”。
在下面提供本文公开的设备、系统、和方法的说明性示例。设备、系统、和方法的示例可以包括下述示例中的任何一个或多个和它们的任何组合。
示例1包括一种计算机可读介质,包括存储在其上的指令,所述指令在由一个或多个处理器运行的情况下使得所述一个或多个处理器:将缓存设备控制器配置为:在处理器操作期间,基于分页锁定区域的使用率动态地调整缓存设备中分配的分页锁定区域的最大数目。
示例2包括一个或多个示例,其中所述缓存设备控制器将基于所述缓存设备中的分页锁定条目的数目未被超过来将条目存储到标签存储器中,并且所述条目包括指示所述数据是否被存储在所述缓存设备中的元数据信息。
示例3包括一个或多个示例,其中所述缓存设备控制器将基于所述缓存设备中的分页锁定条目的数目被超过来将条目存储到溢出存储器中,并且所述条目包括指示所述数据是否被存储在所述缓存设备中的元数据信息。
示例4包括一个或多个示例,其中所述分页锁定区域的使用率包括分页锁定条目的数目。
示例5包括一个或多个示例,其中在处理器操作期间动态地调整所述缓存设备中分配的分页锁定区域的最大数目包括基于所述分页锁定区域的使用率满足或超过阈值来增加分配的分页锁定条目的数目。
示例6包括一个或多个示例,其中在处理器操作期间动态地调整所述缓存设备中分配的分页锁定区域的最大数目包括基于所述分页锁定区域的使用率满足或小于第二阈值来减少分配的分页锁定条目的数目。
示例7包括一个或多个示例,其中存储在所述缓存设备中的数据包括以下项中的一个或多个:流数据或连接上下文。
示例8包括一个或多个示例,其中一种设备将数据存储到所述缓存设备,并且所述设备包括以下项中的一个或多个:多线程核心、中央处理单元(CPU)、XPU、图形处理单元(GPU)、网络接口设备、或专用集成电路(ASIC)。
示例9包括一个或多个示例,并且包括一种装置,所述装置包括:缓存控制器和缓存设备,其中所述缓存控制器被配置为在可操作性时:在处理器操作期间,基于分页锁定区域的使用率动态地调整所述缓存设备中分配的分页锁定区域的最大数目。
示例10包括一个或多个示例,其中所述缓存控制器将基于所述缓存设备中的分页锁定条目的数目未被超过来将条目存储到标签存储器中,并且所述条目包括指示所述数据是否被存储在所述缓存设备中的元数据信息。
示例11包括一个或多个示例,其中所述缓存控制器将基于所述缓存设备中的分页锁定条目的数目被超过来将条目存储到溢出存储器中,并且所述条目包括指示所述数据是否被存储在所述缓存设备中的元数据信息。
示例12包括一个或多个示例,其中在处理器操作期间基于分页锁定区域的使用率动态地调整所述缓存设备中分配的分页锁定区域的最大数目包括:基于所述分页锁定区域的使用率满足或超过阈值来增加分配的分页锁定条目的数目,或者基于所述分页锁定区域的使用率满足或小于第二阈值来减少分配的分页锁定条目的数目。
示例13包括一个或多个示例,其中存储在所述缓存设备中的数据包括以下项中的一个或多个:流数据或连接上下文。
示例14包括一个或多个示例,包括将数据存储在所述缓存设备中的设备,其中所述设备包括以下项中的一个或多个:多线程核心、中央处理单元(CPU)、XPU、图形处理单元(GPU)、网络接口设备、或专用集成电路(ASIC)。
示例15包括一个或多个示例,包括数据中心,所述数据中心包括所述设备、所述缓存控制器、以及所述缓存设备,其中所述数据中心将运行用于识别所述分页锁定区域的使用率的编排器。
示例16包括一个或多个示例,并且包括一种方法,所述方法包括:将缓存设备配置为:在处理器操作期间,基于分页锁定区域的使用率动态地调整所述缓存设备中分配的分页锁定区域的最大数目。
示例17包括一个或多个示例,包括:基于所述缓存设备中的分页锁定条目的数目未被超过来将标签存储到标签存储器中;以及基于所述缓存设备中的分页锁定条目的数目被超过来将所述标签存储到溢出存储器中。
示例18包括一个或多个示例,其中所述标签包括指示所述数据是否被存储在所述缓存设备中的元数据信息。
示例19包括一个或多个示例,其中在处理器操作期间基于分页锁定区域的使用率动态地调整所述缓存设备中分配的分页锁定区域的最大数目包括:基于所述分页锁定区域的使用率满足或超过阈值来增加分配的分页锁定条目的数目或者基于所述分页锁定区域的使用率满足或小于第二阈值来减少分配的分页锁定条目的数目。
示例20包括一个或多个示例,其中存储在所述缓存设备中的数据包括以下项中的一个或多个:流数据或连接上下文。
Claims (20)
1.一种计算机可读介质,包括存储在其上的指令,所述指令在由一个或多个处理器执行的情况下使得所述一个或多个处理器:
将缓存设备控制器配置为:
在处理器操作期间,基于分页锁定区域的使用率动态地调整缓存设备中分配的分页锁定区域的最大数目。
2.根据权利要求1所述的计算机可读介质,其中
所述缓存设备控制器将基于所述缓存设备中的分页锁定条目的数目未被超过来将条目存储到标签存储器中,并且
所述条目包括指示数据是否被存储在所述缓存设备中的元数据信息。
3.根据权利要求1所述的计算机可读介质,其中
所述缓存设备控制器将基于所述缓存设备中的分页锁定条目的数目被超过来将条目存储到溢出存储器中,并且
所述条目包括指示数据是否被存储在所述缓存设备中的元数据信息。
4.根据权利要求1所述的计算机可读介质,其中,所述分页锁定区域的使用率包括分页锁定条目的数目。
5.根据权利要求1所述的计算机可读介质,其中,在处理器操作期间动态地调整所述缓存设备中分配的分页锁定区域的最大数目包括:基于所述分页锁定区域的使用率满足或超过阈值来增加分配的分页锁定条目的数目。
6.根据权利要求1所述的计算机可读介质,其中,在处理器操作期间动态地调整所述缓存设备中分配的分页锁定区域的最大数目包括:基于所述分页锁定区域的使用率来减少分配的分页锁定条目的数目。
7.根据权利要求1所述的计算机可读介质,其中,存储在所述缓存设备中的数据包括以下项中的一个或多个:流数据或连接上下文。
8.根据权利要求1至7中任一项所述的计算机可读介质,其中,一种设备将数据存储到所述缓存设备,并且所述设备包括以下项中的一个或多个:多线程核心、中央处理单元(CPU)、XPU、图形处理单元(GPU)、网络接口设备、或专用集成电路(ASIC)。
9.一种装置,包括:
缓存控制器;以及
缓存设备,其中所述缓存控制器被配置为在可操作时:
在处理器操作期间,基于分页锁定区域的使用率动态地调整所述缓存设备中分配的分页锁定区域的最大数目。
10.根据权利要求9所述的装置,其中
所述缓存控制器将基于所述缓存设备中的分页锁定条目的数目未被超过来将条目存储到标签存储器中,并且
所述条目包括指示数据是否被存储在所述缓存设备中的元数据信息。
11.根据权利要求9所述的装置,其中
所述缓存控制器将基于所述缓存设备中的分页锁定条目的数目被超过来将条目存储到溢出存储器中,并且
所述条目包括指示数据是否被存储在所述缓存设备中的元数据信息。
12.根据权利要求9所述的装置,其中,在处理器操作期间基于分页锁定区域的使用率动态地调整所述缓存设备中分配的分页锁定区域的最大数目包括:
基于所述分页锁定区域的使用率来增加分配的分页锁定条目的数目,以及
基于所述分页锁定区域的使用率来减少分配的分页锁定条目的数目。
13.根据权利要求9至12中任一项所述的装置,其中,存储在所述缓存设备中的数据包括以下项中的一个或多个:流数据或连接上下文。
14.根据权利要求9至13中任一项所述的装置,包括将数据存储在所述缓存设备中的设备,其中所述设备包括以下项中的一个或多个:多线程核心、中央处理单元(CPU)、XPU、图形处理单元(GPU)、网络接口设备、或专用集成电路(ASIC)。
15.根据权利要求9至14中任一项所述的装置,包括数据中心,该数据中心包括所述设备、所述缓存控制器、以及所述缓存设备,其中,所述数据中心将运行用于识别所述分页锁定区域的使用率的编排器。
16.一种方法,包括:
将缓存设备配置为:
在处理器操作期间,基于分页锁定区域的使用率动态地调整所述缓存设备中分配的分页锁定区域的最大数目。
17.根据权利要求16所述的方法,包括:
基于所述缓存设备中的分页锁定条目的数目来将标签存储到标签存储器中;以及
基于所述缓存设备中的分页锁定条目的数目来将所述标签存储到溢出存储器中。
18.根据权利要求17所述的方法,其中,所述标签包括指示数据是否被存储在所述缓存设备中的元数据信息。
19.根据权利要求16至18中任一项所述的方法,其中,在处理器操作期间基于分页锁定区域的使用率动态地调整所述缓存设备中分配的分页锁定区域的最大数目包括:
基于所述分页锁定区域的使用率来增加分配的分页锁定条目的数目,或者
基于所述分页锁定区域的使用率来减少分配的分页锁定条目的数目。
20.根据权利要求16至19中任一项所述的方法,其中,存储在所述缓存设备中的数据包括以下项中的一个或多个:流数据或连接上下文。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/510,955 US20220043753A1 (en) | 2021-10-26 | 2021-10-26 | Dynamic allocation of cache resources |
US17/510,955 | 2021-10-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116028386A true CN116028386A (zh) | 2023-04-28 |
Family
ID=80115017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211113932.8A Pending CN116028386A (zh) | 2021-10-26 | 2022-09-14 | 缓存资源的动态分配 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220043753A1 (zh) |
CN (1) | CN116028386A (zh) |
DE (1) | DE102022124481A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11966590B2 (en) | 2022-02-25 | 2024-04-23 | Samsung Electronics Co., Ltd. | Persistent memory with cache coherent interconnect interface |
-
2021
- 2021-10-26 US US17/510,955 patent/US20220043753A1/en active Pending
-
2022
- 2022-09-14 CN CN202211113932.8A patent/CN116028386A/zh active Pending
- 2022-09-23 DE DE102022124481.4A patent/DE102022124481A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220043753A1 (en) | 2022-02-10 |
DE102022124481A1 (de) | 2023-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210149812A1 (en) | Network interface controller with eviction cache | |
US11573900B2 (en) | Proactive data prefetch with applied quality of service | |
US11929927B2 (en) | Network interface for data transport in heterogeneous computing environments | |
US20200192715A1 (en) | Workload scheduler for memory allocation | |
US11487675B1 (en) | Collecting statistics for persistent memory | |
EP4231158A2 (en) | Controller for locking of selected cache regions | |
CN115039077A (zh) | 为实时虚拟化执行环境迁移维护存储命名空间标识符 | |
CN112988632A (zh) | 设备之间的共享存储器空间 | |
US20210019069A1 (en) | Memory and storage pool interfaces | |
US11422944B2 (en) | Address translation technologies | |
US20210359955A1 (en) | Cache allocation system | |
US20200379922A1 (en) | Adaptive routing for pooled and tiered data architectures | |
US20210200667A1 (en) | Memory thin provisioning using memory pools | |
US20210014324A1 (en) | Cache and memory content management | |
US20220210075A1 (en) | Selective congestion notification by a network interface device | |
US20210209035A1 (en) | Memory accesses using a memory hub | |
US20220050722A1 (en) | Memory pool management | |
KR20220020199A (ko) | 네트워크 착수형 공격들로부터의 보호 | |
US20220214973A1 (en) | Cache line invalidation technologies | |
CN116028386A (zh) | 缓存资源的动态分配 | |
US20220206954A1 (en) | Protection against translation lookup request flooding | |
US20210224190A1 (en) | Technologies for configuration of memory ranges | |
US20210328945A1 (en) | Configurable receive buffer size |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |