首页> 中国专利> 用于标记需要写回持久存储的非事务代码区的开头和结束的指令

用于标记需要写回持久存储的非事务代码区的开头和结束的指令

摘要

提供了用于标记需要写回持久存储的非事务代码区的开头和结束的指令。所描述的处理器具有到非易失性随机存取存储器的接口和逻辑电路。该逻辑电路用于标识事务所修改的高速缓存行,该事务将易失性随机存取存储器看作该事务的持久存储。该逻辑电路还用于标识与事务不同的软件进程所修改的高速缓存行,该软件进程也将所述非易失性随机存取存储器看作持久存储。

著录项

  • 公开/公告号CN104050112A

    专利类型发明专利

  • 公开/公告日2014-09-17

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN201410098020.7

  • 发明设计人 T·威尔豪姆;

    申请日2014-03-17

  • 分类号G06F13/16;G06F12/08;G06F9/44;

  • 代理机构上海专利商标事务所有限公司;

  • 代理人毛力

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 01:14:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-06-20

    授权

    授权

  • 2014-10-22

    实质审查的生效 IPC(主分类):G06F13/16 申请日:20140317

    实质审查的生效

  • 2014-09-17

    公开

    公开

说明书

发明领域

本发明一般涉及计算机系统领域。更具体而言,本发明涉及一种用于实现 包括非易失性存储器层的多级存储器分层结构的装置和方法。

相关技术描述

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 FM 151B。

(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的一部分可被用作固件存储器。例如,BIOS  NVRAM172部分可被用来存储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用作系 统存储器、大容量存储以及可任选地用作固件存储器。在一个实施例中,NVRAM 142构成了计算机系统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 FM 151B。当这一点发生时,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 NVRAM 172。例如,在一个实施例中,图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中。在一个实施例中,在IMC 331接收到访问请求时,该请求的目标地址被解码以揭示该请求定向到存储器、 NVRAM大容量存储、还是I/O。如果它是存储器请求,则IMC331和/或MSC控 制器124根据目标地址进一步确定该请求定向到FM的高速缓存150B还是FM 151B。对于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;SATA 3.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,否则用来自持久存储NVRAM 551B的内容来替换这些高速缓存行或使这些高速缓存行无效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、磁或光卡或适于存储 电子指令的其它类型的机器可读介质。还可从远程计算机(例如,服务器)将 程序代码作为体现在传播介质中的数据信号(例如,经由通信链路(例如,网 络连接))下载至请求计算机(例如,客户机)。

在上述说明书中,已参考本发明具体示例实施例描述了本发明。然而,显 然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发 明的更宽泛精神和范围。因此,应当以说明性而非限制性的意味看待说明书和 附图。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号