具有非易失性双列直插存储器模块的异步DRAM刷新的正常关机的制作方法

文档序号:13474222阅读:310来源:国知局
具有非易失性双列直插存储器模块的异步DRAM刷新的正常关机的制作方法

相关申请的交叉引用

本申请要求于2016年07月08日提交的美国临时申请no.62/359934的权益,其全文通过引用结合于此。

本发明总体上涉及计算机系统。



背景技术:

计算机系统可以包括一个或多个中央处理单元以及一个或多个存储器模块。存储器模块包括一个或多个存储器集成电路(“芯片”)。存储器芯片可以包括易失性存储器(例如,动态随机存取存储器(dram))、非易失性存储器(例如闪速存储器),或者此二者。当计算机系统的电源被中断时,易失性存储器会丢失其内容。相反,即使在没有系统电源的情况下,非易失性存储器也保留其内容。一般来说,易失性存储器比非易失性存储器更快,因此被优选作为用于操作系统、应用程序等的过程的主存储器。目前可用的计算机系统通常针对主存储器采用包括易失性存储器的双列直插存储器模块(dimm)。

与dimm不同,非易失性dimm(nvdimm)包括易失性存储器以提供快速访问速度,并还包括非易失性存储器作为应对电源故障的保险。更具体地,在nvdimm中,在电源故障的情况下,易失性存储器的内容在异步dram刷新(adr)周期中被存储在非易失性存储器中,但是在系统正常地被关机时则并不如此。



技术实现要素:

在一个实施例中,通过向异步动态随机存取存储器刷新(adr)触发设备发送命令以声明adr触发来启动计算机系统的正常关机。响应于该命令,adr触发设备声明adr触发以启动计算机系统的非易失性双列直插存储器模块(nvdimm)的adr。响应于adr触发由adr触发设备所声明,nvdimm的adr在完成计算机的正常关机之前被执行。adr触发设备可以是基板管理控制器(bmc)或原始设备制造商(oem)逻辑设备。该adr触发可能是电源按钮的激活。例如,bmc或oem逻辑设备可以在外围控制器集线器(pch)的电源按钮引脚上声明电源按钮信号以启动adr。bmc或oem逻辑设备可以响应于接收到oem命令而声明该电源按钮信号。

通过阅读本公开包括附图和权利要求在内的全部内容,本发明的这些和其它特征对于本领域技术人员而言将是轻易显而易见的。

附图说明

图1示出了根据本发明实施例的计算机系统的示意图。

图2示出了根据本发明实施例的执行计算机系统的正常关机的方法的流程图。

不同附图中使用相同的附图标记来知识相同或同样的组件。

具体实施方式

在本公开中,提供了诸如系统、组件和方法的示例之类的许多具体细节,以提供对本发明实施例的透彻理解。然而,本领域普通技术人员将认识到,本发明可以在没有这些具体细节中的一个或多个的情况下被实践。在其它情况下,并未示出或描述公知的细节以避免对本发明的多个方面造成混淆。

图1示出了根据本发明实施例的计算机系统100的示意图。例如,计算机系统100可以使用能够从intel公司商业采购的组件来被实施。更具体地,在图1的示例中,中央处理单元(cpu)130、外围控制器集线器(pch)140和基板管理控制器(bmc)170可以包括符合intel公司的haswell处理器微架构的设备。应当意识到,也可以使用来自其它计算机芯片供应商的兼容或类似的设备来实施本发明的实施例。

在图1的示例中,计算机系统100可以具有一个或多个cpu130。为了清楚起见,仅描述一个cpu130。cpu130可以具有用于控制一个或多个dimm123以及一个或多个nvdimm120的集成存储器控制器131。dimm123仅具有易失性存储器,而nvdimm120则具有易失性存储器121和非易失性存储器122。

诸如加利福尼亚州圣何塞的supermicrocomputer公司的原始设备制造商(oem)采用计算机芯片供应商的组件来设计和制造计算机系统。oem可以设计可能为该oem或其客户所特有的附加功能。在图1的示例中,计算机系统100包括oem逻辑设备150,其可以包括复杂可编程逻辑器件(cpld)、现场可编程门阵列(fpga)、专用集成电路(asic),或者其它可编程逻辑或定制逻辑设备。顾名思义,oem逻辑设备150是计算机系统100的oem所特有的,并且允许oem实施某些并非必然由计算机芯片供应商所提供的特征。下文中将更为明显的是,oem逻辑设备150可以被用作在计算机系统100被正常关机的情况下启动nvdimm120的adr的正常关机adr触发设备。

pch140被配置以为cpu130提供外围设备(例如,键盘、鼠标、显示器、磁盘)接口。在一个实施例中,pch140包括intelpch芯片。

bmc170被配置为监控指示计算机系统100的环境状况(例如,风扇速度、温度)的传感器信号,并且接收外部输入(例如,电源按钮、串行端口)。在一个实施例中,bmc170包括intelbmc芯片。在图1的示例中,bmc170和oem逻辑设备150都可以在pch140的电源按钮引脚(pwrbtn#)上生成电源按钮信号。在正常使用中,声明该电源按钮信号指示计算机系统的电源按钮100已被用户所激活,即被用户按下。在本发明的实施例中,bmc170或oem逻辑设备150中的任一个可以被用作正常关机adr触发设备,以用于在bmc170或oem逻辑设备150接收到用于启动adr的oem命令时进行该操作。响应于接收到该oem命令,bmc170或oem逻辑设备150可以在pchpwrbtn#引脚上声明电源按钮信号以模拟电源按钮激活,从而触发nvdimm120的adr。

计算机系统100包括基本输入/输出系统(bios)161。bios161(也称为“系统固件”)可以包括用于初始化和引导计算机系统100以运行操作系统162的代码(即,计算机指令)。bios161还可以包括高级配置与电源接口(acpi)代码(也被称之为“acpiasl代码”)。例如,bios161可以在可编程非易失性存储器上实施。在一个实施例中,bios161包括用于配置计算机系统100以在正常关机的情况下执行nvdimm120的adr的代码。

计算机系统100包括向系统提供电力的电源供应单元160。电源供应单元160生成power_ok信号以指示电源供应单元160能够提供充足的电力以支持计算机系统100的操作。在发生电源故障(例如,掉电、ac电源线移除、故障等)的情况下,power_ok信号被撤回(图1,101)。在这种情况下,oem逻辑设备150检测到power_ok信号指示电源故障并且作为响应而声明pchadr_trigger信号(图1,102)。响应于接收到该adr_trigger信号,pch140声明pm_sync信号以允许cpu130进行数据冲刷并开启adr定时器(图1,103)。当adr定时器到期时(即超时),pch140声明adr_complete信号(图1,104),以使nvdimm120执行save,即将内容从易失性存储器121传输到非易失性存储器122。因此,计算机系统100能够执行adr周期以最小化或减轻电源故障的不利影响。

电源故障是在计划之外且因此并未被计算机系统100所预期的硬关机的一个示例。一般要避免硬关机是因为它们会导致数据丢失。形成鲜明对比的是,正常关机是一种有序关机,其允许操作系统162(例如,microsoftwindows操作系统、linux操作系统)在计算机系统100被关机之前对计算机系统100进行准备(例如,保存数据)

正常关机可以通过调用操作系统162的关机过程来启动。例如,用户可以通过从操作系统162所提供的菜单中选择系统关机来启动正常关机。这使得操作系统162(例如,操作系统162的驱动器)得到正常关机的通知。作为响应,操作系统162可以根据acpi规范调用acpi_pts(准备休眠)功能以准备使得计算机系统100进入休眠状态。作为响应,提供acpiasl代码支持的bios161运行acpi_pts功能以使得计算机系统100进入休眠。随后,操作系统162向电源管理控制寄存器(pm1_cnt)进行写入以配置计算机系统100进入软关机状态,软关机状态是acpi规范中的状态s5(pm1_cnt.slp_typ到5,其中“5”指示状态s5)。操作系统162随后对电源管理控制寄存器进行写入以将系统置于软关机状态(pm1_cnt.slp_en)。在acpi规范下,在软关机状态中,计算机系统100关闭所有设备并且操作系统162并不保存任何上下文。计算机系统100因此需要彻底的重启才能唤醒。刚才所描述的正常关机过程将计算机系统100置于软关机状态,但是并未执行adr以在进入软关机状态之前将易失性存储器121的内容保存至非易失性存储器122。

图2示出了根据本发明实施例的执行计算机系统100的正常关机的方法200的流程图。如下文将更为明显的,方法200在正常关机期间允许nvdimm的adr。仅出于说明的目的,使用计算机系统100的组件对方法200进行解释。能够意识到,也可以采用其它组件而无损本发明的价值。在图2的示例中,步骤202、203、206和207可以由操作系统162执行;步骤204、205和208可以由bios161执行;步骤211则可以由pch140执行。

在一个实施例中,方法200是一种在计算机100要执行正常关机(图2,201)时被执行的计算机实施的方法。在这种情况下,操作系统162例如被用户、管理员或软件模块所指示以启动正常关机(图2,202)。响应于接收到启动正常关机的指令,操作系统162通过调用acpi准备休眠功能acpi_pts而使计算机系统100准备好进入休眠(图2,203)。该准备休眠功能例如可以由bios161所提供。

在一个实施例中,bios161包括使能电源管理控制的io捕获(iotrapping)的代码,诸如通过使能pm1_cntio捕获(图2,204),其中pm1_cnt是pch140的电源管理控制寄存器。这允许将写操作捕获到电源管理控制寄存器。bios161还可以包括指定正常关机触发的代码,在图2的示例中的正常关机触发是电源按钮激活(图2,205)。更具体地,bios161可以使能电源按钮重写adr启用(pbo_adr_en),这使得adr能够在电源按钮被激活时被触发。如所能够意识到的,步骤204和205也可以在初始化期间或者在配置电源管理控制寄存器为软关机状态之前的任何时间由bios161来执行。

操作系统162对电源管理控制寄存器进行写入以将计算机系统100置于软关机状态,诸如通过将5(用于指示状态s5)写入pm1_cnt.slp_typ(图2,206)。顾名思义,电源管理控制寄存器是用于配置计算机系统100的电源管理功能的寄存器或其它存储器位置。由于电源管理控制寄存器io可捕获的(参见图2,204)并且写入到电源管理控制寄存器是一项io操作,所以写入到电源管理控制寄存器触发捕获,从而导致cpu130进入系统管理模式并且运行系统管理模式中断(smi)处理程序(图2,207)。在smi处理程序执行结束时,bios161向正常关机adr触发设备(例如,oem逻辑设备150或bmc170)发送oem命令,并且bios161进入死循环,即并不执行任何操作的永无止境的循环(图2,208)。

在一个实施例中,该oem命令是由正常关机adr触发设备识别以声明所指定的adr触发的唯一命令。正常关机adr触发设备可以是oem逻辑设备150、bmc170或者一些其它设备。响应于接收到该oem命令(图2,209),oem逻辑设备150或bmc170将触发adr并且启动计算机系统100的关机(图2,210)。

在一个实施例中,所指定的adr触发是电源按钮激活。在这种情况下,响应于接收到该oem命令,oem逻辑设备150或bmc170通过声明以触发nvdimm120的adr的预定的时间量的电源按钮信号(以模拟电源按钮激活)来触发adr。例如,为了触发adr,oem逻辑设备150或bmc170可以声明pch140的pwrbtn#引脚达4秒或更长时间。在另一个实施例中,响应于接收到该oem命令,oem逻辑设备150或bmc170通过声明pch140的adr_trigger引脚来触发adr,随后关闭电源以将计算机系统100关机。所设计的正常关机adr触发设备还可以执行其它方式的触发adr而无损本发明的价值。

响应于接收到该adr触发,pch140启动adr以将易失性存储器121的内容复制到非易失性存储器122,并且将系统置于acpis5状态(图2,211)。这允许nvdimm120的adr在完成计算机系统100的正常关机之前被执行(图2,212)。

虽然已经提供了本发明的具体实施例,但是所要理解的是,这些实施例是出于说明而非限制的目的。通过阅读本公开,许多另外的实施例对于本领域技术人员将是显而易见的。

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