可配置易失性存储器数据保存触发器的制作方法

文档序号:12701256阅读:546来源:国知局
可配置易失性存储器数据保存触发器的制作方法与工艺

机架式计算机服务器使用自包含硬件,在这种意义上,可以将机架式服务器插入标准电源插座,连接网络电缆、引导,并且具有操作服务器。机架式服务器通常安装在通常为19英寸宽的计算机硬件机架中,但是一些机架式服务器也可以坐在其他机架中,或者坐在桌子或另一表面上,而不是安装在机架中。与机架式服务器是自包含的不同,刀片式服务器不是自包含的。刀片式服务器设计为安装在被称为“机箱”的刀片外壳中,外壳包括一个或多个电源和网络部件。插入有一个或多个刀片的机箱可以是机架可安装的。

在电源停止流动到机架、机箱、机架式服务器、刀片式服务器和/或具有存储在易失性存储器中的数据的这种服务器的单独部件之后,数据可能丢失并且不可恢复。减少或防止数据丢失的一种方法是跨数据中心中的多个服务器或者甚至跨地理上分离的数据中心复制数据。然而,各种各样的其他方法也可以用于在功率损失的情况下保存数据。不同的方法具有不同的技术特性,并且除了共享保存数据以防功率损失这一概念,任何两个给定的方法不必彼此相关功率损失。



技术实现要素:

一些实施例或示例包括到共享功率源(例如,机箱或机架电池或发电机)的耦合。在一些实施例或示例中,数据保存触发控制器在以下条件中的一个或多个条件下向诸如NVDIMM和PCIe设备等耦合的易失性存储器设备发送数据保存命令:可编程时间量逝去而没有AC功率,电压电平降低到低于正常但仍然足以在数据保存操作期间对易失性存储器设备供电,触发控制器被通知操作系统关闭命令,和/或触发控制器在没有关闭命令的情况下被通知明确的数据保存命令。

给出的示例仅仅是说明性的。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。相反,提供本发明内容以便以简化的形式介绍在下面的具体实施方式中进一步描述的一些技术概念。创新由权利要求限定,并且在本发明内容与权利要求冲突的情况下,应以权利要求为准。

附图说明

将参考附图给出更具体的描述。这些附图仅示出所选择的方面,因此不完全确定任何示例的覆盖或范围。

图1是示出具有在硬件和/或软件的控制下彼此交互的至少一个处理器和至少一个存储器的计算机系统、以及示出操作环境中可以在多个网络节点上延伸的其它项目、以及还示出一些配置的存储介质的各方面的框图;

图2是示出支持数据保存触发的架构中的一些部件和一些耦合的图;

图3是示出用于可配置的数据保存操作的一些过程和一些配置的存储介质的步骤的流程图;

图4示出了电源排序时序图;

图5是示出云服务器功率和功率管理基础设施的一些方面的图;

图6和图7共同示出了刀片主板和相关联的机箱;

图8示出了使用超级电容器备份源的云服务器上的NVDIMM实现方式的主板框图;

图9示出了使用12V辅助备份源的云服务器上的NVDIMM实现方式的主板框图;

图10是示出具有框架级电源和电池基础设施形式的本地能量存储的电池操作的曲线图;以及

图11包括说明功率排序设备状态转变和定时的图和表。

具体实施方式

缩略语

下面定义一些首字母缩略词和其他术语,但是其他术语可以在本文中在别处定义或者不需要定义以被本领域技术人员理解。

AC:交流电

ACPI DSDT/SSDT:高级配置和电源接口区分系统描述表/辅助系统描述表

ADR:异步DRAM刷新

ALU:算术和逻辑单元

AND:一种类型的逻辑门(不是首字母缩略词)

API:应用程序接口

ASCII:用于信息交换的美国标准代码

ASL:ACPI源语言

Aux:辅助

BIOS:基本输入/输出系统

BMC:基板管理控制器

CD:光盘

CKTS:电路

CM:机箱管理器

CPLD:复杂可编程逻辑器件

CPU:中央处理单元

CRB:客户参考板

CRC:循环冗余校验

DC:直流电

DCU:数字控制单元(控制器的示例)

DDR3:双倍数据速率类型3

DG:柴油发电机

DIMM:双列直插存储器模块

DSM:设备特定的方法

DRAM:动态随机存取存储器

DVD:数字多功能盘或数字视频盘

FBDIMM:完全缓冲的DIMM

FPGA:现场可编程门阵列

FPU:浮点处理单元

FW:固件

GB:千兆字节

GbE或GBE:千兆以太网

GPIO:通用输入/输出

GPU:图形处理单元

GUI:图形用户界面

HDD:硬盘驱动器

HSC:热插拔控制器

I2C:集成电路

IDE:集成开发环境,有时也被称为“交互式开发环境”

IIO:集成输入/输出

IoT:物联网

IPMI:智能平台管理接口

ISO/IEC:国际标准化组织/国际电工委员会

LES:本地能量存储

M.2:用于内部安装的计算机扩展卡和连接器的规范

MEZZ:夹层

MSB:最高有效位

NAND:取反AND(与)/非AND(与)

NIC:网络接口卡

NV:非易失性

NVMe:非易失性存储器快速

OS:操作系统

PCH:平台控制器中枢

PCIe:外围部件互连快速;本文有时被写为PCIE

PMBUS:电源管理总线

PSU:电源单元

QD:队列深度

RAID:独立磁盘冗余阵列

RAM:随机存取存储器

RDIMM:注册的双列直插存储器模块

ROM:只读存储器

SAS:串行连接的SCSI

SATA:串行ATA/串行AT附件/串行高级技术附件

SSATA:辅助SATA

SCSI:小型计算机系统接口

SMBUS:系统管理总线

SPD:串行存在检测

SRAM:静态RAM

SSD:固态驱动

Supercap:超级电容器

UART:通用异步接收器/传输器

UEFI:统一可扩展固件接口

UPS:不间断电源

V:伏特

概述

本文中所描述的示例的技术特征对于本领域的普通技术人员将是容易理解的,并且还将以多种方式对于宽范围的细心读者是容易理解的。首先,一些实施例解决各种技术问题,诸如面临即将来临或实际功率损失的数据保存、成本有效功率监测、超级电容器冷却要求和/或用于易失性存储器设备的专用电池的主板不动产(real estate)要求。第二,一些实施例包括诸如计算硬件等技术部件,其以超出通用计算机的典型操作的方式操作,例如通过继续向PCIe轨道和/或NVDIMM插槽供电,尽管AC功率损失和缺少专用于特定PCIe轨道或NVDIMM插槽的任何电池或超级电容器。第三,一些实施例提供的技术效果包括保存否则当AC功率损失时将从易失性存储器丢失的数据。本文还描述了各种技术适应,特别是在几个示例性架构文本论述和/或附图中。

本文中所描述的一些示例可以在更广泛的上下文中查看。例如,诸如数据、延迟、功率、保存和/或触发等概念可以与特定实施例相关。然而,它不由广泛的上下文的可用性推断,其中在本文中排他性的权利正在被寻找用于抽象的想法;它们不是。相反,本公开集中于提供适当的特定实施例,其技术效果完全或部分地解决特定技术问题并改进计算机系统的功能。涉及数据、延迟、功率、保存和/或触发的其他介质、系统和方法在本范围之外。因此,在适当地理解本公开的情况下,也避免了模糊性、纯粹的抽象性、缺乏技术特性和伴随的证明问题。

一些术语

现在将参考诸如附图所示的示例性实施例,并且本文将使用特定语言来描述这些实施例。但是本文所示的特征的更改和进一步修改以及由本文中的特定实施例所示出的抽象原理的附加技术应用(其是相关领域的拥有本公开的技术人员想到的)应当被认为在权利要求的范围。

在本公开中阐明了术语的含义,因此应当仔细地注意这些说明来阅读权利要求。给出了具体的示例,但是相关领域的技术人员将理解,其他示例也可以落入所使用的术语的含义内,并且在一个或多个权利要求的范围内。在这里,术语不一定具有它们在一般使用中(特别是在非技术使用中)或在特定行业的使用中或在特定字典或字典集合中具有相同的含义。附图标记可以与各种短语一起使用,以帮助示出术语的宽度。从给定的文本片段省略附图标记不一定表示文本不讨论图的内容。发明人主张和行使他们自己的词典编纂的权利,包括将语言复制到权利要求中和从这里的任何位置到后代应用的权利。带引号的术语是明确定义的,但在隐含地定义术语时不使用引号。术语可以明确地或隐含地在此处在详细描述中和/或在应用文件的其他地方定义。

如本文所使用的,“计算机系统”可以包括例如一个或多个服务器、主板、处理节点、个人计算机(便携式或非便携式)、个人数字助理、智能电话、蜂窝或移动电话、至少具有处理器和存储器的其他移动设备、和/或提供至少部分地由指令控制的一个或多个处理器的其他设备。指令可以是存储器和/或专用电路中的固件或其他软件的形式。具体地,尽管可能发生很多实施例在工作站或膝上型计算机上运行,但是其他实施例可以在其他计算设备上运行,并且任何一个或多个这样的设备可以是给定实施例的一部分。云服务器被讨论为计算机系统的特定示例,但是云服务器和云服务器子系统不是可以结合本文中呈现的教导的计算机系统或设备的仅有示例。

“多线程”计算机系统是支持多个执行线程的计算机系统。术语“线程”应当被理解为包括能够或者经历调度(并且可能精力同步)的任何代码,并且还可以由诸如“任务”、“进程”或“协同程序”等另一名称来知道。线程可以并行地、顺序地或以并行执行(例如,多处理)和顺序执行(例如,时间分片)的组合来运行。多线程环境已经在各种配置中设计。执行线程可以并行运行,或者线程可以被组织用于并行执行,但实际上依次顺序执行。多线程可以例如通过在多处理环境中在不同核上运行不同的线程,通过在单个处理器核上对不同线程进行时间分片,或通过时间分片和多处理器线程的某种组合来实现。线程上下文切换可以例如由内核的线程调度器、用户空间信号或用户空间和内核操作的组合来发起。例如,线程可以轮流对共享数据进行操作,或者每个线程可以对其自己的数据进行操作。

“逻辑处理器”或“处理器”是单个独立的硬件线程处理单元,例如同时多线程实现中的核。作为另一示例,每个核运行两个线程的超线程四核芯片具有八个逻辑处理器。逻辑处理器包括硬件。术语“逻辑”用于防止给定芯片具有至多一个处理器的错误结论;“逻辑处理器”和“处理器”在本文中可互换地使用。处理器可以是通用的,或者它们可以被定制用于诸如图形处理、信号处理、浮点算术处理、加密、I/O处理等特定用途。

“多处理器”计算机系统是具有多个逻辑处理器的计算机系统。多处理器环境以各种配置发生。在给定配置中,所有处理器可以在功能上相等,而在另一配置中,一些处理器可以通过具有不同的硬件能力、不同的软件分配或两者而不同于其他处理器。根据配置,处理器可以在单个总线上彼此紧密耦合,或者它们可以松散耦合。在一些配置中,处理器共享中央存储器,在一些配置中它们各自具有它们自己的本地存储器,并且在一些配置中存在共享存储器和本地存储器。

“内核”包括操作系统、管理程序、虚拟机、BIOS代码和类似的硬件接口软件。

“代码”是指处理器指令、数据(其包括常量、变量和数据结构)、或者指令和数据两者。

在此广泛使用“程序”以包括由程序员(也被称为开发者)编写的应用、内核、驱动器、中断处理程序、固件、状态机、库和其他代码。

“例程”是指通过跳转和上下文保存接收控制的函数、过程、异常处理程序、中断处理程序或另一指令块。上下文保存在堆栈上推送返回地址或以其他方式保存返回地址,并且还可保存在从例程返回时要恢复的寄存器内容。

“IoT”或“物联网”表示可寻址嵌入式计算节点的任何联网集合。这样的节点是如本文所定义的计算机系统的示例,但是它们还具有以下特征中的至少两个:(a)没有本地的人类可读显示;(b)没有本地键盘;(c)主要输入源是跟踪非语言数据源的传感器;(d)没有局部旋转磁盘存储-RAM芯片或ROM芯片提供唯一的本地存储器;(e)没有CD或DVD驱动器;(f)嵌入家用电器;(g)嵌入植入的医疗装置中;(h)嵌入在车辆中;(i)嵌入在过程自动化控制系统中;或(j)侧重于以下之一的设计:环境监测、公民基础设施监测、工业设备监测、能源使用监测、人或动物健康监测或物理运输系统监测。

如本文所使用的,除非另有说明,否则“包括”允许另外的元件(即,包括装置包括)。“由...组成”是指基本上由或完全由...组成。当X的非Y部分(如果有的话)可以被自由地改变、移除和/或添加,而不改变所要求保护的实施例的功能性,就所涉及的权利要求而言,X基本上由Y组成。

“过程”在本文中可以用作计算科学领域的术语,并且在技术意义上包括例如资源用户,即协同程序、线程、任务、中断处理程序、应用程序进程、内核进程、过程和对象方法。“过程”也可以在本文中用作专利法术语术语,例如在描述与系统权利要求或制品(配置的存储介质)权利要求相对的过程权利要求中。类似地,“方法”在本文中有时可以用作计算科学领域中的技术术语(一种“常规”),有时也用作专利法术语术语(“过程”)。本领域技术人员将理解在特定情况下表示哪个含义,并且还将理解,给定的要求保护的过程或方法(在专利法意义上)有时可以使用一个或多个过程或方法(在计算科学意义上)。

“自动地”是指通过使用自动化(例如,由用于本文所讨论的特定操作和技术效果的软件配置的通用计算硬件),而不是没有自动化。特别地,“自动地”执行的步骤不是手动地在纸上或在人的头脑中执行,尽管它们可以由人来发起或由人交互地引导。利用机器执行自动步骤以便获得在没有如此提供的技术交互的情况下不能实现的一个或多个技术效果。

技术人员理解技术效果是技术实施例的推测目的。例如,在实施例中涉及计算,并且还可以在没有技术部件(例如,通过纸和铅笔,或甚至作为心理步骤)的情况下执行一些计算不会移除技术效果的存在或改变本实施例的具体和技术性质。技术人员将认识到,在一些情况下,计算简单地不能通过心理步骤或通过纸和铅笔足够快速和足够可靠地执行,以提供实施例的技术效果。

“计算地”同样表示正在使用的计算设备(至少处理器加上存储器),并且排除仅通过人的思想或仅仅人的动作获得结果。例如,用纸和铅笔进行算术不是如本文所理解的计算运算。计算结果更快、更宽、更深、更准确、更一致、更全面,和/或以其它方式提供超出人类性能范围的技术效果。“计算步骤”是计算执行的步骤。“自动地”或“计算地”不一定表示“立即”。“计算地”和“自动地”在本文中可互换地使用。

“主动地”表示没有来自用户的直接请求。实际上,用户甚至可能不知道实施例的主动步骤是可能的,直到步骤的结果已经呈现给用户。除非另有说明,本文所述的任何计算和/或自动步骤也可以主动地进行。

“语言上”是指通过使用自然语言或通常用于面对面的人对人通信的另一种形式的通信。在语言上沟通包括例如用他的手指、手、脸和/或身体说话、打字或打手势。

在本文中,使用任选的复数“(s)”、“(es)”或“(s)”是指存在一个或多个所指出的特征。例如,“处理器”表示“一个或多个处理器”或等效地“至少一个处理器”。

在本文档中,除非另有明确说明,否则对过程中的步骤的任何引用假定该步骤可以由感兴趣的一方直接执行和/或由该方通过中介机制和/或中间实体间接执行,以及仍然在该步骤的范围内。也就是说,除非直接执行是明确规定的要求,否则不需要由感兴趣的一方直接执行步骤。例如,涉及由诸如连接、控制、协调、耦合、检测、执行、丢弃、降低、监测、通知、操作、供电、编程、提供、接收、保存、发送、关于目的地或其他主题的共享、关闭、触发(以及连接、连接的、控制、控制的等)可以涉及干预动作,诸如禁用、启用、转发、复制、上传、下载、编码、解码、压缩、解压缩、加密、解密、认证、调用等,但仍被理解为由感兴趣的一方直接执行。

例如,每当提及数据或指令时,应理解这些项目配置计算机可读存储器和/或计算机可读存储介质,从而将其转换成特定物品,而不是简单地存在于纸上、一个人的心里、或者作为一个传播的信号。除非在权利要求中另有明确说明,否则权利要求不涵盖信号本身。为了在美国的专利保护的目的,存储器、计算机可读存储介质和任何其他计算机可读介质不是传播信号或载波,并且它在美国专利商标局(USPTO)关于Nuijten案的解释下不在可专利主题的范围之内。

此外,尽管在本文其它地方明显有相反的含义,但是应当理解在(a)计算机可读存储介质、计算机可读介质和计算机可读存储器与(b)传输介质(也称为信号媒体或传播信号)之间的明确区分。传输介质是传播信号或载波介质。相比之下,计算机可读介质、计算机可读存储介质和计算机可读存储器不是传播信号或载波介质。除非另有明确说明,否则“计算机可读介质”是指计算机可读存储介质,而不是传播信号本身。

本文中的“实施例”是示例。术语“实施例”不能与“本发明”互换;术语“示例”也不能。实施例可以自由地共享或借用方面以创建其他实施例(假定结果是可操作的),即使所得到的方面组合本身没有明确地描述。要求每个允许的组合被明确描述对于本领域技术人员是不必要的,并且将违背承认专利说明书是为本领域技术人员撰写的策略。关于从甚至少量可组合特征产生的可能组合的数目的形式组合计算和非正式常见直觉也将指示对于本文中所描述的方面存在大量方面组合。因此,要求对每个组合的明确叙述将与要求专利说明书简洁的政策相矛盾,并且使读者在相关技术领域中具有知识。

操作环境

参考图1,用于实施例的操作环境100可以包括计算机系统102。计算机系统102可以是多处理器计算机系统,或者不是。操作环境可以包括给定计算机系统中的一个或多个机器,其可以是集群的、客户端-服务器网络的和/或对等网络的。单个机器是计算机系统,并且一组协作机器也是计算机系统。给定计算机系统102可以被配置用于端用户,例如具有应用、用于管理员、作为服务器、作为分布式处理节点、作为IoT节点和/或以其他方式。

人类用户104可以通过使用显示器、键盘和其他外围设备106,经由打字文本、触摸、语音、移动、计算机视觉、手势和/或其他形式的I/O与计算机系统102交互。用户界面可以支持实施例与一个或多个人类用户之间的交互。用户界面可以包括命令行接口、图形用户界面(GUI)、自然用户界面(NUI)、语音命令接口和/或其他接口呈现。例如,可以在本地台式计算机上或在智能电话上生成用户界面,或者可以从web服务器生成用户界面并将其发送到客户端。用户界面可以被生成为服务的一部分,并且它可以与诸如社交网络服务等其他服务集成。给定的操作环境包括支持这些不同的用户界面生成选项和用途的设备和基础设施。

自然用户界面(NUI)操作可以使用语音识别、触摸和触笔识别、屏幕上和屏幕附近的姿势识别、空气姿势、头部和眼睛跟踪、语音和语音、视觉、触摸、手势和/或机器智能。NUI技术的一些示例包括触敏显示器、语音和语音识别、意图和目标理解、使用深度相机的运动姿势检测(诸如立体相机系统、红外相机系统、RGB相机系统及其组合)、运动姿势检测加速度计/陀螺仪、面部识别、3D显示器、头部、眼睛和注视跟踪、沉浸式增强现实和虚拟现实系统,所有这些都提供更自然的接口,以及使用电场感测电极(脑电图和相关工具)。

作为另一示例,游戏可以驻留在微软XBOX服务器(微软公司的标记)或其他游戏服务器上。游戏可以从控制台购买,并且可以在服务器上,在控制台上或者两者上全部或部分地执行。多个用户可以使用标准控制器、空中手势、语音或使用诸如智能手机或平板电脑的伴随设备与游戏交互。给定的操作环境包括支持这些不同使用场景的设备和基础设施。

系统管理员、开发者、工程师和端用户各自是特定类型的用户104。代表一个或多个人行动的自动代理、脚本、回放软件等也可以是用户104。存储设备和/或网络设备在一些实施例中可以被认为是外围设备。例如,图1中未示出的其他计算机系统可以以技术方式经由网络接口设备使用到网络108的一个或多个耦合和/或连接与计算机系统102或另一系统实施例交互。

计算机系统102包括具有一个或多个处理器高速缓存120的至少一个逻辑处理器110。与其他合适的系统一样,计算机系统102还包括一个或多个计算机可读存储介质112。介质112可以是不同的物理类型。介质112可以是易失性存储器122、非易失性存储器124、固定在适当位置的介质、可移除介质、磁性介质、光学介质、固态介质和/或其他类型的物理耐用存储介质(与仅仅传播信号相反)。特别地,诸如便携式(即外部)硬盘驱动器、CD、DVD、记忆棒或其他可移除非易失性存储介质等配置介质114在插入或以其他方式安装时可以成为计算机系统的功能上的一部分,使得其内容可访问以与处理器110交互并由处理器110使用。可移除配置介质114是计算机可读存储介质112的示例。计算机可读存储介质112的一些其他示例包括内置RAM、ROM、硬盘以及用户104不容易移除的其他存储器存储设备。为了符合当前的美国专利要求,计算机可读介质、计算机可读存储介质和计算机可读存储器都不是信号本身。

介质114和/或其他介质112配置有由处理器110可执行的指令116;在本文中,“可执行的”在广义上用于包括例如在虚拟机上运行的机器代码、可解释代码、字节代码、固件和/或代码。介质114还配置有通过执行指令116来创建、修改、参考和/或以其它方式用于技术效果的数据118。指令116和数据118配置它们驻留在其中的存储器或其他存储介质114;当该存储器或其他计算机可读存储介质是给定计算机系统的功能部分时,指令116和数据118还配置该计算机系统。在一些实施例中,数据118的一部分表示诸如产品特性、库存、物理测量、设置、图像、读数、目标、体积等真实世界项目。这样的数据也通过备份、恢复、提交、中止、重新格式化和/或其他技术操作来转换。

尽管实施例可以被描述为被实现为由计算设备(例如,通用计算机、蜂窝电话或游戏控制台)中的一个或多个处理器执行的软件指令,但是这样的描述并不表示穷尽所有可能的实施例。本领域技术人员将理解,相同或类似的功能也可以通常直接在硬件逻辑中全部或部分地实现,以提供相同或相似的技术效果。备选地或除了软件实现之外,本文所描述的技术功能可以至少部分地由一个或多个硬件逻辑部件执行。例如,并且在不排除其他实现的情况下,实施例可以包括硬件逻辑部件,诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、系统级-芯片部件(SOC)、复杂可编程逻辑器件(CPLD)和类似部件。例如,实施例的部件可以基于它们的输入、输出和/或它们的技术效果而被分组成交互功能模块。

在所示的环境100中,诸如源代码和/或可执行代码等代码126可以驻留在介质112中和/或驻留在其他硬件中,例如作为固件。代码可以包括对例程的调用,并且可以包括诸如对象、列表、树、其他链接结构和/或其他构造(有时被称为“伪像”)等数据结构。操作系统142和其他内核包括代码126。应用也包括代码126。本文广泛使用术语“应用”。应用的一些示例包括商业软件、工业软件、医疗应用、协作软件、提供对数据库的访问的软件、显示可编辑信息的软件、游戏、应用商店购买、软件即服务代码、中间件、内核、服务器代码和其他后端应用程序、以及Web浏览器和脚本或由他们作为插件运行的其他代码。源代码以一种或多种编程语言编写。从给定编程语言中的源创建的可执行代码有时也被称为以该语言,但可执行代码被理解为包括机器代码。如本文所使用的,“机器代码”是指针对特定硬件架构定制或针对特定虚拟机架构定制的低级代码或计算机代码。机器代码的一些常见示例包括编译代码、微代码、固件代码、二进制代码、本机代码、目标代码、汇编语言代码、p代码、字节代码、动态链接库代码和公共中间语言代码。

在附图中示出和/或在文中讨论的代码126、数据118和其他项目可以各自部分地或完全地驻留在一个或多个硬件介质内,从而将这些介质配置为超出“正常”(即,最小公分母)交互固有的所有硬件-软件协作操作。

除了处理器110(CPU、ALU、FPU和/或GPU)和存储器/存储介质112之外,操作环境还可以包括其它硬件,例如主板128中的硬件、机架130、一个或多个机箱132、总线、电源和/或电池和/或其他功率源134、PCIe设备136、NVDIMM 138、有线和无线网络接口卡、加速器和显示器140,其各自的操作在本文中以本领域技术人员不明显的程度描述。NVDIMM包含易失性存储器和非易失性存储器。NVDIMM的易失性存储器中的数据可以备份到该NVDIMM的非易失性存储器。非易失性存储器部件的存在是区分NVDIMM与DIMM的特性。关于存储设备性能,具有NVDIMM的系统102可以具有四个不同的存储设备性能层,例如处理器110高速缓存、NVDIMM易失性存储器、RAM盘或SSD、以及硬盘或网络附接存储。将NVDIMM添加到系统架构可以在降低的等待时间和增加的吞吐量中提供数量级的增益。

在一些实施例中,诸如人类用户I/O设备(屏幕、键盘、鼠标、平板电脑、麦克风、扬声器、运动传感器等)等外围设备106将存在与一个或多个处理器110和存储器可操作地通信。然而,实施例还可以深深嵌入在诸如物联网的一部分的技术系统中,使得没有人类用户104与该实施例直接地和语言地交互。软件过程可以是用户104。

在一些实施例中,系统包括在网络中物理连接和/或无线耦合的多个计算机或其他设备102。联网接口设备可以使用例如可以存在于给定计算机系统中的分组交换网络接口卡、无线收发器或电话网络接口的部件来提供对网络108的接入。然而,实施例还可以通过直接存储器访问、可移除非易失性介质或其他信息存储-检索和/或传输方法来传达技术数据和/或技术指令,或者计算机系统中的实施例可以在不与其他计算机系统。

一些实施例在“云”计算环境和/或“云”存储环境中操作,其中计算服务不是所有的,而是按需提供的。云服务器在这里用作示例,但是本教导也可以应用于在其他能力中使用的服务器,例如LAN服务器、数据库服务器、与互联网物理地和/或通过防火墙或安全软件分离的数据中心服务器、服务器集群和其他服务器,这些服务器不是完全(并且在一些情况下甚至不是部分地)被技术人员视为云服务器。在易失性存储器中具有数据并且由于间歇或中断的功率而潜在地遭受劣化、损坏或这样的数据丢失的任何服务器可以从本技术的实现中受益。

在附图中可以以轮廓形式示出一个或多个项目,以强调它们不一定是所示出的操作环境或所有实施例的一部分,而是可以与操作环境中的项目或如本文所讨论的一些实施例互操作。在任何附图或任何实施例中不一定需要不是以轮廓形式的项目。具体地,为了方便提供图1;包括图1中的项目并不表示该项目或该项目的描述用途在当前创新之前是已知的。

主板示例

一些示例包括以与图2中的图一致的架构耦合的部件。在这个意义上,“与...一致”表示可以存在附图中未示出的附加耦合或连接或部件,所示的耦合或连接可以是单向的或双向的,所示的耦合或连接可以包括在图中未明确示出的逻辑门,并且特定实现可以具有电压电平、电阻器、特定引脚分配和/或在图中未明确示出的特定芯片。图所示的给定部件可以使用一个或多个芯片和/或总线来实现。

在与图2一致的一个示例实现中,主板128是服务器刀片主板,基板控制器210包括BMC,平台控制器中枢212包括PCH,数据保存状态机214包括CPLD。在图2中用线表示耦合(例如,连接),应当理解,给定的线可以表示一个或多个连接。例如,在一些实现中,PCH 212和数据保存状态机210之间的线表示每个部件的多个引脚之间的电连接,如其他图所示。通常,图2的线示意性地表示一个或多个电源、接地、命令、数据和/或其它连接。本领域技术人员还将理解,在图中未明确示出的附加连接也可以存在于给定实现中,并且将容易地提供这样的添加作为实现细节。

在一些实施例中,针对与图2架构的相应部分相关联的事件如下实现数据保存触发:

A:电池应急能力

B:12V电压降

C:明确的OS关闭

D:软/硬关机

一些示例包括用于系统102中的主板128的易失性存储器数据保存子系统200。子系统200包括易失性存储器设备共享功率源耦合201,易失性存储器设备共享功率源耦合201当耦合到共享功率源202和/或204并且还通过主板128耦合到易失性存储器设备110、136和/或138时向易失性存储器设备提供操作功率。在本示例中,易失性存储器设备共享功率源耦合201至少包括热交换控制器208和从共享功率源向易失性存储器设备传送功率的迹线203。在本示例中,每个易失性存储器设备是从共享功率源接收功率的至少两个单独可插式设备之一。NVDIMM和PCIe设备是可插式设备。在这个意义上,CPU也被认为是“可插式”设备,即使它们被焊接到主板,因为它们在较早的时间被插入主板。相比之下,轨迹203是不可插式的,而是从它们创建的时刻起是主板的整体部分。

所示的子系统200还包括数据保存触发耦合205,数据保存触发耦合205在耦合到易失性存储器设备并且被触发时向易失性存储器设备发送数据保存命令。在本示例中,数据保存触发耦合205至少包括携带数据保存命令信号的迹线203。

所示的子系统200还包括数据保存触发控制器207,数据保存触发控制器207操作以触发数据保存触发耦合205。在本示例中,数据保存触发控制器207至少包括数据保存状态机214和平台控制器中枢212。当发生以下表示的(a)至(d)中的至少一个条件时,数据保存触发控制器207触发数据保存操作。给定实施例可以根据特定实施例仅检测和响应这些条件中的一个,或这些条件中的任何两个,或这些条件中的任何三个,或者所有四个条件。给定实施例还可以执行响应于一个或多个其他条件而触发的数据保存操作。

条件(a)是可编程时间量逝去,易失性存储器设备由不由AC功率源驱动的源供电。在所示的架构中,这涉及由机箱电池204或由例如由本地应急发电机(未示出)馈电的电源202驱动的设备110、136、138中的任何或全部。可以类似地使用机架130电池。

条件(b)是易失性存储器设备共享功率源上的电压电平降低到小于正常操作功率但仍然足以在数据保存操作期间为易失性存储器设备供电的值。在示例架构中,这涉及到去往并且通过热插拔控制器208的电压降。

条件(c)是向数据保存触发控制器通知操作系统关闭命令。在示例架构中,这涉及由机箱管理器206发送的通知;关闭通知可以类似地由机架130管理器提供。

条件(d)是在没有操作系统关闭命令的情况下向数据保存触发控制器通知明确的数据保存命令。在示例架构中,这涉及从平台控制器中枢212到CPU 110的ADR信号。在一些示例中,它还可以涉及来自机架管理器和/或机箱管理器的数据保存命令。

在易失性存储器数据保存子系统200的一些实施例中,易失性存储器设备包括NVDIMM 138,易失性存储器设备共享功率源耦合201包括NVDIMM插槽209,并且共享功率源包括以下中的至少一个:机箱电池204、共享机架级电池系统204、柴油发电机216、天然气发电机216、另一发电机216。

在易失性存储器数据保存子系统200的一些实施例中,易失性存储器设备包括没有专用超级电容器并且也没有专用电池的NVDIMM 138。

在易失性存储器数据保存子系统200的一些实施例中,易失性存储器设备包括PCIe设备136,并且易失性存储器设备共享功率源耦合包括主板上的PCIe轨道211。

在易失性存储器数据保存子系统200的一些实施例中,数据保存触发控制器207操作以在可编程量的时间过去时触发数据保存触发耦合,易失性存储器设备由机箱电池204供电,并且基于机箱电池功率估计来预先编程可编程时间量。

在易失性存储器数据保存子系统200的一些实施例中,数据保存触发控制器207操作以在易失性存储器设备共享功率源上的功率电平降低到低于12V正常操作功率到足以在数据保存操作期间为易失性存储器设备供电的10.8V与11.5V之间的电平时触发数据保存触发耦合。

在易失性存储器数据保存子系统200的一些实施例中,数据保存触发控制器207操作以在没有操作系统关闭命令的情况下向数据保存触发控制器通知明确数据保存命令时触发数据保存触发耦合。

一些示例包括一种用于服务器系统102中的主板128的易失性存储器数据保存子系统200。子系统200包括具有电源202和框架管理器206的框架213。框架213包括至少一个机箱132和/或至少一个机架130。多个易失性存储器设备功率源耦合201耦合到框架电源202和相应的易失性存储器设备组,每个易失性存储器设备组包括至少一个易失性存储器设备110、136和/或138。数据保存触发耦合205当耦合到易失性存储器设备中的至少一个并且被触发时向易失性存储器设备中的至少一个发送数据保存命令。当以下条件中的至少一个发生时,数据保存触发控制器207操作以触发数据保存触发耦合:(a)在框架电源未接收AC功率的情况下,可编程时间量逝去;(b)框架电源将输出电压降低到小于正常操作电平但仍然足以在数据保存操作期间为易失性存储器设备供电的值;(c)向数据保存触发控制器通知操作系统关闭命令;或(d)在没有操作系统关闭命令的情况下,向数据保存触发控制器通知明确的数据保存命令。在一些示例中,服务器系统102的特征还在于,每个易失性存储器设备没有专用超级电容器并且也没有专用电池。也就是说,所讨论的易失性存储器设备仅从每个易失性存储器设备与至少一个其它易失性存储器设备共享的源供电。具有专用功率源的附加易失性存储器设备也可以存在于服务器中,但它们不是易失性存储器数据保存子系统的一部分。

在易失性存储器数据保存子系统200的一些实施例中,数据保存触发控制器207的至少一部分驻留在框架管理器206中。例如,管理器206中检测OS关闭的代码和/或硬件命令在一些实施例中可以被认为是数据保存触发控制器207的一部分。此外,管理器206中检测AC功率损失、预测电池204功率可用性和/或以其他方式检测或实现触发条件(a)-(d)中的一个或多个的代码和/或硬件在一些实施例中可以被认为是数据保存触发控制器207的一部分。

在易失性存储器数据保存子系统的一些实施例中,易失性存储器设备功率源耦合205包括以下中的至少一个:NVDIMM插槽209、PCIe轨道211。

在一些实施例中,框架213包括机箱132,电源204是机箱电源,并且易失性存储器设备中的至少一个驻留在耦合到机箱132的刀片服务器102上。在一些实施例中,框架213包括机架130,电源204是机架电源,并且至少一个易失性存储设备驻留在耦合到机架130的机架式服务器102上。

在易失性存储器数据保存子系统200的一些实施例中,框架数据保存触发耦合205耦合到主板128上的所有易失性存储器设备,并且当被触发时,耦合205向所有易失性存储器发送数据保存命令设备。

方法

图3示出了流程图300中的一些过程实施例。在一些实施例中,可以例如通过需要很少或没有同时的实况用户输入的代码和/或硬件来自动执行附图中所示或以其它方式公开的技术过程。除非另有说明,否则还可以部分地自动地和部分地手动地执行过程。在给定的实施例中,过程的零个或多个步骤可以重复,可能使用不同的参数或数据来操作。实施例中的步骤也可以以与图3或这里其他示例所示的顺序不同的顺序来完成。步骤可以以连续、部分重叠的方式或完全并行地执行。在过程期间图3被遍历和/或其中执行步骤的顺序和程度可以从过程的一个执行到过程的另一执行不同。流程图遍历顺序和范围还可以从一个过程实施例到另一过程实施例变化。只要所执行的过程是可操作的并且符合至少一个权利要求,步骤也可以被省略、组合、重命名、重新分组或以其他方式偏离给定示例的流程。

本文提供了实施例以帮助说明本技术的各方面,但是本文献中给出的实施例不描述所有可能的实施例。实施例不限于本文提供的具体实现、布置、显示、特征、方法或场景。给定的实施例可以包括例如附加的或不同的技术特征、机制和/或数据结构,并且可以另外偏离本文提供的示例。

在一些示例中,用于尽管断电保存数据的数据保存技术方法包括检测302计算系统102中的数据保存触发条件304,向易失性存储器设备发送326数据保存命令330,以及从共享功率源向易失性存储器设备提供324功率。共享功率源是在至少两个易失性存储器设备之间共享的功率源,在共享时它们都不具有有效的专用功率源。检测302触发条件可以包括检测指定时间段306(其可以基于电池特性被预先编程308)的AC功率损失,检测故意产生的310电压降312,检测OS关闭318,和/或检测将数据保存到非易失性存储器中的明确命令322。OS关闭和明确的数据保存可以实现为通知320。

在一些示例中,数据保存技术方法还包括易失性存储器设备,其接收328执行332数据保存操作334的数据保存命令,即,将来自易失性存储器122的数据保存到非易失性存储器124中的操作。利用从共享功率源提供324的功率执行数据保存操作。

在数据保存技术方法的一些示例中,发送326数据保存信号330包括将电源输出降低310到小于正常操作功率314但仍然足以在数据保存操作334期间为易失性存储器设备供电的值316。例如,电压可以从12V正常水平314降低310到在12V的10%内或者至少9.6V内的较低水平316。在一些示例中,降低310使得电压足够低,以使得控制器能够触发数据保存操作,但是不至于太低而不能为数据保存操作供电。

在一些示例中,该过程包括降低348电源202的输出瓦数,从而提供用于长时间操作电池的安全机制。

在一些示例中,从共享功率源向易失性存储器设备提供功率324包括执行用于协调340电压逐步降低342的至少一种方法。下面提供一些示例。

电源协调方法1

当AC损失时,通知机箱132,并且其将刀片功率降低到刀片服务器可以在电池上运行延长的时间的点,例如,至少足够长以用于NVDIMM备份334的时间量加上该量的至少六分之一的缓冲。如果AC在35秒内没有返回,则一些实施例关闭电源202。在一些实施例中,在AC损失之后35秒,电源将查看356它提供的输出功率。如果它低于75瓦特(或小于正常瓦数的另一可配置的数字),则电源将允许高达200秒运行时间以允许NVDIMM备份。

电源协调方法2

在一些实施例中,在AC损失之后35秒,电源将将其电压降低到约11.5V,以触发354NVDIMM备份334。如果电源不同时降低348其电压,则降低其电压的电源最后将接管所有负载,并且可能过流并锁定。避免这种情况的一种方法是,电源监测356在AC损失之后的定时,使得它们在大致相同的时间都降低电压。此外,它们可以在1-2秒的窗口上降低电压,并且当它们击中最大输出电流时,它们可以延迟340降低斜坡以使其他电源202赶上。例如,使用6个电源,电源1首先开始降低电压。假定11.8V的电源1达到其最大输出电流131A。它将保持在11.8V,而其他电源赶上并达到11.8V。此时,其他电源202将再次共享负载,因此电源1可以将其电压下降恢复310到11.5V。

在一些实施例中,电源202将具有将被所有电源监测的称为VDROP的公共信号。低=VDROP,HI=正常输出电压。为了彼此协调340,在AC功率损失之后,电源启动定时器。定时可能在电源之间以10毫秒为单位。第一电源达到35秒会将其电压下降至11.5V,同时将VDROP拉低。其余电源将看到VDROP变低,并也将立即降低其输出。电源具有可以在适当时禁用VDROP的寄存器。这种协调340还可以使用机箱管理器206来实现,其中机箱管理器在AC损失之后执行定时并且将VDROP拉低。

在数据保存技术方法的一些示例中,NVDIMM响应于数据保存命令330执行336异步DRAM复位338(ADR)。ADR操作可以遵循不可屏蔽中断(NMI)或其它内务处理操作,其将来自CPU 110高速缓存的数据保存到NVDIMM易失性存储器中。通过NMI操作将数据从处理器高速缓存刷新358到NVDIMM易失性储存库中,然后通过ADR操作将数据从那里复制到NVDIMM的非易失性存储器中。

在一些示例中,向易失性存储器设备提供324功率包括维持到PCIe轨道211的功率和/或维持344到DIMM轨道209的功率,然后在数据保存操作334完成之后移除346到轨道的功率。在一些示例中,在命令的数据保存操作334完成之后,从易失性存储器设备移除346功率,并且对计算系统352复位350并且(重新)启动352。

配置的媒体

一些实施例包括配置的计算机可读存储介质112。介质112可以包括磁盘(磁、光或其它)、RAM、EEPROM或其它ROM、和/或其他可配置存储器,特别包括计算机可读介质(与单纯传播的信号相反)。被配置的存储介质可以特别地是可移除存储介质114,诸如CD、DVD或闪存。可以是可移除的或不可移除的并且可以是易失性的或非易失性的通用存储器可以被配置成如下实施例:其中使用从可移除介质114和/或另一源读取的数据118和指令116形式的伪像作为网络连接以形成配置的介质。在一些示例中,计算机可读存储介质114被配置有数据和指令,指令当由至少一个处理器110和/或其他可编程部件(例如,CPLD)执行时引起可编程部件执行本文中所描述的部分或全部技术过程。具体地,可以在由此编程的计算机可读存储介质的控制或影响下执行图3所示或本文另外公开的任何步骤、组步骤或步骤序列的执行。

为了公开的目的,在“配置的媒体”标题下的讨论被认为在“过程”标题下被复制,并且在“过程”标题下的讨论被认为在该“配置的媒体”标题下被复制。此外,在本公开中的其它地方,在两个标题下也讨论了方法。标题只是为了方便;但是它们不限制本文的教导的范围或内容。

附加示例

下面提供了附加的细节和设计考虑。与本文的其他示例一样,在给定实施例中,所描述的特征可以单独使用和/或组合使用,或者根本不使用。

本领域技术人员将理解,实现细节可以涉及特定代码,诸如特定API、特定存储器地址、特定属性和对象名称、以及特定样本程序,因此不需要出现在每个实施例中。本领域技术人员还将理解,在讨论细节时使用的程序标识符和一些其他术语是实现特定的,因此不需要涉及每个实施例。尽管如此,尽管它们不一定需要存在于这里,但是提供这些细节是因为它们可以通过提供上下文帮助一些读者和/或可以示出本文所讨论的技术的很多可能实现中的几个。

本文中的一些讨论源自一些云服务器/微软云服务器规范文档,其包括对由微软公司(微软公司的标记)实现的技术的讨论。该软件和/或文档的方面与本文中所描述的一些实施例的方面一致或以其它方式示出。然而,将理解,这样的文档和/或实现选择不一定限制本文所描述的任何示例或实施例的范围,并且同样地,微软产品代码和部件和/或它们的文档可能包含在这些实施例和实施例的范围之外的特征。还将理解,本文中的一些讨论部分地被提供为对不一定是本领域普通技术的读者的帮助,并且因此可以包含和/或省略下面的详述不是严格地需要用于支持本公开的细节。

在一些示例中,NVDIMM 138包括板上DRAM、板上NAND闪存和将数据从DRAM复制到NAND闪存的板载控制器。在一些实施例中,可以在NVDIMM和/或PCIe设备的正常操作功率源和备份操作功率源之间进行区分。在一些实施例中,NVDIMM在正常操作期间从主板128供电。在一些实施例中,在NVDIMM易失性存储器到NVDIMM的非易失性存储器的备份期间,NVDIMM可以由专用超级电容器或专用电池供电,即,给定的超级电容器/电池专用于给定的NVDIMM以仅由该NVDIMM使用。在一些实施例中,超级电容器可以与NVDIMM相距12-18英寸,通过电缆连接到NVDIMM。然而,在一些这些实施例中,专用能量源使用在NVDIMM及其主板的几英寸内的房地产,因此比距离主板更远或更远的不动产更有价值。超级电容器也可以施加NVDIMM本身不需要的冷却要求。本文中所描述的一些实施例通过减少或移除使用专用超级电容器来为那些NVDIMM供电而提供NVDIMMS的低等待时间DRAM速度写入,而没有过度供应SSD。相反,利用在多个NVDIMM中共享的机箱级电池204来提供合适的功率,使得不需要昂贵的超级电容器。

一些示例利用远程或机箱级电池204来为NVDIMM保存到闪存操作334供电。一些示例以以下一种或多种方式改变主板的电源排序:一些电源轨在一个时段保持活跃344和其他电源轨立即断电346;管理处理器有权主张ADR;电池输出电压可以在交流电源丢失设定的时间段后通过电压调节来调用310ADR。图4示出了用于NVDIMM支持的CPLD功率测序的时序图,示出了一些实施例的操作和固件编码。

在一些示例中,FW支持RDIMM和NVDIMM的任何组合。一些实施例支持8GB和16GB NVDIMM。在一些示例中,一个HDD被重新用于容纳电容器。一些包括在低电池容量下自动触发NVDIMM备份到闪存。一些示例实现功率安全的NVDIMM和PCIe器件。一些在云服务器中实现强大的NVDIMM和PCIe设备。一些云服务器架构提供非限制性示例。

功率操作示例

本公开的该部分集中于云服务器上的NVDIMM和PCIe设备的功率安全实现。“功率安全操作”是可配置数据保存触发功能的示例。此部分从云服务器机箱基础结构上的简要背景开始,随后是功率安全NVDIMM/PCIe设备实现的端到端描述。讨论了用于在示例云服务器机箱中支持这些功率安全器件的架构、物理、机械、电、热和软件(例如,BMC/BIOS)实现方面以及NVDIMM特性。

图5示出了云服务器和机箱基础结构的架构上下文。诸如机箱管理器等框架管理器206向刀片502或其他服务器102系统/子系统的控制器210传送查询。管理器206管理PSU 202和UPS 204的共享池。因此,给定示例中的云服务器机箱包括一定数目的服务器或刀片(诸如24)、电源202和电池204的共享池以及机箱管理器206(也称为机箱管理器服务器)。在本示例中,机箱管理器206通过串行接口使用IPMI与基板管理控制器(BMC)210通信,并且通过I2C接口使用PMBUS与电源基础设施(PSU/电池)通信。机箱管理器206使用这些通信接口来从刀片和电源/电池查询健康和状态信息。

一些云服务器具有向服务器传递12V电源电压的热插拔控制器(HSC)208。在电源故障期间,机箱级UPS电池204自动接合,并且服务器将无缝地接收12V输入电压。机箱级电池主要用于在公用事业AC损失(停电)之后作为柴油发电机(DG)功率或其它本地应急发电机功率的转换机构。

在一些实施例中,在等待DG转换时间306(例如,5-20秒)之后启动354功率安全操作。在一些情况下,DG转换时间为17s(17秒),并且云服务器电池被设置为维持初级DG故障和随后转移到次级DG。本示例转换为至少34秒(2*17秒)的电池保持时间段(足够承受全机箱负载的容量)。

每个云服务器刀片可以包括一定数目的功率安全器件,例如NVDIMM和PCIe设备(如RAID控制器、SSD)。这些功率安全器件通常具有(在DRAM/SRAM中)易失性状态,其可能在正常操作期间不会立即持续到非易失性介质,以便改善访问等待时间。这样的功率安全器件具有相关的保持时间,用于在功率损失事件之后保持其易失性状态(数据备份)。在功率安全器件的情况下的功率损失可以是公用事业中断事件(以及随后的DG故障)或另一功率网络故障事件,例如PDU/变压器故障、断路器跳闸等。

在这些功率损失事件下的功率安全器件的操作保持时间可以例如使用来自以下的功率来提供:(i)本地能量存储设备,例如电容或电池(通常嵌入在功率安全器件内或直接附接到功率安全器件),和/或(ii)已经作为云服务器机箱基础设施的一部分可用的机箱级UPS电池。

一些云服务器支持这些模式的设备备份能量源。这些模式的能量源中的每一种都具有相关的可行性考虑。虽然本地能量存储主要受物理空间和成本约束的限制,但机箱级电池具有相关联的功率和能量限制。

文档的该部分现在将描述使得功率安全器件能够在功率损失之后成功地保存其易失性状态并且在功率恢复时恢复状态的一些云服务器基础设施改变(在机箱、刀片和附带软件方面)。NVDIMM实现和功率安全PCIe设备实现被讨论作为示例。

NVDIMM支持

NVDIMM支持的一些技术优点

更高的性能:NVDIMM或非易失性DIMM允许在确保数据持久性的同时对存储器中的数据进行快速访问(与传统SSD相比等待时间的数量级改进)。依赖或受益于低等待时间内存写入(例如,内存数据库提交、持久数据存储的数据缓存或事务日志)的应用可以利用NVDIMM来优化性能/美元。

较低的成本:今天,写密集型(到持久存储)应用通常过度提供SSD容量以实现耐力目标,导致成本增加,其可以使用NVDIMM来减少或避免。此外,一些云服务器利用机箱级电池替代昂贵的超级电容器以降低NVDIMM成本。

NVDIMM操作

一些云服务器将支持具有DDR3RDIMM DRAM和基于NAND闪存的持久备份的NVDIMM。这些DIMM中的一些具有由存储器参考代码(MRC)管理的制造商特定接口。NVDIMM与正常DDR3DRAM类似地执行,直到SAVE信号322经由PCH被驱动到NVDIMM。在接收到SAVE(保存)信号时,NVDIMM通常使用在DIMM模块138内的FPGA/ASIC NVDIMM控制器将DRAM中的数据备份334到NAND闪存。该NVDIMM保存或备份操作334旨在用于到刀片的功率损失的情况或基于明确的软件请求322来使用。当NVDIMM进入这种状态时,它从操作系统142不再可用,直到随后的刀片重启352。在备份操作期间,NVDIMM可以如下被供电(i)使用使用系绳电缆连接到NVDIMM的外部超级电容器(或等效电池模块),或(ii)使用使用来自主板的12V辅助电源的机箱级UPS电池。注意,在该备份/保存操作期间,除了NVDIMM之外,所有其他服务器部件(如CPU,HDD)可以被断电346。

作为刀片重新启动过程的一部分,云服务器BIOS初始化NVDIMM。在该初始化期间,BIOS将通过与NVDIMM控制器通信来启动从NAND闪回回到DRAM(如果存在有效备份图像)的数据的恢复。在OS 142获得对服务器的控制之后,合适的设备驱动器将暴露该NVDIMM存储器区域以供系统软件使用。

云服务器上的NVDIMM实现

本部分描述了用于实现功率安全NVDIMM的示例云服务器硬件和软件实现。硬件实现的讨论包括与NVDIMM相关的特征,诸如PCH、电源排序CPLD以及BMC、CPLD和PCH之间的信号。软件实现的讨论包括与电源排序CPLD内的BIOS、BMC和逻辑相关的特征。还包括与示例云服务器主板(包括BMC/CM)的中等高级别概述,其具有用于实现功率安全NVDIMM器件的挂钩,与图6和图7一致。

图6和图7共同示出了云服务器上的NVDIMM实现的硬件示意图。注意,在图4和图7中,引脚和信号标识符使用连字符(例如,“ADR-COMPLETE(完成)”),其中文本使用相应项目的下划线(“ADR_COMPLETE”);这种装饰性调整是为了绘制一致性并且便于符合图4时序图中的诸如“ST-DONE(完成)”和“ST-RESET(复位)”等术语的绘制格式要求。此外,在图7中,UVM表示欠电压显示器,PD表示编程延迟,SYS-PWROK后面的星号表示“由ADR_COMPLETE门控”。

如前所述,一些云服务器支持三种备份源,(i)超级电容器,(ii)机箱级电池,以及(iii)机架级电池。图8示出了使用超级电容器802备份源的云服务器上的NVDIMM实现的示例配置。在该实现中,NVDIMM直接连接到放置在HDD托架中的超级电容器。

图9示出了使用12V辅助备份源的云服务器上的NVDIMM实现的基于机箱电池的备份配置。在该实现中,来自HSC的12V刀片电源输入被直接馈送到NVDIMM。一些示例使用主板上的连接器,引脚1和引脚2接地(2A电容),引脚3连接12V辅助(2A电容),引脚4未连接。

本部分的其余部分提供了对一些云服务器上的NVDIMM实现的高级概述以及对不同硬件和软件部件的实现的详细讨论。讨论介绍NVDIMM的操作状态的四个方面:NVDIMM/系统初始化、正常操作、备份操作和恢复操作。本领域技术人员还将理解其他实现,并且可以使用实施本文中呈现的一个或多个教导的实现的其他描述。

NVDIMM/系统初始化

每当云服务器启动(引导过程)时,执行以下高级初始化活动以启用NVDIMM操作。

(i)云服务器BIOS检测NVDIMM的存在并且填充meminfo(内存信息)数据结构或另一数据结构以指示哪些DIMM具有NVDIMM能力。

(ii)BIOS执行存储器初始化(包括NVDIMM)。作为NVDIMM初始化的一部分,BIOS(a)等待任何未决的NVDIMM备份操作完成,(b)可以等待NVDIMM超级电容器充分被充电,以及(c)在这样的备份图像存在并且有效的情况下恢复已经存在的备份NVDIMM图像。

(iii)BIOS通过填充适当的ACPI表将NVDIMM作为非易失性存储器设备暴露给OS。

Meminfo结构

在一些实现中,BIOS填充meminfo数据结构,以指示每个主板DIMM插槽中NVDIMM的存在或不存在。可选地,BIOS还可以填充用于NVDIMM的超级电容器支持的存在作为meminfo数据结构的一部分。关于超级电容器的存在的这个信息可以涉及到NVDIMM控制器的定制接口,诸如以下:

位[5:0]:类型

00h:SDRAM

01h:DDR-1RAM

02h:Rambus

03h:DDR-2RAM

04h:FBDIMM

05h:DDR-3RAM

06h:DDR-4内存

07h:DDR-3NVDIMM

08h:DDR-4NDVIMM

09h:具有超级电容器的DDR-3NVDIMM

0Ah:具有超级电容器的DDR-4NVDIMM

3Fh:没有DIMM

......

BMC将在BIOS已经经由KCS(键盘控制器样式)或BIOS向BMC协议传送了该meminfo结构之后立即读取meminfo数据结构。BMC将随后使用该信息来执行NVDIMM备份操作。

将NVDIMM暴露给OS

下面列出了在一个示例中用于NVDIMM OS支持的一些初步BIOS特性;在其他示例中,BIOS特性可以不同。通过提供这些特性,内核142可以呈现NVDIMM模块(或模块系列)的块存储视图,使得OS应用可以将其用作常规存储设备。即,NVDIMM可以被识别为盘类型设备,可以被分区,可以被安装并且可以以与呈现给系统的任何其它存储设备大致相同的方式被使用。

项目1.如果固件/BIOS使用没有任何修改地支持NVDIMM或者已经支持NVDIMM的MRC库,则转到项目4。

DDR3NVDIMM从各种供应商商购可获得。本领域技术人员将理解,本文给出的教导适用于包括或利用来自各种供应商的产品的系统、设备和方法,并且实施例不限于具有本文提及的特定供应商的产品的那些实施例。在一些示例中,所有NVDIMM驻留在与DRAM所占用的空间分离的连续系统地址空间中。示例可以检查NVDIMM上的任何保存的图像,并且如果找到有效的保存的图像,则启动恢复。示例可以检查超级电容器充电状态,并等待超级电容器充满电,然后继续引导。在一些示例中,NVDIMM可以被交织。交织可以使用适用于常规DIMM和NVDIMM的全部或全无方法。交织设置可能对存在于ACPI表中的对象有影响。

项目2.在存储器设备检测期间,识别所有支持的NVDIMM,并将所有NVDIMM放入与DRAM所占用的系统地址空间分离的连续系统地址空间中。NVDIMM的内存总线时序可能与常规DIMM不同。

项目3.对于所有支持的NVDIMM,在本示例中存在以下功能。检查NVDIMM上是否有任何保存的图像。如果存在有效的保存图像,则启动恢复操作。提供在继续引导之前强制固件/BIOS等待备份电源充足电的选项。如果备份电源是超级电容器,则固件/BIOS将检查超级电容器充电状态,并等待超级电容器充满电后再继续引导。提供擦除和布防NVDIMM进行保存操作的选项。如果启用此选项,则固件/BIOS将在恢复操作完成后擦除NVDIMM上的NAND。在擦除NAND之后,固件/BIOS将使NVDIMM进行保存操作。提供启用/禁用跨NVDIMM的交织的选项。NVDIMM的交织可以是系统中的所有NVDIMM或者连接到特定存储器控制器的所有NVDIMM。如果支持两个选项,则提供选择所需的交织的配置选项。交织选项可以影响ACPI表中存在的对象。

项目4.在UEFI机器上,由NVDIMM占据的存储器区域被标记为类型EFI_MEMORY(存储器)_TYPE(类型)14(这当前是保留的值)。在BIOS机器上,内存区域在E820表中标记为值7(这当前是保留的值)。这将存储器区域标记为OS不可用。这些是示例标记值;其他实现可以使用其他可用的值。

项目5.如果支持故障恢复引导(FRB),则确保FRB定时值可以适应NVDIMM恢复其内容或等待超级电容器完全充电的额外引导时间。

项目6.能够在系统的有序关闭时触发ADR保存以将NVDIMM内容保存到NAND的能力。在以下电源开启时,在本例中,在NVDIMM上存在已保存的数据的恢复。

项目7.呈现给OS的ACPI DSDT或SSDT表包含在ACPI对象定义部分中描述的至少一个NVDIMM ACPI对象。如果禁用NVDIMM的交织,则在本示例中,系统中每个NVDIMM有一个NVDIMM ACPI对象。

可以使用的附加信息包括关于用于NVDIMM的初始化和对备选功率源(如果适用)充电的流的信息、关于BIOS恢复行为的信息和用于根据故障恢复的条件、以及关于NVDIMM故障模式的信息和在这些场景中的BIOS行为。NVDIMM模块本身上的嵌入式控制器的规范和访问方法可以包括寄存器定义和管理能力。

ACPI对象定义

为了使OS 142发现NVDIMM 138的存在并确定OS是否要加载块存储驱动器,BIOS在该实现中暴露ACPI对象。ACPI对象位于DSDT或SSDT表中,位于_SB命名空间下。它支持以下ACPI方法。这将允许驱动程序加载和暴露NVDIMM区域作为块存储设备。

_HID(硬件ID)——硬件ID是字符串,并且基于SPD(串行存在检测)表中的信息。_HID的格式为字符串XXXXYYYYYYYY,其中XXXX和YYYYYYYY具有以下信息。XXXX在存在单个NVDIMM的情况下是来自SPD的字节117-118的ASCII表示。对于多个NVDIMM,XXXX设置为“NVDM”。YYYYYYYY是在存在以CRC32值的MSB开始的单个NVDIMM的情况下来自SPD的字节128到145的CRC32十六进制值的ASCII表示。对于多个NVDIMM,YYYYYYYY是基于DIMM插槽顺序根据来自与该对象相关联的所有NVDIMM的SPD的字节117-118和字节128到145的串联生成的CRC32十六进制值的ASCII表示。CRC32十六进制值为MSB第一,DIMM插槽顺序为从最小编号插槽到最大编号插槽。

_CID(兼容ID)——兼容ID是字符串“PNP0C90”。

_ADR(地址)——映射到从1开始的DIMM插槽的整数。如果存在与该对象相关联的多个NVDIMM,则使用值0。

_UID(唯一ID)——唯一ID是字符串,并且基于SPD中的信息。_UID的格式为字符串YYYYYYYY。对于单个NVDIMM,YYYYYYYY是来自以CRC32值的MSB开始的SPD的字节117到125的CRC32十六进制值的ASCII表示。对于多个NVDIMM,YYYYYYYY是基于NVDIMM槽顺序根据来自与该对象相关联的所有NVDIMM的SPD的字节117到125的串联生成的CRC32十六进制值的ASCII等价物。CRC32十六进制值是MSB第一,并且时隙顺序是从最低编号时隙到最高编号时隙。

_HRV(硬件修订)——硬件修订是整数并且基于SPD中的信息。对于单个NVDIMM,_HRV是来自SPD的字节146-147。对于多个NVDIMM,_HRV是基于NVDIMM时隙顺序根据来自系统上所有NVDIMM的SPD的字节146-147的级联生成的CRC32值。插槽顺序是从最低编号插槽到最大编号插槽。

_CRS(当前资源设置)——描述与NVDIMM相关联的存储器资源的缓冲器。缓冲器包含扩展地址空间描述符,其是描述由与该对象相关联的NVDIMM使用的一个连续地址范围的存储器范围资源类型。设置ACPI_MEMORY(存储器)_NV类型特定属性。如果适用,可以设置其它存储器类型属性(例如,ACPI_MEMORY(存储器)_UC)。

_STA(状态)——返回设备的当前状态的整数。如果与此对象关联的NVDIMM可用,则返回值0x1f。如果与此对象关联的NVDIMM不可用,则返回0。

_MGT(管理)——这是用于返回关于NVDIMM的状态的更详细信息的占位符函数。这可以由_DSM方法替代,它提供以下内容:启动保存操作,查询保存/恢复状态,查询超级电容器充电状态,查询温度,配置设备故障通知。

下面是对于4GB地址范围的NVDIMM对象的示例ASL定义:0x1.4000.0000-0x02.3FFF.FFFF

设备(\_SB_.NVD_){

名称(_ADR,0x2)

名称(_HID,“04D501234567”)

名称(_CID,“PNP0C90”)

名称(_UID,“01234567”)

名称(_HRV,0x1)

名称(_CRS,缓冲区(0x3a)

{

0x8b,//扩展地址空间描述符

0x35,0x00,//长度位0x35=53字节

0x00,//资源类型=内存范围

0x0d,//一般标志=1101

0x09,//类型特定的标志=1001

0x00,//修订ID

0x00,//保留

0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00,//_GRA:地址空间粒度

0x00、0x00、0x00、0x40、0x01、0x00、0x00、0x00,//_MIN:地址范围最小值

0xff,0xff,0xff,0x3f,0x02,0x00,0x00,0x00,//_MAX:地址范围最大

0x00、0x00、0x00、0x00、0x00、0x00、0x00、0x00,//_TRA:地址转换偏移量

0x00、0x00、0x00、0x00、0x01、0x00、0x00、0x00,//_LEN:地址长度=4G字节

0x04、0x80、0x00、0x00、0x00、0x00、0x00、0x00,//_ATT:类型特定属性

0x79,0x0//资源列表的结束标记

})

方法(_STA,0x0,NotSerialized(未序列化)){

返回(0x1f)

}

方法(_MGT,0x0,NotSerialized(未序列化)){

返回(0x1f)

}

}

注意,所使用的特定CRC32算法对于本示例无关紧要,只要其导致4字节的值。

正常操作

正常操作涉及从系统软件的角度看NVDIMM表现为正常DIMM以提供与正常DIMM相同的性能的状态。

OS到BIOS到NVDIMM:在正常操作期间,NVDIMM控制器将通过SMBUS接口响应BIOS/OS接口调用。一些示例包括例如使用ACPI调用的DSM方法,用于获得NVDIMM健康信息。BIOS可以直接访问SMBUS。

NVDIMM到OS/BIOS:NVDIMM还可以基于不同的警报事件向主机CPU发送SMALERT信号。这可能包括利用DIMM上的温度传感器信号。

备份操作

备份操作涉及其中NVDIMM将其易失性状态从DRAM保存到DIMM中的集成NAND闪存的状态。下面描述作为NVDIMM备份操作的一部分涉及的各个步骤。它们可以被组织成三个主要块,其可以被视为步骤,或被视为步骤或事件的集合。

块1:触发备份。这包括12V电源损耗、刀片断电(通过CM)、电池消耗(通过CM)和OS关闭。

块2:启动备份。这包括通知CPU停止存储器访问(PM_SYNC),刷新I/O缓冲区和存储器缓冲区,以及启动NVDIMM备份。

块3:供电备份。这包括将系统102保持在复位模式5-10s以供PCIe设备136备份,并且NVDIMM直接连接到超级电容器或12V辅助电源用于备份。

备份示例步骤1——触发备份。在一些示例中,一些备份触发源包括临界电池阈值、刀片处的欠电压以及数据安全断电CM API 602。这些中的一个或多个可以触发354云服务器或其他服务器102备份。在NVDIMM中,备份可以包括将数据从DDR3DRAM备份到NVDIMM中的NAND闪存。这个备份过程可以由这三个主要事件在一些云服务器中启动。然而,除了这些事件之外,诸如THERM_TRIP等一些内部事件也可以触发354备份操作。

下面参考图4所示的CPLD定时图。在图中从图12的基本临时应用中提供的图中进行了一些装饰性格式化改变,以便于符合专利图格式要求。例如,标识符中的下划线已替换为连字符。小写字母也已大写,一些文本已由占位符替代,并且已进行其他外观更改。对应关系如下:

P12V-AUX表示:P12V_AUX

ADR-TRIGGER#表示:ADR_TRIGGER(触发)#

PM-SYNC表示:PM_SYNC

ADR-COMPLETE表示:ADR_COMPLETE(完成)

SYS-PWROK表示:SYS_PWROK

CPLD-STATE表示:cpld_STATE(状态)

M2-STATE表示:M.2_STATE

RAID-STATE表示:RAID_STATE

NVDIMM-STATE表示:NVDIMM_STATE

ST-DONE表示:st_DONE(完成)

ST-NORMAL-OP表示:st_Normal(正常)_OP

ST_RESET表示:st_RESET(复位)

ST-SV表示:st_SAVE(保存)

ST-DN表示:st_DONE(完成)

ST-SHTDWN表示:st_SHUTDOWN(关闭)

ST-PFF表示:St_PCH_off(原文如此st_PCH_off)

ST-OFF表示:st_OFF

椭圆中的35表示:35s

椭圆形中的50表示:50us

椭圆中的3表示:<3s

椭圆中的7表示:<7s

椭圆中的160表示:<160s

AA表示:系统电源关闭

BB表示:当M.2和RAID保存完成时,BMC禁用电源[换行]CPLD状态机关闭电源

CC表示:AC电源故障触发事件

DD表示:CM[机箱管理器]监测用于恢复的AC功率

EE表示:CM声明ADR_TRIGGER(触发)#

FF表示:PCH声明ADR_COMPLETE(完成)

GG表示:BMC在M.2之后禁用功率并且RAID保存完成

HH表示:NVDIMM保存完成

JJ表示:PSU禁用在PSU中编程的12V[换行]延迟时间

KK表示:BMC中的定时器

LL表示:BMC中的定时器

MM表示:ADR_COMPLETE(完成)取消声明ADR_TRIGGER(触发)#

NN表示:CPLD声明SAVE(保存)#发起NVDIMM SAVE(保存)

PP表示:ADR_COMPLETE(完成)将SYS_PWROK取消置为PCH

QQ表示:PCH声明平台复位到系统(CPLD)

RR表示:CPLD声明发起M.2SAVE(保存)的PERST(复位)#

SS表示:当移除功率时,ADR无效

事件1.检测来自HSC的12V功率损失(这仅适用于超级电容器)。这种触发NVDIMM备份的方法主要应用于当超级电容器或局部能量存储用作NVDIMM的备份能量源时。如图4和图7所示,热插拔控制器(HSC)之后的欠电压监测器(UVM)电路监测服务器的12V输入电压,一旦输入电压达到11.2V,则在PCH上声明ADR_TRIGGER(触发)(GPIO37)(在其他实施例中可以使用其它电压)。一些云服务器使用这种欠电压检测作为功率损失的指示,这是由于机箱PSU中的AC功率的损失或者从机箱中物理地移除刀片。刀片BMC可以通过清除GPIOA7上的使能来禁用此基于欠电压事件的ADR_TRIGGER(触发)(这将针对基于电池的NVDIMM备份进行)。图4示出了一些合适的逻辑。当使用没有超级电容器的NVDIMMS时,通过用于检测来自HSC的电压损耗的比较器的触发NVDIMM备份可以通过来自具有电池备份的机箱级电源的电压调节来调用。在电池上运行的给定时间段之后,如果机箱管理模块206没有触发ADR,则机箱电池电源可以将输出电压降低到低于比较器的ADR触发阈值的水平。

事件2.经由BMC来自机箱管理器(CM)的明确的ADR命令。CM基于两类事件触发NVDIMM备份。对于第一类,CM监测电池容量,并且当电池达到某个临界阈值时(例如,在AC损失之后35-40秒从电池供电之后),其通过到具有NVDIMM的机箱中的所有刀片502的IPMI(Set_NVDIMM_Trigger)命令发送明确的NVDIMM备份触发。如果由于任何原因,机箱管理器在电池已经达到临界阈值之后无法调用ADR触发,则电池204可以将其输出电压降低310到低于比较器或热插拔控制器的功率损失检测的点316,以自动调用ADR触发。在该配置下,电池可以保持在输出电压电平或返回到12V,然而预期PCIe设备和NVDIMM将在上面事件1中概述的比较器电压电平操作。

对于第二类别,只要接收到移除服务器的电源的用户请求,CM就在服务器上调用明确的NVDIMM备份。CM为数据中心操作员提供三个主要接口,以便移除云服务器的电源(如下所示):(i)datasafesetpoweroff(数据安全设置关机)移除服务器的12V电源,(ii)datasafesetbladeoff(数据安全设置刀片关闭)移除服务器主板的电源,同时不影响12V输入电源,(iii)datasafesetbladeactivepowercycle(数据安全设置刀片有源功率循环)移除主板电源,随后重新启用刀片电源。CM还具有与下面列出的示例一致的相应的通电API 602,用于对刀片供电而不影响任何未决的数据安全备份操作。对于具有NVDIMM的服务器(使用meminfo数据结构标识),CM会拦截这两个与刀片电源相关的接口,并且通过向刀片式BMC发送Set_NVDIMM_Trigger(触发)IPMI命令来触发NVDIMM备份。原始用户移除刀片电源的请求将仅在备份操作完成后执行。

DatasafeSetBladeOff(数据安全设置刀片关闭)(int bladeId);

DatasafeSetBladeOn(数据安全设置刀片开启)(int bladeId);

DatasafeSetPowerOff(数据安全设置关机)(int bladeId);

DatasafeSetPowerOn(数据安全设置开机)(int bladeId);

DatasafeSetBladeActivePowerCycle(数据安全设置刀片有源功率循环)(int bladeId);

GetBladeDatasafePowerState(获取刀片数据安全功率状态)(int bladeId);

事件3.经由BMC来自主机软件(BIOS/OS)的明确的ADR命令。BIOS(或OS)可以通过经由BMC在PCH上声明ADR_TRIGGER来调用NVDIMM备份操作。BIOS通过使用KCS接口与BMC通信(通过IPMI命令)来实现这一点。此方法通常由BIOS用作其正常关闭序列的一部分。这确保了NVDIMM中的易失性状态在NVDIMM失去功率之前被备份,作为转换到S5关断功率状态的一部分。注意,服务器重新启动不需要NVDIMM备份,因为NVDIMM的电源不会丢失。在一些实施例中,考虑到ADR,云服务器不支持休眠。

备份示例步骤2——初始化备份

在一些情况下,存储器自刷新在ADR_COMPLETE(完成)之前。一旦通过上面讨论的替代方法之一在PCH上声明了ADR_TRIGGER(触发),PCH在开始NVDIMM保存过程之前执行一些备份——初始化/清除活动。此清除活动包括向CPU发送PM_SYNC以暂停内存操作,刷新内存控制器缓冲区,刷新IIO PCIe缓冲区和刷新DIMM行寄存器。为了确保所有这些易失性状态被刷入NVDIMM中,一些实施例在通过触发NVDIMM上的SAVE信号开始NVDIMM保存过程之前等待PCH中的(例如)200μs的编程延迟(在接收到ADR_TRIGGER(触发)之后)。例如,如果PCH B0步进仅允许60us延迟定时器,则一些实现在ADR_COMPLETE(完成)和SAVE(保存)之间增加140us的延迟,如图4中的电源定序CPLD所示。在其他实现中可以避免该附加延迟,其中PCH B1步进允许高达800us的延迟定时器,从而允许ADR_COMPLETE(完成)直接连接到NVDIMM上的SAVE(保存)引脚。一些NVDIMM软件实现使用非暂态存储,因此不需要CPU数据高速缓存刷新。

