使用标准DRAM和整合储存器的处理器与平台辅助的NVDIMM解决方案转让专利

申请号 : CN201680030427.3

文献号 : CN107636601A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : M.K.纳奇姆图M.J.库马尔G.弗吉斯

申请人 : 英特尔公司

摘要 :

用于实现使用标准DRAM和整合储存器的处理器与平台辅助的NVDIMM解决方案的方法和装置。该方法和装置使得能够在没有任何操作系统干预的情况下响应于检测到电力不可用事件或者操作系统错误或故障而自动地将DRAM设备诸如DIMM中的所选数据拷贝到持久存储设备诸如SSD。在一个方面中,一种平台包括电源和集成在电源中的或单独的临时电力源,诸如基于电容器的能量存储设备、小电池或二者的组合。当电力变得不可用时,临时电力源被用来继续向一个或多个电力保护域中的所选部件提供电力。存储在临时电力源中的能量足以向部件临时供电以使得DRAM数据能够被写入到持久存储设备。在系统重启时,先前存储的DRAM数据被恢复到最初从其拷贝数据的一个或多个DRAM设备。

权利要求 :

1.一种用于将计算机平台中的动态随机存取存储器(DRAM)中的数据保存到持久存储设备的方法,其中该计算机平台包括用来在正常操作期间向计算机平台中的部件提供电力的主电力源,该计算机平台包括持久存储设备并且在正常操作期间运行操作系统,该方法包括:检测在其中电力不再由主电力源供应给计算机平台的电力不可用状况;以及响应于检测到该电力不可用状况,在没有操作系统干预的情况下自动地将DRAM中的数据拷贝到持久存储设备。

2.根据权利要求1所述的方法,其中该计算机平台包括处理器,其包括多个高速缓存,该方法进一步包括在将DRAM中的数据拷贝到持久存储设备之前将高速缓存中的数据刷新到DRAM。

3.根据权利要求1或2所述的方法,进一步包括:

将DRAM地址空间的至少一个区域限定成包括持久DRAM;

在持久存储设备上配置该持久DRAM中的数据要被存储在其中的持久存储区;以及将从该持久DRAM拷贝的数据存储到持久存储区。

4.根据前述权利要求中的任一项所述的方法,其中该计算机平台包括电力保护直接存储器访问(DMA)引擎,该方法进一步包括编程电力保护DMA引擎以将DRAM中的数据拷贝到持久存储设备。

5.根据前述权利要求中的任一项所述的方法,其中该计算机平台进一步包括:

处理器,其包括:

包括第一存储器控制器的至少一个存储器控制器;以及

包括直接存储器访问(DMA)引擎的输入-输出(IO)接口;

在电力不可用状况之前将要保存的数据存储在其中的至少一个DRAM设备,其经由第一存储器控制器至DRAM设备链路而操作耦合至第一存储器控制器;以及将持久存储设备耦合至IO接口的IO链路,

其中该方法进一步包括响应于检测到电力不可用状况而向计算机平台中的多个电力保护部件提供临时电力,其中该多个电力保护部件包括第一存储器控制器、DMA引擎、至少一个DRAM设备、第一存储器控制器至DRAM设备链路、将持久存储设备耦合至IO接口的IO链路、以及持久存储设备。

6.根据权利要求5所述的方法,其中经由基于电容器的电力电路和电池中的至少一个来提供临时电力。

7.根据前述权利要求中的任一项所述的方法,进一步包括:

在平台初始化操作期间确定持久存储设备是否存储先前响应于电力不可用状况而从DRAM拷贝到该持久存储设备的任何DRAM数据;以及将DRAM数据恢复到从其拷贝DRAM数据的一个或多个DRAM设备。

8.根据权利要求7所述的方法,其中DRAM数据在被拷贝到持久存储设备之前被以置乱格式存储,并且使用非置乱格式恢复该DRAM数据。

9.根据前述权利要求中的任一项所述的方法,其中通过使用系统管理中断(SMI)以及一个或多个系统管理模式(SMM)处理程序而在不实施操作系统干预的情况下自动地将DRAM中的数据拷贝到持久存储设备,其中响应于检测到电力不可用状况而调用SMI,其分派一个或多个SMM处理程序以通过将DRAM数据拷贝到持久存储设备来服务SMI。

10.一种具有主电力源的计算平台,包括:

处理器,其包括:

包括第一存储器控制器的至少一个存储器控制器;以及

包括直接存储器访问(DMA)引擎的输入-输出(IO)接口;

包括第一DRAM设备的至少一个动态随机存取存储器(DRAM)设备,其经由第一存储器控制器至DRAM设备链路而操作耦合至第一存储器控制器;

经由IO链路操作耦合至IO接口的持久存储设备;以及

临时电力源,其被操作耦合至第一存储器控制器、持久存储设备、IO链路、第一DRAM设备、和第一存储器控制器至DRAM设备链路中的每一个,其中临时电力源被配置成在其中主电力源不再向计算机平台供应电力的状况的事件中向该第一存储器控制器、持久存储设备、IO链路、第一DRAM设备、和第一存储器控制器至DRAM设备链路中的每一个供应电力达有限时间段;

其中该计算机平台被配置成检测在其中主电力源不再向计算机平台供应电力的状况,并且其中响应于检测到该状况,IO接口被配置成经由DMA引擎将存储在第一DRAM中的数据拷贝到持久存储设备。

11.根据权利要求10所述的计算机平台,其中计算平台被进一步配置成在执行的平台初始化操作期间通过经由DMA引擎将数据从持久存储设备拷贝到第一DRAM设备而恢复先前已从第一DRAM设备拷贝到持久存储设备的数据。

12.根据权利要求10或11所述的计算平台,其中该计算平台包括多个DRAM设备,其包括DRAM双列直插式存储器模块(DIMM),每一个都经由存储器控制器至DRAM DIMM链路耦合至存储器控制器,其中临时电力源被配置成在其中主电力源不再向计算机平台供应电力的状况的事件中向多个DRAM DIMM、每个存储器控制器和每个存储器控制器至DRAM DIMM链路中的每一个供应电力;以及其中响应于检测到在其中主电力源不再向计算机平台供应电力的状况,IO接口被配置成经由DMA引擎将存储在多个DRAM DIMM中的每一个上的数据拷贝到持久存储设备。

13.根据权利要求12所述的计算平台,其中该处理器包括至少两个存储器控制器,每个存储器控制器都被耦合到至少两个DRAM DIMM。

14.根据权利要求12所述的计算机平台,其中计算平台被进一步配置成在执行的平台初始化操作期间通过经由DMA引擎将先前拷贝的数据从持久存储设备拷贝到各DRAM DIMM中的每一个而恢复先前已从多个DRAM DIMM中的每一个拷贝到持久存储设备的数据,其中在数据恢复时每个DRAM DIMM存储在其中主电力源不再向计算机平台供应电力的状况的发生之前其被存储的相同数据。

15.根据权利要求10-14中的任一项所述的计算机平台,其中该IO链路包括快速外设控制互连(PCIe)链路。

16.根据权利要求10-15中的任一项所述的计算机平台,其中该持久存储设备包括固态驱动器(SSD)。

17.根据权利要求10-16中的任一项所述的计算机平台,其中该处理器包括至少一个处理器高速缓存,并且管理写入等待队列,并且其中响应于检测到不可用电力状况,在将该至少一个处理器高速缓存和写入等待队列中的数据从第一DRAM设备拷贝到持久存储设备之前将该数据刷新到第一DRAM设备。

18.根据权利要求10-17中的任一项所述的计算机平台,其中该处理器包括具有多个核的中央处理器单元(CPU),并且该IO接口被耦合至多个IO链路,并且其中响应于检测到不可用电力状况,该处理器进入其中除了电力保护链路之外的所有IO链路都使其电力降低的掉电状态,并且核以降低的电力状态来操作。

19.根据权利要求10-18中的任一项所述的计算机平台,其中在完成将数据从DRAM设备拷贝到持久存储设备时,存储在持久存储设备中的元数据被更新以指示数据已经被成功地保存到持久存储设备。

20.一种处理器,其被配置成安装在包括具有主电力输入源的电源、一个或多个动态随机存取存储器(DRAM)设备和持久存储设备的计算机平台中,该处理器包括:多个处理器核,其被操作耦合至互连;

包括第一存储器控制器和存储器控制器接口的至少一个存储器控制器,其被操作耦合至该互连并且被配置成当处理器被安装在计算机平台中时与第一存储器控制器至DRAM设备链路接合,所述第一存储器控制器至DRAM设备链路在相对端处耦合到第一DRAM设备;

输入-输出(IO)接口,其被操作耦合至该互连并且包括用于持久存储设备所耦合至的IO链路的链路接口;

直接存储器访问(DMA)引擎;以及

逻辑,被配置成在处理器的操作时执行以下各项;

检测在其中主电力输入源不再向电源供应电力的电力不可用状况;以及响应于检测到该状况,将存储在第一DRAM设备中的DRAM数据拷贝到持久存储设备。

21.根据权利要求20所述的处理器,进一步包括直接存储器访问(DMA)引擎,并且其中经由DMA引擎将存储在第一DRAM设备中的DRAM数据拷贝到持久存储设备。

22.根据权利要求20或21所述的处理器,其中该处理器被配置成实施系统管理中断(SMI)并以系统管理模式(SMM)来操作,并且进一步地其中该处理器被配置成在操作时并且响应于电力不可用状况而调用SMI并且分派一个或多个SMM处理程序来通过将存储在第一DRAM设备中的DRAM数据拷贝到持久存储设备而服务SMI。

23.根据权利要求20-22中的任一项所述的处理器,其中该处理器进一步包括APIC(高级可编程中断控制器)逻辑块和电力控制单元(PCU)中的至少一个,并且响应于检测到该状况,APIC逻辑块和PCU中的至少一个被配置成向处理器中的所选部件提供电力以使得DRAM数据能够被拷贝到持久存储设备,同时降低去到处理器上的未被采用来促进经由DRAM数据拷贝数据到持久存储设备的传送的其他部件的电力。

24.根据权利要求20-23中的任一项所述的处理器,其中计算平台包括多插口平台,其具有多个插口并且包括具有本地插口的第一插口和具有远程插口的第二插口以及第一插口与第二插口之间的插口至插口互连,其中该处理器被配置成使处理器的各实例安装在相应的本地和远程插口中,并且其中该处理器进一步包括被配置成耦合到插口至插口互连的插口至插口互连接口,并且进一步地其中该处理器包括逻辑,所述逻辑被配置成响应于检测到电力不可用状况且当处理器被安装在本地插口中时执行以下各项:将数据从经由处理器上的一个或多个存储器控制器访问的一个或多个DRAM设备拷贝到持久存储设备;以及与远程插口中的处理器接合以便将数据从经由安装在远程插口中的处理器上的一个或多个存储器控制器访问的一个或多个DRAM设备拷贝到持久存储设备。

25.根据权利要求20-24中的任一项所述的处理器,其中在完成将数据从第一DRAM设备拷贝到持久存储设备时,该处理器被配置成通过IO链路发送数据以更新存储在持久存储设备中的元数据从而指示数据已经被成功保存到持久存储设备。

说明书 :

使用标准DRAM和整合储存器的处理器与平台辅助的NVDIMM解

决方案

技术领域

[0001] 本发明涉及使用标准DRAM和整合储存器的处理器与平台辅助的NVDIMM解决方案。

背景技术

[0002] 对计算来说存储器与处理器其自身一样都是无处不在的,并且存在于每个计算设备中。通常存在两类存储器——易失性存储器和非易失性(NV)存储器。最常见的易失性存储器类型是动态随机存取存储器(DRAM),其是基本上每个计算设备的常见部件。一般来说,DRAM可能被实施为处理器外部的单独部件或者它可能被集成在处理器上,诸如在片上系统(SoC)架构中。例如,对于个人计算机、膝上型电脑、笔记本等等中的DRAM的最常见封装类型是双列直插式存储器模块(DIMM)和单列直插式存储器模块(SIMM)。同时,智能电话和平板电脑可采用具有管芯上DRAM的处理器或者以其他方式使用一个或多个DRAM芯片,该一个或多个DRAM芯片通过使用倒装芯片封装等等而被紧密耦合至处理器。
[0003] 在早期PC年间,计算机的基本输入和输出系统(BIOS)被存储在包括一种类型的非易失性存储器的只读存储器(ROM)芯片上。这些ROM芯片中的一些是真正只读的,而其他使用可擦除可编程ROM(EPROM)芯片。随后,“闪存”——一种类型的电可擦除可编程ROM(EEPROM)技术被开发,并且变成一种用于NV存储器的标准技术。然而常规EPROM必须在重写之前被完全擦除,闪存不用,因此提供远远大于EPROM的可用性。此外,闪存提供相比于常规EEPROM的若干优点,并且照此EEPROM通常被分类为闪存EEPROM和非闪存EEPROM。
[0004] 存在两种类型的闪存,其是在NAND和NOR逻辑门之后的名字。可以使用存储器单元的块(或页)对NAND类型闪存进行写入和读取。NOR类型闪存允许单个字节被写入或读取。一般来说NAND闪存比NOR闪存更常见,并且被用于如USB闪存驱动器(亦称拇指驱动器)、存储器卡和固态驱动器(SSD)一样的设备。
[0005] DRAM通常具有比闪存更高得多的性能,包括显著更快的读取和写入访问。以每存储器单元为度,它们也比闪存显著更贵。DRAM技术的主要缺点是它需要电力来存储单元数据。一旦电力被去除,DRAM单元就会很快丢失其存储数据的能力。闪存技术的一个优点是当电力被去除时它可以存储数据。然而,闪存比DRAM明显更慢,并且给定的闪存单元仅可以被擦除和重写有限次数,诸如100,000个擦除循环。
[0006] 在最近几年中,已引入了一种被叫作NVDIMM的混合存储器模块。该NVDIMM支持DRAM技术对于快速读取和写入访问的优点和NAND存储器的非易失性特征二者。如在图1中所示,这通常通过在DIMM 102的一侧上安装一个或多个DRAM设备100(例如存储器芯片)并且在DIMM的另一侧上安装一个或多个NAND设备104和定制现场可编程门阵列(FPGA)106或专用集成电路(ASIC)(未被示出)来完成。NVDIMM经由超级电容器连接器108与“超级”电容器连接,该超级电容器充当DIMM电力故障时的临时电力源。当系统电力下降时,驻留在DRAM中的数据被写入到NAND存储器并且随后在下一启动的存储器初始化期间被恢复回到DRAM。
[0007] 图2示出具有处理器202的计算机系统200,该处理器202包括中央处理单元(CPU)204、两个集成存储器控制器(iMC)206和208、以及多个PCIe(快速外设部件互连)链路211被耦合至其的集成输入-输出(IIO)接口210。iMC 206被用来控制经由相应链路216和218(也被标记为Ch(通道)1和Ch(通道)2)对一对DRAM DIMM 212和214的访问。iMC 208被用来控制经由相应链路224和226对一对NVDIMM 220和222的访问。NVDIMM 220被附接至超级电容器
228,而NVDIMM 222被附接至超级电容器230。超级电容器228和230中的每一个在平台上电期间被充电并且在电力故障时将电力供应给其相应的NVDIMM 220和222。当检测到电力故障时,FPGA 106检测电力故障并且将DRAM 100内容拷贝到用于NVDIMM 220和222中的每一个的NAND 104。在平台通电期间,在MRC初始化DRAM之后,MRC请求FPGA 106从NAND 104恢复DRAM内容。
[0008] 关于这种解决方案存在若干缺点。因为典型的NVDIMM在一侧上具有DRAM设备并且在另一侧上具有NAND设备和FPGA或ASIC以用于存储DRAM内容。因此,归因于被NAND和FPGA/ASIC占用的实际地块,总的DIMM存储器尺寸被减小。如上文提到的,当电力故障时,DRAM数据被写入到NAND然后随后被写回到DRAM。为了确保信号完整性和电力效率(被称为热点),使用地址/数据置乱种子。然而,地址/数据置乱种子可在启动之间改变以避免恶意程序决定性地引起总线效率。因此NVDIMM通常使用一种模式,在这种模式下地址/数据置乱被禁用,从而导致存储器子系统中的热点或更多错误。
[0009] 用于NAND设备管理的技术通常非常基本,这造成低质量RAS(可靠性,可用性,和可服务性)。当DRAM或NAND设备故障时,整个NVDIMM需要被更换。不存在限定超级电容器尺寸、放置、充电时间等等的标准,结果是不同的平台解决方案。而且,不存在一致的指令集,这造成不同的存储器参考代码(MRC)支持。总的来说,现今存在的NVDIMM解决方案的成本是类似尺寸DRAM DIMM的成本的3倍到4倍。此外,存储在NVDIMM上的数据不被保护,因此将NVDIMM从一个系统移动到另一个系统可能实现对存储在NVDIMM上的可能敏感数据的访问。

附图说明

[0010] 当结合附图来理解时,本发明的前述方面以及许多随之而来的优点将变得更容易领会,因为通过参考下面的详细描述它们变得更好理解,在所述附图中遍及各个视图相似的参考数字指代相似部件,除非另外规定:图1是图示常规NVDIMM的正面和背面的示意图;
图2是使用一对超级电容器的现有NVDIMM解决方案的示意图;
图3a和3b是根据在其中超级电容器被实施在电源中的一个实施例的用于使用常规
DRAM DIMM和持久存储设备来实施NVDIMM解决方案的第一系统的示意图,其中图3a描绘在正常电力操作下的系统,并且图3b描绘当从电源去除AC电力输入时经由超级电容器供电的电力保护域部件;
图4a和4b是根据在其中超级电容器与电源分离的一个实施例的用于使用常规DRAM DIMM和持久存储设备来实施NVDIMM解决方案的第二系统的示意图,其中图4a描绘在正常电力操作下的系统,并且图4b描绘当从电源去除AC电力输入时经由超级电容器供电的电力保护域部件;
图5a和5b描绘处理器的一个实施例的细节,其中图5a描绘当在正常电力输入下操作的处理器,并且图5b描绘一种状况,在该状况下对电源的输入AC电力故障或另外不可用;
图6是根据一个实施例的图示在将DRAM内容存储到持久备用存储设备的平台的通电过程期间执行的操作和逻辑的流程图;
图7是根据一个实施例的图示在平台电力故障或掉电期间执行的操作的流程图;
图7a是根据一个实施例的图示响应于操作系统故障或错误而执行的操作的流程图;
图8a示出根据一个实施例的包括两个节点的多插口平台,所述两个节点均被配置成将持久DRAM数据备份到用于该节点的持久存储设备;
图8b示出图8a的多插口平台的实施方式,在所述实施方式中来自两个节点的DRAM数据被拷贝到节点之一上的持久存储设备;
图9是根据一个实施例的示出一对处理器当安装在4插口计算机平台的插口2和3中时的内部架构的细节的示意性方块图;以及
图10是根据一个实施例的采用SMI以及一个或多个SMM处理程序来将高速缓存中的数据刷新到DRAM并且将持久DRAM拷贝到持久存储设备的系统的示意图。

具体实施方式

[0011] 在本文中描述了用于实现使用标准DRAM和整合储存器的处理器与平台辅助的NVDIMM解决方案的方法和装置的实施例。在下面的描述中,阐述了许多具体细节来提供对本发明的实施例的透彻理解。然而,相关领域的技术人员将会认识到,可以在没有所述具体细节中的一个或多个的情况下、或者利用其他方法、部件、材料等等来实践本发明。在其他实例中,公知的结构、材料或操作没有被详细示出或描述以避免使本发明的各方面模糊。
[0012] 遍及该说明书对“一个实施例”或“实施例”的参考意指结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,短语“在一个实施例中”或“在实施例中”在遍及该说明书的各个地方中的出现不一定都指代同一实施例。此外,在一个或多个实施例中可能以任何适当的方式来组合该特定特征、结构或特性。
[0013] 为了清楚起见,本文图中的各个部件还可通过它们在图中的标记而不是通过特定参考数字来指代。此外,指代特定类型的部件的参考数字(如与特定部件相对)可利用参考数字后面跟着意指“典型的”的“(typ)”来示出。将理解,这些部件的配置将对于可能存在但为了简单且清楚起见而没有在绘制的图中示出的相似部件或者没有利用单独的参考数字标记的另外的相似部件是典型的。相反,“(typ)”不应该被解释为意指该部件、元件等等典型地被用于其公开的功能、手段、目的等等。
[0014] 如本文中所使用的,术语SSD(固态盘)被用于描述一种类型的持久存储设备,诸如但不限于PCIe SSD、SATA(串行高级技术附件)SDD、USB(通用串行总线)SSD、存储器设备(MD)、或可以在合理的时间量内存储数据的任何其他类型的存储设备。这还可以包括基于网络和光纤通道的储存器。作为示例并且不受限制,使用PCIe互连和接口来说明本文中的实施例。然而,PCIe的使用仅仅是示例性的,因为可以使用其他类型的互连和接口,通常包括任何存储器或存储链路,诸如但不限于DDR3、DDR4、DDR-T、PCIe、SATA、USB、网络、等等。
[0015] 根据现在描述的实施例的各方面,提供一种解决如在背景技术章节中描述的与NVDIMM相关联的缺陷的非易失性电力故障(或电力不可用)存储器保持机制。简言之,该机制在检测到电力故障/电力不可用状况或操作系统错误/故障时采用持久存储器设备(诸如SSD)来将所选数据(或所有数据)备份在DRAM DIMM(或其他DRAM设备)上,并且在随后系统初始化期间从该持久存储设备恢复DRAM数据。在该解决方案的实施例中,DRAM DIMM、存储器控制器、使与持久存储设备通信的处理器与DMA(直接存储器访问)引擎(存储器拷贝引擎)链接的IO链路被电力保护,以使得在电力故障或电力不可用状况的情况下为它们提供临时电力。在一个实施例中,当平台电力故障/变得不可用时,DMA引擎检测到该状况并从DRAM DIMM读取DRAM内容且将数据写入到持久存储设备。在平台通电期间,BIOS和/或固件(FW)读取存储在持久存储设备上的数据并且将数据恢复到DRAM(包括任何未校正的存储器错误)。
[0016] 图3a和3b示出根据一个实施例的用于实施该解决方案的系统300的所选部件。系统300包括处理器302,其包括CPU 304、两个iMC 306和308、以及包括DMA引擎312的IIO接口310。iMC 306被用来控制经由相应iMC到DRAM DIMM链路318和320对一对DRAM DIMM 314和
316的访问。iMC 308被用来控制经由相应iMC到DRAM DIMM链路326和328对一对DRAM DIMM 
322和324的访问。将包括SSD或MD的存储设备330经由PCIe(如果是SSD的话)或存储器设备(如果是MD的话)链路332通信耦合至IIO接口310。
[0017] 系统300进一步包括电源334,其包括电力调节电路336和超级电容器338。在所图示的实施例中,电源334从AC(交流电)源340接收输入电力;可选地,输入电力可从电池来接收。对大部分电源来说常见的电力调节电路被用来提供一个或多个稳定且干净的电压输出,其经由计算机平台上的电路和/或布线耦合以便将处于适当DC(直流电)电压的电压输入提供给计算机平台上的各种部件,诸如在本文图中所描绘的。附加电路(没有被单独示出)通常被用来将AC输入转换成DC输出并且将电压从120 VAC或另一AC输入电压逐步下降,如本领域中所公知的。
[0018] 在正常操作期间,电源334供应适当的DC电压以为各种平台电路和部件供电。在去除AC源340或电池源时,电源将正常地停止向平台电路和部件提供电力。然而,电源334被配置成在正常操作期间对超级电容器338充电以使得在来自AC源340或电池源的输入电力被去除的情况下存储在超级电容器中的能量可以被用来向平台上的所选部件和电路临时供应电力,如图3b中所示。在所图示的实施例中,输入DC电压作为来自电力调节电路336的一个或多个输出而被提供。然而,这仅仅是示例性配置并且不是限制性的,因为可以采用其他电力调节电路,其或者被包括在电源334中或者在平台上的别的地方。
[0019] 除了基于电容器的能量存储设备之外,可能利用其他类型的临时能量存储设备,或者可能利用不同类型的临时能量存储设备的组合。例如,可代替本文图中所示的超级电容器而使用小电池作为临时电力源,其能够供应足以使适用数据能够从DRAM拷贝到持久储存器的电力。备选地,可以使用基于电容器的能量存储设备和电池的组合。
[0020] 如在图3b中进一步示出的,电力调节电路336的一个或多个输出被耦合(或者直接或者经由没有被示出的附加电路)至DRAM DIMM 314、316、322和324、iMC 306和308、iMC到DIMM链路318、320、326和328、DMA引擎312、PCIe/PLM链路332、以及存储设备330中的每一个。如将在下面进一步详细讨论和图示的,去到这些部件中的每一个的输入电力可以作为直接输入被提供,或者可以通过为了简单和清楚起见没有在图3b中示出的其他电路分配和/或控制。如由交叉影线图案所指定的,DRAM DIMM 314、316、322和324、iMC 306和308、iMC到DIMM链路318、320、326和328、DMA引擎312、PCIe/PLM链路332、以及存储设备330中的每一个都是电力保护域的构件。
[0021] 一般来说,对于系统或平台的(一个或多个)电力保护域将包括DRAM设备、(一个或多个)iMC、连接至(一个或多个)持久存储设备的(一个或多个)IO链路、(一个或多个)SSD(或其他类型的持久存储设备)、以及DMA引擎,其可被实施为硬件或者硬件和固件的组合。此外,如果(一个或多个)微控制器被用于辅助对DMA引擎进行编程以将数据从DRAM拷贝到(一个或多个)存储设备,则该一个或多个微控制器(没有被示出)可被包括在电力保护域中。通常,iMC、PCIe链路接口和DMA引擎被集成在处理器插口内部。如下面参考图5a、5b和5c所讨论的,该处理器插口可以从作为单独电力输入的受保护电力域源接收电力并且当检测到正常处理器插口电力故障时可以使用该电力来为iMC/PCIe/IIO/DMA引擎逻辑供电。用于电力保护域的电力由电力源诸如超级电容器或电池/UPS(不间断电源)(未被示出)来供应。
可选地,处理器自身的板载逻辑诸如APIC逻辑块、微控制器和/或电力控制单元(PCU)可能被配置成选择性地为特定部件供电。
[0022] 在一个实施例中,当平台电力故障或者以其他方式被去除(例如与计划的平台关闭有关)时,仍通过超级电容器338和电力调节电路336为该电力保护域供电。一般来说,将基于在合理时间段(例如近似30秒到2分钟)内将适用DRAM内容保存到(一个或多个)持久存储设备所需的总电力来选择超级电容器。在一个实施例中,iMC到DRAM DIMM链路在电力保护域中操作直到DMA引擎完成了将所配置的DRAM存储器内容拷贝到持续存储设备(例如SSD)为止。类似地,IIO和(一个或多个)SSD之间的(一个或多个)IO链路(例如(一个或多个)PCIe链路)在电力保护域中操作直到DMA引擎完成了将DRAM内容拷贝到(一个或多个)SSD为止。
[0023] 作为一个选项,DRAM的所选部分可被存储。例如,如果系统具有64GB的DRAM并且用户对使仅32GB的DRAM成为持久的感兴趣且将另外的32GB用于堆栈和临时存储,则不需要将所有DRAM数据拷贝到SSD。在这种情况下,用户可能通过设置选项告知系统BIOS(或平台可能对该选项硬编码)选择使DRAM存储器的多少量成为持久的。基于尺寸选择,BIOS可能最佳地选择要被电力保护特定DRAM并将DRAM存储器的仅所选区域存储到SSD且在下一启动时将它们恢复回来。这允许基于需要持久的DRAM而不是用以覆盖系统中的总DRAM尺寸的填充SSD容量来选择存储器(SSD)容量。
[0024] 图4a和4b图示在其中超级电容器402和电力调节电路404与包括电力调节电路408的电源406分离的系统400。在图4a的正常操作配置下,电源406以类似于图3a和3b的电源334的方式向各种平台部件和电路供应电力。此外,在所图示的实施例中,电源406向超级电容器402提供输入DC电压。在一个实施例中,电力调节电路404提供一个或多个隔离输出,其在正常操作期间(也就是说,当电源406正从AC电力源340接收输入时)被关断。可选地,根据平台的操作状态,从电源电路408和404中出来的输出可能经由适用的电路被耦合或者以其他方式被部件和/或电路接收到,其被配置成提供通过电力调节电路408和/或电力调节电路404接收到的电力。
[0025] 图4b示出在其中AC电力源340已经故障或已经以其他方式去除到电源406的输入电力源的配置。在该配置下,超级电容器402(经由电力调节电路404)向受保护电力域中的所选部件提供输入电力,所述受保护电力域诸如由DRAM DIMM 314、316、322和324、iMC 306和308、iMC到DRAM DIMM链路318、320、326和328、DMA引擎312、PCIe/PLM链路332、以及持久存储设备330所描绘的。
[0026] 图5a、5b示出根据一个实施例的对于处理器302的配置的另外的细节。如图5a中所示,在处理器302上的多个电力输入引脚502处接收在正常操作条件期间由电源334提供的输入电力500。在所图示的实施例中,处理器302采用片上系统(SoC)架构,其除了iMCI 306和308以及IIO 310之外还包括多个核504、APIC块506和PCU 508。APIC块506管理处理器302的中断子系统,而到处理器302上的各种逻辑块和电路的电力输入由PCU 508来提供。例如,现代处理器具有降低到所选逻辑块和/或电路的电力的能力,诸如将核504中的一个或多个置于降低的电力模式或状态。
[0027] 图5b示出在其中AC电力源340已经故障或已经以其他方式被去除或不可用的配置。响应于检测到这样的事件,电力调节电路336被配置成将其电力输入切换到超级电容器338,并且经由电力输入引脚502继续向处理器302提供电力。然而,PCU 508中的逻辑被配置成在检测到在其中来自电源406的电力输入不可用的状况时选择性地为iMC 306和308、DMA引擎312以及PCIe/PLM接口510供电。
[0028] 图5c示出被配置成利用图4a和4b的系统400的处理器302a。在该配置下,处理器302a包括单独的电力输入引脚512,其经由超级电容器402和电力调节电路404被供应有输入电力514。在所图示的实施例中,电力输入引脚512之间的各种引脚(在处理器302a内)被内部连接到iMC 306和308、DMA引擎312以及PCIe/PLM接口510中的每一个。可选地,核504中的一个或多个可经由电力输入引脚512接收电力。作为选项,单独的电力输入引脚512中的所有或一部分可能被耦合至PCU 508,其进而可能被耦合至iMC 306和308、DMA引擎312以及PCIe/PLM接口510中的一个或多个。
[0029] 在一个实施例中,DMA引擎检测到插口电力故障状况并开始读取本地插口DIMM内容且(经由DMA写入)而存储到(一个或多个)电力保护SSD。现今,插口源地址解码器(SAD,亦称DRAM规则)允许各插口之间的存储器交错。然而,在电力故障状况下,在一个实施例中,它实施在其中整个DRAM内容都可以被DMA引擎访问的模式。
[0030] DRAM存储器范围可以被进一步分类为易失性和持久存储器区域。在一个实施例中,在电力故障或电力去除时,仅(一个或多个)持久存储器区域需要被存储到持久存储设备(例如SSD)。这降低SSD尺寸需求以及保存/恢复数据到SSD和保存/恢复来自SSD的数据所需的电力/时间。在一个实施例中,DMA引擎存储元数据(诸如DRAM尺寸、DRAM填充位置信息、DRAM交错、等等)以用于系统存储器配置在随后平台初始化操作中重建。
[0031] 在一个实施例中,DMA引擎将包括未校正的存储器错误状况的整个DRAM存储器内容拷贝到SSD。在一个实施例中,DMA引擎可包括用来对写入到SSD的数据加密的附加加密特征。例如,如果数据必须依赖特定平台则可基于平台特定TPM(可信平台模块)密钥来对数据加密。可选地,如果写入到DRAM的数据必须被保护以免于未经授权用户,则诸如密码短语之类的SSD安全特征可被启用。
[0032] 在前述过程的变型中,在一个实施例中响应于检测到电力故障/不可用状况,SMI(系统管理中断)被发信号通知BIOS刷新所有(一个或多个)处理器高速缓存然后向DMA引擎发送进入电力故障模式的信号以将DRAM内容保存到SSD。在下面参考图10来描述SMI的使用的另外的细节。
[0033] 当平台被重新启动时,平台BIOS/FW初始化DIMM和SSD并且检测所存储的存储器图像和元数据且将它们恢复到(一个或多个)DIMM。在一个实施例中,SSD被划分成持久DRAM保存区和正常OS使用区以允许可被用于OS的未使用的DRAM备用容量。DRAM备用SSD分区可具有比起用于正常OS分区的那个单独的密码短语。在一个实施例中,为了额外的安全,DMA引擎和BIOS负责管理DRAM备用SSD分区密码短语。
[0034] 图6示出根据一个实施例的图示在将DRAM内容存储到持久备用存储设备(例如SSD)的平台的通电过程期间执行的操作和逻辑的流程图600。在下面的描述中,假定持久(即非易失性)存储器不跨插口交错并且每个插口都存在可用的DRAM备用存储。
[0035] 该过程在起始块602中开始,在该起始块602中平台被通电。在块604中以常规方式对DRAM初始化。接下来,在块606中为DRAM存储器创建系统物理地址(SPA)范围。在块608中基于系统配置策略或作为用户选项来选择一个或多个易失性存储器和持久存储器SPA范围。例如,特定电力保护PCIe或PLM链路或特定SSD选择可被采用以用于该操作。然后在块610中基于系统配置策略或用户选项(如果适用的话)来确定(一个或多个)DRAM备用存储设备。
[0036] 在块612中,初始化去到持久DRAM备用存储设备(例如SSD)的IO链路。在块614中,通过检查元数据来核查所选取的电力保护SSD以查看它是否包含任何现有的DRAM备用储存器。例如,该元数据可能在具有针对特定LBA(逻辑块地址)区域或针对特定文件或针对特定体积的平台密码短语的特定分区上。
[0037] 在判定块616中,做出是否存在任何DRAM备用元数据存在的确定。如果回答为否,则该逻辑继续进行到块618,在其中创建适用的元数据并且启用针对SDD的任何适用的平台特定安全相关的项。例如,元数据可包括针对将实施用于给定插口的持久数据尺寸。
[0038] 如果对判定块616的回答为是,或者在块618的操作被执行之后,则该逻辑继续进行到块620,在其中存储在SSD中的DRAM备用持久存储器与DRAM中所选的持久存储器区尺寸相匹配。如由判定块622所描绘的,如果不存在匹配,则判定块622的回答为否,并且逻辑继续进行到块624,在其中错误被标示且向用户提供用于重新配置平台和/或采取其他动作的选项。如果存在匹配,则判定块622的回答为是,并且逻辑继续进行到块626,在其中将存储在SSD中的DRAM数据连同持久DRAM内容保存状态、SSD SMART健康信息、等等恢复到包括未校正错误的(一个或多个)DRAM持久SPA范围。
[0039] 接下来,在块628中该平台等待直到(所有)(一个或多个)电力保护持久DRAM超级电容器被充电并且启用对电力故障特征的保存。在块630中,从操作系统隐藏SSD或者SSD上的电力保护持久分区。当电力故障时,可能通过供应凭证来重新启用SSD或分区再次用于存储数据。该过程在块632中完成,在块632中创建E820/ACPI表且将持久存储器范围和SMART健康状态呈现给操作系统。
[0040] 图7示出根据一个实施例的图示在平台电力故障或掉电期间执行的操作的流程图700。该过程流程在起始块702中开始,在该起始块702中发生平台电力故障或平台关闭。在块704中通过供应合适的凭证来重新启用DRAM备用存储SSD或分区。在块706中,(一个或多个)处理器高速缓存和写入等待队列被刷新以将(一个或多个)高速缓存和写入等待队列中的所有持久数据刷新到存储器(DRAM)。如果平台电源不具有足够的容量,则该操作被忽略且DMA引擎启用SSD且开始将数据从DRAM拷贝到SSD。
[0041] 在块708中,电力保护DMA引擎被编程为将DRAM的持久区拷贝到SSD。在检测到任何未校正或有毒的错误的状况下,将错误存储在元数据区中。在块710中,处理器进入掉电状态,在那里除了电力保护链路之外的所有PCIe链路被关掉、处理器到处理器链路(例如插口到插口链路)被关掉、且CPU核被关掉。一旦DMA引擎完成到SSD的DRAM拷贝,元件数据就被更新以便表明到SSD的持久DRAM保存操作已被成功完成,如在块714中所描绘的。在结束块714中完成该过程,在结束块714中进入最终平台关闭流程。
[0042] 如果平台电源加超级电容器具有足够的电力,则除了DRAM备用PCIe链路之外的所有PCIe链路都可能被关掉并且BIOS可以起动DMA引擎来开始将DRAM数据拷贝到SSD且使所有CPU核进入低电力状态。
[0043] 图8a和8b分别图示包括电力保护域且被配置成将DRAM数据自动存储到持久储存器且然后在随后启动操作时恢复DRAM数据的示例性多插口系统800a和800b。图8a和图8b中具有与前面的图中示出的那些部件相似编号的参考数字的部件执行类似功能。
[0044] 多插口系统800a包括一对节点(插口)A和B,每一个都具有与图3b和4b中示出的配置类似的配置。处理器302a和302b经由插口至插口互连802而在通信上链接。节点A和B中的每一个都从电源334接收电力输入,所述电源334向针对每个节点的部件和电路供应电力。一般来说,节点A和B中的每一个都独立操作并且包括用于将DRAM数据存储到相应持久存储设备330a和330b的完整设施。例如,响应于电力故障或电力源去除事件,包括DMA引擎312a的节点A中的逻辑将把节点A的DRAM DIMM中的适用DRAM数据拷贝到持久存储设备300a,而包括DMA引擎312b的节点B中的类似逻辑将把存储在节点B的DRAM DIMM中的一个或多个中的适用DRAM数据拷贝到持久存储设备300b。对于节点A和B中的每一个的存储器恢复操作类似于上面在流程图600中描述的那些。
[0045] 在图8b的系统800b中,两个节点A和B上的DRAM数据被拷贝到节点B上的持久存储设备330b。这部分地经由插口至插口互连802来促进,现在已经将该插口至插口互连802添加到受保护电力域。在一个实施例中,插口至插口互连802包括快速路径互连(QPI)链路。在另一实施例中,插口至插口互连802包括Keizer技术互连(KTI)链路。更一般地,可以使用任何现有的未来Keizer插口至插口互连。在处理器302a和302b的一个实施例(诸如下面参考图9所讨论的)中,插口至插口互连802被连接至也耦合到每个插口上的iMC 306和308的每个处理器上的环形互连。该互连可被配置成当处理器核处于降低电力状态时操作,从而使得数据能够从节点A上的DRAM DIMM传送至节点B上的持久存储设备330b。因为DMA引擎可以独立于处理器的核来操作,所以处理器302b上的处理器核也可以处于降低电力状态。
[0046] 在系统800b中,针对节点B以与的流程图600中描述的类似方式来恢复DRAM数据,而针对节点A被恢复的DRAM数据经由插口至插口互连802从节点B传递至节点A。在一个实施例中,被用于存储DRAM数据的持久存储设备包括针对节点A和B中的每一个的单独规定。例如,持久存储设备330b可包括用来存储针对节点A和B的DRAM数据的单独分区。此外,针对节点A和B中的每一个的与存储器配置有关的数据(例如SPA数据、ACPI表、凭证、各种元数据等等)也将被存储在持久存储设备330b中,或者否则将以在其中在DRAM拷贝和恢复操作期间所述数据可访问的方式存储在系统800b上。
[0047] 在图9中示出多插口系统900的一个实施例的另外的细节。系统900是高级系统架构的说明,该高级系统架构包括支持多个处理器核202的SoC处理器,该处理器核202中的每一个都耦合至环形互连上的相应节点204,所述环形互连在本文中被标记和称为环2和环3(对应于安装在尊敬地4插口平台的处理器插口2和3中的处理器)。为了简单起见,对于环3和环2互连的每一个的节点被示出为用单根线连接。如在细节906中所示的,在一个实施例中这些环形互连中的每一个都包括连接每个节点的单独的四组“导线”或电子路径,因此为环2和环3中的每一个形成四个环。在实际的实践中,存在对应于所图示的每根导线的多个物理电子路径。本领域技术人员将理解,本文中使用单根线来示出连接是为了简单和清楚,因为每个特定连接可能采用一个或多个电子路径。
[0048] 在系统900的情境下,可以通过使用独立的消息类来实施高速缓存一致性方案。在环形互连架构的一个实施例中,可通过针对每个消息类采用相应的导线来实施独立的消息类。例如,在前面提到的实施例中,环2和环3中的每一个都包括四条环形路径或导线,其在本文中被标记且称为AD、AK、IV和BL。相应地,因为消息是通过单独的物理互连路径发送的,所以从传输的观点来看它们彼此独立。
[0049] 在一个实施例中,数据以循环方式在各节点之间传递,例如,对于每个真实或逻辑时钟周期(其可能跨一个或多个实际真实时钟周期),数据从一个节点前进到环中的邻近节点。在一个实施例中,各种信号和数据可以围绕环在顺时针和逆时针方向二者上行进。一般来说,环2和环3中的节点可能包括缓冲或无缓冲节点。在一个实施例中,环2和环3中的节点中的至少一些是无缓冲的。
[0050] 环2和环3中的每一个都包括多个节点904。标记Cbo n(在这里n是数字)的每个节点都是对应于共享同一数字n(如由核的引擎号n所标识的)的处理器核的一个节点。还有在系统900中示出的其他类型的节点,包括QPI节点3-0、3-1、2-0和2-1、IIO节点、和PCIe节点。QPI节点3-0、3-1、2-0和2-1中的每一个都操作耦合至相应的QPI代理3-0、3-1、2-0和2-1。
IIO节点操作耦合至IIO接口310。类似地,PCIe节点操作耦合至PCIe接口912和914。进一步示出的是标记有“X”的许多节点;这些节点被用于定时目的。要注意,QPI、IIO、PCIe和X节点仅仅是示例性的一个实施方式架构,而其他架构可具有更多或更少的每种类型的节点或者根本没有。此外,其他类型的节点(没有被示出)也可被实施。在一些实施例(诸如本文各种图中所示的)中,IIO接口将包括一个或多个PCIe接口。
[0051] QPI代理3-0、3-1、2-0和2-1中的每一个都包括用于促进QPI分组在QPI代理以及它们耦合至的QPI节点之间的传送的电路和逻辑。该电路包括入口和出口缓冲器,其被描绘为入口缓冲器916、918、920和922、以及出口缓冲器924、926、928和930。
[0052] 系统900还示出两个附加QPI代理1-0和1-1,每一个都对应于CPU插口0和1的环上的QPI节点(环和节点二者都没有被示出)。如之前那样,每个QPI代理都包括入口和出口缓冲器,被示出为入口缓冲器932和934、以及出口缓冲器936和938。
[0053] 在维持多处理器(或多核)环境中的高速缓存一致性的情境中,采用各种机制来保证数据不被损坏。例如,在系统900中,对应于给定CPU的处理器核902中的每一个被提供对与该插口相关联的共享存储器存储的访问,其通常将包括封装为DIMM或SIMM的DRAM的一个或多个存储体。如上面所讨论的,用于系统的DRAM DIMM经由一个或多个存储器控制器来访问,所述存储器控制器诸如由存储器控制器0和存储器控制器1所描绘的,其被示出为分别连接至本地代理节点0(HA 0)和本地代理节点1(HA 1)。
[0054] 当处理器核中的每一个执行其相应代码时,将执行各种存储器访问。如被公知的,现代处理器采用一个或多个存储器高速缓存的级别来存储更靠近核的高速缓存的存储器线,因此实现对此类存储器的更快速访问。然而,这使将存储器从共享(即主)存储器存储拷贝到本地高速缓存成为必需,意味着在系统中可存在同一存储器线的多个拷贝。为了维持存储器完整性,采用高速缓存一致性协议,诸如MESI(共同的、独享的、共享的、无效的)或MESIF(共同的、独享的、共享的、无效的、转发的)。
[0055] 具有多个级别的高速缓存也是常见的,其中最靠近处理器核的高速缓存具有最少的延迟和最小的尺寸,并且更远离的高速缓存将更大但具有更多延迟。例如,典型的配置可能采用第一和第二级别高速缓存,通常被称为L1和L2高速缓存。另一常见配置可能进一步采用第三级别或L3高速缓存。
[0056] 在系统900的情境中,最高级别的高速缓存被称为最后级别的高速缓存或LLC。例如,如果L1和L2高速缓存也被采用,则对于给定核的LLC可能通常包括L3型高速缓存,或者如果仅有的另一高速缓存是L1高速缓存,则对于给定核的LLC可能通常包括L2型高速缓存。当然,这可能被扩展到另外的高速缓存级别,其中LLC对应于高速缓存的最后(即最高)级别。
[0057] 在图9的图示配置中,每个处理器核902都包括耦合至L1或L1/L2高速缓存944的处理引擎942,它们是该核“私有的”。同时,每个处理器核还与分配的LLC 946的“切片”共同定位,其中其他核中的每一个都可以访问所有分配切片。在一个实施例中,分配的LLC通过使用由对应地址范围划分的N个块而在N个核之间物理分配。在该分配方案中,所有N个核与所有N个LLC切片通信,使用地址散列来查找对于任何给定地址的“本地”切片。采用适当的互连电路来促进核与切片之间的通信;然而,为了简单和清楚起见在图9中没有示出此类电路。
[0058] 如进一步图示的,系统900中与处理器核902相关联的各节点904中的每一个也与高速缓存代理948相关联,该高速缓存代理948被配置成结合由该系统实施的一致高速缓存协议来执行与信号和数据发起以及接收有关的消息发送,其中每个高速缓存代理948都处置对应于映射到其并置LLC 946的地址的高速缓存相关的操作。此外,在一个实施例中,本地代理HA0和HA1中的每一个都采用相应的高速缓存过滤器950和952,并且各种高速缓存和本地代理访问并更新存储在相应目录中的高速缓存线使用数据,所述相应目录实施在共享存储器(未被示出)的一部分中。本领域技术人员将会认识到,可能使用其他技术来维持关于高速缓存线使用的信息。
[0059] 根据一个实施例,可以实施单个QPI节点来接合到一对插口至插口QPI链路以促进到邻近插口的一对QPI链路。这在逻辑上在图9以及本文其他绘图中通过虚线椭圆示出,该虚线椭圆包围同一插口内的一对QPI节点,从而指示该对节点可能被实施为单个节点。
[0060] 在一些实施例中,在上面参考流程图600和700讨论的DRAM拷贝和恢复操作期间,执行各种存储器访问和高速缓存存取操作以首先将L1/L2和LLC高速缓存(如果适用的话)中的高速缓存的存储器刷新到DRAM,将标记为持久的DRAM数据拷贝到持久存储设备,以及随后将持久DRAM数据恢复回到DRAM。根据特定实施方式(例如基于DMA引擎的方案、SMI/SMM处理程序方案等等),将在APIC 506和/或PCU 508的控制下向处理器上的各种部件提供电力。
[0061] 在一个实施例中,使用包括在各节点之间且跨QPI链路(如果适用的话)转发的消息的对应消息类来促进存储器业务,从而使得各种代理能够访问存储在DRAM(或高速缓存级别)中的数据并将该数据转发至其他代理。这使得“本地”插口上的一个或多个代理能够访问“远程”插口上的存储器中的数据。例如,在系统800b的情境中,节点B是本地插口且节点A是远程插口。因此,节点B上的代理可以向节点A上的代理(例如本地代理)发送请求访问经由节点B上的存储器控制器访问的DRAM中的数据的消息。作为响应,代理将检索所请求的数据并且经由一个或多个消息将其返回到请求的代理。在系统800b的情境中,系统900中处理器中的环被电力保护并且因此当平台的主电力源不可用时使其能够传送消息(包括包含在消息中的数据)。
[0062] 图10图示响应于检测到电力故障或电力源去除事件而采用SMI和系统管理模式(SMM)来将数据拷贝到持久存储设备330的系统1000。如上所述,在一个实施例中,SMI被用来在执行持久DRAM数据拷贝之前将(一个或多个)处理器高速缓存中的数据刷新到DRAM。在一个实施例中,如果来自超级电容器的足够电力可用,则使用处理器核中的一个经由SMM实现DRAM拷贝操作。
[0063] SMI和SMM以下面的方式来操作。响应于SMI中断,处理器存储其当前情境(即关于当前操作的信息,包括其当前执行模式、堆栈和寄存器信息等等),并且将其执行模式切换到其SMM。然后按顺序分派SMM处理程序以确定它们是否是用于服务SMI事件的适当处理程序。在SMM处理程序代码中很早做出该确定,以使得在确定哪个处理程序适当时几乎没有延迟。当该处理程序被标识时,允许其执行以完成服务SMI事件。在服务SMI事件之后,发出RSM(重新开始)指令以使处理器回复到其使用先前保存的情境数据的先前执行模式。最终结果是SMM操作对于操作系统来说是完全透明的。
[0064] 在一个实施例中,除了将高速缓存数据刷新到DRAM之外,一个或多个SMM处理程序被配置成响应于SMI将DRAM DIMM 314、316、322和324中的一个或多个中的DRAM数据拷贝到持久存储设备300,该SMI是响应于检测到电力故障/电力源去除事件进而被调用的。在系统1000中,响应于电力故障/电力源去除事件,将电力(经由超级电容器338和电力调节电路
336)供应给在其上执行一个或多个SMM处理程序的CPU 304中的核1002。一般来说,核1002可以使用常规数据传送技术来将DRAM数据拷贝到持久存储设备,在该常规数据传送技术中以不采用DMA引擎312的方式将数据从系统存储器资源传送至存储资源。可选地,各种数据传送操作可被卸载到DMA引擎,在这种情况下电力也将被提供给DMA引擎(未被示出)。
[0065] 除了响应于电力故障/去除事件而将DRAM数据自动拷贝到持久储存器之外,实施例可被配置成响应于操作系统错误或故障事件而执行类似操作。例如,结合Microsoft Windows操作系统的故障,发生“蓝屏”或“蓝屏死机”(BSOD)事件,在所述事件中利用具有指示故障状况的文本的蓝屏替换Windows图形界面。在某些故障状况下,足够的操作系统仍可访问以使得继续存在的部分能够将存储器内容倾倒到储存器(通常倾倒到大的日志或调试文件)。一般来说,被倾倒的存储器内容不能被用来在BSOD事件之前恢复系统状态。在某些BSOD事件中,操作系统可能仅写出少量数据。
[0066] 在一个或多个实施例中,平台硬件和/或固件被配置成检测BSOD事件,并且以类似于本文中响应于电力故障或电力源去除事件描述的那个的方式来将适用的DRAM数据拷贝到持久存储设备。在一个实施例中,使用DMA引擎来执行DRAM数据拷贝操作以及相关联的数据传送。在另一实施例中,使用SMI以及一个或多个相关联的SMM处理程序来执行DRAM数据拷贝操作。
[0067] 在一个实施例中,执行图7a的流程图701中示出的操作。该过程在其中检测到操作系统错误或故障事件(诸如BSOD)的起始块703中开始。作为回应,以类似于上面参考图7的流程图700描述的方式的方式来执行块704、706、708、710、712和714中描绘的操作。
[0068] 对于跨电力故障/关闭的数据持久化,本文中提出的解决方案的实施例提供优于现有NVDIMM解决方案的若干优点。特别是所提出的解决方案。如上面所讨论的,归因于NAND和FPGA实际地块使用,可用的NVDIMM尺寸现今包含约(它们能够具有的)DRAM容量的一半,因此利用现有的NVDIMM方法总体OS可见存储器容量被降低至一半,造成降低的工作载荷性能。根据实施例,使用标准DRAM DIMM而不是NVDIMM,因此OS可见持久存储器尺寸与DRAM尺寸相同,因此与DRAM相比可用于工作载荷的总体存储器没有降低。
[0069] 所提出的解决方案具有更低得多的总所有权成本。以每存储器单元(例如存储器的每千兆字节)为度,现有NVDIMM解决方案花费DRAM的3倍到4倍。对于使用所提出的解决方案的持久DRAM的成本是DRAM成本加SSD成本(假设处理器支持从DRAM到SSD特征的电力故障拷贝)。对于相同容量来说,SSD的成本比DRAM更少的多(近似1/10)。因此,使用所提出的发明的持久DRAM存储器的总成本是DRAM单独的成本的近似1.2倍(假设双倍于DRAM容量SSD规定)。
[0070] 另一优点是降低的验证成本。该提出的解决方案支持在平台中使用标准DRAM DIMM和SSD。因此,与对于用以支持NVDIMM的存储器参考代码(MRC)的附加工作以及对于NVDIMM的附加验证和确认相比,不需要附加的DIMM验证或确认验证。
[0071] 所提出的解决方案提供更低的服务成本。如上面所讨论的,这实现常规DRAM DIMM和SSD而不是更昂贵得多的NVDIMM的使用。这支持当DRAM DIMM故障时简单地替换DRAM DIMM。在现有NVDIMM中,如果单个NVDIMM故障,如果数据跨多个DIMM交错,则所有数据都是不可恢复的。反之,在本文中的实施例中,如果在启动期间标识故障的DRAM设备,则用户可以利用新的DRAM设备替换DRAM设备然后将DRAM数据从SSD恢复到DRAM设备。
[0072] 它还在不要求另一平台(诸如替换平台)中的严格1:1 NVDIMM配置(被用于存储DRAM数据)的情况下实现所存储的存储器配置在该替换平台上的复制。在现有NVDIMM中,该NVDIMM必须被移动并且用相同的交错次序填充。例如,如果三个NVDIMM被交错,如果将NVDIMM从一个移动到另一个,则所有NVDIMM需要被移动并填充在同一位置上并且被配置用于同一交错。在所公开的解决方案中,如果来自三个DIMM的DRAM数据交错并且数据存储在SSD中,则SSD可能被移动到具有包括一个DRAM DIMM或两个DRAM DIMM的配置的另一系统,只要足够的DRAM容量是可用的。
[0073] 所提出的解决方案还提供附加优点。例如,在各种实施例中,整个DRAM被写入到持久储存器,或者备选地,DRAM的所选部分被写入到持久储存器。现有NVDIMM仅提供全尺寸持久容量或零尺寸持久容量。
[0074] 还可以使用受保护的持久存储方案(数据处于静止保护)来写入DRAM数据,其中现有的NVDIMM不提供安全特征。在本文中公开的实施例中,用于将数据存储在SSD(或其他持久存储设备)上的安全措施可以被应用于存储DRAM数据。
[0075] 还可以在保存/恢复操作期间实施RAID支持。例如,该存储设备子系统可以具有RAID配置,其中可能使用各种基于RAID的存储方案(包括用来提供附加数据存储可靠性的镜像和条纹存储方案)来存储DRAM数据。
[0076] 一个或多个实施例可被配置成使高速存储器诸如MCDRAM(高速多通道DRAM)持久。目前不存在可用于使MCDRAM持久的NVDIMM解决方案。在本文中描述的方案中,如果MCDRAM被电力保护,则在电力故障期间系统DRAM的MCDRAM区可以被存储到SSD。
[0077] 在下面编号的条款中阐述本文中描述的主题的另外的方面:1. 一种用于将计算机平台中的动态随机存取存储器(DRAM)中的数据保存到持久存储设备的方法,其中该计算机平台包括用来在正常操作期间向计算机平台中的部件提供电力的主电力源,该计算机平台包括持久存储设备并且在正常操作期间运行操作系统,该方法包括:
检测在其中电力不再由主电力源供应给计算机平台的电力不可用状况;以及响应于检测到该电力不可用状况,
在没有操作系统干预的情况下自动地将DRAM中的数据拷贝到持久存储设备。
[0078] 2. 条款1的方法,其中该计算机平台包括处理器,该处理器包括多个高速缓存,该方法进一步包括在将DRAM中的数据拷贝到持久存储设备之前将高速缓存中的数据刷新到DRAM。
[0079] 3. 条款1或2的方法,进一步包括:将DRAM地址空间的至少一个区域限定成包括持久DRAM;
在持久存储设备上配置该持久DRAM中的数据要被存储在其中的持久存储区;以及
将从该持久DRAM拷贝的数据存储到持久存储区。
[0080] 4. 前述条款中的任一项的方法,其中该计算机平台包括电力保护直接存储器访问(DMA)引擎,该方法进一步包括编程电力保护DMA引擎以将DRAM中的数据拷贝到持久存储设备。
[0081] 5. 前述条款中的任一项的方法,其中该计算机平台进一步包括:处理器,其包括:
包括第一存储器控制器的至少一个存储器控制器;以及
包括直接存储器访问(DMA)引擎的输入-输出(IO)接口;
在电力不可用状况之前将要保存的数据存储在其中的至少一个DRAM设备,经由第一存储器控制器至DRAM设备链路而操作耦合至第一存储器控制器;以及
将持久存储设备耦合至IO接口的IO链路,
其中该方法进一步包括响应于检测到电力不可用状况而向计算机平台中的多个电力保护部件提供临时电力,其中该多个电力保护部件包括第一存储器控制器、DMA引擎、至少一个DRAM设备、第一存储器控制器至DRAM设备链路、将持久存储设备耦合至IO接口的IO链路、以及持久存储设备。
[0082] 6. 条款5的方法,其中经由基于电容器的电力电路来提供临时电力。
[0083] 7. 条款5的方法,其中经由电池来提供临时电力。
[0084] 8. 条款5的方法,其中经由基于电容器的电力电路和电池的组合来提供临时电力。
[0085] 9. 前述条款中的任一项的方法,进一步包括:在平台初始化操作期间确定持久存储设备是否存储先前响应于电力不可用状况而从DRAM拷贝到该持久存储设备的任何DRAM数据;以及
将DRAM数据恢复到从其拷贝DRAM数据的一个或多个DRAM设备。
[0086] 10. 条款9的方法,其中DRAM数据在被拷贝到持久存储设备之前被以置乱格式存储,并且使用非置乱格式恢复该DRAM数据。
[0087] 11. 条款10的方法,其中该DRAM数据被存储在包括错误校正代码的存储器中,并且被拷贝到持久存储设备的DRAM数据包括标识未校正错误状况的数据。
[0088] 12. 条款1的方法,其中通过使用系统管理中断(SMI)以及一个或多个系统管理模式(SMM)处理程序而在不实施操作系统干预的情况下自动地将DRAM中的数据拷贝到持久存储设备,其中响应于检测到电力不可用状况而调用SMI,其分派一个或多个SMM处理程序以通过将DRAM数据拷贝到持久存储设备来服务SMI。
[0089] 13. 一种具有主电力源的计算平台,包括:处理器,其包括:
包括第一存储器控制器的至少一个存储器控制器;以及
包括直接存储器访问(DMA)引擎的输入-输出(IO)接口;
包括第一DRAM设备的至少一个动态随机存取存储器(DRAM)设备,其经由第一存储器控制器至DRAM设备链路而操作耦合至第一存储器控制器;
经由IO链路操作耦合至IO接口的持久存储设备;以及
临时电力源,其被操作耦合至第一存储器控制器、持久存储设备、IO链路、第一DRAM设备、和第一存储器控制器至DRAM设备链路中的每一个,其中临时电力源被配置成在其中主电力源不再向计算机平台供应电力的状况的事件中向该第一存储器控制器、持久存储设备、IO链路、第一DRAM设备、和第一存储器控制器至DRAM设备链路中的每一个供应电力达有限时间段;
其中该计算机平台被配置成检测在其中主电力源不再向计算机平台供应电力的状况,并且其中响应于检测到该状况,IO接口被配置成经由DMA引擎将存储在第一DRAM中的数据拷贝到持久存储设备。
[0090] 14.条款13的计算机平台,其中计算平台被进一步配置成在执行的平台初始化操作期间通过经由DMA引擎将数据从持久存储设备拷贝到第一DRAM设备而恢复先前已从第一DRAM设备拷贝到持久存储设备的数据。
[0091] 15. 条款13或14的计算平台,其中该计算平台包括多个DRAM设备,其包括DRAM双列直插式存储器模块(DIMM),每一个都经由存储器控制器至DRAM DIMM链路耦合至存储器控制器,其中临时电力源被配置成在其中主电力源不再向计算机平台供应电力的状况的事件中向多个DRAM DIMM、每个存储器控制器和每个存储器控制器至DRAM DIMM链路中的每一个供应电力;以及其中响应于检测到在其中主电力源不再向计算机平台供应电力的状况,IO接口被配置成经由DMA引擎将存储在多个DRAM DIMM中的每一个上的数据拷贝到持久存储设备。
[0092] 16. 条款15的计算平台,其中该处理器包括至少两个存储器控制器,每个存储器控制器都被耦合到至少两个DRAM DIMM。
[0093] 17. 条款15的计算机平台,其中计算平台被进一步配置成在执行的平台初始化操作期间通过经由DMA引擎将先前拷贝的数据从持久存储设备拷贝到各DRAM DIMM中的每一个而恢复先前已从多个DRAM DIMM中的每一个拷贝到持久存储设备的数据,其中在数据恢复时每个DRAM DIMM存储在其中主电力源不再向计算机平台供应电力的状况的发生之前其被存储的相同数据。
[0094] 18.条款13-17中的任一项的计算机平台,其中该IO链路包括快速外设控制互连(PCIe)链路。
[0095] 19.条款13-18中的任一项的计算机平台,其中该持久存储设备包括固态驱动器(SSD)。
[0096] 20.条款13-19中的任一项的计算机平台,其中该处理器包括至少一个处理器高速缓存,并且管理写入等待队列,并且其中响应于检测到不可用电力状况,在将该至少一个处理器高速缓存和写入等待队列中的数据从第一DRAM设备拷贝到持久存储设备之前将该数据刷新到第一DRAM设备。
[0097] 21. 条款13-20中的任一项的计算机平台,其中该处理器包括具有多个核的中央处理器单元(CPU),并且该IO接口被耦合至多个IO链路,并且其中响应于检测到不可用电力状况,该处理器进入其中除了电力保护链路之外的所有IO链路都使其电力降低的掉电状态,并且核以降低的电力状态来操作。
[0098] 22. 条款13-20中的任一项的计算机平台,其中在完成将数据从DRAM设备拷贝到持久存储设备时,存储在持久存储设备中的元数据被更新以指示数据已经被成功地保存到持久存储设备。
[0099] 23. 条款13-22中的任一项的计算机平台,其中临时电力源是基于电容器的电力电路。
[0100] 24. 条款13-23中的任一项的计算机平台,其中临时电力源是电池。
[0101] 25. 条款13-24中的任一项的计算机平台,其中临时电力源包括基于电容器的电力电路和电池的组合。
[0102] 26. 条款13-25中的任一项的计算机平台,其中该至少一个存储器控制器进一步包括第二存储器控制器,第二DRAM设备经由第二存储器控制器至DRAM设备链路操作耦合至该第二存储器控制器,并且其中临时电力源被进一步操作耦合至第二存储器控制器和第二DRAM设备,并且其中该IO接口被进一步配置成经由DMA引擎将存储在第二DRAM设备中的数据拷贝到持久存储设备。
[0103] 27. 条款13-25中的任一项的计算机平台,其中该至少一个DRAM设备包括经由第二存储器控制器至DRAM设备链路操作耦合至第一存储器控制器的第二DRAM设备,并且其中该IO接口被进一步配置成经由DMA引擎将存储在第二DRAM设备中的数据拷贝到持久存储设备。
[0104] 28. 条款13的计算机平台,其中该计算机平台进一步包括被配置成执行以下各项的逻辑:在平台初始化操作期间确定持久存储设备是否存储先前响应于电力不可用状况而从DRAM拷贝到该持久存储设备的任何DRAM数据;以及
将DRAM数据恢复到从其拷贝DRAM数据的一个或多个DRAM设备。
[0105] 29. 条款28的计算机平台,其中DRAM数据在被拷贝到持久存储设备之前被以置乱格式存储,并且使用非置乱格式恢复该DRAM数据。
[0106] 30. 一种处理器,其被配置成安装在包括具有主电力输入源的电源、一个或多个动态随机存取存储器(DRAM)设备和持久存储设备的计算机平台中,该处理器包括:多个处理器核,其被操作耦合至互连;
包括第一存储器控制器和存储器控制器接口的至少一个存储器控制器,其被操作耦合至该互连并且被配置成在处理器被安装在计算机平台中时与第一存储器控制器至DRAM设备链路接合,所述第一存储器控制器至DRAM设备链路相对端处耦合到第一DRAM设备;
输入-输出(IO)接口,其被操作耦合至该互连并且包括用于持久存储设备所耦合至的IO链路的链路接口;
直接存储器访问(DMA)引擎;以及
逻辑,被配置成在处理器的操作时执行以下各项;
检测在其中主电力输入源不再向电源供应电力的电力不可用状况;以及响应于检测到该状况,
将存储在第一DRAM设备中的DRAM数据拷贝到持久存储设备。
[0107] 31. 条款30的处理器,进一步包括直接存储器访问(DMA)引擎,并且其中经由DMA引擎将存储在第一DRAM设备中的DRAM数据拷贝到持久存储设备。
[0108] 32. 条款30的处理器,其中该处理器被配置成实施系统管理中断(SMI)并以系统管理模式(SMM)来操作,并且进一步地其中该处理器被配置成在操作时并且响应于电力不可用状况而调用SMI并且分派一个或多个SMM处理程序来通过将存储在第一DRAM设备中的DRAM数据拷贝到持久存储设备而服务SMI。
[0109] 33. 条款30-32中的任一项的处理器,其中该处理器进一步包括APIC(高级可编程中断控制器)逻辑块和电力控制单元(PCU)中的至少一个,并且响应于检测到该状况,APIC逻辑块和PCU中的至少一个被配置成向处理器中的所选部件提供电力以使得DRAM数据能够被拷贝到持久存储设备,同时降低去到处理器上的未被采用来促进经由DRAM数据拷贝数据到持久存储设备的传送的其他部件的电力。
[0110] 34. 条款30-33中的任一项的处理器,其中计算平台包括多插口平台,其具有多个插口并且包括具有本地插口的第一插口和具有远程插口的第二插口以及第一插口与第二插口之间的插口至插口互连,其中该处理器被配置成使处理器的各实例安装在相应的本地和远程插口中,并且其中该处理器进一步包括被配置成耦合到插口至插口互连的插口至插口互连接口,并且进一步地其中该处理器包括逻辑,所述逻辑被配置成响应于检测到电力不可用状况且当处理器被安装在本地插口中时执行以下各项:将数据从经由处理器上的一个或多个存储器控制器访问的一个或多个DRAM设备拷贝到持久存储设备;以及
与远程插口中的处理器接合以便将数据从经由安装在远程插口中的处理器上的一个或多个存储器控制器访问的一个或多个DRAM设备拷贝到持久存储设备。
[0111] 35. 条款30-34中的任一项的处理器,其中在完成将数据从第一DRAM设备拷贝到持久存储设备时,该处理器被配置成通过IO链路发送数据以更新存储在持久存储设备中的元数据从而指示数据已经被成功保存到持久存储设备。
[0112] 36. 条款30-33中的任一项的处理器,其中该第一存储器控制器和存储器控制器接口被配置成当处理器被安装在计算机平台中时与在第二DRAM设备的相对端处耦合的第二存储器控制器至DRAM设备链路接合,并且其中该逻辑如果进一步配置成在处理器的操作时并且在响应于检测到电力不可用状况而将存储在第二DRAM设备中的DRAM数据拷贝到持久存储设备。
[0113] 37. 条款30-33中的任一项的处理器,其中该至少一个存储器控制器包括第二存储器控制器和第二存储器控制器接口,其被配置成当处理器被安装在计算机平台中时与在第二DRAM设备的相对端处耦合的第二存储器控制器至DRAM设备链路接合,并且其中该逻辑被进一步配置成在处理器的操作时并且在响应于检测到电力不可用状况而将存储在第二DRAM设备中的DRAM数据拷贝到持久存储设备。
[0114] 尽管已经参考特定实施方式描述了一些实施例,但是根据一些实施例其他实施方式是可能的。另外,绘图中图示的和/或本文中描述的元件或其他特征的布置和/或次序不需要以所图示和描述的特定方式来布置。根据一些实施例,许多其他布置是可能的。
[0115] 在图中示出的每个系统中,在某些情况下各元件可以均具有相同的参考数字或不同的参考数字以暗示所表示的元件可能是不同和/或类似的。然而,元件可能足够灵活以具有不同实施方式并且利用本文中示出或描述的系统中的一些或所有。图中示出的各种元件可能是相同或不同的。哪一个被称为第一元件以及哪一个被称为第二元件是任意的。
[0116] 在该描述和权利要求中,可以使用术语“被耦合”和“被连接”连同它们的派生词。应该理解,不意图将这些术语作为彼此的同义词。而是,在特定实施例中,“被连接”可以被用来指示两个或更多元件彼此直接物理或电气接触。“被耦合”可能意指两个或更多元件处于直接物理或电气接触。然而,“被耦合”也可以意指两个或更多元件彼此不处于直接接触,但是又仍彼此协作或相互作用。
[0117] 实施例是本发明的实施方式或示例。在说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的参考意指结合所述实施例描述的特定特征、结构或特性被包括在本发明的至少一些实施例中,但不一定被包括在本发明的所有实施例中。各种外观“实施例”、“一个实施例”或“一些实施例”不一定所有都指的是相同的实施例。
[0118] 不是本文中描述和图示的所有部件、特征、结构、特性等等都需要被包括在一个或多个特定实施例中。例如,如果说明书声明部件、特征、结构或特性“可”、“可能”、“可以”或“能够”被包括,则该特定部件、特征、结构或特性不要求被包括。如果说明书或权利要求提及“一”或“一个”元件,则那并不意味着仅存在一个该元件。如果说明书或权利要求提及“附加”元件,则其并不排除存在多于一个附加元件。
[0119] 如上面所讨论的,可以通过对应的软件和/或固件部件和应用(诸如由嵌入式处理器或嵌入式逻辑等等执行的软件和/或固件)来促进本文中的实施例的各种方面。因此,本发明的实施例可能被用作或用来支持在某种形式的处理器、处理核或嵌入式逻辑或在处理器或核上运行的虚拟机上执行或者以其他方式在计算机可读或机器可读非瞬时存储介质上或其内实施或实现的软件程序、软件模块和/或固件。计算机可读或机器可读非瞬时存储介质包括用于以由机器(例如计算机)可读的形式存储或传送信息的任何机构。例如,计算机可读或机器可读非瞬时存储介质包括以可被计算机或计算机器(例如计算设备、电子系统等等)访问的形式提供(即存储和/或传送)信息的任何机构,诸如可记录/不可记录介质(例如只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备、等等)。内容可以是直接可执行的(“对象”或“可执行”形式)、源代码、或差代码(“增量”或“插入”代码)。计算机可读或机器可读非瞬时存储介质还可包括可以从其下载内容的储存器或数据库。计算机可读或机器可读非瞬时存储介质还可包括在销售或交付时具有存储在其上的内容的设备或产品。因此,交付具有存储内容的设备或者供给用于通过通信介质下载的内容可以被理解为提供一种包括具有本文中描述的此类内容的计算机可读或机器可读非瞬时存储介质的制品。
[0120] 本文中描述的在上面被称为过程、服务器或工具的各种部件可以是用于执行描述的功能的装置。由本文中描述的各种部件执行的操作和功能可以通过在处理元件上运行的软件、经由嵌入式硬件等等、或者硬件和软件的任何组合来实施。此类部件可能被实施为软件模块、硬件模块、专用硬件(例如,应用程序特定硬件、ASIC、DSP等等)、嵌入式控制器、硬连线电路、硬件逻辑、等等。软件内容(例如数据、指令、配置信息等等)可能经由包括计算机可读或机器可读非瞬时存储介质的制品来提供,其提供表示可以被执行的指令的内容。该内容可以导致计算机执行本文中描述的各种功能/操作。
[0121] 如本文中所使用的,通过术语“…中的至少一个”结合的项的列表可以意指所列出的术语的任何组合。例如,短语“A、B或C中的至少一个”可以意指A;B;C;A和B;A和C;B和C;或A、B和C。
[0122] 本发明的所图示的实施例的以上描述(包括摘要中所描述的内容)不意图是详尽的或者将本发明限于所公开的精确形式。虽然为了说明的目的在本文中描述了本发明的具体实施例和示例,但是如相关领域中的技术人员将认识到的,各种等同的修改在本发明的范围内是可能的。
[0123] 按照上面的详细描述可以对本发明做出这些修改。所附权利要求中所使用的术语不应该被解释为将本发明限于说明书和附图中公开的具体实施例。而是,本发明的范围完全由所附权利要求来确定,所附权利要求要根据所建立的权利要求阐释原则来解释。