CN104115129B - 用于从处理器到存储器子系统智能刷新数据的系统和方法 - Google Patents
用于从处理器到存储器子系统智能刷新数据的系统和方法 Download PDFInfo
- Publication number
- CN104115129B CN104115129B CN201180076401.XA CN201180076401A CN104115129B CN 104115129 B CN104115129 B CN 104115129B CN 201180076401 A CN201180076401 A CN 201180076401A CN 104115129 B CN104115129 B CN 104115129B
- Authority
- CN
- China
- Prior art keywords
- memory
- pcm
- data
- prompting
- cache
- 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
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C14/00—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
- G11C14/0054—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell
- G11C14/009—Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down in which the volatile element is a SRAM cell and the nonvolatile element is a resistive RAM element, i.e. programmable resistors, e.g. formed of phase change or chalcogenide material
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/16—Protection against loss of memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/02—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using elements whose operation depends upon chemical change
-
- 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/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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C13/00—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
- G11C13/0002—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
- G11C13/0004—Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
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
描述了用于从处理器高速缓存智能刷新数据的系统和方法。例如,根据本发明一个实施例的系统包括:处理器,具有从其刷新数据的高速缓存,数据与具体系统地址范围关联;以及PCM存储器控制器,用于管理对存储在PCM存储器装置中对应于具体系统地址范围的数据的存取;处理器确定对于规定的系统地址范围是否启用存储器刷新提示,其中如果对于规定的系统地址范围启用存储器刷新提示,则处理器向PCM存储器装置的PCM存储器控制器发送存储器刷新提示,并且其中PCM存储器控制器使用存储器刷新提示确定是否将刷新的数据保存到PCM存储器装置。
Description
技术领域
此发明一般涉及计算机系统的领域。更具体地说,本发明涉及用于实现多级存储器层级的设备和方法。
背景技术
A.当前存储器和存储装置配置
今天计算机创新的限制因素之一是存储器和存储装置技术。在常规计算机系统中,系统存储器(也称为主存储器、主要存储器、可执行存储器)通常由动态随机存取存储器(DRAM)实现。基于DRAM的存储器甚至当没有存储器读或者写发生时也消耗功率,这是因为它必须不断给内部电容器再充电。基于DRAM的存储器是易失性的,这意味着,一旦移除电源,存储在DRAM存储器中的数据就丢失。常规计算机系统还依赖于多级高速缓存以改进性能。高速缓存是位于处理器与系统存储器之间的高速存储器,以比可能从系统存储器服务于存储器存取请求更快地服务于存储器存取请求。此类高速缓存通常用静态随机存取存储器(SRAM)实现。高速缓存管理协议可用于确保最频繁存取的数据和指令被存储在其中一级高速缓存内,由此减少存储器存取事务数量并改进性能。
相对于大容量存储装置(也称为辅助存储装置或盘存储装置),常规大容量存储装置器件通常包含磁介质(例如硬盘驱动器)、光介质(例如压缩盘(CD)驱动器、数字多功能盘(DVD)等)、全息介质和/或大容量存储装置闪速存储器(例如固态驱动器(SSD)、可拆卸闪速驱动器等)。一般而言,这些存储装置器件被视为输入/输出(I/O)装置,这是因为它们由处理器通过实现各种I/O协议的各种I/O适配器来存取。这些I/O适配器和I/O协议消耗相当大量的功率,并且可对平台的管芯面积和形状因子具有重大影响。当未连接到永久电源时具有有限电池寿命的便携式装置或移动装置(例如膝上型计算机、笔记本、平板计算机、个人数字助理(PDA)、便携式媒体播放器、便携式游戏装置、数字摄像机、移动电话、智能电话、功能电话等)可包含可拆卸大容量存储装置器件(例如嵌入式多媒体卡(eMMC)、安全数字(SD)卡),它们通常经由低功率互连和I/O控制器耦合到处理器以便满足活动和空闲功率预算。
相对于固件存储器(诸如引导存储器(也称为BIOS闪存))、常规计算机系统通常使用闪速存储器装置来存储经常被读但很少(或者从不)被写的持久系统信息。例如,由处理器执行的、在引导过程期间初始化关键系统组件的初始指令(基本输入和输出系统(BIOS)映像)通常存储在闪速存储器装置中。当前在市场上可买到的闪速存储器装置一般具有有限速度(例如50 MHz)。由于用于读协议的开销,此速度进一步降低(例如2.5 MHz)。为了加速BIOS执行速度,常规处理器一般在引导过程的预先可扩展固件接口(PEI)阶段期间高速缓存BIOS代码的一部分。处理器高速缓存的大小对在PEI阶段中使用的BIOS代码(也称为“PEI BIOS代码”)的大小施加了约束。
B.相变存储器(PCM)以及相关技术
相变存储器(PCM)(有时也称为相变随机存取存储器(PRAM或PCRAM)、PCME、奥式统一存储器或硫属化物RAM(C-RAM))是采用硫属化物玻璃的独特行为的非易失性计算机存储器类型。由于由电流经过产生的热量,硫属化物玻璃可在两种状态:晶体与非晶体之间切换。PCM的当前版本可获得两种截然不同的附加状态。
PCM提供比闪存更高的性能,这是因为PCM的存储元件可更快地开关,可进行写(将各个位改变成1或0)而无需首先擦除单元的整个块,并且来自写的降级更慢(PCM装置可存活近似1亿个写循环;PCM降级由于编程期间的热膨胀、金属(和其它材料)迁移以及其它机制引起)。
附图说明
以下描述和附图用于例证本发明的实施例。在附图中:
图1例证了根据本发明实施例的高速缓存和系统存储器布置;
图2例证了在本发明实施例中采用的存储器和存储装置层级;
图3例证了可在其上实现本发明实施例的计算机系统;
图4A例证了根据本发明实施例包含PCM的第一系统架构;
图4B例证了根据本发明实施例包含PCM的第二系统架构;
图4C例证了根据本发明实施例包含PCM的第三系统架构;
图4D例证了根据本发明实施例包含PCM的第四系统架构;
图4E例证了根据本发明实施例包含PCM的第五系统架构;
图4F例证了根据本发明实施例包含PCM的第六系统架构;
图4G例证了根据本发明实施例包含PCM的第七系统架构;
图4H例证了根据本发明实施例包含PCM的第八系统架构;
图4I例证了根据本发明实施例包含PCM的第九系统架构;
图4J例证了根据本发明实施例包含PCM的第十系统架构;
图4K例证了根据本发明实施例包含PCM的第十一系统架构;
图4L例证了根据本发明实施例包含PCM的第十二系统架构;及
图4M例证了根据本发明实施例包含PCM的第十三系统架构;
图5A例证了系统架构的一个实施例,其包含易失性近存储器和非易失性远存储器;
图5B例证了存储器侧高速缓存(MSC)的一个实施例;
图5C例证了存储器侧高速缓存(MSC)的另一实施例,其包含集成标签高速缓存和ECC生成/检查逻辑;
图5D例证了示范标签高速缓存和ECC生成器/检查单元的一个实施例;
图5E例证了包含PCM控制器的PCM DIMM的一个实施例;
图6A例证了根据本发明一个实施例专用于某些规定系统物理地址(SPA)范围的MCE控制器和高速缓存;
图6B例证了根据本发明一个实施例在系统存储器映射、近存储器地址映射与PCM地址映射之间的示范性映射;
图6C例证了根据本发明一个实施例在系统物理地址(SPA)与PCM物理装置地址(PDA)或近存储器地址(NMA)之间的示范性映射;
图6D例证了根据本发明一个实施例在系统物理地址(SPA)空间与存储器通道地址(MCA)空间内的存储页面之间的交织;
图7例证了可实现本发明实施例的示范性多处理器架构。
图8例证了根据本发明一些实施例的系统存储器映射。
图9例证了含有刷新提示数据的存储器范围寄存器(MRR)的一个实施例。
图10例证了PCMS存储器控制器的一个实施例。
图11例证了用于向PCMS装置智能刷新数据的方法的一个实施例。
图12例证了根据本发明一个实施例的方法。
具体实施方式
在以下描述中,阐述了许多具体细节,诸如逻辑实现、操作码、规定操作数的构件、资源划分/共享/复制实现、系统组件的类型和相互关系以及逻辑划分/集成选择,以便提供对本发明的更透彻理解。然而,本领域技术人员将认识到,没有此类特定细节也可实践本发明。在其它实例中,控制结构、门级电路以及全软件指令序列未详细示出,以免模糊了本发明。本领域普通技术人员用所包含的描述将能够实现适当功能性,而无需过多实验。
在说明书中提到“一个实施例”、“实施例”、“示例实施例”等指示所描述的实施例可包含具体特征、结构或特性,但可能不一定每一个实施例都包含该具体特征、结构或特性。此外,此类短语不一定是指同一实施例。进一步说,当具体特征、结构或特性结合一实施例描述时,认为结合其它实施例实现此类特征、结构或特性在本领域技术人员的知识范围内,而不管是否明确描述了。
在以下说明书和权利要求书中,可以使用术语“耦合”和“连接”连同它们的派生词。应该理解,这些术语不打算作为彼此的同义词。“耦合”用于指示可以直接彼此物理接触或电气接触或者可以不直接彼此物理接触或电气接触的两个或更多元件彼此协同操作或交互作用。“连接”用于指示在彼此耦合的两个或更多元件之间建立通信。
带括号的文本以及具有虚线边框(例如大破折号、小破折号、点划线、点等)的块有时在本文用于例证向本发明实施例添加附加特征的可选操作/组件。然而,此类记号不应该被视为意味着这些是仅有的选项或仅有的可选操作/组件,和/或不应该被视为意味着具有实线边框的块在本发明的某些实施例中不是可选的。
介绍
存储器容量和性能要求随着处理器核以及新用途模型(诸如虚拟化)的数量增加而继续增加。此外,存储器功率和成本已经分别变成电子系统的总体功率和成本的重要组成部分。
本发明的一些实施例通过在存储器技术之间智能细分性能要求和容量要求来解决以上挑战。此方法的焦点在于通过如下方式来提供性能:利用相对小量的相对较高速的存储器(诸如DRAM),同时使用显著更便宜并且更密集的非易失性随机存取存储器(NVRAM)来实现大多数系统存储器。下面描述的本发明实施例定义了对于使用NVRAM能够实现层级存储器子系统组织的平台配置。在存储器层级中使用NVRAM也能够实现新用途,诸如扩大的引导空间以及大容量存储装置实现,如下面所详细描述的。
图1例证了根据本发明实施例的高速缓存和系统存储器布置。特别是,图1示出了存储器层级,其包含一组内部处理器高速缓存120、充当远存储器高速缓存的“近存储器”121以及“远存储器”122,“近存储器”121可包含一个或多个内部高速缓存106和外部高速缓存107-109。在本发明的一些实施例中可用于“远存储器”的一种具体类型存储器是非易失性随机存取存储器(“NVRAM”)。因而,下面提供了NVRAM的概览,随后是远存储器和近存储器的概览。
A.非易失性随机存取存储器(“NVRAM”)
存在许多可能的技术选择用于NVRAM,包含PCM、相变存储器和开关(PCMS)(后者是前者的更具体实现)、字节可寻址持久存储器(BPRAM)、通用存储器、Ge2Sb2Te5、可编程金属化单元(PMC)、电阻性存储器(RRAM)、RESET(非晶体)单元、SET(晶体)单元、PCME、奥氏存储器、铁电存储器(也称为聚合物存储器和聚(N-乙烯基咔唑))、铁磁存储器(也称为自旋电子器件、SPRAM(自旋传递扭矩RAM)、STRAM(自旋遂穿RAM)、磁阻存储器、磁存储器、磁随机存取存储器(MRAM))以及半导体-氧化物-氮化物-氧化物-半导体(SONOS,也称为介电存储器)。
供在此申请中描述的存储器层级之用,NVRAM具有如下特性:
(1)即便移除电源它也保持其内容,这类似于在固态盘(SSD)中使用的闪速存储器,并且不同于易失性的SRAM和DRAM;
(2)当空闲时比易失性存储器(诸如SRAM和DRAM)更低的功耗;
(3)类似于SRAM和DRAM的随机存取(也称为可随机寻址);
(4)以比在SSD中含有的闪存更低级的粒度(例如字节级)可重写以及可擦除(SSD中含有的闪存每次仅能被重写并擦除“块”——对于NOR闪存而言大小最低限度是64K字节,并且对于NAND闪存而言大小最低限度是16K字节);
(5)可用作系统存储器并且分配了全部系统存储器地址空间或部分系统存储器地址空间;
(6)能够使用事务协议(支持事务标识符(ID)来区分不同的事务的协议,使得那些事务可无序地完成)通过总线耦合到处理器并允许在小到足以支持作为系统存储器的NVRAM的操作(例如高速缓存线大小、诸如64字节或128字节)的粒度级存取。例如,总线可以是存储器总线(例如DDR总线、诸如DDR3、DDR4等),通过所述总线运行事务协议,这与正常使用的非事务协议形成对比。作为另一示例,总线可以是通过其正常运行事务协议(本机事务协议)的总线,诸如PCI快速(PCIE)总线、桌面管理接口(DMI)总线或利用事务协议和足够的小事务有效载荷大小(例如高速缓存线大小、诸如64字节或128字节)的任何其它类型总线;以及
(7)如下一项或多项:
a)比非易失性存储器/存储装置技术(诸如闪存)更快的写速度;
b)非常高的读速度(比闪存更快,并且接近或相当于DRAM读速度);
c)直接可写(而不是在写数据之前需要擦除(用1盖写)(比如在SSD中使用的闪速存储器));和/或
d)在故障之前较高(例如2或3)数量级的写持续时间(比在SSD中使用的引导ROM和闪存大)。
如上面所提到的,与闪速存储器形成对照(闪速存储器每次必须被重写并且擦除整个“块”),在任何给定实现中存取NVRAM所用的粒度级可取决于具体存储器控制器和具体存储器总线或耦合到NVRAM的其它类型总线。例如,在NVRAM被用作系统存储器的一些实现中,尽管固有能力是以字节粒度来存取,仍可以以高速缓存线(例如64字节或128字节的高速缓存线)的粒度来存取NVRAM,这是因为高速缓存线是存储器子系统存取存储器的所用的级。从而,当NVRAM被部署在存储器子系统内时,可以以与在同一存储器子系统中使用的DRAM(例如“近存储器”)相同的粒度级来存取NVRAM。即便如此,由存储器控制器和存储器总线或其它类型总线对NVRAM的存取的粒度级也小于由闪存使用的块大小和I/O子系统的控制器和总线的存取大小的粒度级。
NVRAM也可结合耗损均匀化算法来考虑如下事实:在远存储器级的存储装置单元在若干次写存取之后开始耗尽,特别是在诸如在系统存储器实现中可出现大量写的情况下。由于用这种方式高循环计数块最有可能耗尽,因此耗损均匀化通过交换高循环计数块与低循环计数块的地址而在远存储单元上扩散写。要指出,大部分地址交换通常对应用程序而言是透明的,这是因为它由硬件、低级软件(例如低级驱动程序或操作系统)或二者的组合来处置。
B. 远存储器
本发明一些实施例的远存储器122用NVRAM实现,但不一定局限于任何具体存储器技术。远存储器122在其特性和/或其在存储器/存储装置层级中的应用方面与其它指令和数据存储器/存储装置技术有区别。例如,远存储器122不同于:
1)静态随机存取存储器(SRAM),其可用于分别专用于处理器核101-104中每一个处理器核的0级和1级内部处理器高速缓存101a-b、102a-b、103a-b、103a-b和104a-b,以及由处理器核共享的较低级高速缓存(LLC)105;
2)动态随机存取存储器(DRAM),其配置为在处理器100内部的高速缓存106(例如在与处理器106相同的裸晶上)和/或配置为在处理器外部的一个或多个高速缓存107-109(例如在与处理器100相同的封装或不同的封装中);以及
3)闪速存储器/磁盘/光盘,其应用为大容量存储装置(未示出);及
4)存储器(诸如闪速存储器或其它只读存储器(ROM)),其应用为固件存储器(其可以指引导ROM、BIOS闪存和/或TPM闪存)(未示出)。
远存储器122可被用作可直接由处理器100寻址并且能够充分跟上处理器100的指令和数据存储装置,其与应用为大容量存储装置的闪存/磁盘/光盘形成对照。此外,如上面所讨论和下面详细描述的,远存储器122可被放在存储器总线上,并且可与存储器控制器直接通信,所述存储器控制器又与处理器100直接通信。
远存储器122可与其它指令和数据存储技术(例如DRAM)组合以形成混合存储器(也称为协同定位的PCM和DRAM;第一级存储器和第二级存储器;FLAM(闪存和DRM))。要指出,以上技术中的至少一些技术(包含PCM/PCMS)可用于大容量存储装置,来代替系统存储器或作为系统存储器的附加,并且当用这种方式应用时不必是可由处理器随机存取的、字节寻址的或直接寻址的。
为了便于说明,本申请其余部分中的大部分将引用“NVRAM”,或者更特别是“PCM”或“PCMS”来作为用于远存储器122的技术选择。因而,术语NVRAM、PCM、PCMS和远存储器在以下讨论中可互换使用。然而,应该意识到,如上面所讨论的,对于远存储器也可利用不同技术。还有,那个NVRAM不限于用作远存储器。
C. 近存储器
“近存储器”121是配置在远存储器122前面的中级存储器,其相对于远存储器具有更低读/写存取等待时间和/或更对称的读/写存取等待时间(即具有大致相当于写时间的读时间)。在一些实施例中,近存储器121具有比远存储器122显著低的写等待时间但具有类似(例如略低或相等)的读等待时间;例如,近存储器121可以是易失性存储器(诸如易失性随机存取存储器(VRAM)),并且可包括DRAM或其它基于电容器的高速存储器。然而,要指出,本发明的基本原理不限于这些特定存储器类型。附加地,近存储器121可具有相对低的密度,和/或可能比远存储器122制造起来更昂贵。
在一个实施例中,近存储器121配置在远存储器122与内部处理器高速缓存120之间。在下面描述的一些实施例中,近存储器121配置为一个或多个存储器侧高速缓存(MSC)107-109以掩蔽远存储器的性能和/或使用限制,其包括例如读/写等待时间限制和存储器降级限制。在这些实现中,MSC 107-109和远存储器122的组合以近似、相当于或超过仅使用DRAM作为系统存储器的系统的性能级操作。如下面所详细讨论的,虽然在图1中显示为“高速缓存”,但近存储器121可包含如下模式,其中它除了扮演高速缓存角色之外还扮演其它角色,或者替代扮演高速缓存角色而扮演其它角色。
近存储器121可位于处理器裸晶上(作为一个或多个高速缓存106)和/或位于处理器裸晶外部(作为高速缓存107-109)(例如在位于CPU封装上的单独裸晶上、位于CPU封装外部(具有到CPU封装的高带宽链路),例如在存储器双列直插式存储器模块(DIMM)、转接卡/小背板或计算机主板上)。近存储器121可使用单个或多个高带宽链路(诸如DDR或其它事务的高带宽链路(如下面所详细描述的))与处理器100通信耦合。
示范性系统存储器分配方案
图1例证了在本发明实施例中如何相对于系统物理地址(SPA)空间116-119配置各级高速缓存101-109。如所提到的,这个实施例包括具有一个或多个核101-104的处理器100,其中每个核都具有它自己的专用上级高速缓存(L0) 101a-104a和中级高速缓存(MLC)(L1) 高速缓存101b-104b。处理器100还包含共享的LLC 105。这些各级高速缓存的操作众所周知,并且在此将不详细描述。
图1中例证的高速缓存107-109可专用于具体系统存储器地址范围或不连续地址范围集合。例如,高速缓存107专用于充当用于系统存储器地址范围# 1 116的MSC,并且高速缓存108和109专用于充当用于系统存储器地址范围# 2 117和# 3 118的非交叠部分的MSC。后一实现可用于如下系统:由处理器100使用的SPA空间被交织到由高速缓存107-109(例如当配置为MSC时)使用的地址空间中。在一些实施例中,这个后一地址空间被称为存储器通道地址(MCA)空间。在一个实施例中,内部高速缓存101a-106对整个SPA空间执行高速缓存操作。
本文所使用的系统存储器是对在处理器100上执行的软件而言可见和/或可直接由其寻址的存储器;而高速缓存存储器101a-109可在如下意义上对软件而言透明地操作:它们未形成系统地址空间的直接可寻址部分,但这些核也可支持指令执行以允许软件向一些高速缓存或所有高速缓存提供某种控制(配置、策略、提示等)。系统存储器细分成区域116-119可作为系统配置过程的一部分(例如由系统设计者)手动执行,和/或可由软件自动执行。
在一个实施例中,使用远存储器(例如PCM)并且在一些实施例中使用配置为系统存储器的近存储器来实现系统存储器区域116-119。系统存储器地址范围# 4表示使用较高速存储器(诸如DRAM)实现的地址范围,较高速存储器可以是配置在系统存储器模式(与高速缓存模式相对)的近存储器。
图2例证了根据本发明实施例用于近存储器144和NVRAM的存储器/存储装置层级140和不同的可配置操作模式。存储器/存储装置层级140具有多级,其包含:(1)高速缓存级150,其可包含处理器高速缓存150A(例如图1中的高速缓存101A-105)以及可选地包含近存储器来作为用于远存储器的高速缓存150B(在本文所讨论的某些操作模式中),(2)系统存储器级151,其当近存储器存在时可包含远存储器151B (例如NVRAM、诸如PCM)(或者当近存储器不存在时可只是包含NVRAM作为系统存储器174)以及可选地包含作为系统存储器151A操作的近存储器(在本文所描述的某些操作模式中),(3)大容量存储装置级152,其可包含闪存/磁/光大容量存储装置152B和/或NVRAM大容量存储装置152A(例如NVRAM 142的一部分);以及(4)固件存储器级153,其可包含BIOS闪存170和/或BIOS NVRAM 172以及可选地包含可信平台模块(TPM) NVRAM 173。
如所指示的,近存储器144可实现成在各种不同模式操作,其包含:第一模式,在此模式它作为用于远存储器的高速缓存(作为用于FM的高速缓存150B的近存储器)操作;第二模式,在此模式它作为系统存储器151A操作,并占据SPA空间的一部分(有时称为近存储器“直接存取”模式);以及一个或多个附加操作模式,诸如暂存器存储器192或作为写缓冲器193。在本发明的一些实施例中,近存储器是可划分的,其中每个分区可同时在所支持模式中的不同模式操作;并且不同实施例可支持通过硬件(例如熔丝、管脚)、固件和/或软件(例如通过MSC控制器124内的一组可编程范围寄存器,在其内例如可存储不同二进制代码以标识每个模式和分区)配置分区(例如大小、模式)。
图2中的系统地址空间A 190用于例证当近存储器被配置为用于远存储器的MSC150B时的操作。在此配置中,系统地址空间A 190表示整体系统地址空间(并且系统地址空间B 191不存在)。备选地,系统地址空间B 191用于示出当给全部或部分近存储器指配一部分系统地址空间时的实现。在此实施例中,系统地址空间B 191表示系统地址空间中指配给近存储器151 A的范围,并且系统地址空间A 190表示系统地址空间中指配给NVRAM 174的范围。
此外,当充当用于远存储器的高速缓存150B时,近存储器144可在MSC控制器124的控制下在各种子模式操作。在这些模式中的每个模式中,近存储器地址空间(NMA)在如下意义上对软件而言是透明的:近存储器未形成系统地址空间的直接可寻址部分。这些模式包括但不限于如下项:
(1)写回高速缓存模式:在此模式,充当FM高速缓存150B的全部或部分近存储器被用作用于NVRAM远存储器(FM)151B的高速缓存。虽然在写回模式,但每一个写操作最初都指向作为用于FM 的高速缓存150B的近存储器(假定在高速缓存中存在所述写所指向的高速缓存线)。仅当作为用于FM的高速缓存150B的近存储器内的高速缓存线要由另一高速缓存线替换时才执行对应写操作以更新NVRAM FM 151B(与下面描述的每个写操作被立即传播到NVRAM FM 151B的写直达模式形成对照)。
(2)近存储器旁路模式:在此模式,所有读和写都旁路充当FM高速缓存150B的NM ,并且直接去到NVRAM FM 151B。例如当应用不是高速缓存友好的时,或者需要以高速缓存线的粒度持久交付数据时,可使用此类模式。在一个实施例中,由处理器高速缓存150A和充当FM高速缓存150B的NM执行的高速缓存彼此独立操作。因而,未在处理器高速缓存150A中高速缓存(并且在一些情况下其可能未准许在处理器高速缓存150A中高速缓存)的数据可在充当FM高速缓存150B的NM 中高速缓存并且反之亦然。从而,在处理器高速缓存中可被指定为“不可高速缓存”的某些数据可在充当FM高速缓存150B的NM内高速缓存。
(3)近存储器读-高速缓存写旁路模式:这是上面模式的变型,其中允许从NVRAMFM 151B读高速缓存持久数据(即,持久数据在作为用于远存储器的高速缓存的近存储器150B中高速缓存以便进行只读操作)。当大部分持久数据是“只读”的并且应用用途是高速缓存友好的时,这是有用的。
(4)近存储器读-高速缓存写直达模式:这是近存储器读-高速缓存写旁路模式的变型,其中除了读高速缓存之外,还高速缓存写命中。对作为用于FM的高速缓存150B的近存储器的每一次写引起对FM 151B的写。从而,由于高速缓存的写直达性质,仍保证了高速缓存线持久性。
当在近存储器直接存取模式中起作用时,作为系统存储器151A的近存储器的全部或部分对软件而言直接可见,并且形成SPA空间的一部分。此类存储器可完全在软件控制下。此类方案可创建用于软件的非均匀存储器地址(NUMA)存储区,其中它从近存储器144得到相对于NVRAM系统存储器174更高的性能。作为示例而非限制,此类使用可用于需要对某些数据结构进行非常快速存取的某些高性能计算(HPC)和图形应用。
在备选实施例中,近存储器直接存取模式通过对近存储器中的某些高速缓存线(即具有也同时存储在NVRAM 142中的数据的高速缓存线)“固定(pinning)”来实现。此类固定可有效地在较大、多路且组关联的高速缓存中进行。
图2还例证NVRAM 142的一部分可被用作固件存储器。例如,BIOS NVRAM 172部分可用于存储BIOS映像(代替将BIOS信息存储在BIOS闪存170中,或者作为对将BIOS信息存储在BIOS闪存170中的附加)。BIOS NVRAM部分172可以是SPA空间的一部分,并且可由在处理器核101-104上执行的软件直接寻址,而BIOS闪存170可通过I/O子系统115来寻址。作为另一示例,可信平台模块(TPM) NVRAM 173部分可用于保护敏感系统信息(例如加密密钥)。
从而,如所指示的,NVRAM 142可实现成在各种不同模式操作,其包含作为远存储器151B(例如当近存储器144存在/操作时,而无论近存储器是否通过MSC控制件124充当用于FM的高速缓存(在一个或多个高速缓存101A-105之后直接存取并且没有MSC控制件124));仅NVRAM系统存储器174(不作为远存储器,这是因为没有近存储器存在/操作,并且没有MSC控制件124而存取);NVRAM大容量存储装置152A;BIOS NVRAM 172;以及TPM NVRAM173。虽然不同实施例可按不同方式规定NVRAM模式,但图3描述了解码表333的使用。
图3例证了可在其上实现本发明实施例的示范性计算机系统300。计算机系统300包含处理器310和存储器/存储装置子系统380,该存储器/存储装置子系统380具有用于系统存储器、大容量存储装置以及可选地固件存储器的NVRAM 142。在一个实施例中,NVRAM142包括由计算机系统300用于存储数据、指令、状态和其它持久和非持久信息的整体系统存储器和存储装置层级。如之前所讨论的,NVRAM 142可配置成实现典型存储器和系统存储器中的存储装置层级、大容量存储装置和固件存储器、TPM存储器等的角色。在图3的实施例中,NVRAM 142被划分成FM 151B、NVRAM大容量存储装置152A、BIOS NVRAM 173和TPM NVRAM173。也考虑了具有不同角色的存储装置层级,并且NVRAM 142的应用不限于上面提到的角色。
作为示例,描述了作为用于FM的高速缓存150B的近存储器处于写回高速缓存时的操作。在一个实施例中,虽然作为用于FM的高速缓存150B的近存储器处于上面提到的写回高速缓存模式,但读操作将首先到达MSC控制器124,其将执行查找以确定在充当用于FM的高速缓存150B的近存储器中是否存在所请求的数据(例如利用标签高速缓存342)。如果存在,则它会通过I/O子系统115将数据返回到发出请求的CPU、核101-104或I/O装置。如果数据不存在,则MSC控制器124会将请求与系统存储器地址一起发送到NVRAM控制器332。NVRAM控制器332将使用解码表333来将系统存储器地址变换成NVRAM物理装置地址(PDA),并将读操作指向远存储器151B的这个区域。在一个实施例中,解码表333包含间接寻址表(AIT)组件,NVRAM控制器332使用所述AIT组件在系统存储器地址与NVRAM PDA之间进行变换。在一个实施例中,AIT被更新为耗损均匀化算法的实现成分布存储器存取操作并由此降低NVRAMFM 151B上耗损的部分。备选地,AIT可以是存储在NVRAM控制器332内的单独表。
在从NVRAM FM 151B接收到所请求的数据时,NVRAM控制器332会将所请求的数据返回到MSC控制器124,MSC控制器124会将所述数据存储在充当FM高速缓存150B的MSC近存储器中,并且还通过I/O子系统115将所述数据发送到发出请求的处理器核101-104或者I/O装置。对于此数据的随后请求可从充当FM高速缓存150B的近存储器直接服务,直到它由某一其它NVRAM FM数据替换。
如所提到的,在一个实施例中,存储器写操作也首先去到MSC控制器124,MSC控制器124将它写入充当FM高速缓存150B的MSC近存储器中。在写回高速缓存模式中,当接收到写操作时,可不将数据直接发送到NVRAM FM 151B。例如,仅当充当FM高速缓存150B的MSC近存储器中存储数据的位置必须针对不同系统存储器地址再用于存储数据时,才可将数据发送到NVRAM FM 151B。当这个发生时,MSC控制器124注意到数据当前不在NVRAM FM 151B中,并且从而将从充当FM高速缓存150B的近存储器中检索它,并将它发送到NVRAM控制器332。NVRAM控制器332查找用于系统存储器地址的PDA,并且然后将数据写到NVRAM FM 151B。
在图3中,显示NVRAM控制器332使用三条单独的线路连接到FM 151B、NVRAM大容量存储装置152A和BIOS NVRAM 172。然而,这不一定意味着,存在三条单独的物理总线或通信信道将NVRAM控制器332连接到NVRAM 142的这些部分。而是,在一些实施例中,公共存储器总线或其它类型总线(诸如下面相对于图4A-M 描述的总线)用于以通信方式将NVRAM控制器332耦合到FM 151B、NVRAM大容量存储装置152A和BIOS NVRAM 172。例如,在一个实施例中,图3中的三条线路表示如下总线(诸如存储器总线(例如DDR3、DDR4等总线)),通过该总线NVRAM控制器332实现了与NVRAM 142通信的事务协议。NVRAM控制器332也可通过支持本机事务协议的总线(诸如PCI快速总线、桌面管理接口(DMI)总线或利用事务协议和足够的小事务有效载荷大小(例如高速缓存线大小、诸如64字节或128字节)的任何其它类型总线)与NVRAM 142通信。
在一个实施例中,计算机系统300包含执行用于处理器310的中央存储器存取控制的集成存储器控制器(IMC)331,其耦合到:1)存储器侧高速缓存(MSC)控制器124,以控制对充当远存储器高速缓存150B的近存储器(NM)的存取;以及2)NVRAM控制器332,以控制对NVRAM 142的存取。尽管在图3中例证为单独单元,但MSC控制器124和NVRAM控制器332在逻辑上可形成IMC 331的一部分。
在例证的实施例中,MSC控制器124包含一组范围寄存器336,范围寄存器336规定供充当远存储器高速缓存 150B的NM使用的操作模式(例如上面描述的写回高速缓存模式、近存储器旁路模式等)。在所例证的实施例中,DRAM 144被用作用于充当用于远存储器的高速缓存150B的NM 的存储器技术。响应于存储器存取请求,MSC控制器124可(根据在范围寄存器336中规定的操作模式)确定是否可从充当用于FM的高速缓存150B的NM服务于该请求,或者是否必须向NVRAM控制器332发送该请求,控制器332然后可从NVRAM 142的远存储器(FM)部分151B服务于该请求。
在用PCMS实现NVRAM 142的实施例中,NVRAM控制器332是用与PCMS技术一致的协议来执行存取的PCMS控制器。如之前所讨论的,固有地,能够以字节粒度存取PCMS存储器。尽管如此,NVRAM控制器332可以以较低级粒度(诸如高速缓存线(例如64位或128位的高速缓存线))或与存储器子系统一致的任何其它级粒度来存取基于PCMS的远存储器151B。本发明的基本原理不限于用于存取基于PCMS的远存储器151B的任何具体级粒度。然而,一般而言,当基于PCMS的远存储器151B用于形成系统地址空间的一部分时,该粒度级将高于在传统上用于其它非易失性存储装置技术(诸如闪存)的粒度级,该技术仅能在“块”级(对于NOR闪存的大小最低限度是64K字节,并且对于NAND闪存最低限度是16K字节)执行重写和擦除操作。
在所例证的实施例中,NVRAM控制器332能够读取配置数据以从解码表333中确立之前描述的用于NVRAM 142的模式、大小等,或者备选地,可依赖于从IMC 331和I/O子系统315传递的解码结果。例如,在制造时间或者在现场,计算机系统300可对解码表333编程以将NVRAM 142的不同区域标记为系统存储器、经由SATA接口暴露的大容量存储装置、经由USB仅块传输(BOT)接口暴露的大容量存储装置、支持TPM存储的加密存储装置,除此之外还有其它。对NVRAM装置142的不同分区操纵存取所用的手段是利用解码逻辑的。例如,在一个实施例中,在解码表333中定义每个分区的地址范围。在一个实施例中,当IMC 331接收到存取请求时,该请求的目标地址被解码以揭示该请求是指向存储器、NVRAM大容量存储装置还是I/O。如果它是存储器请求,则IMC 331和/或MSC控制器124根据目标地址进一步确定该请求是指向作为用于FM的高速缓存150B的NM 还是指向FM 151B。对于FM 151B存取,该请求被转发到NVRAM控制器332。如果此请求被指向I/O(例如非存储装置I/O装置和存储装置I/O装置),则IMC 331将该请求传递到I/O子系统115。I/O子系统115进一步对该地址进行解码以确定该地址是针对NVRAM大容量存储装置152A、BIOS NVRAM 172还是其它非存储装置I/O装置和存储装置I/O装置。如果此地址针对NVRAM大容量存储装置152A或BIOS NVRAM 172,则I/O子系统115将该请求转发到NVRAM控制器332。如果此地址针对TMP NVRAM 173,则I/O子系统115将该请求传递到TPM 334以执行安全存取。
在一个实施例中,转发到NVRAM控制器332的每个请求兼有指示存取类型的属性(也称为“事务类型”)。在一个实施例中,NVRAM控制器332可模拟所请求存取类型的存取协议,使得平台的其余部分保持不了解由NVRAM 142在存储器和存储装置层级中扮演的多个角色。在备选实施例中,NVRAM控制器332可执行对NVRAM 142的存储器存取,而不管它是哪种事务类型。要理解,解码路径可不同于上面所描述的。例如,IMC 331可对存取请求的目标地址进行解码,并确定它是否指向NVRAM 142。如果它指向NVRAM 142,则IMC 331根据解码表333生成属性。基于该属性,IMC 331然后将该请求转发到适当下游逻辑(例如NVRAM控制器332和I/O子系统315)以执行所请求的数据存取。在又一实施例中,如果对应属性未从上游逻辑(例如IMC 331和I/O子系统315)传递,则NVRAM控制器332可对目标地址进行解码。也可实现其它解码路径。
存在诸如本文描述的新存储器架构提供了丰富的新可能性。尽管下面以更大长度进一步讨论了,但这些可能性中的一些紧接在下面很快强调了。
根据一种可能实现,NVRAM 142充当系统存储器中用于传统DRAM技术的总替换或补充。在一个实施例中,NVRAM 142表示引入第二级系统存储器(例如该系统存储器可被视为具有包括近存储器作为高速缓存150B (DRAM装置340的一部分)的第一级系统存储器和包括远存储器(FM) 151B (NVRAM 142的一部分)的第二级系统存储器)。
根据一些实施例,NVRAM 142充当闪存/磁/光大容量存储装置152B的总替换或补充。如本文之前所描述的,在一些实施例中,即使NVRAM 152A有字节级可寻址的能力,但NVRAM控制器332仍可根据实现按多字节块(例如64K字节、128K字节等)存取NVRAM大容量存储装置152A。由NVRAM控制器332从NVRAM大容量存储装置152A存取数据的特定方式可对由处理器310执行的软件而言是透明的。例如,即使NVRAM大容量存储装置152A可以不同于闪存/磁/光大容量存储装置152A的方式来存取,操作系统仍可将NVRAM大容量存储装置152A看作标准大容量存储装置器件(例如串行ATA硬驱动器或其它标准形式的大容量存储装置器件)。
在NVRAM大容量存储装置152A充当闪存/磁/光大容量存储装置152B的总替换的实施例中,对于块可寻址存储装置存取没有必要使用存储装置驱动器。从存储装置存取中移除存储装置驱动器开销可增大存取速度并节省功率。在期望NVRAM大容量存储装置152A对于OS和/或应用而言看起来是块可存取且与闪存/磁/光大容量存储装置152B不可区分的备选实施例中,模拟的存储装置驱动器可用于将块可存取接口(例如通用串行总线(USB)仅大块传递(BOT),1.0;串行先进技术附件(SATA),3.0等)暴露于用于存取NVRAM大容量存储装置152A的软件。
在一个实施例中,NVRAM 142充当用于固件存储器(诸如BIOS闪存362和TPM闪存372)(图3中用点线例证以指示它们是可选的)的总替换或补充。例如,NVRAM 142可包含BIOS NVRAM 172部分以补充或替换BIOS闪存362,并且可包含TPM NVRAM 173部分以补充或替换TPM闪存372。固件存储器还可存储由TPM 334用于保护敏感系统信息(例如加密密钥)的系统持久状态。在一个实施例中,对于固件存储器使用NVRAM 142移除了对于如下的需要:第三方闪存部分存储对系统操作关键的代码和数据。
然后继续对图3的系统的讨论,在一些实施例中,计算机系统100的架构可包含多个处理器,不过图3中为了简化例证了单个处理器310。处理器310可以是任何类型数据处理器,包含通用或专用中央处理单元(CPU)、专用集成电路(ASIC)或数字信号处理器(DSP)。例如,处理器310可以是通用处理器,诸如Core™ i3、i5、i7、2 Duo和Quad、Xeon™或Itanium™处理器,它们全都可从加利福尼亚圣克拉拉的英特尔公司得到。备选地,处理器310可以来自另一公司,诸如加利福尼亚桑尼韦尔的ARM股份有限公司、加利福尼亚桑尼韦尔的MIPS技术公司等。处理器310可以是专用处理器,诸如例如网络处理器或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等等。处理器310可实现在包含在一个或多个封装内的一个或多个芯片上。处理器310可以是一个或多个衬底的一部分,和/或可使用若干工艺技术(诸如例如BiCMOS、CMOS或NMOS)中的任一技术实现在一个或多个衬底上。在图3中示出的示例中,处理器310具有芯片上系统(SOC)配置。
在一个实施例中,处理器310包含集成图形单元311,其包含用于执行图形命令(诸如3D或2D图形命令)的逻辑。虽然本发明的实施例不限于任何具体集成图形单元311,但在一个实施例中,图形单元311能够执行工业标准图形命令,诸如由开放式GL和/或直接X应用编程接口(API)(例如开放式GL 4.1和直接X11)规定的命令。
处理器310还可包含一个或多个核101-104,不过再次为了清楚目的在图3例证了单个核。在许多实施例中,核101-104包含内部功能块,诸如一个或多个执行单元、退役单元、一组通用寄存器和专用寄存器等。如果核是多线程或超线程的,则每个硬件线程也可被视为“逻辑”核。核101-104在架构和/或指令集方面可以是同质的或异质的。例如,其中一些核可以是有序的,而其它核是无序的。作为另一示例,所述核中的两个或更多核可以能够执行相同指令集,而其它核可以能够仅执行那个指令集的子集或不同指令集。
处理器310还可包含一个或多个高速缓存,诸如可实现为SRAM和/或DRAM的高速缓存313。在未示出的许多实施例中,实现不同于高速缓存313的附加高速缓存,使得在核101-104中的执行单元与存储器装置150B和151B之间存在多级高速缓存。例如,该组共享高速缓存单元可包含上级高速缓存(诸如级1(L1)高速缓存)、中级高速缓存(诸如级2(L2)、级3(L3)、级4(L4))或其它级高速缓存(LLC)和/或它们的不同组合。在不同实施例中,高速缓存313可按不同方式分派,并且在不同实施例中可具有许多不同大小之一。例如,高速缓存313可以是8兆字节(MB)高速缓存、16MB高速缓存等。附加地,在不同实施例中,高速缓存可以是直接映射高速缓存、完全关联高速缓存、多路组关联高速缓存或具有另一类型映射的高速缓存。在包含多个核的其它实施例中,高速缓存313可包含在所有核之间共享的一个大的部分,或者可被分成多个单独的功能片段(例如每个核一个片段)。高速缓存313也可包含在所有核之间共享的一个部分以及是每个核的单独功能片段的多个其它部分。
处理器310还可包含归属代理314,归属代理314包含协调和操作核101-104的那些组件。归属代理单元314例如可包含功率控制单元(PCU)和显示单元。PCU可以是或者可包含调节核101-104和集成图像单元311的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
如所提到的,在一些实施例中,处理器310包含集成存储器控制器(IMC) 331、近存储器高速缓存(MSC)控制器以及NVRAM控制器332,所有这些全都可以在与处理器310相同的芯片上或者在连接到处理器310的单独芯片和/或封装上。DRAM装置144可以在与IMC 331和MSC控制器124相同的芯片或不同的芯片上;从而,一个芯片可具有处理器310和DRAM装置144;一个芯片可具有处理器310而另一个芯片可具有DRAM装置144(并且这些芯片可在相同或不同的封装中);一个芯片可具有核101-104而另一个芯片可具有IMC 331、MSC控制器124和DRAM 144(这些芯片可在相同或不同的封装中);一个芯片可具有核101-104而另一个芯片可具有IMC 331和MSC控制器124以及另一个芯片可具有DRAM 144(这些芯片可在相同或不同的封装中);等等。
在一些实施例中,处理器310包含耦合到IMC 331的I/O子系统115。I/O子系统115使得在处理器310与如下串行或并行I/O装置之间能够进行通信:一个或多个网络336(诸如局域网、广域网或因特网)、存储装置I/O装置(诸如闪存/磁/光大容量存储装置152B、BIOS闪存362、TPM闪存372)以及一个或多个非存储装置I/O装置337(诸如显示器、键盘、扬声器等等)。I/O子系统115可包含平台控制器中心(PCH) (未示出),该PCH进一步包含多个I/O适配器338以及其它I/O电路以提供对存储装置和非存储装置I/O装置和网络的存取。为了完成此方面,I/O子系统115可对于所利用的每个I/O具有至少一个集成I/O适配器338。I/O子系统115可在与处理器310相同的芯片上,或在连接到处理器310的单独芯片和/或封装上。
I/O适配器338将在处理器310内利用的主机通信协议变换成与具体I/O装置兼容的协议。对于闪存/磁/光大容量存储装置152B,I/O适配器338可变换的其中一些协议包含:外围组件互连(PCI)-快速(PCI-E),3.0;USB,3.0;SATA,3.0;小型计算机系统接口(SCSI),超-640;以及电气与电子工程师协会(IEEE) 1394“防火墙”,除此之外还有其它。对于BIOS闪存362,I/O适配器338可变换的其中一些协议包含串行外围接口(SPI)、微线,除此之外还有其它。附加地,可能存在一个或多个无线协议I/O适配器。无线协议的示例用在个域网中(除此之外还有其它),诸如IEEE 802.15和蓝牙4.0;用在无线局域网中,诸如基于IEEE802.11的无线协议;以及用在蜂窝协议中。
在一些实施例中,I/O子系统115耦合到TPM控制件334以控制对系统持久状态的存取,诸如安全数据、加密密钥、平台配置信息等等。在一个实施例中,这些系统持久状态被存储在TPM NVRAM 173中,并经由NVRAM控制器332来存取。
在一个实施例中,TPM 334是具有密码功能性的安全微控制器。TPM 334具有若干信任相关能力;例如,用于确保受TPM保护的数据仅对于同一TPM可用的SEAL能力。TPM 334可使用其加密能力保护数据和密钥(例如秘密)。在一个实施例中,TPM 334具有独特且秘密的RSA密钥,其允许它认证硬件装置和平台。例如,TPM 334可验证寻求对存储在计算机系统300中的数据进行存取的系统是预期系统。TPM 334也能够报告平台(例如计算机系统300)的完整性。这允许外部源(例如网络上的服务器)确定平台的可信度,但不阻止用户存取该平台。
在一些实施例中,I/O子系统315还包含管理引擎(ME) 335,其是允许系统管理员监视、维护、更新、升级和修理计算机系统300的微处理器。在一个实施例中,系统管理员可通过如下方式来远程配置计算机系统300:通过ME 335经由网络336编辑解码表333的内容。
为了便于说明,本申请的剩余部分有时将NVRAM 142称为PCMS装置。PCMS装置包含非易失性、具有低功耗并且在位级可修改的多层(垂直堆叠)的PCM单元阵列。因而,术语NVRAM装置和PCMS装置在以下讨论中可互换使用。然而,应该认识到,如上面所讨论的,对于NVRAM 142也可利用除PCMS之外的不同技术。
应该理解,计算机系统可将NVRAM 142用于系统存储器、大容量存储装置、固件存储器和/或其它存储器和存储装置目的(即便那个计算机系统的处理器并不具有处理器310的所有上述组件,或具有比处理器310多的组件)。
在图3中示出的具体实施例中,MSC控制器124和NVRAM控制器332位于与处理器310相同的裸晶或封装(称为CPU封装)上。在其它实施例中,MSC控制器124和/或NVRAM控制器332可位于裸晶外或CPU封装外,通过总线(诸如存储器总线(比如DDR总线(例如DDR3、DDR4等))、PCI快速总线、桌面管理接口(DMI)总线或任何其它类型总线)耦合到处理器310或CPU封装。
示范性PCM总线和封装配置
图4A-M例证了各种不同部署,其中处理器、近存储器和远存储器以不同方式来配置和封装。具体地说,在图4A-M中例证的一系列平台存储器配置使新非易失性系统存储器能够使用,诸如PCM技术,或更具体地,PCMS技术。
虽然在图4A-M 中的多幅图上使用其中一些相同数字标记,但这不一定意味着由那些数字标记标识的结构总是一样的。例如,虽然在多幅图中使用相同数字来标识集成存储器控制器(IMC)331和CPU 401,但这些组件在不同图中可以不同方式实现。这些差异中的一些未被强调,原因在于它们对于理解本发明的基本原理而言不是相关的。
虽然下面描述了多种不同系统平台配置方法,但这些方法落入两个广义类别:分离架构和统一架构。简言之,在分离架构方案中,存储器侧高速缓存(MSC)控制器(例如位于处理器裸晶中或CPU封装中的单独裸晶上)拦截所有系统存储器请求。存在两个单独接口,这两个单独接口从离开CPU封装的那个控制器“流向下游”以耦合到近存储器和远存储器。每个接口对于特定类型存储器都是特制的,并且每个存储器可在性能和容量方面独立缩放。
在统一架构方案中,单个存储器接口离开处理器裸晶或CPU封装,并且所有存储器请求都被发送到这个接口。MSC控制器连同近存储器子系统和远存储器子系统被合并在此单个接口上。此存储器接口必须被特制成满足处理器的存储器性能要,并且必须支持事务无序协议,这至少因为PCMS装置可能未有序处理读请求。根据上面的通用类别,可采用如下特定平台配置。
下面描述的实施例包含各种类型的总线/通道。术语“总线”和“通道”在本文同义地使用。每个DIMM插槽的存储器通道数量将取决于在计算机系统中使用的具体CPU封装(其中一些CPU封装例如支持每个插槽3个存储器通道)。
附加地,在下面描述的使用DRAM的实施例中,实际上,可使用任何类型DRAM存储器通道,作为示例而非限制,其包括DDR通道(例如DDR3、DDR4、DDR5等)。从而,虽然DDR因为其在工业上的广泛认可、作为结果的价格点等是有利的,但本发明的基本原理不限于任何具体类型DRAM或易失性存储器。
图4A例证了分离架构的一个实施例,其在CPU封装401中(在处理器裸晶上或者在单独裸晶上)包含作为充当用于FM的高速缓存(即MSC)的近存储器操作的一个或多个DRAM装置403-406以及一个或多个NVRAM装置(诸如驻留在DIMM 450-451上充当远存储器的PCM存储器)。CPU封装401上的高带宽链路407将单个或多个DRAM装置403-406互连到处理器310,处理器310托管集成存储器控制器(IMC)331和MSC控制器124。尽管在图4A和下面描述的其它附图中例证为单独单元,但在一个实施例中MSC控制器124可被集成在存储器控制器331内。
DIMM 450-451使用DDR插槽和电气连接,其用DDR地址、数据线路和控制线路以及电压来定义DDR通道440(例如由联合电子器件工程委员会(JEDEC)所定义的DDR3或DDR4标准)。DIMM 450-451上的PCM装置提供了此分离架构的远存储器容量,其中到CPU封装401的DDR通道440能够携带DDR和事务协议。相比其中CPU封装内的处理器310或其它逻辑(例如IMC 331或MSC控制器124)传送命令并接收立即响应的DDR协议,用于与PCM装置通信的事务协议允许CPU 401发布一系列事务,每个由独特事务ID标识。这些命令由在PCM DIMM中作为接收方的PCM DIMM上的PCM控制器服务,其将响应发送回CPU封装401,潜在地是无序的。CPU封装401内的处理器310或其它逻辑通过与响应一起发送的其事务ID识别每个事务响应。以上配置允许系统支持标准DDR的基于DRAM的DIMM(使用DDR电气连接上的DDR协议)和基于PCM的DIMM配置(在相同DDR电气连接上使用事务协议)。
图4B例证了使用通过DDR通道440耦合的基于DRAM的DDR DIMM 452来形成充当MSC的近存储器的分离架构。处理器310托管存储器控制器331和MSC控制器124。NVRAM装置(诸如PCM存储器装置)驻留在基于PCM的DIMM 453上,DIMM 453使用CPU封装401外的附加DDR通道442上的电气连接和DDR插槽。基于PCM的DIMM 453提供了此分离架构的远存储器容量,其中到CPU封装401的DDR通道442基于DDR电气连接并且能够携带DDR和事务协议。这允许系统用可变数量的DDR DRAM DIMM 452(例如DDR4 DIMM)和PCM DIMM 453配置以获得期望容量和/或性能点。
图4C例证了在CPU封装401上(在处理器裸晶上或者在单独裸晶上)托管充当存储器侧高速缓存(MSC)的近存储器403-406的分离架构。使用CPU封装上的高带宽链路407将单个或多个DRAM装置403-406互连到处理器310,处理器310托管存储器控制器331和MSC控制器124,如分离架构所定义的。NVRAM(诸如PCM存储器装置)驻留在PCI快速卡或转接卡455上,它们使用PCI快速电气连接以及PCI快速协议或在PCI快速总线454上的不同事务协议。PCI快速卡或转接卡455上的PCM装置提供此分离架构的远存储器容量。
图4D是使用基于DRAM的DDR DIMM 452和DDR通道440来形成充当MSC的近存储器的分离架构。处理器310托管存储器控制器331和MSC控制器124。NVRAM(诸如PCM存储器装置455)驻留在PCI快速卡或转接卡上,它们使用PCI快速电气连接以及PCI快速协议或在PCI快速链路454上的不同事务协议。PCI快速卡或转接卡455上的PCM装置提供此分离架构的远存储器容量,其中CPU封装401外的存储器通道接口为DDR DRAM DIMM 452提供多个DDR通道440。
图4E例证了在PCI快速卡或转接卡456上托管充当MSC的近存储器和远存储器NVRAM(诸如PCM)的统一架构,PCI快速卡或转接卡456使用PCI快速电气连接以及PCI快速协议或在PCI快速总线454上的不同事务协议。处理器310托管集成存储器控制器331,但在此统一架构情况下,MSC控制器124与DRAM近存储器和NVRAM远存储器一起驻留在卡或转接卡456上。
图4F例证了在使用DDR通道457的DIMM 458上托管充当MSC的近存储器和远存储器NVRAM(诸如PCM)的统一架构。此统一架构中的近存储器在每个DIMM 458上包括DRAM,其充当到那个相同DIMM 458上的PCM装置的存储器侧高速缓存,所述PCM装置形成那个具体DIMM的远存储器。MSC控制器124与近存储器和远存储器一起驻留在每个DIMM 458上。在此实施例中,在CPU封装外提供DDR总线457的多个存储器通道。此实施例的DDR总线457实现了DDR电气连接上的事务协议。
图4G例证了混合分离架构,由此,MSC控制器124驻留在处理器310上,并且近存储器接口和远存储器接口共享相同DDR总线410。此配置使用基于DRAM的DDR DIMM 411a作为充当MSC的近存储器,其中基于PCM的DIMM 411b(即远存储器)使用DDR插槽和NVRAM (诸如PCM存储器装置)驻留在DDR总线410的相同存储器通道上。此实施例的存储器通道同时携带DDR协议和事务协议以分别寻址近存储器DIMM 411a和远存储器DIMM 411b。
图4H例证了充当存储器侧高速缓存的近存储器461a以基于DRAM的DDR DIMM形式驻留在小背板或转接卡461上的统一架构。存储器侧高速缓存(MSC)控制器124位于转接卡的DDR和PCM控制器460中,其可具有在小背板/转接卡461上连接到DDR DIMM通道470并通过高性能互连462(诸如差分存储器链路)互连到CPU的两个或更多存储器通道。所关联的远存储器461b坐落在同一小背板/转接卡461上,并且由使用DDR通道470并组装有NVRAM(诸如PCM装置)的DIMM形成。
图4I例证了可被用作对在其DDR存储器子系统上通过DDR总线471连接到CPU封装401的DDR存储器子系统和DIMM 464的存储器容量扩展的统一架构。对于在此配置中基于NVM的附加容量,充当MSC的近存储器以基于DRAM的DDR DIMM 463a的形式驻留在小背板或转接卡463上。MSC控制器124位于转接卡的DDR和PCM控制器460中,其可具有在小背板/转接卡上连接到DDR DIMM通道470并通过高性能互连462(诸如差分存储器链路)互连到CPU的两个或更多存储器通道。所关联的远存储器463b坐落在同一小背板/转接卡463上,并且由使用DDR通道470并组装有NVRAM(诸如PCM装置)的DIMM 463b形成。
图4J是充当存储器侧高速缓存(MSC)的近存储器以DRAM的形式驻留在每一个DIMM465上的统一架构。DIMM 465在将CPU封装401与位于DIMM上的MSC控制器124耦合的高性能互连/通道462(诸如差分存储器链路)上。所关联的远存储器坐落在相同DIMM 465上并由NVRAM(诸如PCM装置)形成。
图4K例证了充当MSC的近存储器以DRAM的形式驻留在每一个DIMM 466上的统一架构。这些DIMM在将CPU封装401与位于DIMM上的MSC控制器124连接的高性能互连470上。所关联的远存储器坐落在相同DIMM 466上并由NVRAM(诸如PCM装置)形成。
图4L例证了在DDR总线471上使用基于DRAM的DDR DIMM 464以形成充当MSC的必要的近存储器的分离架构。处理器310托管集成存储器控制器331和存储器侧高速缓存控制器124。NVRAM(诸如PCM存储器)形成驻留在使用高性能互连468的卡或转接卡467上的远存储器,高性能互连468使用事务协议与CPU封装401通信。托管远存储器的卡或转接卡467托管能控制多个基于PCM的存储器或连接在那个转接卡上的多个基于PCM的DIMM的单个缓冲器/控制器。
图4M例证了可使用卡或转接卡469上的DRAM来形成充当MSC的必要的近存储器的统一架构。NVRAM(诸如PCM存储器装置)形成也驻留在卡或转接卡469上的远存储器,卡或转接卡469使用到CPU封装401的高性能互连468。托管远存储器的卡或转接卡469托管能控制多个基于PCM的存储器或在那个转接卡469上的多个基于PCM的DIMM的单个缓冲器/控制器,并且还集成存储器侧高速缓存控制器124。
在上面描述的其中一些实施例中,诸如在图4G中例证的实施例中,DRAM DIMM411a和基于PCM的DIMM 411b驻留在相同存储器通道上。因而,使用同一组地址/控制和数据线路将CPU连接到DRAM存储器和PCM存储器。为了减少通过CPU网格互连的数据业务量,在一个实施例中,具有基于PCM的DIMM的公共存储器信道上的DDR DIMM配置成充当存储在基于PCM的DIMM中的数据的唯一MSC。在此类配置中,存储在基于PCM的DIMM中的远存储器数据仅在相同存储器通道内的DDR DIMM近存储器中高速缓存,由此将存储器事务局限于那个具体存储器通道。
附加地,为了实现上面的实施例,系统地址空间可在逻辑上在不同存储器通道之间细分。例如,如果存在4个存储器通道,则可向每个存储器通道分配1/4的系统地址空间。如果给每个存储器通道提供一个基于PCMS的DIMM和一个DDR DIMM,则DDR DIMM可配置成充当那个1/4部分系统地址空间的MSC。
系统存储器和大容量存储装置器件的选择可取决于在其上采用本发明实施例的电子平台类型。例如,在个人计算机、平板计算机、笔记本计算机、智能电话、移动电话、功能电话、个人数字助理(PDA)、便携式媒体播放器、便携式游戏装置、游戏控制台、数字摄像机、交换机、中心、路由器、机顶盒、数字视频记录器或具有相对小的大容量存储装置要求的其它装置中,大容量存储装置可单单使用NVRAM大容量存储装置152A独自实现,或结合闪存/磁/光大容量存储装置152B使用NVRAM大容量存储装置152A来实现。在具有相对大的大容量存储装置要求的其它电子平台(例如大规模服务器)中,大容量存储装置可使用磁存储装置(例如硬驱动器)或磁存储装置、光存储装置、全息存储装置、大容量存储装置闪速存储器和NVRAM大容量存储装置152A的任何组合实现。在此类情况下,负责存储装置的系统硬件和/或软件可实现各种智能持久存储装置分配技术,以高效或者否则有用的方式将持久程序代码和数据的块在FM 151B /NVRAM存储装置152A与闪存/磁/光大容量存储装置152B之间分配。
例如,在一个实施例中,大功率服务器配置有近存储器(例如DRAM)、PCMS装置和磁大容量存储装置器件(用于大量持久存储装置)。在一个实施例中,笔记本计算机配置有近存储器和PCMS装置,其扮演远存储器和大容量存储装置器件两者的角色(即,其在逻辑上被划分成扮演如图3中所示的这些角色)。家庭或办公室台式计算机的一个实施例类似笔记本计算机而配置,但也可包含一个或多个磁存储装置器件以提供大量持久存储装置能力。
平板计算机或蜂窝电话装置的一个实施例配置有PCMS存储器,但潜在地没有近存储器并且没有附加大容量存储装置(以便节省成本/功率)。然而,平板计算机/电话可配置有可拆卸大容量存储装置器件,诸如闪存或PCMS存储棒。
各种其它类型装置可如上所述配置。例如,便携式媒体播放器和/或个人数字助理(PDA)可按类似于上面描述的平板计算机/电话的方式配置,游戏控制台可按类似于台式计算机或膝上型计算机的方式配置。可类似配置的其它装置包含数字摄像机、路由器、机顶盒、数字视频记录器、电视和汽车。
MSC架构的实施例
在本发明的一个实施例中,系统存储器中的大多数DRAM用PCM替换。如之前讨论的,PCM以相对DRAM显著低的成本提供了在系统容量上的显著改进,并且是非易失性的。然而,某些PCM特性(诸如非对称读对写性能、写循环持续时间极限以及其非易失性性质)使直接替换DRAM而不招致重大软件改变对其具有挑战性。在下面描述的本发明的实施例提供了集成PCM的软件透明方式,同时还通过软件增强能够实现较新的用途。这些实施例促进了存储器子系统架构中的成功转变,并提供了使用单个PCM池合并存储器和存储装置的方式,从而减少对于平台中单独非易失性存储装置层的需要。
在图5A中例证的具体实施例包含各具有用于生成存储器请求的内部存储器管理单元(MMU)502的一个或多个处理器核501以及用于根据规定的高速缓存管理策略来存储程序代码行和数据的一个或多个内部CPU高速缓存503。如之前所提到的,高速缓存管理策略可包括排它型高速缓存管理策略(其中存在于层级中一个具体高速缓存级中的任何线不存在于任何其它高速缓存级中)或包含型高速缓存管理策略(其中重复的高速缓存线被存储在高速缓存层级的不同级)。本领域技术人员很好理解,对于管理内部高速缓存503可采用特定的高速缓存管理策略,并且因而,在此将不详细描述了。本发明的基本原理不限于任何具体高速缓存管理策略。
图5A中还例证了归属代理505,归属代理505通过生成用于存储器请求的存储器通道地址(MCA)来提供对MSC 510的存取。归属代理505负责管理规定存储器地址空间,并解决指向那个存储器空间的存储器存取冲突。从而,如果任何核需要存取给定地址空间,则它将向那个归属代理505发送请求,该归属代理然后将向具体MMU 502发送该请求。在一个实施例中,每个MMU 502分配一个归属代理505;然而,在一些实施例中,单个归属代理505可服务于多于一个的存储器管理单元502。
如图5A中所例证的,MSC 510配置在基于PCM的远存储器519的前面。MSC 510管理对近存储器518的存取,并在适当时(例如在从近存储器518不能服务于这些请求时)向远存储器控制器521转发存储器存取请求(例如读和写)。MSC 510包含高速缓存控制单元512,高速缓存控制单元512响应于存储标识近存储器518内含有的高速缓存线的标签的标签高速缓存511而操作。在操作中,当高速缓存控制单元512确定可从近存储器518服务于存储器存取请求(例如响应于高速缓存命中)时,它生成近存储器地址(NMA)以标识存储在近存储器518内的数据。近存储器控制器单元515解释NMA,并作为响应生成电气信号,以存取近存储器518。如之前所提到的,在一些实施例中,近存储器是动态随机存取存储器(DRAM)。在此类情况下,电气信号可包含行地址选通脉冲(RAS)信号和列地址选通脉冲(CAS)信号。然而,应该指出,本发明的基本原理不限于将DRAM用于近存储器。
确保软件透明存储器应用的另一组件是优化的PCM远存储器控制器521,其管理PCM远存储器530特性,同时仍提供所需的性能。在一个实施例中,PCM控制器521包含间接寻址表520,其将由高速缓存控制单元515生成的MCA变换成用于直接寻址PCM远存储器530的PDA。这些变换可以通常是5KB的“块”粒度发生。在一个实施例中,当远存储器控制器521遍及PCM装置地址空间不断移动PCM块以确保没有由于对任何特定块的高频写而引起的耗尽热点时需要该变换。如之前所描述的,此类技术在本文有时被称为“耗损均匀化”。
从而,MSC 510由高速缓存控制单元512管理,高速缓存控制单元512允许MSC 510吸收、联合并过滤对PCM远存储器530的事务(例如读和写)。高速缓存控制单元512管理在近存储器518与PCM远存储器530之间的所有数据移动和一致性要求。附加地,在一个实施例中,MSC高速缓存控制器512与CPU接口,并提供在基于DRAM的传统存储器子系统中使用的标准同步加载/存储接口。
现在将在图5A中示出的架构上下文内描述示范读和写操作。在一个实施例中,读操作将首先到达MSC控制器512,MSC控制器512将执行查找以确定是否存在所请求的数据(例如利用标签高速缓存511)。如果存在,则它会将数据返回到发出请求的CPU、核501或I/O装置(未示出)。如果数据不存在,则MSC控制器512会将该请求与系统存储器地址(在本文中也称为存储器通道地址或MCA)一起发送到PCM远存储器控制器521。PCM控制器521将使用间接寻址表520将该地址变换成PDA并将读操作指向PCM的这个区域。在从PCM远存储器530接收到所请求的数据时,PCM控制器521会将所请求的数据返回到MSC控制器512,MSC控制器512会将数据存储在MSC近存储器518中,并且还将数据发送到发出请求的CPU核501或者I/O装置。对于此数据的随后请求可从近存储器518直接服务,直到它由一些其它PCM数据替换。
在一个实施例中,存储器写操作也首先去到MSC控制器512,MSC控制器512将它写入MSC近存储器518中。在此实施例中,当接收到写操作时,可不将数据直接发送到PCM远存储器530。例如,仅当MSC近存储器518中存储数据的位置必须再用于存储不同系统存储器地址的数据时,才可将数据发送到PCM远存储器530。当这个发生时,MSC控制器512注意到数据当前不在PCM远存储器530中,并且从而将从近存储器518中检索它,并将它发送到PCM控制器521。PCM控制器521查找用于该系统存储器地址的PDA,并且然后将数据写到PCM远存储器530。
在一个实施例中,MSC近存储器518的大小将由工作载荷存储器要求以及近存储器和远存储器性能所支配。对于基于DRAM的MSC,大小可设置成1/10的工作载荷存储器占用空间大小或PCM远存储器530大小。此类MSC与在当前处理器/系统架构中发现的常规高速缓存相比非常大。作为示例,而非限制,对于128GB的PCM远存储器大小,MSC近存储器的大小可达16GB。
图5B例证了与MSC 510的一个实施例关联的附加细节。此实施例包含负责命令和寻址的一组逻辑单元,其包含用于缓冲命令/地址的命令缓冲跟踪单元542和响应于来自MSC范围寄存器(RR)单元545的控制信号而选择MSC操作模式的高速缓存存取模式检查单元544。下面描述几个示范操作模式。简言之,这些可包含如下模式:其中近存储器用在传统高速缓存角色中的模式以及其中近存储器518形成部分系统存储器的模式。标签检查/命令调度器550使用来自标签高速缓存511的标签来确定具体高速缓存线是否被存储在近存储器518中,并且近存储器控制器515生成通道地址信号(例如CAS和RAS信号)。
此实施例还包含负责数据路由选择和处理的一组逻辑单元,其包含用于存储取自近存储器或存储到近存储器的数据的一组数据缓冲器546。在一个实施例中,还包含预取数据高速缓存547,其用于存储从近存储器和/或远存储器预取的数据。然而,预取数据高速缓存547是可选的,并且对于遵从本发明基本原理不是必要的。
纠错码(ECC)生成器/检查器单元552生成和检查ECC以确保向近存储器写或从近存储器读的数据是无错误的。如下面所讨论的,在本发明的一个实施例中,ECC生成器/检查器单元552被修改成存储高速缓存标签。本领域普通技术人员很好理解特定ECC,并且因此在此未详细描述。信道控制器553将近存储器518的数据总线耦合到MSC 510,并生成对于存取近存储器518必要的电气信令(例如用于DRAM近存储器的RAS和CAS信令)。
图5B中还例证了用于将MSC 510耦合到远存储器的远存储器控制接口548。具体地说,远存储器控制接口548生成寻址远存储器所需的MCA,并且在数据缓冲器546与远存储器之间传递数据。
如所提到的,在一个实施例中采用的近存储器518与在当前处理器/系统架构中发现的常规高速缓存相比是非常大的。因而,保存系统存储器地址到近存储器地址的变换的标签高速缓存511可能也非常大。存储和查找MSC标签的成本可能是构建大高速缓存的显著阻碍。因而,在本发明的一个实施例中,这个问题使用创新方案解决了,该创新方案将高速缓存标签存储在位于MSC中的存储装置内进行ECC保护,由此基本上移除了对于标签的存储装置成本。
在图5C中一般性地例证了这个实施例,其示出了用于存储/管理高速缓存标签、存储ECC数据并执行ECC操作的集成标签高速缓存和ECC单元554。如所例证的,当执行标签检查操作(例如以确定具体数据块是否被存储在近存储器高速缓存518内)时,在请求时将所存储的标签提供给标签检查/命令调度器550。
图5D例证了数据524以及对应的ECC 523和标签522的示范组的组织。如所例证的,标签522与ECC 523被协同定位在标签高速缓存/ECC单元554的存储器(例如在一个实施例中是DDR DRAM)中。在此示例中,总计64字节的多个数据块已经被读到标签高速缓存/ECC单元554中。ECC检查/生成器单元554a使用数据525来生成ECC,并将生成的ECC和与数据关联的现有ECC 523相比较。在此示例中,对于64字节的数据525生成4字节的ECC。然而,本发明的基本原理不限于任何具体类型或大小的ECC。附加地,应该指出,术语“数据”在本文中广义上用来指可执行程序代码和数据,它们二者都可存储在图5D中示出的数据存储装置525中。
在一个实施例中,3字节(24位)标签522与在图5D中例证的位指配一起使用。特别是,位00至16是提供高速缓存线的高地址位的地址位。对于具有56位(例如SPA[55:00])的系统地址,位00至16映射到系统地址的位55-29(从而允许512 MB的最小高速缓存大小)。返回到3字节标签,预留位17-19;位20-21是目录位,它们提供有关高速缓存线的远程CPU高速缓存的信息(例如提供关于在其上高速缓存该线的其它CPU的指示);位21-22指示高速缓存线的当前状态(例如00=干净;01=脏;10和11=未用);并且位23指示高速缓存线是否有效(例如1=有效;0=无效)。
利用上面所描述的直接映射高速缓存架构(其允许直接从系统存储器提取近存储器地址),降低或消除了在可读取MSC 510之前查找标签存储设备的等待时间成本,由此显著改进了性能。而且,检查高速缓存标签以判定MSC 510是否具有所需数据的时间也被消除了,这是因为它与从MSC读取的数据的ECC检查并行进行。
在某些条件下,将标签与数据一起存储可产生写的问题。写首先读数据,以便确保它对于某一其它地址不盖写数据。在每次写之前的此类读变得成本很高。本发明的一个实施例采用保存最近存取的近存储器地址(NMA)的标签的脏线标签高速缓存。由于许多写针对最近存取的地址,因此合理小的标签高速缓存可得到高效的命中率,以在写之前过滤大部分读。
图5E中例证了与PCM DIMM 519的一个实施例关联的附加细节,其包含PCM远存储器控制器521和一组PCM远存储器模块530a-i。在一个实施例中,PCM远存储器530a-i的单个池在系统存储器用途与存储装置用途之间动态共享。在此实施例中,整个PCM池530a-i可被细分成4KB大小的“块”。PCM描述符表(PDT) 565标识每个PCM块作为存储器或者存储装置的使用。例如,每行PDT可表示具体块,其中具体列标识每个块的使用(例如1=存储器;0=存储装置)。在此实施例中,初始系统配置可在存储装置使用与存储器使用之间划分PCM 530a-i内的PCM块(例如通过对PDT 565编程)。在一个实施例中,使用相同表来排除坏的块,并提供用于耗损均匀化操作的备用块。此外,PDT 565还可包含每个PCMS块到由软件使用的“逻辑”块地址的映射。在系统存储器的情况下,逻辑块地址与MCA或SPA相同。不管何时由于耗损均匀化而移动PCMS块,更新间接寻址表(AIT)563都需要这种关联。当这发生时,由软件使用的逻辑块地址必须被映射到不同PCMS装置地址(PDA)。在一个实施例中,此映射被存储在AIT中,并且在每次耗损均匀化移动时更新。
如所例证的,PCM控制器521包含系统物理地址(SPA)到PCM映射器556,其响应于耗损管理单元555和间接寻址单元563而操作,以将SPA映射到PCM块。在一个实施例中,耗损管理逻辑555实现耗损均匀化算法以考虑如下事实:在太多次写和/或擦除存取之后PCM530a-530i的存储装置单元开始耗尽。例如通过迫使具有低循环计数的数据块偶尔移动,并由此允许高循环数据块被放在曾存储低循环数据块的存储单元中,耗损均匀化跨PCM装置的存储单元扩散写和擦除。通常,大多数块不循环,但高循环计数块最可能失败,并且耗损均匀化将高循环计数块的地址与低循环计数块的地址互换。耗损管理逻辑555可使用一个或多个计数器和寄存器来跟踪循环计数(例如每当检测到循环时,计数器可递增1并且结果可被存储在该组寄存器中)。
在一个实施例中,间接寻址逻辑563包含间接寻址表(AIT),其含有写操作应该被指向的PCM块的指示。AIT可用于自动在存储器用途与存储装置用途之间移动块。从软件角度看,对所有块的存取使用传统存储器加载/存储语义(即耗损均匀化和间接寻址操作对软件而言透明地发生)。在一个实施例中,AIT用于将由软件生成的SPA变换成PDA。当需要均匀地耗损PCMS装置时需要这种变换,数据将需要在PDA空间中到处移动以避免任何热点。当此类移动发生时,SPA与PDA之间的关系将改变,并且AIT将被更新以反映这种新变换。
在SPA到PCM的映射之后,调度器单元557调度对PCM装置530a-l的基础PCM操作(例如读和/或写),并且PCM协议引擎558生成执行读/写操作所需的电气信令。ECC单元562执行检错和纠错操作,并且数据缓冲器561暂时缓冲从PCM装置530a-l读的数据或向PCM装置530a-l写的数据。持久写缓冲器559用于保存甚至在意想不到电源故障(例如它使用非易失性存储装置实现)的情况下也保证被写回PCMS的数据。包含刷新支持逻辑560以周期性的和/或根据规定的数据刷新算法(例如在持久写缓冲器达到规定阈限之后)向PCMS刷新持久写缓冲器。
在一个实施例中,MSC 510自动将存储装置存取直接路由到PCM远存储器控制器521,并将存储器存取路由到MSC高速缓存控制单元512。到达PCM远存储器控制器521的存储装置存取被当作正规读和写,并且本文描述的间接寻址和耗损均匀化机制照常应用。在本发明的一个实施例中采用附加优化,其在数据需要在存储装置与存储器之间移动时能够实现。由于使用公共PCM池530a-1,因此可通过简单地改变变换表(例如AIT)中的指针来取消或推迟数据移动。例如,当数据从存储装置传递到存储器时,标识具体物理PCM存储装置位置中数据的指针可被更新成指示相同物理PCM存储装置位置现在是系统存储器中的存储器位置。在一个实施例中,这通过硬件以软件透明的方式进行,以提供性能效益和功率效益。
除了软件透明的操作模式之外,MSC控制器512的一个实施例还提供了由MSC范围寄存器(RR)545所指示的备选操作模式。这些操作模式可包含但不限于如下项:
1)对于存储装置类应用对PCM存储器的直接存取。此类用途将还要求MSC控制器512确保提交给PCM 519的写实际上被交付给持久状态。
2)近存储器518的混合使用,向软件暴露出它的部分以便直接使用,同时保持剩余部分作为MSC。当近存储器518的一部分被暴露给软件以便直接使用时,那部分在系统地址空间内可直接寻址。这允许某些应用在高性能小区域(近存储器518)与相对低性能大块区域(远存储器530)之间明确地划分它们的存储器分配。相比之下,作为MSC内高速缓存分配的部分未形成系统地址空间的一部分(而相反充当用于远存储器530的高速缓存,如本文描述的)。
如之前所讨论的,MSC架构定义成使得多个不同系统划分方法是有可能的。这些方法落在两个广义桶(bucket)中:
(1)分离架构:在此方案中,MSC控制器512位于CPU中,并且拦截所有系统存储器请求。存在两个单独的接口,它们从MSC离开CPU以连接到近存储器(例如DRAM)和远存储器(例如PCM)。每个接口对于特定类型存储器都是特制的,并且每个存储器可在性能和容量方面独立缩放。
(2)统一架构:在此方案中,单个存储器接口离开CPU,并且所有存储器请求都被发送到这个接口。MSC控制器512连同近存储器(例如DRAM)和远存储器(例如PCM)子系统在CPU外部被合并在此单个接口上。在一个实施例中,此存储器接口被特制成满足CPU的存储器性能要求,并支持事务的无序协议。近存储器要求和远存储器要求在这些接口的每个接口上以“统一”方式来满足。
在上面桶的范围内,多个不同分份选项是可行的,下面描述了其中一些。
(1)分离示例:
近存储器:DDR5 DIMM
近存储器接口:一个或多个DDR5通道
远存储器:PCI快速(PCIe)卡上的PCM控制器/装置
远存储器接口:第三代x16 PCIe
(2)统一示例:
CPU存储器接口:一个或多个KTMI(或QPMI)通道
在转接卡卡上具有MSC/PCM控制器的近存储器/远存储器
MSC/PCM控制器外的近存储器接口:DDR5接口
MSC/PCM控制器外的远存储器接口:PCM装置接口
具有不同近存储器操作模式的实施例
如上面所讨论的,二级存储器层级可用于引入快速非易失性存储器(诸如PCM)作为系统存储器,同时使用非常大的基于DRAM的近存储器。近存储器可被用作硬件管理的高速缓存。然而,一些应用不是硬件高速缓存友好的,并且因而,将受益于使用此类存储器的备选方式。因为在任何给定时间可能都有多个不同应用在服务器上运行,因此本发明的一个实施例允许同时启用多用途模式。附加地,一个实施例提供了控制为这些用途模式中的每个模式分配近存储器的能力。
在一个实施例中,MSC控制器152提供用于使用近存储器的如下模式。如之前所提到的,在一个实施例中,当前操作模式可由存储在MSC范围寄存器(RR)545中的操作代码规定。
(1)写回高速缓存模式:在此模式中,所有或部分近存储器518被用作用于PCM存储器530的高速缓存。虽然在写回模式,但每一个写操作最初都指向近存储器518(假定在高速缓存中存在该写所指向的高速缓存线)。仅当近存储器518内的高速缓存线要由另一高速缓存线替换时才执行对应写操作以更新PCM远存储器530(与下面描述的每个写操作被立即传播到远存储器530的写直达模式形成对照)。
在一个实施例中,读操作将首先到达MSC高速缓存控制器512,该控制器512将执行查找以确定在PCM远存储器518中是否存在所请求的数据(例如利用标签高速缓存511)。如果存在,则它会将数据返回到发出请求的CPU、核501或I/O装置(图5A中未示出)。如果数据不存在,则MSC高速缓存控制器512会将该请求与系统存储器地址一起发送到PCM远存储器控制器521。PCM远存储器控制器521会将系统存储器地址变换成PCM物理装置地址(PDA),并将读操作指向远存储器530的这个区域。如之前所提到的,此变换可利用间接寻址表(AIT)563,PCM控制器521使用AIT 563在系统存储器地址与PCM PDA之间进行变换。在一个实施例中,AIT被更新为耗损均匀化算法的一部分,耗损均匀化算法被实现以分布存储器存取操作并由此降低PCM FM 530上的耗损。
在从PCM FM 530接收到所请求的数据时,PCM FM控制器521将所请求的数据返回到MSC控制器512,MSC控制器512将数据存储在MSC近存储器518中,并且还将数据发送到发出请求的处理器核501或者I/O装置(图5A中未示出)。对于此数据的随后请求可从近存储器518直接服务,直到它由某一其它PCM FM数据替换。
在一个实施例中,存储器写操作也首先去到MSC控制器512,MSC控制器512将它写入充当FM高速缓存518的MSC近存储器中。在此实施例中,当接收到写操作时,可不将数据直接发送到PCM FM 530。例如,仅当充当FM高速缓存518的MSC近存储器中存储数据的位置必须再用于存储不同系统存储器地址的数据时,才可将数据发送到PCM FM 530。当这个发生时,MSC控制器512注意到数据当前不在PCM FM 530中,并且从而将从充当FM高速缓存518的近存储器中检索它,并将它发送到PCM FM控制器521。PCM控制器521查找用于系统存储器地址的PDA,并且然后将数据写到PCM FM 530。
(2)近存储器旁路模式:在此模式,所有读和写都旁路充当FM高速缓存518的NM,并且直接去到PCM远存储器530。当应用不是高速缓存友好的,或者需要以高速缓存线的粒度持久交付数据时,例如可使用此类模式。在一个实施例中,由处理器高速缓存503和充当FM高速缓存518的NM执行的高速缓存彼此独立操作。因而,未在处理器高速缓存503中高速缓存(并且在一些情况下其可不被准许在处理器高速缓存503中高速缓存)的数据可在充当FM高速缓存518的NM中高速缓存,并且反之亦然。从而,在处理器高速缓存503中可被指定为“不可高速缓存”的某些数据可在充当FM高速缓存518的NM内高速缓存。
(3)近存储器读-高速缓存写旁路模式:这是上面模式的变型,其中允许从PCM 519读高速缓存持久数据(即,持久数据在MSC 510中高速缓存以便进行只读操作)。当大部分持久数据是“只读”的并且应用用途是高速缓存友好的时,这是有用的。
(4)近存储器读-高速缓存写直达模式:这是前一模式的变型,其中除了读高速缓存之外,还高速缓存写命中。每次对MSC近存储器518的写都引起对PCM远存储器530的写。从而,由于高速缓存的写直达性质,仍保证了高速缓存线持久性。
(5)近存储器直接存取模式:在此模式,所有或部分近存储器对软件而言直接可见,并形成系统存储器地址空间的一部分。此类存储器可完全在软件控制下。从PCM存储器519到近存储器的这个区域的任何数据移动都需要明确软件拷贝。此类方案可创建用于软件的非均匀存储器地址(NUMA)存储区,其中它从近存储器518得到相对于PCM远存储器530高得多的性能。此类用途可用于需要对某些数据结构非常快速存取的某些高性能计算(HPC)和图形应用。此近存储器直接存取模式相当于对近存储器中的某些高速缓存线“固定”。此类固定可在较大、多路组关联高速缓存中有效地进行。
表A下面概括了上面描述的每一种操作模式。
表A
用于实现以上操作模式的处理器和芯片集组件包含如下项:
(1)在两层存储器(2LM)层级中管理近存储器的存储器侧高速缓存控制器512。
(2)存储器侧高速缓存510中确定用于每一种上述操作模式的系统地址范围的一组范围寄存器545(见图5B)。
(3)确认从PCM存储器子系统519到MSC控制器515的写完成的机构。
(5)使近存储器518中的线无效的机构。
(5)将脏线驱逐到PCM并使近存储器地址空间的规定区域中无效的刷新引擎。
在一个实施例中,用于每一个用途模式的存储器范围在系统地址空间中是连续的。然而,多个分开的区域可使用相同模式。在一个实施例中,该组MSC RR 545内的每个模式范围寄存器提供如下信息:
(1)操作模式(例如写回、近存储器旁路模式等);
(2)系统地址空间中的范围基础(例如以2MB的粒度或更大粒度);以及
(3)标识区域大小的范围掩蔽字段。
在一个实施例中,所支持的数个模式是实现特定的,但假定对于每个操作模式,仅一个连续的系统地址范围可用。如果规定近存储器直接存取范围寄存器,则假定这将被映射到如下连续区域,其起始于在近存储器地址空间的底部。此类连续区域必须小于近存储器的大小。附加地,如果使用任何高速缓存模式,则直接存取区域大小必须小于近存储器大小以考虑用于所需性能的充足高速缓存大小。对于各种模式对近存储器的此类分配可以是能由用户配置的。
总之,本发明的一个实施例根据如下一组操作实现:
(1)当任何读或写存取达到存储器侧高速缓存控制器512时,它检查范围寄存器545(图5B)以确定当前操作模式。
(2)对于任何读高速缓存/写旁路存取,MSC控制器512检查以查看该地址当前是否被高速缓存了。如果它是,则它在将写完成发送回源之前必须使该线无效。
(3)对于任何写旁路直接PCM操作,MSC控制器512等待从PCM控制器521回来的完成以确保该写被交付给全局可见缓冲器。
(4)对近存储器中直接存取模式空间的任何读或写都指向近存储器的适当区域。没有事务被发送到PCM存储器。
(5)在范围寄存器配置中增大或减小任何现有区域或添加新区域的任何改变都将需要对PCM刷新适当高速缓存的区域。例如,如果软件希望通过缩小写回高速缓存区域来增大直接存取模式区域的大小,则它可通过首先驱逐近存储器区域的适当部分并使其无效并且然后改变近存储器直接存取模式范围寄存器,来这么做。MSC控制器510然后将知道将来的高速缓存针对较小的近存储器地址空间进行。
图6A中例证了本发明的一个具体实施例,其中系统物理地址(SPA)空间在多个MSC之间划分。在所例证的实施例中,MSC高速缓存654和控制器656与SPA区域667a关联;MSC高速缓存655和控制器657与SPA区域667b关联;MSC高速缓存661和控制器663与SPA区域667c关联;并且MSC高速缓存660和控制器662与SPA区域667d关联。例证了两个CPU 670和671,每个CPU具有4个核,分别是650和651,并且具有归属代理,分别是652和653。两个CPU 670和671分别经由远存储器接口659和665耦合到公共远存储器控制器666。
从而,在图6A中,整个SPA存储器空间被细分成多个区域,其中每个区域与具体MSC和控制器关联。在此实施例中,给定MSC可具有不连续SPA空间分配,但任何两个MSC都将没有交叠的SPA空间。而且,这些MSC与不交叠SPA空间关联,并且不需要MSC间一致性技术。
在图6A中示出的架构上可采用上面描述的任何近存储器模式。例如,每个MSC控制器656-657、662-663可配置成在写回高速缓存模式、近存储器旁路模式、近存储器读高速缓存写旁路模式、近存储器读高速缓存写直达模式或近存储器直接存取模式操作。如之前所讨论的,在范围寄存器(RR)655内为每个MSC 610规定了具体模式。
在一个实施例中,不同MSC可同时实现不同操作模式。例如,MSC控制器656的范围寄存器可规定近存储器直接存取模式,MSC控制器657的范围寄存器可规定写回高速缓存模式,MSC控制器662的范围寄存器可规定读高速缓存/写旁路模式,并且MSC控制器663可规定读高速缓存/写直达模式。此外,在一些实施例中,各个MSC可同时实现不同操作模式。例如,MSC控制器656可配置成对于某些系统地址范围实现近存储器直接存取模式且对于其它系统地址范围实现近存储器旁路模式。
前述组合当然仅仅是MSC控制器可被独立编程的方式的例证。本发明的基础原理不限于这些组合或者任何其它组合。
如相对于上面描述的其中一些实施例所描述的(诸如相对于图4G描述的),MSC及其MSC控制器配置成在与负责那个具体SPA范围的PCM DIMM相同的存储器通道(例如相同的物理DDR总线)上操作。因而,在此实施例中,发生在指定SPA范围内的存储器事务被局限于相同存储器通道内,由此减少通过CPU网格互连的数据业务。
图6B提供了根据本发明的实施例可如何配置系统存储器地址映射620、近存储器地址映射621和PCM地址映射622的图形表示。如之前所讨论的,MSC控制器606在由范围寄存器(RR)605标识的模式操作。系统存储器映射620具有分配用于近存储器直接存取模式的第一区域602、分配用于近存储器旁路模式的第二区域603以及分配用于写回高速缓存模式的第三区域605。MSC控制器606按近存储器地址映射621的指示提供对近存储器的存取,近存储器地址映射621包含分配给写回高速缓存模式的第一区域608以及分配给近存储器直接存取模式的第二区域609。如所例证的,近存储器高速缓存旁路操作被直接提供给根据PCM地址映射622操作的PCM控制器610,PCM地址映射622包含近存储器旁路区域611(用于近存储器旁路模式)和写回高速缓存区域612(用于写回高速缓存模式)。因而,可基于由MSC控制器实现的特定模式细分系统存储器映射620、近存储器地址映射621和PCM地址映射622。
图6C和6D例证了在本发明一个实施例中采用的寻址技术(其中一些可能已经一般性地描述了)。具体地说,图6C示出了系统物理地址(SPA) 675如何映射到近存储器地址(NMA)或PCM装置地址(PDA)。具体地说,SPA首先由处理器内的解码逻辑676解码以识别归属代理605(例如该归属代理负责解码的地址空间)。与所选的归属代理605关联的解码逻辑677进一步对SPA 675(或其一部分)进行解码以生成标识分配给那个具体SPA空间的适当MSC高速缓存控制器612的存储器通道地址(MCA)。所选的高速缓存控制器612然后在678将存储器存取请求映射到近存储器地址,之后可选的是在680的交织操作(下面描述),或者备选地,在679执行可选的交织操作,之后是由PCM远存储器控制器映射681到PCM装置地址PDA(例如使用上面所描述的间接寻址和耗损管理)。
图6D例证了可选交织过程的一个实施例,其示出了可如何使用交织将软件页面跨多个MSC和PCM地址空间拆分。在图6D中示出的示例中,SPA空间内的两个页面682-683由高速缓存线交织逻辑685交织以在MCA空间内生成两组交织行685-686。例如,来自存储器页面682-683的所有奇数行(例如行1、3、5等)可被发送到第一MCA空间685,并且来自存储器页面682-683的所有偶数行(例如行2、5、6等)可被发送到第二MCA空间686。在一个实施例中,这些页面是5K字节的页面,不过本发明的基础原理不限于任何页面大小。根据间接寻址表(AIT)和耗损管理逻辑操作的PCM控制器687-688然后重新布置PCM装置地址(PDA)存储器空间内的高速缓存线(如上所述)。这种性质的交织可用于将工作载荷跨MSC 610和/或PCM装置619分布(例如作为非均匀存储器地址(NUMA)的备选)。
用于从处理器到存储器子系统智能刷新数据的系统和方法
在当前处理器设计中,当刷新处理器高速缓存时,没有向存储器子系统提供信息以区分处理器不再需要(并且因此可被废弃)的数据与应该保存的数据。因此,所有刷新的数据都保存。如果向存储器子系统提供了此类信息,则可改进新架构(诸如采用PCM或更确切说是PCMS存储器的架构)的性能。例如,可使用此类信息来减少写的次数以减少PCMS存储器上的耗损,特别是当结合现有耗损均匀化技术使用时。
耗损均匀化之前相对于图5E详细讨论了,其示出PCM控制器521(在一个实施例中是PCMS控制器)具有系统物理地址(SPA)到PCM映射器556,其响应于耗损管理单元555和间接寻址单元563而操作以将SPA映射到PCM块。在一个实施例中,耗损管理逻辑555实现耗损均匀化算法以考虑如下事实:在太多写和/或擦除存取之后PCM 530a-530i的存储装置单元开始耗尽。例如通过迫使具有低循环计数的数据块偶尔移动,并由此允许高循环数据块被放在曾存储低循环数据块的存储器单元中,耗损均匀化跨PCM装置的存储器单元扩散写和擦除。通常,大多数块不循环,但高循环计数块最有可能失败,并且耗损均匀化将高循环计数块的地址与低循环计数块的地址互换。耗损管理逻辑555可使用一个或多个计数器和寄存器跟踪循环计数(例如,每当检测到循环时计数器可递增1,并且结果可被存储在该组寄存器中)。
在一个实施例中,间接寻址逻辑563包含间接寻址表(AIT),其含有写操作应该被指向的PCM块的指示。AIT可用于在存储器用途与存储装置用途之间自动移动块。从软件角度看,对所有块的存取使用传统存储器加载/存储语义(即耗损均匀化和间接寻址操作对软件而言透明地发生)。在一个实施例中,AIT用于将由软件生成的SPA变换成PDA。当需要均匀地耗损PCMS装置时需要这种变换,数据将需要在PDA空间中到处移动以避免任何热点。当此类移动发生时,SPA与PDA之间的关系将改变,并且AIT将被更新以反映这种新变换。
在一个实施例中,读和写数据缓冲器561用于从PCMS 530a-I读数据并向PCMS写数据,来最大化PCMS部分的寿命,以增大读/写带宽并减小功率。如果未向PCM控制器521提供本文所描述的高速缓存刷新信息,则不能区分处理器不再需要的数据与当前在使用的数据,由此降低PCMS存储器530a-i的性能。
本文所描述的本发明的实施例提供了用于向存储器子系统传递存储器刷新信息以通过减少对PCMS写的次数来改进PCMS存储器性能的技术。存储器刷新信息还确保将需要保存的数据写到PCMS存储器控制器,而不是在电力循环期间保留在PCMS缓冲器中。
本发明的实施例使用之前相对于图5B-C描述的存储器范围寄存器545来区分DRAM(例如DDR)存储器与具有缓冲器接口561(诸如PCMS存储器控制器521)的存储器。在一个实施例中,在范围寄存器指示PCMS装置用于存储高速缓存的数据的具体集合时,当隐式或显式刷新处理器高速缓存时,或当请求存储器刷新时,处理器生成存储器刷新“提示”给存储器子系统。在一个实施例中,提示通过快速路径互连(QPI)接口(由本申请的受让人设计的代替某些处理器架构中的前端总线(FSB)的点对点处理器互连)提供给PCM控制器521。然而,应该指出的是,本发明的基本原理不限于用于在处理器与存储器子系统之间互换数据的任何具体类型接口。存储器子系统然后使用存储器刷新提示管理存储器的缓冲,确保仅在必要时向PCMS存储器写数据。
在一个实施例中,位被添加到存储器范围寄存器545,或者备选地,在一些处理器中用于标识对某些存储器范围的存取模式(诸如未高速缓存(UC)、写直达(WT)、写组合(WC)、写保护(WP)和写回(WB))的存储器类型范围寄存器(MTRR)。新位用于指示是否向存储器控制器发送存储器刷新数据。在一个实施例中,当处理器刷新与存储器刷新提示范围关联的存储器区域时,处理器向存储器控制器发送包含存储器刷新提示的附加信息。当存储器控制器接收到存储器刷新提示时,它将缓冲的数据写回到PCMS存储器控制器521(或实际的PCMS存储器530a-i)。作为示例而非限制,处理器可使用特殊存储器刷新页面指令(MFLUSH)标识要刷新的存储器页面,并且同时(或随后)向存储器页面驻留在其中的存储器控制器提供存储器刷新提示。
图7例证了包含彼此通信并通过QPI接口与PCMS存储器控制器521通信的多个CPU704-705的示范性架构。南桥模块706经由直接媒体接口(DMI)以通信方式耦合到CPU。此外,每个处理器以通信方式耦合到它自己的DDR存储器702-703(不过遵循本发明的基本原理不一定需要DDR)。
图8例证了在图7中示出的系统的示范性系统存储器映射801,其包含将系统存储器地址的第一范围映射到DDR存储器702的条目810、将系统存储器地址的第二范围映射到DDR存储器703的条目811以及将系统地址的第三范围映射到PCMS存储器521的条目812。
图9例证了根据本发明一个实施例含有存储器刷新提示数据901的示范性存储器范围寄存器545。在所例证的实现中,存储器刷新提示数据901包含提供了为其提供存储器刷新提示的存储器区域的开始的地址的存储器开始位置910、规定为其提供存储器刷新提示的存储器区域的长度的存储器长度位置911以及指示由存储器开始位置910和存储器长度位置911标识的存储器区域是否必须响应于刷新条件而存储到PCMS存储器的存储器刷新启用/禁用位912。在一个实施例中,当对于给定存储器范围启用存储器刷新提示时,CPU向存储器子系统发送存储器刷新提示。存储器刷新提示可或者通过软件的显式调用或者作为CPU驱逐算法的一部分来生成。
图10例证了根据本发明一个实施例的PCMS存储器控制器521,其包含用于将系统地址变换成PCMS装置地址的系统地址到局部存储器地址变换器1001。在一个实施例中,在图10中例证的系统地址到局部存储器地址变换器1001包含在图5E中例证的系统物理地址到PCMS地址映射模块556和地址指示模块563。附加地,在一个实施例中,一组配置寄存器1002包含用于规定是否将为本文所描述的各种系统地址范围提供刷新提示的存储器范围寄存器545。
图10中还例证了读和写缓冲器以及PCMS协议引擎(二者之前都已经相对于图5E描述了)。图10中例证了两个单独的存储器通道(通道0和1),它们每个都具有N个PCMS DIMM。例如,DIMM 1006被指配给存储器通道0,而DIMM 1007被指配给存储器通道1。当然,本发明的基本原理不限于DIMM和存储器通道的任何具体配置。
在本发明的一个实施例中,与读和写缓冲器561关联的刷新提示处理逻辑1005利用存储器刷新提示来判定是否从缓冲器向PCMS DIMM 1006-1007刷新数据,或者将数据保持在缓冲器中。
图11例证了使用存储器刷新提示的方法的一个实施例。在1101,处理器刷新其高速缓存,并在1102,确定是否启用存储器刷新提示(例如经由MRR或MTRR中的位)。如果否,则在1103,系统在没有使用提示的情况下继续执行。如果是,则在1104,含有用于存储器写或无效操作的地址的存储器刷新提示被发送到PCMS存储器控制器。
在1105,存储器控制器从处理器接收存储器刷新提示,并在1106,确定是否与地址一起接收存储器刷新提示。如果否,则在1107,向处理器发送常规响应。例如,如果是在接收到数据之后立即向发送方发送回确认,则根据一个实施例的常规响应是邮寄式写。当接收到存储器刷新提示时,存储器被写回到PCMS,并且然后向发送方发送确认。如果否,则在1108,根据存储器刷新提示(例如,如上所述),存储在PCMS缓冲器中的数据被保存到PCMS存储器。
在使用MFLUSH指令的实施例中,如果需要持久存储,则它可被设计为阻断调用。在整个PCMS地址范围上执行存储器刷新将确保PCMS存储器中的所有数据都被返回到PCMS存储器装置。在此,可用存储器防护指令(MFENCE)后跟指示特定页面号的MFLUSH指令来规定刷新PCMS存储器地址范围的操作。
上面描述的本发明的实施例向存储器子系统传递存储器刷新信息以通过减少对PCMS写的次数来改进PCMS存储器的性能。这些实施例还确保将需要保存的数据写到PCMS存储器控制器(而不是在电力循环期间保留在PCMS缓冲器中)。
在一个实施例中,一个或多个范围寄存器(RR)被添加到处理器(集成在处理器封装或单独硅片中)的存储器控制器逻辑,其中该范围指示处理器的字节可寻址持久存储器的地址空间。对于针对由上面提到的范围寄存器所确定的持久存储器空间的写,存储器控制器逻辑确保写确实是持久的(即,PCMS控制器返回指示写是持久的确认)。要指出,PCMS控制器还可在返回确认之前将写存储在电源保护的高速缓存中,并随后完成对PCMS存储器的写。这是PCM/PCMS控制器的实现选择。
软件确保它自己对持久存储器的写确实是持久的机制被称为“耐久的”。对持久存储器的写在当将保存写内容时的那点是耐久的,不管在该耐久性点之后可发生的电力循环或重置条件如何。
在一个或多个范围寄存器被添加到存储器控制器逻辑的实施例中,软件可通过发出存储器防护或存储防护指令来确保它自己的耐久性。这些防护指令对来自处理器核的未完成的写简单地计数,并等待完成对于来自存储器控制器逻辑的写的写。由于如果落入范围存储器内的写已经全都对对应的PCMS控制器完成了则存储器控制器逻辑将仅发出完成,因此防护指令的完成向软件指示其对持久存储器的写是耐久的。图12中例证了此方案。
在1201,处理器向持久存储器发出一个或多个写,并发出存储器防护操作以确保耐久性。如果写命中了由存储器控制器范围寄存器覆盖的地址(在1202确定的),则在1204,存储器控制器逻辑向PCMS控制器发出写,并等待确认。如果否,则在1203,处理器继续常规执行。
当从PCMS控制器接收到确认时(在1205确定的),则在1207,处理器完成存储器防护操作。在1206到1204,处理器等待确认,直到接收到确认为止。
本发明的实施例可包含各种步骤,这些步骤上面已经描述了。这些步骤可用机器可执行指令实施,机器可执行指令可用于使通用或专用处理器执行这些步骤。备选地,这些步骤可由含有用于执行这些步骤的硬连线逻辑的特定硬件组件执行,或由已编程计算机组件和定制硬件组件的任何组合执行。
如本文所描述的,指令可以是指诸如配置成执行某些操作或具有预先确定的功能性的专用集成电路(ASIC)的特定硬件配置,或存储在用非短暂性计算机可读介质实施的存储器中的软件指令。从而,附图中示出的技术可使用在一个或多个电子装置(例如终端站、网络元件等)上存储和执行的代码和数据来实现。此类电子器件使用计算机可读介质(诸如非短暂性计算机机器可读存储介质(例如磁盘、光盘、随机存取存储器、只读存储器、闪速存储器装置、相变存储器)和短暂性计算机机器可读通信介质(例如电、光、声或其它形式的传播信号——诸如载波、红外信号、数字信号等))存储和传递(在内部和/或通过网络与其它电子器件)代码和数据。此外,此类电子器件通常包含耦合到一个或多个其它组件(诸如一个或多个存储装置器件(非短暂性机器可读存储介质)、用户输入/输出装置(例如键盘、触摸屏和/或显示器)和网络连接)的一个或多个处理器的集合。处理器集合与其它组件的耦合通常通过一个或多个总线和桥(也称为总线控制器)。存储装置器件和携带网络业务的信号分别表示一个或多个机器可读存储介质和机器可读通信介质。从而,给定电子器件的存储装置器件通常存储代码和/或数据以便在那个电子器件的一个或多个处理器的集合上执行。当然,本发明实施例的一个或多个部分可使用软件、固件和/或硬件的不同组合来实现。遍及此详细描述,为了说明的目的,阐述了大量特定细节,以便提供对本发明的透彻理解。然而,对于本领域技术人员,要明白,在没有这些特定细节中的一些细节的情况下也可实践本发明。在某些实例中,众所周知的结构和功能未详尽描述,以免使本发明的主题难以理解。因此,本发明的范围和精神应该依照如下权利要求书判断。
Claims (40)
1.一种在计算机系统内利用存储器刷新提示的方法,包括:
从处理器高速缓存刷新数据;
确定对于分配给相变存储器“PCM”存储器装置的规定的系统地址范围是否启用存储器刷新提示;
如果对于所述规定的系统地址范围启用所述存储器刷新提示,则生成所述PCM存储器装置的PCM存储器控制器的存储器刷新提示;以及
使用所述存储器刷新提示确定是否将刷新的数据保存到所述PCM存储器装置。
2.如权利要求1所述的方法,进一步包括:
根据所述存储器刷新提示将所述刷新的数据保存到所述PCM存储器装置。
3.如权利要求1所述的方法,其中所述PCM存储器装置包括相变存储器和开关“PCMS”存储器装置。
4.如权利要求1所述的方法,其中如果对于所述规定的系统地址范围不启用刷新提示,则将所述刷新的数据保存到所述PCM存储器装置。
5.如权利要求1所述的方法,其中确定对于规定的系统地址范围是否启用存储器刷新提示的操作包括:读存储在存储器范围寄存器中的启用/禁用位,所述启用/禁用位如果启用存储器刷新提示则具有第一值而如果禁用存储器刷新提示则具有第二值。
6.如权利要求1所述的方法,进一步包括:
使用间接寻址表AIT标识对应于所述规定的系统地址范围的特定PCM存储块。
7.如权利要求1所述的方法,进一步包括:
规定用于所述系统地址范围的存储器通道。
8.一种计算机系统,包括:
处理器,具有从其刷新数据的高速缓存,所述数据与规定的系统地址范围关联;以及
PCM存储器控制器,用于管理对存储在PCM存储器装置中对应于所述规定的系统地址范围的数据的存取;
所述处理器确定对于所述规定的系统地址范围是否启用存储器刷新提示,其中如果对于所述规定的系统地址范围启用存储器刷新提示,则所述处理器向所述PCM存储器装置的PCM存储器控制器发送存储器刷新提示,并且其中所述PCM存储器控制器使用所述存储器刷新提示确定是否将所述刷新的数据保存到所述PCM存储器装置。
9.如权利要求8所述的计算机系统,其中所述PCM存储器装置是相变存储器和开关PCMS存储器装置。
10.如权利要求8所述的计算机系统,进一步包括:
所述PCM存储器控制器内的读和写缓冲器,用于缓冲根据所述存储器刷新提示存储的数据。
11.如权利要求8所述的计算机系统,其中如果对于所述规定的系统地址范围不启用刷新提示,则所述PCM存储器控制器将所述刷新的数据保存到所述PCM存储器装置。
12.如权利要求8所述的计算机系统,包括:
存储器范围寄存器,包含启用/禁用位以指示对于规定的系统地址范围是否启用存储器刷新提示,所述启用/禁用位如果启用存储器刷新提示则具有第一值而如果禁用存储器刷新提示则具有第二值。
13.如权利要求12所述的计算机系统,进一步包括:
间接寻址表AIT,以标识对应于所述规定的系统地址范围的特定PCM存储块。
14.如权利要求13所述的计算机系统,进一步包括:
与所述系统地址范围关联的DIMM存储器通道。
15.一种计算机系统,包括:
处理器,具有从其刷新数据的高速缓存,所述数据与规定的系统地址范围关联;以及
PCM存储器控制器,用于管理对存储在PCM存储器装置中对应于所述规定的系统地址范围的数据的存取;
所述处理器向所述PCM存储器装置的PCM存储器控制器发送存储器刷新提示,并且其中所述PCM存储器控制器使用所述存储器刷新提示确定是否基于由MFLUSH指令规定的地址范围或页面将刷新的数据保存到所述PCM存储器装置。
16.如权利要求15所述的计算机系统,其中所述PCM存储器装置是相变存储器和开关PCMS存储器装置。
17.如权利要求15所述的计算机系统,进一步包括:
所述PCM存储器控制器内的读和写缓冲器,用于缓冲根据所述存储器刷新提示存储的数据。
18.如权利要求15所述的计算机系统,进一步包括:
与所述系统地址范围关联的DIMM存储器通道。
19.如权利要求15所述的计算机系统,其中FENCE指令使所述规定的系统地址范围或页面从高速缓存刷新,并向所述PCM存储器控制器发送存储器刷新提示。
20.一种在计算机系统内利用存储器刷新提示的方法,包括:
向持久存储器发出一个或多个写;
与所述一个或多个写一起发出存储器防护指令;
确定写是否命中由存储器控制器范围寄存器覆盖的地址;
如果是,则向PCM控制器发出写,并等待确认;
在接收到所述确认时完成所述存储器防护指令。
21.如权利要求20所述的方法,进一步包括:
如果所述地址未由范围寄存器覆盖,则继续正常执行模式。
22.如权利要求20所述的方法,其中所述PCM控制器是相变存储器和开关PCMS控制器。
23.一种计算机系统,包括:
处理器构件,具有从其刷新数据的高速缓存,所述数据与规定的系统地址范围关联;以及
PCM存储器控制器构件,用于管理对存储在PCM存储器装置构件中对应于所述规定的系统地址范围的数据的存取;
所述处理器构件确定对于规定的系统地址范围是否启用存储器刷新提示,其中如果对于所述规定的系统地址范围启用存储器刷新提示,则所述处理器构件向所述PCM存储器装置构件的PCM存储器控制器发送存储器刷新提示,并且其中所述PCM存储器控制器构件使用所述存储器刷新提示确定是否将所述刷新的数据保存到所述PCM存储器装置。
24.如权利要求23所述的计算机系统,其中所述PCM存储器装置构件是相变存储器和开关PCMS存储器装置。
25.如权利要求23所述的计算机系统,进一步包括:
所述PCM存储器控制器构件内的读和写缓冲器构件,用于缓冲要根据所述存储器刷新提示存储的数据。
26.如权利要求25所述的计算机系统,其中如果对于所述规定的系统地址范围不启用刷新提示,则所述PCM存储器控制器构件将所述刷新的数据保存到所述PCM存储器装置构件。
27.如权利要求26所述的计算机系统,包括:
存储器范围寄存器构件,包含启用/禁用位以指示对于规定的系统地址范围是否启用存储器刷新提示,所述启用/禁用位如果启用存储器刷新提示则具有第一值而如果禁用存储器刷新提示则具有第二值。
28.如权利要求27所述的计算机系统,进一步包括:
间接寻址表AIT构件,以标识对应于所述规定的系统地址范围的特定PCM存储块。
29.如权利要求28所述的计算机系统,进一步包括:
与所述系统地址范围关联的DIMM存储器通道构件。
30.一种机器可读介质,其上面存储指令,所述指令在被执行时导致所述机器执行如权利要求1-7、20-22中任一项所述的方法。
31.一种在计算机系统内利用存储器刷新提示的装置,包括:
用于从处理器高速缓存刷新数据的部件;
用于确定对于分配给相变存储器“PCM”存储器装置的规定的系统地址范围是否启用存储器刷新提示的部件;
用于如果对于所述规定的系统地址范围启用所述存储器刷新提示,则生成所述PCM存储器装置的PCM存储器控制器的存储器刷新提示的部件;以及
用于使用所述存储器刷新提示确定是否将刷新的数据保存到所述PCM存储器装置的部件。
32.如权利要求31所述的装置,进一步包括:
用于根据所述存储器刷新提示将所述刷新的数据保存到所述PCM存储器装置的部件。
33.如权利要求31所述的装置,其中所述PCM存储器装置包括相变存储器和开关“PCMS”存储器装置。
34.如权利要求31所述的装置,进一步包括:用于如果对于所述规定的系统地址范围不启用刷新提示,则将所述刷新的数据保存到所述PCM存储器装置的部件。
35.如权利要求31所述的装置,其中用于确定对于规定的系统地址范围是否启用存储器刷新提示的部件包括:用于读存储在存储器范围寄存器中的启用/禁用位的部件,所述启用/禁用位如果启用存储器刷新提示则具有第一值而如果禁用存储器刷新提示则具有第二值。
36.如权利要求31所述的装置,进一步包括:
用于使用间接寻址表AIT标识对应于所述规定的系统地址范围的特定PCM存储块的部件。
37.如权利要求31所述的装置,进一步包括:
用于规定用于所述系统地址范围的存储器通道的部件。
38.一种在计算机系统内利用存储器刷新提示的装置,包括:
用于向持久存储器发出一个或多个写的部件;
用于与所述一个或多个写一起发出存储器防护指令的部件;
用于确定写是否命中由存储器控制器范围寄存器覆盖的地址的部件;
用于如果是,则向PCM控制器发出写,并等待确认的部件;
用于在接收到所述确认时完成所述存储器防护指令的部件。
39.如权利要求38所述的装置,进一步包括:
用于如果所述地址未由范围寄存器覆盖,则继续正常执行模式的部件。
40.如权利要求38所述的装置,其中所述PCM控制器是相变存储器和开关PCMS控制器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/066492 WO2013095437A1 (en) | 2011-12-21 | 2011-12-21 | System and method for intelligently flushing data from a processor into a memory subsystem |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104115129A CN104115129A (zh) | 2014-10-22 |
CN104115129B true CN104115129B (zh) | 2017-09-08 |
Family
ID=48669089
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180076401.XA Active CN104115129B (zh) | 2011-12-21 | 2011-12-21 | 用于从处理器到存储器子系统智能刷新数据的系统和方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9269438B2 (zh) |
KR (1) | KR101636634B1 (zh) |
CN (1) | CN104115129B (zh) |
BR (1) | BR112014015051B1 (zh) |
DE (1) | DE112011106013T5 (zh) |
GB (1) | GB2514023B (zh) |
WO (1) | WO2013095437A1 (zh) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013101209A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Thin translation for system access of non volatile semicondcutor storage as random access memory |
US9244839B2 (en) * | 2013-07-26 | 2016-01-26 | Intel Corporation | Methods and apparatus for supporting persistent memory |
US10223026B2 (en) * | 2013-09-30 | 2019-03-05 | Vmware, Inc. | Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored |
WO2015047482A1 (en) * | 2013-09-30 | 2015-04-02 | Vmware, Inc. | Consistent and efficient mirroring of nonvolatile memory state in virtualized environments |
US10140212B2 (en) | 2013-09-30 | 2018-11-27 | Vmware, Inc. | Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed |
JP6131170B2 (ja) * | 2013-10-29 | 2017-05-17 | 株式会社日立製作所 | 計算機システム、及びデータ配置制御方法 |
GB2524063B (en) | 2014-03-13 | 2020-07-01 | Advanced Risc Mach Ltd | Data processing apparatus for executing an access instruction for N threads |
US10296240B2 (en) | 2014-04-28 | 2019-05-21 | Hewlett Packard Enterprise Development Lp | Cache management |
CN105354010B (zh) * | 2014-10-20 | 2018-10-30 | 威盛电子股份有限公司 | 处理器及由处理器执行硬件数据的方法 |
US9891916B2 (en) | 2014-10-20 | 2018-02-13 | Via Technologies, Inc. | Dynamically updating hardware prefetch trait to exclusive or shared in multi-memory access agent system |
US10049052B2 (en) | 2014-10-27 | 2018-08-14 | Nxp Usa, Inc. | Device having a cache memory |
US9767041B2 (en) * | 2015-05-26 | 2017-09-19 | Intel Corporation | Managing sectored cache |
US20160350534A1 (en) * | 2015-05-29 | 2016-12-01 | Intel Corporation | System, apparatus and method for controlling multiple trusted execution environments in a system |
US10152413B2 (en) | 2015-06-08 | 2018-12-11 | Samsung Electronics Co. Ltd. | Nonvolatile memory module and operation method thereof |
US10268382B2 (en) * | 2015-06-18 | 2019-04-23 | Mediatek Inc. | Processor memory architecture |
US10423330B2 (en) * | 2015-07-29 | 2019-09-24 | International Business Machines Corporation | Data collection in a multi-threaded processor |
KR102312399B1 (ko) * | 2015-09-07 | 2021-10-15 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
US20170123796A1 (en) * | 2015-10-29 | 2017-05-04 | Intel Corporation | Instruction and logic to prefetch information from a persistent memory |
US9824419B2 (en) * | 2015-11-20 | 2017-11-21 | International Business Machines Corporation | Automatically enabling a read-only cache in a language in which two arrays in two different variables may alias each other |
US10303372B2 (en) | 2015-12-01 | 2019-05-28 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and operation method thereof |
US10210088B2 (en) * | 2015-12-28 | 2019-02-19 | Nxp Usa, Inc. | Computing system with a cache invalidation unit, a cache invalidation unit and a method of operating a cache invalidation unit in a computing system |
US10025714B2 (en) * | 2016-09-30 | 2018-07-17 | Super Micro Computer, Inc. | Memory type range register with write-back cache strategy for NVDIMM memory locations |
KR102208058B1 (ko) | 2016-11-04 | 2021-01-27 | 삼성전자주식회사 | 저장 장치 및 이를 포함하는 데이터 처리 시스템 |
US10649896B2 (en) | 2016-11-04 | 2020-05-12 | Samsung Electronics Co., Ltd. | Storage device and data processing system including the same |
CN108241484B (zh) * | 2016-12-26 | 2021-10-15 | 上海寒武纪信息科技有限公司 | 基于高带宽存储器的神经网络计算装置和方法 |
CN109219804B (zh) * | 2016-12-28 | 2023-12-29 | 华为技术有限公司 | 非易失内存访问方法、装置和系统 |
US10229065B2 (en) * | 2016-12-31 | 2019-03-12 | Intel Corporation | Unified hardware and software two-level memory |
US9933963B1 (en) | 2017-03-01 | 2018-04-03 | Seagate Technology | Open block handling to reduce write errors |
US10664406B2 (en) | 2017-03-21 | 2020-05-26 | International Business Machines Corporation | Coordinated utilization of parallel paths to improve efficiency |
US10198354B2 (en) * | 2017-03-21 | 2019-02-05 | Intel Corporation | Apparatus, system, and method to flush modified data from a volatile memory to a persistent second memory |
US10198369B2 (en) * | 2017-03-24 | 2019-02-05 | Advanced Micro Devices, Inc. | Dynamic memory remapping to reduce row-buffer conflicts |
US20190019568A1 (en) * | 2017-07-12 | 2019-01-17 | Nanya Technology Corporation | Fuse-blowing system and method for operating the same |
US10678475B2 (en) | 2017-07-27 | 2020-06-09 | Hewlett Packard Enterprise Development Lp | Tracking write requests to media controllers |
US20190042445A1 (en) * | 2017-08-07 | 2019-02-07 | Intel Corporation | Technologies for caching persistent two-level memory data |
US11016669B2 (en) * | 2018-05-01 | 2021-05-25 | Qualcomm Incorporated | Persistent write data for energy-backed memory |
KR102057518B1 (ko) | 2018-05-23 | 2019-12-19 | 단국대학교 산학협력단 | 메모리 버스트에 정렬되지 않은 요청 제어를 위한 장치 및 방법 |
CN108959526B (zh) * | 2018-06-28 | 2021-10-15 | 郑州云海信息技术有限公司 | 日志管理方法以及日志管理装置 |
WO2020097868A1 (zh) * | 2018-11-15 | 2020-05-22 | 华为技术有限公司 | 控制从动态随机存储器中预取数据的方法、装置及系统 |
US11307904B2 (en) * | 2018-12-18 | 2022-04-19 | Ati Technologies Ulc | Configurable peripherals |
TWI688859B (zh) | 2018-12-19 | 2020-03-21 | 財團法人工業技術研究院 | 記憶體控制器與記憶體頁面管理方法 |
US11567877B2 (en) * | 2019-05-03 | 2023-01-31 | Intel Corporation | Memory utilized as both system memory and near memory |
CN113874848A (zh) | 2019-05-23 | 2021-12-31 | 慧与发展有限责任合伙企业 | 用于促进网络接口控制器(nic)中对加速器的操作管理的系统和方法 |
CN113139175A (zh) | 2020-01-19 | 2021-07-20 | 阿里巴巴集团控股有限公司 | 处理单元、电子设备以及安全控制方法 |
KR102470888B1 (ko) * | 2020-02-13 | 2022-11-25 | 주식회사 멤레이 | 지속성 지원 장치 및 방법, 그리고 컴퓨팅 장치 |
US11656967B2 (en) | 2020-02-13 | 2023-05-23 | MemRay Corporation | Method and apparatus for supporting persistence and computing device |
US11467988B1 (en) * | 2021-04-14 | 2022-10-11 | Apple Inc. | Memory fetch granule |
US11853213B2 (en) | 2021-04-28 | 2023-12-26 | Seagate Technology Llc | Intelligent management of ferroelectric memory in a data storage device |
US11899590B2 (en) | 2021-06-18 | 2024-02-13 | Seagate Technology Llc | Intelligent cache with read destructive memory cells |
US20220414001A1 (en) * | 2021-06-25 | 2022-12-29 | Microsoft Technology Licensing, Llc | Memory inclusivity management in computing systems |
US12026380B2 (en) * | 2022-06-30 | 2024-07-02 | Advanced Micro Devices, Inc. | Dynamic memory reconfiguration |
US20240202121A1 (en) * | 2022-12-20 | 2024-06-20 | Advanced Micro Devices, Inc. | Programmable Data Storage Memory Hierarchy |
CN116196351A (zh) * | 2023-02-27 | 2023-06-02 | 郝锋 | 一种小儿退热贴及其制备方法和应用 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1787015A (zh) * | 2004-12-07 | 2006-06-14 | 曾蒙汉 | 交通事故记录装置 |
CN1954300A (zh) * | 2004-05-26 | 2007-04-25 | 飞思卡尔半导体公司 | 高速缓存线存储器及其方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060143397A1 (en) * | 2004-12-29 | 2006-06-29 | O'bleness R F | Dirty line hint array for cache flushing |
US7752173B1 (en) * | 2005-12-16 | 2010-07-06 | Network Appliance, Inc. | Method and apparatus for improving data processing system performance by reducing wasted disk writes |
US8285940B2 (en) * | 2008-02-29 | 2012-10-09 | Cadence Design Systems, Inc. | Method and apparatus for high speed cache flushing in a non-volatile memory |
US8195887B2 (en) * | 2009-01-21 | 2012-06-05 | Globalfoundries Inc. | Processor power management and method |
KR20110048304A (ko) * | 2009-11-02 | 2011-05-11 | 삼성전자주식회사 | 솔더 리플로우에서 코드 데이터의 손실을 방지할 수 있는 방법과 그 장치들 |
-
2011
- 2011-12-21 WO PCT/US2011/066492 patent/WO2013095437A1/en active Application Filing
- 2011-12-21 CN CN201180076401.XA patent/CN104115129B/zh active Active
- 2011-12-21 KR KR1020147017885A patent/KR101636634B1/ko active IP Right Grant
- 2011-12-21 US US13/994,723 patent/US9269438B2/en active Active
- 2011-12-21 DE DE112011106013.0T patent/DE112011106013T5/de active Pending
- 2011-12-21 GB GB1411389.8A patent/GB2514023B/en active Active
- 2011-12-21 BR BR112014015051-6A patent/BR112014015051B1/pt active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1954300A (zh) * | 2004-05-26 | 2007-04-25 | 飞思卡尔半导体公司 | 高速缓存线存储器及其方法 |
CN1787015A (zh) * | 2004-12-07 | 2006-06-14 | 曾蒙汉 | 交通事故记录装置 |
Also Published As
Publication number | Publication date |
---|---|
GB2514023B (en) | 2019-07-03 |
GB2514023A (en) | 2014-11-12 |
KR101636634B1 (ko) | 2016-07-05 |
US20140297919A1 (en) | 2014-10-02 |
KR20140098220A (ko) | 2014-08-07 |
CN104115129A (zh) | 2014-10-22 |
WO2013095437A1 (en) | 2013-06-27 |
GB201411389D0 (en) | 2014-08-13 |
BR112014015051B1 (pt) | 2021-05-25 |
US9269438B2 (en) | 2016-02-23 |
BR112014015051A2 (pt) | 2017-06-13 |
DE112011106013T5 (de) | 2014-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104115129B (zh) | 用于从处理器到存储器子系统智能刷新数据的系统和方法 | |
CN103946826B (zh) | 用于在公共存储器通道上实现多级存储器层级的设备和方法 | |
CN103946812B (zh) | 用于实现多级别存储器分级体系的设备和方法 | |
CN104025060B (zh) | 支持近存储器和远存储器访问的存储器通道 | |
CN104050112B (zh) | 用于标记需要写回持久存储的非事务代码区的开头和结束的指令 | |
CN103999161B (zh) | 用于相变存储器漂移管理的设备和方法 | |
CN103946811B (zh) | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 | |
CN103946813B (zh) | 基于使用统计量追踪的远存储器访问信号的生成 | |
CN103988183B (zh) | 2级存储器分级结构中的存储器侧高速缓存的动态部分断电 | |
CN104106057B (zh) | 用非易失性随机存取存储器提供对休眠状态转变的即时响应的方法和系统 | |
CN103946810B (zh) | 配置非易失性随机访问存储器内分区的方法及计算机系统 | |
CN103946814B (zh) | 计算机系统中的非易失性随机存取存储器的自主初始化 | |
CN103946816B (zh) | 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) | |
CN104115230B (zh) | 基于高效pcms刷新机制的计算装置、方法和系统 | |
CN104126181A (zh) | 作为随机存取存储器的非易失性半导体存储装置的系统存取的薄变换 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |