CN111183414A - 基于服务级别协议的高速缓存方法和系统 - Google Patents
基于服务级别协议的高速缓存方法和系统 Download PDFInfo
- Publication number
- CN111183414A CN111183414A CN201880053103.0A CN201880053103A CN111183414A CN 111183414 A CN111183414 A CN 111183414A CN 201880053103 A CN201880053103 A CN 201880053103A CN 111183414 A CN111183414 A CN 111183414A
- Authority
- CN
- China
- Prior art keywords
- cache
- ram
- processing unit
- thread
- access
- 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/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- 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
- 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/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
-
- 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/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
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency 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/1052—Security 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/22—Employing cache memory using specific memory technology
- G06F2212/224—Disk storage
-
- 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/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
- G06F2212/2515—Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory
-
- 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/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- 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/30—Providing cache or TLB in specific location of a processing system
- G06F2212/304—In main memory subsystem
- G06F2212/3042—In main memory subsystem being part of a memory device, e.g. cache DRAM
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/314—In storage network, e.g. network attached cache
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
一种服务器提供商的计算机系统包括执行用户发出的线程的处理单元,和随机存取存储器(RAM)高速缓存,所述RAM高速缓存设置于所述处理单元外部、并可操作地与所述处理单元连接以存储所述处理单元访问或将要访问的数据。所述处理单元包括控制电路,所述控制电路配置为响应于接收正在执行线程时的访问请求,根据建立在服务提供商和用户之间的服务级别协议(SLA)级别确定是否允许所述线程访问所述RAM高速缓存,并且当所述线程为RAM可高速缓存时,访问所述RAM高速缓存。
Description
技术领域
本公开总体上涉及计算机体系结构领域,更具体地,涉及一种基于服务级别协议的高速缓存方法和系统。
背景技术
现今的商业处理器(例如,中央处理单元(CPU))正在将越来越多的大型核集成到单个裸片(裸片)上,以支持要求高计算密度和高线程并行性的工作载荷。然而,CPU面临存储器带宽的瓶颈。支持不断增长的CPU核产生的存储器流量所需的存储器带宽的数量无法跟上CPU核的增长速度。一种减少存储器流量的方法是将大型嵌入式缓存集成到CPU中。合并大型DRAM高速缓存会引发一系列实际的设计问题,并且使大型嵌入式缓存成为一种昂贵的管理设备。
发明内容
本公开的实施例提供了一种服务提供商的计算机系统。所述计算机系统包括执行用户发出的线程的处理单元,和随机存取存储器(RAM)高速缓存,所述随机存取存储器(RAM)高速缓存设置于所述处理单元外部、并可操作地连接到所述处理单元以存储所述处理单元访问或即将访问的数据。所述处理单元包括控制电路,所述控制电路被配置为响应于在执行线程时接收访问请求,根据建立在服务提供商和用户之间的服务级别协议(SLA)级别确定是否允许所述线程访问所述RAM高速缓存;并且在所述线程是RAM可高速缓存时访问所述RAM高速缓存。
本发明的实施例还提供了一种在服务提供商的计算机系统中操作系统内核的方法。所述计算机系统包括处理单元和所述处理单元外部的、并可操作地与所述处理单元连接的随机存取存储器(RAM)高速缓存。该方法包括:接收用户发出的线程,检索服务提供商与用户之间建立的服务级别协议(SLA)级别,并根据该SLA级别,确定是否允许该线程访问RAM高速缓存。
本发明的实施例还提供了一种在服务提供商的计算机系统中操作处理单元的方法,所述计算机系统包括所述处理单元外部的、并可操作地与所述处理单元连接的随机存取存储器(RAM)高速缓存。所述方法包括接收用户发出的正在执行的线程的访问请求,根据服务提供商和用户之间建立的服务级别协议(SLA)级别,确定是否允许该线程访问RAM高速缓存,以及当线程是RAM可高速缓存时,访问所述RAM高速缓存。
附图说明
图1(a)和图1(b)示意性地示出CPU芯片的示例性结构。
图2示意性地示出示例性处理系统。
图3为在示例性的处理系统中用于存储器访问的示例性过程操作的流程图。
图4示意性地示出示例性处理系统。
图5为在处理系统中用于存储器访问的示例性过程的流程图。
图6示意性地示出了与所公开的实施例一致的处理系统。
图7示出定义了服务提供商对用户提供的SLA的多个级别的示例性图表。
图8为与所公开的实施例一致的在示例性处理系统中用于线程分配的示例性过程的流程图。
图9为与所公开的实施例一致的在示例性处理系统中用于线程执行的示例性过程的流程图。
具体实施方式
现在将详细地参考示例性实施例,其示例如附图所示。除非另有说明,以下描述参考附图的不同附图中相同的数字表示相同或相似的元件。在以下示例性实施例中所阐述的实施方式并不代表与本发明一致的所有实施方式。相反,它们只是与所附的权利要求中所述的与本发明有关的方面一致的装置和方法的示例。
现今的商业处理器(例如,中央处理单元(CPU))正在将越来越多的大型核集成到单个裸片上,以支持要求高计算密度和高线程并行性的工作载荷。然而,服务器中提供的存储器带宽的数量总是受限于服务器中CPU芯片上的以更低的速度增长的引脚数。提供充足的存储器带宽以保证所有的内核或者线程流畅运行仍是这些多核架构的重要挑战。
一种解决存储器带宽问题的方法是在CPU芯片上集成大量的嵌入式随机存取存储器(RAM)高速缓存。该RAM高速缓存可以是动态随机存取存储器(DRAM)高速缓存、磁阻随机存取存储器(MRAM)高速缓存、电阻随机存取存储器(ReRAM)高速缓存、相变随机存取存储器(PCRAM)高速缓存以及铁电随机存取存储器(FeRAM)高速缓存中的一种。在下面的描述中,以DRAM高速缓存为例。相比于传统CPU高速缓存是建立在静态随机存取存储器(SRAM)和寄存器文件(RF)上,DRAM具有更高的密度,从而可以提供的具有更大的存储容量的高速缓存。DRAM高速缓存可驻留在自己的裸片上,并连接到CPU裸片以形成CPU芯片。
此处描述的实施例公开了一种减少与例如DRAM高速缓存相关联的硬件的设计复杂度的方法。DRAM高速缓存访问仅授予定义应用程序的服务级别协议(SLA),以允许它们享受DRAM高速缓存的好处,同时将存储器带宽使用仍限制在可持续的级别。
图1(a)示例性地示出具有三维(3D)堆叠结构的示例性CPU芯片110。在CPU芯片110中,CPU裸片112垂直堆叠在DRAM裸片114上。CPU裸片112和DRAM裸片114通过多个通过硅晶的过孔116相互连接。CPU裸片112和DRAM裸片114的堆叠设置在具有与外部设备(未示出)连接的多个引脚120的衬底118上。
图1(b)示例性地示出具有多芯片封装(MCP)结构的示例性CPU芯片130。在CPU芯片130中,CPU裸片132和DRAM裸片134并排设置在衬底138上。CPU裸片132和DRAM裸片134通过多个MCP连接136相互连接。衬底138具有与外部设备(未示出)连接的多个引脚140。
将DRAM高速缓存集成在CPU芯片上可能影响CPU的设计。为了理解将DRAM高速缓存集成在CPU芯片上如何影响CPU的设计,首先描述CPU芯片访问存储器的传统方法。
图2示意性地示出示例性处理系统200。处理系统200包括相互连接的处理单元210和DRAM高速缓存250。处理单元210和DRAM高速缓存250可以包含在CPU芯片中(例如,CPU芯片110或130),其中,处理单元210设置在CPU裸片上(例如,CPU裸片112或132),DRAM高速缓存250设置在物理上与CPU裸片分离的DRAM裸片上(例如,DRAM裸片114或134)。
处理单元210包括相互连接的处理核220和高速缓存230,以及控制处理单元210的操作的控制电路240。处理单元210还与可存储能够被处理核220访问的数据的主存储器280连接。高速缓存230和DRAM高速缓存250可被用作中间缓存,以存储在主存储器280中存储的数据子集。该数据子集通常是处理核220最近访问的数据,并包括在数据读取操作中从主存储器280中获得的数据,或者在数据写操作中要存储在主存储器280中的数据。由于时间和空间的局限性,这些数据可能被处理核220再次访问。
高速缓存230包括标签阵列232和数据阵列234。数据阵列234包括多个数据条目234a,每个数据条目存储由处理核220访问(或者即将访问)的主存储器280中获取的数据。标签阵列232包括分别对应于数据阵列234中的多个数据条目234a的多个标签条目232a。每个标签条目232a在相应的数据条目234a中存储数据的地址标签和状态信息。
类似地,DRAM高速缓存250包括DRAM高速缓存标签阵列252和DRAM高速缓存数据阵列254。DRAM高速缓存数据阵列254包括多个数据条目254a,每个数据条目存储被处理核220访问的数据。DRAM高速缓存标签阵列252包括分别与DRAM高速缓存数据阵列254中的多个数据条目254a对应的多个标签条目252a。在DRAM高速缓存标签阵列252中的每个标签条目252a存储在相应数据条目254a中存储的数据的地址标签和状态信息。
图3为在示例性的处理系统(例如,处理系统200)中用于存储器访问的示例性过程300的流程图。过程300可以由包括硬件(例如,电路、专用逻辑、可编辑逻辑、微码等)、软件(例如,由功能单元执行的操作)、固件、或上述的结合的处理逻辑执行。在一些实施例中,过程300由处理系统的控制电路(例如,控制电路240)执行。可选择的,过程300中的部分或者全部步骤可由处理系统的其他组件执行。
在步骤310中,控制电路接收处理核220发起的访问请求。该访问请求可以是用于从与地址标签相关联的存储器位置读取数据的读请求,或者是用于将数据写入与地址标签相关联的存储器位置的写请求。在步骤312,控制电路通过比较包含在访问请求中的地址标签和存储在高速缓存标签阵列中的地址标签,检查存储地址标签和状态信息的高速缓存(例如,高速缓存230)中的高速缓存标签阵列(例如,标签阵列232)。在步骤314,控制电路确定该访问请求是高速缓存命中还是高速缓存未命中。当高速缓存存储所请求数据的有效副本时发生高速缓存命中,当高速缓存未存储所请求数据的有效副本时发生高速缓存未命中。如果该请求是高速缓存命中(步骤314:是),然后,在步骤316,控制电路访问高速缓存数据阵列(例如,数据阵列234)。如果该访问请求为读请求,控制电路从高速缓存数据阵列中读取请求的数据。如果该访问请求为写请求,控制电路将数据写入高速缓存数据阵列。否则,如果访问请求为高速缓存未命中(步骤314:否),然后,在步骤318,控制电路通过比较包含在访问请求中的地址标签和存储在DRAM高速缓存标签阵列中的地址标签,检查DRAM高速缓存标签阵列(例如,DRAM高速缓存标签阵列252)。在步骤320,控制电路确定该访问请求是DRAM高速缓存命中还是DRAM高速缓存未命中。当DRAM高速缓存存储所请求数据的有效副本时发生DRAM高速缓存命中,并且当DRAM高速缓存未存储所请求数据的有效副本时发生DRAM高速缓存未命中。如果发生DRAM高速缓存命中(步骤320:是),然后,在步骤322,控制电路访问DRAM高速缓存数据阵列(例如,DRAM高速缓存数据阵列254)以从DRAM高速缓存数据阵列读取数据或者将数据写入DRAM高速缓存数据阵列。否则,如果发生DRAM高速缓存未命中(步骤320:否),然后,在步骤324,控制电路访问主存储器(例如,主存储器280)以从主存储器中读取数据或将数据写入主存储器。在完成步骤316,322,或324之后,控制电路完成过程300。
对于集成在3D堆叠或者MCP方式中DRAM高速缓存,CPU访问在DRAM高速缓存裸片上的DRAM高速缓存的延迟并非无足轻重。这是因为涉及经由通过硅晶过孔(例如,通过硅晶过孔116)或MCP连接(例如,MCP连接136)的跨裸片通信。这些延迟可能是访问设置在CPU裸片上的末级缓存(LLC)的代价的2倍甚至更高。如果发生DRAM高速缓存未命中并且DRAM高速缓存不能提供所请求的数据,CPU只能从CPU芯片外部的主存储器中提取所请求的数据,因此整个数据路径会显著地延长并且损害性能。
为了缓解上述描述的问题,除了DRAM高速缓存裸片上的DRAM高速缓存数据阵列之外,DRAM高速缓存标签阵列还被放置在CPU裸片上。图4示意性地示出具有这样结构的示例性处理系统400。如图4所示,处理系统400包括处理单元410,以及与处理单元410连接的DRAM高速缓存450,和与处理单元410连接的主存储器480。处理单元410和DRAM高速缓存450包含在CPU芯片(例如,CPU芯片110或130)中,其中,处理单元410设置在CPU裸片(例如,CPU裸片112或132)上,DRAM高速缓存450在物理上与CPU裸片分离的设置在DRAM裸片(例如,DRAM裸片114或134)上。处理单元410包括多个处理核422,分别对应于并与多个处理核422连接以及与片上网络(Networ on chip,NoC)426连接的多个二级缓存(L2C)424。此外,处理单元410包括DRAM高速缓存标签阵列428和与NoC 426连接的末级缓存(LLC)430,以及控制电路440。主存储器480可以存储被处理单元410访问的数据。L2C 424,LLC 430,以及DRAM高速缓存450可被用作中间缓存,以存储在主存储器480中存储的数据的子集。L2C 424的每一个存储由相应的其中一个处理核422访问的数据子集。LLC 430存储被任意一个处理核422访问的数据子集。
DRAM高速缓存450包括DRAM高速缓存数据阵列452,该DRAM高速缓存数据阵列452包括多个数据条目,每个数据条目存储被处理核422访问的数据。包含在处理单元410中的DRAM高速缓存标签阵列428包括多个标签条目,该多个标签条目分别与DRAM高速缓存数据阵列452中的多个数据条目相对应。DRAM高速缓存标签阵列428中的每个标签条目存储在DRAM高速缓存数据阵列452中相应的数据条目中存储的数据的地址标签与状态信息。尽管图4未示出,L2C 424中的每一个和LLC 430都包括存储数据的数据阵列和标签阵列,该标签阵列存储在数据阵列中存储的数据的地址标签和状态信息。
图5为在处理系统(例如,处理系统400)中用于存储器访问的示例性过程500的流程图。过程500可以由包括硬件(例如,电路,专用逻辑,可编辑逻辑,微码,等),软件(例如,由功能单元执行的操作),固件,或上述的结合的处理逻辑执行。在一些实施例中,过程500由处理系统的控制电路(例如,控制电路440)执行。可选择的,过程500的部分或全部步骤可由示例性处理系统的其他组件执行。
在步骤510中,控制电路从处理系统422之一中接收访问请求。该访问请求可以是用于从与地址标签相关联的存储器位置读取数据的读请求,或者是用于将数据写入与地址标签相关联的存储器位置的写请求。在步骤512中,控制电路确定访问请求是L2C缓存未命中。例如,控制电路检查L2C(例如,L2C 424)的每一个中的标签阵列,并确定没有L2C存储所请求数据的有效副本。在步骤514,控制电路通过比较包含在访问请求中的地址标签与存储于DRAM高速缓存标签阵列中的地址标签,来检查DRAM高速缓存标签阵列(例如,DRAM高速缓存标签阵列428)。同时,在步骤516,控制电路通过比较包含在访问请求中的地址标签与存储于LLC标签阵列中的地址标签,来检查LLC(例如,LLC 430)中的LLC标签阵列。换言之,在检查LLC标签阵列(步骤516)的同时检查DRAM高速缓存标签阵列(步骤514)。
在步骤518中,控制电路确定访问请求是LLC命中还是LLC未命中。当LLC存储所请求数据的有效副本时发生LLC命中,当LLC未存储所请求数据的有效副本时发生LLC未命中。如果访问请求是LLC命中(步骤518:是),然后,在步骤526,控制电路访问LLC以从LLC读取数据或者将数据写入LLC。
如果访问请求是LLC未命中(步骤518:否),然后,在步骤520中,控制电路确定该访问请求是DRAM高速缓存命中还是DRAM高速缓存未命中。当DRAM高速缓存存储所请求数据的有效副本时发生DRAM高速缓存命中,当DRAM高速缓存未存储所请求数据的有效副本时发生DRAM高速缓存未命中。如果访问请求是DRAM高速缓存命中(步骤520:是),然后,在步骤524中,控制电路访问DRAM高速缓存以从DRAM高速缓存中读取数据或者将数据写入DRAM高速缓存中。如果访问请求是DRAM高速缓存未命中(步骤520:否),然后,在步骤522中,控制电路访问主存储器(例如,主存储器480)以从主存储器中读取数据或者将数据写入主存储器中。在完成步骤522,524,或526之后,控制电路完成过程500。
在过程500中,在检查LLC标签阵列(步骤516)的同时检查DRAM高速缓存标签阵列(步骤514)。因此,当检测到LLC未命中时,控制电路已知DRAM高速缓存是否具有所请求数据的有效副本,并且当检测到DRAM命中时仅需要访问DRAM高速缓存裸片中的DRAM高速缓存。然而,将DRAM高速缓存标签阵列放置在CPU裸片上会占用LLC的宝贵空间。对于常规的64字节高速缓存行大小,256MB DRAM高速缓存将需要超过11MB的标签空间,这大约是LLC大小的1/4。高速缓存行是指缓存的粒度,即,高速缓存中数据的最小单元。一种减少标签空间开销的方法是扩大高速缓存行的大小。增加高速缓存行大小至4KB将会使256MB DRAM高速缓存的标签空间开销减小至仅100KB。然而,具有更大的高速缓存行意味着当DRAM高速缓存未命中发生时,控制电路将不得不从主存储器中提取大量的数据,以填充更大的高速缓存行,这将很容易使存储器带宽饱和。由于这些限制,商业CPU供应商仅使用与CPU形成在同一裸片上的DRAM高速缓存,CPU仅需要软件干预,但从未将DRAM高速缓存用作对软件透明的硬件管理高速缓存。
在所公开的实施例中,提供了一种软硬件协同设计方法,以解决DRAM高速缓存面临的设计问题。考虑到当高速缓存行尺寸较小时,标签阵列存储开销会消耗宝贵的LLC空间,在所公开的实施例中,使用大的DRAM高速缓存行(例如,4KB)替代传统的64B高速缓存行。如前所述,随着高速缓存行尺寸更大,由于存储器带宽很容易饱和,高速缓存未命中在不仔细控制的情况下变得代价更大。例如,高速缓存未命中需要从主存储器中提取4KB数据,其相当于从主存储器中读取64次。在所公开的实施例中,根据预定义的服务级别协议(SLA),仅允许将数据区域存储在DRAM高速缓存中,而不是让DRAM失控。SLA是服务提供商和终端用户之间建立的定义服务提供商所提供和必须遵守的服务级别的合约。SLA是应用于云计算的普遍准则。这允许SLA中定义的重要应用程序可以享受DRAM高速缓存提供的性能优势,并减少由于DRAM高速缓存访问更少而由此产生的未命中更少而产生的聚合存储器流量。
图6示意性地示出了与所公开的实施例一致的处理系统600。处理系统600可以包括在服务提供商的云服务器中。用户设备690可以通过网络访问所述服务器。
如图6所示,处理系统600包括处理单元610,DRAM高速缓存650,系统内核670以及与处理单元610连接的主存储器680。主存储器680可以存储被处理单元610访问的数据。系统内核670可以控制处理系统600的操作。系统内核670包括存储单元672,存储单元672存储描述在处理系统600上执行的一个或多个任务/线程的属性的任务-结构数据结构。
处理单元610和DRAM高速缓存650包含在CPU芯片(例如,CPU芯片110或130)中,其中,处理单元610设置在CPU裸片(例如,CPU裸片112或132)上,DRAM高速缓存650设置在物理上与CPU裸片分离的DRAM裸片(例如,DRAM裸片114或134)上。处理单元610包括多个处理核622,多个二级缓存(L2C)624,所述多个二级缓存(L2C)624分别对应于并与多个处理核622连接以及与片上网络(NoC)626连接。此外,处理单元610包括DRAM高速缓存标签阵列628,末级缓存(LLC)630,与NoC 626连接的DRAM高速缓存策略执行器632,以及控制电路640。DRAM高速缓存650包括DRAM高速缓存数据阵列652和QoS策略执行器654。处理核622,L2C 624,DRAM高速缓存标签阵列628,LLC 630,控制电路640,DRAM高速缓存650,及DRAM高速缓存数据阵列652与图4中的处理核422,L2C 424,DRAM高速缓存标签阵列428,LLC 430,控制电路440,DRAM高速缓存450,及DRAM高速缓存数据阵列452基本相同。因此,这些组件的具体描述不再重复。DRAM高速缓存策略执行器632控制对DRAM高速缓存650的访问,其详细描述将会在下文中提供更多细节。
图7示出了定义服务提供商对发送任务/线程给服务提供商的用户提供的SLA的多个级别的示例性图表700。服务提供商具有处理系统(例如,处理系统600),该处理系统配备有与处理单元(例如,处理单元610)连接的DRAM高速缓存(例如,DRAM高速缓存650)。在公共云环境,越高的SLA级别意味着服务提供商提供更昂贵的服务。类似地,在私有云或内部数据中心环境,最高的SLA级别通常被授予高度重要和面向用户的在线任务。
根据表700中的栏710,与发出任务/线程的用户相关联的SLA级别可以定义是否允许该任务/线程访问DRAM高速缓存。默认情况下,即,在SLA 0级,不允许任务将其数据存储于DRAM高速缓存中。换言之,用户发出的具有SLA 0级的任务不能访问DRAM高速缓存。在较高的SLA级别(例如,SLA级别1-4),允许访问DRAM高速缓存。换言之,用户发出的具有SLA级别1-4中的任何一个级别的任务可以访问DRAM高速缓存,即,DRAM是可高速缓存的。
根据表700中的栏720,SLA级别还可以定义允许访问DRAM高速缓存的任务/线程的存储器区域的数量,即,执行任务/线程的处理核是否可以从DRAM高速缓存中读取数据或者将数据写入DRAM高速缓存中。被任务消耗的虚拟存储器的数量还可以分为虚拟存储器区域。虚拟存储器区域可以定义为固定大小的虚拟存储器(例如,1MB),其在物理空间中可以是一致的,也可以是不一致的。当SLA2级允许任务的全部存储器区域存储于DRAM高速缓存中时,SLA1级只能允许任务的单个存储器区域或多个存储器区域存储于DRAM高速缓存中。在一些实施例中,DRAM可高速缓存的存储器区域的数量可以以对应于更多的SLA级别的更细的粒度来定义。
根据表700中的栏730,除了允许存储器区域的数量,SLA级别还可以进一步定义是否提供服务质量(QoS)。如果提供QoS,则可以保证任务的DRAM高速缓存占有率。例如,QoS策略执行器(例如,QoS策略执行器645)可以配置为保证DRAM可高速缓存的存储器区域可实际访问DRAM高速缓存。如果不提供QoS,则不能保证任务的DRAM高速缓存占有率。继而定义了表700中的SLA 3级和4级。SLA 1级和SLA3级之间,或者SLA2级和SLA4级之间的关键区别是,是否可以保证任务的DRAM高速缓存占有率。
进一步的描述是关于基于SLA的DRAM高速缓存控制如何分别影响线程分配,线程执行以及上下文的切换。
图8是与所述公开的实施例一致的在服务提供商的云服务器的示例性处理系统(例如,处理系统600)上用于线程分配的示例性过程800的流程图。所述服务器设置于云计算环境中。过程800可以由包括包含在处理系统600中的硬件(例如,电路,专用逻辑,可编辑逻辑,微码,等),软件(例如,由功能单元执行的操作),固件,或上述的结合处理逻辑执行。
在步骤810,处理系统接收要在该处理系统上执行的线程。该线程可以是由用户设备(例如,用户设备690)发起的。在步骤812中,云计算环境中的任务调度器可以检索与该线程相关联的DRAM高速缓存相关的SLA数据。与DRAM高速缓存相关的SLA数据与建立在服务提供商与用户设备的用户之间的SLA级别相关。然后,任务调度器将线程和与线程相关联的DRAM高速缓存相关的SLA数据转移到系统内核(例如,系统内核670)。
在步骤814,系统内核根据与DRAM高速缓存相关的SLA数据来确定DRAM高速缓存信息。DRAM高速缓存信息可以包括指示是否允许线程访问DRAM高速缓存,允许多少线程的虚拟存储器区域访问DRAM高速缓存,和/或当执行线程时是否提供QoS(QoS)的信息。
在步骤816,系统内核在存储单元(例如,存储单元672)中存储DRAM高速缓存信息,所述存储单元存储描述线程属性的任务-结构数据结构。例如,指示是否允许线程访问DRAM高速缓存的信息可以存储为与该线程相关联的DRAM可高速缓存位。指示允许线程的多少虚拟存储器区域访问DRAM高速缓存的信息可存储为与线程相关联的一个或多个区域位。指示是否提供QoS的信息可以存储为与线程相关联的QoS位。
如果DRAM高速缓存信息表明仅允许线程消耗的虚拟存储器区域的一部分访问DRAM高速缓存,则,在步骤818,系统内核确定虚拟存储器区域分配信息,该分配信息定义哪些虚拟存储器区域或页被允许访问DRAM高速缓存。在一些实施例中,系统内核可以代表线程本身选择哪些页码或虚拟存储器区域被允许访问DRAM高速缓存。例如,系统内核可以对线程发出mprotect系统调用,以便线程自身可以决定允许哪些页码或虚拟存储器区域访问DRAM高速缓存。线程可以选择由处理单元更频繁地访问的数据区域(例如,页码,虚拟存储器区域)作为可访问的DRAM高速缓存。
在步骤820,系统内核将虚拟存储器区域分配信息存储在存储单元中。例如,系统内核可以在(例如,PTE_DRAM_Cacheable)页表条目(Page Table Entry,PTE)的属性段写入专用位,该页表条目与每个允许访问DRAM高速缓存的页码相对应。PTE可以包含在存储于系统内核的存储单元中的任务_结构数据结构中。在完成步骤820后,处理系统完成过程800。
当DRAM高速缓存信息表明允许线程要消耗的全部存储器区域访问DRAM高速缓存(例如,SLA二级或四级),系统内核不需要分配用于访问DRAM高速缓存的虚拟存储器区域,也不使用PTE-DRAM位来标记任何页。因此,对于用户发出的具有该权限级别的线程,可以省略步骤818和820。
图9为与所公开的实施例一致的在示例性的处理系统(例如,处理系统600)中用于线程执行的示例性过程900的流程图。过程900可以在执行过程800之后执行。过程900可以由包括包含在处理系统600中的硬件(例如,电路,专用逻辑,可编辑逻辑,微码,等),软件(例如,由功能单元执行的操作),固件,或上述的结合的处理逻辑执行。
在步骤910,在线程即将在处理系统的处理核(例如,处理核622之一)上开始执行之前,处理系统检索与该线程相关联的DRAM高速缓存信息。例如,处理系统中的内核调度器从与线程相关联的、并存储于系统内核的存储单元中的任务_结构数据结构中读出DRAM高速缓存信息,<DRAM_Cacheable,Region,QoS>。内核调度器将DRAM-Cacheable和Region位写入即将执行线程的处理核的控制寄存器(CR)中,并将QoS位写入处理核的机器状态寄存器(MSR)中。
在步骤912,当线程开始在处理核上执行时,处理单元的控制电路(例如,控制电路640)从处理核接收访问请求。该访问请求可以是用于从与地址标签相关联的存储器位置读取数据的读请求,或者是用于将数据写入与地址标签相关联的存储器位置的写请求。在步骤914,控制电路确定该访问请求是L2C缓存未命中。例如,控制电路检查与处理核相对应的L2C(例如,L2C 624之一)中的标签阵列,并确定L2C未存储所请求数据的有效副本。
在步骤916,控制电路查询DRAM高速缓存策略执行器(例如,DRAM高速缓存策略执行器632)来检查当前正在运行的线程是否是DRAM可高速缓存,即,是否允许线程访问DRAM高速缓存。例如,DRAM高速缓存策略执行器检查与当前正在运行的线程相关联的CR.DRAM-Cacheable位。同时,在步骤918,控制电路通过比较包含在访问请求中的地址标签与存储于DRAM高速缓存标签阵列中的地址标签,检查DRAM高速缓存标签阵列(例如,DRAM高速缓存标签阵列628)。同时,在步骤920中,控制电路通过比较包含在访问请求中的地址标签与存储在LLC标签阵列中的地址标签,检查包含在LLC(例如,LLC630)中的LLC标签阵列。换言之,DRAM高速缓存策略执行器(步骤916)的访问与LLC访问(步骤920)和DRAM高速缓存标签阵列的访问(步骤918)同时进行。
在步骤922中,控制电路确定是否允许当前正在运行的线程访问DRAM高速缓存,即,DRAM可高速缓存。控制电路可以根据与当前正在运行的线程相关联的CR.DRAM-Cacheable位来确定当前正在运行的线程是否是DRAM可高速缓存,其通过步骤916的DRAM高速缓存策略执行器来检查。
如果不允许当前正在运行的线程访问DRAM高速缓存(步骤922:否),然后控制电路向前至步骤930访问主存储器(例如,主存储器680),以从主存储器读取所请求的数据或将所请求的数据写入主存储器。如果允许当前正在运行的线程访问DRAM高速缓存(步骤922:是),然后控制电路向前至步骤924以确定访问请求是否与允许访问DRAM高速缓存的虚拟存储器区域有关。例如,DRAM高速缓存策略执行器检测CR.Region|PTE.DRAM-Cacheable的结果来确定所请求的数据是否在允许访问DRAM高速缓存的虚拟存储器区域中。PTE.DRAM-Cacheable是PTE的高速缓存代码,并由处理单元的转换后备缓冲器(TLB)提供。
如果访问请求与不允许访问DRAM高速缓存的虚拟存储器区域有关(步骤924:否),然后控制电路向前至步骤930访问主存储器,以从主存储器中读取所请求的数据或将所请求的数据写入主存储器中。如果访问请求与允许访问DRAM高速缓存的虚拟存储器区域有关(步骤924:是),则,控制电路向前至步骤926,以根据步骤920中检查包含在LLC中的LLC标签阵列的结果来确定访问请求是LLC命中还是LLC未命中。当LLC存储所请求数据的有效副本时发生LLC命中,当LLC未存储所请求数据的有效副本时发生LLC未命中。
如果访问请求是LLC命中(步骤926:是),则控制电路进入步骤934访问LLC以从LLC中读取所请求的数据或将所请求的数据写入LLC。如果访问请求是LLC未命中(步骤926:否),则控制电路向前至步骤928,以基于步骤918中检查DRAM高速缓存标签阵列的结果确定访问请求是否是DRAM高速缓存命中。当DRAM高速缓存存储所请求数据的有效副本时发生DRAM高速缓存命中,当DRAM高速缓存未存储所请求数据的有效副本时发生DRAM高速缓存未命中。
如果访问请求是DRAM高速缓存命中(步骤928:是),则控制电路向前至步骤932访问DRAM高速缓存以从DRAM高速缓存中读取所请求的数据或将所请求的数据写入DRAM高速缓存中。如果访问请求是DRAM高速缓存未命中(步骤928:否),则控制电路向前至步骤930访问主存储器(例如,主存储器480)以从主存储器中读取所请求的数据或将所请求的数据写入主存储器中。在完成步骤930,932,或934之后,控制电路完成过程900。
此外,基于SLA的DRAM高速缓存控制还可以影响上下文的转换。当发生上下文转换时,也就是说,当处理系统即将执行一个新线程时,内核调度程序将旧线程的<DRAM-Cacheable,Region,QoS>写回存储单元的任务_结构数据结构中,并从存储器的任务_结构数据结构中加载与新线程相关联的<DRAM-Cacheable,Region,QoS>。然后,内核调度程序将上述信息写入将要执行新线程的处理核的CR和MSR中。
对于所在公开的实施例中描述的系统和方法,DRAM高速缓存的使用被授予满足SLA要求的线程,允许SLA定义的高重要性任务以享受DRAM高速缓存的利益,同时仍然确保不超过可持续的存储器带宽。
现代CPUs使用嵌入式DRAM作为近存储器,与主存储器相比,它提供更快的访问速度。使用DRAM作为近存储器可能需要大量的软件干预。这是因为存储器的性质要求在存储器中分配数据以使用连续的物理地址。实际上,在CPU上运行应用程序以分配大量连续的物理地址或在数据分配/释放期间从这些位置访问数据并非易事。相反,所公开的实施例使用DRAM存储器作为软件透明的硬件管理高速缓存。通过将DRAM高速缓存的使用限制在SLA定义的应用程序中,可以降低DRAM高速缓存的设计成本。
从本文公开的本发明的说明书和实践考虑,本发明的其他实施例对于本领域技术人员来说是显而易见的。本申请旨在涵盖遵循本发明的一般原则、并包括本领域已知或惯常实践中与本公开背离的本发明的任何变体、用途或改编。本说明书和示例仅被认为是示例性的,本发明的真实范围和精神由权利要求所指示。
应当理解,本发明不限于上面已经描述并在附图中示出的确切结构,并且可以在不脱离其范围的情况下进行各种修改和改变。本发明的范围应仅受所附的权利要求限制。
Claims (23)
1.一种服务提供商的计算机系统,包括:
处理单元,所述处理单元用于执行用户发出的线程的;
随机存取存储器(RAM)高速缓存,所述RAM高速缓存设置于所述处理单元的外部、并且可操作地与所述处理单元连接以存储处理单元访问或将要访问的数据;
其中,所述处理单元包括控制电路,所述控制电路被配置为,响应于在执行线程时接收访问请求;
根据建立在服务提供商和用户之间的服务级别协议(SLA)级别确定是否允许所述线程访问所述RAM高速缓存;
当所述线程是RAM可高速缓存时,访问所述RAM高速缓存。
2.根据权利要求1所述的计算机系统,其中,所述控制电路还被配置为:
确定所述访问请求是否与被允许访问所述RAM高速缓存的虚拟存储器区域有关;
当所述访问请求与被允许访问所述RAM高速缓存的虚拟存储器区域有关时,访问所述RAM高速缓存。
3.根据权利要求1和2中任一所述的计算机系统,其中,所述处理单元还包括寄存器,所述寄存器被配置为存储与所述线程有关联的高速缓存信息,所述高速缓存信息包括:
是否允许所述线程访问所述RAM高速缓存;
是否允许所述线程的虚拟存储器区域访问所述RAM高速缓存;
是否将为所述线程提供服务质量。
4.根据权利要求1至3中任一所述的计算机系统,还包括:
系统内核,所述系统内核可操作地与所述处理单元连接,并且所述系统内核被配置为,响应于接收用户发出的线程:
检索建立在服务提供商和用户之间的SLA级别;
根据所述SLA级别确定高速缓存信息;
在存储单元存储所述高速缓存信息。
5.根据权利要求4所述的计算机系统,其中,由所述系统内核确定的所述高速缓存信息包括:
是否允许所述线程访问所述RAM高速缓存,
是否允许所述线程的虚拟存储器区域访问所述RAM高速缓存,以及当执行所述线程时,是否将提供服务质量。
6.根据权利要求4所述的计算机系统,其中,所述系统内核被配置为:
根据建立在服务提供商和用户之间的所述SLA级别,确定被允许访问所述RAM高速缓存的存储器区域的数量;
根据所述数量,从所述线程消耗的多个存储器区域中选择至少一个存储器区域为RAM可高速缓存;
存储所述选择结果至存储单元。
7.根据权利要求1至6中任一所述的计算机系统,其中,所述RAM高速缓存是动态随机存取存储器(DRAM)高速缓存。
8.根据权利要求1至7中任一所述的计算机系统,其中,所述处理单元包括RAM高速缓存标签阵列,所述RAM高速缓存标签阵列被配置为存储与在所述RAM高速缓存中存储的数据有关联的一个或多个地址标签。
9.根据权利要求8所述的计算机系统,其中,所述控制电路被配置为,与确定所述线程是否为RAM可高速缓存同时进行:
检查所述RAM高速缓存标签阵列以确定所述访问请求是RAM高速缓存命中还是RAM高速缓存未命中;
检查所述处理单元的末级缓存(LLC)以确定所述访问请求是LLC命中还是LLC未命中。
10.根据权利要求1至9中任一所述的计算机系统,其中,所述处理单元包括多个处理核。
11.一种在服务提供商的计算机系统中操作系统内核的方法,所述计算机系统包括处理单元和所述处理单元外部的、并可操作地与所述处理单元连接的随机存取存储器(RAM)高速缓存,所述方法包括:
接收用户发出的线程;
检索建立在服务提供商和用户之间的服务级别协议(SLA)级别;
根据所述SLA级别,确定是否允许所述线程访问所述RAM高速缓存。
12.根据权利要求11所述的方法,还包括:
根据所述SLA级别,确定被允许访问所述RAM高速缓存的存储器区域的数量;
根据所述数量,从所述线程消耗的多个存储器区域中选择至少一个存储器区域为RAM可高速缓存。
13.根据权利要求11和12中任一所述的方法,还包括:
根据建立在服务提供商和用户之间的所述SLA级别,确定当执行所述线程时是否将提供服务质量。
14.根据权利要求11至13中任一所述的方法,其中,所述RAM高速缓存是动态随机存取存储器(DRAM)高速缓存。
15.一种在服务提供商的计算机系统中操作处理单元的方法,所述计算机系统包括所述处理单元外部的、并可操作地与所述处理单元连接的随机存取存储器(RAM)高速缓存,所述方法包括:
接收用户发出的正在执行的线程的访问请求;
根据建立在服务提供商和用户之间的服务级别协议(SLA)级别,确定是否允许所述线程访问所述RAM高速缓存;
当所述线程是RAM可高速缓存时,访问所述RAM高速缓存。
16.根据权利要求15所述的方法,还包括:
确定所述访问请求是否与被允许访问所述RAM高速缓存的虚拟存储器区域有关;
当所述访问请求与被允许访问所述RAM高速缓存的虚拟存储器区域有关时,访问所述RAM高速缓存。
17.根据权利要求15和16中任一所述的方法,还包括,同时确定所述线程是RAM可高速缓存:
检查包含在所述处理单元内的RAM高速缓存标签阵列以确定所述访问请求是RAM高速缓存命中还是RAM高速缓存未命中;
检查所述处理单元的末级缓存(LLC)以确定所述访问请求是LLC命中还是LLC未命中。
18.根据权利要求17所述的方法,还包括,当所述访问请求是LLC未命中和RAM高速缓存命中时,访问所述RAM高速缓存。
19.根据权利要求17所述的方法,还包括,当所述访问请求是LLC未命中和RAM高速缓存未命中时,访问与所述处理单元连接的主存储器。
20.根据权利要求15至19中任一所述的方法,其中,所述RAM高速缓存是动态随机存取存储器(DRAM)高速缓存。
21.一种计算设备,包括:
处理单元;
随机存取存储器(RAM)高速缓存,所述RAM高速缓存设置在所述处理单元外部、并可操作地与所述处理单元连接,所述RAM高速缓存包括存储所述处理单元访问或将要访问的数据的缓存数据单元;
其中,所述处理单元包括高速缓存标签单元,所述高速缓存标签单元存储与在所述RAM高速缓存的缓存数据单元中存储的数据有关联的地址标签。
22.一种处理单元,包括:
高速缓存标签单元,所述高速缓存标签单元存储与所述处理单元访问或将要访问的数据有关联的地址标签;
其中,所述处理单元访问或将要访问的数据存储于设置在所述处理单元外部的随机存取存储器(RAM)高速缓存中。
23.一种在服务提供商的计算机系统中操作处理单元的方法,所述计算机系统包括所述处理单元外部的、并可操作地与所述处理单元连接的随机存取存储器(RAM)高速缓存,所述方法包括:
接收用户发出的正在执行的线程的访问请求;
通过检查包含在所述处理单元的高速缓存标签单元,确定所述访问请求是否是RAM高速缓存命中;
当所述访问请求是RAM高速缓存命中,访问所述RAM高速缓存以访问数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/679,088 US20190057045A1 (en) | 2017-08-16 | 2017-08-16 | Methods and systems for caching based on service level agreement |
US15/679,088 | 2017-08-16 | ||
PCT/US2018/000323 WO2019036034A1 (en) | 2017-08-16 | 2018-08-16 | METHODS AND SYSTEMS FOR CACHING CACHE BASED ON SERVICE LEVEL AGREEMENT |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111183414A true CN111183414A (zh) | 2020-05-19 |
Family
ID=65361421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880053103.0A Pending CN111183414A (zh) | 2017-08-16 | 2018-08-16 | 基于服务级别协议的高速缓存方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20190057045A1 (zh) |
JP (1) | JP2020531950A (zh) |
CN (1) | CN111183414A (zh) |
WO (1) | WO2019036034A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10983846B2 (en) * | 2018-05-11 | 2021-04-20 | Futurewei Technologies, Inc. | User space pre-emptive real-time scheduler |
US11609879B2 (en) * | 2021-02-26 | 2023-03-21 | Nvidia Corporation | Techniques for configuring parallel processors for different application domains |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6212602B1 (en) * | 1997-12-17 | 2001-04-03 | Sun Microsystems, Inc. | Cache tag caching |
CN1592272A (zh) * | 2003-09-04 | 2005-03-09 | 国际商业机器公司 | 用于压缩消息头部的方法 |
US9239784B1 (en) * | 2013-06-05 | 2016-01-19 | Amazon Technologies, Inc. | Systems and methods for memory management |
US9491112B1 (en) * | 2014-12-10 | 2016-11-08 | Amazon Technologies, Inc. | Allocating processor resources based on a task identifier |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7047366B1 (en) * | 2003-06-17 | 2006-05-16 | Emc Corporation | QOS feature knobs |
US7529903B2 (en) * | 2005-07-05 | 2009-05-05 | International Business Machines Corporation | Systems and methods for memory migration |
US7991956B2 (en) * | 2007-06-27 | 2011-08-02 | Intel Corporation | Providing application-level information for use in cache management |
US8176282B2 (en) * | 2009-03-11 | 2012-05-08 | Applied Micro Circuits Corporation | Multi-domain management of a cache in a processor system |
US9189405B2 (en) * | 2011-08-03 | 2015-11-17 | International Business Machines Corporation | Placement of data in shards on a storage device |
US20130046934A1 (en) * | 2011-08-15 | 2013-02-21 | Robert Nychka | System caching using heterogenous memories |
US8924754B2 (en) * | 2012-02-02 | 2014-12-30 | Empire Technology Development Llc | Quality of service targets in multicore processors |
US20140351151A1 (en) * | 2013-05-23 | 2014-11-27 | International Business Machines Corporation | Providing a lease period determination |
CN106462504B (zh) * | 2013-10-21 | 2023-09-01 | Flc环球有限公司 | 最终级高速缓存系统和对应的方法 |
US9558120B2 (en) * | 2014-03-27 | 2017-01-31 | Intel Corporation | Method, apparatus and system to cache sets of tags of an off-die cache memory |
US10740237B2 (en) * | 2015-09-30 | 2020-08-11 | Nxp Usa, Inc. | Data processing unit having a memory protection unit |
EP3338408B1 (en) * | 2015-11-05 | 2022-08-17 | Hewlett-Packard Development Company, L.P. | Local compute resources and access terms |
GB2547189A (en) * | 2016-02-03 | 2017-08-16 | Swarm64 As | Cache and method |
US10037288B2 (en) * | 2016-04-01 | 2018-07-31 | Intel Corporation | Memory protection at a thread level for a memory protection key architecture |
US10452287B2 (en) * | 2016-06-24 | 2019-10-22 | Futurewei Technologies, Inc. | System and method for shared memory ownership using context |
US10176099B2 (en) * | 2016-07-11 | 2019-01-08 | Intel Corporation | Using data pattern to mark cache lines as invalid |
US10055158B2 (en) * | 2016-09-22 | 2018-08-21 | Qualcomm Incorporated | Providing flexible management of heterogeneous memory systems using spatial quality of service (QoS) tagging in processor-based systems |
US10356197B2 (en) * | 2016-11-21 | 2019-07-16 | Intel Corporation | Data management in an information-centric network |
US10254961B2 (en) * | 2017-02-21 | 2019-04-09 | International Business Machines Corporation | Dynamic load based memory tag management |
US11016894B2 (en) * | 2017-08-07 | 2021-05-25 | Intel Corporation | Techniques to provide cache coherency based on cache type |
-
2017
- 2017-08-16 US US15/679,088 patent/US20190057045A1/en not_active Abandoned
-
2018
- 2018-08-16 WO PCT/US2018/000323 patent/WO2019036034A1/en active Application Filing
- 2018-08-16 CN CN201880053103.0A patent/CN111183414A/zh active Pending
- 2018-08-16 JP JP2020506744A patent/JP2020531950A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6212602B1 (en) * | 1997-12-17 | 2001-04-03 | Sun Microsystems, Inc. | Cache tag caching |
CN1592272A (zh) * | 2003-09-04 | 2005-03-09 | 国际商业机器公司 | 用于压缩消息头部的方法 |
US9239784B1 (en) * | 2013-06-05 | 2016-01-19 | Amazon Technologies, Inc. | Systems and methods for memory management |
US9491112B1 (en) * | 2014-12-10 | 2016-11-08 | Amazon Technologies, Inc. | Allocating processor resources based on a task identifier |
Also Published As
Publication number | Publication date |
---|---|
US20190057045A1 (en) | 2019-02-21 |
WO2019036034A1 (en) | 2019-02-21 |
JP2020531950A (ja) | 2020-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11531617B2 (en) | Allocating and accessing memory pages with near and far memory blocks from heterogenous memories | |
US10296465B2 (en) | Processor using a level 3 translation lookaside buffer implemented in off-chip or die-stacked dynamic random-access memory | |
US8990506B2 (en) | Replacing cache lines in a cache memory based at least in part on cache coherency state information | |
EP3121731B1 (en) | Memory management method and device | |
US7899994B2 (en) | Providing quality of service (QoS) for cache architectures using priority information | |
US7921276B2 (en) | Applying quality of service (QoS) to a translation lookaside buffer (TLB) | |
JP6118285B2 (ja) | キャッシュメモリシステムおよびプロセッサシステム | |
US10235290B2 (en) | Hot page selection in multi-level memory hierarchies | |
US8412907B1 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation | |
US8069308B2 (en) | Cache pooling for computing systems | |
US10255190B2 (en) | Hybrid cache | |
US7747820B2 (en) | Managing working set use of a cache via page coloring | |
US9043570B2 (en) | System cache with quota-based control | |
US20130054896A1 (en) | System memory controller having a cache | |
WO2018022175A1 (en) | Techniques to allocate regions of a multi level, multitechnology system memory to appropriate memory access initiators | |
CN113342265B (zh) | 缓存管理方法、装置、处理器及计算机装置 | |
Hameed et al. | Reducing latency in an SRAM/DRAM cache hierarchy via a novel tag-cache architecture | |
US8700864B2 (en) | Self-disabling working set cache | |
US20060123196A1 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation requests | |
US10261915B2 (en) | Intelligently partitioning data cache to allocate space for translation entries | |
CN111183414A (zh) | 基于服务级别协议的高速缓存方法和系统 | |
CN113138851B (zh) | 一种数据管理方法、相关装置及系统 | |
EP3506112A1 (en) | Multi-level system memory configurations to operate higher priority users out of a faster memory level | |
US12008248B2 (en) | Systems, methods, and devices for utilization aware memory allocation | |
JP7311959B2 (ja) | 複数のデータ・タイプのためのデータ・ストレージ |
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 |