CN104050112A - 用于标记需要写回持久存储的非事务代码区的开头和结束的指令 - Google Patents
用于标记需要写回持久存储的非事务代码区的开头和结束的指令 Download PDFInfo
- Publication number
- CN104050112A CN104050112A CN201410098020.7A CN201410098020A CN104050112A CN 104050112 A CN104050112 A CN 104050112A CN 201410098020 A CN201410098020 A CN 201410098020A CN 104050112 A CN104050112 A CN 104050112A
- Authority
- CN
- China
- Prior art keywords
- instruction
- processor
- storage
- storer
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- 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
-
- 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- 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/60—Details of cache memory
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Abstract
提供了用于标记需要写回持久存储的非事务代码区的开头和结束的指令。所描述的处理器具有到非易失性随机存取存储器的接口和逻辑电路。该逻辑电路用于标识事务所修改的高速缓存行,该事务将易失性随机存取存储器看作该事务的持久存储。该逻辑电路还用于标识与事务不同的软件进程所修改的高速缓存行,该软件进程也将所述非易失性随机存取存储器看作持久存储。
Description
发明领域
本发明一般涉及计算机系统领域。更具体而言,本发明涉及一种用于实现包括非易失性存储器层的多级存储器分层结构的装置和方法。
相关技术描述
A.当前存储器和存储配置
当今,计算机创新的限制因素之一是存储器和存储技术。在常规计算机系统中,系统存储器(也称为主要存储器、主存储器、可执行存储器)通常由动态随机存取存储器(DRAM)来实现。基于DRAM的存储器甚至在没有存储器读或写发生时也消耗功率,因为它必须不断地对内部电容再充电。基于DRAM的存储器是易失性的,这意味着一旦移除电源,存储在DRAM存储器中的数据就丢失。常规计算机系统还依赖于多级高速缓存来提高性能。高速缓存是置于处理器与系统存储器之间的高速存储器,与从系统存储器对存储器访问请求进行服务相比,所述高速存储器对这些请求进行更快服务。这样的高速缓存通常用静态随机存取存储器(SRAM)来实现。高速缓存管理协议可被用来确保最频繁访问的数据和指令被存储在各级高速缓存之一内,从而降低了存储器访问操作的数量并提高了性能。
至于大容量存储(也被称为次级存储或盘存储),常规大容量存储设备通常包括磁介质(例如,硬盘驱动器)、光学介质(例如,光盘(CD)驱动器、数字多功能盘(DVD),等等)、全息介质、和/或大容量存储闪存(例如,固态驱动器(SSD)、可移动闪存驱动器,等等)。一般而言,这些存储设备被认为输入/输出(I/O)设备,因为它们由处理器通过实现各I/O协议的各I/O适配器来访问。这些I/O适配器和I/O协议消耗大量功率并且可对管芯面积和该平台的形状因子具有显著影响。在没有连接到持久电源时具有有限电池寿命的便携式或移动设备(例如,膝上型计算机、上网本、平板计算机、个人数字助理(PDA)、便携式媒体播放器、便携式游戏设备、数码相机、移动电话、智能电话、功能电话等)可包括通常经由低功率互连和I/O控制器耦合到处理器以满足活动和空闲功率预算的可移动大容量存储设备(例如,嵌入式多媒体卡(eMMC)、安全数字(SD)卡)。
对于固件存储器(诸如,引导存储器(也被称为BIOS闪存)),常规计算机系统通常使用闪存设备来存储被频繁读取但极少(或从不)被写入的持久系统信息。例如,处理器在引导过程(基本输入输出系统(BIOS)镜像)期间执行来初始化关键系统组件的初始指令通常被存储在闪存设备中。当前市场上可获得的闪存设备通常具有有限的速度(例如,50MHz)。这一速度通过读协议的开销而进一步降低(例如,2.5MHz)。为了加快BIOS执行速度,常规处理器通常在引导过程的预扩展固件接口阶段对BIOS代码的一部分进行高速缓存。处理器高速缓存的大小对PEI阶段中使用的BIOS代码(也被称为“PEI BIOS代码”)的大小形成约束。
B.相变存储器(PCM)以及相关技术
相变存储器(PCM)(有时也称为相变随机存取存储器(PRAM或PCRAM)、PCME、奥弗辛斯基统一存储器、或硫族RAM(C-RAM))是采用硫属化物玻璃的独特行为的一种类型的非易失性计算机存储器。作为电流穿过所产生的热的结果,硫属化物玻璃可在两个状态之间切换:晶体和无定形。PCM的最近版本可以达到两个附加区别状态。
PCM提供比闪存更高的性能,因为PCM的存储器元件可更快速地切换,写入(将单独的位改变成1或0)可以无需首先擦除整个单元块来完成,并且因写入而造成的降级被降低(PCM设备可以保留大约100百万写入周期;PCM降级是由于编程、金属(以及其他材料)迁移、以及其他机制期间的热扩散)。
附图说明
以下的描述和附图用于图示本发明的实施例。在附图中:
图1示出了根据本发明的一个实施例的高速缓存和系统存储器安排;
图2示出了本发明的一个实施例中采用的存储器和存储分层结构;
图3示出了可在其上实现本发明的各实施例的计算机系统;
图4示出了事务过程;
图5示出了具有用于跟踪对高速缓存的改变的特殊硬件的处理器;
图6示出了使用图5的特殊硬件来将非事务数据改变写入持久存储的过程;
图7示出了集成过程,该过程示出了图5的特殊硬件可被用来由事务退回和非事务写入持久存储来支持;
图8示出了编译过程。
具体实施方式
在以下描述中,陈述了诸如逻辑实现、操作码、指定操作数的手段、资源划分/共享/复制实现、系统组件的类型和相互关系、以及逻辑划分/整合选择之类的多个具体细节,以提供对本发明的更透彻理解。然而,本领域技术人员应当领会,没有这些具体细节也可实践本发明。在其它实例中,未详细示出控制结构、门级电路以及完整软件指令序列,以免使本发明难以理解。本领域技术人员利用所包括的描述将能在无需过度实验的情况下实现适当的功能。
在说明书中对“一个实施例”、“一实施例”、“示例实施例”等的引用指示所描述的实施例可以包括特定特征、结构或特性,但并不一定每个实施例都需要包括该特定特征、结构或特性。此外,这样的短语不一定是指同一个实施例。此外,当参考一个实施例描述特定特征、结构或特性时,认为在本领域技术人员学识范围内,可以与其他实施例一起实施这样的特征、结构或特性,不论是否有明确描述。
在以下描述和权利要求书中,可使用术语“耦合”和“连接”及其衍生词。应当理解,这些术语不旨在作为彼此的同义词。“耦合”用于指示两个或多个元件彼此合作或相互作用,但它们可能或可能不直接物理或电接触。“连接”被用来指示在彼此耦合的两个或更多个元件之间建立通信。
用括号括起来的文本以及具有虚线边界的框(例如,大虚线、小虚线、点虚线、点线)在此有时被用来示出向本发明的实施例添加附加特征的可任选操作/组件。然而,这些记号不应当被认为是意味着它们是唯一的选项或可任选操作/组件和/或具有实线边界的框在一些实施例中不是可任选的。
介绍
存储器容量和性能要求随着处理器核以及新使用模型(如虚拟化)的数量的增加而继续增加。另外,存储器功率和成本已分别变成电子系统的总体功率和成本的重要组成部分。
一些实施例通过在各存储器技术之间智能地细分性能要求和容量要求来解决以上挑战。这一方法的焦点在于用相对少量的相对高速存储器(如DRAM)来提供性能,同时使用非常密集的非易失性随机存取存储器(NVRAM)来实现系统存储器体。以下描述的本发明的各实施例定义使得能够将分层存储器子系统组织用于NVRAM的平台配置。在存储器分层结构中使用NVRAM还启用了新用途,如扩展的引导空间和大容量存储实现。
图1示出了根据本发明的实施例的高速缓存和系统存储器安排。具体而言,图1示出了包括一组内部处理器高速缓存120、担当远存储器高速缓存121的“近存储器”以及“远存储器”122的存储器分层结构,近存储器可包括内部高速缓存106和外部高速缓存107-109两者。在本发明的一些实施例中,可被用于“远存储器”的一种特定类型的存储器是非易失性随机存取存储器(“NVRAM”)。如此,以下提供了NVRAM的概览,此后是远存储器和近存储器的概览。
A.非易失性随机存取存储器(“NVRAM”)
存在用于NVRAM的许多可能的技术选择,包括PCM、相变存储器和开关(PCMS)(后者是前者的更具体实现)、字节可寻址的持久存储器(BPRAM)、存储类存储器(SCM)、通用存储器、Ge2Sb2Te5、可编程金属化单元(PMC)、电阻存储器(RRAM)、RESET(无定形)单元、SET(晶体)单元、PCME、奥弗辛斯基存储器、铁电存储器(也被称为聚合物存储器和聚(N-乙烯基咔唑)、铁磁存储器(也称为自旋电子、SPRAM(自旋传递转矩RAM))、STRAM(自选隧穿RAM)、磁阻存储器、磁性存储器、磁随机存取存储器(MRAM)、以及半导体-氧化物-氮化物-氧化物-半导体(SONOS,也称为介电存储器)。
NVRAM具有以下特性:
(1)即使移除了电源它也维护其内容,类似于固态盘(SSD)中使用的闪存,且不同于SRAM和DRAM(它们是易失性的);
(2)比诸如SRAM和DRAM等易失性存储器更低的功耗;
(3)随机存取类似于SRAM和DRAM(也称为随机可寻址);
(4)按比SSD中的闪存(一次只可重写和擦除一“块”——对NOR闪存而言最小64千字节且对NAND闪存而言最小16千字节)更低级的粒度(例如,字节级)可重写和可擦除;
(5)用作系统存储器并被分配了系统存储器地址空间的全部或一部分;
(6)能够使用支持用于支持无序操作的标识符(ID)的协议通过总线耦合到处理器,并允许按足够小以支持NVRAM作为系统存储器的操作的粒度级(例如,高速缓存行大小,如64或128字节)访问。例如,总线可以是非无序存储器总线(例如,DDR总线,如DDR3、DDR4,等等)。作为另一示例,总线可以是PCI快速(PCIE)总线、桌面管理接口(DMI)总线、或利用无序协议和足够小的净荷大小(例如,高速缓存行大小,如64或128字节)的任何其他类型的总线;以及
(7)以下中的一个或多个:
a)比诸如闪存等非易失性存储器/存储技术更快的写入速度;
b)非常高的读取速度(比闪存快并且接近或等于DRAM读取速度);
c)可直接写入(而非要求如SSD中使用的闪存那样在写入数据之前进行擦除(用1盖写));
d)在失败之前更大数量的写入(超过引导ROM和SSD中使用的闪存);和/或
如上所述,与一次必须被重写和擦除一完整“块”的闪存对比,在任何给定实现中访问NVRAM的粒度级可依赖于特定存储器控制器和特定存储器总线或NVRAM耦合到的其他类型的总线。例如,在NVRAM被用作系统存储器的一些实现中,NVRAM可按高速缓存行的粒度(例如,64字节或128字节高速缓存行)被访问,尽管也有能按字节粒度访问的内在能力,因为高速缓存行是存储器子系统访问存储器的级别。因而,在NVRAM被部署在存储器子系统中时,它可按与同一存储器子系统中使用的DRAM(例如,“近存储器”)相同的粒度级被访问。虽然如此,存储器控制器和存储器总线或其他类型的总线对NVRAM访问的粒度级小于闪存所使用的块大小和I/O子系统的控制器和总线的访问大小。
NVRAM还可包括磨损均衡算法来计入以下事实:在多个写入访问之后,远存储器级的存储单元开始磨损,尤其是在可发生大量写入的情况下,如在系统存储器实现中。因为高周期计数块最可能以此方式磨损,所以磨损均衡通过将高周期计数块的地址与低周期计数块对换来将各个写入分散在各远存储器单元中。注意,大多数地址对换通常对应用程序而言是透明的,因为它是由硬件、低级软件(例如,低级驱动程序或操作系统)、或这两者的组合来处理的。
B.远存储器
本发明的一些实施例的远存储器122被用NVRAM来实现,但不必限于任何特定存储器技术。按照其特性和/或其在存储器/存储分层结构中的应用,远存储器122可与其他指令和数据存储器/存储技术区分开。例如,远存储器122与以下不同:
可被用于分别专用于处理器核101-104中的每一个的0级和1级内部处理器高速缓存101a-b、102a-b、103a-b、以及104a-b的静态随机存取存储器(SRAM),以及各处理器核共享的较低级高速缓存(LLC)105;
被配置成处理器100内部(例如,与处理器100在同一管芯上)的高速缓存106和/或被配置成处理器外部(例如,在与处理器100相同或不同的封装中)的一个或多个高速缓存107-109的动态随机存取存储器(DRAM);以及
用作大容量存储(未示出)的闪存/磁盘/光盘;以及
用作固件存储器(可以指引导ROM、BIOS闪存、和/或TPM闪存)(未示出)的诸如闪存或其他只读存储器(ROM)之类的存储器。
远存储器122可被用作可由处理器100直接寻址并能够足以跟上处理器100的指令和数据存储,与用作大容量存储的闪存/磁盘/光盘形成对比。此外,如以上讨论并在下文描述的,远存储器122可被置于存储器总线上并且可与存储器控制器直接通信,存储器控制器进而与处理器100直接通信。
远存储器122可以与其他指令和数据存储技术(例如,DRAM)相组合,以形成混合存储器(也被称为共址PCM和DRAM;第一级存储器和第二级存储器;FLAM(闪存和DRAM))。注意,以上技术(包括PCM/PCMS)中的至少一些可被用于大容量存储来作为系统存储器的替换或补充,并且在以此方式应用时不必是可随机存取、可字节寻址、或可由处理器直接寻址的。
为便于解释,该申请的其余部分中的大部分将引用“NVRAM”,或更具体地“PCM”或“PCMS”,作为远存储器122的技术选择。如此,术语NVRAM、PCM、PCMS以及远存储器可在以下讨论中互换地使用。然而,应当意识到,如上所述,不同的技术也可被用于远存储器。同样,NVRAM不限于用作远存储器。
C.近存储器
“近存储器”121是配置在远存储器122前方的具有相对于远存储器的较低读/写访问等待时间和/或更对称的读/写访问等待时间(即,具有大致等于写时间的读时间)的中间级存储器。在一些实施例中,近存储器121具有比远存储器122显著更低的写等待时间但具有类似(例如,稍低于或等于)的读等待时间;例如,近存储器121可以是诸如易失性随机存取存储器(VRAM)等易失性存储器并且可包括DRAM或其他高速的基于电容的存储器。然而,注意,本发明的底层原理不限于这些具体的存储器类型。另外,近存储器121可具有比远存储器122相对更低的密度和/或可能制造起来更昂贵。
在一个实施例中,近存储器121被配置在远存储器122和内部处理器高速缓存120之间。在下文描述的各实施例中的一些实施例中,近存储器121被配置成一个或多个存储器侧高速缓存(MSC)107-109,以对远存储器的性能和/或使用限制(包括例如读/写等待时间限制和存储器降级限制)进行掩码。在这些实现中,MSC107-109与远存储器122的组合以近似于、等于或超过只使用DRAM作为系统存储器的系统的性能水平来操作。如下文详细讨论的,虽然在图1中被示为“高速缓存”,但近存储器121可包括它执行其他角色(作为执行高速缓存角色的补充或替换)的模式。
近存储器121可位于处理器管芯上(作为高速缓存106)和/或位于处理器管芯外部(作为高速缓存107-109)(例如,在位于CPU封装上的分开的管芯上、位于CPU封装外部并具有到CPU封装的高带宽链路,例如在存储器双内联存储器模块(DIMM)上、riser/mezzanine(插槽/夹层)、或计算机主板)。近存储器121可使用单个或多个高带宽链路(如DDR或其他高带宽链路(如下文详细描述的))与处理器100通信地耦合。
示例性系统存储器分配方案
图1示出了在本发明的各实施例中相对于系统物理地址(SPA)空间116-119如何配置各级高速缓存101-109。如上所述,这一实施例包括具有一个或多个核101-104的处理器100,其中每一个核具有它自己的专用上级高速缓存(L0)101a-104a和中间级高速缓存(MLC)(L1)高速缓存101b-104b。处理器100还包括共享的LLC105。这些各高速缓存级的操作很好理解并且在此不再赘述。
图1中示出的高速缓存107-109可专用于特定系统存储器地址范围或一组非连续地址范围。例如,高速缓存107专用于担当系统存储器地址范围#1116的MSC,且高速缓存108和109专用于担当系统存储器地址范围#2117和#3118的非重叠部分的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,它可包括在存在近存储器的情况下(或在不存在近存储器时只有NVRAM作为系统存储器174)的远存储器151B(例如,诸如PCM等NVRAM)且可任选地包括用作系统存储器的近存储器151A(在此描述的某些操作模式中),(3)大容量存储级152,它可包括闪存/磁/光学大容量存储152B和/或NVRAM大容量存储152A(例如,NVRAM142的一部分);以及(4)固件存储器级153,它可包括BIOS闪存170和/或BIOS NVRAM172且可任选地包括可信平台模块(TPM)NVRAM173。
如图所示,近存储器144可被实现成按各种不同的模式来操作,包括:第一模式,其中它作为远存储器的高速缓存来操作(作为FM的高速缓存150B的近存储器);第二模式,其中它作为系统存储器151A来操作并占据SPA空间的一部分(有时称为近存储器“直接访问”模式);以及一个或多个附加操作模式,如暂存存储器192或作为写缓冲器193。在本发明的一些实施例中,近存储器是可分区的,其中每一分区可并发地按所支持的模式中的一个不同模式来操作;并且不同的实施例可以由硬件(例如,熔丝、引脚)、固件、和/或软件(例如,通过MSC控制器124内的一组可编程范围寄存器,在这些寄存器内例如可以储存不同的二进制代码来标识每一模式和分区)来支持分区的配置(例如大小、模式)。
图2中的系统地址空间A190被用来示出在近存储器被配置成远存储器的MSC150B的情况下的操作。在这一配置中,系统地址空间A190表示整个系统地址空间(且系统地址空间B191不存在)。或者,系统地址空间B191被用来示出在近存储器的全部或部分被分配了系统地址空间的一部分的情况下的实现。在这一实施例中,系统地址空间B191表示分配给近存储器151A的系统地址空间范围且系统地址空间A190表示分配给NVRAM174的系统地址空间的范围。
另外,在担当远存储器的高速缓存150B时,近存储器144可在MSC控制器124的控制下按各子模式操作。在这些模式中的每一个中,在近存储器不形成系统地址空间的可直接寻址部分的意义上,近存储器地址空间(NMA)对软件是透明的。这些模式包括但不限于以下:
(1)写回(write-back)高速缓存模式:在这一模式中,担当FM高速缓存150B的近存储器的全部或部分被用作NVRAM远存储器(FM)的高速缓存。当处于写回模式中时,每一写操作被最初定向到作为FM的高速缓存150B的近存储器(假定该写入被定向到的高速缓存行存在于高速缓存中)。只有在作为FM的高速缓存150B的近存储器内的高速缓存行要由另一高速缓存行替换(与以下描述的在其中每一写入操作被立即传播到NVRAM FM151B的写透(write-through)模式形成对比)时,对应的写入操作被执行以更新NVRAM FM151B。
(2)近存储器绕过模式:在这一模式中,所有读和写绕过担当FM高速缓存150B的NM并直接去往NVRAM FM151B。例如在应用不是高速缓存友好的或要求数据以高速缓存行的粒度被提交给持久存储的情况下,这样的模式可被使用。在一个实施例中,处理器高速缓存150A和担当FM高速缓存150B的NM上执行的高速缓存彼此独立地操作。因此,未被高速缓存在处理器高速缓存150A中的数据可被高速缓存在担当FM高速缓存150B的NM中(并且,在一些情况下,该数据可能不被准许高速缓存在处理器高速缓存150A中),且反之亦然。因而,可被指定为“不可高速缓存”在处理器高速缓存中的某些数据可被高速缓存在担当FM高速缓存150B的NM内。
(3)近存储器读高速缓存写绕过模式:这是以上模式的变型,其中对来自NVRAM FM151B的持久数据的读高速缓存被允许(即,持久数据被高速缓存在担当远存储器的高速缓存150B的近存储器中以用于只读操作)。在持久数据的大部分是“只读”的并且应用使用是高速缓存友好的情况下,这是有用的。
(4)近存储器读高速缓存写透模式:这是近存储器读高速缓存写绕过模式的变型,其中除了读高速缓存之外,写命中也被高速缓存。对作为FM的高速缓存150B的近存储器的每一个写入造成对FM151B的写入。因而,由于高速缓存的写透性质,高速缓存行持久性仍然得到保证。
在按近存储器直接访问模式操作时,作为系统存储器151A的近存储器的全部或部分对软件是直接可见的并且形成SPA空间的一部分。这样的存储器可以完全在软件控制下。这样的方案可为软件创建非统一存储器地址(NUMA)存储器域,其中相对于NVRAM系统存储器174它从近存储器144得到更高性能。作为示例而非限制,这样的使用可被用于需要对某些数据结构的非常快速的访问的某些高性能计算(HPC)和图形应用。
在一替换实施例中,近存储器直接访问模式通过“固定(pin)”近存储器中的某些高速缓存行(即,具有也同时存储在NVRAM142中的数据的高速缓存行)来实现。这样的固定可以在较大、多路、组相关联高速缓存中有效地完成。
图2还示出了NVRAM142的一部分可被用作固件存储器。例如,BIOSNVRAM172部分可被用来存储BIOS镜像(作为在BIOS闪存170中存储BIOS信息的替换或补充)。BIOS NVRAM部分172可以是SPA空间的一部分并且可由在处理器核101-104上执行的软件直接寻址,而BIOS闪存170可通过I/O子系统115来寻址。作为另一示例,可信平台模块(TPM)NVRAM173部分可被用来保护敏感系统信息(例如,加密密钥)。
因而,如图所示,NVRAM142可被实现成按各自不同的模式来操作,包括作为远存储器151B(例如,在近存储器144存在/操作时,近存储器经由MSC控制124来担当FM的高速缓存还是不经由(在高速缓存101A-105后直接访问且无需MSC控制124));只有NVRAM系统存储器174(不作为远存储器,因为没有近存储器存在/操作;并在无需MSC控制124的情况下被访问);NVRAM大容量存储152A;BIOS NVRAM172;以及TPM NVRAM173。在不同的实施例可以按不同的方式指定NVRAM模式时,图3描述了解码表333的使用。
图3示出了其上可实现本发明的实施例的示例性计算机系统300。计算机系统300包括处理器310和存储器/存储子系统380,其中NVRAM142用作系统存储器、大容量存储以及可任选地用作固件存储器。在一个实施例中,NVRAM142构成了计算机系统300用来存储数据、指令、状态、以及其他持久和非持久信息的整个系统存储器和存储分层结构。如上所述,NVRAM142可被配置成实现系统存储器、大容量存储、以及固件存储器、TPM存储器等的典型的存储器和存储分层结构中的角色,在图3的实施例中,NVRAM142被分区成FM151B、NVRAM大容量存储152A、BIOS NVRAM173以及TMP NVRAM173。还构想了具有不同角色的存储分层结构,并且NVRAM142的应用不限于上述角色。
作为示例,描述了在担当FM的高速缓存150B的近存储器处于写回高速缓存时的操作。在一个实施例中,在担当FM的高速缓存150B的近存储器处于上述写回高速缓存模式时,读操作将首先到达MSC控制器124,MSC控制器124将执行查找以确定所请求的数据是否存在于担当FM的高速缓存150B的近存储器中(例如,利用标签高速缓存342)。如果存在,则它将该数据返回给发出请求的CPU、核101-104或通过I/O子系统115返回给I/O设备。如果数据不存在,则MSC控制器124将该请求连同系统存储器地址一起发送给NVRAM控制器332。NVRAM控制器332将使用解码表333来将系统存储器地址转换成NVRAM物理设备地址(PDA)并将该读操作定向到远存储器151B的这一区域。在一个实施例中,解码表333包括地址迂回表(AIT)分量,NVRAM控制器332使用该AIT分量来在系统存储器地址和NVRAM PDA之间进行转换。在一个实施例中,AIT作为被实现成分发存储器访问操作并从而降低NVRAM FM151B的磨损的磨损均衡算法的一部分来更新。或者,AIT可以是存储在NVRAM控制器332内的单独的表。
在从NVRAM FM151B接收到所请求的数据后,NVRAM控制器332将所请求的数据返回给MSC控制器124,MSC控制器124将该数据存储在担当FM高速缓存150B的MSC近存储器中并且还将该数据发送给发出请求的处理器核101-104或通过I/O子系统115发送给I/O设备。对这一数据的后续请求可直接从担当FM高速缓存150B的近存储器进行服务,直至它被某一其他NVRAM FM数据所替换。
如上所述,在一个实施例中,存储器写操作也首先去往MSC控制器124,MSC控制器124将它写入担当FM高速缓存150B的MSC近存储器中。在写回高速缓存模式中,在接收到写入操作时,数据可被直接发送给NVRAM FM150B。例如,只有担当FM高速缓存150B的MSC近存储器中存储该数据的位置必须被重新使用来存储不同系统存储器地址的数据时,该数据才可被发送给NVRAM FM151B。当这一点发生时,MSC控制器124通知该数据当前不在NVRAM FM151B中并且因而将从担当FM高速缓存150B的近存储器检索它并将它发送给NVRAM控制器332。NVRAM控制器332查找该系统存储器地址的PDA并随后将数据写到NVRAM FM151B。
在图3中,NVRAM控制器332被示为使用三条分开的线路连接到FM151B、NVRAM大容量存储152A、以及BIOS NVRAM172。然而,这不一定意味着存在将NVRAM控制器332连接到NVRAM142的这些部分的三条分开的物理总线或通信信道。相反,在一些实施例中。共用存储器总线或其他类型的总线被用来将NVRAM控制器332通信耦合到FM151B、NVRAM大容量存储152A以及BIOS NVRAM172。例如,在一个实施例中,图3中的三条线路表示NVRAM控制器332在其上实现用于与NVRAM142通信的(例如,无序)协议的总线,如存储器总线(例如,DDR3、DDR4等总线)。NVRAM控制器332还可通过支持本机协议的总线(如PCI express总线、桌面管理接口(DMI)总线、或利用无序协议和足够小的净荷大小(例如,高速缓存行大小,如64或128字节)的任何其他类型的总线)与NVRAM142通信。
在一个实施例中,计算机系统300包括为处理器310执行中央存储器访问控制的集成存储器控制器(IMC)331,它耦合到:1)用于控制对担当远存储器高速缓存150B的近存储器NM的访问的存储器侧高速缓存(MSC)控制器124;以及2)用于控制对NVRAM142的访问的NVRAM控制器332。虽然在图3中示为分开的单元,但MSC控制器124和NVRAM控制器332可在逻辑上形成IMC331的一部分。
在所示实施例中,MSC控制器124包括指定用于担当远存储器高速缓存150B的NM的操作模式(例如,上述写回高速缓存模式、近存储器绕过模式等)的一组范围寄存器336。在所示实施例中,DRAM144被用作担当远存储器的高速缓存150B的NM的存储器技术。响应于存储器访问请求,MSC控制器124可以确定(取决于范围寄存器336中指定的操作模式)该请求是否可从担当FM的高速缓存150B的NM来服务或该请求是否必须被发送给NVRAM控制器332,NVRAM控制器332随后可从NVRAM142的远存储器(FM)部分151B来对该请求进行服务。
在其中NVRAM142是用PCM来实现的实施例中,NVRAM控制器332是用根据PCMS技术的协议来执行访问的PCMS控制器。如上所述,PCMS存储器固有地能够以字节粒度被访问。然而,NVRAM控制器332可以按较低粒度水平(如高速缓存行(例如,64位或128位高速缓存行))或与存储器子系统相一致的任何其他粒度水平来访问基于PCMS的远存储器151B。本发明的底层原理不限于用于访问基于PCMS的远存储器151B的任何特定粒度水平。然而,一般而言,在基于PCMS的远存储器151B被用于形成系统地址空间的一部分时,粒度水平将高于传统上用于其他非易失性存储技术(如闪存,它们只可在“块”(对于NOR闪存最小64千字节大小且对于NAND闪存最小16千字节大小)的水平上执行重写和擦除操作)的粒度水平。
在所示实施例中,NVRAM控制器332可以从解码表333读取配置数据来为NVRAM142确立上述模式、大小等,或者另选地可以依赖于从IMC331和I/O子系统315传递的解码结果。例如,在制造时或在现场,计算机系统300可以对解码表333编程以将NVRAM142的不同区域标记为系统存储器、经由SATA接口展示的大容量存储、经由USB Bulk Only Transport(BOT,单批量传输)接口展示的大容量存储、支持TPM存储的加密存储,以及其他。这意味着将访问定向到NVRAM设备142的不同分区的方式是经由解码逻辑。例如,在一个实施例中,每一分区的地址范围被定义在解码表333中。在一个实施例中,在IMC331接收到访问请求时,该请求的目标地址被解码以揭示该请求定向到存储器、NVRAM大容量存储、还是I/O。如果它是存储器请求,则IMC331和/或MSC控制器124根据目标地址进一步确定该请求定向到FM的高速缓存150B还是FM151B。对于FM151B访问,该请求被转发给NVRAM控制器332。如果该请求定向到I/O(例如,非存储和存储I/O设备),则IMC331将该请求传递给I/O子系统115。I/O子系统115进一步解码该地址以确定该地址是指向NVRAM大容量存储152A、BIOS NVRAM172还是其他非存储或存储I/O设备。如果该地址指向NVRAM大容量存储152A或BIOS NVRAM172,则I/O子系统115将该请求转发给NVRAM控制器332。如果这一地址指向TMP NVRAM173,则I/O子系统115将该请求传递给TPM334以执行安全访问。
新存储器体系结构(如在此描述的)的存在允许很多新可能性。虽然下文以更多篇幅进一步进行了讨论,但这些可能性中的一些在下文被快速突出。
根据一个可能的实现,但NVRAM142担当系统存储器中传统DRAM技术的总替换或补充。在一个实施例中,NVRAM142表示二级系统存储器的引入(例如,系统存储器可被看做具有包括作为高速缓存150B(DRAM器件340的一部分)的近存储器的第一级系统存储器和包括远存储器(FM)151B(NVRAM142的一部分)的第二级系统存储器)。
根据一些实施例,NVRAM142担当闪存/磁/光学大容量存储152B的总替换或补充。如上所述,在一些实施例中,即使NVRAM152A能够具有字节级可寻址性,NVRAM控制器332也仍然可按多个字节的块(取决于实现(例如,64千字节、128千字节等等))来访问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。
在一个实施例中,NVRAM142担当诸如BIOS闪存362和TPM闪存372(在图3中用虚线示出以指示它们是可任选的)等固件存储器的总替换或补充。例如,NVRAM142可包括用于补充或替换BIOS闪存362的BIOS NVRAM172分区并且可包括用于补充或替换TPM闪存372的TPM NVRAM173分区。固件存储器还可存储TPM334用来保护敏感系统信息(例如,加密密钥)的系统持久状态。在一个实施例中,NVRAM142用作固件存储器消除了对第三方闪存部分存储对于系统操作来说很关键的代码和数据的需求。
继续图3的系统的讨论,在一些实施例中,计算机系统100的体系结构可包括多个处理器,但为简明起见,在图3中示出了单个处理器310。处理器310可以是包括任何类型的数据处理器,包括通用或专用中央处理单元(CPU)、专用集成电路(ASIC)或数字信号处理器(DSP)。例如,处理器310可以是通用处理器,诸如酷睿(CoreTM)i3、i5、i7、2Duo和Quad,至强(XeonTM),或安腾(ItaniumTM)处理器,这些均可以从加利福尼亚圣克拉拉市的英特尔公司获得。或者,处理器310可以来自另一公司,如加州桑尼维尔的ARM控股有限公司、加州桑尼维尔的MIPS技术公司,等等。处理器310可以是专用处理器,诸如,例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器、或类似物。处理器310可被实现在一个或多个封装内包括的一个或多个芯片上。处理器310可以是一个或多个衬底的一部分,和/或可以使用若干种处理技术中的任何一种,诸如,例如,BiCMOS、CMOS,或NMOS,在一个或多个衬底上实现。在图3所示的实施例中,处理器310具有片上系统(SOC)配置。
在一个实施例中,处理器310包括包含用于执行诸如3D或2D图形命令等图形命令的逻辑的集成图形单元311。尽管本发明的各实施例不限于任何特定的集成图形单元311,但在一个实施例中,图形单元311能够执行工业标准图形命令,如Open GL和/或Direct X应用编程接口(API)(例如,OpenGL4.1和Direct X11)所指定的那些。
处理器310还可包括一个或多个核101-104,但同样为清楚起见在图3中示出了单个核。在许多实施例中,核101-104包括内部功能块,如一个或多个执行单元、退役单元、一组通用和专用寄存器,等等。如果核是多线程的或超线程的,则每一硬件线程也可被认为是“逻辑”核。核101-104可以是在体系结构和/或指令集上同构的或异构的。例如,核中的一些可以是有序的,而另一些是无序的。作为另一示例,核中的两个或多个核能够执行相同的指令集,而其他核只能够执行该指令集中的一个子集或执行不同的指令集。
处理器310还可包括一个或多个高速缓存,如可被实现成SRAM和/或DRAM的高速缓存313。在许多未示出的实施例中,除了高速缓存313之外还采用附加的高速缓存,以使核101-104内的执行单元与存储器设备150B和151B之间存在多个高速缓存级。例如,共享高速缓存单元组可以包括上级高速缓存(如1级(L1)高速缓存)、中级缓存(诸如2级(L2)、3级(L3)、4级(L4)、或其他级别的高速缓存)、(LLC),和/或其不同组合。在不同的实施例中,高速缓存313可按不同的方式分配并且在不同的实施例中可以是许多不同大小之一。例如,高速缓存313可以是8兆字节(MB)高速缓存、16MB高速缓存等。另外,在不同实施例中,高速缓存可以是直接映射的高速缓存、全相联高速缓存、多路组相联高速缓存或具有另一类型映射的高速缓存。在包括多个核的其他实施例中,高速缓存313可包括在所有核之间共享的一个较大部分或者可被分成若干个独立功能片(例如,每个核一片)。高速缓存313也可包括在所有核之间共享的一部分和作为每个核的独立功能片的若干个其他部分。
处理器310还可包括包含协调并操作核101-104的那些组件的本地代理314。本地代理单元314可以包括,例如,功率控制单元(PCU)和显示单元。PCU可以是或包括管理核101-104和集成图形单元311的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个从外部连接的显示器。
如上所述,在一些实施例中,处理器310包括集成存储器控制器(IMC)331、近存储器高速缓存(MSC)控制器、以及NVRAM控制器332,它们全部可以在与处理器310相同的芯片上,或在连接到处理器310的分开芯片和/或封装上。DRAM器件144可以指与IMC331和MSC控制器124相同或不同的芯片上;因而,一个芯片可具有处理器310和DRAM器件144;一个芯片可以具有处理器310和另一DRAM器件144(且这些芯片可在相同或不同的封装中);一个芯片可以具有核101-104且另一芯片具有IMC331、MSC控制器124和DRAM144(这些芯片可以在相同或不同的封装中);一个芯片可以具有核101-104,另一芯片具有IMC331和MSC控制器124,且又一芯片具有DRAM144(这些芯片可以在相同或不同的封装中);等等。
在一些实施例中,处理器310包括耦合到IMC331的I/O子系统115。I/O子系统115启用处理器310与以下串行或并行I/O设备之间的通信:一个或多个网络336(如局域网、广域网、或因特网)、存储I/O设备(如闪存/磁/光学大容量存储152B、BIOS闪存362、TPM闪存372)以及一个或多个非存储I/O设备337(如显示器、键盘、扬声器等等)。I/O子系统115可包括平台控制器中枢(PCH)(未示出),该PCH进一步包括用于提供对存储和非存储I/O设备及网络的访问的若干I/O适配器338和其他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;USB3.0;SATA3.0;小型计算机系统接口(SCSI)Ultra-640;以及电气电子工程师协会(IEEE)1394“火线”,以及其他。对于BIOS闪存362,I/O适配器338可以转换的协议中的一些包括串行外围接口(SPI)、微线(Microwire),以及其他。另外,可存在一个或多个无线协议I/O适配器。无线协议(以及其他)的各示例被用于个域网中,如IEEE802.15和蓝牙4.0;无线局域网,如基于IEEE802.11的无线协议;以及蜂窝协议。
在一些实施例中,I/O子系统115耦合到用于控制对系统持久状态(如安全数据、加密密钥、平台配置信息等)的访问的TPM控制334。在一个实施例中,这些系统持久状态被存储在TMP NVRAM173中并经由NVRAM控制器332来访问。
在一个实施例中,TPM334是具有密码功能的安全微控制器。TPM334具有多个信任相关的能力;例如,用于确保TPM所保护的数据只可用于该同一TPM的SEAL能力。TPM334可以使用其加密能力来保护数据和密钥(例如,秘密)。在一个实施例中,TPM334具有唯一且秘密的RSA密钥,这允许它认证硬件设备和平台。例如,TPM334可以验证寻求访问存储在计算机系统300中的数据的系统是预期系统。TPM334还能够报告平台(例如,计算机系统300)的完整性。这允许外部资源(例如,网络上的服务器)确定平台的可信赖性但不阻止用户对该平台的访问。
在一些实施例中,I/O子系统315还包括管理引擎(ME)335,这是允许系统管理员监视、维护、更新、升级、以及修理计算机系统300的微处理器。在一个实施例中,系统管理员可以通过经由网络336通过ME335编辑解码表333的内容来远程地配置计算机系统300。
为便于解释,本申请有时将NVRAM142称为PCMS设备。PCMS设备包括非易失性的、具有低功耗的、且可在位级修改的多层(垂直堆叠的)PCM单元阵列。如此,术语NVRAM设备和PCMS设备可在以下讨论中互换地使用。然而,应当意识到,如上所述,除PCMS以外的不同技术也可被用于NVRAM142。
应当理解,计算机系统可以利用NVRAM142作为系统存储器、大容量存储、固件存储器和/或其他存储器和存储目的,即使该计算机系统的处理器不具有处理器310的全部上述组件或具有比处理器310更多的组件。
在图3中示出的特定实施例中,MSC控制器124和NVRAM控制器332与处理器310位于同一管芯或封装上(称为CPU封装)。在其他实施例中,MSC控制器124和/或NVRAM控制器332可以位于管芯外或CPU封装外,通过诸如存储器总线(像DDR总线(例如,DDR3、DDR4等))、PCI express总线、桌面管理接口(DMI)总线或任何其他类型的总线等总线耦合到处理器310或CPU封装。
用于事务多线程软件和非事务软件的远侧存储器
处理器设计者当前正在设计启用对多线程软件的“事务”支持的增强型指令集。在常规(即,非事务)多线程软件中,程序用“锁”来保护数据。在任何一个时刻只有一个线程可以持有锁,所以它可以确保没有其他线程在同一时刻修改该数据。这往往是悲观的:具有锁的线程阻止任何线程取走该锁,即使它们只想读取该数据或对它作出非冲突的更新。
有了事务支持,参考图4,在操纵数据时,各线程不再需要取得锁。它们开始事务401,作出它们的改变402,并且在它们已经完成时,提交事务403或在不能提交该事务的情况下退回在步骤402作出的改变404。尽管线程在事务的过程期间作出其改变402,参考图5,处理器510内的特殊硬件570记录该线程读取和写入的任何/所有高速缓存5113和近存储器550B位置。
通常,事务所作出的任何/所有数据写入仅仅存在于高速缓存中,因为高速缓存保持系统的最新近改变。即,如果事务需要改变数据项,则该数据项从较深存储中提取出(如果它尚未处于高速缓存中),并随后被写入高速缓存。因而,假定事务所作出的数据改变的量被限制成小于可用于每一数据地址的高速缓存大小,则事务所作出的所有改变将存在于高速缓存中。处理器内的硬件阻止这些经改变的数据项写回到持久存储,直至该事务的提交为止。在第一实施例中,以上引用的高速缓存包括处理器高速缓存和近存储器。在第二实施例中,以上引用的高速缓存只包括处理器高速缓存(即,不包括近存储器)。为简明起见,本文的其余部分将主要指该第一实施例。
在一实施例中,处理器510的每一CPU核501-504和/或处理器510内的每一CPU核内的每一指令执行流水线存在特殊硬件570的实例。在此,如上所述,执行事务线程的核/流水线的特殊硬件570实例(例如,用逻辑电路来实现)记录该事务的高速缓存和近存储器读和写。注意,处理器510内的一些高速缓存级可以服务多个核(例如,末级高速缓存),而处理器510内的其他高速缓存级可只服务单个核(例如,核的L1高速缓存)。
在事务准备好提交时,特殊硬件570检查在该事务执行时没有其他线程对这些相同位置作出任何改变或从这些相同位置读取。如果满足这一条件,则该事务被提交403并且该线程继续。在此,提交改变意味着这些改变被写入持久存储。如果不满足这一条件,则该事务被放弃,并且所有它的改变被撤消404。在一个实施例中,为了“撤消”改变,表示在该事务作出任何改变之前的数据状态的新鲜数据从持久存储中提取出并被重写到高速缓存中,或者使被改变的高速缓存行无效。该线程随后可重试该操作,尝试不同的策略(例如,使用锁的策略),或完全放弃。
在一实现中,NVRAM远存储器551B对应于在提交事务时所提交的数据改变要存储在其中的“持久”存储,而近存储器550B和近存储器以上的任何/全部高速缓存513对应于线程能够在提交其事务之前作出改变的高速缓存位置。
然而,在各种情况下,持久存储的概念可以扩展到在技术上不满足上述事务的定义的其他类型的软件进程。根据各种不同的信息处理范例,持久存储可以是可写数据存储,它的各个记录反映一些进程或数据结构的正式识别的状态(并且因此是全局可见的,例如)和/或具有在扩展的时间跨度内(例如,计算系统的多个开/关周期)被需要的某一预期。注意,许多这样的软件进程还可选择在NVRAM远存储器551B中实现持久存储。
对于意识到持久存储的存在的那些非事务软件进程,该软件必须具有确保需要被持久地存储的经修改的数据在对它进行任何后续改变之前被从高速缓存转储清除并被存储到持久存储的嵌入的预防措施。在此,例如,如果对数据项作出改变,并且该软件认为该改变需要被反映在持久存储中,则该软件将插入高速缓存行转储清除指令(例如,CLFLUSH)其后伴有存储器防护指令(例如,MFENCE)。高速缓存行转储清除指令将使得新改变的数据被写回持久存储551B。存储器防护指令将阻止同一线程的其他操作访问该数据,直至它已被写回持久存储551B为止。
在更复杂的方法中,该线程的软件包括用于跟踪高速缓存中的什么数据项需要被持久储存到持久存储551B的复杂的簿记(book keeping)任务。在此,例如,某些数据项可被该线程的软件识别为需要持久储存,则簿记软件将跟踪这些数据项并且在代码执行中的适当时间,执行适当的高速缓存行和存储器防护指令。
图6示出了经改进的方法,其中图5的特殊硬件570也被使用,不仅支持以上参考图4描述的事务的退回,还消除了对上述软件簿记功能的需求。
如在图6中观察到的,只要求该软件定义代码的持久区域。这一定义在该区域的开头用PBEGIN指令来标记601并在该区域的结尾用PEND指令来标记604。PBEGIN指令实际上“打开”特殊硬件570的功能602。当代码在PBEGIN指令之后执行时,特殊硬件570跟踪哪些高速缓存行被改变603。在PEND指令执行时604,它使得特殊硬件570所标识的高速缓存行被转储清除605到持久存储551B并关闭特殊硬件570。在PEND指令后不允许任何其他指令执行,直至所有高速缓存行被转储清除以实现存储器防护。
因而,特殊硬件570不仅在事务操作期间还在非事务操作期间跟踪高速缓存访问。图5示出了耦合到特殊硬件570的核内的指令执行流水线580的表示。在此,耦合被用来响应于PBEGIN指令打开特殊硬件570并响应于PEND指令关闭该特殊硬件。该指令执行流水线还使用用于阻止发出下一指令直至高速缓存转储清除完成的逻辑来设计。高速缓存转储清除逻辑也耦合到该指令执行流水线和该特殊硬件,但为方便起见未示出。高速缓存转储清除逻辑由PEND指令来触发进入动作并且引用特殊硬件570来了解哪些高速缓存行需要被转储清除。图5的其他特征如以上参考图3描述的一样。
图7示出了描绘特殊硬件的这两个功能的综合方法。除非事务操作开始或PBEGIN指令被执行,否则特殊硬件551B保持空闲701。
如果事务操作开始,则特殊硬件570被启用并且开始跟踪哪些高速缓存行被该事务修改702。在事务完成时,处理器内的事务硬件571检查以查看任何其他事务是否已经对这些相同的高速缓存行703进行了写或读。如果没有,则这些改变被提交704给远存储器NVRAM551B,否则用来自持久存储NVRAM551B的内容来替换这些高速缓存行或使这些高速缓存行无效705。
如果执行了PBEGIN指令,则特殊硬件570被启用并且开始跟踪哪些高速缓存行被该软件进程修改706。在执行PEND指令时,所有经修改的高速缓存数据被写回持久存储NVRAM551B并且没有其他指令被准许执行直至写回完成707。
图8示出了要由编译器执行的编译过程。如在图8中观察到的,编译过程标识801代码区的开头,在该开头之后由该代码作出的任何数据改变要被持久储存到持久存储中。响应于标识801,编译代码向该程序代码中插入802PBEGIN指令或标记代码中的要插入PBEGIN指令的位置。编译过程还标识803代码区的开头,在开头之后插入(或要插入)PBEGIN指令,该代码区的数据改变不必被持久储存。响应于第二代码区的标识803,编译过程将PEND指令插入程序代码中(或标记要插入PEND指令的位置),在需要被持久储存的最后数据改变之后但在不需要被持久储存的第一数据改变之前。
以上讨论所教导的过程可以用程序代码来执行,程序代码诸如使机器(诸如“虚拟机”、放置在半导体芯片上的通用CPU处理器或处理核或放置在半导体芯片上的专用处理器)执行某些功能的机器可执行指令。另选地,这些功能可由包含用于执行这些功能的硬连线逻辑的专用硬件组件来执行,或由编程的计算机组件和自定义的硬件组件的任何组合来执行。
存储介质可用于存储程序代码。存储程序代码的存储介质可体现为但不限于一个或多个存储器(例如,一个或多个闪存、随机存取存储器(静态、动态或其它))、光盘、CD-ROM、DVD ROM、EPROM、EEPROM、磁或光卡或适于存储电子指令的其它类型的机器可读介质。还可从远程计算机(例如,服务器)将程序代码作为体现在传播介质中的数据信号(例如,经由通信链路(例如,网络连接))下载至请求计算机(例如,客户机)。
在上述说明书中,已参考本发明具体示例实施例描述了本发明。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范围。因此,应当以说明性而非限制性的意味看待说明书和附图。
Claims (22)
1.一种处理器,包括:
到非易失性随机存取存储器的接口;以及
用于以下操作的逻辑电路:
标识事务所修改的要被持久储存到所述非易失性随机存取存储器的高速缓存行;以及
标识软件进程所修改的要被持久储存到所述非易失性随机存取存储器的高速缓存行。
2.如权利要求1所述的处理器,其特征在于,所述非易失性随机存取存储器是相变存储器。
3.如权利要求2所述的处理器,其特征在于,所述非易失性随机存取存储器是相变存储器和开关。
4.如权利要求1-3中的任一项所述的处理器,其特征在于,还包括用于执行所述软件进程的标识所述软件进程的起始点的第一指令和执行所述软件进程的标识所述软件进程的结束点的第二指令的指令执行流水线,其中所述软件进程在所述起始点和所述结束点之间作出的数据改变要被持久储存到所述非易失性随机存取存储器,所述指令执行流水线耦合到所述逻辑电路以响应于所述第一指令来启用所述逻辑电路并响应于所述第二指令来禁用所述逻辑电路。
5.如权利要求4所述的处理器,其特征在于,还包括耦合到所述指令执行流水线和所述逻辑电路的高速缓存转储清除电路。
6.如权利要求5所述的处理器,其特征在于,所述指令执行流水线阻止任何其他指令的执行,直至所述高速缓存转储清除电路完成了对所述逻辑电路所标识的高速缓存行的转储清除。
7.一种方法,包括:
在处理器上执行事务,其中所述事务的执行包括作出对一个或多个高速缓存级中的数据改变、跟踪所述改变驻留在所述一个或多个高速缓存级中的位置、确定所述数据改变是否要被持久储存到非易失性随机存取存储器、以及将所述事务作出的所述数据改变持久储存到所述非易失性随机存取存储器;以及
在所述处理器上执行软件进程,标记所述软件进程作出的数据改变要被持久储存的所述软件进程的区域的开头和结尾、跟踪所述软件进程在所述开头和所述结尾之间作出的数据改变、以及在到达所述区域的所述结尾时将所述软件进程作出的所述数据改变持久储存到所述非易失性随机存取存储器。
8.如权利要求7所述的方法,其特征在于,所述开头是用第一指令来标记的且所述结尾是用第二指令来标记的。
9.如权利要求7所述的方法,其特征在于,所述非易失性随机存取存储器是用相变存储器来实现的。
10.如权利要求9所述的方法,其特征在于,所述非易失性随机存取存储器是用相变存储器和开关来实现的。
11.如权利要求8所述的方法,其特征在于,所述方法还包括响应于所述第一指令来启用所述处理器的硬件。
12.如权利要求11所述的方法,其特征在于,所述方法还包括响应于所述第二指令来禁用所述硬件。
13.一种其上储存有程序代码的机器可读存储介质,所述程序代码在由计算系统处理时使得如权利要求7-12中的任一项所述的方法被执行。
14.一种方法,包括:
标识其数据改变要被持久储存到持久存储的代码区;以及
分别用第一指令和第二指令来标记所述区域的开头和结尾。
15.如权利要求14所述的方法,其特征在于,所述第一指令使得处理器启用跟踪所述数据改变的硬件。
16.如权利要求15所述的方法,其特征在于,所述第二指令禁用所述硬件。
17.如权利要求14所述的方法,其特征在于,所述第二指令使得所述数据改变被从一个或多个高速缓存级转储清除并储存到所述持久存储。
18.如权利要求17所述的方法,其特征在于,所述第二指令阻止任何其他指令被执行,直至所述数据改变已完成从所述一个或多个高速缓存级的转储清除以及储存到所述持久存储。
19.如权利要求14所述的方法,其特征在于,所述持久存储是非易失性随机存取存储器。
20.如权利要求19所述的方法,其特征在于,所述非易失性随机存取存储器是相变存储器。
21.如权利要求20所述的方法,其特征在于,所述非易失性随机存取存储器是相变存储器和开关。
22.一种其上储存有程序代码的机器可读存储介质,所述程序代码在由计算系统处理时使得如权利要求14-21中的任一项所述的方法被执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710353595.2A CN107193756B (zh) | 2013-03-15 | 2014-03-17 | 用于标记需要写回持久存储的非事务代码区的开头和结束的指令 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/843,760 US9547594B2 (en) | 2013-03-15 | 2013-03-15 | Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage |
US13/843,760 | 2013-03-15 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710353595.2A Division CN107193756B (zh) | 2013-03-15 | 2014-03-17 | 用于标记需要写回持久存储的非事务代码区的开头和结束的指令 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104050112A true CN104050112A (zh) | 2014-09-17 |
CN104050112B CN104050112B (zh) | 2017-06-20 |
Family
ID=50634767
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410098020.7A Active CN104050112B (zh) | 2013-03-15 | 2014-03-17 | 用于标记需要写回持久存储的非事务代码区的开头和结束的指令 |
CN201710353595.2A Active CN107193756B (zh) | 2013-03-15 | 2014-03-17 | 用于标记需要写回持久存储的非事务代码区的开头和结束的指令 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710353595.2A Active CN107193756B (zh) | 2013-03-15 | 2014-03-17 | 用于标记需要写回持久存储的非事务代码区的开头和结束的指令 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9547594B2 (zh) |
JP (3) | JP2014182836A (zh) |
KR (2) | KR101673280B1 (zh) |
CN (2) | CN104050112B (zh) |
BR (1) | BR102014006298A2 (zh) |
DE (1) | DE102014003668A1 (zh) |
GB (1) | GB2515146B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912486A (zh) * | 2016-04-27 | 2016-08-31 | 联想(北京)有限公司 | 信息处理方法及处理器 |
CN107315537A (zh) * | 2016-04-27 | 2017-11-03 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN108459988A (zh) * | 2017-02-17 | 2018-08-28 | 英特尔公司 | 持续性远程直接存储器存取 |
CN109643299A (zh) * | 2016-09-29 | 2019-04-16 | 英特尔公司 | 在具有现有tlp定义的pcie上的持久存储器写入语义 |
CN110073355A (zh) * | 2016-12-13 | 2019-07-30 | 亚马逊技术股份有限公司 | 服务器上的安全执行环境 |
US10489158B2 (en) | 2014-09-26 | 2019-11-26 | Intel Corporation | Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores |
CN116244216A (zh) * | 2023-03-17 | 2023-06-09 | 摩尔线程智能科技(北京)有限责任公司 | 缓存控制方法、装置、缓存行结构、电子设备和存储介质 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9946540B2 (en) | 2011-12-23 | 2018-04-17 | Intel Corporation | Apparatus and method of improved permute instructions with multiple granularities |
WO2013095620A1 (en) | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method of improved insert instructions |
JP6166616B2 (ja) * | 2013-08-07 | 2017-07-19 | 株式会社東芝 | 情報処理方法、情報処理装置及びプログラム |
US20150095578A1 (en) * | 2013-09-27 | 2015-04-02 | Kshitij Doshi | Instructions and logic to provide memory fence and store functionality |
US10019354B2 (en) * | 2013-12-09 | 2018-07-10 | Intel Corporation | Apparatus and method for fast cache flushing including determining whether data is to be stored in nonvolatile memory |
GB2529148B (en) | 2014-08-04 | 2020-05-27 | Advanced Risc Mach Ltd | Write operations to 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 |
US10078448B2 (en) | 2015-07-08 | 2018-09-18 | Samsung Electronics Co., Ltd. | Electronic devices and memory management methods thereof |
US9792224B2 (en) | 2015-10-23 | 2017-10-17 | Intel Corporation | Reducing latency by persisting data relationships in relation to corresponding data in persistent memory |
US9824419B2 (en) * | 2015-11-20 | 2017-11-21 | International Business Machines Corporation | Automatically enabling a read-only cache in a language in which two arrays in two different variables may alias each other |
JP6740607B2 (ja) | 2015-12-18 | 2020-08-19 | 富士通株式会社 | シミュレーションプログラム、情報処理装置、シミュレーション方法 |
US10318295B2 (en) | 2015-12-22 | 2019-06-11 | Intel Corporation | Transaction end plus commit to persistence instructions, processors, methods, and systems |
JP2018049385A (ja) * | 2016-09-20 | 2018-03-29 | 東芝メモリ株式会社 | メモリシステムおよびプロセッサシステム |
JP7077648B2 (ja) | 2017-02-16 | 2022-05-31 | 富士電機株式会社 | 半導体装置 |
US10621103B2 (en) | 2017-12-05 | 2020-04-14 | Arm Limited | Apparatus and method for handling write operations |
US10481958B2 (en) | 2017-12-29 | 2019-11-19 | Intel IP Corporation | Speculative execution tag for asynchronous DRAM refresh |
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 |
WO2019246139A1 (en) * | 2018-06-18 | 2019-12-26 | Flc Technology Group Inc. | Method and apparatus for using a storage system as main memory |
US10915404B2 (en) | 2018-11-02 | 2021-02-09 | Arm Limited | Persistent memory cleaning |
US10909012B2 (en) * | 2018-11-12 | 2021-02-02 | H3 Platform, Inc. | System having persistent memory |
US11740928B2 (en) | 2019-08-26 | 2023-08-29 | International Business Machines Corporation | Implementing crash consistency in persistent memory |
US11928497B2 (en) | 2020-01-27 | 2024-03-12 | International Business Machines Corporation | Implementing erasure coding with persistent memory |
US20220197813A1 (en) * | 2020-12-23 | 2022-06-23 | Intel Corporation | Application programming interface for fine grained low latency decompression within processor core |
CN114356213B (zh) * | 2021-11-29 | 2023-07-21 | 重庆邮电大学 | 一种numa架构下nvm磨损均衡的并行空间管理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
US20070198781A1 (en) * | 2006-02-22 | 2007-08-23 | David Dice | Methods and apparatus to implement parallel transactions |
US20070271445A1 (en) * | 2003-02-13 | 2007-11-22 | Sun Microsystems, Inc. | Selectively monitoring stores to support transactional program execution |
US20120144119A1 (en) * | 2010-12-07 | 2012-06-07 | Serebrin Benjamin C | Programmable atomic memory using stored atomic procedures |
CN102741806A (zh) * | 2009-12-15 | 2012-10-17 | 英特尔公司 | 使用缓冲存储加速事务的机构 |
US20130013899A1 (en) * | 2011-07-06 | 2013-01-10 | International Business Machines Corporation | Using Hardware Transaction Primitives for Implementing Non-Transactional Escape Actions Inside Transactions |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0567355B1 (en) * | 1992-04-24 | 2001-09-19 | Compaq Computer Corporation | A method and apparatus for operating a multiprocessor computer system having cache memories |
JPH1196062A (ja) * | 1997-09-19 | 1999-04-09 | Hitachi Ltd | ディレクトリ・アクセス方法 |
US7882339B2 (en) * | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
US7937534B2 (en) | 2005-12-30 | 2011-05-03 | Rajesh Sankaran Madukkarumukumana | Performing direct cache access transactions based on a memory access data structure |
US8180977B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory in out-of-order processors |
US20080005504A1 (en) * | 2006-06-30 | 2008-01-03 | Jesse Barnes | Global overflow method for virtualized transactional memory |
WO2009122694A1 (ja) | 2008-03-31 | 2009-10-08 | パナソニック株式会社 | キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム |
US8219741B2 (en) * | 2008-10-24 | 2012-07-10 | Microsoft Corporation | Hardware and operating system support for persistent memory on a memory bus |
US8627017B2 (en) * | 2008-12-30 | 2014-01-07 | Intel Corporation | Read and write monitoring attributes in transactional memory (TM) systems |
DE112009005006T5 (de) * | 2009-06-26 | 2013-01-10 | Intel Corporation | Optimierungen für ein ungebundenes transaktionales Speichersystem (UTM) |
US8489864B2 (en) * | 2009-06-26 | 2013-07-16 | Microsoft Corporation | Performing escape actions in transactions |
KR101639672B1 (ko) * | 2010-01-05 | 2016-07-15 | 삼성전자주식회사 | 무한 트랜잭션 메모리 시스템 및 그 동작 방법 |
JP2011154547A (ja) | 2010-01-27 | 2011-08-11 | Toshiba Corp | メモリ管理装置及びメモリ管理方法 |
CN101777154A (zh) * | 2010-02-01 | 2010-07-14 | 浪潮集团山东通用软件有限公司 | 一种工作流管理系统中工作流数据的持久化方法 |
US20110208921A1 (en) * | 2010-02-19 | 2011-08-25 | Pohlack Martin T | Inverted default semantics for in-speculative-region memory accesses |
US8402227B2 (en) * | 2010-03-31 | 2013-03-19 | Oracle International Corporation | System and method for committing results of a software transaction using a hardware transaction |
US20120079245A1 (en) * | 2010-09-25 | 2012-03-29 | Cheng Wang | Dynamic optimization for conditional commit |
US8352688B2 (en) * | 2010-11-15 | 2013-01-08 | Advanced Micro Devices, Inc. | Preventing unintended loss of transactional data in hardware transactional memory systems |
EP2761464B1 (en) * | 2011-09-30 | 2018-10-24 | Intel Corporation | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes |
US20130091331A1 (en) * | 2011-10-11 | 2013-04-11 | Iulian Moraru | Methods, apparatus, and articles of manufacture to manage memory |
US20140317337A1 (en) * | 2011-12-30 | 2014-10-23 | Leena K. Puthiyedath | Metadata management and support for phase change memory with switch (pcms) |
US9471622B2 (en) * | 2012-04-30 | 2016-10-18 | International Business Machines Corporation | SCM-conscious transactional key-value store |
US20140040588A1 (en) * | 2012-08-01 | 2014-02-06 | International Business Machines Corporation | Non-transactional page in memory |
-
2013
- 2013-03-15 US US13/843,760 patent/US9547594B2/en active Active
-
2014
- 2014-03-14 GB GB1404562.9A patent/GB2515146B/en active Active
- 2014-03-14 JP JP2014052025A patent/JP2014182836A/ja active Pending
- 2014-03-14 DE DE102014003668.5A patent/DE102014003668A1/de active Pending
- 2014-03-17 CN CN201410098020.7A patent/CN104050112B/zh active Active
- 2014-03-17 CN CN201710353595.2A patent/CN107193756B/zh active Active
- 2014-03-17 KR KR1020140031292A patent/KR101673280B1/ko active IP Right Grant
- 2014-03-17 BR BR102014006298-0A patent/BR102014006298A2/pt active Search and Examination
-
2016
- 2016-02-12 JP JP2016025122A patent/JP6121010B2/ja active Active
- 2016-11-01 KR KR1020160144211A patent/KR101779723B1/ko active IP Right Grant
-
2017
- 2017-01-17 US US15/408,324 patent/US9817758B2/en active Active
- 2017-03-28 JP JP2017062809A patent/JP6371431B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
US20070271445A1 (en) * | 2003-02-13 | 2007-11-22 | Sun Microsystems, Inc. | Selectively monitoring stores to support transactional program execution |
US20070198781A1 (en) * | 2006-02-22 | 2007-08-23 | David Dice | Methods and apparatus to implement parallel transactions |
CN102741806A (zh) * | 2009-12-15 | 2012-10-17 | 英特尔公司 | 使用缓冲存储加速事务的机构 |
US20120144119A1 (en) * | 2010-12-07 | 2012-06-07 | Serebrin Benjamin C | Programmable atomic memory using stored atomic procedures |
US20130013899A1 (en) * | 2011-07-06 | 2013-01-10 | International Business Machines Corporation | Using Hardware Transaction Primitives for Implementing Non-Transactional Escape Actions Inside Transactions |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10489158B2 (en) | 2014-09-26 | 2019-11-26 | Intel Corporation | Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores |
CN105912486A (zh) * | 2016-04-27 | 2016-08-31 | 联想(北京)有限公司 | 信息处理方法及处理器 |
CN107315537A (zh) * | 2016-04-27 | 2017-11-03 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
KR20170122466A (ko) * | 2016-04-27 | 2017-11-06 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR102593362B1 (ko) * | 2016-04-27 | 2023-10-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN105912486B (zh) * | 2016-04-27 | 2019-03-29 | 联想(北京)有限公司 | 信息处理方法及处理器 |
CN107315537B (zh) * | 2016-04-27 | 2020-08-14 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN109643299A (zh) * | 2016-09-29 | 2019-04-16 | 英特尔公司 | 在具有现有tlp定义的pcie上的持久存储器写入语义 |
CN109643299B (zh) * | 2016-09-29 | 2023-08-04 | 英特尔公司 | 在具有现有tlp定义的pcie上的持久存储器写入语义 |
CN110073355B (zh) * | 2016-12-13 | 2023-05-23 | 亚马逊技术股份有限公司 | 用于提供安全执行环境的服务器和用于保护服务器上的非易失性存储器中的固件的方法 |
CN110073355A (zh) * | 2016-12-13 | 2019-07-30 | 亚马逊技术股份有限公司 | 服务器上的安全执行环境 |
CN108459988A (zh) * | 2017-02-17 | 2018-08-28 | 英特尔公司 | 持续性远程直接存储器存取 |
CN116244216A (zh) * | 2023-03-17 | 2023-06-09 | 摩尔线程智能科技(北京)有限责任公司 | 缓存控制方法、装置、缓存行结构、电子设备和存储介质 |
CN116244216B (zh) * | 2023-03-17 | 2024-03-01 | 摩尔线程智能科技(北京)有限责任公司 | 缓存控制方法、装置、缓存行结构、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR20140113605A (ko) | 2014-09-24 |
US9817758B2 (en) | 2017-11-14 |
CN107193756A (zh) | 2017-09-22 |
JP6371431B2 (ja) | 2018-08-08 |
KR20160130199A (ko) | 2016-11-10 |
DE102014003668A1 (de) | 2014-09-18 |
US9547594B2 (en) | 2017-01-17 |
CN107193756B (zh) | 2020-12-01 |
BR102014006298A2 (pt) | 2018-02-14 |
US20140281240A1 (en) | 2014-09-18 |
GB201404562D0 (en) | 2014-04-30 |
KR101779723B1 (ko) | 2017-09-18 |
JP2016129041A (ja) | 2016-07-14 |
US20170123980A1 (en) | 2017-05-04 |
GB2515146A (en) | 2014-12-17 |
JP2017130229A (ja) | 2017-07-27 |
JP6121010B2 (ja) | 2017-04-26 |
JP2014182836A (ja) | 2014-09-29 |
KR101673280B1 (ko) | 2016-11-07 |
CN104050112B (zh) | 2017-06-20 |
GB2515146B (en) | 2016-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104050112A (zh) | 用于标记需要写回持久存储的非事务代码区的开头和结束的指令 | |
US11132298B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy having different operating modes | |
US10241912B2 (en) | Apparatus and method for implementing a multi-level memory hierarchy | |
KR101636634B1 (ko) | 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법 | |
CN103946826B (zh) | 用于在公共存储器通道上实现多级存储器层级的设备和方法 | |
CN103999038B (zh) | 用于在易失性存储器与非易失性存储器之间分布代码和数据存储的方法和设备 | |
KR101915073B1 (ko) | 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단 | |
CN104025060A (zh) | 支持近存储器和远存储器访问的存储器通道 | |
US20140229659A1 (en) | Thin translation for system access of non volatile semicondcutor storage as random access memory | |
CN104115230A (zh) | 高效pcms刷新机制背景 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |