CN103946812B - 用于实现多级别存储器分级体系的设备和方法 - Google Patents
用于实现多级别存储器分级体系的设备和方法 Download PDFInfo
- Publication number
- CN103946812B CN103946812B CN201180075118.5A CN201180075118A CN103946812B CN 103946812 B CN103946812 B CN 103946812B CN 201180075118 A CN201180075118 A CN 201180075118A CN 103946812 B CN103946812 B CN 103946812B
- Authority
- CN
- China
- Prior art keywords
- memory
- storage
- level
- pcm
- data
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40615—Internal triggering or timing of refresh, e.g. hidden refresh, self refresh, pseudo-SRAMs
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2024—Rewritable memory not requiring erasing, e.g. resistive or ferroelectric RAM
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
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)映像)期间初始化关键***部件的初始指令通常被存储在闪存存储器装置中。当前在市场中可得的闪存存储器装置一般具有有限速度(例如,50MHz)。该速度由用于读协议的开销开销进一步降低(例如,2.5MHz)。为了使BIOS执行速度加速,常规的处理器一般在引导过程的预先可扩展固件接口(PEI)阶段期间缓存BIOS代码的一部分。处理器缓存的大小对用在PEI阶段的BIOS代码(也被称作“PEIBIOS 代码”)的大小设置了限制。
B. 相变存储器(PCM)和相关的技术
相变存储器(PCM)(有时也被称作相变随机访问存储器(PRAM或PCRAM)、PCME、双向通用存储器或者硫族化物RAM(C-RAM ))是一种开发了硫族化物玻璃的独特行为的类型的非易失性计算机存储器。作为电流经过产生的热的结果,硫族化物玻璃可以在以下两个状态之间切换:晶体和非晶体。PCM的最近版本可以实现两个附加的不同状态。
PCM提供了比闪存更高的性能,因为PCM的存储器元素可以被更快地切换,写(将各个位改变到1或0)可以在不需要首先擦除整个单元块的情况下完成,并且来自写的退化更慢(PCM装置可以经受得住大约100兆个写周期;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图示了包括集成标签缓存和ECC生成/检查逻辑的存储器侧缓存(MSC)的另一个实施例;
图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(其可以包括一个或多个内部缓存106和外部缓存107-109两者)和“远存储器”122的集合的存储器分级体系。在本发明的一些实施例中可以用于“远存储器”的一个特别类型的存储器是非易失性随机访问存储器(“NVRAM”)。因此,下面提供了对NVRAM的概述,之后的是对远存储器和近存储器的概述。
A. 非易失性随机访问存储器(“NVRAM”)
存在用于NVRAM的许多可能的技术选择,包括:PCM、相变存储器和开关(PCMS)(后者是前者的更具体的实现)、字节可寻址持久性存储器(BPRAM)、存储种类存储器(SCM)、通用存储器、Ge2Sb2Te5、可编程金属化单元(PMC)、电阻式存储器(RRAM)、RESET(非晶体)单元、SET(晶体)单元、PCME、Ovshinsky存储器、铁电存储器(也被称作聚合物存储器和聚(N-乙烯基咔唑))、铁磁存储器(也被称作自旋电子元件、SPRAM(自旋转移矩RAM)、STRAM(自旋隧穿RAM)、磁阻存储器、磁存储器、磁随机访问存储器(MRAM))以及半导体-氧化物-氮化物-氧化物-半导体(SONOS,也被称作电介质存储器)。
NVRAM具有下面的特性:
(1)类似于用在固态磁盘(SSD)中的FLASH存储器,并且不同于易失性的SRAM和DRAM,即使功率被移除,它也维持它的内容;
(2)比诸如SRAM和DRAM的易失性存储器更低的功率消耗;
(3)类似于SRAM和DRAM的随机访问(也被称作随机可寻址);
(4)与SSD中找到的FLASH(其仅能够每次被重写且被擦除一“块”(对于NOR FLASH在大小上最小64K字节以及对于NAND FLASH在大小上最小16K字节))相比,在更低的粒度级别(例如,字节级别)下可重写和可擦除;
(5)用作***存储器且被分派了***存储器地址空间的全部或部分;
(6)能够使用事务性协议(支持事务标识符(ID)区分不同的事务以使得那些事务能够无次序地完成的协议)通过总线耦合至处理器,并且允许在足够小以支持作为***存储器的NVRAM的操作的粒度级别(例如,诸如64或128字节的缓存行大小)下的访问。例如,总线可以是存储器总线(例如,诸如DDR3、DDR4等等的DDR总线),与通常使用的非事务性协议相反,通过所述存储器总线运行事务性协议。作为另一个示例,总线可以是通过其通常运行事务性协议(本地事务性协议)的总线,诸如:PCI express(PCIE)总线、桌面管理接口(DMI)总线或者利用事务性协议和足够小的事务有效负载大小(例如,诸如64或128字节的缓存行大小)的任何其它类型的总线;以及
(7)下面的一个或多个:
(a)比非易失性存储器/存储技术(诸如FLASH)更快的写速度;
b)非常高的读速度(比FLASH更快且接近或等于DRAM读速度);
c)直接可写(而非像用在SSD中的FLASH存储器在写数据之前要求擦除(用1s改写));
d)在故障之前更大数量的写(比引导程序ROM和用在SSD中的FLASH更多);和/或
如上面提到的,与FLASH存储器(其必须每次被重写且被擦除完整的“块”)相比,在任何给定的实现中NVRAM被访问的粒度级别可以取决于特别的存储器控制器和特别的存储器总线或NVRAM所耦合至的其它类型的总线。例如,在NVRAM用作***存储器的一些实现中,因为缓存行是存储器子***访问存储器所在的级别,所以NVRAM可以在缓存行(例如,64字节或128字节缓存行)的粒度下被访问,尽管固有能力将是在字节的粒度下被访问。因此,当NVRAM被部署在存储器子***内时,它可以在与用在相同的存储器子***中的DRAM(例如,“近存储器”)相同的粒度级别处被访问。即使如此,由存储器控制器和存储器总线或其它类型的总线对NVRAM的访问的粒度级别小于由闪存使用的块大小和I/O子***的控制器和总线的访问大小的粒度级别。
NVRAM也可以并入损耗均衡算法来解决以下的事实:在远存储器级别处的存储单元在许多次写访问之后,尤其在诸如在***存储器实现中可能发生显著数量的写的情况下开始损耗。因为高循环计数块最可能以这种方式损耗,所以损耗均衡通过交换高循环计数块与低循环计数块的地址来将写遍布于远存储器单元。注意到,大部分地址交换对于应用程序通常是透明的,因为它由硬件、较低级别的软件(例如,低级别驱动程序或操作***)或者这两者的组合来处理。
B. 远存储器
本发明的一些实施例的远存储器122用NVRAM实现,但不必限于任何特别的存储器技术。远存储器122在它的特性和/或它在存储器/储存分级体系中的应用方面可与其它指令和数据存储器/存储技术区分。例如,远存储器122不同于:
(2)静态随机访问存储器(SRAM),其可以用于分别专用于处理器核心101-104中的每一个处理器核心的级别0和级别1内部处理器缓存101a-b、102a-b、103a-b、103a-b和104a-b,以及由处理器核心共享的较低级别缓存(LLC)105;
(3)动态随机访问存储器(DRAM),其被配置为对于处理器100内部的缓存106(例如,在与处理器100相同的管芯上)和/或被配置为对于处理器外部的一个或多个缓存107-109(例如,在与处理器100相同的或不同的封装中);以及
(4)应用为大容量存储设备的FLASH存储器/磁盘/光盘(未示出);以及
(5)诸如FLASH存储器或其它只读存储器(ROM)的存储器,其被应用为固件存储器(其可以指代引导程序ROM、BIOS闪存和/或TPM闪存)(未示出)。
远存储器122可以用作指令和数据存储设备,其可由处理器100直接寻址并且与应用为大容量存储设备的FLASH/磁盘/光盘相比能够充分地跟上处理器100。此外,如在上面讨论的且在下面详细描述的,远存储器122可以被放置在存储器总线上并可以直接与存储器控制器通信,其转而直接与处理器100通信。
远存储器122可以与其它指令和数据存储技术(例如,DRAM)相组合,以形成混合存储器(也被称作共处一地的PCM和DRAM;第一级别存储器和第二级别存储器;FLAM(FLASH和DRAM))。注意到,取代***存储器或除***存储器以外,包括PCM/PCMS的上面技术中的至少一些可以用于大容量存储设备,并且当以这种方式应用时不需要是可随机访问、可字节寻址或可由处理器直接寻址的。
为了方便解释,本申请的剩余部分的大部分将指的是“NVRAM”,或者更具体地,指的是作为用于远存储器122的技术选择的“PCM”或“PCMS”。同样地,术语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)或者计算机母板上)。通过使用诸如DDR或其它事务性高带宽链路的单个或多个高带宽链路,近传感器121可以在与处理器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上执行的软件可见的和/或可由在处理器100上执行的软件直接寻址的存储器;尽管缓存存储器101a-109在它们不形成***地址空间的可直接寻址部分的意义上可以对于软件透明地进行操作,但是核心也可以支持指令的执行以允许软件向一个或多个缓存中的一些或全部提供某种控制(配置、策略、提示等等)。***存储器再分为区域116-119可以作为***配置过程中的一部分(例如由***设计者)手动地执行,和/或可以由软件自动地执行。
在一个实施例中,***存储器区域116-119通过使用远存储器(例如PCM)和在一些实施例中的配置为***存储器的近存储器来实现。***存储器地址范围#4表示通过使用诸如DRAM的更高速度存储器来实现的地址范围,所述更高速度存储器可以是在***存储器模式(与缓存模式相对)下配置的近存储器。
图2图示了根据本发明的实施例的存储器/存储分级体系140和用于近存储器144和NVRAM的不同的可配置操作模式。存储器/存储分级体系140具有多个级别,包括:(1)缓存级别150,其可以包括处理器缓存150A(例如图1中的缓存101A-105)和(在如本文中描述的特定的操作模式下)作为用于远存储器的缓存150B的可选近存储器,(2)***存储器级别151,其可以包括当近存储器存在时的远存储器151B(例如诸如PCM的NVRAM)(或者当近存储器不存在时的正好作为***存储器174的NVRAM),以及(如在本文中描述的特定的操作模式下)作为***存储器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表示分配给近存储器151A的***地址空间的范围,并且***地址空间A 190表示分配给NVRAM 174的***地址空间的范围。
此外,当充当用于远存储器的缓存150B时,近存储器144可以在MSC控制器124的控制下以各种子模式进行操作。在这些模式中的每一个模式中,近存储器地址空间(NMA)在近存储器不形成***地址空间的可直接寻址部分的意义上对于软件是透明的。这些模式包括但不限于以下:
(1)回写缓存模式:在该模式中,充当FM缓存150B的近存储器的全部或部分用作用于NVRAM远存储器(FM)151B的缓存。尽管在回写模式中,但是每一个写操作最初指向作为用于FM的缓存150B的近存储器(假定写所指向的缓存行在缓存中存在)。仅当作为用于FM的缓存150B的近存储器内的缓存行要由另一个缓存行取代时,执行对应写操作以更新NVRAM FM151B(与下面描述的写通过模式相反,在所述写通过模式中,将每一个写操作立即传播到NVRAM FM 151B)。
近存储器绕过模式:在该模式中,所有读和写绕过充当FM缓存150B的NM,并且直接转到NVRAM FM 151B。例如,当应用不是缓存友好的或要求数据持续在缓存行的粒度下被提交时,可以使用这样的模式。在一个实施例中,由处理器缓存150A和充当FM缓存150B的NM执行的缓存彼此独立地进行操作。因此,没有在处理器缓存150A中缓存的数据(以及在一些情况下可能不被许可在处理器缓存150A中缓存的数据)可以在充当FM缓存150B的NM中缓存,并且反之亦然。因此,可能在处理器缓存中被指定为“不可缓存”的特定数据可以在充当FM缓存150B的NM内缓存。
(3)近存储器读缓存写绕过模式:这是上面模式的变型,其中,允许来自NVRAM FM151B的持久性数据的读缓存(即,针对只读操作,持久性数据在作为用于远存储器的缓存150B的近存储器中缓存)。当持久性数据中的大部分是“只读”的且应用使用是缓存友好的时,这是有用的。
(4)近存储器读缓存写通过模式:这是近存储器读缓存写绕过模式的变型,其中,除读缓存以外,写命中也是缓存的。每个对作为用于FM的缓存150B的近存储器的写引起对FM 151B的写。因此,由于缓存的写通过本质,所以仍保证了缓存行持续。
当以近存储器直接访问模式行动时,作为***存储器151A的近存储器的全部或部分对于软件是直接可见的并且形成SPA空间的一部分。这样的存储器可以完全在软件控制下。这样的方案可以创建用于软件的不均匀存储器地址(NUMA)存储器域,其中,相对于NVRAM***存储器174,它从近存储器144取得更高性能。通过举例而非限制的方式,对于特定高性能计算(HPC)和要求对特定数据结构非常快的访问的图形应用,可以采用这样的使用。
在替换的实施例中,近存储器直接访问模式通过“钉住(pinning)”近存储器中的特定缓存行(即,具有也并行地存储在NVRAM 142中的数据的缓存行)来实现。这样的钉住可以在更大的多路集合关联的缓存中有效地完成。
图2也图示了NVRAM 142的部分可以用作固件存储器。例如,BIOS NVRAM 172部分可以用来存储BIOS映像(取代在BIOS闪存170中存储BIOS信息,或者除了在BIOS闪存170中存储BIOS信息以外)。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和具有NVRAM 142的存储器/存储子***380,所述NVRAM 142用于***存储器、大容量存储设备和可选固件存储器。在一个实施例中,NVRAM 142包括用于存储数据、指令、状态以及其它持久性和非持久性信息的由计算机***300使用的整个***存储器和存储分级体系。如先前讨论的,NVRAM 142可以被配置为实现在***存储器、大容量存储设备和固件存储器、TPM存储器等等的典型存储器和存储分级体系中的角色。在图3的实施例中,NVRAM 142被分区为FM 151B,NVRAM大容量存储设备152A、BIOS NVRAM 173和TMP NVRAM173。也预期了具有不同角色的存储分级体系,并且NVRAM 142的应用不限于上面描述的角色。
通过举例的方式,描述了在作为用于FM的缓存150B的近存储器处于回写缓存中时的操作。在一个实施例中,在作为用于FM的缓存150B的近存储器处于上面提到的回写缓存模式中的同时,读操作将首先到达MSC控制器124处,所述MSC控制器124将执行查找以(例如,利用标签缓存342)确定请求的数据是否存在于充当用于FM的缓存150B的近存储器中。如果存在,则它将通过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缓存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中,示出了使用三个单独的线路连接到FM 151B、NVRAM大容量存储设备152A和BIOS NVRAM 172的NVRAM控制器332。然而,这不必意味着存在将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 express总线、桌面管理接口(DMI)总线)或者利用事务性协议和足够小的事务有效负载大小(例如,诸如64或128字节的缓存行大小)的任何其它类型的总线来与NVRAM 142通信。
在一个实施例中,计算机***300包括集成存储器控制器(IMC)331,其执行用于处理器310的中央存储器访问控制,其耦合至:1)用来控制对充当远存储器缓存150B的近存储器(NM)的访问的存储器侧缓存(MSC)控制器124;以及2)用来控制对NVRAM 142的访问的NVRAM控制器332。虽然在图3中图示为单独的单元,但是MSC控制器124和NVRAM控制器332可以逻辑地形成IMS 331的一部分。
在在图示的实施例中,MSC控制器124包括范围寄存器336的集合,其在用于充当远存储器缓存150B的NM的使用中指定操作模式(例如,上面描述的回写缓存模式、近存储器绕过模式等等)。在图示的实施例中,DRAM 144用作充当用于远存储器的缓存150B的NM的存储器技术。响应于存储器访问请求,MSC控制器124可以(根据在范围寄存器336中指定的操作模式)确定是否可以从充当用于FM的缓存150B的NM供应请求,或者请求是否必须被发送到NVRAM控制器332,所述NVRAM控制器332接着可以从NVRAM 142的远存储器(FM)部分151B供应请求。
在NVRAM 142用PCMS实现的实施例中,NVRAM控制器332是用与PCMS技术一致的协议执行访问的PCMS控制器。如先前讨论的,PCMS存储器固有地能够在字节的粒度下被访问。尽管如此,NVRAM控制器332可以在诸如缓存行(例如,64位或128位缓存行)的较低粒度级别或与存储器子***一致的任何其它粒度级别下访问基于PCMS的远存储器151B。本发明的根本原理不限于用于访问基于PCMS的远存储器151B的任何特别的粒度级别。然而,一般地,当基于PCMS的远存储器151B用来形成***地址空间的一部分时,粒度级别将高于传统地用于诸如FLASH的其它非易失性存储技术(其仅能够在“块”级别(对于NOR FLASH最小64K字节的大小,并且对于NAND FLASH最小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装置),则IMC 331将请求传递到I/O子***115。I/O子***115进一步对地址进行解码以确定地址是指向NVRAM大容量存储设备152A、BIOS NVRAM 172还是其它非存储或存储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的存储器访问,而不管它是哪一个事务类型。可以理解的是,解码路径可以不同于上面描述的内容。例如,IMC331可以对访问请求的目标地址进行解码,并且确定它是否指向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、2Duo和Quad、Xeon™或者Itanium™处理器,所述处理器的全部从加州(Calif)的圣克拉拉(Santa Clara)的英特尔公司(Intel Corporation)可得。可替换地,处理器310可以来自另一个公司,诸如:CA的森尼维尔(Sunnyvale)的ARM股份有限公司(ARM Holding, Ltd)、CA的森尼维尔(Sunnyvale)的MIPS科技公司(MIPS Technologies)等等。处理器310可以是专用处理器,诸如例如:网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等等。处理器310可以在包含在一个或多个封装内的一个或多个芯片上实现。处理器310可以是使用许多工艺技术(诸如例如BiCMOS、CMOS或NMOS)中的任何一个工艺技术的一个或多个衬底的一部分,和/或可以在其上实现。在图3所示的实施例中,处理器310具有片上***(SOC)配置。
在一个实施例中,处理器310包括集成图形单元311,其包括用于执行诸如3D或2D图形命令的图形命令的逻辑。尽管本发明的实施例不限于任何特别的集成图形单元311,但是在一个实施例中,图形单元311能够执行工业标准图形命令,诸如由Open GL和/或DirectX应用编程接口(API)(例如,Open GL 4.1和Direct X 11)指定的工业标准图形命令。
处理器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,其包括协调和操作一个或多个核心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)(未示出),其进一步包括若干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)- Express(PCI-E), 3.0;USB, 3.0;SATA, 3.0;小型计算机***接口(SCSI),Ultra-640;以及电气和电子工程师协会(IEEE)1394“火线接口(Firewire)”等等。对于BIOS闪存362,I/O适配器338可以转换的协议中的一些协议包括:串行***接口(SPI),Microwire等等。此外,可以存在一个或多个无线协议I/O适配器。无线协议的示例尤其还用在个域网中,诸如IEEE 802.15和蓝牙, 4.0;用在无线局域网中,诸如基于IEEE 802.11的无线协议;以及蜂窝协议。
在一些实施例中,I/O子***115耦合至TPM控制334以控制对***持久性状态的访问,诸如:安全数据、加密密钥、平台配置信息等等。在一个实施例中,这些***持久性状态被存储在TMP 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的微处理器。在一个实施例中,通过经由网络336通过ME 335编辑解码表333的内容,***管理员可以远程地配置计算机***300。
为了方便解释,本申请的剩余部分有时指的是作为PCMS装置的NVRAM 142。PCMS装置包括多层(垂直堆叠的)PCM单元阵列,其是非易失性的,具有低功率消耗,并且在位级别处可修改。同样地,在下面的讨论中可以可交换地使用术语NVRAM装置和PCMS装置。然而,应当认识到,如上面讨论的,除PCMS之外的不同的技术也可以用于NVRAM 142。
应当理解的是,即便计算机***的处理器不具有上面描述的处理器310的部件的全部,或者具有比处理器310更多的部件,该计算机***可以为了***存储器、大容量存储设备、固件存储器和/或其它存储器和存储目的利用NVRAM 142。
在图3所示的特别的实施例中,MSC控制器124和NVRAM控制器332位于与处理器310相同的管芯或封装(被称作CPU封装)上。在其它实施例中,MSC控制器124和/或NVRAM控制器332可以位于管芯外或CPU封装外,通过总线耦合至处理器310或CPU封装,所述总线诸如是:存储器总线(像DDR总线(例如,DDR3、DDR4等等))、PCI express总线、桌面管理接口(DMI)总线或者任何其它类型的总线。
示例性PCM总线和封装配置
图4A-M图示了多种不同的部署,其中,处理器、近存储器和远存储器以不同的方式进行配置和封装。特别是,图4A-M中图示的一系列平台存储器配置使得能够使用新的非易失性***存储器,诸如PCM技术,或者更具体地,PCMS技术。
尽管跨越图4A-M中的多个图使用相同的数字标记中的一些,但这不必意味着由那些数字标记识别的结构总是同样的。例如,尽管相同的数字用来在若干图中识别集成存储器控制器(IMC)331和CPU 401,但是这些部件在不同的图中可以不同地实现。这些差异中的一些未被突出,因为它们与理解本发明的根本原理不相干。
尽管下面描述了若干不同的***平台配置方法,但是这些方法落入两个宽的类别中:***的体系结构和统一的体系结构。简要地,在***的体系结构方案中,存储器侧缓存(MSC)控制器(例如,位于处理器管芯中或位于CPU封装中的单独的管芯上)截取所有***存储器请求。存在从该控制器“流向下游”的两个单独的接口,所述该控制器脱离(exit)CPU封装以耦合至近存储器和远存储器。为了特定类型的存储器修整每一个接口,并且在性能和容量方面可以独立地按比例缩放每一个存储器。
在统一的体系结构方案中,单个存储器接口脱离处理器管芯或CPU封装,并且所有的存储器请求被发送到该接口。MSC控制器连同近存储器和远存储器子***一起在该单个接口上合并。该存储器接口必须被修整以满足处理器的存储器性能要求,并且必须至少支持事务性的无次序协议,因为PCMS装置可能不按次序处理读请求。根据上面的一般的类别,可以采用下面特定的平台配置。
下面描述的实施例包括各种类型的总线/信道。术语“总线”和“信道”在本文中同义地使用。每个DIMM插座的存储器信道的数量将取决于用在计算机***中的特别的CPU封装(在一些CPU封装支持的情况下,例如,每个插座三个存储器信道)。
此外,在下面描述的使用DRAM的实施例中,可以使用通过举例而非限制的方式包括DDR信道(例如,DDR3、DDR4、DDR5等等)的实际上任何类型的DRAM存储器信道。因此,尽管DDR因为它在工业中的广泛接受、结果价格点等等而是有利的,但本发明的根本原理不限于任何特别类型的DRAM或易失性存储器。
图4A图示了***的体系结构的一个实施例,其包括一个或多个DRAM装置403-406和一个或多个NVRAM装置,所述一个或多个DRAM装置403-406在CPU封装401中(在处理器管芯上或在单独的管芯上)作为充当用于FM的缓存(即,MSC)的近存储器进行操作,所述一个或多个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地址、数据和控制行和电压(例如,如由电子器件工程联合会(JEDEC)限定的DDR3或DDR4标准)限定DDR信道440的电连接。在DIMM450-451上的PCM装置提供该***的体系结构的远存储器容量,其中,到CPU封装401的DDR信道440能够携带DDR协议和事务性协议两者。与处理器310或CPU封装内的其它逻辑(例如,IMC 331或MSC控制器124)传送命令并接收立即响应的DDR协议相反,用来与PCM装置通信的事务性协议允许CPU 401发行一系列事务,每一个事务由唯一事务ID识别。命令由在PCM DIMM中的容纳的一个PCM DIMM上的PCM控制器供应,所述PCM控制器可能没有次序地将响应发送回CPU封装401。处理器310或CPU封装401内的其它逻辑通过与响应一起发送的它的事务ID来识别每一个事务响应。上面的配置允许***支持标准基于DDR DRAM的DIMM(通过DDR电连接使用DDR协议)和基于PCM的DIMM配置(通过相同的DDR电连接使用事务性协议)两者。
图4B图示了使用通过DDR信道440耦合的基于DDR DRAM的DIMM 452以形成充当MSC的近存储器的***的体系结构。处理器310作为主机运行存储器控制器331和MSC控制器124。诸如PCM存储器装置的NVRAM装置驻留在基于PCM的DIMM 453上,所述DIMM 453使用DDR槽和在离开CPU封装401的附加的DDR信道442上的电连接。基于PCM的DIMM 453提供该***的体系结构的远存储器容量,其中,到CPU封装401的DDR信道442基于DDR电连接并能够携带DDR协议和事务性协议两者。这允许***用变化数量的DDR DRAM DIMM 452(例如,DDR4DIMM)和PCM DIMM 453来进行配置,以达到期望的容量和/或性能点。
图4C图示了作为主机运行充当在CPU封装401上(在处理器管芯上或在单独的管芯上)的存储器侧缓存(MSC)的近存储器403-406的***的体系结构。如由***的体系结构限定的,在CPU封装上的高带宽链路407用来使单个或多个DRAM装置403-406互连到处理器310,所述处理器310作为主机运行存储器控制器331和MSC控制器124。诸如PCM存储器装置的NVRAM驻留在PCI Express卡或竖板455上,所述PCI Express卡或竖板455通过PCIExpress总线454使用PCI Express电连接和PCI Express协议或不同的事务性协议。在PCIExpress卡或竖板455上的PCM装置提供该***的体系结构的远存储器容量。
图4D是使用基于DDR DRAM的DIMM 452和DDR信道440形成充当MSC的近存储器的***的体系结构。处理器310作为主机运行存储器控制器331和MSC控制器124。诸如PCM存储器装置455的NVRAM驻留在PCI Express卡或竖板上,所述PCI Express卡或竖板通过PCIExpress链路454使用PCI Express电连接和PCI Express协议或不同的事务性协议。在PCIExpress卡或竖板455上的PCM装置提供该***的体系结构的远存储器容量,其中,离开CPU封装401的存储器信道接口提供用于DDR DRAM DIMM 452的多个DDR信道440。
图4E图示了作为主机运行充当MSC的近存储器和诸如在PCI Express卡或竖板456上的PCM的远存储器NVRAM两者的统一的体系结构,所述PCI Express卡或竖板456通过PCIExpress总线454使用PCI Express电连接和PCI Express协议或不同的事务性协议。处理器310作为主机运行集成存储器控制器331,但在该统一的体系结构的情况下,MSC控制器124连同DRAM近存储器和NVRAM远存储器一起驻留在卡或竖板456上。
图4F图示了作为主机运行充当MSC的近存储器和诸如在使用DDR信道457的DIMM458上的PCM的远存储器NVRAM两者的统一的体系结构。在该统一的体系结构中的近存储器包括在每一个DIMM 458上的DRAM,其充当对在该相同的DIMM 458上的PCM装置的存储器侧缓存,所述PCM装置形成该特别的DIMM的远存储器。MSC控制器124连同近存储器和远存储器一起驻留在每一个DIMM 458上。在该实施例中,提供了离开CPU封装的DDR总线457的多个存储器信道。该实施例的DDR总线457通过DDR电连接实现事务性协议。
图4G图示了混合***的体系结构,MSC控制器124由此驻留在处理器310上,并且近存储器和远存储器接口都共享相同的DDR总线410。通过使用DDR槽和NVRAM(诸如PCM存储器装置),该配置将基于DRAM的DDR DIMM 411a用作充当MSC的近存储器,其中,基于PCM的DIMM411b(即,远存储器)驻留在DDR总线410的相同的存储器信道上。该实施例的存储器信道同时携带DDR协议和事务性协议两者以分别对近存储器和远存储器DIMM 411a和411b进行寻址。
图4H图示了充当存储器侧缓存的近存储器461a驻留在具有基于DRAM的DDR DIMM形式的小背板或竖板461上的统一的体系结构。存储器侧缓存(MSC)控制器124位于竖板的DDR和PCM控制器460中,所述竖板的DDR和PCM控制器460可以具有连接到在小背板/竖板461上的DDR DIMM信道470且通过一个或多个高性能互连462(诸如差分存储器链路)互连到CPU的两个或更多的存储器信道。相关联的远存储器461b位于相同的小背板/竖板461上,并且由使用DDR信道470并且用NVRAM(诸如PCM装置)填充的DIMM形成。
图4I图示了可以用作对DDR存储器子***和DIMM 464的存储器容量扩充的统一的体系结构,所述DDR存储器子***和DIMM 464通过DDR总线471连接到在它的DDR存储器子***上的CPU封装401。对于在该配置中的附加的基于NVM的容量,充当MSC的近存储器以基于DRAM的DDR DIMM 463a形式驻留小背板或竖板463上。MSC控制器124位于竖板的DDR和PCM控制器460中,所述竖板的DDR和PCM控制器460可以具有连接到在小背板/竖板上的DDR DIMM信道470且通过一个或多个高性能互连462(诸如差分存储器链路)互连到CPU的两个或更多的存储器信道。相关联的远存储器463b位于相同的小背板/竖板463上,并且由使用DDR信道470并用NVRAM(诸如PCM装置)填充的DIMM 463b形成。
图4J是充当存储器侧缓存(MSC)的近存储器以DRAM的形式驻留在每一个和每个DIMM 465上的统一的体系结构。DIMM 465是在高性能的互连/一个或多个信道462(诸如差分存储器链路)上的,从而将CPU封装401与位于DIMM上的MSC控制器124耦合。相关联的远存储器坐在相同的DIMM 465上,并且由NVRAM(诸如PCM装置)形成。
图4K图示了充当MSC的近存储器以DRAM的形式驻留在每个DIMM 466上的统一的体系结构。DIMM是在连接到CPU封装401的一个或多个高性能互连470上的,其中,MSC控制器124位于DIMM上。相关联的远存储器坐在相同的DIMM 466上,并且由NVRAM(诸如PCM装置)形成。
图4L图示了使用在DDR总线471上的基于DDR DRAM的DIMM 464形成必要的充当MSC的近存储器的***的体系结构。处理器310作为主机运行集成存储器控制器331和存储器侧缓存控制器124。诸如PCM存储器的NVRAM形成驻留在卡或竖板467上的远存储器,通过使用事务性协议,所述卡或竖板467使用高性能互连468进行到CPU封装401的通信。卡或竖板467作为主机运行远存储器,所述卡或竖板467作为主机运行单个缓冲器/控制器,所述单个缓冲器/控制器可以控制多个基于PCM的存储器或在该竖板上连接的多个基于PCM的DIMM。
图4M图示了可以使用在卡或竖板469上的DRAM形成必要的充当MSC的近存储器的统一的体系结构。诸如PCM存储器装置的NVRAM形成也驻留在卡或竖板469上的远存储器,所述卡或竖板469使用到CPU封装401的高性能互连468。卡或竖板469作为主机运行远存储器,所述卡或竖板469作为主机运行单个缓冲器/控制器,所述单个缓冲器/控制器可以控制多个基于PCM的装置或在该竖板469上的多个基于PCM的DIMM,并且也集成存储器侧缓存控制器124。
在上面描述的实施例中的一些实施例(诸如在图4G中图示的该实施例)中,DRAMDIMM 411a和基于PCM的DIMM 411b驻留在相同的存储器信道上。因此,地址/控制和数据行的相同集合用来将CPU连接到DRAM和PCM存储器两者。为了降低通过CPU网格互连的数据通信量的量,在一个实施例中,在与基于PCM的DIMM共同的存储器信道上的DDR DIMM被配置为充当用于存储在基于PCM的DIMM中的数据的单一的MSC。在这样的配置中,存储在基于PCM的DIMM中的远存储器数据仅在相同的存储器信道内的DDR DIMM近存储器中进行缓存,由此将存储器事务定位到该特别的存储器信道。
此外,为了实现上面的实施例,***地址空间可以在不同的存储器信道之间逻辑地再分。例如,如果存在四个存储器信道,则***地址空间的¼可以被分派给每一个存储器信道。如果每一个存储器信道被提供有一个基于PCMS的DIMM和一个DDR DIMM,则DDR DIMM可以被配置为充当用于***地址空间的该¼部分的MSC。
***存储器和大容量存储装置的选择可以取决于其上采用本发明的实施例的电子平台的类型。例如,在个人计算机、平板计算机、笔记本计算机、智能电话、移动电话、功能电话、个人数字助理(PDA)、便携式媒体播放器、便携式游戏装置、游戏控制台、数字摄像机、交换机、集线器、路由器、机顶盒、数字视频记录器或者具有相对小的大容量存储要求的其它装置中,可以仅仅使用NVRAM大容量存储设备152A或者使用与闪存/磁/光学大容量存储设备152B相组合的NVRAM大容量存储设备152A实现大容量存储设备。在具有相对大的大容量存储要求的其它电子平台(例如,大规模服务器)中,可以使用磁存储设备(例如,硬盘驱动器)或者磁存储设备、光学存储设备、全息存储设备、大容量存储闪存存储器和NVRAM大容量存储设备152A的任何组合实现大容量存储设备。在这样的情况下,对存储负责的***硬件和/或软件可以实现各种智能的持久性存储分派技术,以便以有效或以其它有用的方式在FM 151B/NVRAM存储设备152A与闪存/磁/光学大容量存储设备152B之间分派持久性程序代码和数据的块。
例如,在一个实施例中,高功率的服务器被配置有近存储器(例如,DRAM)、PCMS装置和用于大量的持久性存储的磁大容量存储装置。在一个实施例中,笔记本计算机被配置有近存储器和PCMS装置,所述PCMS装置执行远存储器和大容量存储装置两者的角色(即,如图3所示,其被逻辑地分区以执行这些角色)。家庭或办公台式计算机的一个实施例类似于笔记本计算机进行配置,但也可以包括一个或多个磁存储装置以提供大量的持久性存储能力。
平板计算机或蜂窝电话装置的一个实施例被配置有PCMS存储器,但可能没有近存储器,并且没有附加的大容量存储设备(为了节省成本/功率)。然而,平板/电话可以被配置有可移除大容量存储装置,诸如闪存或PCMS记忆棒。
可以如上面描述的配置各种其它类型的装置。例如,可以以类似于上面描述的平板/电话的方式配置便携式媒体播放器和/或个人数字助理(PDA),可以以与台式计算机或膝上型计算机类似的方式配置游戏控制台。可以进行类似配置的其它装置包括数字摄像机、路由器、机顶盒、数字视频记录器、电视机和汽车。
MSC体系结构的实施例
在本发明的一个实施例中,***存储器中的DRAM的大部分用PCM来取代。如先前讨论的,PCM在相对于DRM显著更低的成本下提供在存储器容量方面的显著改善,并且是非易失性的。然而,诸如不对称的读对写性能、写循环持续时间限制以及它的非易失性本质的特定的PCM特性使得在没有导致主要的软件改变的情况下直接取代DRAM具有挑战性。下面描述的本发明的实施例提供了用来集成PCM的软件透明方式,同时也通过软件增强来使得能够进行更新的使用。这些实施例提升了在存储器子***体系结构中的成功转变,并且提供了用来合并存储器和使用单个PCM池的存储设备两者的方式,由此减轻了对于在平台中的单独的非易失性存储层的需要。
在图5中图示的特别的实施例包括一个或多个处理器核心501和一个或多个内部CPU缓存503,每一个处理器核心501具有用于生成存储器请求的内部存储器管理单元(MMU)502,所述内部CPU缓存503用于根据指定的缓存管理策略存储程序代码和数据的行。如先前提到的,缓存管理策略可以包括排他的缓存管理策略(其中,在分级体系中的一个特别的缓存级别中存在的任何行不在任何其它缓存级别中存在)或者包含的缓存管理策略(其中,在缓存分级体系的不同的级别处存储复制的缓存行)。可以针对管理内部缓存503采用的特定缓存管理策略被本领域技术人员很好地理解,并且因此,将不在此处进行详细描述。本发明的根本原理不限于任何特别的缓存管理策略。
也在图5A中图示的是家乡代理505,其通过生成用于存储器请求的存储器信道地址(MCA)来提供对MSC 510的访问。家乡代理505对管理指定的存储器地址空间负责,并且解决指向该存储器空间的存储器访问冲突。因此,如果任何核心需要访问给定的地址空间,则它将发送请求到该家乡代理505,所述家乡代理505将接着发送请求到该特别的MMU502。在一个实施例中,每个MMU 502分派一个家乡代理505;然而,在一些实施例中,单个家乡代理505可以服务多于一个存储器管理单元502。
如在图5A中图示的,MSC 510被配置在基于PCM的远存储器519的前面。MSC 510管理对近存储器518的访问,并且当适当时(例如,当不能够从近存储器518供应请求时)将存储器访问请求(例如,读和写)转发到远存储器控制器521。MSC 510包括缓存控制单元512,其响应于存储标签的标签缓存511进行操作,所述标签识别包含在近存储器518内的缓存行。在操作中,当缓存控制单元512(例如,响应于缓存命中)确定存储器访问可以从近存储器518供应请求时,它生成用来识别存储在近存储器518内的数据的近存储器地址(NMA)。近存储器控制单元515解释NMA,并且响应地生成用来访问近存储器518的电信号。如先前提到的,在一个实施例中,近存储器是动态随机访问存储器(DRAM)。在这样的情况下,电信号可以包括行地址选通(RAS)和列地址选通(CAS)信号。然而,应当注意的是,本发明的根本原理不限于针对近存储器的DRAM的使用。
确保软件透明的存储器应用的另一个部件是优化的PCM远存储器控制器521,其管理PCM远存储器530的特性,同时仍提供所要求的性能。在一个实施例中,PCM控制器521包括地址间接寻址表520,其将由缓存控制器单元515生成的MCA转换为PDA,所述PDA用来直接对PCM远存储器530进行寻址。这些转换可以在通常是5KB的“块”的粒度下发生。在一个实施例中,当远存储器控制器521遍及PCM装置地址空间连续地使PCM块移动时,要求该转换,以便确保没有由于对任何特定块的高频率的写而导致的损耗热点。如先前描述的,这样的技术在本文中有时被称作“磨损均衡”。
因此,MSC 510由缓存控制单元512管理,其允许MSC 510吸收、聚结和过滤对PCM远存储器530的事务(例如,读和写)。缓存控制单元512管理在近存储器518和PCM远存储器530之间的所有数据移动和一致性要求。此外,在一个实施例中,MSC缓存控制器512通过接口连接到一个或多个CPU并提供用在传统基于DRAM的存储器子***中的标准同步加载/存储接口。
现在将在图5A所示的体系结构的上下文内描述示例性读和写操作。在一个实施例中,读操作将首先到达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装置。用于该数据的随后的请求可以直接从MSC近存储器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,该大小可以被设置为工作负荷存储器脚印底面积的大小或PCM远存储器530大小的十分之一。与当前存储器/体系结构中找到的传统缓存相比,这样的MSC是非常大的。通过举例而非限制的方式,对于128GB的PCM远存储器大小,MSC近存储器的大小可以大到16GB。
图5B图示了与MSC 510的一个实施例相关联的附加的细节。该实施例包括为命令和寻址负责的逻辑单元的集合,其包括:命令缓冲器追踪单元542,用于缓冲命令/地址,以及缓存访问模式检查单元544,其响应于来自MSC范围寄存器(RR)单元545的控制信号选定MSC操作模式。下面描述了若干示例性操作模式。简要地,这些可以包括近存储器用在传统的缓存角色中的模式和近存储器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标签的成本对于建立大缓存可能是显著的阻碍。同样地,在本发明的一个实施例中,该问题通过使用将缓存标签存储在用于ECC保护的MSC中分派的存储内的创新方案来解决,由此实质上除去了用于标签的存储成本。
该实施例一般在图5C中图示,所述图5C示出了用于存储/管理缓存标签、存储ECC数据以及执行ECC操作的集成标签缓存和ECC单元554。如图示的,当执行标签检查操作(例如以确定特别的数据块是否被存储在近存储器缓存518内)时,在请求时将存储的标签提供给标签检查/命令调度程序550。
图5D图示了示例性数据集合524以及对应的ECC 523和标签522的组织。如图示的,标签522与在标签缓存/ECC单元554的存储器(例如,在一个实施例中的DDR DRAM)中的ECC523共处一地。在该示例中,总共64字节的若干数据块已经被读到标签缓存/ECC单元554中。ECC检查/生成器单元554a通过使用数据525来生成ECC,并且针对与数据相关联的现有ECC523比较生成的ECC。在该示例中,针对64字节的数据525生成4字节的ECC。然而,本发明的根本原理不限于ECC的任何特别的类型或大小。此外,应当注意的是,术语“数据”在本文中广泛地用来指代可执行程序代码和数据两者,这两者都可以被存储在图5D所示的数据存储设备525中。
在一个实施例中,利用图5D中图示的位分配来使用3字节(24位)标签522。具体地,位00到16是提供缓存行的高地址位的地址位。对于具有56位的***地址(例如,SPA[55:00]),位00到16映射到***地址的位55-29,从而允许512MB的最小缓存大小。返回到3字节标签,位17-19是保留的;位20-21是目录位,其提供关于缓存行的远程CPU缓存的信息(例如,提供关于其它CPU的指示,在所述其它CPU上缓存该行);位21-22指示缓存行的当前状态(例如,00=干净;01=脏;10和11=未使用);以及位23指示了缓存行是否是有效的(例如,1=有效;0=无效)。
利用如上面描述的直接映射的缓存体系结构(其允许直接从***存储器地址提取近存储器地址)降低或消除了在能够读MSC 510之前查找标签存储的等待时间成本,由此显著地改善了性能。此外,用来检查缓存标签以决定MSC 510是否具有要求的数据的时间也被消除,因为它是与从MSC读的数据的ECC检查并行完成的。
在特定条件下,存储带有数据的标签可能产生对于写的问题。写首先读数据,以便确保它不改写一些其它地址的数据。在每次写之前的这样的读可能变得成本高。本发明的一个实施例采用维持最近访问的近存储器地址(NMA)的标签的脏行标签缓存。因为许多写以最近访问的地址为目标,所以合理小的标签缓存可以得到有效的命中率以在写之前过滤读的大部分。
在图5E中图示了与包括PCM远存储器控制器521和PCM远存储器模块530a-i的集合的PCM DIMM 519的一个实施例相关联的附加的细节。在一个实施例中,在***存储器和存储设备使用之间动态地共享单个PCM远存储器池530a-i。在该实施例中,整个PCM池530a-i可以被再分为4KB大小的“块”。PCM描述符表(PDT)565识别将每一个PCM块用作存储器还是存储设备。例如,PDT的每一行可以表示特别的块,所述特别的块具有识别每一个块的使用(例如,1=存储器;0=存储设备)的特别的列。在该实施例中,初始***配置可以(即,通过对PDT 565进行编程)对在存储设备与存储器使用之间的PCM 530a-i内的PCM块进行分区。在一个实施例中,相同的表用来排除坏的块并为损耗平衡算法提供空闲块。此外,PDT 565也可以包括每一个PCMS块到由软件使用的“逻辑”块地址的映射。在***存储器的情况下,逻辑块地址与MCA或SPA相同。每当PCMS块由于损耗平衡而被移动时,需要该关联以更新地址间接寻址表(ATI)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空间中来回移动以避免任何热点。当这样的移动发生时,在SPA与PDA之间的关系将改变,并且AIT将被更新以反映该新转换。
跟随SPA到PCM的映射,调度程序单元557将根本PCM操作(例如,读和/或写)调度到PCM装置530a-I,并且PCM协议引擎558生成为执行读/写操作所要求的电信令。ECC单元562执行错误检测和校正操作,并且数据缓冲器561临时缓冲正从PCM装置530a-I读的数据或者正被写入PCM装置530a-I的数据。持久性写缓冲器559用来即使在不预期的功率故障的事件中也保持数据,保证所述数据被写回到PCMS(例如,它通过使用非易失性存储设备来实现)。包括刷新支持逻辑560以周期性地和/或根据指定的数据刷新算法(例如,在持久性写缓冲器到达指定的阈值之后)将持久性写缓冲器刷新到PCMS。
在一个实施例中,MSC 510自动地将存储设备访问直接路由至PCM远存储器控制器521,并且将存储器访问路由至MSC缓存控制单元512。来到PCM远存储器控制器521的存储设备访问被视作规律的读和写,并且照常应用本文中描述的地址间接寻址和损耗平衡机制。在当数据需要在存储装置与存储器之间移动时可以实现的本发明的一个实施例中采用附加的优化。因为使用共同的PCM池530a-I,所以可以在间接寻址表(例如,AIT)中通过简单地改变指针来消除或推迟数据移动。例如,当数据被从存储设备转移到存储器时,识别在特别的物理PCM存储设备位置中的数据的指针可以被更新以指示相同的物理PCM存储设备位置现在是在***存储器中的存储器位置。在一个实施例中,这由硬件以软件透明的方式来完成以提供性能和功率好处两者。
除软件透明的操作模式以外,MSC控制器512的一个实施例提供了如由MSC范围寄存器(RR)545指示的替换的操作模式。这些操作模式可以包括但不限于以下:
(1)用于存储种类应用的PCM存储器的直接访问。这样的使用也将要求MSC控制器512确保提交给PCM 519的写实际上致力于持续状态。
2)近存储器518的混合使用,将其一部分暴露于软件以供直接使用,同时将剩余部分维持为MSC。当将近存储器518的一部分暴露于软件以供直接使用时,该部分可在***地址空间内直接寻址。这允许特定应用在高性能的小区域(近存储器518)和相对较低性能的大块区域(远存储器530)之间明确地***它们的存储器分派。通过对比,分派为在MSC内的缓存的一部分不形成***地址空间的部分(但改为充当如本文中描述的用于远存储器530的缓存)。
如先前讨论的,限定MSC体系结构,使得若干不同的***分区方法是可能的。这些方法落入两个宽的存储桶(buckets)中:
(1)***的体系结构:在该方案中,MSC控制器512位于CPU中,并且截取所有***存储器要求。存在两个与MSC分开的接口,所述MSC脱离CPU以连接到近存储器(例如,DRAM)和远存储器(例如,PCM)。为了特定类型的存储器修整每一个接口,并且在性能和容量方面可以独立地按比例缩放每一个存储器。
(2)统一的体系结构:在该方案中,单个存储器接口脱离CPU,并且所有存储器请求被发送到该接口。MSC控制器512连同近存储器(例如,DRAM)和远存储器(例如,PCM)子***一起在CPU外部在该单个接口上结合。在一个实施例中,该存储器接口被修整以满足CPU的存储器性能要求,并且支持事务性的无次序协议。近存储器和远存储器要求以“统一”的方式在这些接口中的每一个接口上被满足。
在上面的存储桶的范围内,若干不同的分配选项是切实可行的,其中的一些在下面进行描述。
1)***的示例:
近存储器:多个DDR 5 DIMM
近存储器接口:一个或多个DDR 5信道
远存储器:在PCI快速(PCIe)卡上的PCM控制器/装置
远存储器接口:x16 PCIe,Gen 3
2)统一的示例:
CPU存储器接口:一个或多个KTMI(或QPMI)信道
具有MSC/PCM控制器的近/远存储器在竖板卡上
离开MSC/PCM控制器的近存储器接口:DDR5接口
离开MSC/PCM控制器的远存储器接口:PCM装置接口。
具有不同的近存储器操作模式的实施例
如上面讨论的,两级别存储器分级体系可以用于引进作为***存储器的诸如PCM的快非易失性存储器,同时使用非常大的基于DRAM的近存储器。近存储器可以用作硬件管理的缓存。然而,一些应用不是硬件缓存友好的,并且同样地,将从用来使用这样的存储器的交替的方式受益。因为可以存在在任何给定时间下在服务器上运行的若干不同的应用,所以本发明的一个实施例允许将并发启动的多个使用模式。此外,一个实施例提供了用来针对这些使用模式中的每一个使用模式控制近存储器的分派的能力。
在一个实施例中,MSC控制器512提供了用于使用近存储器的下面的模式。如先前提到的,在一个实施例中,当前操作模式可以由存储在MSC范围寄存器(RR)545中的操作代码指定。
(1)回写缓存模式:在该模式中,近存储器518的全部或部分用作用于PCM存储器530的缓存。尽管在回写模式中,但是每一个写操作最初指向近存储器518(假定写所引向的缓存行在缓存中存在)。仅当近存储器518内的缓存行由另一个缓存行取代时,执行对应写操作以更新PCM远存储器530(与下面描述的写通过模式相对比,在所述写通过模式中,将每一个写操作立即传播到远存储器530)。
在一个实施例中,读操作首先将到达MSC缓存控制器512处,所述MSC缓存控制器512将执行查找以(例如,利用标签缓存511)确定请求的数据是否存在于PCM远存储器518中。如果存在,则它将使数据返回到请求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 FM530。当这发生时,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中缓存)。当持久性数据中的大部分是“只读”的且应用使用是缓存友好的时,这是有用的。
(5)近存储器读缓存写通过模式:这是前一个模式的变型,其中,除读缓存以外,写命中也是缓存的。每个对MSC近存储器518的写引起对PCM远存储器530的写。因此,由于缓存的写通过本质,所以仍保证了缓存行持续。
(5)近存储器直接访问模式:在该模式中,近存储器的全部或部分对于软件是直接可见的并且形成***存储器地址空间空间的一部分。这样的存储器可以完全在软件控制下。从PCM存储器519到近存储器的该区域的任何数据移动要求明确的软件副本。这样的方案可以创建用于软件的不均匀存储器地址(NUMA)存储器域,其中,相对于PCM远存储器530,它从近存储器518取得高得多的性能。对于特定高性能计算(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图示了在多个MSC当中划分***物理地址(SPA)空间的本发明的一个特别的实施例。在图示的实施例中,MSC缓存654和控制器656与SPA区域667a相关联;MSC缓存655和控制器657与SPA区域667b相关联;MSC缓存661和控制器663与SPA区域667c相关联;以及MSC缓存660和控制器662与SPA区域667d相关联。图示了两个CPU 670和671,每一个CPU分别具有四个核心 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可以被配置为以回写缓存模式、近存储器绕过模式、近存储器读缓存写绕过模式、近存储器读缓存写通过模式或者近存储器直接访问模式进行操作。如先前讨论的,在用于每一个MSC 610的范围寄存器(RR)655内指定特别的模式。
在一个实施例中,不同的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)。然后,在678处,选定的缓存控制器612将存储器访问请求映射到近存储器地址(可选地跟随着(下面描述的)在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 (29)
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.如权利要求1所述的***,其中所述第一写访问速度相对高于所述第二写访问速度,但所述第一读访问速度近似于所述第二读访问速度。
12.如权利要求11所述的***,其中所述第一写访问速度比所述第二写访问速度高至少一个数量级。
13.如权利要求1所述的***,其中所述第一特性集合包括第一读访问等待时间和第一写访问等待时间,并且所述第二特性集合包括第二读访问等待时间和第二写访问等待时间,其中的至少一个分别相对高于所述第一读访问等待时间或第二写访问等待时间。
14.如权利要求1所述的***,其中对于每单元大小的制造,所述第二级别主存储器比所述第一级别主存储器便宜。
15.如权利要求1所述的***,其中一个或多个处理器缓存独立于所选择的缓存管理模式进行操作。
16.如权利要求1所述的***,其中存储器子***可寻址能力包括在缓存行的所述粒度下的可寻址能力。
17.一种多级别存储器***,包括:
用于与多级存储器接口的主机侧主存储器控制逻辑电路,该多级存储器包括:
第一级别存储器,具有与其相关联的第一特性集合,所述第一特性集合包括第一读访问速度和第一写访问速度;以及
第二级别存储器,具有与其相关联的第二特性集合,所述第二特性集合包括第二读访问速度和第二写访问速度,其中的至少一个分别相对低于所述第一读访问速度或第一写访问速度;非易失性,使得如果功率被移除,则所述第二级别存储器维持它的内容;随机访问和存储器子***可寻址能力,使得存储在其中的指令或数据可以在等于由所述多级别存储器***的存储器子***使用的粒度的粒度下被随机地访问,其中所述第一级别存储器的至少一部分作为用于所述第二级别存储器的存储器侧缓存运行;
其中主机侧主存储器控制逻辑电路能被配置为选择多个缓存模式中的任意缓存模式来用于所述第一级别存储器。
18.如权利要求17所述的***,其中所述第一特性中的一个特性包括第一功率消耗级别,并且所述第二特性集合包括相对低于所述第一功率消耗级别的第二功率消耗级别。
19.如权利要求17所述的***,其中所述第一特性中的一个特性包括第一密度,并且所述第二特性集合包括相对高于所述第一密度的第二密度。
20.如权利要求17所述的***,其中所述第二特性中的一个特性包括可被直接写的所述第二级别存储器,以便在写之前不要求对现有的数据进行擦除。
21.如权利要求17所述的***,其中所述第一级别存储器包括动态随机访问存储器(DRAM)。
22.如权利要求21所述的***,其中所述第二级别存储器包括相变存储器(PCM)。
23.如权利要求22所述的***,其中所述PCM存储器包括相变存储器和开关(PCMS)。
24.如权利要求17所述的***,进一步包括:
大容量存储装置,用于持久性地存储指令和数据,所述大容量存储装置通过接口通信地耦合至所述第一级别存储器和所述第二级别存储器。
25.如权利要求17所述的***,其中所述第一级别存储器被逻辑地再分为第一部分和第二部分,根据所选择的缓存模式,所述第一部分被分派为***存储器,并且所述第二部分被分派为用于存储在所述第二级别存储器中的指令和数据的缓存。
26.如权利要求17所述的***,其中所述第一写访问速度相对高于所述第二写访问速度,但所述第一读访问速度近似于所述第二读访问速度。
27.如权利要求26所述的***,其中所述第一写访问速度比所述第二写访问速度高至少一个数量级。
28.如权利要求17所述的***,其中所述第一特性集合包括第一读访问等待时间和第一写访问等待时间,并且所述第二特性集合包括第二读访问等待时间和第二写访问等待时间,其中的至少一个分别相对高于所述第一读访问等待时间或第二写访问等待时间。
29.如权利要求17所述的***,其中针对每单元大小的制造,所述第二级别存储器比所述第一级别存储器便宜。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/054430 WO2013048497A1 (en) | 2011-09-30 | 2011-09-30 | Apparatus and method for implementing a multi-level memory hierarchy |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103946812A CN103946812A (zh) | 2014-07-23 |
CN103946812B true CN103946812B (zh) | 2017-06-09 |
Family
ID=47996228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180075118.5A Active CN103946812B (zh) | 2011-09-30 | 2011-09-30 | 用于实现多级别存储器分级体系的设备和方法 |
Country Status (5)
Country | Link |
---|---|
US (3) | US9600416B2 (zh) |
EP (2) | EP2761466B1 (zh) |
CN (1) | CN103946812B (zh) |
TW (1) | TWI624759B (zh) |
WO (1) | WO2013048497A1 (zh) |
Families Citing this family (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013048493A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Memory channel that supports near memory and far memory access |
US9430372B2 (en) | 2011-09-30 | 2016-08-30 | Intel Corporation | Apparatus, method and system that stores bios in non-volatile random access memory |
US20130091331A1 (en) * | 2011-10-11 | 2013-04-11 | Iulian Moraru | Methods, apparatus, and articles of manufacture to manage memory |
US9753858B2 (en) * | 2011-11-30 | 2017-09-05 | Advanced Micro Devices, Inc. | DRAM cache with tags and data jointly stored in physical rows |
CN103975287B (zh) | 2011-12-13 | 2017-04-12 | 英特尔公司 | 使用非易失性随机存取存储器的服务器中的增强***睡眠状态支持 |
CN102497527B (zh) * | 2011-12-16 | 2013-11-27 | 杭州海康威视数字技术股份有限公司 | 多处理器视频处理***及其中的视频图像同步传输与显示方法 |
CN103999067A (zh) | 2011-12-21 | 2014-08-20 | 英特尔公司 | 以多个非易失性存储器为特征的高性能存储结构和*** |
KR101572403B1 (ko) * | 2011-12-22 | 2015-11-26 | 인텔 코포레이션 | 메모리 채널 셧다운에 의한 전력 절약 |
CN104126181A (zh) * | 2011-12-30 | 2014-10-29 | 英特尔公司 | 作为随机存取存储器的非易失性半导体存储装置的***存取的薄变换 |
WO2013101201A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Home agent multi-level nvm memory architecture |
US9418700B2 (en) | 2012-06-29 | 2016-08-16 | Intel Corporation | Bad block management mechanism |
TWI550627B (zh) * | 2013-11-28 | 2016-09-21 | 旺宏電子股份有限公司 | 儲存裝置及其操作方法 |
US20160343455A1 (en) * | 2014-01-31 | 2016-11-24 | Hewlett Packard Enterprise Development Lp | Remapping memory locations in a memory array |
CN103811051B (zh) * | 2014-02-17 | 2017-01-11 | 上海新储集成电路有限公司 | 一种分层存储器阵列及其工作方法 |
GB2524063B (en) | 2014-03-13 | 2020-07-01 | Advanced Risc Mach Ltd | Data processing apparatus for executing an access instruction for N threads |
US9558120B2 (en) | 2014-03-27 | 2017-01-31 | Intel Corporation | Method, apparatus and system to cache sets of tags of an off-die cache memory |
WO2015147868A1 (en) * | 2014-03-28 | 2015-10-01 | Empire Technology Development Llc | Magnetoresistive random-access memory cache write management |
US20150293845A1 (en) * | 2014-04-11 | 2015-10-15 | Advanced Micro Devices, Inc. | Multi-level memory hierarchy |
US20160092361A1 (en) * | 2014-09-26 | 2016-03-31 | Intel Corporation | Caching technologies employing data compression |
WO2016093813A1 (en) * | 2014-12-10 | 2016-06-16 | Hewlett Packard Enterprise Development Lp | A multi-tier security framework |
WO2016122466A1 (en) * | 2015-01-27 | 2016-08-04 | Hewlett Packard Enterprise Development Lp | Transferring a variable data payload |
US10324861B2 (en) * | 2015-02-05 | 2019-06-18 | Eta Scale Ab | Systems and methods for coherence in clustered cache hierarchies |
US10204047B2 (en) | 2015-03-27 | 2019-02-12 | Intel Corporation | Memory controller for multi-level system memory with coherency unit |
US9952801B2 (en) | 2015-06-26 | 2018-04-24 | Intel Corporation | Accelerated address indirection table lookup for wear-leveled non-volatile memory |
US10387259B2 (en) | 2015-06-26 | 2019-08-20 | Intel Corporation | Instant restart in non volatile system memory computing systems with embedded programmable data checking |
US10073659B2 (en) | 2015-06-26 | 2018-09-11 | Intel Corporation | Power management circuit with per activity weighting and multiple throttle down thresholds |
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 |
US20170091099A1 (en) * | 2015-09-25 | 2017-03-30 | Zvika Greenfield | Memory controller for multi-level system memory having sectored cache |
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 |
US9792224B2 (en) | 2015-10-23 | 2017-10-17 | Intel Corporation | Reducing latency by persisting data relationships in relation to corresponding data in persistent memory |
US10033411B2 (en) | 2015-11-20 | 2018-07-24 | Intel Corporation | Adjustable error protection for stored data |
US10095618B2 (en) | 2015-11-25 | 2018-10-09 | Intel Corporation | Memory card with volatile and non volatile memory space having multiple usage model configurations |
US9785373B2 (en) | 2015-11-25 | 2017-10-10 | International Business Machines Corporation | Optimizing fine grained context addressability in highly dimensional environments using TCAM hybrid memory and storage architectures |
US10303372B2 (en) | 2015-12-01 | 2019-05-28 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and operation method thereof |
US9747041B2 (en) | 2015-12-23 | 2017-08-29 | Intel Corporation | Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device |
KR102507219B1 (ko) * | 2016-02-02 | 2023-03-09 | 에스케이하이닉스 주식회사 | 시스템 및 시스템의 동작 방법 |
US20170262367A1 (en) * | 2016-03-11 | 2017-09-14 | Qualcomm Incorporated | Multi-rank collision reduction in a hybrid parallel-serial memory system |
US10007606B2 (en) | 2016-03-30 | 2018-06-26 | Intel Corporation | Implementation of reserved cache slots in computing system having inclusive/non inclusive tracking and two level system memory |
US10185619B2 (en) | 2016-03-31 | 2019-01-22 | Intel Corporation | Handling of error prone cache line slots of memory side cache of multi-level system memory |
US10747694B2 (en) | 2016-06-07 | 2020-08-18 | Ncorium | Multi-level data cache and storage on a memory bus |
US10120806B2 (en) | 2016-06-27 | 2018-11-06 | Intel Corporation | Multi-level system memory with near memory scrubbing based on predicted far memory idle time |
US10229047B2 (en) * | 2016-08-06 | 2019-03-12 | Wolley Inc. | Apparatus and method of wear leveling for storage class memory using cache filtering |
US11237758B2 (en) | 2016-08-06 | 2022-02-01 | Wolley Inc. | Apparatus and method of wear leveling for storage class memory using address cache |
WO2018059656A1 (en) * | 2016-09-30 | 2018-04-05 | Intel Corporation | Main memory control function with prefetch intelligence |
CN108241484B (zh) * | 2016-12-26 | 2021-10-15 | 上海寒武纪信息科技有限公司 | 基于高带宽存储器的神经网络计算装置和方法 |
US10915453B2 (en) * | 2016-12-29 | 2021-02-09 | Intel Corporation | Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures |
US10445261B2 (en) | 2016-12-30 | 2019-10-15 | Intel Corporation | System memory having point-to-point link that transports compressed traffic |
US10885985B2 (en) | 2016-12-30 | 2021-01-05 | Western Digital Technologies, Inc. | Processor in non-volatile storage memory |
US10229065B2 (en) * | 2016-12-31 | 2019-03-12 | Intel Corporation | Unified hardware and software two-level memory |
TWI685747B (zh) * | 2017-05-03 | 2020-02-21 | 大陸商合肥沛睿微電子股份有限公司 | 延伸裝置與記憶系統 |
US10068663B1 (en) * | 2017-05-30 | 2018-09-04 | Seagate Technology Llc | Data storage device with rewriteable in-place memory |
US10304814B2 (en) | 2017-06-30 | 2019-05-28 | Intel Corporation | I/O layout footprint for multiple 1LM/2LM configurations |
US11126550B1 (en) | 2017-09-01 | 2021-09-21 | Crossbar, Inc | Integrating a resistive memory system into a multicore CPU die to achieve massive memory parallelism |
US11188467B2 (en) | 2017-09-28 | 2021-11-30 | Intel Corporation | Multi-level system memory with near memory capable of storing compressed cache lines |
CN107797945A (zh) * | 2017-10-31 | 2018-03-13 | 郑州云海信息技术有限公司 | 一种存储***及其数据存储方法、装置、***及设备 |
US10860244B2 (en) | 2017-12-26 | 2020-12-08 | Intel Corporation | Method and apparatus for multi-level memory early page demotion |
US10387304B2 (en) * | 2017-12-28 | 2019-08-20 | Intel Corporation | Virtual transfer of data between memory and storage domains |
GB2570326B (en) * | 2018-01-22 | 2020-06-10 | Advanced Risc Mach Ltd | Multiple guard tag setting instruction |
US11762566B2 (en) | 2018-01-22 | 2023-09-19 | Arm Limited | Programmable mapping of guard tag storage locations |
EP3762831A4 (en) * | 2018-03-08 | 2022-04-06 | Quadric.I0, Inc. | INTEGRATED CIRCUIT FOR MACHINE PERCEPTION AND DENSITY ALGORITHM |
JP7386543B2 (ja) | 2018-03-28 | 2023-11-27 | クアドリック.アイオー,インコーポレイテッド | 機械知覚および高密度アルゴリズム集積回路を実装するためのシステムおよび方法 |
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 |
CN110660421B (zh) * | 2018-06-29 | 2021-11-23 | 上海磁宇信息科技有限公司 | 一种带纠错和压缩电路的磁性随机存储器 |
US20200073759A1 (en) * | 2018-09-05 | 2020-03-05 | Hewlett Packard Enterprise Development Lp | Maximum data recovery of scalable persistent memory |
US11055228B2 (en) | 2019-01-31 | 2021-07-06 | Intel Corporation | Caching bypass mechanism for a multi-level memory |
CN111913647B (zh) * | 2019-05-08 | 2022-10-11 | 华为技术有限公司 | 一种存储设备的磨损均衡方法、装置及相关设备 |
US11537521B2 (en) | 2019-06-05 | 2022-12-27 | Samsung Electronics Co., Ltd. | Non-volatile dual inline memory module (NVDIMM) for supporting dram cache mode and operation method of NVDIMM |
US11526448B2 (en) * | 2019-09-27 | 2022-12-13 | Intel Corporation | Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning |
US11151058B2 (en) | 2020-01-21 | 2021-10-19 | International Business Machines Corporation | Adaptive caching in a multi-tier cache |
US11157418B2 (en) | 2020-02-09 | 2021-10-26 | International Business Machines Corporation | Prefetching data elements within a heterogeneous cache |
US11687468B2 (en) * | 2020-07-02 | 2023-06-27 | International Business Machines Corporation | Method and apparatus for securing memory modules |
US11599472B1 (en) | 2021-09-01 | 2023-03-07 | Micron Technology, Inc. | Interleaved cache prefetching |
CN113934170A (zh) * | 2021-10-14 | 2022-01-14 | 西安紫光国芯半导体有限公司 | Scm控制器、***、三维集成装置以及数据处理方法 |
US11914527B2 (en) | 2021-10-26 | 2024-02-27 | International Business Machines Corporation | Providing a dynamic random-access memory cache as second type memory per application process |
CN114356213B (zh) * | 2021-11-29 | 2023-07-21 | 重庆邮电大学 | 一种numa架构下nvm磨损均衡的并行空间管理方法 |
FR3129763B1 (fr) * | 2021-12-01 | 2024-07-19 | Stmicroelectronics Rousset Sas | Systeme sur puce comportant une memoire non volatile |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1089185A2 (en) * | 1999-10-01 | 2001-04-04 | Fujitsu Limited | Method of controlling a cache memory to increase an access speed to a main memory, and a computer using the method |
CN101369451A (zh) * | 2007-08-14 | 2009-02-18 | 三星电子株式会社 | 固态存储器、包含其的计算机***和操作其的方法 |
CN101887350A (zh) * | 2009-05-14 | 2010-11-17 | E·孔法洛涅里 | 用于存储总线接口的pcm存储器 |
Family Cites Families (101)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3909798A (en) | 1974-01-25 | 1975-09-30 | Raytheon Co | Virtual addressing method and apparatus |
US4713755A (en) | 1985-06-28 | 1987-12-15 | Hewlett-Packard Company | Cache memory consistency control with explicit software instructions |
JP3451099B2 (ja) | 1991-12-06 | 2003-09-29 | 株式会社日立製作所 | 外部記憶サブシステム |
US6161208A (en) | 1994-05-06 | 2000-12-12 | International Business Machines Corporation | Storage subsystem including an error correcting cache and means for performing memory to memory transfers |
US5517615A (en) | 1994-08-15 | 1996-05-14 | Unisys Corporation | Multi-channel integrity checking data transfer system for controlling different size data block transfers with on-the-fly checkout of each word and data block transferred |
US6470405B2 (en) | 1995-10-19 | 2002-10-22 | Rambus Inc. | Protocol for communication with dynamic memory |
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 | 株式会社日立製作所 | マルチプロセッサシステムおよびキャッシュコヒーレンシ制御方法 |
US5822251A (en) | 1997-08-25 | 1998-10-13 | Bit Microsystems, Inc. | Expandable flash-memory mass-storage using shared buddy lines and intermediate flash-bus between device-specific buffers and flash-intelligent DMA controllers |
US5917743A (en) | 1997-10-17 | 1999-06-29 | Waferscale Integration, Inc. | Content-addressable memory (CAM) for a FLASH memory array |
JP3098486B2 (ja) | 1998-03-31 | 2000-10-16 | 山形日本電気株式会社 | 不揮発性半導体記憶装置 |
US6202129B1 (en) | 1998-03-31 | 2001-03-13 | Intel Corporation | Shared cache structure for temporal and non-temporal information using indicative bits |
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 |
US7157314B2 (en) * | 1998-11-16 | 2007-01-02 | Sandisk Corporation | Vertically stacked field programmable nonvolatile memory and method of fabrication |
US7827348B2 (en) | 2000-01-06 | 2010-11-02 | Super Talent Electronics, Inc. | High performance flash memory devices (FMD) |
US8171204B2 (en) | 2000-01-06 | 2012-05-01 | Super Talent Electronics, Inc. | Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels |
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 |
US7441081B2 (en) * | 2004-12-29 | 2008-10-21 | Lsi Corporation | Write-back caching for disk drives |
US7681004B2 (en) | 2005-06-13 | 2010-03-16 | Addmm, Llc | Advanced dynamic disk memory module |
US20070005922A1 (en) | 2005-06-30 | 2007-01-04 | Swaminathan Muthukumar P | Fully buffered DIMM variable read latency |
KR100609621B1 (ko) | 2005-07-19 | 2006-08-08 | 삼성전자주식회사 | 메모리 블락별로 레이턴시 제어가 가능한 동기식 반도체메모리 장치 |
US7516349B2 (en) | 2005-12-29 | 2009-04-07 | Intel Corporation | Synchronized memory channels with unidirectional links |
CN101501779B (zh) | 2006-05-12 | 2013-09-11 | 苹果公司 | 具有自适应容量的存储设备 |
US7761657B2 (en) | 2006-07-10 | 2010-07-20 | Hitachi, Ltd. | Storage control system, control method for storage control system, port selector, and controller |
US7478197B2 (en) | 2006-07-18 | 2009-01-13 | International Business Machines Corporation | Adaptive mechanisms for supplying volatile data copies in multiprocessor systems |
US7493439B2 (en) | 2006-08-01 | 2009-02-17 | International Business Machines Corporation | Systems and methods for providing performance monitoring in a memory system |
US7587559B2 (en) | 2006-08-10 | 2009-09-08 | International Business Machines Corporation | Systems and methods for memory module power management |
US7555605B2 (en) | 2006-09-28 | 2009-06-30 | Freescale Semiconductor, Inc. | Data processing system having cache memory debugging support and method therefor |
US8051253B2 (en) | 2006-09-28 | 2011-11-01 | Virident Systems, Inc. | Systems and apparatus with programmable memory control for heterogeneous main memory |
US8683139B2 (en) | 2006-10-31 | 2014-03-25 | Hewlett-Packard Development Company, L.P. | Cache and method for cache bypass functionality |
WO2008055269A2 (en) | 2006-11-04 | 2008-05-08 | Virident Systems, Inc. | Asymmetric memory migration in 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 |
US8799620B2 (en) | 2007-06-01 | 2014-08-05 | Intel Corporation | Linear to physical address translation with support for page attributes |
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 |
CN101237546A (zh) | 2007-11-13 | 2008-08-06 | 东南大学 | 应用于车载环境的高速音视频海量存储方法及其装置 |
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 |
TWI437429B (zh) | 2008-06-04 | 2014-05-11 | A Data Technology Co Ltd | 多通道混合密度記憶體儲存裝置及其控制方法 |
US20090313416A1 (en) | 2008-06-16 | 2009-12-17 | George Wayne Nation | Computer main memory incorporating volatile and non-volatile memory |
US8166229B2 (en) | 2008-06-30 | 2012-04-24 | Intel Corporation | Apparatus and method for multi-level cache utilization |
CN102150147A (zh) | 2008-07-03 | 2011-08-10 | 惠普开发有限公司 | 存储器服务器 |
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 |
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 | メモリシステムおよび情報処理装置 |
US8626997B2 (en) | 2009-07-16 | 2014-01-07 | Micron Technology, Inc. | Phase change memory in a dual inline memory module |
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 |
US8249099B2 (en) | 2009-08-27 | 2012-08-21 | Texas Instruments Incorporated | External memory data management with data regrouping and channel look ahead |
US20110087824A1 (en) | 2009-10-08 | 2011-04-14 | Giga-Byte Technology Co.,Ltd. | Flash memory accessing apparatus and method thereof |
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 |
US20110197031A1 (en) | 2010-02-05 | 2011-08-11 | Nokia Corporation | Update Handler For Multi-Channel Cache |
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 |
GB201011146D0 (en) | 2010-07-02 | 2010-08-18 | Vodafone Ip Licensing Ltd | Mobile computing device |
US8838935B2 (en) | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
CN101989183A (zh) | 2010-10-15 | 2011-03-23 | 浙江大学 | 混合主存储器实现节能存储的方法 |
US8806106B2 (en) | 2010-11-12 | 2014-08-12 | Seagate Technology Llc | Estimating wear of non-volatile, solid state memory |
US8612676B2 (en) | 2010-12-22 | 2013-12-17 | Intel Corporation | Two-level system main memory |
US9779020B2 (en) | 2011-02-08 | 2017-10-03 | Diablo Technologies Inc. | System and method for providing an address cache for memory map learning |
US20120221785A1 (en) | 2011-02-28 | 2012-08-30 | Jaewoong Chung | Polymorphic Stacked DRAM Memory Architecture |
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 | 中兴通讯股份有限公司 | 一种内容调度的方法、装置和*** |
US20120324195A1 (en) | 2011-06-14 | 2012-12-20 | Alexander Rabinovitch | Allocation of preset cache lines |
US8767482B2 (en) * | 2011-08-18 | 2014-07-01 | Micron Technology, Inc. | Apparatuses, devices and methods for sensing a snapback event in a circuit |
US9411728B2 (en) * | 2011-12-23 | 2016-08-09 | Intel Corporation | Methods and apparatus for efficient communication between caches in hierarchical caching design |
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 |
US20140189204A1 (en) * | 2012-12-28 | 2014-07-03 | Hitachi, Ltd. | Information processing apparatus and cache control method |
US9477605B2 (en) * | 2013-07-11 | 2016-10-25 | Advanced Micro Devices, Inc. | Memory hierarchy using row-based compression |
US10255190B2 (en) * | 2015-12-17 | 2019-04-09 | Advanced Micro Devices, Inc. | Hybrid cache |
-
2011
- 2011-09-30 EP EP11873218.9A patent/EP2761466B1/en active Active
- 2011-09-30 WO PCT/US2011/054430 patent/WO2013048497A1/en active Application Filing
- 2011-09-30 CN CN201180075118.5A patent/CN103946812B/zh active Active
- 2011-09-30 EP EP20173833.3A patent/EP3712774B1/en active Active
- 2011-09-30 US US13/997,189 patent/US9600416B2/en active Active
-
2012
- 2012-09-20 TW TW101134490A patent/TWI624759B/zh not_active IP Right Cessation
-
2017
- 2017-03-13 US US15/457,847 patent/US10241912B2/en active Active
-
2019
- 2019-03-25 US US16/363,992 patent/US10719443B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1089185A2 (en) * | 1999-10-01 | 2001-04-04 | Fujitsu Limited | Method of controlling a cache memory to increase an access speed to a main memory, and a computer using the method |
CN101369451A (zh) * | 2007-08-14 | 2009-02-18 | 三星电子株式会社 | 固态存储器、包含其的计算机***和操作其的方法 |
CN101887350A (zh) * | 2009-05-14 | 2010-11-17 | E·孔法洛涅里 | 用于存储总线接口的pcm存储器 |
Also Published As
Publication number | Publication date |
---|---|
EP3712774A1 (en) | 2020-09-23 |
WO2013048497A1 (en) | 2013-04-04 |
EP2761466A4 (en) | 2015-06-03 |
US10719443B2 (en) | 2020-07-21 |
US9600416B2 (en) | 2017-03-21 |
EP2761466B1 (en) | 2020-08-05 |
US20140129767A1 (en) | 2014-05-08 |
TWI624759B (zh) | 2018-05-21 |
US10241912B2 (en) | 2019-03-26 |
EP2761466A1 (en) | 2014-08-06 |
EP3712774B1 (en) | 2023-02-15 |
CN103946812A (zh) | 2014-07-23 |
US20170249250A1 (en) | 2017-08-31 |
TW201329710A (zh) | 2013-07-16 |
US20190220406A1 (en) | 2019-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103946812B (zh) | 用于实现多级别存储器分级体系的设备和方法 | |
CN103946813B (zh) | 基于使用统计量追踪的远存储器访问信号的生成 | |
CN103946811B (zh) | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 | |
CN104115129B (zh) | 用于从处理器到存储器子***智能刷新数据的***和方法 | |
CN104050112B (zh) | 用于标记需要写回持久存储的非事务代码区的开头和结束的指令 | |
CN103946826B (zh) | 用于在公共存储器通道上实现多级存储器层级的设备和方法 | |
CN103988183B (zh) | 2级存储器分级结构中的存储器侧高速缓存的动态部分断电 | |
CN104025060B (zh) | 支持近存储器和远存储器访问的存储器通道 | |
CN103999161B (zh) | 用于相变存储器漂移管理的设备和方法 | |
CN103975287B (zh) | 使用非易失性随机存取存储器的服务器中的增强***睡眠状态支持 | |
CN104106057B (zh) | 用非易失性随机存取存储器提供对休眠状态转变的即时响应的方法和*** | |
CN104115132B (zh) | 借助于存储器通道关闭的功率节约 | |
CN104115136B (zh) | 非易失性随机访问存储器中存储bios的装置、方法和*** | |
CN104115230B (zh) | 基于高效pcms刷新机制的计算装置、方法和*** | |
CN108549609A (zh) | 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram) | |
CN104011691A (zh) | 非易失性ram盘 | |
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 |