清除时间的为200us(200微秒)的这段时间表示在ADR_TRIGGER(触发)事件和当使用PWRGD_PS_PWROK信号指示的系统电压轨电源关闭时之间的至少200us的服务器保持时间。这在一些实施例中允许基于超级电容器的NVDIMM备份操作(通过HSC欠电压电路触发)。一些实现为PWRGD_PS_PWROK信号设置电压阈值,以允许在ADR_TRIGGER(触发)和PWRGD_PS_PWROK之间有200us的保持时间(基于在服务器主板中具有足够的电容以维持200us的全部服务器负载)。基于经验测量,PWRGD_PS_PWROK的该阈值电压被确定为10.2V(该值在一些实施例中可以不同,例如可以低至9.6V)。在基于电池的NVDIMM备份的情况下,机架级电池可以用于在ADR_TRIGGER之后为整个服务器供电200us。200us是一个示例;技术人员将确定其他实现的相应时间。

备份示例步骤3——为备份供电

在超级电容器和机箱级电池的情况下,在使用到NVDIMM的ADR_COMPLETE/SAVE(完成/保存)信号启动备份之后,可以安全地关闭主板电压轨(但是对于一些PCIe设备,一些示例仍然使电压轨保持活动几秒钟),因为NVDIMM直接连接到备份功率源。

在备份操作期间,采取步骤以帮助确保备份操作不中断。特别地,可以防止在备份操作期间使云服务器断电(切断对HSC的电源)的任何尝试。一些云服务器使用刀片式BMC和机箱管理器(CM)实现的组合来实现这一点,这将在下面详细描述。

一些实施例的附加实现细节

CM改变。在一些实施例中,存在CM实现的两个附加的NVDIMM相关IPMI消息。这些消息如下所述。

Set(设置)_NVDIMM_Trigger(触发)——该消息既用于配置上述NVDIMM触发机制,又用于使得在BMC上的GPIO的声明导致NVDIMM保存。

Get(获取)_NVDIMM_Trigger(触发)——该消息用于从BMC查询NVDIMM配置的当前状态。

此外,CM负责启用或禁用来自HSC的欠电压驱动的ADR_TRIGGER(触发)信号。CM将向BMC发送Set(设置)_NVDIMM_Trigger(触发)命令,字节1设置为00h,以禁止来自HSC的ADR_TRIGGER(触发)。

CM 206监测电池容量,并且当电池达到某个临界阈值时(例如,在源出35秒之后接着是AC损失),其通过ADR IPMI(Set(设置)_NVDIMM_Trigger(触发))命令向具有NVDIMM(通过内存信息数据结构为每个刀片标识)的所有刀片发送明确的NVDIMM备份触发。BMC使用对在NVDIMM刀片上执行任何电源操作之前CM将等待的时间量响应该命令。

当接收到针对该刀片的刀片功率状态改变命令(诸如SetPowerOff(设置关机)或SetBladeOff(设置刀片关闭)命令)时,CM还向NVDIMM刀片发送明确的ADR IPMI(Set(设置)_NVDIMM_Trigger(触发))命令。然后,CM将在执行实际用户命令之前等待由BMC响应Set(设置)_NVDIMM_Trigger(触发)命令指定的时间量。

CM基于meminfo结构的内容——NVDIMM的存在和超级电容器(在服务器上的一个或多个DIMM上)的存在来设置BMP中的Nvdimm_Backup_Delay持续时间(完成整个备份的估计时间)。

BMC改变。当BMC接收到IPMI Set_NVDIMM_Trigger消息时,它在PCH上声明GPIO37以驱动ADR_TRIGGER。在BIOS使用KCS接口通信后,BMC将读取meminfo结构。BMC将根据请求将meminfo结构传送给机箱管理器。如图4所示,通过将ADR_COMPLETE信号连接到BMC GPIO10来向BMC通知NVDIMM备份操作。在ADR_COMPLETE信号的通知之后,BMC将在解除声明CPLD上的FM_BMC_ONCTL#引脚之前等待预定量的时间(例如,5-10秒),这复位整个主板128。这是为了支持PCIe的数据安全操作。在声明FM_BMC_ONCTL之后,BMC将内部定时器运行一定时间(Nvdimm_Backup_Delay秒)以确保NVDIMM备份有足够的时间。BMC固件将具有此参数的默认值(200s),其也可以使用set_ADR_Trigger IPMI命令从CM配置。(在给定的替代实施例中,在示例中使用的任何时间段可以被改变和/或被编程或以其它方式不同地配置)。在此等待时间期间,BMC的IPMI命令请求-响应以两种主要方式改变。首先,除非提供了明确的nvdimm-backup(备份)-override(覆盖)标志,否则任何刀片电源命令(来自CM或刀片上的带内)都将用故障通知进行响应。第二,来自CM的ADR IPMI命令被用时间延迟值(以秒为单位)来响应,该时间延迟值指示CM206在发送任何刀片电源关闭命令之前将等待的时间量。此时间延迟值表示NVDIMM保存操作中剩余的时间量(在Nvdimm_Backup_Delay(延迟)秒的等待时间内)。

BIOS改变。代码现在使用NVDIMM/超级电容器存在信息填充meminfo结构。代码还提供了通过在开机时相应地恢复保存的数据来触发ADR保存以便有序关闭的功能。在重新启动过程中,BIOS不会触发ADR。

PSU/电池固件更改。AC电源丢失后的PSU固件行为如下。它在AC损失后等待38s(如果柴油发电机在这段时间内没有承受负载,则假定NVDIMM备份已由CM启动)。它检查电池输出功率是否低于每个电池75W。如果没有,则关闭电池。如果电池输出功率小于75W,则将电池的运行时间延长200秒钟(之后电池将关闭)。在此期间,如果电池电量大于75W,固件会持续检查电池电量并关闭。注意,在上述电池放电之后关闭电池(与使其完全耗尽电荷相反),以防止电池深度放电和随之而来的电池过早故障。图10示出了使用具有机箱级PSU/电池基础设施形式的本地能量存储的虚拟电池实现(即,仿真)的图的电池操作。一些其他基于框架的电源和电池基础设施在性能上在性质上相似,但是具有与图10的示例不同的时间和电压电平。

该方法转化为用于基于电池的NVDIMM备份源的至少两个约束。首先,NVDIMM备份期间每个云服务器的功耗限制为小于18.75W(75W*6/24,假定6个电池和24个服务器使用NVDIMM)。其次,一旦云服务器进入NVDIMM备份操作模式,其在此状态下的最大时间量被限制为200秒。

还要注意,在本示例中的12V辅助连接器支持在服务器中的所有NVDIMM上的24W或2Amps的最大功率。其他实现可能不同。

错误处理。记录错误事件。仅在内存初始化(服务器引导过程中)时才响应备份错误。

恢复操作

NVDIMM恢复操作(将数据从NVDIMM中的NAND闪存复制到DRAM)作为在电源恢复到服务器之后的服务器引导过程的一部分发生。尽管在NVDIMM备份操作完成之前可以恢复交流电源,但一个云服务器BMC将确保在备份操作完成后(通过在等待Nvdimm_Backup_Delay之后取消声明FM_BMC_ONCTL)电源已完全从服务器中移除。在备份操作完成之后,使用对刀片供电(和重新启动)的明确命令(从数据中心操作员通过CM API 602)。BMC将在接收到明确的“刀片电源开启”IPMI命令之后或在BMC本身被复位之后恢复对刀片主板128的功率。

BIOS将作为服务器重新启动过程的一部分开始执行。在初始化NVDIMM 138之后,如果存在有效的备份图像,则BIOS将尝试恢复NVDIMM备份数据。在NVDIMM备份过程期间发生的任何错误将由NVDIMM控制器在此阶段传送到BIOS。BIOS还将知道作为恢复操作的一部分发生的错误。这些错误将由BIOS记录在刀片式系统事件日志中。

作为NVDIMM恢复操作的一部分,BIOS确保NVDIMM的DIMM部分的内容不被修改/损坏(即,作为重启的一部分,NVDIMM138的电源不会丢失)。根据配置,在启动恢复操作(NVDIMM控制器可以将超级电容器电荷电平传送到BIOS)之前,BIOS可以或可以不等待超级电容器充分充电(用于后续的电源损耗/备份)。在恢复操作完成后(通过来自NVDIMM控制器的通知),BIOS将NVDIMM的控制权移交给OS。

功率安全PCIe设备

云服务器中的PCIe设备

一些云服务器具有M.2 SSD和RAID控制器,其在内部使用DRAM以提高写入性能;该DRAM将在掉电后安全地保持。例如,某些RAID控制器使用高达2GB的DRAM,在电源故障时可能需要15秒钟刷新持久性介质。传统上,这些PCIe设备使用定制的超级电容器能量存储设备来执行易失性状态备份。本文中所描述的一些云服务器实施例利用机箱级和/或机架级UPS电池用于在PCIe设备中执行备份,从而减少或移除来自超级电容器的成本开销。

功率安全的PCIe设备实现

PCIe设备的功率安全实现类似于NVDIMM,具有以下所述的一些差异。

上电备份

与基于超级电容器的PCIe备份不同,整个服务器主板可能潜在地被断电,基于机箱-电池的PCIe备份保持主板电源轨在备份操作的整个持续时间内活动。这涉及电源序列CPLD行为的改变;电源排序CPLD状态转换的示例在图11中示出,并且在下面讨论。在图11的示例中,LES指示共享的本地能量存储器,例如机箱级电池204或机架级电池204。此外,服务器BMC不知道强制安全PCIe设备136的存在/不存在,因此BMC延迟电源排序1-5s,而不考虑服务器配置。然而,BMC通过meminfo数据结构知道NVDIMM及其超级电容器的存在/不存在。

在存在使用三种功率状态的安全PCIe设备的情况下的CPLD功率排序操作在图4中示出。在正常服务器操作期间,CPLD保持在st_Done状态,其中所有功率都良好,并且CPLD的范围中的一切退出复位。使用ADR_COMPLETE信号使CPLD了解即将发生的PCIe备份。在此备份操作期间,CPLD保持为用于PCIe备份操作的所有电压轨供电344。这通过转换到st_RESET电源状态来实现,其中该实现向PCIe设备136发送PERST/RESET信号,并且保持它们的电压轨有效但可能处于低功率复位模式。在一些实施例中,在st_RESET中,CPLD忽略所有断电信号,如S5。这些电压轨保持活动(在st_RESET状态下的占用持续时间)的持续时间取决于诸如PCIe的存在、PCIe上的超级电容器上存在、PCIe设备中使用的DRAM大小等因素。本示例使用10秒(十秒)作为允许的PCIe设备备份时间(也可以配置此持续时间)。如图所示,通过将ADR_COMPLETE信号连接到BMC GPIO10来向BMC通知PCIe备份操作。在通知ADR_COMPLETE信号之后,BMC将在取消声明CPLD上的FM_BMC_ONCTL#引脚之前等待预定量的时间(10s),这将复位整个主板。

连接备选和术语

一些实施例包括连接/被连接,其中其它实施例包括耦合/被耦合。例如,一些实施例提供了一种用于系统中的主板的易失性存储器数据保存子系统,子系统包括:易失性存储器设备共享功率源连接,其在连接到共享功率源并且还通过主板连接到易失性存储器设备时向所述易失性存储器设备提供操作功率,所述易失性存储器设备是从共享功率源接收功率的至少两个单独可插式设备之一;数据保存触发连接,其在连接到易失性存储器设备并且被触发时向易失性存储器设备发送数据保存命令;以及数据保存触发控制器,其操作以在以下条件中的至少一个发生时触发数据保存触发连接:(a)可编程时间量逝去,易失性存储器设备由不是由AC功率源驱动的源来供电;(b)易失性存储器设备共享功率源上的功率电平降低到小于正常操作功率但仍然足以在数据保存操作期间为易失性存储器设备供电的值;(c)向数据保存触发控制器通知操作系统关闭命令;或(d)在没有操作系统关闭命令的情况下,向数据保存触发控制器通知明确的数据保存命令。对于其它实施例,存在类似的耦合与连接替代。

主板上的“连接的”项目彼此接触和/或彼此具有直接电连接。相反,项目可以电和/或行为“耦合”,即使它们彼此不接触或具有直接电连接。另外,当讨论网络连接、因果关系和其中不一定存在物理接触或直接电连接的其他情况时,在本领域中也使用“连接”,并且其应当被相应地理解。

机架与机箱

机架式服务器使用自包含的硬件,在这种意义上,可以将机架式服务器插入标准电源插座,连接网络电缆、引导,并且具有操作服务器。它们通常安装在通常为19英寸宽的计算机硬件机架中,但它们可以坐在桌子或其他表面上。刀片式服务器不是独立的。它们设计为安装在被称为“机箱”的刀片外壳中,外壳包括电源和网络部件。插入有刀片的机架可以是机架可安装的。术语“框架”在本文中用于表示机架和/或机箱。

附加观察

当向系统主板断电时,NVDIMM传统上在DIMM上使用超级电容器来将其DRAM内容备份到持久存储器。这些超级电容器通常根据DIMM安装,并且在财政成本和服务器机箱内的物理空间上特别是在高密度配置中是昂贵的。此外,这些超级电容器的低温操作条件使得难以用NVDIMM冷却高密度配置。

用超级电容器启动NVDIMM备份的熟悉的过程通过芯片组ADR引脚。此引脚使芯片组刷新CPU内存缓冲区,并在所有NVDIMM上声明ADR引脚。ADR是低电平有效信号,通常由于系统主板或主板上的比较器的功率损失而被驱动为低电平,这响应于当到电源的AC电源丢失时主板的功率恶化时的电压降。耦合到NVDIMM的超级电容器通常将为DIMM备份操作提供功率。

相关机制可以用于备份每个DIMM模块内部电池模块没有超级电容器的NVDIMM。取而代之,NVDIMM具有位于服务器主板之外并且跨一个或多个系统(诸如云服务器本地能量存储(LES)/云服务器机箱电池(微软公司的标记))共享的集中式电池。在用于机箱管理器模块的微软云服务器(Microsoft Cloud Server)的一些实施例中还存在触发NVDIMM数据保存的规定,而本地能量存储器提供电容

一些实施例具有云服务器LES解决方案,在电池上的预定时间之后更低的310输出电压,其通常被配置为发电机转换时间。在这段时间过后,AC功率没有返回,电源或电池模块知道发电机没有上线,并且功率损失即将来临。在电池容量耗尽之前,电源控制模块或电池管理模块可以将电池的电压从12伏降低到刀片主板比较器下方的点316,以用信号通知PCH上的ADR引脚。

通过将电压输出降低到低于主板比较器的点,NVDIMM备份将被自动触发,同时DIMM辅助电源轨保持在11伏或刚好低于比较器触发电平的点上供电。较低电压速率316足以完成对持久存储器的NVDIMM备份。在一些实施例中,在备份期间在辅助电源和正常电源轨之间没有区别。相同的触发354机制可以用于较高电压实现。

在一些实施例中,云服务器NVDIMM和PCIe设备解决方案具有没有内部电池或超级电容器的持久性数据保存电容。它们使用来自外部电源控制电路的电压调节来有意地调用刀片的主板电压比较器来触发ADR引脚,同时电源电池仍具有足够的容量来执行NVDIMM备份。本文还描述了用于在云服务器中使用的NVDIMM方法和电源排序。

本实现的益处是移除了内部电容器和电池,同时移除了系统中的单点故障并且涵盖在持续RAM备份期间数据丢失的角落情况。讨论的一些示例特定于微软云服务器,但是它们的教导和在机箱或机架配置中实现NVDIMM而没有离散DIMM电容或电池的方法更广泛地适用。

在一些实施例中,ADR触发(DIMM备份)事件主要来自于3个实体:PCH、CM和12V欠电压。

PCH-OS或另一软件实体可以通过PCH命令ADR作为有序关闭或重新启动的一部分。

机箱管理器——机箱管理器可以通过BMC命令ADR作为监测机箱12V电源的一部分。在由电源发出警报的情况下,机箱管理器负责评估警报的临界性并通过BMC对ADR进行排序。在这种情况下,BMC将负责将GPIO驱动到PCH的ADR_TRIGGER#引脚。这主要适用于具有其中可以检测到故障的机箱内部电池备份的系统,但本地12V电源没有立即丢失。

12V欠电压——对12V热插拔控制器的输出的欠电压监测可以产生到PCH的ADR_TRIGGER#。这可以用于具有NVDIMM和超级电容器的系统以及用于具有NVDIMM并且没有本地电容的系统。机箱电池备份可以为备份提供能量,而电池DCU或控制器可以降低输出电压以调用欠电压条件。

进一步关注图4,下面讨论一些云服务器ADR触发信号。ADR_TRIGGER#——从12V欠电压监控器或直接从BMC供电。当被声明时,该信号在PCH内启动ADR。欠电压可以由PSU/电池有意地调用,或者在掉电期间由于主板的电压损失而自然调用。

ADR_COMPLETE——来自PCH。当被声明时,该信号指示ADR操作已经完成并且NVDIMM保存操作可以开始。如果配置为NVDIMM+机箱电池,则CPLD状态机通过启动系统复位并启动复位或保存到数据安全存储设备来响应ADR_COMPLETE。

NVDIMM_PRSNT——从BMC驱动。NVDIMM+机箱电池。向CPLD指示包含机箱内部电池备份的系统中存在NVDIMM。该信号用于限定ADR_COMPLETE,使得在配置不是NVDIMM+机箱电池的情况下CPLD状态机不响应ADR_COMPLETE。这将确保在配置不是NVDIMM+机箱电池的情况下会发生正常关闭。

SAVE#——声明时,该信号将NVDIMM置于保存模式。该信号由ADR_COMPLETE触发。它通过CPLD缓冲以提供鉴定。

FM_BMC_ONCTL#——来自BMC或PCH的功率使能信号。预计这是对CPLD状态机的PWREN输入。对于NVDIMM+机箱电池,接触声明该信号将导致CPLD禁用刀片上的开关电源。

一些附加组合和变型

代码、数据结构、逻辑、部件、信号、信号定时和/或其功能等同物的这些组合中的任一者也可以与上述系统及其变型中的任一者组合。过程可以包括可操作的任何子集或组合或序列中的本文所描述的任何步骤。每个变体可以单独出现,或与任何一个或多个其他变体组合出现。每个变体可以与任何过程一起发生,并且每个过程可以与任何一个或多个其他过程组合。每个过程或过程组合(包括变体)可以与上文所述的任何培养基组合和变体组合。

在一些示例中,用于在AC功率损失的情况下保留数据的装置包括数据保存状态机214。在一些示例中,用于在AC功率损失的情况下保存数据的装置包括与图2一致的装置和/或电路。在一些示例中,用于在AC功率损失的情况下保存数据的装置包括其操作与图4一致的设备和/或电路。在一些示例中,用于在AC功率损失的情况下保存数据的装置包括其操作与图11所示的状态转换一致的设备和/或电路。在一些示例中,用于在AC功率损失的情况下保存数据的装置包括CPLD。在一些示例中,用于在AC功率损失的情况下保留数据的装置包括耦合到BMC的CPLD。在一些示例中,用于在AC功率损失的情况下保存数据的装置包括如图2所示耦合在一起的CPLD、BMC和PCH。在一些示例中,用于在AC功率损失的情况下保存数据的装置包括如图7所示耦合在一起的CPLD、BMC和PCH。

一些实施例包括与图2一致的主板、热插拔控制器、基板控制器、数据保存状态机和平台控制器中枢。一些实施例包括与图2一致的主板、热插拔控制器、基板控制器、数据保存状态机、平台控制器集线器和框架管理器。一些实施例包括除了发生器216之外的图2所示的所有项目。在一些实施例中,框架是机箱;在一些实施例中,它是机架。一些实施例包括图7所示的项目。一些实施例包括图8所示的项目。一些实施例包括图9所示的项目。一些实施例包括其操作与如图10所示的数据安全操作一致但不一定具有相同的时间的设备和/或电路。

一些实施例包括步骤302和324。一些实施例包括步骤302、324和332。一些实施例包括步骤302、328和332。一些实施例包括步骤310和324。一些实施例包括步骤310、324和326。一些实施例包括步骤324和340。一些实施例包括步骤356和324。这些仅是对本领域技术人员容易理解的很多可能示例中的一些示例。

结论

尽管本文中明确地示出和描述了特定实施例作为过程、配置的介质或系统,但是应当理解,一种类型的实施例的讨论一般也延伸到其他实施例类型。例如,关于任何附图的过程的描述还有助于描述配置的介质,并且帮助描述如结合其他附图讨论的系统和制造的技术效果和操作。不会认为来自一个实施例的限制必然被读入另一实施例。特别地,过程不一定限于在讨论系统或制造、例如配置的存储器时呈现的数据结构和布置。

本文中对具有一些特征X的实施例的引用和本文其它地方对具有一些特征Y的实施例的引用并不排除具有特征X和特征Y的实施例,除非这里明确陈述了这种排除。所有可能的否定权利要求限制在本公开的范围内,在某种意义上,被声明为实施例的一部分的任何特征也可以被明确地从包括在另一实施例中移除,即使在任何示例中没有给出该特定排除。术语“实施例”在这里仅被用作“过程、系统、制造品、配置的计算机可读介质和/或本文中以与适用法律一致的方式应用的教导的其他示例”的更方便的形式。因此,给定的“实施例”可以包括本文公开的特征的任何组合,只要该实施例与至少一个权利要求一致即可。

并非图中所示的每个项目都需要存在于每个实施例中。相反,实施例可以包含在附图中未明确示出的项目。尽管这里在文本和附图中通过具体示例示出了一些可能性,但是实施例可以偏离这些示例。例如,示例的具体技术效果或技术特征可以以不同的硬件和/或软件被省略、重命名、不同地分组、重复、实例化、或者是在两个或更多个示例中出现的效果或特征的混合。在一些实施例中,在一个位置处示出的功能还可以在不同位置处提供;技术人员认识到,可以在给定实现中以各种方式定义功能模块,而不必从作为整体观看的交互模块的集合中省略期望的技术效果。

贯穿全文通过附图标记参考了附图。在附图中或在文本中与给定附图标记相关联的短语中的任何明显不一致性应当被理解为简单地加宽由该标记引用的范围。给定附图标记的不同实例可以指代不同的实施例,即使使用相同的附图标记。

如本文所使用的,诸如“一个(a)”和“该(the)”等术语包括一个或多个所指示的项目或步骤。特别地,在权利要求中,对项目的引用通常表示存在至少一个这样的项目,并且对步骤的引用表示执行步骤的至少一个实例。

标题仅是为了方便;关于给定主题的信息可以在其标题指示该主题的部分之外找到。

所提交的所有权利要求和摘要是说明书的一部分。

尽管已经在附图中示出并在上面描述了示例性实施例,但是对于本领域普通技术人员来说容易理解的是,在不脱离权利要求中阐述的原理和概念的情况下,可以进行很多修改,修改不需要包含整个抽象概念。虽然以结构特征和/或过程动作专用的语言描述了主题,但是应当理解,所附权利要求中定义的主题不一定限于权利要求中描述的具体技术特征或动作。在给定的定义或实施例中识别的每种方式或方面或技术效果不必存在于或用于每个实施例中。相反,所描述的具体特征和动作和效果被公开作为在实现权利要求时考虑的示例。

不满足包括整个抽象概念但落入权利要求的等同物的含义和范围内的所有变化将被包括在其法律允许的最大范围内的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1