CN107368433A - 2级存储器分级结构中的存储器侧高速缓存的动态部分断电 - Google Patents

2级存储器分级结构中的存储器侧高速缓存的动态部分断电 Download PDF

Info

Publication number
CN107368433A
CN107368433A CN201710343834.6A CN201710343834A CN107368433A CN 107368433 A CN107368433 A CN 107368433A CN 201710343834 A CN201710343834 A CN 201710343834A CN 107368433 A CN107368433 A CN 107368433A
Authority
CN
China
Prior art keywords
memory
msc
cache
pcm
designated area
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
CN201710343834.6A
Other languages
English (en)
Other versions
CN107368433B (zh
Inventor
R.K.拉马努詹
G.J.欣顿
D.J.齐默曼
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
Priority to CN201710343834.6A priority Critical patent/CN107368433B/zh
Publication of CN107368433A publication Critical patent/CN107368433A/zh
Application granted granted Critical
Publication of CN107368433B publication Critical patent/CN107368433B/zh
Active 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/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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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
    • 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
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of 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/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

描述用于刷新多级存储器分级结构中的存储器侧高速缓存(MSC)的所指定区域的系统和方法。例如,按照一个实施例的计算机系统包括:存储器子系统,包括非易失性系统存储器和用于缓存非易失性系统存储器的部分的易失性存储器侧高速缓存(MSC);以及刷新引擎,用于响应与MSC的所指定区域关联的停用条件而将MSC的所指定区域刷新到非易失性系统存储器。

Description

2级存储器分级结构中的存储器侧高速缓存的动态部分断电
技术领域
一般来说,本发明涉及计算机系统领域。更具体来说,本发明涉及用于实现多级存储器分级结构的设备和方法。
背景技术
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)及相关技术
有时又称作相变随机存取存储器(PRAM或PCRAM)、PCME、奥式统一存储器或硫属化物RAM(C-RAM)的相变存储器(PCM)是一种类型的非易失性计算机存储器,其利用硫属化物玻璃的独特行为。由于通过电流的经过所产生的热量,硫属化物玻璃能够在两种状态之间来切换:晶体和非晶。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示出MSC架构的一实施例;
图5B示出与图5A的MSC 架构的一实施例关联的附加细节的实施例;
图5C示出与图5A的MSC 架构的一实施例关联的附加细节的另一实施例;
图5D示出一组示范数据的组织以及对应ECC和标签的实施例;
图5E示出与包括PCM远存储控制器和一组PCM远存储器模块的PCM DIMM的一个实施例关联的附加细节的实施例;
图6A中示出本发明的一个具体实施例,其中系统物理地址(SPA)空间在多个MSC之间划分;
图6B提供按照本发明的实施例、可如何配置系统存储器地址映射、近存储器地址映射和PCM地址映射的图形表示;
图6C和图6D示出本发明的一个实施例中采用的寻址技术;
图7A-B示出用于停用MSC的区域的本发明的实施例;
图8A-B示出用于响应电力故障条件而刷新(flush)MSC的本发明的实施例;
图9A-B示出用于响应休眠条件而从MSC来刷新脏(dirty)高速缓存线的本发明的实施例。
具体实施方式
在以下描述中,提出了诸如逻辑实现、操作码、指定操作数的部件、资源划分/共享/重复实现、系统组件的类型和相互关系以及逻辑划分/集成选择之类的许多具体细节,以便提供对本发明的更透彻了解。然而,本领域的技术人员将会理解,即使没有这类具体细节,也可实施本发明。在其它情况下,没有详细示出控制结构、门级电路和完整软件指令序列,以免影响对本发明的理解。通过所包含的描述,本领域的技术人员将能够实现适当的功能性而无需过分实验。
说明书中提到“一个实施例”、“实施例”、“一个示例实施例”等表示所述的实施例可包括特定特征、结构或特性,但可能不一定每一个实施例都包括该特定特征、结构或特性。此外,这类词语不一定指同一个实施例。此外,在结合一个实施例来描述特定特征、结构或特性时,无论是否明确描述,均认为结合其它实施例来实现这种特征、结构或特性是在本领域的技术人员的知识范围之内的。
在以下描述和权利要求书中,可使用术语“耦合”和“连接”及其派生。应当理解,这些术语并不是要作为彼此的同义词。“耦合”用于表示彼此可以有或者可以没有直接物理或电接触的两个或更多元件相互配合或交互。“连接”用于表示相互耦合的两个或更多元件之间的通信的建立。
加括号文本以及具有虚线边界的框(例如长划线、短划线、点划线、点)在本文中有时用来示出可选操作/组件,其对本发明的实施例添加附加特征。但是,这种标记法不应当被理解为意味着这些是唯一选项或者可选操作/组件,和/或具有实线边界的框在本发明的某些实施例中不是可选的。
介绍
随着不断增加数量的处理器核和新使用模型(例如虚拟化),存储器容量和性能要求持续增加。另外,存储器功率和成本分别成为电子系统的总功率和成本的显著成分。
本发明的一些实施例通过在存储器技术之间智能地细分性能要求和容量要求,来解决上述难题。这种方式集中于采用较少量的较高速率存储器、例如DRAM来提供性能,同时使用明显更廉价和密集的非易失性随机存取存储器(NVRAM)来实现系统存储器主体。下面所述的本发明的实施例定义平台配置,其实现NVRAM的使用的分级存储器子系统组织。存储器分级结构中的NVRAM的使用还实现新使用、例如扩展引导空间和大容量存储实现,如下面详细描述。
图1示出按照本发明的实施例的高速缓存和系统存储器布置。具体来说,图1示出存储器分级结构,其中包括:一组内部处理器高速缓存120;充当远存储器高速缓存的“近存储器”121,其可包括(一个或多个)内部高速缓存106和外部高速缓存107-109;以及“远存储器”122。在本发明的一些实施例中可用于“远存储器”的一种特定类型的存储器是非易失性随机存取存储器(“NVRAM”)。因此,下面提供NVRAM的概述,之后接着远存储器和近存储器的概述。
A.非易失性随机存取存储器(“NVRAM”)
存在NVRAM的许多可能技术选择,包括PCM、相变存储器和开关(PCMS)(后者是前者的更具体实现)、字节可寻址永久存储器(BPRAM)、通用存储器、Ge2Sb2Te5、可编程金属化单元(PMC)、电阻存储器(RRAM)、RESET(非晶)单元、SET(晶体)单元、PCME、奥氏(Ovshinsky)存储器、铁电存储器(又称作聚合物存储器和聚(N-乙烯基咔唑))、铁磁存储器(又称作自旋电子、SPRAM(自旋转移矩RAM)、STRAM(自旋隧穿RAM)、磁阻存储器、磁存储器、磁随机存取存储器(MRAM))以及半导体-氧化物-氮化物-氧化物-半导体(SONOS,又称作介电存储器)。
为了在本申请所述的存储器分级结构中使用,NVRAM具有下列特性:
(1)它即使在去除电力之后也保持其内容,与固态硬盘(SSD)中使用的闪存存储器相似,但是与易失性的SRAM和DRAM不同;
(2)在空闲时比诸如SRAM和DRAM之类的易失性存储器要低的功率消耗;
(3)与SRAM和DRAM相似的随机存取(又称作随机可寻址);
(4)以比SSD中存在的闪存(其只能够每次一个“块”来重写和擦除—在大小方面对NOR闪存最小为64千字节以及对NAND 闪存为16千字节)要低的粒度等级可重写和可擦除;
(5)可用作系统存储器并且分配有系统存储器地址空间的全部或者一部分;
(6)能够使用事务协议(支持区分不同事务以使得那些事务能够无序完成的事务标识符(ID)的协议)、通过总线耦合到处理器,并且允许以足够小的粒度等级的存取以支持作为系统存储器的NVRAM的操作(例如,诸如64或128字节之类的高速缓存线大小)。例如,总线可以是存储器总线(例如,诸如DDR3、DDR4等的DDR总线),通过其运行事务协议,与正常使用的非事务协议相反。作为另一个示例,总线可以是通过其正常运行事务协议(本地事务协议)的总线,例如PCI 快速(PCIE)总线、桌面管理接口(DMI)总线或者利用事务协议和足够小的事务有效载荷大小(例如,诸如64或128字节之类的高速缓存线大小)的任何其它类型的总线;以及
(7)下列一个或多个:
a) 比非易失性存储器/存储技术、例如闪存要快的写入速度;
b) 极高的读取速度(比闪存要快或者接近或相当于DRAM读取速度);
c) 直接可写(而不是像SSD中使用的闪存存储器那样要求在写入数据之前进行擦除(以1s进行改写));和/或
d) 故障之前的若干数量级(例如2或3)更高的写耐久性(超过SSD中使用的引导ROM和闪存)。
如上所述,与闪存存储器(其必须每次一个完整“块”来重写和擦除)相对照,在任何给定实现中用以存取NVRAM的粒度等级可取决于特定存储控制器和特定存储器总线或者NVRAM与其耦合的其它类型的总线。例如,在NVRAM用作系统存储器的一些实现中,尽管以一字节的粒度来存取的固有能力,但是NVRAM可以高速缓存线(例如64字节或128字节高速缓存线)的粒度来存取,因为高速缓存线是存储器子系统存取存储器的等级。因此,当NVRAM部署在存储器子系统中时,它可在与同一存储器子系统中使用的DRAM(例如“近存储器”)相同的粒度等级来存取。即使如此,由存储控制器和存储器总线或者其它类型的总线对NVRAM的存取的粒度等级也比由闪存所使用的块大小以及I/O子系统的控制器和总线的存取大小要小。
NVRAM还可结合耗损均匀化算法,以考虑如下事实:在远存储器级的存储单元在多个写入存取之后开始耗损,特别是在大量写入例如在系统存储器实现中可发生的情况下。由于高循环计数块最可能这样耗损,所以耗损均匀化通过交换高循环计数块与低循环计数块的地址,来扩展跨远存储器单元的写入。注意,大多数地址交换通常对应用程序是透明的,因为它由硬件、低级软件(例如低级驱动程序或操作系统)或者两者的组合来操控。
B. 远存储器
本发明的一些实施例的远存储器122采用NVRAM但实现,但是不一定局限于任何特定存储器技术。远存储器122根据其特性和/或它在存储器/存储分级结构中的应用与其它指令和数据存储器/存储技术是可加以区分的。例如,远存储器122不同于:
1) 静态随机存取存储器(SRAM),其可用于分别专门用于处理器核101-104的每个的第0级和第1级内部处理器高速缓存101a-b、102a-b、103a-b、103a-b和104a-b以及由处理器核所共享的低级高速缓存(LLC)105。
2) 动态随机存取存储器(DRAM),配置为处理器100内部(例如在与处理器100相同的裸晶上)的高速缓存106,和/或配置为处理器外部(例如在与处理器100相同或不同的封装中)的一个或多个高速缓存107-109;以及
3) 闪存存储器/磁盘/光盘,作为大容量存储(未示出)来应用;以及
4) 存储器,例如闪存存储器或者其它只读存储器(ROM),作为固件存储器(其能够表示引导ROM、BIOS 闪存和/或TPM 闪存)(未示出)来应用。
远存储器122可用作指令和数据存储,其是由处理器100直接可寻址的,并且与作为大容量存储所应用的闪存/磁盘/光盘相对照,能够与处理器100保持足够一致。此外,如上所述以及如以下详细描述,远存储器122可放置于存储器总线上,并且可与存储控制器(其又与处理器100直接通信)直接通信。
远存储器122可与其它指令和数据存储技术(例如DRAM)相结合,以形成混合存储器(又称作并存PCM和DRAM;第一级存储器和第二级存储器;FLAM(闪存和DRAM))。注意,包括PCM/PCMS的上述技术的至少一部分可用作大容量存储来作为对系统存储器的替代或补充,并且在这样应用时无需是由处理器随机可存取的、字节可寻址的或者直接可寻址。
为了便于说明,本申请的其余部分的大多数将提到作为远存储器122的技术选择的“NVRAM”或者更具体来说是“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)、转接卡/小背板或者计算机主板上)。近存储器121可耦合成使用单个或多个高带宽链路、例如DDR或其它事务高带宽链路(如以下详细描述)与处理器100进行通信。
示范系统存储器分配方案
图1示出在本发明的实施例中如何相对系统物理地址(SPA)空间116-119来配置各级高速缓存101-109。如所述,这个实施例包括具有一个或多个核101-104的处理器100,其中各核具有其自己的专用上级高速缓存(L0)101a-104a和中间级高速缓存(MLC)(L1)高速缓存101b-104b。处理器100还包括共享LLC 105。这各个高速缓存级的操作是完全被理解的,并且在这里不作详细描述。
图1所示的高速缓存107-109可专用于特定系统存储器地址范围或者一组非毗连地址范围。例如,高速缓存107专用于充当系统存储器地址范围#1 116的MSC,以及高速缓存108和109专用于充当系统存储器地址范围#2 117和#3 118的非重叠部分部分的MSC。后一种实现可用于其中将由处理器100所使用的SPA空间交织为由高速缓存107-109所使用的地址空间(例如,当配置为MSC时)的系统。在一些实施例中,这后一个地址空间称作存储器通道地址(MCA)空间。在一个实施例中,内部高速缓存101a-106执行整个SPA空间的缓存操作。
如本文所使用的系统存储器是运行于处理器100的软件可见的和/或直接可寻址的;而在高速缓冲存储器101a-109没有形成系统地址空间的直接可寻址部分的意义上它们可对软件透明地操作,但是核还可支持指令的执行,以允许软件向(一个或多个)高速缓存的部分或全部提供某种控制(配置、策略、暗示等)。系统存储器细分为区域116-119可作为系统配置过程的一部分手动执行(例如由系统设计人员),和/或可由软件自动执行。
在一个实施例中,系统存储器区域116-119使用远存储器(例如PCM)、以及在一些实施例中使用配置为系统存储器的近存储器来实现。系统存储器地址范围#4表示一个地址范围,其使用高速存储器、例如DRAM(其可以是按照系统存储器模式(与缓存模式相反)所配置的近存储器)来实现。
图2示出按照本发明的实施例、存储器/存储分级结构140以及近存储器144和NVRAM的不同可配置操作模式。存储器/存储分级结构140具有多级,其中包括:(1) 高速缓存级150,其可包括处理器高速缓存150A(例如图1中的高速缓存101A-105)和作为远存储器的高速缓存的可选近存储器150B(按照如本文所述的某些操作模式);(2) 系统存储器级151,其可包括远存储器151B(例如,NVRAM、如PCM)(当近存储器存在时,或者当近存储器不存在时只是作为系统存储器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 FM 151B(与以下所述的直写模式相反,其中每个写操作立即传播到NVRAM FM 151B)。
(2)近存储器旁路模式:在这种模式中,所有读和写绕过充当FM高速缓存的NM150B,并且直接转到NVRAM FM 151B。例如当应用不是高速缓存友好的或者要求数据以高速缓存线的粒度提交为持久化时,可使用这种模式。在一个实施例中,由处理器高速缓存150A和充当FM高速缓存的NM150B所执行的缓存相互无关地进行操作。因此,数据可缓存在充当FM高速缓存的NM 150B,其没有缓存在处理器高速缓存150A中(并且其在一些情况下可能不准许被缓存在处理器高速缓存150A中),反过来也是一样。因此,可将指定为在处理器高速缓存中“不可缓存的”某些数据缓存在充当FM高速缓存150B的NM中。
(3)近存储器读高速缓存写旁路模式:这是上述模式的变化,其中允许来自NVRAMFM 151 B的永久数据的读缓存(即,永久数据缓存在作为用于只读操作的远存储器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 NVRAM部分172可以是SPA空间的一部分,并且是由运行于处理器核101-104上的软件直接可寻址的,而BIOS闪存170是经过I/O子系统115可寻址的。作为另一个示例,置信平台模块(TPM)NVRAM173部分可用来保护敏感系统信息(例如加密密钥)。
因此,如所示,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以及具有用于系统存储器、大容量存储和可选固件存储器的NVRAM 142的存储器/存储子系统380。在一个实施例中,NVRAM 142包括由计算机系统300用于存储数据、指令、状态和其它永久和非永久信息的整个系统存储器和存储分级结构。如先前所述,NVRAM142能够配置成实现系统存储器、大容量存储和固件存储器、TPM存储器等的典型存储器和存储分级结构中的作用。在图3的实施例中,NVRAM 142分区为FM 151B、NVRAM大容量存储152A、BIOS NVRAM 173和TMP NVRAM 173。还预期具有不同作用的存储分级结构,并且NVRAM142的应用并不局限于上述作用。
作为举例,描述当作为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控制器551使用其在系统存储器地址与NVRAM PDA之间进行转换。在一个实施例中,作为实现成分配存储器存取操作并且由此降低对NVRAM FM 151B的耗损的耗损均匀化算法的一部分,来更新AIT。备选地,AIT可以是NVRAM控制器332中存储的独立表。
在接收来自NVRAM FM 151B的所请求数据时,NVRAM控制器332将所请求数据返回给MSC控制器124,其将数据存储在充当FM高速缓存的MSC近存储器150B中,并且还通过I/O子系统115将数据发送给请求处理器核101-104或I/O装置。对这个数据的后续请求可直接从充当FM高速缓存的近存储器150B来服务,直到它由其它某些NVRAM FM数据替代。
如所述,在一个实施例中,存储器写操作也首先转到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字节之类的高速缓存线大小)的任何其它类型的总线)来与NVRAM142进行通信。
在一个实施例中,计算机系统300包括集成存储控制器(IMC)331,其执行处理器310的中央存储器存取控制,并且耦合到:1) 存储器侧高速缓存(MSC)控制器124,以控制对充当远存储器高速缓存150B的近存储器(NM)的存取;以及2) NVRAM控制器332,以控制对NVRAM 142的存取。虽然图3中示为独立单元,但是MSC控制器124和NVRAM控制器332可在逻辑上形成IMC 331的部分。
在所示实施例中,MSC控制器124包括一组范围寄存器336,其指定用于充当远存储器高速缓存的NM150B的操作模式(例如,回写缓存模式、近存储器旁路模式等,以上所述)。在所示实施例中,DRAM 144用作用于充当远存储器的高速缓存的NM150B的存储器技术。响应存储器存取请求,MSC控制器124可确定(根据范围寄存器336中指定的操作模式)该请求是否能够从充当FM 的高速缓存的NM150B来服务或者该请求是否必须发送给NVRAM控制器332,其则可从NVRAM 142的远存储器(FM)部分151B来服务于该请求。
在NVRAM 142采用PCMS来实现的一个实施例中,NVRAM控制器332是PCMS控制器,其采用符合PCMS技术的协议来执行存取。如先前所述,PCMS存储器固有地能够以字节的粒度来存取。然而,NVRAM控制器332可在较低粒度等级、例如高速缓存线(例如64位或128位高速缓存线)或者符合存储器子系统的任何其它粒度等级来存取基于PCMS的远存储器151B。本发明的基本原理并不局限于用于存取基于PCMS的远存储器151B的任何特定粒度等级。但是,一般来说,当基于PCMS的远存储器151B用来形成系统地址空间的一部分时,粒度等级将高于传统上用于其它非易失性存储技术(其只能以“块”等级(在大小方面对NOR 闪存最小为64 Kbyte以及对NAND 闪存为16 Kbyte)来执行重写和擦除操作)、如闪存的粒度等级。
在所示实施例中,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的高速缓存的NM150B或者定向到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 NVRAM172,则子系统115将该请求转发到NVRAM控制器332。如果这个地址指向TMP NVRAM 173,则I/O子系统115将该请求传递给TPM 334以执行安全存取。
在一个实施例中,转发到NVRAM控制器332的各请求伴随指示存取类型的属性(又称作“事务类型”)。在一个实施例中,NVRAM控制器332可模拟所请求存取类型的存取协议,使得平台的其余部分仍然不知道由NVRAM 142在存储器和存储分级结构中执行的多个作用。在备选实施例中,NVRAM控制器332可执行对NVRAM 142的存储器存取,而与它是哪一种事务类型无关。要理解,解码路径能够与以上所述的不同。例如,IMC 331可对存取请求的目标地址进行解码,并且确定它是否定向到NVRAM 142。如果它定向到NVRAM 142,则IMC 331按照解码表333来生成属性。基于该属性,IMC 331则将请求转发到适当的下游逻辑(例如NVRAM控制器332和I/O子系统315),以执行所请求数据存取。在又一个实施例中,如果对应属性没有从上游逻辑(例如IMC 331和I/O子系统315)来传递,则NVRAM控制器332可对目标地址进行解码。也可实现其它解码路径。
诸如本文所述之类的新存储器架构的存在提供大量新的可能性。虽然在再一步的下面更为详细地进行论述,但是下面立即快速强调这些可能性的一部分。
按照一个可能实现,NVRAM 142充当系统存储器中的传统DRAM技术的完全替代或补充。在一个实施例中,NVRAM 142表示引入第二级系统存储器(例如,系统存储器可被看作具有包括作为高速缓存(DRAM装置340的一部分)的近存储器150B的第一级系统存储器)以及包括远存储器(FM)151B(NVRAM 142的一部分)的第二级系统存储器)。
按照一些实施例,NVRAM 142充当闪速/磁/光大容量存储152B的完全替代或补充。如先前所述,在一些实施例中,即使NVRAM 152A能够具有字节级可寻址性,NVRAM控制器332仍然可根据实现、按照多个字节的块来存取在NVRAM大容量存储152A(例如,64 Kbyte、128Kbyte等。)。由NVRAM控制器332从NVRAM大容量存储152A来存取数据的特定方式可对处理器310所运行的软件是透明的。例如,即使可从闪速/磁/光大容量存储152A以不同方式来存取NVRAM大容量存储152A,操作系统仍然可将NVRAM大容量存储152A看作是标准大容量存储装置(例如串行ATA硬盘驱动器或者其它标准形式的大容量存储装置)。
在NVRAM大容量存储152A充当闪速/磁/光大容量存储152B的完全替代的一个实施例中,不需要将存储驱动程序用于块可寻址存储存取。去除来自存储存取的存储驱动程序开销能够增加存取速度并且节省电力。在期望NVRAM大容量存储152A对OS和/或应用看来是作为块可存取并且与闪速/磁/光大容量存储152B是不可区分的备选实施例中,模拟存储驱动程序能够用来向用于存取NVRAM大容量存储152A的软件展示块可存取接口(例如,通用串行总线(USB)仅大块传输(BOT) 1.0、串行高级技术附连(SATA)3.0等)。
在一个实施例中,NVRAM 142充当固件存储器、例如BIOS 闪存 362和TPM 闪存372(图3中以虚线示出,以指示它们是可选的)的完全替代或补充。例如,NVRAM 142可包括BIOS NVRAM 172部分以补充或替代BIOS 闪存 362,并且可包括TPM NVRAM 173部分以补充或替代TPM 闪存 372。固件存储器还能够存储由TPM 334用来保护敏感系统信息(例如加密密钥)的系统永久状态。在一个实施例中,NVRAM 142用于固件存储器消除了对于第三方闪存部件存储对系统操作是关键的代码和数据的需要。
然后继续图3的系统的论述,在一些实施例中,计算机系统100的架构可包括多个处理器,但是为了简洁起见,图3中示出单个处理器310。处理器310可以是任何类型的数据处理器,包括通用或专用中央处理器(CPU)、专用集成电路(ASIC)或者数字信号处理器(DSP)。例如,处理器310可以是通用处理器,例如Core™ i3、i5、i7、2 Duo和Quad、Xeon™或者Itanium™处理器,它们全都可从加利福尼亚圣克拉拉的英特尔公司得到。备选地,处理器310可以来自另一公司,诸如加利福尼亚桑尼韦尔的ARM股份有限公司、加利福尼亚桑尼韦尔的MIPS技术公司等。处理器310可以是专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。处理器310可在一个或多个封装中包含的一个或多个芯片上实现。处理器310可以是一个或多个衬底的一部分和/或可使用多种工艺技术的任一种、例如BiCMOS、CMOS或NMOS在一个或多个衬底上实现。在图3所示的实施例中,处理器310具有芯片上系统(SOC)配置。
在一个实施例中,处理器310包括集成图形单元311,其包括用于运行图形命令、例如3D或2D图形命令的逻辑。虽然本发明的实施例并不局限于任何特定集成图形单元311,但是在一个实施例中,图形单元311能够运行工业标准图形命令,例如由Open GL和/或DirectX应用编程接口(API)(例如OpenGL 4.1和Direct X 11)所规定的那些命令。
处理器310还可包括一个或多个核101-104,但是再次为了清楚起见,图3中示出单个核。在许多实施例中,(一个或多个)核101-104包括内部功能块,例如一个或多个执行单元、退出单元、一组通用和专用寄存器等。如果(一个或多个)核是多线程或超线程的,则各硬件线程也可被认为是“逻辑”核。核101-104在架构和/或指令集方面可以是同构或异构的。例如,一部分核可以是有序的,而其它核是无序的。作为另一个示例,两个或更多核可以能够运行同一指令集,而其它核可以能够仅运行那个指令集的子集或者不同的指令集。
处理器310还可包括一个或多个高速缓存、例如高速缓存313,其可实现为SRAM和/或DRAM。在未示出的许多实施例中,除了高速缓存313之外的附加高速缓存实现成使得多级高速缓存存在于(一个或多个)核101-104中的执行单元与存储器装置150B、151B之间。例如,共享高速缓存单元集合可包括上级高速缓存(例如第1级(L1)高速缓存)、中间级高速缓存(例如第2级(L2)、第3级(L3)、第4级(L4)或者其它级高速缓存)、(LLC)和/或它们的不同组合。在不同的实施例中,高速缓存313可按照不同方式来分配,并且在不同实施例中可以是许多不同大小其中之一。例如,高速缓存313可以是8兆字节(MB)高速缓存、16 MB高速缓存等。另外,在不同实施例中,高速缓存可以是直接映射高速缓存、全关联高速缓存、多路组关联高速缓存或者具有另一种类型的映射的高速缓存。在包括多个核的其它实施例中,高速缓存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)-快速(PCI-E)3.0、USB 3.0、SATA 3.0、小型计算机系统接口(SCSI)Ultra-640以及电气和电子工程师协会(IEEE)1394“防火墙”等等。对于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的微处理器。在一个实施例中,系统管理员能够通过ME335经由网络336编辑解码表333的内容,由此来远程配置计算机系统300。
为了便于说明,本申请的其余部分有时表示作为PCMS装置的NVRAM 142。PCMS装置包括多层(垂直堆叠)PCM单元阵列,其是非易失性的,具有低功率消耗,并且在比特级是可修改的。因此,术语“NVRAM装置”和“PCMS装置”可在下列论述中可互换地使用。但是,应当知道,如上所述,除了PCMS之外的不同技术也可用于NVRAM 142。
应当理解,计算机系统能够将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封装。
另外,在使用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,其包含集成存储控制器(IMC)331和MSC控制器124。虽然图4A和以下所述的其它附图中示为独立单元,但是在一个实施例中,MSC控制器124可集成在存储控制器331中。
DIMM 450-451使用定义具有DDR地址、数据和控制线和电压的DDR通道440(例如,如电子器件工程联合委员会(JEDEC)所定义的DDR3或DDR4标准)的DDR插槽和电连接。DIMM450-451上的PCM装置提供这个分离架构的远存储器容量,其中到CPU封装401的DDR通道440能够携带DDR和事务协议。与其中处理器310或者CPU封装中的其它逻辑(例如IMC 331或MSC控制器124)传送命令和接收立即响应的DDR协议相对照,用来与PCM装置进行通信的事务协议允许CPU 401发出各通过唯一事务ID来识别的一系列事务。命令由PCM DIMM的接收PCMDIMM上的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。NVRAM装置、例如PCM存储器装置驻留在基于PCM的DIMM 453上,其使用CPU封装401外的附加DDR通道442上的DDR插槽和电连接。基于PCM的DIMM 453提供这个分离架构的远存储器容量,其中到CPU封装401的DDR通道442基于DDR电连接并且能够携带DDR和事务协议。这允许系统采用变化数量的DDR DRAM DIMM 452(例如DD4 DIMM)和PCM DIMM 453来配置,以取得预期容量和/或性能点。
图4C示出分离架构,其包含充当CPU封装401上(在处理器裸晶上或者在独立裸晶上)的存储器侧高速缓存(MSC)的近存储器403-406。CPU封装上的高带宽链路407用来将单个或多个DRAM装置403-406互连到处理器310,其包含存储控制器 331和MSC控制器124,如分离架构所定义。NVRAM、例如PCM存储器装置驻留在PCI 快速卡或转接卡455上,其通过PCI快速总线454来使用PCI 快速电连接和PCI 快速协议或者不同事务协议。PCI 快速卡或转接卡455上的PCM装置提供这个分离架构的远存储器容量。
图4D是分离架构,其使用基于DDR DRAM的DIMM 452和DDR通道440来形成近存储器(其充当MSC)。处理器310包含存储控制器331和MSC控制器124。NVRAM、例如PCM存储器装置455驻留在PCI 快速卡或转接卡上,其通过PCI 快速链路454来使用PCI 快速电连接和PCI快速协议或者不同事务协议。PCI 快速卡或转接卡455上的PCM装置提供这个分离架构的远存储器容量,其中CPU封装401外的存储器通道接口提供DDR DRAM DIMM 452的多个DDR通道440。
图4E示出统一架构,其包含充当MSC的近存储器以及远存储器NVRAM,例如PCI 快速卡或转接卡456(其通过PCI 快速总线454来使用PCI 快速电连接和PCI 快速协议或者不同事务协议)上的PCM。处理器310包含集成存储控制器331,但是在这种统一架构情况下,MSC控制器124连同DRAM近存储器和NVRAM远存储器一起驻留在卡或转接卡456上。
图4F示出统一架构,其包含充当MSC的近存储器以及远存储器NVRAM、例如使用DDR通道457的DIMM 458上的PCM。这个统一架构中的近存储器包含各DIMM 458上充当那个相同DIMM 458上的PCM装置(其形成那个特定DIMM的远存储器)的存储器侧高速缓存的DRAM。MSC控制器124连同近和远存储器一起驻留在各DIMM 458上。在这个实施例中,DDR总线457的多个存储器通道设置在CPU封装外。这个实施例的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、411b进行寻址。
图4H示出统一架构,其中充当存储器侧高速缓存的近存储器461a驻留在小背板或转接卡461上,采取基于DRAM的DDR DIMM的形式。存储器侧高速缓存(MSC)控制器124位于转接卡的DDR和PCM控制器460中,其可具有连接到小背板/转接卡461上的DDR DIMM通道470并且通过(一个或多个)高性能互连462、例如差分存储器链路互连到CPU的两个或更多存储器通道。关联远存储器461b位于同一小背板/转接卡461上,并且由使用DDR信道470并且装载有NVRAM(例如PCM装置)的DIMM来形成。
图4I示出统一架构,其能够用作对通过DDR总线471连接到其DDR存储器子系统上的CPU封装401的DDR存储器子系统和DIMM 464的存储器容量扩展。对于这个配置中的附加的基于NVM的容量,充当MSC的近存储器驻留在小背板或转接卡463上,采取基于DRAM的DDRDIMM 463a的形式。MSC控制器124位于转接卡的DDR和PCM控制器460中,其可具有连接到小背板/转接卡上的DDR DIMM通道470并且通过(一个或多个)高性能互连462、例如差分存储器链路互连到CPU的两个或更多存储器通道。关联远存储器463b位于同一小背板/转接卡463上,并且由使用DDR信道470并且装载有NVRAM(例如PCM装置)的DIMM 463b来形成。
图4J是统一架构,其中充当存储器侧高速缓存(MSC)的近存储器驻留在每一个DIMM 465上,采取DRAM的形式。DIMM 465在将CPU封装401与位于DIMM上的MSC控制器124耦合的高性能互连/通道462、例如差分存储器链路上。关联远存储器位于相同DIMM 465上,并且由NVRAM(例如PCM装置)来形成。
图4K示出统一架构,其中充当MSC的近存储器驻留在每一DIMM 466上,采取DRAM的形式。DIMM在将CPU封装401与位于DIMM上的MSC控制器124连接的(一个或多个)高性能互连470上。关联远存储器位于相同DIMM 466上,并且由NVRAM(例如PCM装置)来形成。
图4L示出分离架构,其使用DDR总线471上的基于DDR DRAM的DIMM 464来形成必要的近存储器(其充当MSC)。处理器310包含集成存储控制器331和存储器侧高速缓存控制器124。NVRAM、例如PCM存储器形成远存储器(其驻留在卡或转接卡476上),其使用高性能互连468(其使用事务协议向CPU封装401进行传递)。包含远存储器的卡或转接卡467包含单个缓冲器/控制器,其能够控制多个基于PCM的存储器或者在那个转接卡上连接的多个基于PCM的DIMM。
图4M示出统一架构,其可使用卡或转接卡469上的DRAM来形成必要的近存储器(其充当MSC)。NVRAM、例如PCM存储器装置形成远存储器,其也驻留在卡或转接卡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近存储器中,由此将存储器事务定位到那个特定存储器通道。
另外,为了实现上述实施例,系统地址空间在逻辑上可在不同存储器通道之间细分。例如,如果存在四个存储器通道,则系统地址空间的¼可分配给各存储器通道。如果各存储器通道提供有一个基于PCMS的DIMM和一个DDR DIMM,则DDR DIMM可配置成充当系统地址空间的那个¼部分的MSC。
系统存储器和大容量存储装置的选择可取决于其上采用本发明的实施例的电子平台的类型。例如,在个人计算机、平板计算机、笔记本计算机、智能电话、移动电话、特征电话、个人数字助理(PDA)、便携媒体播放器、便携游戏装置、游戏控制台、数码相机、开关、集线器、路由器、机顶盒、数字录像机或者具有较小大容量存储要求的其它装置中,大容量存储可单独使用NVRAM大容量存储152A或者使用NVRAM大容量存储152A与闪速/磁/光大容量存储152B相结合来实现。在具有较大容量存储要求的其它电子平台(例如大规模服务器)中,大容量存储可使用磁存储(例如硬盘驱动器)或者磁存储、光存储、全息存储、大容量闪速存储器和NVRAM大容量存储152A的任何组合来实现。在这种情况下,负责存储的系统硬件和/或软件可实现各种智能永久存储分配技术,以按照有效或者有用的方式在FM 151B/NVRAM存储152A与闪速/磁/光大容量存储152B之间分配永久程序代码和数据块。
例如,在一个实施例中,大功率服务器配置有近存储器(例如DRAM)、PCMS装置和用于大量永久存储的磁大容量存储装置。在一个实施例中,笔记本计算机配置有近存储器和PCMS装置,其执行远存储器和大容量存储装置的作用(即,其在逻辑上分区以执行如图3所示的这些作用)。家用或办公台式计算机的一个实施例与笔记本计算机相似地配置,但是还可包括一个或多个磁存储装置,以提供大量永久存储能力。
平板计算机或蜂窝电话装置的一个实施例配置有PCMS存储器,但是潜在地没有近存储器并且没有附加大容量存储(为了成本/电力节省)。但是,平板/电话可配置有可拆卸大容量装置,例如闪存或PCMS存储棒。
各种其它类型的装置可如上所述来配置。例如,便携媒体播放器和/或个人数字助理(PDA)可按照与上述平板/电话相似的方式来配置,游戏控制台可按照与台式计算机或膝上型计算机相似的方式来配置。可相似地配置的其它装置包括数码相机、路由器、机顶盒、数字录像机、电视机和汽车。
MSC架构的实施例
在本发明的一个实施例中,系统存储器中的DRAM的主体采用PCM来替代。如先前所述,PCM以相对于DRAM明显要低的成本提供存储器容量的显著改进,并且是非易失性的。但是,某些PCM特性、例如不对称读-写性能、写循环耐久性极限以及其非易失性性质使它对于在没有引起主要软件改变的情况下直接替代DRAM是棘手的。以下所述的本发明的实施例经过软件增强来提供集成PCM、同时还实现更新用途的软件透明方式。这些实施例促进存储器子系统架构的成功转变,并且提供使用单个PCM池来合并存储器和存储的方式,因而减轻对平台中的独立非易失性存储层的需要。
图5A所示的具体实施例包括:一个或多个处理器核501,每个具有内部存储器管理单元(MMU)502,用于生成存储器请求;以及一个或多个内部CPU高速缓存503,用于按照所指定高速缓存管理策略来存储程序代码和数据线。如先前所述,高速缓存管理策略可包括排他的高速缓存管理策略(其中存在于分级结构的一个特定高速缓存级中的任何线在任何其它高速缓存级中不存在)或者包含的高速缓存管理策略(其中复制高速缓存线存储在高速缓存分级结构的不同级)。可用于管理内部高速缓存503的特定高速缓存管理策略是本领域的技术人员完全了解的,并且因此在这里将不作详细描述。本发明的基本原理并不局限于任何特定高速缓存管理策略。
又在图5A中所示的是归属代理505,其通过生成存储器请求的存储器通道地址(MCA)来提供对MSC 510的存取。归属代理505负责管理所指定存储器地址空间,并且解析定向到那个存储器空间的存储器存取冲突。因此,如果任何核需要存取给定地址空间,则它将向那个归属代码505发送请求,归属代理505则将向那个特定MMU 502发送请求。在一个实施例中,每个MMU 502分配一个归属代理505;但是,在一些实施例中,单个归属代理505可服务于一个以上存储器管理单元502。
如图5A所示,MSC 510配置在基于PCM的远存储器519前面。MSC 510管理对近存储器518的存取,并且在适当时(例如在无法从近存储器518来服务请求时)向远存储控制器521转发存储器存取请求(例如读和写)。MSC 510包括高速缓存控制单元512,其响应标签高速缓存511而进行操作,标签高速缓存511存储识别近存储器518中包含的高速缓存线的标签。在操作中,当高速缓存控制单元512确定存储器存取请求能够从近存储器518来服务(例如响应高速缓存命中)时,它生成近存储器地址(NMA),以识别近存储器518中存储的数据。近存储器控制单元515解释NMA,并且响应地生成电信号以存取近存储器518。如先前所述,在一个实施例中,近存储器是动态随机存取存储器(DRAM)。在这种情况下,电信号可包括行地址选通(RAS)和列地址选通(CAS)信号。但是应当注意,本发明的基本原理并不局限于DRAM用于近存储器。
确保软件透明存储器应用的另一个组件是优化PCM远存储控制器521,其管理PCM远存储器530特性,同时仍然提供所需的性能。在一个实施例中,PCM控制器521包括地址间接寻址表520,其将高速缓存控制单元515所生成的MCA转换成用来对PCM远存储器530直接寻址的PDA。这些转换可在通常为5 KB的“块”粒度发生。要求转换是因为在一个实施例中,远存储控制器521在整个PCM装置地址空间连续移动PCM块,以便确保没有因对任何特定块的高频率写入引起的耗损热点。如先前所述,这种技术在本文中有时称作“耗损均匀化”。
因此,MSC 510由高速缓存控制单元512来管理,高速缓存控制单元512允许MSC510吸收、聚合和过滤对PCM远存储器530的事务(例如读和写)。高速缓存控制单元512管理近存储器518与PCM远存储器530之间的所有数据移动和一致性要求。另外,在一个实施例中,MSC高速缓存控制器512与(一个或多个)CPU进行接口,并且提供传统基于DRAM的存储器子系统中使用的标准同步加载/存储接口。
现在将在图5A所示架构的上下文中描述示范读和写操作。在一个实施例中,读操作将首先到达MSC控制器512,其将执行查找,以确定所请求数据是否存在(例如利用标签高速缓存511)。如果存在的话,则它将数据返回到请求CPU、核501或I/O装置(未示出)。如果数据不存在的话,则MSC控制器512将向PCM远存储控制器521发送该请求连同系统存储器地址(本文中又称作存储器通道地址或MCA)。PCM控制器521将使用地址间接寻址表520来将地址转换成PDA,并且将读操作定向到PCM的这个区域。在接收来自PCM远存储器530的所请求数据时,PCM控制器521将所请求数据返回到MSC控制器512,其将数据存储在MSC近存储器518中,并且还将数据发送给请求CPU核501或I/O装置。对这个数据的后续请求可直接从MSC近存储器518来服务,直到它由另外某些PCM数据来替代。
在一个实施例中,存储器写操作还首先转到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,大小可设置成工作负荷存储器占用区(footprint)的大小或者PCM远存储器530大小的1/10。与当前处理器/系统架构中存在的常规高速缓存相比,这种MSC非常大。作为举例而不是限制,对于128 GB的PCM远存储器大小,MSC近存储器的大小能够大至16 GB。
图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标签的成本能够是对构建大高速缓存的明显阻碍。因此,在本发明的一个实施例中,这个问题使用新方案来解决,新方案将高速缓存标签存储于MSC中分配的存储中供ECC保护,由此基本上消除标签的存储成本。
这个实施例在图5C中一般示出,图5示出集成标签高速缓存和ECC单元554,其用于存储/管理高速缓存标签、存储ECC数据并且执行ECC操作。如所示,当执行标签校验操作(例如以确定特定的数据块是否存储在近存储器高速缓存518中)时,所存储标签根据请求而提供给标签校验/命令调度器550。
图5D示出一组示范数据524的组织以及对应ECC 523和标签522。如所示,标签522与ECC 523并存于标签高速缓存/ECC单元544的存储器(例如在一个实施例中的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)的标签。由于许多写入定向到最近存取的地址,所以适当的小标签高速缓存能够获得有效命中率,以在写入之前过滤大多数读取。
与包括PCM远存储控制器521和一组PCM远存储器模块530a-i的PCM DIMM 519的一个实施例关联的附加细节在图5E中示出。在一个实施例中,单个PCM远存储器池530a-i在系统存储器与存储用途之间共享。在这个实施例中,整个PCM池530a-i可细分为4 KB大小的“块”。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可使用一个或多个计数器和寄存器来跟踪循环计数(例如,每次检测到循环时可使计数器递增一,并且结果可存储在寄存器集合中)。
在一个实施例中,地址间接寻址逻辑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架构定义成使得若干不同系统分区方式是可能的。这些方式分成两大类:
(1)分离架构:在这个方案中,MSC控制器512位于CPU中,并且截取所有系统存储器请求。存在来自退出CPU的MSC的两个单独接口以连接到近存储器(例如DRAM)和远存储器(例如PCM)。各接口设计用于特定类型的存储器,并且各存储器能够在性能和容量方面独立缩放。
(2)统一架构:在这个方案中,单个存储器接口退出CPU,并且将所有存储器请求发送给这个接口。MSC控制器512连同近存储器(例如DRAM)和远存储器(例如PCM)子系统在CPU外部合并在这个单接口上。在一个实施例中,这个存储器接口设计成满足CPU的存储器性能要求,并且支持事务无序协议。近和远存储器要求在这些接口的每个上按照“统一”方式来满足。
在上述存储桶(bucket)的范围之内,若干不同划分选项是可行的,下面描述其中一部分。
(1)分离示例:
近存储器:DDR5 DIMM
近存储器接口:一个或多个DDR5通道
远存储器: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,其将执行查找,以确定所请求数据是否存在于PCM远存储器518中(例如利用标签高速缓存511)。如果存在的话,则它将数据返回到请求CPU核、501或I/O装置(图5A中未示出)。如果数据不存在的话,则MSC高速缓存控制器512将向PCM远存储控制器521发送请求连同系统存储器地址。PCM远存储控制器521将系统存储器地址转换成PCM物理装置地址(PDA),并且将读操作定向到远存储器530的这个区域。如先前所述,这种转换可利用地址间接寻址表(AIT)563,PCM控制器521使用其在系统存储器地址与PCM PDA之间进行转换。在一个实施例中,作为实现成分配存储器存取操作并且由此降低对PCM FM 530的耗损的耗损均匀化算法的一部分,来更新AIT。
在接收来自PCM FM 530的所请求数据时,PCM FM控制器521将所请求数据返回到MSC控制器512,其将数据存储在MSC近存储器518中,并且还将数据发送给请求处理器核501或I/O装置(图5A中未示出)。对这个数据的后续请求可直接从MSC近存储器518来服务,直到它由另外某个PCM FM数据来替代。
在一个实施例中,存储器写操作也首先转到MSC控制器512,其将它写入充当FM高速缓存的MSC近存储器518中。在这个实施例中,当接收写操作时,数据不可直接发送给PCMFM 530。例如,仅当其中存储数据、充当FM高速缓存的MSC近存储器518中的位置必须再用于存储不同系统存储器地址的数据时,数据才可发送给PCM FM 530。当这种情况发生时,MSC控制器512注意到数据在PCM FM 530中不是最近的,以及因此将从充当FM高速缓存的近存储器518中对它进行检索,并且将它发送给PCM FM控制器521。PCM控制器521查找系统存储器地址的PDA,并且然后将数据写到PCM FM 530。
(2)近存储器旁路模式:在这种模式中,所有读和写绕过充当FM高速缓存的NM518,并且直接转到PCM远存储器530。例如当应用不是高速缓存友好的或者要求数据以高速缓存线的粒度提交为持久化时,可使用这种模式。在一个实施例中,由处理器高速缓存503和充当FM高速缓存的NM 518所执行的缓存相互独立地进行操作。因此,数据可缓存在充当FM高速缓存的NM 518,其没有缓存在处理器高速缓存503中(并且其在一些情况下可能不准许被缓存在处理器高速缓存503中),反过来也是一样。因此,可指定为在处理器高速缓存503中“不可缓存的”某些数据可缓存在充当FM高速缓存的NM 518中。
(3)近存储器读高速缓存写旁路模式:这是上述模式的变化,其中允许来自PCM519的永久数据的读缓存(即,永久数据缓存在用于只读操作的MSC 510中)。当永久数据的大多数是“只读”并且应用使用是高速缓存友好的时,这是有用的。
(5)近存储器读高速缓存直写模式:这是前一种模式的变化,其中除了读缓存之外还缓存写命中。对MSC近存储器518的每一个写入引起对PCM远存储器530的写入。因此,由于高速缓存的直写性质,高速缓存线持久化仍然得到保证。
(5)近存储器直接存取模式:在这种模式中,近存储器的全部或部分是软件直接可见的,并且形成系统存储器地址空间的部分。这种存储器可完全在软件控制之下。从PCM存储器519到近存储器的这个区域的任何数据移动要求显式软件副本。这种方案可创建软件的非均匀存储器地址(NUMA)存储器域,其中它相对于PCM远存储器530从近存储器518获得高许多的性能。这种使用可用于某些高性能计算(HPC)和图形应用(其要求对某些数据结构的极快速存取。这种近存储器直接存取模式相当于“牵制”近存储器中的某些高速缓存线。这种牵制可在较大的多路组关联高速缓存中有效地进行。
下表A概括上述操作模式的每个。
表A
用来实现上述操作模式的处理器和芯片组组件包括以下方面:
(1)存储器侧高速缓存控制器512,其管理两层存储器(2LM)分级结构中的近存储器。
(2)存储器侧高速缓存510中的一组范围寄存器545(参见图5B),其确定上述操作模式的每个的系统地址范围。
(3)确认从PCM存储器子系统519到MSC控制器515的写完成的机制。
(5)使近存储器518中的线失效的机制。
(5)将脏线逐出到PCM并且使近存储器地址空间的所指定区域失效的刷新引擎。
在一个实施例中,使用模式的每个的存储器范围在系统地址空间中是毗连的。但是,多个分离区域可使用同一模式。在一个实施例中,MSC RR 545集合中的各模式范围寄存器提供下列信息:
(1)操作模式(例如回写、近存储器旁路模式等);
(2)系统地址空间中的范围基址(range base)(例如以2 MB粒度或更大);以及
(3)识别区域的大小的范围掩码字段。
在一个实施例中,所支持模式的数量是实现特定的,但是假定只有一个毗连系统地址范围可用于各操作模式。如果指定近存储器直接存取范围寄存器,则假定这将映射到毗连区域,开始于近存储器地址空间的底部。这种毗连区域必须小于近存储器的大小。另外,如果使用缓存模式的任一个,则直接存取区域大小必须小于近存储器大小,以允许所需性能的充分高速缓存大小。各种模式的近存储器的这种分配可由用户来配置。
总之,本发明的一个实施例按照下列操作集合来实现:
(1)当任何读或写存取到达存储器侧高速缓存控制器512时,它检查范围寄存器545(图5B),以确定当前操作模式。
(2)对于任何读高速缓存/写旁路存取,MSC控制器512检查当前是否缓存了地址。如果是的话,则它必须在向源回送写完成之前使该线失效。
(3)对于任何写旁路直接PCM操作,MSC控制器512等待从PCM控制器521返回的完成,以确保将写入提交到全局可见缓冲器。
(4)对近存储器中的直接存取模式空间的任何读或写定向到近存储器的适当区域。没有事务发送给PCM存储器。
(5)范围寄存器配置中增加或减小任何现有区域或者添加新区域的任何变化将要求将适当缓存区域刷新到PCM。例如,如果软件想要通过减小回写高速缓存区域来增加直接存取模式区域的大小,则它可通过首先逐出近存储器区域的适当部分并且使其失效,然后改变近存储器直接存取模式范围寄存器,来进行这种操作。MSC控制器510则将知道对较小近存储器地址空间进行将来的缓存。
图6A中示出本发明的一个具体实施例,其中系统物理地址(SPA)空间在多个MSC之间划分。在所示实施例中,MSC高速缓存654和控制器656与SPA区域667a关联、MSC高速缓存655和控制器657与SPA区域667b关联;MSC高速缓存661和控制器663与SPA区域667c关联;以及MSC高速缓存660和控制器662与SPA区域667d关联。示出两个CPU、即670和671,各分别具有四个核650和651以及归属代理652和653。两个CPU 670和671分别经由存储器接口659和665耦合到公共远存储控制器666。
因此,图6A中,整个SPA存储器空间细分为区域,其中各区域与特定MSC和控制器关联。在这个实施例中,给定MSC可具有非毗连SPA空间分配,但是没有两个MSC将具有重叠SPA空间。此外,MSC与非重叠SPA空间关联,并且不要求MSC间相干性技术。
可在图6A所示的架构上采用上述近存储器模式的任一种。例如,每个MSC控制器656-657、662-663可配置成工作在回写缓存模式、近存储器旁路模式、近存储器读高速缓存写旁路模式、近存储器读高速缓存直写模式或者近存储器直接存取模式。如先前所述,特定模式在范围寄存器(RR)655中为每个MSC 610来指定。
在一个实施例中,不同MSC可同时地实现不同操作模式。例如,MSC控制器656的范围寄存器可指定近存储器直接存取模式,MSC控制器657的范围寄存器可指定回写高速缓存模式,MSC控制器662的范围寄存器可指定读高速缓存/写旁路模式,以及MSC控制器663可指定读高速缓存/直写模式。另外,在一些实施例中,单独MSC可同时地实现不同操作模式。例如,MSC控制器656可配置成对某些系统地址范围实现近存储器直接存取模式,以及对其它系统地址范围实现近存储器旁路模式。
上述组合当然只是说明可对MSC控制器单独编程的方式。本发明的基本原理并不局限于这些或任何其它组合。
如针对上述实施例的一部分(例如针对图4G所述)所述,MSC及其MSC控制器配置成在与负责那个特定SPA范围的PCM DIMM相同的存储器通道(例如相同的物理DDR总线)上进行操作。因此,在这个实施例中,在所指派SPA范围之内发生的存储器事务定位在同一存储器通道中,由此降低经过CPU网格互连的数据业务。
图6B提供按照本发明的实施例、可如何配置系统存储器地址映射620、近存储器地址映射621和PCM地址映射622的图形表示。如先前所述,MSC控制器606工作在由范围寄存器(RR)605所识别的模式。系统存储器映射620具有为近存储器直接存取模式所分配的第一区域602、为近存储器旁路模式所分配的第二区域603以及为回写高速缓存模式所分配的第三区域605。MSC控制器606如近存储器地址映射621所示来提供对近存储器的存取,近存储器地址映射621包括对回写高速缓存模式所分配的第一区域608以及对近存储器直接存取模式所分配的第二区域609。如所示,近存储器高速缓存旁路操作直接提供给按照PCM地址映射622进行操作的PCM控制器610,PCM地址映射622包括近存储器旁路区域611(对于近存储器旁路模式)和回写高速缓存区域612(对于回写高速缓存模式)。因此,系统存储器映射620、近存储器地址映射621和PCM地址映射622可基于由MSC控制器所实现的特定模式来细分。
图6C和图6D示出本发明的一个实施例中采用的寻址技术(其中一部分可能已经一般地进行了描述)。具体来说,图6C示出系统物理地址(SPA)675如何映射到近存储器(NMA)或PCM装置地址(PDA)。具体来说,SPA首先由处理器中的解码逻辑676来解码,以识别归属代理605(例如负责解码地址空间的归属代理)。与所选归属代理605关联的解码逻辑677还对SPA 675(或者其部分)进行解码,以生成识别对那个特定SPA空间所分配的适当MSC高速缓存控制器612的存储器通道地址(MCA)。所选高速缓存控制器612则或者在678将存储器存取请求映射到近存储器地址、之后是可选的接着在680的交织操作(下面描述),或者备选地在679执行可选交织操作、之后接着由PCM远存储控制器映射681到PCM装置地址PDA(例如使用如上所述的地址间接寻址和耗损管理)。
可选交织过程的一个实施例在图6D中示出,图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。在一个实施例中,该页是5千字节页,尽管本发明的基本原理不限于任何页的大小。按照地址间接寻址表(AIT)进行操作的PCM控制器687-688和耗损管理逻辑然后重新排列PCM装置地址(PDA)存储器空间中的高速缓存线(如上所述)。这种性质的交织可用来将工作负荷分配于MSC 610和/或PCM装置619(例如,作为对非均匀存储器地址(NUMA)的替代)。
用于多级存储器分级结构中的MSC的动态部分断电的系统和方法的实施例
计算机系统的存储器子系统消耗大量总系统功率,特别是在具有大存储器容量的服务器中。在多级存储器子系统(例如具有如本文所述的MSC的2级子系统)中,因为MSC确定大小为适应所有工作负荷(其可运行于服务器)的最大工作负荷,所以许多功率集中于易失性(例如基于DRAM的)MSC,其面临大的快速NVM存储、例如PCM(或者更具体来说是PCMS)。由于被运行的工作负荷和缓存要求甚至对于一天的过程可显著改变,所以保持这类大高速缓存被供电将对负荷线具有大影响。
以下所述实施例的一部分假定具有包括刷新引擎的MSC的两级存储器分级结构,其中刷新引擎:(1) 逐出脏高速缓存线,并且按照所指定方式使其失效(但是本发明的基本原理可用于任何多级存储器分级结构的上下文中);(2) 动态监测高速缓存使用;(3) 允许软件指定电源管理策略;以及(4) 停用基于易失性存储器的MSC的所指定部分。
多级存储器分级结构中的MSC可以是组关联回写高速缓存。虽然这种高速缓存中的路数可改变,但是本文中将描述两个具体实施例:
(1)具有8-16范围中的路数的多路组关联高速缓存;以及
(2)1路组关联高速缓存,又称作直接映射高速缓存。
2. 刷新引擎701
如图7A所示,多级存储器子系统中的刷新引擎701的一个实施例驻留在MSC控制器512中,并且具有若干不同的用途,其中之一是动态高速缓存电源管理,如本文所述。在这个实施例中,软件750可激活刷新引擎701,以实施特定电源管理策略。这些策略可包括(但是并不限于)以下方面:
(1)软件750识别高速缓存740中将要停用或重新激活的特定部分。在一个实施例中,该部分识别为特定路数。作为替代或补充,这可指定为高速缓存的特定百分率(fraction)(例如50%)。
(2)软件750指定刷新引擎701能够监测并且动态判定要停用或重新激活的高速缓存量的使用量度、例如平均未命中率或占用率。例如,如果特定区域的平均未命中率上升到高于所指定阈值,则可被停用这个区域。
虽然以下论述集中于高速缓存的部分的停用,但是本领域的技术人员将会理解,动态重新激活可使用相同基本技术来执行。
在一个实施例中,一旦由软件750对刷新引擎701设置策略,则刷新引擎通过首先判定高速缓存中将要停用的特定区域(例如使用如上所述的未命中率或者刷新软件所识别的区域),来实现该策略。然后,刷新引擎701依次读取这个区域(或者多个区域),扫描各高速缓存线,根据需要将脏高速缓存线逐出到PCM存储器,并且在各高速缓存线被服务时使其失效。在一个实施例中,刷新引擎保持刷新地址计数器702,其保持当前被停用的MSC的区域的“组地址(Set-Address)”。如以下所述,在一个实施例中,组地址从软件所生成以存取存储器的系统地址来得出。
3. 高速缓存使用监测
在一个实施例中,MSC将具有计数器730,以动态监测高速缓存的使用。例如,这种监测可通过保持某些关键量度的移动平均进行,其部分示例包括高速缓存占用率和移动平均未命中率:
(1)高速缓存占用率:高速缓存分为多个区域。在多路关联高速缓存中,例如,区域可定义为路。每次在区域中分配新线时,区域占用率计数器递增。在区域中置换线或者使其失效时,区域占用率计数器递增。
(2)移动平均未命中率:对于所指定时间间隔,区域的平均未命中率由刷新引擎701来计算。在这个实施例中,软件750可提供刷新引擎701用来实现各高速缓存区域的停用的未命中率的阈值。
4. 高速缓存停用机制
各种实现特定方案对执行高速缓存停用是可能的。这里的主要思路是使高速缓存的所指定区域进入可能的最低功率状态,同时仍然允许适当的快速重新激活。通常,这暗示电力没有切断,而是在一个实施例中,可禁用(或减慢)时钟,并且可停用高速缓存区域的自行刷新。注意,在这类情况下,重新激活可花费一些时间,并且可在高速缓存的其它部分仍然为活动的同时在后台进行。
停用区域的粒度将取决于特定实现,以及如果DRAM用于MSC,则为DRAM架构。本领域的技术人员将会理解,若干方案是可能的,包括将区域粒度限制到独立的“列(rank)”。存储器模块上的每个单“列”形成与其它列的存储器组件的相同布置。常用的存储器模块具有存储器的单列、存储器的双列或者存储器的四列(但是本发明的基本原理并不局限于任何特定列数)。
现在将描述本发明的一个具体实施例的操作细节。但是应当注意,本发明的基本原理并不局限于操作参数的这个特定集合。例如,本发明的基本原理并不局限于任何特定地址或数据格式。
在一个实施例中,高速缓存停用的策略由软件750向刷新引擎701指定。在这里描述直接映射高速缓存的特定情况,因为它是更复杂的情况。本领域的技术人员可易于使用这个描述来得出多路关联高速缓存实现的配置。
(A)首先,如图7A所示,识别(例如由软件750)将要停用的高速缓存区域740。如果指定高速缓存的一半,则组地址将下降一位。作为举例而不是限制,在线大小为64 B并且系统地址空间为1 TB或40 b的1 GB直接映射高速缓存的示例中,组地址为24 b宽,并且标签(对于64 B线)将为10 b宽。如果停用一半高速缓存并且它下降到512 MB,则组地址这时将为23 b,并且标签大小将增加到11 b。
(B)其次,指定停用的未命中阈值、平均间隔和区域粒度。作为举例而不是限制,未命中阈值对100 ms的平均间隔可能为0.01,以及停用的区域粒度可能是高速缓存的1/4。再次基于区域大小,组地址和标签将适当地发生变化。一旦设置策略并且启用刷新引擎701,则等待适当触发以开始其工作。
图7A示出其中对停用识别高速缓存的上1/2的一个具体实现。按照这个实现,刷新引擎701可执行下列操作:
(1)选择直接映射MSC 510的上半部740进行刷新。
(2)将刷新地址计数器702(组地址)设置到高速缓存的顶部,并且开始接连逐出每个线并且使其失效。当它经过每个线前进时,刷新地址计数器702将递减。图7A提供一个具体示例,其中对识别为刷新区域710的区域成功执行停用,并且示出其中仍然需要执行停用的刷新挂起区域711(也在MSC的上半部中)。
(3)在一个实施例中,为了确保高于刷新地址计数器的任何高速缓存区域710保持未使用,遵循下列规则:
a. 高于刷新地址计数器702的任何CPU读地址将自动地仅使用简化组地址(在本例中,这是23 b组地址)查找高速缓存的下半部。这在图7A中通过红线示出。
b. 标签检查单元550中存储的标签将具有适应最小高速缓存的最大可能性。在图7A所示的具体示例中,读地址操作将检查11 b标签,以确保正确匹配。
c. 如果存在响应操作的高速缓存未命中,则分配将仅在MSC 741的下半部中发生。
d. 如果读操作低于刷新计数器地址702但是高于高速缓存的下半部(即,在刷新挂起区域711中),则在一个实施例中,它将使用12 b组地址来执行正常查找,并且使用10 b标签来执行正常匹配。
e. 如果存在命中,则它将简单地使用数据。如果存在未命中,则存在两种选择:(i) 如常进行分配(如图7A中通过#1圆圈所标识的圆形虚线所示),但是预计刷新最终免除这个线,或者(ii) 检查高速缓存的下半部的线,以及如果它在其中未命中,则仅在下半部中进行分配(如图7A中通过#2圆圈所标识的虚线所示)。
f.在一个实施例中,高速缓存线写入将遵循与以上(a)-(e)所述相同的规则。
(4)一旦刷新引擎701达到所选区域的结束(在这种情况下为上半部740的底部),则这里使这整个区域失效并且可将其关断。
(5)高速缓存区域停用机制突跳(kick)并且关断MSC 510的这个部分740。
(6)高速缓存组地址这时将为23 b,并且仅将指向MSC 510的下半部741。
如上述方案中显而易见,MSC的一部分的停用对应用透明地执行,而对高速缓存使用没有显著影响。
用于多级存储器分级结构中的MSC的动态部分断电的方法的一个实施例在图7B中示出。图7B所示的操作可采用上述软件750、刷新引擎701和MSC控制器512的上下文来实现,但是该方法不一定局限于任何特定架构。
在760,发起高速缓存使用监测。基于该监测,在760,识别用于停用的高速缓存的一部分。例如,如上所述,区域占用率计数器每次在区域中分配新高速缓存线时递增,而在区域中置换高速缓存线或者使其失效时递减。占用率计数器的值然后可用来确定是否停用该区域(即,其中在较高占用率区域之前使较低占用率区域失效)。备选地,可对所指定时间间隔来计算高速缓存区域的平均未命中率。在这个实施例中,可提供阈值未命中率,以实现各高速缓存区域的停用。
在762,刷新地址计数器设置到高速缓存的所识别部分。在763,逐出各高速缓存线并且使其失效,以及计数器在各失效之后递减。在764,发起读或写操作,以及在765,确定操作是定向到刷新区域(F)、刷新挂起区域(FP)还是未失效的高速缓存的部分(NI)。如果操作定向到刷新区域,则在768,将它重定向到未被停用的高速缓存的部分。具体来说,在一个实施例中,高速缓存线使用简化组地址(例如,如上所述)来分配。
如果操作定向到刷新挂起区域(FP),则可正常分配高速缓存线,其中预计最终将刷新该线。备选地,高速缓存线可使用简化组地址(例如,如上所述)来分配。
如果操作定向到未失效的高速缓存的部分,则在766,读/写操作采用简化组地址如常执行。
如上所述的本发明的实施例可在服务器和其它类型的计算机系统中用来显著降低功率消耗。除了操控如上所述的直接映射高速缓存之外,本发明的实施例还实现基于使用量度、例如占用率和未命中率来动态调整高速缓存大小的方式。
使用多级存储器分级结构的省电存储器系统和方法
通常使用非常昂贵的不间断电源(“UPS”)系统来保护数据中心服务器免于电源故障。这类系统通常用来使服务器保持被供电足够长时间,以将所有存储器内容和易失性系统状态保存到永久介质。由于永久介质通常为硬盘(其可以在网络上),所以在执行存储器转储时消耗大量时间和功率。
在以下所述的本发明的实施例中,PCM或其它非易失性存储器用来解决这些问题,由此缓解对UPS系统的需要。当然,高端数据中心为了可用性而仍然可使用UPS系统(而不是为了确保存储器状态转储)。
如图8A所示,本发明的实施例采用将PCM 530(例如PCMS)用作远存储器和易失性MSC近存储器510(例如DRAM)的多级存储器分级结构。其它组件包括下列一个或多个:
(1)刷新引擎701,其能够用来将脏线从MSC回写到PCM。刷新引擎701还保持用于由CPU进行的后续读和写存取的刷新地址计数器702。
(2)早期电源故障检测单元830,其将触发刷新引擎701起作用。
(3)备用电源单元820,用于在刷新正发生时保持电力。由于刷新没有花费长时间,所以这个备用电源单元820无需使用非常昂贵的UPS系统。反而,某个机架或服务器级电池备用模块就是充分的。
(4)MSC 510在高速缓存线被刷新之后切换到直写操作模式的能力(在MSC控制器512的控制下)。
(5)使软件850识别MSC 510中将要丢弃的页(例如通过如以下所述来标记页)的机制。这类页无需刷新到PCMS。这些页的标记必须按照使得H/W将在刷新高速缓存时有权访问这个信息的方式进行。
(6)PCMS地址间接寻址表(AIT)563,其中软件能够标记将要丢弃的页(例如标以零)。
(7)当刷新完成时通知软件850的方法。
在一个实施例中,将MSC 510刷新到PCM 530所需的最大时间将取决于PCM子系统的高速缓存大小和性能。在一个实施例中,电源故障检测系统830按实际工作负荷使用设计,其能够用来预测将在MSC 510中积聚的脏线的平均数量。对于大多数服务器工作负荷,这将跟踪读/写比率,并且通常将是MSC大小的大约1/3。
另外,软件850能够命令刷新引擎701使来自MSC 510的“零”或“丢弃”页失效。当这些页以后从PCM 530来读取时,PCM控制器521在将页返回给MSC 510之前使其归零。在一个实施例中,PCM控制器521使用AIT 563,其保持指示每个页的状态的页级元数据。在一个实施例中,对每一个读或写操作来访问这个信息。页 (及关联高速缓存线)的状态可由软件850来设置。
在一个实施例中,当电源故障检测器单元830检测电源故障状态并且对刷新引擎701生成告警时,下列序列发生:
(1)触发刷新引擎701,以开始依次遍历MSC 510的脏线。
(2)这些脏线由PCM控制器521刷新到PCM 530,以及各刷新线设置成“清洁”状态。当每个线被处理(例如,如上所述)时,更新刷新地址计数器702。
(3)仍然允许后续读取在高速缓存的刷新区域中命中。
(4)但是,对高速缓存的刷新区域的任何写入将引起直写或写旁路操作。如果数据当前不在MSC 510中,则写旁路操作将发生。如果数据处于MSC 510中,则它被更新。
(5)当已经刷新整个MSC 510时,刷新引擎701将向PCM控制器521发送显式刷新命令。PCM控制器521在成功地将所有先前写入推送到PCM 530时确认这个命令。
6) 在这点上,刷新引擎701能够通知软件850刷新事件的成功完成(例如生成“刷新完成”命令)。
(7)软件850这时可开始系统的有序关机或者设置在电力终止时重新开始的检查点状态。
(8)在电力恢复时,软件850能够从PCM存储器530中的检查点进行恢复。不要求系统重新引导。
用于响应具有MSC和PCM存储器的多级存储器系统中的电源故障事件的省电方法的一个实施例在图8B中示出。图8B所示的操作可采用图8A所示的架构的上下文来实现,但是该方法不一定局限于任何特定架构。
在801,检测电源故障告警。例如,电源故障检测电路可检测输入电力的电压下降到低于所指定阈值。在802,刷新引擎被触发,并且开始依次遍历MSC的脏线(例如使用如上所述的刷新地址计数器702)。
在803,准许任何读操作命中MSC的刷新区域,以及在804,定向到刷新区域的任何写入生成直写或写旁路操作(例如绕过MSC)。一旦在805所确定已经刷新整个MSC,则向PCM控制器发送显式刷新命令。在这个阶段,通知命令也可发送给系统软件(即,通知系统关于刷新条件)。
上述技术可用来显著降低数据中心中的TCO,因为将不再需要昂贵的UPS系统。
用于采用多级存储器分级结构的快速休眠的系统和方法
服务器中进入休眠或者从休眠返回的速度受到对诸如硬盘驱动器或SSD之类的存储装置保存和检索存储器状态限制。较快的基于存储器的休眠不能实现相同的电力节省,因为DRAM存储器是易失性的,以及必须通过电池来备用并且在休眠期间进入自行刷新。
通过诸如本文所述之类的多级分级存储器子系统,能够实现极快的基于存储器的休眠,因为PCM存储器是非易失性的,并且基于DRAM的高速缓存无需经过电池备用。通过这种方式,服务器能够更为频繁地进入休眠,因而实现数据中心中的显著电力和能量节省。
如图9A所示,以下所述的本发明的实施例利用多级存储器分级结构,其包括MSC510和PCM(例如PCMS)主存储器530,并且采用基于硬件的刷新引擎701。如先前所述,在多级架构中,基于PCM的非易失性存储器提供软件可见存储器地址空间。由于对直接软件存取隐藏PCM性能特性,采用基于大DRAM的回写MSC 510,其经过硬件管理(例如经由MSC控制器512),并且可对软件是透明的。在正常系统操作期间,任何软件存储器存取将数据从PCM检索到MSC中,其中它被保持,除非通过另一个存取逐出。在一个实施例中,由于MSC 510是回写,所以随着时间推移,多个高速缓存位置将变“脏”—即在PCM 530所存储的副本中不再反映的修改状态。
基于软件和硬件控制的各种策略,系统可进入或退出休眠的状态。系统可配置成进入休眠的特定方式是本领域的技术人员完全了解的,并且在这里不作详细描述。处于休眠时,必须保存存储器状态,但是系统的大部分将断电以节省电力。通常,在软件控制下、基于“空闲”状态中花费的时间来进入该状态。在硬件控制下、基于各种众所周知的触发条件来退出该状态。
在一个实施例中,进入休眠的策略通过进入和退出休眠状态的速度来确定。主要成本是对某个非易失性存储介质来存储或检索全部存储器状态的开销。如果存储介质为磁盘,则存储器状态必须使用直接存储器存取(DMA)来存储或检索。
在本文所述的多级存储器架构中,存储器状态的大部分已经保持在非易失性PCM存储器530中。在进入休眠时需要传递给PCM 530的唯一附加存储器状态是MSC 510中的“脏”线。这是当刷新引擎701用来扫描全部MSC的“脏”线。这些线非常快速地被检索,并且“刷新”到PCM,以采用最新数据来更新原始位置。高速缓存“清洁”线无需刷新(即,因为清洁副本已经存储在PCM中)。一个实施例的刷新引擎701由软件910(其运行系统的休眠策略)来编程。编程是最小的,因为刷新引擎701只需要被告知取所有脏线并且将其发送给PCM 530。脏线的位置的地址已经作为多层存储器分级结构的部分来保持,并且无需由软件910显式指定。
在一个实施例中,当刷新完成时,刷新引擎701将通知软件910,其能够完成关机过程的其余部分。在从休眠返回时,不需要执行从非易失性PCM的存储器状态的显式复制。用于从PCM 530取存储器位置并且将所取高速缓存线存储在MSC 510中的正常多级存储器技术将根据需要自动进行这个操作。因此,使用本文所述的多级存储器架构从休眠恢复是极快的。
对多级存储器分级结构执行某种基本初始化,以便在从休眠恢复时开始起作用。在一个实施例中,这由系统BIOS 170(例如图2所示)来管理。在一个实施例中,初始化包括建立表,其常驻SRAM或DRAM中,以实现快速地址转换。这个过程也将是非常快的,并且因此最小地贡献于恢复开销。
本文所述的休眠技术的有益效果表示对当前休眠技术的巨大改进。例如,服务器当前没有使用基于存储器的休眠,因为保持存储器加电的成本过高。而是休眠要求对诸如HDD或SSD之类的存储装置存储或检索存储器状态。这通常将涉及软件驱动程序,其将适配器编程为进行存储器与存储装置之间的DMA操作。这类操作具有极高开销,并且限制将休眠用于节省电力的适用性。软件也极大地涉及到创建存储装置的存储器镜像中。
相比之下,本文所述的本发明的实施例使用具有非易失性存储器(例如PCM)的多级存储器分级结构进行存储器常驻休眠。刷新引擎701用来加速脏线从MSC清理到PCMS,由此显著改进性能。
用于响应具有MSC和PCM存储器的多级存储器系统中的电源故障事件的省电方法的一个实施例在图8B中示出。图8B所示的操作可采用图8A所示的架构的上下文来实现,但是该方法不一定局限于任何特定架构。
在801,检测电源故障告警。例如,电源故障检测电路可检测输入电力的电压下降到低于所指定阈值。在802,刷新引擎被触发,并且开始依次遍历MSC的脏线(例如使用如上所述的刷新地址计数器702)。
在803,准许任何读操作命中MSC的刷新区域,以及在804,定向到刷新区域的任何写入生成直写或写旁路操作(例如绕过MSC)。一旦在805所确定已经刷新整个MSC,则向PCM控制器发送显式刷新命令。在这个阶段,通知命令也可发送给系统软件(即,通知系统关于刷新条件)。
本发明的实施例可包括以上所述的各种步骤。步骤可包含在机器可执行指令中,其中指令可用来使通用或专用处理器执行步骤。备选地,这些步骤可由包含用于执行步骤的硬连线逻辑的特定硬件组件来执行,或者由已编程计算机组件和定制硬件组件的任何组合来执行。
如本文所述,指令可表示诸如配置成执行某些操作或具有预定功能性的专用集成电路(ASIC)之类的硬件的特定配置或者非暂时计算机可读介质中包含的存储器中存储的软件指令。因此,附图所示的技术能够使用在一个或多个电子装置(例如端站、网络元件等)上存储和运行的代码及数据来实现。这类电子装置使用诸如非暂时计算机机器可读存储介质(例如磁盘、光盘、随机存取存储器、只读存储器、闪速存储器装置、相变存储器)和暂时计算机机器可读通信介质(例如电、光、声或其它形式的传播信号—如载波、红外信号、数字信号等)之类的计算机机器可读介质来存储和传递(内部通信和/或通过网络与其它计算装置进行通信)代码和数据。另外,这类电子装置通常包括一组一个或多个处理器,处理器耦合到诸如一个或多个存储装置(非暂时机器可读存储介质)、用户输入/输出装置(例如键盘、触摸屏和/或显示器)和网络连接之类的一个或多个其它组件。该组处理器和其它组件的耦合通常通过一个或多个总线和桥接器(又称作总线控制器)进行。存储装置以及携带网络业务的信号分别表示一个或多个机器可读存储介质和机器可读通信介质。因此,给定电子装置的存储装置通常存储代码和/或数据,供那个电子装置的该组一个或多个处理器上执行。当然,本发明的一个实施例的一个或多个部分可使用软件、固件和/或硬件的不同组合来实现。在本详细描述中,为了便于说明,提出大量具体细节,以便透彻地了解本发明。然而,本领域的技术人员十分清楚,即使没有这些具体的详细资料其中的一部分,也可以实现本发明。在某些情况下,没有详细描述众所周知的结构和功能,以免影响对本发明的主题的理解。相应地,本发明的范围和精神应当根据以下权利要求书来判定。

Claims (27)

1. 一种计算机系统,包括:
主存储器子系统,包括非易失性和非闪存系统存储器,以及用于缓存所述非易失性和非闪存系统存储器的部分的易失性存储器侧高速缓存(MSC),所述非易失性和非闪存系统存储器包括能够比闪存存储器更快读取和/或写入信息的非易失性和非闪存存储器;以及
刷新引擎电路,用于响应于与所述MSC的指定区域关联的停用条件而将所述MSC的所述指定区域刷新到所述非易失性系统存储器,所述停用条件用于将所述MSC的所述指定区域置于不可操作低功率状态中。
2.如权利要求1所述的系统,其中,响应于所述MSC的所述指定区域的高速缓存占用率的测量而选择所述停用条件。
3.如权利要求2所述的系统,其中,所述高速缓存占用率通过所述指定高速缓存区域的区域占用率计数器来跟踪,每次在所述指定区域内分配新高速缓存线时递增所述区域占用率计数器,以及每次所述新高速缓存线在所述指定高速缓存区域内被置换或失效时递减所述区域占用率计数器。
4.如权利要求1所述的系统,其中,响应于所述指定高速缓存区域中的平均未命中率的测量而选择所述停用条件。
5.如权利要求4所述的系统,其中,所述平均未命中率被计算为指定时间间隔上的移动平均。
6.如权利要求1所述的系统,其中,所述指定区域被识别为所述MSC的路数。
7.如权利要求1所述的系统,其中,所述指定区域被识别为所述MSC的指定百分率。
8.如权利要求1所述的系统,其中,所述刷新引擎包括刷新地址计数器,其保持当前被停用的所述MSC的所述指定区域的组地址。
9.如权利要求8所述的系统,其中,所述组地址从生成以访问系统存储器的系统存储器地址来得出。
10.如权利要求1所述的系统,其中,所述刷新引擎包括刷新地址计数器,其设置到将刷新的所述MSC的区域的顶部,当每个连续高速缓存线从所述MSC的所述指定区域被刷新,所述刷新地址计数器递减。
11.一种计算机实现的方法,包括:
对于主存储器子系统执行以下步骤,所述主存储器子系统包括非易失性和非闪存系统存储器以及用于缓存所述非易失性和非闪存系统存储器的部分的易失性存储器侧高速缓存(MSC),所述非易失性和非闪存系统存储器包括能够比闪存存储器更快读取和/或写入信息的非易失性和非闪存存储器:
检测与所述MSC的指定区域关联的停用条件;以及
响应于与所述MSC的所述指定区域关联的所述停用条件而将所述MSC的所述指定区域刷新到所述非易失性系统存储器;以及
通过将所述MSC的所述指定区域置于不可操作低功率状态中来停用所述MSC的所述指定区域。
12.如权利要求11所述的方法,还包括响应于所述MSC的所述指定区域的高速缓存占用率的测量而选择所述停用条件。
13.如权利要求12所述的方法,还包括:
使用所述指定高速缓存区域的区域占用率计数器来跟踪高速缓存占用率,每次在所述指定区域内分配新高速缓存线时递增所述区域占用率计数器,以及每次所述新高速缓存线在所述指定高速缓存区域内被置换或失效时递减所述区域占用率计数器。
14.如权利要求11所述的方法,其中,响应于所述指定高速缓存区域内的平均未命中率的测量而选择所述停用条件。
15.如权利要求14所述的方法,其中,所述平均未命中率被计算为指定时间间隔上的移动平均。
16.如权利要求11所述的方法,其中,所述指定区域被识别为所述MSC的路数。
17.如权利要求11所述的方法,其中,所述指定区域被识别为所述MSC的指定百分率。
18.如权利要求11所述的方法,其中,所述刷新引擎包括刷新地址计数器,其保持当前被停用的所述MSC的所述指定区域的组地址。
19.如权利要求18所述的方法,其中,所述组地址从生成以访问系统存储器的系统存储器地址来得出。
20.如权利要求11所述的方法,其中,所述刷新引擎包括刷新地址计数器,其设置到将刷新的所述MSC的区域的顶部,当每个连续高速缓存线从所述MSC的所述指定区域被刷新,所述刷新地址计数器递减。
21.一种设备,包括:
刷新引擎电路,用于响应于与存储器侧高速缓存(MSC)的指定区域关联的停用条件而将所述MSC的所述指定区域刷新到非易失性和非闪存系统存储器,其中,所述MSC将缓存所述非易失性和非闪存系统存储器的部分,以及所述MSC以及非易失性和非闪存系统存储器是主存储器子系统的组成部分,并且非易失性和非闪存系统存储器包括能够比闪存存储器更快读取和/或写入信息的非易失性和非闪存存储器,响应于所述停用条件,所述MSC的所述指定区域置于不可操作低功率状态中。
22.如权利要求21所述的系统,其中,响应于所述MSC的所述指定区域的高速缓存占用率的测量而选择所述停用条件。
23.如权利要求22所述的系统,其中,通过所述指定高速缓存区域的区域占用率计数器来跟踪所述高速缓存占用率,每次在所述指定区域内分配新高速缓存线时递增所述区域占用率计数器,以及每次所述新高速缓存线在所述指定高速缓存区域内被置换或失效时递减所述区域占用率计数器。
24.如权利要求21所述的系统,其中,响应于所述指定高速缓存区域中的平均未命中率的测量而选择所述停用条件。
25.如权利要求24所述的系统,其中,所述平均未命中率被计算为指定时间间隔上的移动平均。
26.如权利要求21所述的系统,其中,所述指定区域被识别为所述MSC的路数。
27.如权利要求21所述的系统,其中,所述指定区域被识别为所述MSC的指定百分率。
CN201710343834.6A 2011-12-20 2011-12-20 2级存储器分级结构中的存储器侧高速缓存的动态部分断电 Active CN107368433B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710343834.6A CN107368433B (zh) 2011-12-20 2011-12-20 2级存储器分级结构中的存储器侧高速缓存的动态部分断电

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
PCT/US2011/066302 WO2013095404A1 (en) 2011-12-20 2011-12-20 Dynamic partial power down of memory-side cache in a 2-level memory hierarchy
CN201180075654.5A CN103988183B (zh) 2011-12-20 2011-12-20 2级存储器分级结构中的存储器侧高速缓存的动态部分断电
CN201710343834.6A CN107368433B (zh) 2011-12-20 2011-12-20 2级存储器分级结构中的存储器侧高速缓存的动态部分断电

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201180075654.5A Division CN103988183B (zh) 2011-12-20 2011-12-20 2级存储器分级结构中的存储器侧高速缓存的动态部分断电

Publications (2)

Publication Number Publication Date
CN107368433A true CN107368433A (zh) 2017-11-21
CN107368433B CN107368433B (zh) 2021-06-22

Family

ID=48669062

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201180075654.5A Active CN103988183B (zh) 2011-12-20 2011-12-20 2级存储器分级结构中的存储器侧高速缓存的动态部分断电
CN201710343834.6A Active CN107368433B (zh) 2011-12-20 2011-12-20 2级存储器分级结构中的存储器侧高速缓存的动态部分断电

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201180075654.5A Active CN103988183B (zh) 2011-12-20 2011-12-20 2级存储器分级结构中的存储器侧高速缓存的动态部分断电

Country Status (8)

Country Link
US (2) US10795823B2 (zh)
KR (2) KR101571991B1 (zh)
CN (2) CN103988183B (zh)
BR (1) BR112014013390A2 (zh)
DE (1) DE112011105984T5 (zh)
GB (1) GB2510760B (zh)
TW (1) TWI489276B (zh)
WO (1) WO2013095404A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110297787A (zh) * 2018-03-22 2019-10-01 龙芯中科技术有限公司 I/o设备访问内存的方法、装置及设备

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
WO2013101201A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Home agent multi-level nvm memory architecture
WO2013101209A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Thin translation for system access of non volatile semicondcutor storage as random access memory
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9003218B2 (en) * 2012-05-21 2015-04-07 International Business Machines Corporation Power shifting in multicore platforms by varying SMT levels
WO2014070200A1 (en) * 2012-11-02 2014-05-08 Hewlett-Packard Development Company, L.P. Selective error correcting code and memory access granularity switching
US9098402B2 (en) 2012-12-21 2015-08-04 Intel Corporation Techniques to configure a solid state drive to operate in a storage mode or a memory mode
US9239610B2 (en) * 2013-02-28 2016-01-19 Sandisk Technologies Inc. Systems and methods for managing data in a system for hibernation states
US9645938B2 (en) 2013-09-27 2017-05-09 Intel Corporation Cache operations for memory management
US9766823B2 (en) 2013-12-12 2017-09-19 Memory Technologies Llc Channel optimized storage modules
US9542336B2 (en) * 2013-12-18 2017-01-10 Intel Corporation Isochronous agent data pinning in a multi-level memory system
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
US9779025B2 (en) * 2014-06-02 2017-10-03 Micron Technology, Inc. Cache architecture for comparing data
US9536590B1 (en) * 2014-09-03 2017-01-03 Marvell International Ltd. System and method of memory electrical repair
US10928882B2 (en) * 2014-10-16 2021-02-23 Futurewei Technologies, Inc. Low cost, low power high performance SMP/ASMP multiple-processor system
WO2016099567A1 (en) * 2014-12-19 2016-06-23 Hewlett Packard Enterprise Development Lp Flushing data content in response to a power loss event to a processor
US9430396B2 (en) 2014-12-22 2016-08-30 Intel Corporation Updating persistent data in persistent memory-based storage
US11100083B2 (en) 2015-01-29 2021-08-24 Hewlett Packard Enterprise Development Lp Read only bufferpool
US9690716B2 (en) * 2015-02-13 2017-06-27 Intel Corporation High performance persistent memory for region-centric consistent and atomic updates
US20160259732A1 (en) * 2015-03-04 2016-09-08 Cavium, Inc. Managing reuse information for memory pages
US9720773B2 (en) * 2015-03-04 2017-08-01 Cavium, Inc. Managing reuse information in caches
US10013360B2 (en) 2015-03-04 2018-07-03 Cavium, Inc. Managing reuse information with multiple translation stages
CN110209346B (zh) * 2015-03-06 2021-02-12 华为技术有限公司 数据写入控制装置及方法
US9866647B2 (en) * 2015-03-26 2018-01-09 Alcatel Lucent Hierarchical cost based caching for online media
US10152413B2 (en) 2015-06-08 2018-12-11 Samsung Electronics Co. Ltd. Nonvolatile memory module and operation method thereof
US10423330B2 (en) * 2015-07-29 2019-09-24 International Business Machines Corporation Data collection in a multi-threaded processor
US9959075B2 (en) 2015-08-05 2018-05-01 Qualcomm Incorporated System and method for flush power aware low power mode control in a portable computing device
US20170068304A1 (en) * 2015-09-09 2017-03-09 Mediatek Inc. Low-power memory-access method and associated apparatus
CN106547480B (zh) * 2015-09-17 2019-04-12 慧荣科技股份有限公司 数据储存装置及其数据读取方法
US10185501B2 (en) * 2015-09-25 2019-01-22 Intel Corporation Method and apparatus for pinning memory pages in a multi-level system memory
US10241918B2 (en) * 2015-09-29 2019-03-26 International Business Machines Corporation Considering a frequency of access to groups of tracks to select groups of tracks to destage
US10095628B2 (en) 2015-09-29 2018-10-09 International Business Machines Corporation Considering a density of tracks to destage in groups of tracks to select groups of tracks to destage
US10120811B2 (en) 2015-09-29 2018-11-06 International Business Machines Corporation Considering a frequency of access to groups of tracks and density of the groups to select groups of tracks to destage
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
US10152421B2 (en) 2015-11-23 2018-12-11 Intel Corporation Instruction and logic for cache control operations
CN106775436B (zh) * 2015-11-24 2019-10-25 群联电子股份有限公司 数据存取方法、存储器控制电路单元与存储器
US10303372B2 (en) 2015-12-01 2019-05-28 Samsung Electronics Co., Ltd. Nonvolatile memory device and operation method thereof
US10073790B2 (en) 2015-12-03 2018-09-11 Samsung Electronics Co., Ltd. Electronic system with memory management mechanism and method of operation thereof
US10515016B2 (en) * 2015-12-03 2019-12-24 Hitachi, Ltd. Method and apparatus for caching in software-defined storage systems
US9934154B2 (en) 2015-12-03 2018-04-03 Samsung Electronics Co., Ltd. Electronic system with memory management mechanism and method of operation thereof
US20170177482A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Computing system having multi-level system memory capable of operating in a single level system memory mode
US9928168B2 (en) * 2016-01-11 2018-03-27 Qualcomm Incorporated Non-volatile random access system memory with DRAM program caching
US9984009B2 (en) * 2016-01-28 2018-05-29 Silicon Laboratories Inc. Dynamic containerized system memory protection for low-energy MCUs
KR20170109133A (ko) * 2016-03-17 2017-09-28 에스케이하이닉스 주식회사 하이브리드 메모리 장치 및 그의 데이터 관리 방법
KR101842764B1 (ko) * 2016-03-18 2018-03-28 연세대학교 산학협력단 하드웨어 가속기와 호스트 시스템 사이의 데이터 일관성 유지 장치 및 방법
US9798672B1 (en) * 2016-04-14 2017-10-24 Macom Connectivity Solutions, Llc Data managment for cache memory
US10282302B2 (en) 2016-06-30 2019-05-07 Hewlett Packard Enterprise Development Lp Programmable memory-side cache management for different applications
US10579560B2 (en) * 2016-08-31 2020-03-03 Futurewei Technologies, Inc. Transaction-based hybrid memory
US10318428B2 (en) 2016-09-12 2019-06-11 Microsoft Technology Licensing, Llc Power aware hash function for cache memory mapping
US20180091150A1 (en) * 2016-09-27 2018-03-29 Intel Corporation Fused voltage level shifting latch
US11216396B2 (en) * 2016-09-29 2022-01-04 Intel Corporation Persistent memory write semantics on PCIe with existing TLP definition
US10489313B2 (en) 2016-10-31 2019-11-26 Alibaba Group Holding Limited Flash storage failure rate reduction and hyperscale infrastructure robustness enhancement through the MRAM-NOR flash based cache architecture
US10956325B2 (en) * 2016-12-12 2021-03-23 Intel Corporation Instruction and logic for flushing memory ranges in a distributed shared memory system
GB2560336B (en) * 2017-03-07 2020-05-06 Imagination Tech Ltd Address generators for verifying integrated circuit hardware designs for cache memory
US10198354B2 (en) 2017-03-21 2019-02-05 Intel Corporation Apparatus, system, and method to flush modified data from a volatile memory to a persistent second memory
CN108664523B (zh) * 2017-03-31 2021-08-13 华为技术有限公司 一种虚拟磁盘文件格式转换方法和装置
US10318417B2 (en) * 2017-03-31 2019-06-11 Intel Corporation Persistent caching of memory-side cache content
US11175853B2 (en) 2017-05-09 2021-11-16 Samsung Electronics Co., Ltd. Systems and methods for write and flush support in hybrid memory
US11449431B2 (en) 2017-05-30 2022-09-20 Seagate Technology Llc Data storage device with rewritable in-place memory
US10068663B1 (en) 2017-05-30 2018-09-04 Seagate Technology Llc Data storage device with rewriteable in-place memory
US10090067B1 (en) 2017-05-30 2018-10-02 Seagate Technology Llc Data storage device with rewritable in-place memory
US10147501B1 (en) 2017-05-30 2018-12-04 Seagate Technology Llc Data storage device with rewriteable in-place memory
US10591978B2 (en) 2017-05-30 2020-03-17 Microsoft Technology Licensing, Llc Cache memory with reduced power consumption mode
US10241561B2 (en) 2017-06-13 2019-03-26 Microsoft Technology Licensing, Llc Adaptive power down of intra-chip interconnect
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
US10853299B2 (en) * 2017-09-15 2020-12-01 Dell Products L.P. Hot-plugged PCIe device configuration system
US10437499B2 (en) * 2017-12-22 2019-10-08 Nanya Technology Corporation Hybrid memory system and method of operating the same
KR20190088790A (ko) 2018-01-19 2019-07-29 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10691347B2 (en) * 2018-06-07 2020-06-23 Micron Technology, Inc. Extended line width memory-side cache systems and methods
US11556477B2 (en) * 2018-06-15 2023-01-17 Arteris, Inc. System and method for configurable cache IP with flushable address range
US10877693B2 (en) * 2018-06-29 2020-12-29 Intel Corporation Architecture for dynamic transformation of memory configuration
US10937961B2 (en) * 2018-11-06 2021-03-02 International Business Machines Corporation Structure and method to form bi-layer composite phase-change-memory cell
KR20200114481A (ko) 2019-03-28 2020-10-07 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
US10860491B2 (en) 2019-05-03 2020-12-08 Mediate Inc. Cache management method using object-oriented manner and associated microcontroller
JP6796681B2 (ja) * 2019-05-13 2020-12-09 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
KR20210016191A (ko) 2019-08-01 2021-02-15 삼성전자주식회사 스토리지 장치
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
US20200125495A1 (en) * 2019-12-19 2020-04-23 Intel Corporation Multi-level memory with improved memory side cache implementation
US11656967B2 (en) * 2020-02-13 2023-05-23 MemRay Corporation Method and apparatus for supporting persistence and computing device
US20200226066A1 (en) * 2020-03-27 2020-07-16 Intel Corporation Apparatus and method for efficient management of multi-level memory
KR20220023598A (ko) 2020-08-21 2022-03-02 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
WO2022086559A1 (en) * 2020-10-23 2022-04-28 Hewlett-Packard Development Company, L.P. Access to volatile memories
KR20220066741A (ko) 2020-11-16 2022-05-24 삼성전자주식회사 스토리지 장치 및 그 동작 방법
US20210216452A1 (en) * 2021-03-27 2021-07-15 Intel Corporation Two-level main memory hierarchy management

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060248387A1 (en) * 2005-04-15 2006-11-02 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
CN1991792A (zh) * 2005-09-30 2007-07-04 英特尔公司 用于有效使用高速缓存及存储器的指令辅助高速缓存管理
CN101030170A (zh) * 2005-12-27 2007-09-05 英特尔公司 多状态高速缓存一致性方案的设备、系统和方法
US20080109629A1 (en) * 2006-11-04 2008-05-08 Virident Systems, Inc. Asymmetric memory migration in hybrid main memory
CN101236526A (zh) * 2007-01-30 2008-08-06 扬智科技股份有限公司 连接于非易失性存储装置的高速缓存系统的计算机系统
CN101673188A (zh) * 2008-09-09 2010-03-17 上海华虹Nec电子有限公司 一种固态硬盘的数据存取方法
US20100318721A1 (en) * 2009-06-16 2010-12-16 Sandisk Corporation Program failure handling in nonvolatile memory

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6105141A (en) * 1998-06-04 2000-08-15 Apple Computer, Inc. Method and apparatus for power management of an external cache of a computer system
US5912839A (en) 1998-06-23 1999-06-15 Energy Conversion Devices, Inc. Universal memory element and method of programming same
JP4034923B2 (ja) * 1999-05-07 2008-01-16 富士通株式会社 半導体記憶装置の動作制御方法および半導体記憶装置
EP1182559B1 (en) * 2000-08-21 2009-01-21 Texas Instruments Incorporated Improved microprocessor
US6965970B2 (en) * 2001-09-27 2005-11-15 Intel Corporation List based method and apparatus for selective and rapid cache flushes
JP4056768B2 (ja) 2002-03-04 2008-03-05 富士通株式会社 マイクロコンピュータ、キャッシュメモリ制御方法及びクロック制御方法
US7100013B1 (en) 2002-08-30 2006-08-29 Nvidia Corporation Method and apparatus for partial memory power shutoff
US8392655B2 (en) * 2003-09-30 2013-03-05 Lenovo (Singapore) Pte Ltd. Apparatus for reducing accesses to levels of a storage hierarchy in a computing system
US7127560B2 (en) 2003-10-14 2006-10-24 International Business Machines Corporation Method of dynamically controlling cache size
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
US20050268022A1 (en) 2004-05-26 2005-12-01 Pelley Perry H Cache line memory and method therefor
US7590918B2 (en) 2004-09-10 2009-09-15 Ovonyx, Inc. Using a phase change memory as a high volume memory
CN1787015A (zh) 2004-12-07 2006-06-14 曾蒙汉 交通事故记录装置
US20060143397A1 (en) 2004-12-29 2006-06-29 O'bleness R F Dirty line hint array for cache flushing
US20070005922A1 (en) 2005-06-30 2007-01-04 Swaminathan Muthukumar P Fully buffered DIMM variable read latency
US7752173B1 (en) 2005-12-16 2010-07-06 Network Appliance, Inc. Method and apparatus for improving data processing system performance by reducing wasted disk writes
US7600078B1 (en) 2006-03-29 2009-10-06 Intel Corporation Speculatively performing read transactions
US7492656B2 (en) 2006-04-28 2009-02-17 Mosaid Technologies Incorporated Dynamic random access memory with fully independent partial array refresh function
US7913147B2 (en) 2006-05-08 2011-03-22 Intel Corporation Method and apparatus for scrubbing memory
US7756053B2 (en) 2006-06-30 2010-07-13 Intel Corporation Memory agent with error hardware
US7493439B2 (en) 2006-08-01 2009-02-17 International Business Machines Corporation Systems and methods for providing performance monitoring in a memory system
WO2008040028A2 (en) 2006-09-28 2008-04-03 Virident Systems, Inc. Systems, methods, and apparatus with programmable memory control for heterogeneous main memory
WO2008131058A2 (en) 2007-04-17 2008-10-30 Rambus Inc. Hybrid volatile and non-volatile memory device
US20080270811A1 (en) 2007-04-26 2008-10-30 Super Talent Electronics Inc. Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US8156299B2 (en) * 2007-10-19 2012-04-10 Virident Systems Inc. Managing memory systems containing components with asymmetric characteristics
US8285940B2 (en) 2008-02-29 2012-10-09 Cadence Design Systems, Inc. Method and apparatus for high speed cache flushing in a non-volatile memory
US20090313416A1 (en) 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
US8145932B2 (en) * 2008-06-30 2012-03-27 Dell Products L.P. Systems, methods and media for reducing power consumption in multiple controller information handling systems
US8250310B2 (en) * 2008-07-31 2012-08-21 International Business Machines Corporation Assigning data to NVRAM of shared access hybrid hard drives
US9003118B2 (en) * 2009-01-09 2015-04-07 Dell Products L.P. Systems and methods for non-volatile cache control
US8195887B2 (en) 2009-01-21 2012-06-05 Globalfoundries Inc. Processor power management and method
US9105323B2 (en) 2009-01-23 2015-08-11 Micron Technology, Inc. Memory device power managers and methods
US8195891B2 (en) * 2009-03-30 2012-06-05 Intel Corporation Techniques to perform power fail-safe caching without atomic metadata
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
US8504759B2 (en) 2009-05-26 2013-08-06 Micron Technology, Inc. Method and devices for controlling power loss
US20100306453A1 (en) 2009-06-02 2010-12-02 Edward Doller Method for operating a portion of an executable program in an executable non-volatile memory
US9123409B2 (en) 2009-06-11 2015-09-01 Micron Technology, Inc. Memory device for a hierarchical memory architecture
US8489814B2 (en) * 2009-06-23 2013-07-16 Mediatek, Inc. Cache controller, method for controlling the cache controller, and computing system comprising the same
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
KR20110048304A (ko) 2009-11-02 2011-05-11 삼성전자주식회사 솔더 리플로우에서 코드 데이터의 손실을 방지할 수 있는 방법과 그 장치들
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
KR20110103258A (ko) * 2010-03-12 2011-09-20 삼성전자주식회사 전력 소모 저감을 위한 하이브리드 메모리 장치 및 그 방법
KR20110131781A (ko) 2010-05-31 2011-12-07 삼성전자주식회사 위치정보의 정확도 확인방법 및 장치
US8838935B2 (en) 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
US8649212B2 (en) 2010-09-24 2014-02-11 Intel Corporation Method, apparatus and system to determine access information for a phase change memory
US20120096295A1 (en) * 2010-10-18 2012-04-19 Robert Krick Method and apparatus for dynamic power control of cache memory
US8612676B2 (en) 2010-12-22 2013-12-17 Intel Corporation Two-level system main memory
US8462577B2 (en) 2011-03-18 2013-06-11 Intel Corporation Single transistor driver for address lines in a phase change memory and switch (PCMS) array
US8462537B2 (en) 2011-03-21 2013-06-11 Intel Corporation Method and apparatus to reset a phase change memory and switch (PCMS) memory cell
US8607089B2 (en) 2011-05-19 2013-12-10 Intel Corporation Interface for storage device access over memory bus
US20120297147A1 (en) * 2011-05-20 2012-11-22 Nokia Corporation Caching Operations for a Non-Volatile Memory Array
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
US20130036270A1 (en) * 2011-08-04 2013-02-07 The Regents Of The University Of Michigan Data processing apparatus and method for powering down a cache
EP3346386B1 (en) 2011-09-30 2020-01-22 Intel Corporation Non-volatile random access memory (nvram) as a replacement for traditional mass storage

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060248387A1 (en) * 2005-04-15 2006-11-02 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
CN1991792A (zh) * 2005-09-30 2007-07-04 英特尔公司 用于有效使用高速缓存及存储器的指令辅助高速缓存管理
CN101030170A (zh) * 2005-12-27 2007-09-05 英特尔公司 多状态高速缓存一致性方案的设备、系统和方法
US20080109629A1 (en) * 2006-11-04 2008-05-08 Virident Systems, Inc. Asymmetric memory migration in hybrid main memory
US7774556B2 (en) * 2006-11-04 2010-08-10 Virident Systems Inc. Asymmetric memory migration in hybrid main memory
CN101236526A (zh) * 2007-01-30 2008-08-06 扬智科技股份有限公司 连接于非易失性存储装置的高速缓存系统的计算机系统
CN101673188A (zh) * 2008-09-09 2010-03-17 上海华虹Nec电子有限公司 一种固态硬盘的数据存取方法
US20100318721A1 (en) * 2009-06-16 2010-12-16 Sandisk Corporation Program failure handling in nonvolatile memory

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
XIAOXIA WU; JIAN LI; LIXIN ZHANG; EVAN SPEIGHT; YUAN XIE: "Power and performance of read-write aware hybrid caches with non-volatile memories", 《DESIGN, AUTOMATION AND TEST IN EUROPE》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110297787A (zh) * 2018-03-22 2019-10-01 龙芯中科技术有限公司 I/o设备访问内存的方法、装置及设备
CN110297787B (zh) * 2018-03-22 2021-06-01 龙芯中科技术股份有限公司 I/o设备访问内存的方法、装置及设备

Also Published As

Publication number Publication date
BR112014013390A2 (pt) 2017-06-13
KR101571991B1 (ko) 2015-11-25
KR20140098167A (ko) 2014-08-07
DE112011105984T5 (de) 2014-09-18
TW201346554A (zh) 2013-11-16
WO2013095404A1 (en) 2013-06-27
US10795823B2 (en) 2020-10-06
GB2510760A (en) 2014-08-13
KR101915073B1 (ko) 2018-11-06
GB2510760B (en) 2020-05-20
CN103988183B (zh) 2017-06-13
US20210056035A1 (en) 2021-02-25
GB201408834D0 (en) 2014-07-02
TWI489276B (zh) 2015-06-21
US20140304475A1 (en) 2014-10-09
CN107368433B (zh) 2021-06-22
CN103988183A (zh) 2014-08-13
US11200176B2 (en) 2021-12-14
KR20150138399A (ko) 2015-12-09

Similar Documents

Publication Publication Date Title
CN103988183B (zh) 2级存储器分级结构中的存储器侧高速缓存的动态部分断电
CN103946811B (zh) 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
CN103946812B (zh) 用于实现多级别存储器分级体系的设备和方法
CN103946813B (zh) 基于使用统计量追踪的远存储器访问信号的生成
CN103946826B (zh) 用于在公共存储器通道上实现多级存储器层级的设备和方法
CN104025060B (zh) 支持近存储器和远存储器访问的存储器通道
CN104115129B (zh) 用于从处理器到存储器子系统智能刷新数据的系统和方法
CN104050112B (zh) 用于标记需要写回持久存储的非事务代码区的开头和结束的指令
CN103999161B (zh) 用于相变存储器漂移管理的设备和方法
CN103975287B (zh) 使用非易失性随机存取存储器的服务器中的增强系统睡眠状态支持
CN103946814B (zh) 计算机系统中的非易失性随机存取存储器的自主初始化
CN104106057B (zh) 用非易失性随机存取存储器提供对休眠状态转变的即时响应的方法和系统
CN103946816B (zh) 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram)
CN104115132B (zh) 借助于存储器通道关闭的功率节约
CN104115230B (zh) 基于高效pcms刷新机制的计算装置、方法和系统
CN105493052A (zh) 用于存储器管理的高速缓存操作

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant