CN103946826A - 用于在公共存储器通道上实现多级存储器层级的设备和方法 - Google Patents

用于在公共存储器通道上实现多级存储器层级的设备和方法 Download PDF

Info

Publication number
CN103946826A
CN103946826A CN201180075093.9A CN201180075093A CN103946826A CN 103946826 A CN103946826 A CN 103946826A CN 201180075093 A CN201180075093 A CN 201180075093A CN 103946826 A CN103946826 A CN 103946826A
Authority
CN
China
Prior art keywords
memory
storer
level
data
order
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.)
Granted
Application number
CN201180075093.9A
Other languages
English (en)
Other versions
CN103946826B (zh
Inventor
R.K.拉马努简
D.齐亚卡斯
D.J.齐默曼
M.J.库马
M.P.斯瓦米纳桑
B.N.库里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN103946826A publication Critical patent/CN103946826A/zh
Application granted granted Critical
Publication of CN103946826B publication Critical patent/CN103946826B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2024Rewritable memory not requiring erasing, e.g. resistive or ferroelectric RAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • G06F2212/2515Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/304In main memory subsystem

Abstract

本发明描述一种用于集成包含计算机系统内非易失性存储器层的存储器和存储装置层级的系统和方法。在一个实施例中,PCMS存储器装置被用作层级中的一层,有时被称为“远存储器”。较高性能存储器装置(诸如DRAM)放在远存储器前面,并且用于掩蔽远存储器的一些性能限制。这些较高性能存储器装置被称为“近存储器”。

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)空间内的存储页面之间的交织。
具体实施方式
在以下描述中,阐述了许多具体细节,诸如逻辑实现、操作码、规定操作数的构件、资源划分/共享/复制实现、系统组件的类型和相互关系以及逻辑划分/集成选择,以便提供对本发明的更透彻理解。然而,本领域技术人员将认识到,没有此类特定细节也可实践本发明。在其它实例中,控制结构、门级电路以及全软件指令序列未详细示出,以免模糊了本发明。本领域普通技术人员用所包含的描述将能够实现适当功能性,而无需过多实验。
在说明书中提到“一个实施例”、“实施例”、“示例实施例”等指示所描述的实施例可包含具体特征、结构或特性,但可能不一定每一个实施例都包含该具体特征、结构或特性。此外,此类短语不一定是指同一实施例。进一步说,当具体特征、结构或特性结合一实施例描述时,认为结合其它实施例实现此类特征、结构或特性在本领域技术人员的知识范围内,而不管是否明确描述了。
在以下说明书和权利要求书中,可以使用术语“耦合”和“连接”连同它们的派生词。应该理解,这些术语不打算作为彼此的同义词。“耦合”用于指示可以直接彼此物理接触或电气接触或者可以不直接彼此物理接触或电气接触的两个或更多单元彼此协同操作或交互作用。“连接”用于指示在彼此耦合的两个或更多单元之间建立通信。
带括号的文本以及具有虚线边框(例如大破折号、小破折号、点划线、点等)的块有时在本文用于例证向本发明实施例添加附加特征的可选操作/组件。然而,此类记号不应该被视为意味着这些是仅有的选项或仅有的可选操作/组件,和/或不应该被视为意味着具有实线边框的块在本发明的某些实施例中不是可选的。
介绍
存储器容量和性能要求随着处理器核以及新用途模型(诸如虚拟化)的数量增加而继续增加。此外,存储器功率和成本已经分别变成电子系统的总体功率和成本的重要组成部分。
本发明的一些实施例通过在存储器技术之间智能细分性能要求和容量要求来解决以上挑战。此方法的焦点在于通过如下方式来提供性能:利用相对小量的相对较高速的存储器(诸如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字节)的任何其它类型总线;以及
(6)如下一项或多项:
a)比非易失性存储器/存储装置技术(诸如闪存)更快的写速度;
b)非常高的读速度(比闪存更快,并且接近或相当于DRAM读速度);
c)直接可写(而不是在写数据之前需要擦除(用1盖写)(比如在SSD中使用的闪速存储器));
d)在故障之前较高(例如2或3)数量级的写持续时间(比在SSD中使用的引导ROM和闪存大);和/或
如上面所提到的,与闪速存储器形成对照(闪速存储器每次必须被重写并且擦除整个“块”),在任何给定实现中访问NVRAM所用的粒度级可取决于具体存储器控制器和具体存储器总线或耦合NVRAM的其它类型总线。例如,在NVRAM被用作系统存储器的一些实现中,尽管固有能力是以字节粒度来访问,仍可以以高速缓存行(例如64字节或128字节的高速缓存行)的粒度来访问NVRAM,这是因为高速缓存行是存储器子系统访问存储器的所用的级。从而,当NVRAM被部署在存储器子系统内时,可以以与在同一存储器子系统中使用的DRAM(例如“近存储器”)相同的粒度级来访问NVRAM。即便如此,由存储器控制器和存储器总线或其它类型总线对NVRAM的访问的粒度级也小于由闪存使用的块大小和I/O子系统的控制器和总线的访问大小的粒度级。
NVRAM也可结合耗损均匀化算法来考虑如下事实:在远存储器级的存储装置单元在若干次写访问之后开始耗尽(wear out),特别是在诸如在系统存储器实现中可出现大量写的情况下。由于用这种方式高循环计数块最有可能耗尽,因此耗损均匀化通过交换高循环计数块与低循环计数块的地址而在远存储单元上扩散写。要指出,大部分地址交换通常对应用程序而言是透明的,这是因为它由硬件、低级软件(例如低级驱动器或操作系统)或二者的组合来处置。
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)、转接卡(riser)/小背板(mezzanine)或计算机主板上)。近存储器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-106a对整个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用于例证当近存储器被配置为用于远存储器的MSC 150B时的操作。在此配置中,系统地址空间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高速缓存的NM 150B,并且直接去到NVRAM FM 151B。例如当应用不是高速缓存友好的时,或者需要以高速缓存行的粒度持久交付数据时,可使用此类模式。在一个实施例中,由处理器高速缓存150A和充当FM高速缓存的NM 150B执行的高速缓存彼此独立操作。因而,未在处理器高速缓存150A中高速缓存(并且在一些情况下其可能未准许在处理器高速缓存150A中高速缓存)的数据可在充当FM高速缓存的NM 150B中高速缓存并且反之亦然。从而,在处理器高速缓存中可被指定为“不可高速缓存”的某些数据可在充当FM高速缓存的NM 150B内高速缓存。
(3)近存储器读 - 高速缓存写旁路模式:这是上面模式的变型,其中允许从NVRAM FM 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 NVRAM 173。虽然不同实施例可按不同方式规定NVRAM模式,但 3描述了解码表333的使用。
3例证了可在其上实现本发明实施例的示范性计算机系统300。计算机系统300包含处理器310和存储器/存储装置子系统380,该存储器/存储装置子系统380具有用于系统存储器、大容量存储装置以及可选地固件存储器的NVRAM 142。在一个实施例中,NVRAM 142包括由计算机系统300用于存储数据、指令、状态和其它持久和非持久信息的整体系统存储器和存储装置层级。如之前所讨论的,NVRAM 142可配置成实现典型存储器和存储装置层级中系统存储器、大容量存储装置和固件存储器、TPM存储器等的角色。在 3的实施例中,NVRAM 142被划分成FM 151B、NVRAM大容量存储装置152A、BIOS NVRAM 173和TPM NVRAM 173。也考虑了具有不同角色的存储装置层级,并且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被更新为耗损均匀化算法的实现成分布存储器访问操作并由此降低NVRAM FM 151B上耗损的部分。备选地,AIT可以是存储在NVRAM控制器332内的单独表。
在从NVRAM FM 151B接收到所请求的数据时,NVRAM控制器332会将所请求的数据返回到MSC控制器124,MSC控制器124会将所述数据存储在充当FM高速缓存的MSC近存储器150B中,并且还通过I/O子系统115将所述数据发送到发出请求的处理器核101-104或者I/O装置。对于此数据的随后请求可从充当FM高速缓存的近存储器150B直接服务,直到它由某一其它NVRAM FM数据替换。
如所提到的,在一个实施例中,存储器写操作也首先去到MSC控制器124,MSC控制器124将它写入充当FM高速缓存的MSC近存储器150B中。在写回高速缓存模式中,当接收到写操作时,可不将数据直接发送到NVRAM FM 151B。例如,仅当充当FM高速缓存的MSC近存储器150B中存储数据的位置必须针对不同系统存储器地址再用于存储数据时,才可将数据发送到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,以控制对充当远存储器高速缓存的近存储器(NM)150B的访问;以及2)NVRAM控制器332,以控制对NVRAM 142的访问。尽管在 3中例证为单独单元,但MSC控制器124和NVRAM控制器332在逻辑上可形成IMC 331的一部分。
在例证的实施例中,MSC控制器124包含一组范围寄存器336,范围寄存器336规定供充当远存储器高速缓存的NM150B之用的操作模式(例如上面描述的写回高速缓存模式、近存储器旁路模式等)。在所例证的实施例中,DRAM 144被用作用于充当用于远存储器的高速缓存的NM 150B的存储器技术。响应于存储器访问请求,MSC控制器124可(根据在范围寄存器336中规定的操作模式)确定是否可从充当用于FM的高速缓存的NM150B服务于该请求,或者是否必须向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的高速缓存的NM 150B还是指向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子系统135)以执行所请求的数据访问。在又一实施例中,如果对应属性未从上游逻辑(例如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、2Duo和Quad、Xeon™或Itanium™处理器,它们全都可从加利福尼亚圣克拉拉的英特尔公司得到。备选地,处理器310可以来自另一公司,诸如加利福尼亚桑尼韦尔的ARM股份有限公司、加利福尼亚桑尼韦尔的MIPS技术公司等。处理器310可以是专用处理器,诸如例如网络处理器或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等等。处理器310可实现在包含在一个或多个封装内的一个或多个芯片上。处理器310可以是一个或多个衬底的一部分,和/或可使用若干工艺技术(诸如例如BiCMOS、CMOS或NMOS)中的任一技术实现在一个或多个衬底上。在 3中示出的示例中,处理器310具有芯片上系统(SOC)配置。
在一个实施例中,处理器310包含集成图形单元311,其包含用于执行图形命令(诸如3D或2D图形命令)的逻辑。虽然本发明的实施例不限于任何具体集成图形单元311,但在一个实施例中,图形单元311能够执行工业标准图形命令,诸如由开放式GL和/或直接X应用编程接口(API)(例如开放式GL4.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;用在无线局域网中,诸如基于IEEE 802.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的形式驻留在每一个DIMM 465上的统一架构。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 DIMM 411a和基于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实现耗损均匀化算法以考虑如下事实:在太多次写和/或擦除访问之后PCM 530a-530i的存储装置单元开始耗尽。耗损均匀化在PCM装置的存储单元上扩散写和擦除,例如通过迫使具有低循环计数的数据块偶尔移动,并由此允许高循环数据块被放在存储低循环数据块的存储单元中。通常,大多数块不循环,但高循环计数块最可能失败,并且耗损均匀化将高循环计数块的地址与低循环计数块的地址互换。耗损管理逻辑555可使用一个或多个计数器和寄存器来跟踪循环计数(例如每当检测到循环时,计数器可递增1并且结果可被存储在该组寄存器中)。
在一个实施例中,间接寻址逻辑563包含间接寻址表(AIT),其含有写操作应该被指向的PCM块的指示。AIT可用于自动在存储器用途与存储装置用途之间移动块。从软件角度看,对所有块的访问使用传统存储器加载/存储语义(即耗损均匀化和间接寻址操作对软件而言透明地发生)。在一个实施例中,AIT用于将由软件生成的SPA转换成PDA。当需要均匀地耗损PCMS装置时需要这种转换,数据将需要在PDA空间中到处移动以避免任何热点。当此类移动发生时,SAP与PDA之间的关系将改变,并且AIT将被更新以反映这种新转换。
在SAP到PCM的映射之后,调度器单元557调度对PCM装置530a-l的基础PCM操作(例如读和/或写),并且PCM协议引擎558生成执行读/写操作所需的电气信令。ECC单元562执行检错和纠错操作,并且数据缓冲器562暂时缓冲从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架构定义成使得多个不同系统划分方法是有可能的。这些方法落在两个广义桶中:
(1)分离架构:在此方案中,MSC控制器512位于CPU中,并且拦截所有系统存储器请求。存在两个单独的接口,它们从MSC离开CPU以连接到近存储器(例如DRAM)和远存储器(例如PCM)。每个接口对于特定类型存储器都是特制的,并且每个存储器可在性能和容量方面独立缩放。
(2)统一架构:在此方案中,单个存储器接口离开CPU,并且所有存储器请求都被发送到这个接口。MSC控制器512连同近存储器(例如DRAM)和远存储器(例如PCM)子系统在CPU外部被合并在此单个接口上。在一个实施例中,此存储器接口被特制成满足CPU的存储器性能要求,并支持事务的无序协议。近存储器要求和远存储器要求在这些接口的每个接口上以“统一”方式来满足。
在上面桶的范围内,多个不同分份选项是可行的,下面描述了其中一些。
分离示例
近存储器:DRR5 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与SAP区域667a关联;MSC高速缓存655和控制器657与SAP区域667b关联;MSC高速缓存661和控制器663与SAP区域667c关联;并且MSC高速缓存660和控制器662与SAP区域667d关联。例证了两个CPU 670和671,每个CPU具有4个核,分别是650和651,并且具有归属代理,分别是652和653。两个CPU 670和671分别经由远存储器接口659和665耦合到公共远存储器控制器666。
从而,在图6A中,整个SAP存储器空间被细分成多个区域,其中每个区域与具体MSC和控制器关联。在此实施例中,给定MSC可具有不连续SPA空间分配,但任何两个MSC都将没有交叠的SPA空间。而且,这些MSC与不交叠SAP空间关联,并且不需要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进一步对SAP 675(或其一部分)进行解码以生成标识分配给那个具体SAP空间的适当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)的备选)。
本发明的实施例可包含各种步骤,这些步骤上面已经描述了。这些步骤可用机器可执行指令实施,机器可执行指令可用于使通用或专用处理器执行这些步骤。备选地,这些步骤可由含有用于执行这些步骤的硬连线逻辑的特定硬件组件执行,或由已编程计算机组件和定制硬件组件的任何组合执行。
如本文所描述的,指令可以是指诸如配置成执行某些操作或具有预先确定的功能性的专用集成电路(ASIC)的特定硬件配置,或存储在用非暂态计算机可读介质实施的存储器中的软件指令。从而,附图中示出的技术可使用在一个或多个电子装置(例如终端站、网络元件等)上存储和执行的代码和数据来实现。此类电子器件使用计算机可读介质(诸如非暂态计算机机器可读存储介质(例如磁盘、光盘、随机存取存储器、只读存储器、闪速存储器装置、相变存储器)和暂态计算机机器可读通信介质(例如电、光、声或其它形式的传播信号——诸如载波、红外信号、数字信号等))存储和传递(在内部和/或通过网络与其它电子器件)代码和数据。此外,此类电子器件通常包含耦合到一个或多个其它组件(诸如一个或多个存储装置器件(非暂态机器可读存储介质)、用户输入/输出装置(例如键盘、触摸屏和/或显示器)和网络连接)的一个或多个处理器的集合。处理器集合与其它组件的耦合通常通过一个或多个总线和桥(也称为总线控制器)。存储装置器件和携带网络业务的信号分别表示一个或多个机器可读存储介质和机器可读通信介质。从而,给定电子器件的存储装置器件通常存储代码和/或数据以便在那个电子器件的一个或多个处理器的集合上执行。当然,本发明实施例的一个或多个部分可使用软件、固件和/或硬件的不同组合来实现。遍及此详细描述,为了说明的目的,阐述了大量特定细节,以便提供对本发明的透彻理解。然而,对于本领域技术人员,要明白,在没有这些特定细节中的一些细节的情况下也可实践本发明。在某些实例中,众所周知的结构和功能未详尽描述,以免使本发明的主题模糊了。因此,本发明的范围和精神应该依照如下权利要求书判断。

Claims (35)

1. 一种计算机系统,包括:
处理器,所述处理器具有多个用于执行指令并处理数据的核以及一个或多个用于根据第一高速缓存管理策略来高速缓存指令和数据的处理器高速缓存;
第一存储器通道,其包括耦合到所述处理器的第一组地址/控制和数据线路;
第二存储器通道,其包括耦合到所述处理器的第二组地址/控制和数据线路;
第一级第一存储器和第一级第二存储器,各具有与之关联的第一组特性,第一组特性包含第一读访问速度和第一写访问速度,第一级第一存储器耦合到第一存储器通道,并且第一级第二存储器耦合到第二存储器通道;以及
第二级第一存储器以通信方式耦合到第一存储器通道,并且第二级第二存储器以通信方式耦合到第二存储器通道,第二级第一存储器和第二级第二存储器具有与之关联的第二组特性,第二组特性包含第二读访问速度和第二写访问速度,第二读访问速度和第二写访问速度中的至少一个分别与第一读访问速度或第一写访问速度相比比较低,是非易失性的,使得如果电源被移除则第二级第一存储器和第二级第二存储器保存内容,其中第一级第一存储器的至少一部分被配置为用于存储在第二级第一存储器中的指令和数据的高速缓存,并且第一级第二存储器的至少一部分被配置为用于存储在第二级第二存储器中的指令和数据的高速缓存。
2. 如权利要求1所述的系统,其中第一组特性之一包括第一功耗级,并且第二组特性包括第二功耗级,第二功耗级与第一功耗级相比比较低。
3. 如权利要求1所述的系统,其中第一组特性之一包括第一密度,并且第二组特性包括第二密度,第二密度与第一密度相比比较高。
4. 如权利要求1所述的系统,其中第二组特性之一包括第二级第一存储器和第二级第二存储器直接可写,以致不需要在写之前擦除现有数据。
5. 如权利要求1所述的系统,其中第一级第一存储器和第一级第二存储器包括动态随机存取存储器(DRAM),并且其中所述一个或多个处理器高速缓存包括静态随机存取存储器(SRAM)。
6. 如权利要求5所述的系统,其中第二级第一存储器和第二级第二存储器包括相变存储器(PCM)。
7. 如权利要求6所述的系统,其中所述PCM存储器包括相变存储器和开关(PCMS)存储器。
8. 如权利要求1所述的系统,进一步包括:
大容量存储装置器件,其用于持久地存储指令和数据,所述大容量存储装置器件通过接口以通信方式耦合到第一级第一存储器和第一级第二存储器以及第二级第一存储器和第二级第二存储器。
9. 如权利要求1所述的系统,其中第一级第一存储器和第一级第二存储器在逻辑上被细分成第一部分和第二部分,第一部分被分配作为系统存储器,并且第二部分被分配作为根据第二高速缓存管理策略分别用于存储在第二级第一存储器和第二级第二存储器中的指令和数据的高速缓存。
10. 如权利要求1所述的系统,其中第一写访问速度与第二写访问速度相比比较高,但第一读访问速度近似于第二读访问速度。
11. 如权利要求10所述的系统,其中第一写访问速度至少是比第二写访问速度高的数量级。
12. 如权利要求1所述的系统,其中第一组特性包含第一读访问等待时间和第一写访问等待时间,并且第二组特性包含第二读访问等待时间和第二写访问等待时间,第二读访问等待时间和第二写访问等待时间中的至少一个分别与第一读访问等待时间或第二写访问等待时间相比比较高。
13. 如权利要求1所述的系统,其中第二级第一存储器和第二级第二存储器与第一级第一存储器和第一级第二存储器相比每单位大小制造起来更便宜。
14. 如权利要求1所述的系统,其中第一高速缓存管理策略独立于第二高速缓存管理策略而操作。
15. 如权利要求1所述的系统,其中第一存储器通道和第二存储器通道包括双数据速率(DDR)存储器通道。
16. 如权利要求15所述的系统,其中第一级第一存储器和第一级第二存储器包括第一双列直插式存储器模块(DIMM)和第二双列直插式存储器模块(DIMM),并且第二级第一存储器和第二级第二存储器包括第三DIMM和第四DIMM,第一DIMM和第二DIMM耦合到第一存储器通道上的各个插槽,并且第二DIMM和第三DIMM耦合到第二存储器通道上的各个插槽。
17. 一种计算机系统,包括:
处理器,所述处理器具有多个用于执行指令并处理数据的核以及一个或多个用于根据第一高速缓存管理策略来高速缓存指令和数据的处理器高速缓存;
第一存储器通道,其包括耦合到所述处理器的一组地址/控制和数据线路;
第一级存储器,其具有与之关联的第一组特性,第一组特性包含第一读访问速度和第一写访问速度,第一级存储器以通信方式耦合到第一存储器通道;以及
第二级存储器,其以通信方式耦合到第一存储器通道,第二级存储器具有与之关联的第二组特性,第二组特性包含第二读访问速度和第二写访问速度,第二读访问速度和第二写访问速度中的至少一个分别与第一读访问速度或第一写访问速度相比比较低,是非易失性的,使得如果电源被移除则第二级存储器保存其内容,是随机访问的并且具有字节寻址能力,使得存储在其中的指令或数据可以用相当于所述系统的存储器子系统所使用的粒度的粒度来随机访问。
18. 如权利要求17所述的系统,其中第一级存储器的至少一部分被配置为用于存储在第二级存储器中的指令和数据的高速缓存。
19. 如权利要求17所述的系统,其中第一组特性之一包括第一功耗级,并且第二组特性包括第二功耗级,第二功耗级与第一功耗级相比比较低。
20. 如权利要求17所述的系统,其中第一组特性之一包括第一密度,并且第二组特性包括第二密度,第二密度与第一密度相比比较高。
21. 如权利要求17所述的系统,其中第二组特性之一包括第二级存储器直接可写,以致不需要在写之前擦除现有数据。
22. 如权利要求17所述的系统,其中第一级存储器包括动态随机存取存储器(DRAM),并且其中所述一个或多个处理器高速缓存包括静态随机存取存储器(SRAM)。
23. 如权利要求22所述的系统,其中第二级存储器包括相变存储器(PCM)。
24. 如权利要求23所述的系统,其中所述PCM存储器包括相变存储器和开关(PCMS)。
25. 如权利要求17所述的系统,进一步包括:
大容量存储装置器件,其用于持久地存储指令和数据,所述大容量存储装置器件通过接口以通信方式耦合到第一级存储器以及第二级存储器。
26. 如权利要求17所述的系统,其中第一级存储器在逻辑上被细分成第一部分和第二部分,第一部分被分配作为系统存储器,并且第二部分被分配作为根据第二高速缓存管理策略用于存储在第二级存储器中的指令和数据的高速缓存。
27. 如权利要求17所述的系统,其中第一写访问速度与第二写访问速度相比比较高,但第一读访问速度近似于第二读访问速度。
28. 如权利要求27所述的系统,其中第一写访问速度至少是比第二写访问速度高的数量级。
29. 如权利要求17所述的系统,其中第一组特性包含第一读访问等待时间和第一写访问等待时间,并且第二组特性包含第二读访问等待时间和第二写访问等待时间,第二读访问等待时间和第二写访问等待时间中的至少一个分别与第一读访问等待时间或第二写访问等待时间相比比较高。
30. 如权利要求17所述的系统,其中第二级存储器与第一级存储器相比每单位大小制造起来更便宜。
31. 如权利要求17所述的系统,其中第一高速缓存管理策略独立于第二高速缓存管理策略而操作。
32. 如权利要求17所述的系统,其中所述存储器通道包括双数据速率(DDR)存储器通道。
33. 如权利要求32所述的系统,其中第一级存储器包括第一双列直插式存储器模块(DIMM),并且第二级存储器包括第二DIMM,第一DIMM和第二DIMM耦合到第一存储器通道上的各个插槽。
34. 如权利要求17所述的系统,进一步包括:
第二存储器通道,包括耦合到所述处理器的第二组地址/控制和数据线路;
第一级第二存储器以及第二级第二存储器,所述第一级第二存储器具有与之关联的相同第一组特性,并且所述第二级第二存储器具有与之关联的相同第二组特性,第一级存储器和第二级存储器以通信方式耦合到第二存储器通道。
35. 如权利要求34所述的系统,其中耦合到第一存储器通道的第一级存储器的至少一部分被配置为用于存储在耦合到第一存储器通道的第二级存储器中的指令和数据的高速缓存,并且其中耦合到第二存储器通道的第一级第二存储器的至少一部分被配置为用于存储在耦合到第二存储器通道的第二级第二存储器中的指令和数据的高速缓存。
CN201180075093.9A 2011-09-30 2011-09-30 用于在公共存储器通道上实现多级存储器层级的设备和方法 Expired - Fee Related CN103946826B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/054436 WO2013048500A1 (en) 2011-09-30 2011-09-30 Apparatus and method for implementing a multi-level memory hierarchy over common memory channels

Publications (2)

Publication Number Publication Date
CN103946826A true CN103946826A (zh) 2014-07-23
CN103946826B CN103946826B (zh) 2019-05-31

Family

ID=47996231

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180075093.9A Expired - Fee Related CN103946826B (zh) 2011-09-30 2011-09-30 用于在公共存储器通道上实现多级存储器层级的设备和方法

Country Status (5)

Country Link
US (1) US9317429B2 (zh)
EP (1) EP2761480A4 (zh)
CN (1) CN103946826B (zh)
TW (1) TWI594182B (zh)
WO (1) WO2013048500A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776358A (zh) * 2015-10-07 2017-05-31 三星电子株式会社 Dimm ssd寻址性能技术
CN107291392A (zh) * 2017-06-21 2017-10-24 郑州云海信息技术有限公司 一种固态硬盘及其读写方法
CN108292262A (zh) * 2015-12-03 2018-07-17 华为技术有限公司 计算机存储器管理方法和系统
WO2018141174A1 (en) * 2017-02-03 2018-08-09 Huawei Technologies Co., Ltd. Systems and methods for utilizing ddr4-dram chips in hybrid ddr5-dimms and for cascading ddr5-dimms
CN111831216A (zh) * 2019-04-18 2020-10-27 三星电子株式会社 包括镜像电路的存储器模块及其操作方法
CN116483288A (zh) * 2023-06-21 2023-07-25 苏州浪潮智能科技有限公司 内存控制设备、方法、装置以及服务器内存模组

Families Citing this family (117)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5520747B2 (ja) * 2010-08-25 2014-06-11 株式会社日立製作所 キャッシュを搭載した情報装置及びコンピュータ読み取り可能な記憶媒体
EP3364304B1 (en) 2011-09-30 2022-06-15 INTEL Corporation Memory channel that supports near memory and far memory access
CN103975287B (zh) 2011-12-13 2017-04-12 英特尔公司 使用非易失性随机存取存储器的服务器中的增强系统睡眠状态支持
WO2013095465A1 (en) 2011-12-21 2013-06-27 Intel Corporation High-performance storage structures and systems featuring multiple non-volatile memories
KR101572403B1 (ko) 2011-12-22 2015-11-26 인텔 코포레이션 메모리 채널 셧다운에 의한 전력 절약
US20130166865A1 (en) * 2011-12-22 2013-06-27 Alex Lemberg Systems and Methods for Managing Parallel Access to Multiple Storage Systems
CN104137084B (zh) 2011-12-28 2017-08-11 英特尔公司 提高耐久性和抗攻击性的用于pcm缓存的有效动态随机化地址重映射
CN104126181A (zh) * 2011-12-30 2014-10-29 英特尔公司 作为随机存取存储器的非易失性半导体存储装置的系统存取的薄变换
US9418700B2 (en) 2012-06-29 2016-08-16 Intel Corporation Bad block management mechanism
US20140101370A1 (en) 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
CN104704569B (zh) * 2012-12-19 2017-11-14 慧与发展有限责任合伙企业 Nvram路径选择
US10445229B1 (en) * 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
CN103970219B (zh) * 2013-01-30 2018-03-20 鸿富锦精密电子(天津)有限公司 存储设备及支持所述存储设备的主板
US9032099B1 (en) * 2013-12-12 2015-05-12 Intel Corporation Writeback mechanisms for improving far memory utilization in multi-level memory architectures
US9135184B2 (en) * 2013-12-12 2015-09-15 International Business Machines Corporation Load-through fault mechanism
WO2015116133A2 (en) * 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. Remapping memory locations in a memory array
US9773547B2 (en) 2014-01-31 2017-09-26 Hewlett Packard Enterprise Development Lp Non-volatile memory with multiple latency tiers
GB2524063B (en) 2014-03-13 2020-07-01 Advanced Risc Mach Ltd Data processing apparatus for executing an access instruction for N threads
JP6093322B2 (ja) * 2014-03-18 2017-03-08 株式会社東芝 キャッシュメモリおよびプロセッサシステム
US10002043B2 (en) 2014-08-19 2018-06-19 Samsung Electronics Co., Ltd. Memory devices and modules
US10002044B2 (en) 2014-08-19 2018-06-19 Samsung Electronics Co., Ltd. Memory devices and modules
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US11232855B2 (en) * 2014-09-23 2022-01-25 Airstrip Ip Holdings, Llc Near-real-time transmission of serial patient data to third-party systems
US10126950B2 (en) * 2014-12-22 2018-11-13 Intel Corporation Allocating and configuring persistent memory
JP2016167215A (ja) * 2015-03-10 2016-09-15 株式会社東芝 メモリ装置
US10204047B2 (en) * 2015-03-27 2019-02-12 Intel Corporation Memory controller for multi-level system memory with coherency unit
US10115446B1 (en) 2015-04-21 2018-10-30 Spin Transfer Technologies, Inc. Spin transfer torque MRAM device with error buffer
US10073659B2 (en) 2015-06-26 2018-09-11 Intel Corporation Power management circuit with per activity weighting and multiple throttle down thresholds
US10387259B2 (en) 2015-06-26 2019-08-20 Intel Corporation Instant restart in non volatile system memory computing systems with embedded programmable data checking
US9916091B2 (en) 2015-07-13 2018-03-13 Samsung Electronics Co., Ltd. Memory system architecture
US10163479B2 (en) 2015-08-14 2018-12-25 Spin Transfer Technologies, Inc. Method and apparatus for bipolar memory write-verify
CN106547701B (zh) * 2015-09-17 2020-01-10 慧荣科技股份有限公司 记忆装置及数据读取方法
TWI662413B (zh) * 2015-09-17 2019-06-11 慧榮科技股份有限公司 記憶裝置及資料讀取方法
US10108549B2 (en) 2015-09-23 2018-10-23 Intel Corporation Method and apparatus for pre-fetching data in a system having a multi-level system memory
US10185501B2 (en) 2015-09-25 2019-01-22 Intel Corporation Method and apparatus for pinning memory pages in a multi-level system memory
US10261901B2 (en) 2015-09-25 2019-04-16 Intel Corporation Method and apparatus for unneeded block prediction in a computing system having a last level cache and a multi-level system memory
US10445003B2 (en) 2015-10-15 2019-10-15 SK Hynix Inc. Memory system for dualizing first memory based on operation mode
US11138120B2 (en) 2015-10-16 2021-10-05 SK Hynix Inc. Memory system
US9990143B2 (en) 2015-10-16 2018-06-05 SK Hynix Inc. Memory system
US10169242B2 (en) 2015-10-16 2019-01-01 SK Hynix Inc. Heterogeneous package in DIMM
US9990283B2 (en) 2015-10-16 2018-06-05 SK Hynix Inc. Memory system
US9786389B2 (en) 2015-10-16 2017-10-10 SK Hynix Inc. Memory system
US9977604B2 (en) 2015-10-16 2018-05-22 SK Hynix Inc. Memory system
US10466909B2 (en) 2015-10-16 2019-11-05 SK Hynix Inc. Memory system
US10191664B2 (en) 2015-10-16 2019-01-29 SK Hynix Inc. Memory system
US9977606B2 (en) 2015-10-16 2018-05-22 SK Hynix Inc. Memory system
US9977605B2 (en) 2015-10-16 2018-05-22 SK Hynix Inc. Memory system
US10180796B2 (en) 2015-10-16 2019-01-15 SK Hynix Inc. Memory system
US9792224B2 (en) 2015-10-23 2017-10-17 Intel Corporation Reducing latency by persisting data relationships in relation to corresponding data in 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
US10033411B2 (en) 2015-11-20 2018-07-24 Intel Corporation Adjustable error protection for stored data
US10303372B2 (en) 2015-12-01 2019-05-28 Samsung Electronics Co., Ltd. Nonvolatile memory device and operation method thereof
US10019367B2 (en) 2015-12-14 2018-07-10 Samsung Electronics Co., Ltd. Memory module, computing system having the same, and method for testing tag error thereof
US9847105B2 (en) 2016-02-01 2017-12-19 Samsung Electric Co., Ltd. Memory package, memory module including the same, and operation method of memory package
US10558570B2 (en) * 2016-03-14 2020-02-11 Intel Corporation Concurrent accesses of asymmetrical memory sources
US20180088853A1 (en) * 2016-09-26 2018-03-29 Intel Corporation Multi-Level System Memory Having Near Memory Space Capable Of Behaving As Near Memory Cache or Fast Addressable System Memory Depending On System State
US10866897B2 (en) * 2016-09-26 2020-12-15 Samsung Electronics Co., Ltd. Byte-addressable flash-based memory module with prefetch mode that is adjusted based on feedback from prefetch accuracy that is calculated by comparing first decoded address and second decoded address, where the first decoded address is sent to memory controller, and the second decoded address is sent to prefetch buffer
US10437723B2 (en) 2016-09-27 2019-10-08 Spin Memory, Inc. Method of flushing the contents of a dynamic redundancy register to a secure storage area during a power down in a memory device
US10446210B2 (en) 2016-09-27 2019-10-15 Spin Memory, Inc. Memory instruction pipeline with a pre-read stage for a write operation for reducing power consumption in a memory device that uses dynamic redundancy registers
US10192602B2 (en) 2016-09-27 2019-01-29 Spin Transfer Technologies, Inc. Smart cache design to prevent overflow for a memory device with a dynamic redundancy register
US10437491B2 (en) 2016-09-27 2019-10-08 Spin Memory, Inc. Method of processing incomplete memory operations in a memory device during a power up sequence and a power down sequence using a dynamic redundancy register
US10192601B2 (en) 2016-09-27 2019-01-29 Spin Transfer Technologies, Inc. Memory instruction pipeline with an additional write stage in a memory device that uses dynamic redundancy registers
US10546625B2 (en) 2016-09-27 2020-01-28 Spin Memory, Inc. Method of optimizing write voltage based on error buffer occupancy
US10460781B2 (en) 2016-09-27 2019-10-29 Spin Memory, Inc. Memory device with a dual Y-multiplexer structure for performing two simultaneous operations on the same row of a memory bank
US10366774B2 (en) 2016-09-27 2019-07-30 Spin Memory, Inc. Device with dynamic redundancy registers
US10360964B2 (en) 2016-09-27 2019-07-23 Spin Memory, Inc. Method of writing contents in memory during a power up sequence using a dynamic redundancy register in a memory device
US10818331B2 (en) 2016-09-27 2020-10-27 Spin Memory, Inc. Multi-chip module for MRAM devices with levels of dynamic redundancy registers
US10628316B2 (en) * 2016-09-27 2020-04-21 Spin Memory, Inc. Memory device with a plurality of memory banks where each memory bank is associated with a corresponding memory instruction pipeline and a dynamic redundancy register
US10229065B2 (en) * 2016-12-31 2019-03-12 Intel Corporation Unified hardware and software two-level memory
CN108733311B (zh) * 2017-04-17 2021-09-10 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
US10437482B2 (en) 2017-07-25 2019-10-08 Samsung Electronics Co., Ltd. Coordinated near-far memory controller for process-in-HBM
US10747463B2 (en) 2017-08-04 2020-08-18 Micron Technology, Inc. Apparatuses and methods for accessing hybrid memory system
US11188467B2 (en) 2017-09-28 2021-11-30 Intel Corporation Multi-level system memory with near memory capable of storing compressed cache lines
US10656994B2 (en) 2017-10-24 2020-05-19 Spin Memory, Inc. Over-voltage write operation of tunnel magnet-resistance (“TMR”) memory device and correcting failure bits therefrom by using on-the-fly bit failure detection and bit redundancy remapping techniques
US10529439B2 (en) 2017-10-24 2020-01-07 Spin Memory, Inc. On-the-fly bit failure detection and bit redundancy remapping techniques to correct for fixed bit defects
US10481976B2 (en) 2017-10-24 2019-11-19 Spin Memory, Inc. Forcing bits as bad to widen the window between the distributions of acceptable high and low resistive bits thereby lowering the margin and increasing the speed of the sense amplifiers
US10489245B2 (en) 2017-10-24 2019-11-26 Spin Memory, Inc. Forcing stuck bits, waterfall bits, shunt bits and low TMR bits to short during testing and using on-the-fly bit failure detection and bit redundancy remapping techniques to correct them
KR102406669B1 (ko) 2017-11-08 2022-06-08 삼성전자주식회사 메모리 컨트롤러 및 이를 포함하는 스토리지 장치
US10860244B2 (en) 2017-12-26 2020-12-08 Intel Corporation Method and apparatus for multi-level memory early page demotion
US10424726B2 (en) 2017-12-28 2019-09-24 Spin Memory, Inc. Process for improving photoresist pillar adhesion during MRAM fabrication
US10811594B2 (en) 2017-12-28 2020-10-20 Spin Memory, Inc. Process for hard mask development for MRAM pillar formation using photolithography
US10395712B2 (en) 2017-12-28 2019-08-27 Spin Memory, Inc. Memory array with horizontal source line and sacrificial bitline per virtual source
US10360962B1 (en) 2017-12-28 2019-07-23 Spin Memory, Inc. Memory array with individually trimmable sense amplifiers
US10395711B2 (en) 2017-12-28 2019-08-27 Spin Memory, Inc. Perpendicular source and bit lines for an MRAM array
US10891997B2 (en) 2017-12-28 2021-01-12 Spin Memory, Inc. Memory array with horizontal source line and a virtual source line
US10546624B2 (en) 2017-12-29 2020-01-28 Spin Memory, Inc. Multi-port random access memory
US10840436B2 (en) 2017-12-29 2020-11-17 Spin Memory, Inc. Perpendicular magnetic anisotropy interface tunnel junction devices and methods of manufacture
US10367139B2 (en) 2017-12-29 2019-07-30 Spin Memory, Inc. Methods of manufacturing magnetic tunnel junction devices
US10424723B2 (en) 2017-12-29 2019-09-24 Spin Memory, Inc. Magnetic tunnel junction devices including an optimization layer
US10784439B2 (en) 2017-12-29 2020-09-22 Spin Memory, Inc. Precessional spin current magnetic tunnel junction devices and methods of manufacture
US10886330B2 (en) 2017-12-29 2021-01-05 Spin Memory, Inc. Memory device having overlapping magnetic tunnel junctions in compliance with a reference pitch
US10840439B2 (en) 2017-12-29 2020-11-17 Spin Memory, Inc. Magnetic tunnel junction (MTJ) fabrication methods and systems
US10438996B2 (en) 2018-01-08 2019-10-08 Spin Memory, Inc. Methods of fabricating magnetic tunnel junctions integrated with selectors
US10438995B2 (en) 2018-01-08 2019-10-08 Spin Memory, Inc. Devices including magnetic tunnel junctions integrated with selectors
US10446744B2 (en) 2018-03-08 2019-10-15 Spin Memory, Inc. Magnetic tunnel junction wafer adaptor used in magnetic annealing furnace and method of using the same
US10784437B2 (en) 2018-03-23 2020-09-22 Spin Memory, Inc. Three-dimensional arrays with MTJ devices including a free magnetic trench layer and a planar reference magnetic layer
US11107978B2 (en) 2018-03-23 2021-08-31 Spin Memory, Inc. Methods of manufacturing three-dimensional arrays with MTJ devices including a free magnetic trench layer and a planar reference magnetic layer
US11107974B2 (en) 2018-03-23 2021-08-31 Spin Memory, Inc. Magnetic tunnel junction devices including a free magnetic trench layer and a planar reference magnetic layer
US20190296223A1 (en) 2018-03-23 2019-09-26 Spin Memory, Inc. Methods of Manufacturing Three-Dimensional Arrays with Magnetic Tunnel Junction Devices Including an Annular Free Magnetic Layer and a Planar Reference Magnetic Layer
US11099995B2 (en) 2018-03-28 2021-08-24 Intel Corporation Techniques for prefetching data to a first level of memory of a hierarchical arrangement of memory
US11163707B2 (en) 2018-04-23 2021-11-02 International Business Machines Corporation Virtualization in hierarchical cortical emulation frameworks
US10411185B1 (en) 2018-05-30 2019-09-10 Spin Memory, Inc. Process for creating a high density magnetic tunnel junction array test platform
US10593396B2 (en) 2018-07-06 2020-03-17 Spin Memory, Inc. Multi-bit cell read-out techniques for MRAM cells with mixed pinned magnetization orientations
US10559338B2 (en) 2018-07-06 2020-02-11 Spin Memory, Inc. Multi-bit cell read-out techniques
US10600478B2 (en) 2018-07-06 2020-03-24 Spin Memory, Inc. Multi-bit cell read-out techniques for MRAM cells with mixed pinned magnetization orientations
US10692569B2 (en) 2018-07-06 2020-06-23 Spin Memory, Inc. Read-out techniques for multi-bit cells
US10650875B2 (en) 2018-08-21 2020-05-12 Spin Memory, Inc. System for a wide temperature range nonvolatile memory
US10699761B2 (en) 2018-09-18 2020-06-30 Spin Memory, Inc. Word line decoder memory architecture
US10971680B2 (en) 2018-10-01 2021-04-06 Spin Memory, Inc. Multi terminal device stack formation methods
US11621293B2 (en) 2018-10-01 2023-04-04 Integrated Silicon Solution, (Cayman) Inc. Multi terminal device stack systems and methods
US11107979B2 (en) 2018-12-28 2021-08-31 Spin Memory, Inc. Patterned silicide structures and methods of manufacture
US11055228B2 (en) 2019-01-31 2021-07-06 Intel Corporation Caching bypass mechanism for a multi-level memory
US11893276B2 (en) 2020-05-21 2024-02-06 Micron Technology, Inc. Apparatuses and methods for data management in a memory device
US11687468B2 (en) 2020-07-02 2023-06-27 International Business Machines Corporation Method and apparatus for securing memory modules
US11899590B2 (en) 2021-06-18 2024-02-13 Seagate Technology Llc Intelligent cache with read destructive memory cells
US11860670B2 (en) 2021-12-16 2024-01-02 Intel Corporation Accessing a memory using index offset information

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101237546A (zh) * 2007-11-13 2008-08-06 东南大学 应用于车载环境的高速音视频海量存储方法及其装置
US20080282032A1 (en) * 2006-07-18 2008-11-13 Xiaowei Shen Adaptive mechanisms and methods for supplying volatile data copies in multiprocessor systems
CN101957726A (zh) * 2009-07-16 2011-01-26 恒忆有限责任公司 双列直插式存储模块中的相变存储器
CN101989183A (zh) * 2010-10-15 2011-03-23 浙江大学 混合主存储器实现节能存储的方法

Family Cites Families (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4713755A (en) 1985-06-28 1987-12-15 Hewlett-Packard Company Cache memory consistency control with explicit software instructions
US5974576A (en) 1996-05-10 1999-10-26 Sun Microsystems, Inc. On-line memory monitoring system and methods
JP3210590B2 (ja) 1996-11-29 2001-09-17 株式会社日立製作所 マルチプロセッサシステムおよびキャッシュコヒーレンシ制御方法
US5917743A (en) 1997-10-17 1999-06-29 Waferscale Integration, Inc. Content-addressable memory (CAM) for a FLASH memory array
US6202129B1 (en) 1998-03-31 2001-03-13 Intel Corporation Shared cache structure for temporal and non-temporal information using indicative bits
JP3098486B2 (ja) 1998-03-31 2000-10-16 山形日本電気株式会社 不揮発性半導体記憶装置
US6038166A (en) 1998-04-01 2000-03-14 Invox Technology High resolution multi-bit-per-cell memory
US5912839A (en) 1998-06-23 1999-06-15 Energy Conversion Devices, Inc. Universal memory element and method of programming same
US6868472B1 (en) 1999-10-01 2005-03-15 Fujitsu Limited Method of Controlling and addressing a cache memory which acts as a random address memory to increase an access speed to a main memory
US8341332B2 (en) 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US6259627B1 (en) 2000-01-27 2001-07-10 Multi Level Memory Technology Read and write operations using constant row line voltage and variable column line load
US6704840B2 (en) 2001-06-19 2004-03-09 Intel Corporation Computer system and method of computer initialization with caching of option BIOS
US6804799B2 (en) 2001-06-26 2004-10-12 Advanced Micro Devices, Inc. Using type bits to track storage of ECC and predecode bits in a level two cache
US7752423B2 (en) 2001-06-28 2010-07-06 Intel Corporation Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor
EP1387274A3 (en) 2002-07-31 2004-08-11 Texas Instruments Incorporated Memory management for local variables
EP1453062B1 (en) 2003-02-27 2006-06-28 STMicroelectronics S.r.l. Built-in testing methodology in flash memory
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
US7269708B2 (en) 2004-04-20 2007-09-11 Rambus Inc. Memory controller for non-homogenous memory system
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
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
CN101501779B (zh) 2006-05-12 2013-09-11 苹果公司 具有自适应容量的存储设备
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
WO2008040028A2 (en) * 2006-09-28 2008-04-03 Virident Systems, Inc. Systems, methods, and apparatus with programmable memory control for heterogeneous main memory
US7555605B2 (en) 2006-09-28 2009-06-30 Freescale Semiconductor, Inc. Data processing system having cache memory debugging support and method therefor
US8683139B2 (en) 2006-10-31 2014-03-25 Hewlett-Packard Development Company, L.P. Cache and method for cache bypass functionality
US7913055B2 (en) 2006-11-04 2011-03-22 Virident Systems Inc. Seamless application access to hybrid main memory
US7554855B2 (en) * 2006-12-20 2009-06-30 Mosaid Technologies Incorporated Hybrid solid-state memory system having volatile and non-volatile memory
TW200845014A (en) 2007-02-28 2008-11-16 Aplus Flash Technology Inc A bit line structure for a multilevel, dual-sided nonvolatile memory cell array
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
WO2008150927A2 (en) 2007-05-30 2008-12-11 Schooner Information Technology System including a fine-grained memory and a less-fine-grained memory
US8296534B1 (en) * 2007-06-29 2012-10-23 Emc Corporation Techniques for using flash-based memory in recovery processing
TWI327319B (en) 2007-07-03 2010-07-11 Macronix Int Co Ltd Double programming methods of a multi-level-cell nonvolatile memory
KR101498673B1 (ko) 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
US8108609B2 (en) * 2007-12-04 2012-01-31 International Business Machines Corporation Structure for implementing dynamic refresh protocols for DRAM based cache
EP2077559B1 (en) 2007-12-27 2012-11-07 Hagiwara Solutions Co., Ltd. Refresh method of a flash memory
TWI373768B (en) 2008-02-05 2012-10-01 Phison Electronics Corp System, controller and method for data storage
EP2128195A1 (en) 2008-05-27 2009-12-02 Borealis AG Strippable semiconductive composition comprising low melt temperature polyolefin
US20090313416A1 (en) 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
US9575889B2 (en) 2008-07-03 2017-02-21 Hewlett Packard Enterprise Development Lp Memory server
JP5581577B2 (ja) 2008-08-29 2014-09-03 富士通株式会社 データ処理装置
US9152569B2 (en) 2008-11-04 2015-10-06 International Business Machines Corporation Non-uniform cache architecture (NUCA)
KR101001147B1 (ko) 2008-12-12 2010-12-17 주식회사 하이닉스반도체 상변화 메모리 장치
US8375241B2 (en) 2009-04-02 2013-02-12 Intel Corporation Method and system to improve the operations of a registered memory module
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
US8159881B2 (en) 2009-06-03 2012-04-17 Marvell World Trade Ltd. Reference voltage optimization for flash memory
US9123409B2 (en) 2009-06-11 2015-09-01 Micron Technology, Inc. Memory device for a hierarchical memory architecture
US9208084B2 (en) 2009-06-29 2015-12-08 Oracle America, Inc. Extended main memory hierarchy having flash memory for page fault handling
JP2011022657A (ja) 2009-07-13 2011-02-03 Fujitsu Ltd メモリシステムおよび情報処理装置
EP2455865B1 (en) 2009-07-17 2020-03-04 Toshiba Memory Corporation Memory management device
US8077515B2 (en) 2009-08-25 2011-12-13 Micron Technology, Inc. Methods, devices, and systems for dealing with threshold voltage change in memory devices
WO2011042939A1 (en) 2009-10-09 2011-04-14 Hitachi, Ltd. Storage control device building a logical unit based on storage devices coupled with different switches
US8832415B2 (en) 2010-01-08 2014-09-09 International Business Machines Corporation Mapping virtual addresses to different physical addresses for value disambiguation for thread memory access requests
JP2011108306A (ja) 2009-11-16 2011-06-02 Sony Corp 不揮発性メモリおよびメモリシステム
US8230172B2 (en) 2009-12-03 2012-07-24 Intel Corporation Gather and scatter operations in multi-level memory hierarchy
US8489803B2 (en) 2009-12-14 2013-07-16 Smsc Holdings S.A.R.L. Efficient use of flash memory in flash drives
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
JP2011198091A (ja) 2010-03-19 2011-10-06 Toshiba Corp 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム
US9189385B2 (en) 2010-03-22 2015-11-17 Seagate Technology Llc Scalable data structures for control and management of non-volatile storage
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
US20120221785A1 (en) 2011-02-28 2012-08-30 Jaewoong Chung Polymorphic Stacked DRAM Memory Architecture
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
US8935484B2 (en) * 2011-03-31 2015-01-13 Hewlett-Packard Development Company, L.P. Write-absorbing buffer for non-volatile memory
US8607089B2 (en) 2011-05-19 2013-12-10 Intel Corporation Interface for storage device access over memory bus
CN102209262B (zh) 2011-06-03 2017-03-22 中兴通讯股份有限公司 一种内容调度的方法、装置和系统
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
US8767482B2 (en) 2011-08-18 2014-07-01 Micron Technology, Inc. Apparatuses, devices and methods for sensing a snapback event in a circuit
EP2761471B1 (en) 2011-09-30 2017-10-25 Intel Corporation Statistical wear leveling for non-volatile system memory
US20130205065A1 (en) 2012-02-02 2013-08-08 Lsi Corporation Methods and structure for an improved solid-state drive for use in caching applications
US9311228B2 (en) 2012-04-04 2016-04-12 International Business Machines Corporation Power reduction in server memory system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080282032A1 (en) * 2006-07-18 2008-11-13 Xiaowei Shen Adaptive mechanisms and methods for supplying volatile data copies in multiprocessor systems
CN101237546A (zh) * 2007-11-13 2008-08-06 东南大学 应用于车载环境的高速音视频海量存储方法及其装置
CN101957726A (zh) * 2009-07-16 2011-01-26 恒忆有限责任公司 双列直插式存储模块中的相变存储器
CN101989183A (zh) * 2010-10-15 2011-03-23 浙江大学 混合主存储器实现节能存储的方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776358A (zh) * 2015-10-07 2017-05-31 三星电子株式会社 Dimm ssd寻址性能技术
CN106776358B (zh) * 2015-10-07 2021-10-26 三星电子株式会社 Dimm ssd寻址性能技术
CN108292262A (zh) * 2015-12-03 2018-07-17 华为技术有限公司 计算机存储器管理方法和系统
WO2018141174A1 (en) * 2017-02-03 2018-08-09 Huawei Technologies Co., Ltd. Systems and methods for utilizing ddr4-dram chips in hybrid ddr5-dimms and for cascading ddr5-dimms
US10628343B2 (en) 2017-02-03 2020-04-21 Futurewei Technologies, Inc. Systems and methods for utilizing DDR4-DRAM chips in hybrid DDR5-DIMMs and for cascading DDR5-DIMMs
CN107291392A (zh) * 2017-06-21 2017-10-24 郑州云海信息技术有限公司 一种固态硬盘及其读写方法
CN111831216A (zh) * 2019-04-18 2020-10-27 三星电子株式会社 包括镜像电路的存储器模块及其操作方法
CN111831216B (zh) * 2019-04-18 2024-04-05 三星电子株式会社 包括镜像电路的存储器模块及其操作方法
CN116483288A (zh) * 2023-06-21 2023-07-25 苏州浪潮智能科技有限公司 内存控制设备、方法、装置以及服务器内存模组

Also Published As

Publication number Publication date
TW201329857A (zh) 2013-07-16
EP2761480A4 (en) 2015-06-24
CN103946826B (zh) 2019-05-31
US20130275682A1 (en) 2013-10-17
EP2761480A1 (en) 2014-08-06
US9317429B2 (en) 2016-04-19
WO2013048500A1 (en) 2013-04-04
TWI594182B (zh) 2017-08-01

Similar Documents

Publication Publication Date Title
CN103946826A (zh) 用于在公共存储器通道上实现多级存储器层级的设备和方法
CN103946812B (zh) 用于实现多级别存储器分级体系的设备和方法
CN103946811B (zh) 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
CN104115129A (zh) 用于从处理器到存储器子系统智能刷新数据的系统和方法
CN103999161B (zh) 用于相变存储器漂移管理的设备和方法
CN103946813B (zh) 基于使用统计量追踪的远存储器访问信号的生成
CN103988183B (zh) 2级存储器分级结构中的存储器侧高速缓存的动态部分断电
CN104025060B (zh) 支持近存储器和远存储器访问的存储器通道
CN104050112B (zh) 用于标记需要写回持久存储的非事务代码区的开头和结束的指令
CN104106057B (zh) 用非易失性随机存取存储器提供对休眠状态转变的即时响应的方法和系统
CN103946816B (zh) 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram)
CN103946810B (zh) 配置非易失性随机访问存储器内分区的方法及计算机系统
CN104126181A (zh) 作为随机存取存储器的非易失性半导体存储装置的系统存取的薄变换
CN104011691A (zh) 非易失性ram盘
CN104115230B (zh) 基于高效pcms刷新机制的计算装置、方法和系统

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190531

Termination date: 20210930

CF01 Termination of patent right due to non-payment of annual fee