CN108139983B - 用于在多级系统存储器中固定存储器页面的方法和设备 - Google Patents
用于在多级系统存储器中固定存储器页面的方法和设备 Download PDFInfo
- Publication number
- CN108139983B CN108139983B CN201680055589.2A CN201680055589A CN108139983B CN 108139983 B CN108139983 B CN 108139983B CN 201680055589 A CN201680055589 A CN 201680055589A CN 108139983 B CN108139983 B CN 108139983B
- Authority
- CN
- China
- Prior art keywords
- memory
- region
- pinned
- level
- page
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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
-
- 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/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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
描述一种设备。所述设备包括存储器控制器,用以与多级系统存储器对接。所述存储器控制器包括固定引擎,固定引擎用于将存储器页面固定在系统存储器的第一级中,第一级处于比系统存储器的第二级高的级。
Description
技术领域
本发明的领域一般地涉及计算系统,并且更具体地讲,涉及一种用于在多级系统存储器中固定(pin)存储器页面的方法和设备。
背景技术
计算系统通常包括系统存储器(或主存储器),所述系统存储器(或主存储器)包含数据和系统的处理器当前正在执行的软件代码的程序代码。许多计算机系统中的相关瓶颈是系统存储器。这里,如本领域所理解,计算系统通过执行存储在系统存储器中的程序代码来操作。当执行程序代码时,程序代码从系统存储器读取数据/将数据写到系统存储器。如此,在计算系统的操作过程中在许多程序代码和数据读以及许多数据写方面大量使用系统存储器。因此,寻找加快系统存储器的方式是计算系统工程师的动力。
附图说明
从下面结合下面的附图的详细描述能够获得对本发明的更好理解,其中:
图1示出具有多级系统存储器的计算系统;
图2a至2e示出与在多级系统存储器的一级中对存储器页面的固定关联的各种场景;
图3示出具有用于管理在多级系统存储器的一级中对存储器页面的固定的固定引擎的存储器控制器;
图4示出由图3的固定引擎执行的方法;
图5示出计算系统的实施例。
具体实施方式
在不显著增加功耗的情况下加快系统存储器的一个方式是具有多级系统存储器。图1示出具有多层或多级系统存储器112的计算系统100的实施例。根据各种实施例,较快的近存储器113可被用作系统存储器的存储器侧高速缓存或较高优先级区域。
在近存储器113被用作存储器侧高速缓存的情况下,近存储器113被用于存储预期由计算系统更频繁地调用的数据项。与更低层的远存储器114区域相比,近存储器高速缓存113具有更低的存取时间。通过在近存储器113中存储更频繁地调用的项,系统存储器将会被注意到会更快,因为所述系统将会经常读取正被存储在更快的近存储器113中的项。
根据一些实施例,例如,由于比远存储器114快的时钟速度,近存储器113表现出减少的存取时间。这里,近存储器113可以是较快的易失性系统存储器技术(例如,高性能动态随机存取存储器(DRAM))。相比之下,远存储器114可以是利用较慢时钟速度实现的易失性存储器技术(例如,接收较慢时钟的DRAM部件)或例如固有地比易失性/DRAM存储器慢的非易失性存储技术。
例如,远存储器114可包括新兴的非易失性字节可寻址随机存取存储器技术,例如举几种可能性,例如基于相变的存储器、基于铁电的存储器(例如,FRAM)、基于磁的存储器(例如,MRAM)、基于自旋转移矩的存储器(例如,STT-RAM)、基于电阻器的存储器(例如,ReRAM)或基于忆阻器的存储器、通用存储器、Ge2Sb2Te5存储器、可编程金属化基元存储器、非晶基元存储器、奥弗辛斯基(Ovshinsky)存储器、电介质存储器等。
这种新兴的非易失性随机存取存储器技术通常具有下面各项的某种组合:1)比DRAM高的存储密度(例如,通过按照三维(3D)电路结构(例如,交叉点3D电路结构)构造);2)比DRAM低的功耗密度(例如,因为它们不需要刷新);和/或3)比DRAM慢然而仍然比传统非易失性存储器技术(诸如,闪存)快的存取延时。后面的特性特别地允许新兴的非易失性存储器技术被用于主系统存储器的作用,而非传统存储装置的作用(所述传统存储装置功能是非易失性存储装置的传统架构位置)。
不管远存储器114是包括易失性存储器技术还是包括非易失性存储器技术,在各种实施例中,远存储器114用作真正的系统存储器,因为它支持更细粒度的数据访问(例如,高速缓存行),而非与传统非易失性存储装置(例如,固态驱动器(SSD)、硬盘驱动器(HDD))关联的基于更大的块的访问,和/或远存储器114另一方面用作正在由CPU的处理器执行的程序代码从其操作的(例如,字节)可寻址存储器。
因为近存储器113用作高速缓存,所以近存储器113可能不具有它自己的个体寻址空间。相反地,远存储器114包括计算系统的主存储器的个体可寻址存储空间。在各种实施例中,近存储器113实际上用作远存储器114的高速缓存,而非用作末级CPU高速缓存。通常,CPU级高速缓存能够保持横跨变为处理核117可用的整个系统存储器寻址空间的高速缓存行,处理核117被集成在与存储器控制器116相同的半导体芯片上。
例如,在各种实施例中,系统存储器被利用双列直插式存储器模块(DIMM)卡实现,其中单个DIMM卡中既布置有DRAM芯片又布置有(例如,新兴的)非易失性存储器芯片。DRAM芯片有效地用作DIMM卡上的非易失性存储器芯片的板上高速缓存。在理想情况下,任何特定DIMM卡的更频繁地访问的高速缓存行将会在该DIMM卡的DRAM芯片上被发现,而非在它的非易失性存储器芯片上被发现。假设多个DIMM卡通常被插入在工作计算系统中并且每个DIMM卡仅被给予DIMM卡耦合到的半导体芯片的处理核117可用的系统存储器地址的一部分,DRAM芯片用作它们与之共享DIMM卡的非易失性存储器的高速缓存,而非末级CPU高速缓存。
在其它配置中,仅具有DRAM芯片的DIMM卡可与仅具有非易失性系统存储器芯片的DIMM卡被插入在相同的系统存储器通道(例如,DDR通道)中。在理想情况下,通道的更频繁地使用的高速缓存行将会在DRAM DIMM卡中被发现,而非在非易失性存储器DIMM卡中被发现。因此,再一次,因为通常存在耦合到具有多个处理核的相同半导体芯片的多个存储器通道,所以DRAM芯片用作它们与之共享相同通道的非易失性存储器芯片的高速缓存,而非末级CPU高速缓存。虽然以上示例参照了包括DIMM卡的封装解决方案,但需要注意的是,这仅是一个示例并且其它实施例可使用其它封装解决方案(例如,堆叠芯片技术、集成在与处理核相同的半导体管芯上或至少集成在与处理核相同的封装内的一个或多个DRAM和相变存储器等)。
在再又其它实施例中,近存储器113不用作远存储器114的高速缓存,并且替代地,被分配它自己的唯一系统存储器地址空间。在这个方案中,与远存储器114相比,近存储器113用作系统存储器的较高优先级的更快级。因此,例如,较高优先级或较高性能应用被配置为从分配给近存储器113而非远存储器114的地址空间运行。在再又其它实施例中,近存储器113的某个部分被配置为用作远存储器114的存储器侧高速缓存,并且近存储器113的另一部分被配置为较高优先级系统存储器,所述较高优先级系统存储器被分配它自己的系统存储器寻址空间。
在另外的其它实施例中,近存储器113可用作CPU级高速缓存。
近存储器113的另一用途是固定(pinning)。在固定的情况下,计算系统的硬件或软件部件发出用于使用较快的近存储器113的请求。例如,计算系统的图形处理单元可请求使用近存储器113加快它的图形处理性能。多级系统存储器的存储器控制器内的固定引擎接收该请求,并且在近存储器113中为请求部件分配空间。
在实现方式中,请求部件按照存储器页面基础请求关于存储器页面的固定(例如,针对第一存储器页面发出第一固定请求,针对第二存储器页面发出第二固定请求等)。在由固定引擎做出有利的响应时,作为请求的对象的存储器页面被保持在近存储器113中,并且请求部件通过在存储器页面保持在较快的近存储器113中的同时从存储器页面操作来经历性能提升。
这里,为固定保留近存储器113的某个部分以满足来自各种计算系统部件的各种固定请求,而近存储器的其它部分被用于实现例如如上所述的存储器侧高速缓存和/或较高优先级系统存储器级。
图2a示出布置的简单描述,其中近存储器213内的第一组存储器页面地址槽221被分配用于固定目的,而剩余存储器页面地址槽222被分配用于其它近存储器用途(例如,存储器侧高速缓存和/或较高优先级系统存储器)。近存储器213的低效使用可导致这样的情况:存在对固定的大量需求,其后存在减少的固定需求。具体地讲,近存储器能够被分段(fragment),从而固定区域221内的原本可用的存储器页面地址槽变为未被使用,并且“第二”区域222内的存储器页面地址槽不可用于它们的标准用途。图2b、2c和2d及其对应讨论在以下立即更详细地描述分段问题。
图2b示出这样的情况:固定区域221正被使用至最大容量。这里,计算系统的一个或多个部件已请求要固定与在近存储器213中为固定目的分配的存储器页面地址槽221的数量相等的数量的存储器页面(阴影存储器页面地址槽对应于当前正保持着固定的存储器面的槽)。根据图2b中的情况,可能的是:甚至更多的固定请求将会被存储器控制器的固定引擎接收到。
如图2c中所看到的,通过在第二用途区域222内为固定分配另外的存储器页面地址槽,可准许一些或全部的这些另外的固定请求。这里,例如,因为至少对于一些请求而言固定可被视为比近存储器的第二用途高的优先级的需要,所以第二区域近存储器地址槽不再被用于它们的第二近存储器用途,而是替代地被重新分配以保持固定的存储器页面。
通过示出不仅固定区域221完全用于固定而且第二区域222内的各种存储器页面地址槽也用于固定,图2c描述这个场景。需要注意的是,针对固定的第二区域222的分配降低针对其第二目的的第二区域222的性能。例如,如果第二区域222被用作存储器侧高速缓存,则当第二区域222的更多的地址槽被用于固定时,存储器侧高速缓存的大小逐渐减小。
当固定区域221已经被完全消耗时由固定引擎在决定是否满足固定请求时使用的协议可根据实施例而变化。根据一个实施例,固定请求被简单地假设为比所有其它近存储器用途高的优先级,并且因此,即使固定区域221已满,也被自动地准许。在再又其它方案中,某种程度的判断可被设计在固定引擎中。例如,对于某些较高优先级或较高性能的系统部件(例如,GPU),即使固定区域221已满,固定请求也被自动地准许,而对于其它较低优先级或较低性能的系统部件(例如,外围存储装置),如果固定区域221已满,则固定请求被自动地否决。在再又其它实施例中,固定引擎可向操作系统实例或虚拟机监视器询问关于解决该请求的指导。
图2d示出相对于图2c中的情况的后续情况,其中在固定区域221中固定的多个存储器页面现在不再被固定。这里,针对这些固定区域的原始请求者可能不再需要来自固定的性能提升,并且已明确地向固定引擎通知该情况。作为响应,固定引擎已将所述页面从固定区域221驱逐至较低系统存储器级。
如此,现在在固定区域221中存在未被用于固定的空缺223,而同时存在仍然从第二区域222使用的固定的存储器页面。因此,在图2d的情况下,即使例如由固定的存储器页面消耗的地址槽的数量等于在固定区域221内为固定分配的地址槽的数量,固定区域221和第二区域222二者的性能也在降低的状态下操作。
图2e示出图2d的问题的解决方案。如图2e中所看到的,计算系统能够识别图2d的分段情况,并且作为响应,以物理方式将第二区域222内的固定的存储器页面迁移到固定区域221。通过这样操作,固定和第二区域221、222二者都按照其全部潜力或更接近其全部潜力而操作,因为在固定区域221中存在较少的未使用的位置(因此,固定区域221更接近其最大潜力而操作),并且在用于固定的第二区域中存在较少的位置(因此,第二区域有效地扩大其作为例如近存储器高速缓存或较高优先级系统存储器的作用)。
图3示出能够如以上相对于图2a至2e所述操作的计算系统的高级架构示图。图3描述请求者301和存储器控制器302,存储器控制器302对接包括近存储器303和远存储器304的多级系统存储器。存储器控制器302包括用于将存储器页面固定在近存储器303的固定区域中的固定引擎305。请求者301能够被利用软件(例如,应用、操作系统(OS)实例、虚拟机监视器、固件)、硬件(例如,对存储器进行特定调用的布置在半导体芯片上的逻辑电路,诸如图形处理器单元(GPU)、I/O控制集线器等)或二者的组合实现。
在实施例中,请求者301向固定引擎305发送用于固定请求者301从其操作的特定存储器页面(所述特定存储器页面在该请求中由其系统存储器地址标识)的固定请求1。其它类型的请求包括解除固定和重新固定。当请求者301认识到不再有固定特定存储器页面的需要并且具体地向固定引擎301通知所述特定存储器页面(所述特定存储器页面在解除固定请求1中由其系统存储器地址标识)能够被从它的固定状态去除时,使用解除固定请求。重新固定请求1由请求者301发送以向固定引擎305标识正被固定在近存储器303的第二区域222中的存储器页面,请求者301相信所述存储器页面可以能够被迁移过去到固定区域221(再一次,所述特定存储器页面在重新固定请求中由其系统存储器地址标识)。以下立即更详细地描述每个不同类型的请求及其系统响应。
在固定请求的情况下,在提出固定请求1时,存储器页面的实例被保持在系统存储器(例如,远存储器304)的某个其它区域中。在实施例中,针对固定请求的响应2包括各种信息字段,并且请求者301维护表306,表306跟踪为其发送固定请求的特定存储器页面的这些字段。
具体地讲,在实施例中,针对固定请求的响应2可指示固定请求是否已被批准(Y/N)。响应2包括页面的地址,从而请求者301能够确定响应2涉及哪个存储器页面。
如果响应2指示前一个固定请求已被准许,则响应2中的另一信息字段指示存储器页面是被固定在固定区域221中还是被固定在第二区域222中。如果响应2指示存储器页面正被固定在第二区域222中,则请求者301在表306的叠置(overpin)列中为存储器页面的条目设置位,因此请求者301能够认识到该特定存储器页面未被保持在固定区域221中并且替代地被固定在第二区域222中。此外,在实施例中,指示页面正被固定在第二区域222中的任何响应2另外提供指针,请求者将该指针与设置的叠置位一起保持在表306中的存储器页面的条目的Ptr.列中。相比之下,指示页面正被固定在固定区域221中的响应不包括任何指针。
这里,在实施例中,前往存储器控制器302的针对来自固定在固定区域221中的页面的数据的随后的存储器访问请求3不包括指针,但前往存储器控制器302的针对固定在第二区域222中的页面上的数据的访问请求3包括指针。存储器访问请求3中的指针的存在或不存在向存储器控制器302内的重新引导逻辑307通知是在近存储器303的固定区域221中寻找固定的存储器页面还是在近存储器303的第二区域222内寻找固定的存储器页面。
在目标存储器页面被固定在固定区域221中的基本情况下,作为针对用于固定存储器页面的请求的响应的一部分,固定引擎305更新重新引导逻辑307中的表308,表308将所述页面的系统存储器地址映射到近存储器303的固定区域221内的特定页面地址槽。在实施例中,作为由存储器控制器302接收的任何/所有存储器访问请求3的标准处理的一部分,存储器控制器302针对地址匹配扫描这个表308。如果存储器访问请求的地址与表308中的条目匹配,则存储器控制器303使用来自表308的映射的地址槽从近存储器303的固定区域221访问存储器页面。
相比之下,在实施例中,在存储器页面被固定在第二区域222中的情况下,固定引擎305不更新表308,并且替代地在响应2中包括指向固定存储器页面的第二区域222中的地址槽的指针。响应2也指示:所述页面被固定在第二区域222中并且未被固定在固定区域221中。如上所述,请求者301在表306中记录这一信息。
因此,当请求者301试图提出对它的固定的页面之一的存储器访问请求3时,它首先依靠表306。如果表306中的该页面的条目不包括指针(并且因此也不指示该页面正被保持在第二区域222中),则请求者301简单地向存储器控制器302发出标准存储器访问请求3。存储器控制器302又扫描表308,识别地址匹配,并且针对该页面重新引导至近存储器303的固定区域221。相比之下,如果表306中的该页面的条目包括指针并且指示该页面正被保持在第二区域222中,则向存储器控制器302发出的针对该页面的存储器访问请求3包括指针。作为响应,存储器控制器302不扫描表308,并且替代地直接使用嵌入的指针从近存储器303的第二区域222访问该页面。
通过对固定在固定区域221中的页面仅仅使用表308而对固定在第二区域222中的页面使用指针,表308的大小保持有限或者另一方面被高效地实现。这里,近存储器303的大小可以很大。如果固定被允许从固定区域221溢出到第二区域222中,则固定在第二区域222中的页面的数量能够相当大。同时,使大量页面被固定在第二区域222中的事件能够是相当不频发的。如果表308被构造为大到足以跟踪在固定和第二区域221、222中的所有固定的页面,则表308可能必须非常大。同时,它可能仅很少填充有条目。因此,在实施例中,为了节约表308的大小,跟踪固定在第二区域222中的页面的负担被放置在请求者上,并且表308仅足够大到跟踪固定在固定区域221中的页面。
在各种实施例中,固定引擎305知道固定区域221的大小以及多少个有效页面被固定在固定区域中。例如,固定引擎305可维护计数器,每次页面被固定在固定区域221中时,计数器增加,并且每次页面被从固定区域221去除时,计数器减小。当指针增加超过与固定区域221内的存储器页面地址槽的数量相等的阈值时,固定引擎将会认识到:页面将会需要开始被固定在第二区域222中。
在实施例中,当页面将要被固定在固定区域221中时,固定引擎305简单地在固定区域221内将地址槽分派给页面并且更新表308。相比之下,当页面将要被固定在第二区域222中时,固定引擎305向存储器控制器的主存储器控制部分309内的固定管理器310提出请求。主存储器控制部分309实现主存储器控制或其某个部分(例如,近存储器高速缓存控制器或多级存储器控制器的前端逻辑)。固定管理器310在第二区域222内设置页面的固定。例如,如果第二区域222也用作存储器侧高速缓存,则固定管理器310识别将要被从该高速缓存驱逐并且例如发送给远存储器304的该高速缓存中的页面以便腾出用于固定页面的空间。一旦主存储器控制部分309的固定管理器310识别第二区域222内的存储器地址槽,它向固定引擎305通知该地址并且固定引擎将该地址包括在前往请求者301的响应2中。
另外,每当页面将要被固定(不管它是被固定在固定区域221中还是被固定在第二区域222中)时,存储器控制器302以物理方式将存储器页面从它的当前位置(例如,在远存储器304中)移动到已为固定分派的近存储器中的地址槽(页面的以物理方式移动的实例可以是例如仍然保留在远存储器304中的相同页面的拷贝)。在各种实施例中,针对用于固定存储器页面的请求的响应2不被发送给请求者301,直至存储器页面至其固定位置的物理移动已成功地完成。
因为请求者301跟踪哪些固定的页面被保持在第二区域222中,所以固定引擎305有限地理解已在固定区域221之外完成固定的确切方式。如此,在实施例中,请求者301被给予这样的任务:识别可用固定区域空间221和第二区域222中的已有固定页面之间的图2d的分段状况的可能性。
在实施例中,请求者301因此被设计为识别何时其固定在固定区域221中的页面的数量低于请求者301已在固定区域221中被分派的分配的地址槽的数量以及其固定在第二区域222中的页面的数量超过某个阈值。在识别出这个状态时,请求者301将会开始向固定引擎305发送针对其当前固定在第二区域222中的那些页面的重新固定请求。
这里,请求者301可被分配或者另一方面保证固定区域221内的某个数量的地址槽。这个数量的保证的槽可例如由BIOS固件、操作系统实例和/或虚拟机监视器确立。不管什么样的这种槽被分配给请求者301/这种槽如何被分配给请求者301,请求者301理解针对它自己的用途它已被分派/保证固定区域221内的多少个地址槽。
如以上详细所述,请求者301自由请求固定比它的分配的数量多的页面,不仅因为在第二区域222中固定页面的选择,还因为已在固定区域221中被分配空间的其它请求者可能当前未使用其在固定区域221内的所有分配的槽和/或某个百分比的固定区域221可能未被分配给任何请求者。由于这些后面的原因,在各种实施例中,与请求者301已在固定区域221中被分配的地址槽的数量相比,请求者301可以使更多页面被固定在固定区域221中。
不管怎样,因为请求者301中的表306的结构,请求者301能够立即理解它的多少个固定页面驻留在固定区域221中以及它的多少个固定页面驻留在第二区域222中。如此,如果请求者301意识到它在固定区域221内的固定页面的数量低于它已在固定区域221中被保证的地址槽的数量以及它在第二区域222内的固定页面的数量高于页面的某个阈值数量,则存在非常强的提示:诸如图2d的情况的分段情况当前存在于近存储器303中。
因此,在实施例中,在识别出这个状态时,请求者301将会开始向固定引擎305发送一个或多个重新固定请求1。发送的重新固定请求的数量可以是已超过用于识别分段状况的条件的程度的函数。重新固定请求1本质上是用于将当前固定在第二区域222中的页面移动到固定区域221的请求1。在实施例中,重新固定请求1包括当前固定在第二区域222内的特定页面的地址。在实施例中,针对重新固定请求1的响应2指示请求1是否被准许了。如果该请求已被准许,则响应2将会简单地指示该请求已被准许(这可简单地是这样的指示,即针对该页面的地址,叠置状况现在是假)。在响应2中不提供第二区域中的固定的指针或指示以反映该存储器页面现在被固定在固定区域221中。
如此,请求者301简单地利用零值替换针对该页面的表306的条目中的指针和叠置值以反映该页面现在被固定在固定区域221中。在实施例中,在实际发送响应2之前,固定引擎305使存储器控制器302以物理方式将该页面从第二区域222移动到固定区域221并且更新表308以反映固定区域221中的迁移的页面的存在。在另一实施例中,存储器控制器302包括这样的逻辑:所述逻辑用于停止针对该页面的未决存储器访问请求直至该页面已被迁移之后,或者用于停止该页面的迁移直至针对该页面的所有未决请求已被服务。
在请求者301开始重新固定的替代方案中,固定引擎305可识别图2d的分段状态并且开始固定在第二区域222中的页面至固定区域221的迁移。这里,固定引擎305可保持计数器,所述计数器跟踪多少个页面当前被固定在固定区域221中以及多少个页面当前被固定在第二区域222中。当当前固定在固定区域221中的页面的数量下降至低于比固定区域221中的地址槽的总数低的某个阈值并且当前固定在第二区域222中的页面的数量超过某个阈值时,固定引擎305可联系请求者以获取它们各自的当前固定在第二区域222中的页面的地址。
作为响应,请求者返回它们的固定在第二区域222中的页面的相应指针值,并且固定引擎305其后开始这些页面中的一些或全部页面的从第二区域222到固定区域221的迁移。在成功迁移之后,向请求者发送迁移的通知:所述通知可简单地标识迁移的页面的地址并且它的叠置状态现在是假。响应于这种通知,请求者将会从它的表306删除针对该页面的指针值和针对该页面的叠置真值。
虽然上述实施例已关注通过使请求者跟踪页面被固定在第二区域222中的哪些地方来使表308的大小保持节约的实现方式,但在其它实施例中,表308的大小的节约可能不是问题,并且对于固定在固定区域221和第二区域222中的页面,所有固定地址映射信息被同样保存在表308中。
在这个实现方式中,请求者301不需要包括针对固定在第二区域222中的页面的指针。另外,固定引擎305不仅能够识别分段状况,还能够通过将页面完全透明地迁移至请求者301(也就是说,请求者不知道页面正被迁移)来解决分段状况。在这个方案中,请求者301既不需要包括针对其任何固定页面的指针信息,也不需要包括针对其任何固定页面的叠置信息,并且可仅跟踪它已针对一个或多个页面发送的每个固定请求是否已被准许。
另一方面,固定引擎305的功能跨请求者而分布。这里,每个请求者维护针对其各自页面的表308的映射信息。如果请求者试图固定超过它的分配的固定区域空间的存储器页面,则它向其它请求者发送用于使用它们的分配的固定区域空间的请求。具有可用的分配的固定区域空间的请求者可准许该请求者的请求,并且(通过提供空间的地址)将其固定区域空间借给该请求者。如果未准许这种固定区域空间,则该请求者能够请求存储器控制器在第二区域中固定该页面。通过为该请求者提供该请求者随后在访问该存储器页面时使用的该存储器页面的指针,存储器控制器可肯定地做出响应。当任何请求者在第二区域中具有固定的页面和在固定区域中具有可用的分配的槽时,它能够检测分段的提示。响应于该提示,请求者能够请求存储器控制器重新固定它自己的页面。另外,请求者可定期地在它们自身之间通信以密切注意固定在固定区域中的页面的数量和固定在第二区域中的页面的数量,并且响应于识别出分段状况的组而触发重新固定例如作为坐标组响应。
返回到请求者301保持用于固定在第二区域222中的页面的指针的方案的讨论,一旦请求者301已确定页面不再需要被固定,请求者301可向固定引擎305发送针对该页面的解除固定请求。如果该页面当前被固定在固定区域221中,则解除固定请求仅需要识别该页面的地址和解除固定的操作码。如果该页面当前被固定在第二区域222中,则前往固定引擎的该请求还应该包括针对第二区域222中的该页面的指针。在任一情况下,固定引擎305将会使固定的页面被从其在近存储器303中的当前固定地址槽驱逐。在该页面被从固定区域221驱逐的情况下,固定引擎305更新表308以消除用于该页面的映射条目。在该页面被从第二区域222内的地址槽驱逐的情况下,存储器控制器302可另外执行任务以使该槽被再次用于它的第二目的(例如,作为存储器侧高速缓存)。
虽然以上讨论为了说明容易已主要地参照一个请求者301,但要适当指出的是:多个请求者能够根据上述处理器彼此同时地操作。也就是说,固定引擎305能够同时地支持多个请求者。
需要注意的是,如上所述,请求者能够被利用软件(例如,应用、操作系统(OS)实例、虚拟机监视器、固件)、硬件(例如,对存储器进行特定调用的布置在半导体芯片上的逻辑电路,诸如图形处理器单元(GPU)、I/O控制集线器等)或二者的组合实现。同样地,固定引擎和/或存储器控制器能够被利用逻辑电路(例如,专用逻辑电路和/或可编程逻辑电路(诸如,可编程逻辑器件(PLD)或现场可编程门阵列(FPGA))实现,并且甚至可以将各种功能实现为在存储器控制器内(例如,由嵌入式控制器)执行的嵌入程序代码(例如,实现为BIOS固件或其它固件)。
图4示出由如上所述的固定引擎执行的方法。如图4中所看到的,所述方法包括:接收用于在多级系统存储器的第一级中固定存储器页面的请求,第一级高于多级系统存储器的第二级401。所述方法还包括:确定第一级的第一区域是否装满固定的存储器页面,其中第一区域被分配用于存储器页面的固定402。所述方法还包括:如果第一区域未装满固定的存储器页面,则利用第一响应对所述请求做出响应,第一响应指示存储器页面被固定在第一区域中,或者如果第一区域装满固定的存储器页面,则利用第二响应对所述请求做出响应,第二响应指示存储器页面被固定在多级系统存储器的第一级的第二区域中,其中第二区域被用于除存储器页面的固定之外的功能403。
图5示出示例性计算系统500的描绘,示例性计算系统500诸如个人计算系统(例如,桌上型或膝上型)或者移动或手持式计算系统(诸如,平板装置或智能电话)或者更大的计算系统(诸如,服务器计算系统)。如图5中所看到的,基本计算系统可包括中央处理单元501(中央处理单元501可包括例如布置在应用处理器或多核处理器上的多个通用处理核和主存储器控制器)、系统存储器502、显示器503(例如,触摸屏、平板)、局部有线点对点链路(例如,USB)接口04、各种网络I/O功能505(诸如,以太网接口和/或蜂窝调制解调器子系统)、无线局域网(例如,WiFi)接口506、无线点对点链路(例如,蓝牙)接口507和全球定位系统接口508、各种传感器509_1至509_N(例如,一个或多个陀螺仪、加速度计、磁强计、温度传感器、压力传感器、湿度传感器等)、照相机510、电池511、功率管理控制单元512、扬声器和麦克风513和音频编码器/解码器514。
应用处理器或多核处理器550可包括它的CPU 501内的一个或多个通用处理核515、一个或多个图形处理单元516、存储器管理功能517(例如,存储器控制器)和I/O控制功能518。通用处理核515通常执行计算系统的操作系统和应用软件。图形处理单元516通常执行图形密集功能以便例如产生在显示器503上呈现的图形信息。存储器控制功能517与系统存储器502对接。系统存储器502可以是多级系统存储器,诸如以上详细地讨论的多级系统存储器。存储器控制器可包括如上所述的固定引擎。在操作期间,通常在较深的非易失性(例如,盘)存储装置520和系统存储器502之间传送数据和/或指令。功率管理控制单元512通常控制系统500的功耗。
触摸屏显示器503、通信接口504-507、GPS接口508、传感器509、照相机510和扬声器/麦克风编码解码器513、514中的每个全部能够被视为相对于总体计算系统的各种形式的I/O(输入和/或输出),所述总体计算系统在合适的情况下也包括集成的外围装置(例如,照相机510)。根据实现方式,这些I/O部件中的各种部件可被集成在应用处理器/多核处理器550上,或者可定位于管芯之外或位于应用处理器/多核处理器550的封装之外。
本发明的实施例可包括如上所述的各种过程。所述过程可被实现在机器可执行指令中。所述指令能够被用于使通用或专用处理器执行某些过程。替代地,这些过程可由包含用于执行所述过程的硬连接逻辑的特定硬件部件执行,或由已编程计算机部件和定制硬件部件的任何组合执行。
本发明的元件还可被提供作为用于存储机器可执行指令的机器可读介质。机器可读介质可包括但不限于软盘、光盘、CD-ROM和磁光盘、闪存、ROM、RAM、EPROM、EEPROM、磁卡或光学卡、传播介质或适合存储电子指令的其它类型的介质/机器可读介质。例如,本发明可被下载作为计算机程序,所述计算机程序可作为实现在载波或其它传播介质中的数据信号经通信链路(例如,调制解调器或网络连接)被从远程计算机(例如,服务器)传送给请求的计算机(例如,客户机)。
在前面的说明书中,已参照其特定示例性实施例描述本发明。然而,将会清楚的是,可在不脱离如所附权利要求中所阐述的本发明的更广泛的精神和范围的情况下对其做出各种修改和改变。因此,要在说明性而非限制性意义上来考虑本说明书和附图。
Claims (22)
1.一种用于在多级系统存储器中固定存储器页面的设备,包括:
存储器控制器,用于与多级系统存储器对接,所述存储器控制器包括固定引擎,所述固定引擎用于将存储器页面固定在所述多级系统存储器的第一级中,第一级处于比所述多级系统存储器的第二级高的级,其中所述存储器控制器用于以高速缓存行粒度写入所述多级系统存储器的所述第一和第二级和从所述多级系统存储器的所述第一和第二级读出,其中所述第一级可划分为分配用于固定存储器页面的第一区域和分配用于高速缓存以及比分配给所述第二级的系统存储器地址空间更高优先级的系统存储器地址空间的区域中的至少一个的第二区域,并且其中,如果用于所述存储器页面的所述第一区域中存在空间,则所述固定引擎用于将所述存储器页面固定在所述第一区域中,或者可替代地,用于将所述存储器页面固定在所述第二区域中。
2.如权利要求1所述的设备,其中所述固定引擎被耦合到映射表,所述映射表用于保持固定的页面的系统存储器地址到所述固定的页面被固定在的所述第一区域的地址的映射。
3.如权利要求1所述的设备,其中所述固定引擎发送针对来自请求者的用于固定存储器页面的请求的响应,所述响应包括所述存储器页面是被固定在所述第一区域中还是被固定在所述第二区域中的指示。
4.如权利要求3所述的设备,其中如果所述存储器页面被固定在所述第二区域中,则所述响应包括针对所述存储器页面的指针。
5.如权利要求1所述的设备,其中所述固定引擎从请求者接收用于将固定在所述第二区域中的存储器页面从所述第二区域重新固定到所述第一区域的请求。
6.如权利要求5所述的设备,其中所述请求者包括表,所述表用于识别固定在所述第一区域中的所述请求者的那些存储器页面和固定在所述第二区域中的所述请求者的那些存储器页面。
7.如权利要求6所述的设备,其中所述请求者识别何时所述第一区域具有可利用固定在所述第二区域中的存储器页面填充的空缺。
8.如权利要求1所述的设备,其中所述存储器控制器将固定在所述第二区域中的存储器页面迁移到所述第一区域中的空缺。
9.如权利要求8所述的设备,其中所述固定引擎基于对所述第一区域中的空缺和所述第二区域中的固定页面的理解开始固定在所述第二区域中的存储器页面至所述第一区域中的空缺的迁移。
10.一种用于在多级系统存储器中固定存储器页面的方法,包括:
接收用于在多级系统存储器的第一级中固定存储器页面的请求,第一级高于所述多级系统存储器的第二级;
确定所述第一级的第一区域是否装满固定的存储器页面,所述第一区域被分配用于存储器页面的固定;
如果所述第一区域未装满固定的存储器页面,则利用第一响应对所述请求做出响应,第一响应指示存储器页面被固定在第一区域中,或者如果所述第一区域装满固定的存储器页面,则利用第二响应对所述请求做出响应,第二响应指示存储器页面被固定在所述多级系统存储器的所述第一级的第二区域中,所述第二区域还被用于除存储器页面的固定之外的功能,以及所述第二区域包括高速缓存和比所述第二级更高优先级的系统存储器地址空间中的至少一个;以及
以高速缓存行粒度写入所述多级系统存储器的所述第一和第二级和从所述多级系统存储器的所述第一和第二级读出。
11.如权利要求10所述的方法,其中所述方法还包括在所述第二响应中提供针对所述存储器页面的指针。
12.如权利要求11所述的方法,还包括发送所述请求并且接收第二响应的请求者执行下面的操作:
利用针对所述存储器页面的条目更新表,所述条目包括所述指针和所述存储器页面被保持在第二区域中的指示。
13.如权利要求10所述的方法,还包括:将固定的存储器页面从所述第二区域迁移到所述第一区域中的空缺。
14.一种计算系统,包括:
多级系统存储器,所述多级系统存储器包括第一级,第一级处于比所述系统存储器的第二级高的级;和
存储器控制器,用于与所述多级系统存储器对接,所述存储器控制器包括固定引擎,所述固定引擎用于将存储器页面固定在所述多级系统存储器的所述第一级中,所述第一级被分割成固定区域和高速缓存和/或较高优先级系统存储器区域,如果所述固定区域装满固定的存储器页面,则所述固定引擎用于将存储器页面固定在所述高速缓存和/或较高优先级系统存储器区域中,其中所述存储器控制器用于以高速缓存行粒度写入所述多级系统存储器的所述第一和第二级和从所述多级系统存储器的所述第一和第二级读出。
15.如权利要求14所述的计算系统,其中所述固定引擎还将固定的存储器页面从所述高速缓存和/或较高优先级系统存储器区域迁移到所述固定区域中的空缺中。
16.如权利要求14所述的计算系统,还包括:请求者,所述请求者具有用于跟踪所述请求者的固定的存储器页面的表,所述表用于指示所述请求者的哪些固定的存储器页面被固定在所述高速缓存和/或较高优先级系统存储器区域中。
17.如权利要求16所述的计算系统,其中所述请求者识别何时在所述固定区域中存在空缺并且存在固定在所述高速缓存和/或较高优先级系统存储器区域中的页面。
18.如权利要求17所述的计算系统,其中所述请求者响应于所述识别而请求固定在所述高速缓存和/或较高优先级系统存储器区域中的一个或多个页面的重新固定。
19.如权利要求17所述的计算系统,包括:
至少一个处理器,以可通信方式耦合到存储器控制器;和
网络接口,以可通信方式耦合到所述至少一个处理器。
20.如权利要求19所述的计算系统,包括:
显示器,以可通信方式耦合到所述至少一个处理器。
21.一个或多个机器可读存储介质,所述一个或多个机器可读存储介质包括存储在其上的多个指令,响应于执行所述多个指令,所述多个指令导致发送器计算节点执行如权利要求10-13中任一项所述的方法。
22.一种计算系统,包括用于执行如权利要求10-13中任一项所述的方法的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/865,571 US10185501B2 (en) | 2015-09-25 | 2015-09-25 | Method and apparatus for pinning memory pages in a multi-level system memory |
US14/865571 | 2015-09-25 | ||
PCT/US2016/044782 WO2017052776A1 (en) | 2015-09-25 | 2016-07-29 | Method and apparatus for pinning memory pages in a multi-level system memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108139983A CN108139983A (zh) | 2018-06-08 |
CN108139983B true CN108139983B (zh) | 2022-11-01 |
Family
ID=58387151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680055589.2A Active CN108139983B (zh) | 2015-09-25 | 2016-07-29 | 用于在多级系统存储器中固定存储器页面的方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10185501B2 (zh) |
EP (1) | EP3353664B1 (zh) |
CN (1) | CN108139983B (zh) |
WO (1) | WO2017052776A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10901894B2 (en) | 2017-03-10 | 2021-01-26 | Oracle International Corporation | Allocating and accessing memory pages with near and far memory blocks from heterogeneous memories |
US10929291B2 (en) * | 2017-12-06 | 2021-02-23 | MemRay Corporation | Memory controlling device and computing device including the same |
US11150840B2 (en) | 2020-02-09 | 2021-10-19 | International Business Machines Corporation | Pinning selected volumes within a heterogeneous cache |
CN114201444B (zh) * | 2021-12-06 | 2023-11-14 | 海飞科(南京)信息技术有限公司 | 用于存储管理的方法、介质、程序产品、系统和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699424A (zh) * | 2015-03-26 | 2015-06-10 | 华中科技大学 | 一种基于页面热度的异构内存管理方法 |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5912839A (en) | 1998-06-23 | 1999-06-15 | Energy Conversion Devices, Inc. | Universal memory element and method of programming same |
US6922765B2 (en) | 2001-06-21 | 2005-07-26 | International Business Machines Corporation | Method of allocating physical memory space having pinned and non-pinned regions |
US6961840B2 (en) * | 2002-09-30 | 2005-11-01 | International Business Machines Corporation | Method and apparatus for managing a dynamic alias page table |
US7475174B2 (en) | 2004-03-17 | 2009-01-06 | Super Talent Electronics, Inc. | Flash / phase-change memory in multi-ring topology using serial-link packet interface |
US7590918B2 (en) | 2004-09-10 | 2009-09-15 | Ovonyx, Inc. | Using a phase change memory as a high volume memory |
US20070005922A1 (en) | 2005-06-30 | 2007-01-04 | Swaminathan Muthukumar P | Fully buffered DIMM variable read latency |
JP2007193441A (ja) | 2006-01-17 | 2007-08-02 | Toshiba Corp | 不揮発性キャッシュメモリを用いる記憶装置とその制御方法 |
US7600078B1 (en) | 2006-03-29 | 2009-10-06 | Intel Corporation | Speculatively performing read transactions |
US7913147B2 (en) | 2006-05-08 | 2011-03-22 | Intel Corporation | Method and apparatus for scrubbing memory |
US7756053B2 (en) | 2006-06-30 | 2010-07-13 | Intel Corporation | Memory agent with error hardware |
US7493439B2 (en) | 2006-08-01 | 2009-02-17 | International Business Machines Corporation | Systems and methods for providing performance monitoring in a memory system |
US8051253B2 (en) | 2006-09-28 | 2011-11-01 | Virident Systems, Inc. | Systems and apparatus with programmable memory control for heterogeneous main memory |
WO2008131058A2 (en) | 2007-04-17 | 2008-10-30 | Rambus Inc. | Hybrid volatile and non-volatile memory device |
US20080270811A1 (en) | 2007-04-26 | 2008-10-30 | Super Talent Electronics Inc. | Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory |
WO2008139441A2 (en) | 2007-05-12 | 2008-11-20 | Anobit Technologies Ltd. | Memory device with internal signal processing unit |
US20090313416A1 (en) | 2008-06-16 | 2009-12-17 | George Wayne Nation | Computer main memory incorporating volatile and non-volatile memory |
US8331857B2 (en) | 2009-05-13 | 2012-12-11 | Micron Technology, Inc. | Wireless interface to program phase-change memories |
US8250282B2 (en) | 2009-05-14 | 2012-08-21 | Micron Technology, Inc. | PCM memories for storage bus interfaces |
US8180981B2 (en) * | 2009-05-15 | 2012-05-15 | Oracle America, Inc. | Cache coherent support for flash in a memory hierarchy |
US8504759B2 (en) | 2009-05-26 | 2013-08-06 | Micron Technology, Inc. | Method and devices for controlling power loss |
US20100306453A1 (en) | 2009-06-02 | 2010-12-02 | Edward Doller | Method for operating a portion of an executable program in an executable non-volatile memory |
US9123409B2 (en) | 2009-06-11 | 2015-09-01 | Micron Technology, Inc. | Memory device for a hierarchical memory architecture |
US8914568B2 (en) | 2009-12-23 | 2014-12-16 | Intel Corporation | Hybrid memory architectures |
US8612809B2 (en) | 2009-12-31 | 2013-12-17 | Intel Corporation | Systems, methods, and apparatuses for stacked memory |
US20110208900A1 (en) | 2010-02-23 | 2011-08-25 | Ocz Technology Group, Inc. | Methods and systems utilizing nonvolatile memory in a computer system main memory |
KR20110131781A (ko) | 2010-05-31 | 2011-12-07 | 삼성전자주식회사 | 위치정보의 정확도 확인방법 및 장치 |
US8649212B2 (en) | 2010-09-24 | 2014-02-11 | Intel Corporation | Method, apparatus and system to determine access information for a phase change memory |
US8838935B2 (en) | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
US8612676B2 (en) | 2010-12-22 | 2013-12-17 | Intel Corporation | Two-level system main memory |
US8825945B2 (en) * | 2011-01-31 | 2014-09-02 | Marvell World Trade Ltd. | Mapping different portions of data to different pages of multi-level non-volatile memory |
US8462577B2 (en) | 2011-03-18 | 2013-06-11 | Intel Corporation | Single transistor driver for address lines in a phase change memory and switch (PCMS) array |
US8462537B2 (en) | 2011-03-21 | 2013-06-11 | Intel Corporation | Method and apparatus to reset a phase change memory and switch (PCMS) memory cell |
US8607089B2 (en) | 2011-05-19 | 2013-12-10 | Intel Corporation | Interface for storage device access over memory bus |
US8605531B2 (en) | 2011-06-20 | 2013-12-10 | Intel Corporation | Fast verify for phase change memory with switch |
US8463948B1 (en) | 2011-07-01 | 2013-06-11 | Intel Corporation | Method, apparatus and system for determining an identifier of a volume of memory |
US9164923B2 (en) * | 2011-07-01 | 2015-10-20 | Intel Corporation | Dynamic pinning of virtual pages shared between different type processors of a heterogeneous computing platform |
WO2013048485A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Autonomous initialization of non-volatile random access memory in a computer system |
US9317429B2 (en) | 2011-09-30 | 2016-04-19 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy over common memory channels |
EP3712774B1 (en) | 2011-09-30 | 2023-02-15 | Tahoe Research, Ltd. | Apparatus and method for implementing a multi-level memory hierarchy |
US20130275661A1 (en) | 2011-09-30 | 2013-10-17 | Vincent J. Zimmer | Platform storage hierarchy with non-volatile random access memory with configurable partitions |
EP2761471B1 (en) | 2011-09-30 | 2017-10-25 | Intel Corporation | Statistical wear leveling for non-volatile system memory |
EP2761464B1 (en) | 2011-09-30 | 2018-10-24 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes |
WO2013048493A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Memory channel that supports near memory and far memory access |
CN103946816B (zh) | 2011-09-30 | 2018-06-26 | 英特尔公司 | 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) |
EP2761467B1 (en) | 2011-09-30 | 2019-10-23 | Intel Corporation | Generation of far memory access signals based on usage statistic tracking |
EP2761476B1 (en) | 2011-09-30 | 2017-10-25 | Intel Corporation | Apparatus, method and system that stores bios in non-volatile random access memory |
EP2771795B1 (en) * | 2011-10-26 | 2016-06-01 | Hewlett-Packard Development Company, L.P. | Segmented caches |
WO2013095404A1 (en) * | 2011-12-20 | 2013-06-27 | Intel Corporation | Dynamic partial power down of memory-side cache in a 2-level memory hierarchy |
WO2013100909A1 (en) | 2011-12-27 | 2013-07-04 | Intel Corporation | Adaptive configuration of non-volatile memory |
US9052990B2 (en) * | 2012-11-20 | 2015-06-09 | International Business Machines Corporation | Techniques for managing pinned memory |
US9176911B2 (en) | 2012-12-11 | 2015-11-03 | Intel Corporation | Explicit flow control for implicit memory registration |
US9535860B2 (en) | 2013-01-17 | 2017-01-03 | Intel Corporation | Arbitrating memory accesses via a shared memory fabric |
WO2014143036A1 (en) | 2013-03-15 | 2014-09-18 | Intel Corporation | Method for pinning data in large cache in multi-level memory system |
US9734079B2 (en) * | 2013-06-28 | 2017-08-15 | Intel Corporation | Hybrid exclusive multi-level memory architecture with memory management |
US9542336B2 (en) | 2013-12-18 | 2017-01-10 | Intel Corporation | Isochronous agent data pinning in a multi-level memory system |
CN104239225B (zh) * | 2014-09-04 | 2018-02-06 | 浪潮(北京)电子信息产业有限公司 | 一种管理异构混合内存的方法及装置 |
-
2015
- 2015-09-25 US US14/865,571 patent/US10185501B2/en active Active
-
2016
- 2016-07-29 CN CN201680055589.2A patent/CN108139983B/zh active Active
- 2016-07-29 EP EP16849177.7A patent/EP3353664B1/en active Active
- 2016-07-29 WO PCT/US2016/044782 patent/WO2017052776A1/en unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104699424A (zh) * | 2015-03-26 | 2015-06-10 | 华中科技大学 | 一种基于页面热度的异构内存管理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2017052776A1 (en) | 2017-03-30 |
US10185501B2 (en) | 2019-01-22 |
US20170090780A1 (en) | 2017-03-30 |
EP3353664A1 (en) | 2018-08-01 |
EP3353664B1 (en) | 2023-06-07 |
CN108139983A (zh) | 2018-06-08 |
EP3353664A4 (en) | 2019-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860244B2 (en) | Method and apparatus for multi-level memory early page demotion | |
CN107408079B (zh) | 带有一致单元的多级别系统存储器的存储器控制器 | |
US11494311B2 (en) | Page table hooks to memory types | |
US11379381B2 (en) | Main memory device having heterogeneous memories, computer system including the same, and data management method thereof | |
US11741011B2 (en) | Memory card with volatile and non volatile memory space having multiple usage model configurations | |
CN114402282B (zh) | 存取存储的元数据以识别存储数据的存储器装置 | |
US20170091099A1 (en) | Memory controller for multi-level system memory having sectored cache | |
US20170177482A1 (en) | Computing system having multi-level system memory capable of operating in a single level system memory mode | |
CN108139983B (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 | |
US20180095884A1 (en) | Mass storage cache in non volatile level of multi-level system memory | |
CN112445423A (zh) | 存储器系统、计算机系统及其数据管理方法 | |
CN110597742A (zh) | 用于具有持久系统存储器的计算机系统的改进存储模型 | |
US11182289B1 (en) | Memory system and operating method thereof | |
EP3506112A1 (en) | Multi-level system memory configurations to operate higher priority users out of a faster memory level | |
US20170153994A1 (en) | Mass storage region with ram-disk access and dma access | |
US20220229552A1 (en) | Computer system including main memory device having heterogeneous memories, and data management method thereof | |
US12014080B2 (en) | Memory system using host memory buffer and operation method thereof | |
US11314650B2 (en) | Operating method of memory system that checks stored data that is reused and generating a flag/bit signal | |
US20240193085A1 (en) | Data Storage Device with Memory Services based on Storage Capacity |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |