CN109992528A - 从较快存储器级操作较高优先级用户的多级系统存储器配置 - Google Patents
从较快存储器级操作较高优先级用户的多级系统存储器配置 Download PDFInfo
- Publication number
- CN109992528A CN109992528A CN201811432878.7A CN201811432878A CN109992528A CN 109992528 A CN109992528 A CN 109992528A CN 201811432878 A CN201811432878 A CN 201811432878A CN 109992528 A CN109992528 A CN 109992528A
- Authority
- CN
- China
- Prior art keywords
- memory
- cache
- system memory
- nearly
- higher level
- 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
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- 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
-
- 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/0815—Cache consistency protocols
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
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
技术领域
本发明的领域一般涉及计算科学,并且更具体来说涉及从较快存储器级来操作较高优先级用户的多级系统存储器配置。
背景技术
计算系统设计员不断寻求改进其系统的效率和/或性能的方式。计算系统的效率和/或性能一般取决于其系统存储器。因此,系统设计员近来已更加注重系统存储器设计和/或系统存储器使用模型。
附图说明
根据结合附图的以下详细描述,能够得到对本发明的更佳理解,在附图中:
图1示出具有多级系统存储器的计算系统;
图2示出为较高优先级用户提供更快级别的多级系统存储器的第一配置;
图3示出为较高优先级用户提供更快级别的多级系统存储器的第一配置;
图4示出用于配置计算机系统的方法;
图5示出计算系统。
具体实施方式
图1示出具有多分层或多级系统存储器112的计算系统100的实施例。按照各个实施例,较小较快的近存储器113(例如较高带宽和/或小访问时间等)可被用作较大较慢的远存储器114(例如较低带宽和/或大访问时间等)的高速缓存。在各个实施例中,近存储器113被用来存储系统存储器112中保存的程序代码和/或数据的更频繁访问项。通过在近存储器113中存储更频繁使用项,系统存储器112将被视为更快,因为系统常常将从/对在较快近存储器113中存储的项进行读取/写入。
按照各个实施例,近存储器113比更低分层的远存储器114具有更低的访问时间。例如,近存储器113可通过比远存储器114具有更快时钟速度来展现缩减的访问时间。在这里,近存储器113可以是与存储器控制器116共处的较快(例如较低访问时间)易失性系统存储器技术(例如高性能动态随机存取存储器(DRAM)和/或SRAM存储器单元)。相反,远存储器114可以是以较慢时钟速度所实现的易失性存储器技术(例如接收较慢时钟的DRAM组件)或者例如比易失性/DRAM存储器或被用于近存储器的无论什么技术更慢(例如更长访问时间)的非易失性存储器技术。
例如,远存储器114可由新兴非易失性随机存取存储器技术来组成,例如(为列举几种可能性)基于相变的存储器、三维交叉点存储器、“原地写入”非易失性主存储器装置、具有由硫属化物所组成的存储单元的存储器装置、多个级别的闪速存储器、多阈值级别闪速存储器、基于铁电的存储器(例如FRAM)、基于磁的存储器(例如MRAM)、基于自旋转移矩的存储器(例如STT-RAM)、基于电阻器的存储器(例如ReRAM)、基于忆阻器的存储器、通用存储器、Ge2Sb2Te5存储器、可编程金属化单元存储器、非晶单元存储器、奥式(Ovshinsky)存储器等。这些技术中的任一种可以是字节可寻址的,以便被实现为计算系统中的系统存储器(又称作“主存储器”)而不是传统的基于块或扇区的非易失性海量存储装置。
新兴非易失性随机存取存储器技术通常具有下列项的某种组合:1)比DRAM更高的存储密度(例如通过在三维(3D)电路结构(例如交叉点3D电路结构)中构建);2)比DRAM更低的功率消耗密度(例如因为它们不需要刷新);和/或3)比DRAM更慢但是仍然比传统非易失性存储器技术(例如FLASH)更快的访问等待时间。特别是后一特性准许各种新兴非易失性存储器技术被用于主系统存储器角色中而不是传统海量存储装置角色(其是非易失性存储装置的传统架构位置)中。
不管远存储器114是由易失性还是非易失性存储器技术所组成,在各个实施例中,远存储器114充当真正系统存储器,因为它支持更细粒度数据访问(例如高速缓存线)而不是与传统非易失性海量存储装置(例如固态驱动器(SSD)、硬盘驱动器(HDD))关联的仅较大的基于“块”或“扇区”的访问,和/或以其它方式充当由CPU的处理器所执行的程序代码从其中进行操作的字节可寻址存储器。
在各个实施例中,系统存储器可采用一个或多个双列直插式存储器模块(DIMM)来实现,其中单个DIMM卡具有在其上部署的易失性(例如DRAM)和(例如新兴)非易失性存储器半导体芯片。在其它配置中,仅具有DRAM芯片的DIMM卡可与仅具有非易失性系统存储器芯片的DIMM卡被插入到同一系统存储器通道(例如双倍数据速率(DDR)通道)中。
在另一个可能配置中,存储器装置(例如用作近存储器113的DRAM装置)可与存储器控制器116和处理核117共同被组装到单个半导体装置上(例如,如嵌入式DRAM)或者同一半导体封装内(例如堆叠在包含例如CPU、存储器控制器、外设控制中枢等的芯片上系统上)。远存储器114可由其它装置(例如较慢DRAM或者非易失性存储器)来形成,并且也可被附连到或者集成在同一封装中。备选地,远存储器可以在包含CPU核和近存储器装置的封装外部。远存储器控制器还可存在于主存储器控制器与远存储器装置之间。远存储器控制器可与CPU核和主存储器控制器被集成在同一半导体芯片封装内,或者可位于这种封装外部(例如通过被集成在具有远存储器装置的DIMM卡上)。
在各个实施例中,存储器控制器116的全部或大体上全部组件被集成在芯片上系统上,所述芯片上系统具有多个(例如通用)处理核117、外设控制中枢和其它电路(例如图形处理单元(GPU)))。在其它实施例中,这些电路中的至少某个部分在这种芯片外被实现。例如,在远存储器114采用新兴非易失性存储器芯片来实现的情况下,远存储器控制器可被本地耦合到主芯片上系统管芯外(例如具有新兴非易失性存储器芯片的一个或多个DIMM上)的这类存储器芯片。备选地或组合地,近存储器控制电路或其某个部分可被部署在这类芯片外部(例如,在具有易失性(例如DRAM)存储器芯片的一个或多个DIMM上,其中这类DIMM甚至可包括新兴非易失性存储器芯片以及甚至远存储器控制器电路或其某个部分)。在各种可能封装情形中,即使这类电路如上所述位于芯片上系统外,然而它们也可存在于与芯片上系统相同的封装内(例如,诸如在同一半导体芯片封装中,其中来自芯片上系统的存储器芯片和关联的外部逻辑被集成在堆叠式芯片解决方案中)。
在各个实施例中,近存储器113充当存储器侧高速缓存,其高速缓存来自主存储器(其可服务不止只CPU核请求,例如图形处理单元(GPU)请求、外设请求、网络接口请求等)的最频繁访问项。备选地或组合地,存储器控制器116和/或系统的某些其它部分(例如CPU、操作系统、虚拟机监测器、操作系统实例等中的一个或多个)没有识别近存储器113或其某个部分内的独立唯一系统存储器地址空间的存在。
在这里,没有被识别为具有其自己的独立系统存储器地址空间的近存储器113的存储空间代替地可被保留为远存储器114或者其区域的存储器侧高速缓存区域。在这类配置中,例如远存储器114具有独立系统存储器地址空间,以及近存储器113充当更频繁使用项(其被正式保存在远存储器114中,并且其正式系统存储器地址被映射到远存储器114)的高速缓存(例如高速缓存线、页等)。
然而,如果在哪些近存储器资源为哪些远存储器资源提供高速缓存空间之间存在的任何关系能被调整以降低或消除映射到同一近存储器高速缓存槽位置的请求之间的争用,则这类系统可配置成有效提供近存储器中的系统存储器地址空间。这种配置是可能的一个示例是将近存储器113实现为直接映射高速缓存的系统。通过直接映射高速缓存,一组系统存储器地址映射到高速缓存中的一个“槽”,以及不同高速缓存槽映射到不同系统存储器地址的不同组。
例如,考虑其中远存储器114具有近存储器113的存储容量的八倍并且近存储器113和远存储器114两者以高速缓存线粒度而被访问的示范系统。在这种情况下,针对远存储器114中的每八个不同高速缓存线槽存在近存储器113中的单个高速缓存线槽,其中远存储器114中的每个高速缓存线槽对应于不同的唯一系统存储器地址。因此,如果近存储器113被实现为直接映射高速缓存,则每八个不同系统存储器地址能够映射到近存储器113中的单个高速缓存线槽。
按照操作的标称模式,如果主存储器控制器116接收读取请求,则近存储器控制器118确定请求的系统存储器地址所映射到的近存储器高速缓存线槽的地址。如果近存储器113中存在高速缓存命中(请求的系统存储器地址与正占用近存储器中所标识的高速缓存线槽的高速缓存线的系统存储器地址相同),则通过提供在近存储器高速缓存线槽中找到的高速缓存线作为对请求的响应来服务读取请求。
如果存在未命中,则将请求指引到远存储器114,以及通过请求的系统存储器地址的直接应用从远存储器114中获取预期的高速缓存线。所获取的高速缓存线不仅被提供给请求方以服务读取请求,而且还被写入在请求的系统存储器地址所映射到并且刚遭受未命中的近存储器高速缓存线槽中。所请求的高速缓存线到高速缓存线槽中的写入引起曾处于近存储器高速缓存线槽中的高速缓存线的驱逐。通过所驱逐的高速缓存线的对应系统存储器地址的直接应用而将所驱逐的高速缓存线写入回到其在远存储器114中的正确位置。
如果主存储器控制器116接收到写入请求,则写入请求不仅具有关联的系统存储器地址,而且还具有要写入到主存储器112中的高速缓存线或其部分。近存储器控制器118确定请求的系统存储器地址所映射到的近存储器高速缓存线槽的地址。如果存在命中,则通过将随附于写入请求的高速缓存线内容写入在请求的系统存储器地址所映射到的近存储器113槽中的高速缓存线上,来服务写入请求。
如果存在未命中,则将请求指引到远存储器114,以及与请求关联的内容通过请求的系统存储器地址的直接应用而被写入到远存储器114中。新的已更新高速缓存线也被写入在请求的系统存储器地址所映射到的并且刚遭受未命中的近存储器高速缓存线槽中。高速缓存线到近存储器高速缓存线槽中的写入引起曾处于近存储器高速缓存线槽中的高速缓存线的驱逐。所驱逐的高速缓存线被写入回到其在远存储器114中的正确位置。
在以上操作描述中,曾与新接收的读取或写入请求关联的高速缓存线在近存储器高速缓存未命中的情况下被置于近存储器高速缓存线槽中,以便针对由主存储器控制器116所接收的映射到高速缓存线槽的下一个请求而增加近存储器中命中的机会。主存储器请求已知为展示空间和时间局部性。也就是说,主存储器请求常常将在窄时间窗口中拜访相同/相似系统存储器地址。然而,不幸地,随着映射到同一高速缓存线槽的系统存储器地址的数量增加,近存储器中未命中的机会增加。
因此,在本文所述的示范计算机系统(其中例如八个系统存储器地址映射到近存储器113中的同一高速缓存线槽)中,每当具有特定系统存储器地址的高速缓存线占用其在近存储器113中的正确高速缓存线槽时,存在七个其它系统存储器地址,主存储器控制器116可接收对其的请求并且其与高速缓存线竞争高速缓存线槽。如果空间和时间局部性假设不是严格保持为真,则能够存在高速缓存活动的有害系统颠簸。也就是说,如果在窄时间窗口内接收具有映射到近存储器113中的同一高速缓存线槽的不同系统存储器地址的请求,则请求将趋向于遭遇高速缓存未命中而不是高速缓存命中。
因此,近存储器高速缓存提供的潜在性能提升将大体上丢失,以及另外,瓶颈可能存在于主存储器控制器116内,因为它持续从近存储器113中驱逐高速缓存线,在近存储器中写入新高速缓存线,并且针对它所接收的非常大数量的请求中的每个而访问远存储器114。如果这些请求中的任一个正从计算系统内的高优先级组件/过程/线程(例如正在CPU核上执行的硬件或软件线程)发出,则来自近存储器113的性能提升的大体丢失和/或主存储器控制器116内的任何瓶颈可能不是可接受的。
然而,总体系统可配置成确保此类高优先级过程的近存储器性能提升,尽管有远存储器存储114容量的某种牺牲。图2示出近存储器高速缓存容量213和远存储器高速缓存容量214的架构简图。为了简洁性,简图以近存储器容量213对远存储器容量214的1:8比率的示例来继续。图2简洁性地描绘了近存储器213中的几个单个高速缓存线槽221、222以及远存储器214中的对应高速缓存线位置223、224(其系统存储器地址分别映射到高速缓存线槽221、222)。也就是说,远存储器214中的高速缓存线位置223的系统存储器地址映射到近存储器213中的高速缓存线槽221,远存储器214中的高速缓存线位置224的系统存储器地址映射到近存储器213中的高速缓存线槽22等。
另外,图2示出为高优先级组件/过程/线程所保留的近存储器存储容量的有效保留段225,并且还示出映射到近存储器的保留段225的远存储器存储容量226的对应量。也就是说,通过与远存储器容量的八个单元对应的近存储器容量的每个单元,其对应系统存储器地址空间映射到近存储器的高优先级保留段225的远存储器存储容量226的量是高优先级保留段225的八倍大小。为了简洁性,远存储器存储容量226的这个量被描绘为远存储器214的相邻区域。
重要地,为了确保某些高优先级组件/过程/线程的高性能主存储器速度,如在图2中所观察的,其系统存储器地址空间映射到近存储器的高优先级区域225内的高速缓存槽的远存储器214的区域226的八分之七被断言为不可用227。通过制止分配远存储器214的不可用区域227的系统存储器地址空间,近存储器213的高优先级区域225能被有效用作直接可寻址系统存储器而不是用作存储器侧高速缓存。
也就是说,1:8的近存储器对远存储器容量比率能够被看作是近存储器高速缓存容量与远存储器存储容量的超额预订,其引起近存储器存储容量的争用的可能(这如上所述引起近存储器未命中活动和主存储器瓶颈)。通过断言仅远存储器的区域226的八分之一为可用228,能够消除近存储器的超额预订以及对近存储器资源的对应争用。在这里,向远存储器214的可用区域228所分配/指配的系统存储器地址基本上将从高优先级近存储器区域225中进行操作,因为它们没有与任何其它系统存储器地址竞争同一近存储器存储空间(这类“竞争”地址对应于未使用区域227)。
在实施例中,如上所论述,按照标称读取/写入请求响应操作,请求的系统存储器地址被用来确定该地址映射到近存储器中的哪个高速缓存线槽。因此,以其性质,高速缓存线槽确定过程为八个不同系统存储器地址中的每个呈现同一近存储器地址。图2描绘了这个行为,其中八个远存储器位置223(和对应系统存储器地址)映射到近存储器槽221中,以及八个远存储器位置224(和对应系统存储器地址)映射到近存储器槽222中,等等。
因此,为了将高优先级近存储器区域225用作高优先级可寻址系统存储器地址空间,对于高优先级区域225内的每个近存储器地址,映射到其(经由存储器控制器的高速缓存线槽确定函数)的八个系统存储器地址中的七个被断言为不合格,并且不被准许被分配给向主存储器发出请求的任何组件/过程/线程。系统存储器地址空间的这个区域在图2中由不可用区域227来表示。
因此,经由存储器控制器的高速缓存线槽确定函数而映射到同一近存储器地址的每八个系统存储器地址中只有一个能被分配。这些系统存储器地址对应于可用区域228。通过这样做,那个系统存储器地址与任何其它系统存储器地址之间对近存储器资源的竞争/争用应被消除(要注意,区域225和228的大小近似相同)。在没有这种争用的情况下,对映射到近存储器213中的特定高速缓存线槽的地址的全部访问将产生近存储器中的“命中”。因此,已被分配了地址的组件/过程/线程将享有更快得多的主存储器访问时间,因为其请求从较快近存储器213中被持续服务。
在这里,用一定量的系统存储器地址空间来交换保证的较高性能时的远存储器空间的牺牲可对于多个应用是有意义的。具体来说,在某些高性能环境(例如云计算执行引擎,只为列举一个示例)中,如果分配程序代码的某些时间关键实例以从区域288的系统存储器地址空间中运行(这引起来自近存储器区域225的物理执行),则总体性能将引人注目地更好。这类较高优先级程序代码实例的示例一般包括低级程序代码,例如虚拟机监测器(VMM)、操作系统或操作系统实例(VMM一般能够支持许多操作系统实例的执行)、中断处置程序等。
高性能应用还可能需求来自近存储器的保证执行(例如人工智能应用、机器学习应用、图形处理应用、高性能存储应用等)。此外,还可为除了CPU硬件线程或软件线程之外的组件来分配来自近存储器的保证执行。示例包括主存储器资源,协处理器(例如图形处理单元或图像处理单元)或高速网络接口依赖于所述主存储器资源。
如上所论述,具有区域228的系统存储器地址空间的分配将提供高优先级程序代码和/或其它系统组件(其需要从具有作为这类代码/组件的有效物理主存储器资源的区域225的近存储器213中物理地操作)。相反,较低优先级代码/组件可被分配与远存储器关联的除了区域226之外的系统存储器空间。因此,这类代码/组件可能遭遇某个近存储器系统颠簸。但是,这些组件的较低优先级性质因其较低优先级状况而没有引起对总体系统性能的严重降级。
在图3中所描绘的另一个实施例中,如在低优先级与高优先级代码/组件之间的系统颠簸很大程度上被阻止,但是相同优先级级别之间的系统颠簸被准许或者是可能的。在这里,按照图3的实施例,高优先级代码/组件被分配与区域326关联的系统存储器地址空间。因此,例如高优先级线程可相互系统颠簸(1:8超额预订存在于近存储器区域325与远存储器区域326之间)。但是,近存储器325基本上被专用于高优先级线程。也就是说,仅为高性能线程的处理来分配某一百分比的近存储器313(所述百分比通过区域325所表示)。相反,远存储器314(与远存储器314关联的除了区域326之外的系统存储器地址空间)和近存储器313(近存储器313的除了区域325之外的区域)的其余部分被专用于较低优先级线程。
按照这种方式,至少将避免因为已新接收对竞争同一高速缓存线槽的低优先级线程的高速缓存线的请求而从近存储器313中驱逐高优先级高速缓存线。也就是说,高优先级高速缓存线将不会因与低优先级高速缓存线竞争同一高速缓存线槽而从近存储器高速缓存被降格。因此,至少保证近存储器313的区域325,以便即使近存储器与远存储器之间的某种系统颠簸发生也还支持高优先级高速缓存线。
要注意,图3的一般方式能被扩展到定义系统存储器中的多于两个分区,其中分区之间存在系统颠簸。也就是说,更一般来说,N个不同分区可在系统中被定义,其中每个分区具有其自己的专用近存储器空间及其自己的专用远存储器空间,并且特定用户被指配从特定分区中(被提供特定分区内的系统存储器地址)进行操作。通过这样做,避免如分区之间的系统颠簸。不同分区甚至能够在各种境况下被看作不同优先级或类级别(例如通过断言具有每个分区/类的地址空间的不同百分比为不可用,以便跨分区建立不同程度的争用)。
其它实施例可包括图2和图3的实施例的两种元件。也就是说,例如采用图3的方式,但是被分配给高优先级线程的区域326的量小于区域326的整体容量,例如为区域326的整体容量的75%、50%或25%。在这里,所分配的远存储器空间仍然大于图2的区域228,因此高优先级线程之间的某种系统颠簸仍然可能发生。然而,这种系统颠簸应当小于图3的方式,因为近存储器未如针对高优先级线程那样而被超额预订。
在各个实施例中,系统存储器地址空间的配置/分配例如作为固件程序代码、引导程序代码和/或系统配置程序代码的一部分来执行。这些代码中的任一个可接受用户输入,以给出关于下列方面的指引和/或自动确定下列方面:例如多少远存储器容量将被断言为不可用、多少近存储器超额预订将针对高优先级组件/过程/线程而存在、近存储器超额预订是否要被消除、将不使用哪些系统存储器地址、哪些系统存储器地址要被分配给高优先级组件/过程/线程、哪些系统存储器地址要被分配给低优先级组件/过程/线程、哪些物理近存储器地址要被分配给高优先级组件/过程/线程等。
如本领域中已知的,软件程序一般被编写和编译成引用虚拟地址,以及CPU处理核(其执行软件程序)的存储器单元中的转换后备缓冲器(TLB)被用来将由软件所调出的虚拟地址转换成真实物理系统存储器地址。虚拟机监测器、操作系统和/或操作系统实例可涉及到通过将特定虚拟地址到物理地址转换条目置于TLB中来建立转换。值得注意的是,TLB中的每个条目通常将物理地址标识为系统存储器中的特定“页”(一系列物理系统存储器地址落入其内(物理系统存储器地址的较高阶位对应于TLB中的页ID))。
在这里,为了有效配置系统而使得不使用特定物理系统存储器地址的集合(例如与图2的区域227关联的那些地址),虚拟机监测器、操作系统或操作系统实例不输入TLB中的任何不可用物理系统存储器地址。通过这样做,没有请求将被发出到具有不可用地址的主存储器(不存在将产生它们的转换)。
因此,在按照本文所述原理来配置系统时,固件程序代码、引导程序代码、系统配置程序代码、虚拟机监测器程序代码、操作系统实例程序代码、操作系统程序代码、或者它们的任何组合和/或其它程序代码首先将确定系统存储器的配置类型,诸如例如确定图2、图3的方式中的任一种或者某种组合是否适用。如果是的话,则程序代码将确定系统存储器地址暗示。
例如,如果近存储器的物理地址空间的区域要被用于高优先级组件/线程/过程,并且将应用图2的方式,则标识近存储器地址,并且确定映射到这些地址的物理系统存储器地址。在确定这些地址时,程序代码可具有对由存储器控制器所用于确定系统存储器地址映射到哪一个高速缓存线槽的算法(例如算法的数学逆)的某种深入了解,使得能够易于确定映射到特定近存储器地址的系统存储器地址。
所确定的物理系统存储器地址的某个百分比则被认为不是可用的,以及这类地址的标识码由虚拟机监测器、操作系统实例或操作系统来确认为是不可用的,使得它们未被输入在任何TLB中。同样,高优先级组件/过程/线程的可用物理系统存储器地址范围和/或低优先级组件/过程/线程的可用物理系统存储器地址范围也可由虚拟机监测器、操作系统实例和/或操作系统来确定和使用,以便基于其优先级级别而将特定系统存储器地址分配给特定组件/线程/过程。上述分配的任一个/全部可以页粒度(每页对应于物理系统存储器地址的集合)来执行。
值得注意的是,上述组件、处理器和/或线程(包括硬件和/或软件线程)各自可更一般地被看作是系统存储器的用户。
用来将系统存储器地址映射到高速缓存线槽的准确函数/算法(高速缓存线槽确定函数)可根据实施例而改变。按照仅一种方式,近存储器高速缓存是直接映射高速缓存,其将每个高速缓存线槽严格映射到系统存储器地址的不同唯一集合(例如通过散列函数、唯一地标识具有高阶系统存储器地址位的特定高速缓存线槽等)。其它实施例可采用不同高速缓存结构以用于较高级别的系统存储器(例如,关联性高速缓存,诸如一组关联性高速缓存)。高速缓存线槽确定函数可在存储器控制器中采用硬连线逻辑电路、可编程电路、执行程序代码的逻辑电路(例如嵌入式控制器或嵌入式处理器)或者这些电路的任何组合而被实现。高速缓存命中/未命中的检测可通过例如参考近存储器控制器中的查找表(其具有保持当前正占用特定槽的高速缓存线的“标签”(例如较低和/或中间系统存储器地址位)的不同高速缓存线槽的条目)来确定。备选地或组合地,标签信息可被保持在近存储器中。
图4示出上述方法。所述方法包括识别通过较快较高级别和较慢较低级别所表征的多级系统存储器的较高优先级用户,其中较高级别将充当较低级别的高速缓存,并且其中较高级别的第一容量小于较低级别的第二容量,使得较高级别的高速缓存资源是可超额预订的401。所述方法还包括执行下列至少一个:断言不可用的第二容量的量以降低高速缓存资源的超额预订402;分配多级系统存储器的系统存储器地址空间,使得与较低优先级用户关联的请求将不和与较高优先级用户关联的请求竞争高速缓存资源403。
图5提供了计算系统500(例如,智能电话、平板计算机、膝上型计算机、台式计算机、服务器计算机等)的示范描绘。如在图5中所观察到的,基本计算系统500可以包括中央处理单元501(其可包括例如多个通用处理核515_1至515_X)和设置在多核处理器或应用处理器上的主存储器控制器517、系统存储器502、显示器503(例如,触摸屏、平板)、本地有线点对点链路(例如,USB)接口504、各种网络I/O功能505(诸如以太网接口和/或蜂窝调制解调器子系统)、无线局域网(例如,WiFi)接口506、无线点对点链路(例如,蓝牙)接口507和全球定位系统接口508、各种传感器509_1至509_Y、一个或多个摄像机510、电池511、功率管理控制单元512、扬声器和麦克风513以及音频编码器/解码器514。
应用处理器或多核处理器550可以包括其CPU 501内的一个或多个通用处理核515、一个或多个图形处理单元516、存储器管理功能517(例如,存储器控制器)和I/O控制功能518。通用处理核515通常执行计算系统的操作系统和应用软件。图形处理单元516通常执行图形密集型功能,以例如生成被呈现在显示器503上的图形信息。存储器控制功能517与系统存储器502通过接口连接,以向/从系统存储器502写入/读取数据。功率管理控制单元512通常控制系统500的功率消耗。
触摸屏显示器503、通信接口504-507、GPS接口508、传感器509、摄像机510和扬声器/麦克风编解码器513、514中的每一个全都能被视为相对于总体计算系统的各种形式的I/O(输入和/或输出),其在适当时也包括集成外围装置(例如,一个或多个摄像机510)。取决于实现,这些I/O组件中的各种组件可以被集成在应用处理器/多核处理器550上,或者可以位于管芯外或在应用处理器/多核处理器550的封装外。计算系统还包括非易失性存储装置520,其可以是系统的海量存储组件。
系统可具有多级系统存储器,其能够如上所述而被配置成确保一定量的较快较高级别系统存储器资源被专用于较高优先级用户,包括降低或没有对这类资源的争用。
本申请提供了如下的技术方案:
技术方案1. 一种设备,包括:
存储器控制器,所述存储器控制器用于与通过较快较高级别和较慢较低级别所表征的多级系统存储器通过接口连接,其中所述较高级别将充当所述较低级别的高速缓存,并且其中所述较高级别的第一容量小于所述较低级别的第二容量,使得所述较高级别的高速缓存资源是可超额预订的,所述设备包括配置寄存器空间,所述配置寄存器空间用于支持所述较高级别的区域专用于所述多级系统存储器的较高优先级用户,其中:
a)所述第二容量的量被断言为不可用,以降低所述高速缓存资源的超额预订;和/或
b)分配所述多级系统存储器的系统存储器地址空间,使得与较低优先级用户关联的请求将不和与所述较高优先级用户关联的请求竞争所述高速缓存资源。
技术方案2. 如技术方案1所述的设备,其中,所述高速缓存是直接映射高速缓存。
技术方案3. 如技术方案1所述的设备,其中,所述配置寄存器空间将指示所述设备是否将按照上述a)进行操作。
技术方案4. 如技术方案3所述的设备,其中,所述配置寄存器空间将指示是否消除所述超额预订。
技术方案5. 如技术方案1所述的设备,其中,所述配置寄存器空间将指示所述设备是否将按照上述b)进行操作。
技术方案6. 如技术方案1所述的设备,其中,所述配置寄存器空间将指示所述设备是否将按照上述a)和b)进行操作。
技术方案7. 一种包含程序代码的机器可读存储介质,所述程序代码将由计算机的处理器来执行,以使所述计算机执行方法,所述方法包括:
识别通过较快较高级别和较慢较低级别所表征的多级系统存储器的较高优先级用户,其中所述较高级别将充当所述较低级别的高速缓存,并且其中所述较高级别的第一容量小于所述较低级别的第二容量,使得所述较高级别的高速缓存资源是可超额预订的;
执行以下a)和b)中的至少一个:
a)断言所述第二容量的量为不可用,以降低所述高速缓存资源的超额预订;
b)分配所述多级系统存储器的系统存储器地址空间,使得与较低优先级用户关联的请求将不和与所述较高优先级用户关联的请求竞争所述高速缓存资源。
技术方案8. 如技术方案7所述的机器可读存储介质,其中,执行上述a)。
技术方案9. 如技术方案8所述的机器可读存储介质,其中,执行上述a)和b)。
技术方案10. 如技术方案8所述的机器可读存储介质,其中,所述方法还包括制止分配映射到所述高速缓存资源的同一单元的系统存储器地址。
技术方案11. 如技术方案10所述的机器可读存储介质,其中,所述制止还包括应用存储器控制器的函数或者其逆,以确定所述系统存储器地址,所述函数将由所述存储器控制器用来确定系统存储器地址映射到哪个高速缓存资源单元。
技术方案12. 如技术方案8所述的机器可读存储介质,其中,消除所述超额预订。
技术方案13. 如技术方案7所述的机器可读存储介质,其中,执行上述b)。
技术方案14. 如技术方案7所述的机器可读存储介质,其中,所述机器可读介质是所述计算机的组件。
技术方案15. 一种方法,包括:
识别通过较快较高级别和较慢较低级别所表征的多级系统存储器的较高优先级用户,其中所述较高级别将充当所述较低级别的高速缓存,并且其中所述较高级别的第一容量小于所述较低级别的第二容量,使得所述较高级别的高速缓存资源是可超额预订的;
执行以下a)和b)中的至少一个:
a)断言所述第二容量的量为不可用,以降低所述高速缓存资源的超额预订;
b)分配所述多级系统存储器的系统存储器地址空间,使得与较低优先级用户关联的请求将不和与所述较高优先级用户关联的请求竞争所述高速缓存资源。
技术方案16. 如技术方案15所述的方法,其中,执行上述a)。
技术方案17. 如技术方案16所述的方法,其中,执行上述a)和b)。
技术方案18. 如技术方案16所述的方法,其中,所述方法还包括制止分配映射到所述高速缓存资源的同一单元的系统存储器地址。
技术方案19. 如技术方案18所述的方法,其中,所述制止还包括应用存储器控制器的函数或者其逆,以确定所述系统存储器地址,所述函数将由所述存储器控制器用来确定系统存储器地址映射到哪个高速缓存资源单元。
技术方案20. 如技术方案16所述的方法,其中,消除所述超额预订。
本发明的实施例可包括如上面所阐述的各种过程。这些过程可以在机器可执行指令中被实施。指令能用于使通用或专用处理器执行某些过程。备选地,这些过程可以由含有用于执行过程的硬连线逻辑电路或可编程逻辑电路(例如FPGA、PLD)的特定/定制硬件组件来执行,或者通过已编程计算机组件和定制硬件组件的任何组合来执行。
本发明的元件还可被提供为用于存储机器可执行指令的机器可读介质。机器可读介质可包括但不限于软盘、光盘、CD-ROM以及磁光盘、FLASH存储器、ROM、RAM、EPROM、EEPROM、磁卡或光卡、传播介质或者适合于存储电子指令的另一类型的介质/机器可读介质。例如,本发明可以作为计算机程序下载,计算机程序可经由通信链路(例如调制解调器或网络连接)通过在载波或其它传播介质中实施的数据信号从远程计算机(例如服务器)传递到发出请求的计算机(例如客户端)。
在前述说明书中,本发明已经参考其特定示范实施例而被描述。然而,将显然的是,在不脱离如在所附权利要求中所阐述的本发明的更广泛精神和范畴的情况下可对其进行各种修改和改变。因而在说明性而非约束性意义上看待本说明书和附图。
Claims (13)
1.一种设备,包括:
存储器控制器,所述存储器控制器用于与通过较快较高级别和较慢较低级别所表征的多级系统存储器通过接口连接,其中所述较高级别将充当所述较低级别的高速缓存,并且其中所述较高级别的第一容量小于所述较低级别的第二容量,使得所述较高级别的高速缓存资源是可超额预订的,所述设备包括配置寄存器空间,所述配置寄存器空间用于支持所述较高级别的区域专用于所述多级系统存储器的较高优先级用户,其中:
a)所述第二容量的量被断言为不可用,以降低所述高速缓存资源的超额预订;和/或
b)分配所述多级系统存储器的系统存储器地址空间,使得与较低优先级用户关联的请求将不和与所述较高优先级用户关联的请求竞争所述高速缓存资源。
2.如权利要求1所述的设备,其中,所述高速缓存是直接映射高速缓存。
3.如权利要求1所述的设备,其中,所述配置寄存器空间将指示所述设备是否将按照上述a)进行操作。
4.如权利要求3所述的设备,其中,所述配置寄存器空间将指示是否消除所述超额预订。
5.如权利要求1所述的设备,其中,所述配置寄存器空间将指示所述设备是否将按照上述b)进行操作。
6.如权利要求1所述的设备,其中,所述配置寄存器空间将指示所述设备是否将按照上述a)和b)进行操作。
7.一种计算系统,包括权利要求1直到6中任一项所述的主题。
8.一种方法,包括:
识别通过较快较高级别和较慢较低级别所表征的多级系统存储器的较高优先级用户,其中所述较高级别将充当所述较低级别的高速缓存,并且其中所述较高级别的第一容量小于所述较低级别的第二容量,使得所述较高级别的高速缓存资源是可超额预订的;
执行以下a)和b)中的至少一个:
a)断言所述第二容量的量为不可用,以降低所述高速缓存资源的超额预订;
b)分配所述多级系统存储器的系统存储器地址空间,使得与较低优先级用户关联的请求将不和与所述较高优先级用户关联的请求竞争所述高速缓存资源。
9.如权利要求8所述的方法,其中,执行上述a)。
10.如权利要求9所述的方法,其中,执行上述a)和b)。
11.如权利要求9所述的方法,其中,所述方法还包括制止分配映射到所述高速缓存资源的同一单元的系统存储器地址。
12.如权利要求11所述的方法,其中,所述制止还包括应用存储器控制器的函数或者其逆,以确定所述系统存储器地址,所述函数将由所述存储器控制器用来确定系统存储器地址映射到哪个高速缓存资源单元。
13.如权利要求9所述的方法,其中,消除所述超额预订。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/857,463 US20190034337A1 (en) | 2017-12-28 | 2017-12-28 | Multi-level system memory configurations to operate higher priority users out of a faster memory level |
US15/857463 | 2017-12-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109992528A true CN109992528A (zh) | 2019-07-09 |
Family
ID=64556832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811432878.7A Pending CN109992528A (zh) | 2017-12-28 | 2018-11-28 | 从较快存储器级操作较高优先级用户的多级系统存储器配置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190034337A1 (zh) |
EP (1) | EP3506112A1 (zh) |
CN (1) | CN109992528A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11762695B2 (en) * | 2019-03-29 | 2023-09-19 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Transparent memory management for over-subscribed accelerators |
US11599415B2 (en) * | 2021-07-09 | 2023-03-07 | Microsoft Technology Licensing, Llc | Memory tiering techniques in computing systems |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5694567A (en) * | 1995-02-09 | 1997-12-02 | Integrated Device Technology, Inc. | Direct-mapped cache with cache locking allowing expanded contiguous memory storage by swapping one or more tag bits with one or more index bits |
DE69826539D1 (de) * | 1997-01-30 | 2004-11-04 | Sgs Thomson Microelectronics | Cachespeichersystem |
US6408368B1 (en) * | 1999-06-15 | 2002-06-18 | Sun Microsystems, Inc. | Operating system page placement to maximize cache data reuse |
US7499398B2 (en) * | 2003-04-16 | 2009-03-03 | International Business Machines Corporation | Method and system for oversubscribing bandwidth in a communications network |
US8069308B2 (en) * | 2008-02-13 | 2011-11-29 | Honeywell International Inc. | Cache pooling for computing systems |
US8677071B2 (en) * | 2010-03-26 | 2014-03-18 | Virtualmetrix, Inc. | Control of processor cache memory occupancy |
US9477603B2 (en) * | 2013-09-05 | 2016-10-25 | Facebook, Inc. | System and method for partitioning of memory units into non-conflicting sets |
US10664306B2 (en) * | 2017-01-13 | 2020-05-26 | Arm Limited | Memory partitioning |
US20180203807A1 (en) * | 2017-01-13 | 2018-07-19 | Arm Limited | Partitioning tlb or cache allocation |
US20180285274A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Apparatus, method and system for just-in-time cache associativity |
-
2017
- 2017-12-28 US US15/857,463 patent/US20190034337A1/en not_active Abandoned
-
2018
- 2018-11-28 EP EP18209002.7A patent/EP3506112A1/en not_active Withdrawn
- 2018-11-28 CN CN201811432878.7A patent/CN109992528A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3506112A1 (en) | 2019-07-03 |
US20190034337A1 (en) | 2019-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10866740B2 (en) | System and method for performance-based multiple namespace resource allocation in a memory | |
US10564857B2 (en) | System and method for QoS over NVMe virtualization platform using adaptive command fetching | |
CN104636263B (zh) | 用于异质存储器存取的方法和装置 | |
US10255191B2 (en) | Logical memory address regions | |
US10860244B2 (en) | Method and apparatus for multi-level memory early page demotion | |
US10915791B2 (en) | Storing and retrieving training data for models in a data center | |
US8560767B2 (en) | Optimizing EDRAM refresh rates in a high performance cache architecture | |
US10108549B2 (en) | Method and apparatus for pre-fetching data in a system having a multi-level system memory | |
US11741011B2 (en) | Memory card with volatile and non volatile memory space having multiple usage model configurations | |
CN110023922B (zh) | 具有传输压缩业务的点对点链路的系统存储器 | |
EP3506116A1 (en) | Shared memory controller in a data center | |
WO2017052764A1 (en) | Memory controller for multi-level system memory having sectored cache | |
CN114402282A (zh) | 存取存储的元数据以识别存储数据的存储器装置 | |
US20180088853A1 (en) | Multi-Level System Memory Having Near Memory Space Capable Of Behaving As Near Memory Cache or Fast Addressable System Memory Depending On System State | |
KR101414035B1 (ko) | 저장 효율적인 섹터형 캐시 | |
US20180032429A1 (en) | Techniques to allocate regions of a multi-level, multi-technology system memory to appropriate memory access initiators | |
US11836087B2 (en) | Per-process re-configurable caches | |
CN110597742A (zh) | 用于具有持久系统存储器的计算机系统的改进存储模型 | |
CN108139983B (zh) | 用于在多级系统存储器中固定存储器页面的方法和设备 | |
CN109992528A (zh) | 从较快存储器级操作较高优先级用户的多级系统存储器配置 | |
US10915453B2 (en) | Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures | |
US11055228B2 (en) | Caching bypass mechanism for a multi-level memory | |
CN114830077A (zh) | 一种数据存储方法及存储装置 | |
US11526448B2 (en) | Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning |
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 |