存储装置和存储控制方法与流程

文档序号:12176765阅读:216来源:国知局
存储装置和存储控制方法与流程

本发明的实施方式涉及对易失性存储器的数据进行备份的存储装置和存储控制方法。



背景技术:

近年来,用于防止如动态RAM(DRAM)这样的易失性存储器的数据由于电源故障或系统崩溃等而丢失的技术受到关注。

为了实现这种技术,开始研发带备份功能的存储装置。

但是,以往未曾考虑用于将已备份的数据向易失性存储器内的任意区域中进行还原的技术。



技术实现要素:

本发明的实施方式提供一种能够将所备份的数据向易失性存储器内的任意区域中进行还原的存储装置以及存储控制方法。

根据实施方式,存储装置具备易失性存储器、第一非易失性存储器、第二非易失性存储器、和控制器。所述第二非易失性存储器存储表示由主机系统执行的多个程序的标识符与由所述多个程序使用的所述易失性存储器的多个区域各自的地址信息的对应关系的管理信息。所述控制器响应于电源切断的事件,将所述易失性存储器的数据保存到所述第一非易失性存储器中。所述控制器在电源恢复后从所述主机系统接收所述多个程序内的第一程序的标识符、和表示由所述主机系统对所述第一程序重新分配的所述易失性存储器的第一区域的地址信息。所述控制器基于具有与所述第一程序的标识符相同的标识符的程序所对应的所述易失性存储器的区域的地 址信息,对保存由所述第一程序在电源切断前所使用的所述易失性存储器的区域的数据的所述第一非易失性存储器的区域进行识别。所述控制器将存储在所述识别出的所述易失性存储器的区域中的数据还原到所述易失性存储器的所述第一区域中。

附图说明

图1是表示实施方式涉及的存储装置的构成例的框图。

图2是用于说明由带备份功能的普通的存储装置执行的保存和还原(restore)工作的图。

图3是用于说明由该实施方式的存储装置执行的保存和还原工作的图。

图4是用于说明由该实施方式的存储装置执行的保存和还原工作的另一例的图。

图5是用于说明由该实施方式的存储装置执行的保存和还原工作的又一例的图。

图6是表示由该实施方式的存储装置使用的管理信息表的例子的图。

图7是表示用于该实施方式的存储装置和主机系统之间的接口的存储映射IO的内容的例子的图。

图8是表示由该实施方式的存储装置的控制器执行的登记工作和还原(恢复)工作的程序的流程图。

图9是表示由该实施方式的存储装置使用的管理信息表的另一例的图。

图10是表示使用图9的管理信息表由该实施方式的存储装置的控制器执行的登记工作和还原(恢复)工作的程序的流程图。

图11是表示由该实施方式的存储装置使用的管理信息表的又一例的图。

图12是表示使用图11的管理信息表由该实施方式的存储装置的控制器执行的登记工作和还原(恢复)工作的程序的流程图。

具体实施方式

以下,参照附图来说明实施方式。

首先,参照图1,说明一实施方式涉及的存储装置的构成。

该存储装置200例如设为双列直插式存储模块(DIMM)来实现。DIMM是能够向设置在主机系统110中的DIMM标准的存储器插槽中插入的存储模块。更详细地说,存储装置200具备非易失性存储器,能够作为具有备份功能的NV-DIMM(Non-Volatile Dual In-line Memory Module:非易失性双列直插式存储模块)来发挥功能。

在通常工作期间中,存储装置200对主机系统110而言可看作普通的DIMM。响应于电源切断(功率损耗)的事件,存储装置200能够将存储装置200内的易失性存储器的数据保存到存储装置200内的非易失性存储器中。

由此,即使发生没有预料到的停电、系统崩溃等,存储装置200也能够持续地维持易失性存储器的数据,从而能够防止易失性存储器的数据的丢失。

进而,在需要进行易失性存储器的数据的恢复时,存储装置200能够从非易失性存储器还原(restore)易失性存储器的数据。

在该情况下,存储装置200能够将被由主机系统110指定的任意的程序使用的易失性存储器的区域的数据向由主机系统110指定的易失性存储器内的任意的区域(地址空间)中还原。

由此,能够将某程序在电源切断前使用的易失性存储器的某个区域的数据向为了该程序而重新分配的易失性存储器内的另一区域中还原。

因而,即使对该程序重新分配了与电源切断前不同的易失性存储器内的区域的情况下,也能够使该程序的数据从非易失性存储器适当地返回到该重新分配的区域。

主机系统110是如服务器、个人电脑这样的信息处理装置。

主机系统110具备存储器总线控制器111、系统管理(SM)总线控制 器112、电源切断检测电路113、CPU114等。

存储器总线控制器111经由存储器总线与插入到存储器插槽的存储装置200电连接。主机系统110具有多个存储器插槽。在图1中,假设存储装置200和另一存储装置200’被插入到不同的2个存储器插槽中的情况。另一存储装置200’既可以是普通的DIMM,也可以是NV-DIMM。存储器总线控制器111能够在CPU114的控制下经由存储器总线对存储装置200和存储装置200’分别进行写入访问,另外,能够经由存储器总线对存储装置200和存储装置200’分别进行读取访问。

例如,存储装置200也可以用于需要备份的几个特定程序的数据的存储。在存储装置200’为普通的DIMM的情况下,该存储装置200’也可以用于无需备份的其他几个程序的数据的存储。也可以在存储装置200的存储器地址空间中分配用于处理重要的数据(关键数据(critical data))的几个应用程序的各个区域。

SM总线控制器112能够经由系统管理总线(SM总线)与存储装置200以及存储装置200’分别进行通信。SM总线是如I2C总线这样的串行总线。

SM总线控制器112能够经由SM总线从各存储装置读取SPD(Serial presence Detect:串行存在检测)数据。SPD数据是表示存储装置的类型、存储装置的构成、存储装置的特征等的数据。

进而,SM总线控制器112能够经由SM总线向存储装置200发送与数据的保存以及还原相关的各种指令和信息。在这些指令例子中,也可以包含备份指令(保存指示)、还原(恢复)指令、登记指令等。备份指令(保存指示)是对存储装置200指示将易失性存储器的数据向非易失性存储器中保存的指令。还原(恢复)指令是对存储装置200指示要还原易失性存储器的数据(存储器状态)的指令。登记指令是用于向存储装置200内登记保存以及还原工作所需要的管理信息的指令。在要根据登记指令登记的管理信息中至少包含某程序的标识符、和表示由主机系统110对该程序重新分配的易失性存储器的区域的地址信息。

电源切断检测电路113至少监视从主机系统110向存储装置200供给的存储器电源的状态。电源切断检测电路113也可以不仅监视存储器电源的状态,还监视主机系统110的系统电源的状态。在电源切断检测电路113检测到存储器电源或系统电源的电源切断时,SM总线控制器112也可以经由SM总线向存储装置200发送备份指令(保存指示)。

在存储器插槽具有被分配(assign)了用于指示保存的硬件信号(保存信号)的管脚(pin)的情况下,也能够将该硬件信号(保存信号)作为保存指示来利用。主机系统110也可以响应于电源切断的检测,将该硬件信号(保存信号)设定为激活状态。

CPU114是构成为控制主机系统110的各种组件(component)的处理器。CPU114执行各种程序。这些程序包含操作系统(OS)和各种应用程序。

存储装置200具备易失性存储器101、SPD存储器102、NVDIMM控制器103、非易失性存储器104、备份(backup)电源105、电源切断检测电路106、管理信息非易失性存储器201等。

易失性存储器101是作为存储被主机系统110利用的数据的DIMM来发挥作用的存储器。易失性存储器101具备例如多个DRAM芯片。

SPD存储器102是存储SPD数据的非易失性存储器。SPD存储器102例如由E2PROM构成。

NVDIMM控制器103包含控制逻辑,所述控制逻辑构成为执行用于从易失性存储器101向非易失性存储器104保存数据的保存工作、和用于从非易失性存储器104向易失性存储器101还原数据的还原工作。

NVDIMM控制器103具备用于经由SM总线执行与主机系统110的接口的存储映射IO(MMIO)103。MMIO103A是被映射到存储器地址空间的寄存器。

非易失性存储器104被用于对易失性存储器101的数据进行备份。非易失性存储器104具有易失性存储器101的容量以上的容量。非易失性存储器104既可以是NAND闪存器,也可以是如MRAM(Magnetoresistive Random Access Memory:磁性随机存取存储器)、ReRAM(Resistive Random Access Memory:电阻式随机存取存储器)、或FeRAM(Ferroelectric Random Access Memory:铁电随机存取存储器)这样的其他类型的非易失性存储器。

备份电源105是在电源切断时向存储装置200供给将数据从易失性存储器101向非易失性存储器104保存所需要的电力(备份电力)的电源。备份电源105也可以由电容器来实现。备份电源105既可以内置于存储装置200中,也可以经由电源线与存储装置200进行外部连接。

电源切断检测电路106监视从主机系统110供给的电力(存储器电源)的状态。在电源切断检测电路106检测到存储器电源的切断时,电源切断检测电路106向NVDIMM控制器103发送表示该电源切断的硬件信号。

NVDIMM控制器103响应于电源切断的事件,即响应于由电源切断检测电路106进行的电源切断的检测或来自主机系统110的保存指示,从易失性存储器101向非易失性存储器104保存数据。在电源切断的期间,存储装置200能够通过从备份电源105供给的备份电力进行工作。或者,在另一实施方式中,存储装置200也可以在电源切断的期间利用从主机系统110供给的备份电力进行工作。

管理信息非易失性存储器201是被用于存储管理信息(管理信息表201A)的非易失性存储器。管理信息非易失性存储器201也可以是例如E2PROM。

管理信息(管理信息表201A)是数据的保存以及还原工作所需要的信息,由主机系统110登记到管理信息非易失性存储器201。

管理信息表201A示出由主机系统110执行的多个程序的标识符、与由这些多个程序使用的易失性存储器101的多个区域各自的地址信息的对应关系。

例如,假设由OS对某应用程序分配了易失性存储器101的某个区域(区域#1)、由OS对另一应用程序分配了易失性存储器101的另一区域(区域#2)的情况。在该情况下,管理信息表201A包含与某应用程序的 标识符(APL#1)相关联的管理数据部、和与另一应用程序的标识符(APL#2)相关联的管理数据部。

与标识符(APL#1)相关联的管理数据部包含表示区域#1的地址信息。该地址信息表示区域#1的开始地址和区域#1的大小(偏移量)。

与标识符(APL#2)相关联的管理数据部包含表示区域#2的地址信息。该地址信息表示区域#2的开始地址和区域#2的大小(偏移量)。

主机系统110既可以通过经由SM总线访问MMIO103A来对NVDIMM控制器103指示管理信息的登记,也可以通过经由SM总线直接地访问非易失性存储器201来向管理信息非易失性存储器201登记管理信息。

以下,参照图2~图4,说明由NVDIMM控制器103执行的保存和还原工作的概要。

在图2~图4中,为了图示的简化,区域#1~#n以相同的大小进行图示,但实际上区域#1~#n具有对应的应用程序需要的大小(容量)。

图2表示由带备份功能的普通的存储装置执行的保存和还原(restore)工作。

带备份功能的普通的存储装置从易失性存储器101向非易失性存储器104保存数据,并且将所保存的数据放回到易失性存储器101的原来的位置。因此,应用程序(APL#1)的数据(也称作状态或存储状态)从非易失性存储器104被还原到与在电源切断前对应用程序(APL#1)所分配的区域#1相同的区域#1。同样地,其他应用程序各自的状态也分别被还原到与在电源切断前对这些应用程序所分配的区域相同的区域。

图3表示由NVDIMM控制器103执行的保存和还原工作的例子。

在电源切断时,NVDIMM控制器103例如将易失性存储器101的数据(全部数据)向非易失性存储器104中保存。

在电源恢复后,NVDIMM控制器103经由MMIO103A从主机系统110接收某程序(第一程序)的标识符、和表示由主机系统110对该程序(第一程序)重新分配的易失性存储器101的区域(第一区域)的地址信 息。然后,NVDIMM控制器103基于第一程序的标识符和管理信息表201A,对保存有在电源切断前由第一程序使用的易失性存储器101的区域的数据的非易失性存储器104的区域进行识别。

例如,假设在电源恢复后OS为了应用程序(APL#2)而重新分配了区域#1的情况。

在该情况下,OS经由MMIO103A向NVDIMM控制器103通知该应用程序的标识符APL#2、和表示易失性存储器101的区域#1的地址信息。

NVDIMM控制器103从管理信息表201A中对具有与所接收到的应用标识符APL#2相同的应用标识符的应用程序所对应的易失性存储器101的区域的地址信息进行检索。然后,NVDIMM控制器103能够基于该检索到的地址信息(=表示区域#2的地址信息)来识别应用程序(APL#2)的数据被保存的非易失性存储器104的区域(区域#2)。

然后,NVDIMM控制器103将存储在所识别的非易失性存储器104的区域#2中的数据向易失性存储器101的区域#1中还原(恢复)。由此,能够将该应用程序(APL#2)的电源切断前的状态、也就是电源切断前的易失性存储器101的区域#2的内容从非易失性存储器104向对应用程序(APL#2)重新分配的易失性存储器101的区域#1中适当地还原。

同样地,其他应用程序各自的状态也还原到对这些应用程序重新分配的易失性存储器101的区域。

图4表示由NVDIMM控制器103执行的保存和还原工作的另一例。

图4的保存和还原工作能够在非易失性存储器104中仅保存要备份的特定的几个应用程序的状态,且能够使这些特定的几个应用程序的状态分别还原到易失性存储器101的任意的区域中。

为了实现图4的保存和还原工作而使用的管理信息表201A示出要备份的一个以上的程序的标识符、由这些一个以上的程序使用的易失性存储器101的一个以上的区域各自的地址信息、与用于保存这些一个以上的程序的状态的非易失性存储器104的一个以上的保存区域各自的地址信息的对应关系。

现在,假设备份对象的程序是应用程序(APL#2)和应用程序(APL#n),应用程序(APL#2)使用了易失性存储器101的区域#2,应用程序(APL#n)使用了易失性存储器101的区域#n的情况。

NVDIMM控制器103可以将非易失性存储器104的保存区域#1分配为用于备份对象的应用程序(APL#2),进而可以将非易失性存储器104的另一保存区域#2分配为用于备份对象的应用程序(APL#n)。

在该情况下,在管理信息表201A中,表示易失性存储器101的区域#2的地址信息和表示非易失性存储器104的保存区域#1的地址信息以与应用标识符APL#2相关联的状态进行登记。进而,表示易失性存储器101的区域#n的地址信息和表示非易失性存储器104的保存区域#2的地址信息以与应用标识符APL#n相关联的状态进行登记。

在电源切断时,NVDIMM控制器103基于管理信息表201A将由应用程序(APL#2)使用的易失性存储器101的区域#2的数据向非易失性存储器104的保存区域#1中保存。进而,NVDIMM控制器103基于管理信息表201A将由应用程序(APL#n)使用的易失性存储器101的区域#n的数据向非易失性存储器104的保存区域#2中保存。

在电源恢复后,NVDIMM控制器103经由MMIO103A从主机系统110接收某程序(第一程序)的标识符、和表示由主机系统110对该程序(第一程序)重新分配的易失性存储器101的区域(第一区域)的地址信息。

例如,假设在电源恢复后OS对备份对象的应用程序(APL#n)重新分配了易失性存储器101的区域#2的情况。在该情况下,OS经由MMIO103A向NVDIMM控制器103通知该应用程序(APL#n)的应用标识符APL#n和表示易失性存储器101的区域#2的地址信息。

NVDIMM控制器103从管理信息表201A中检索具有与应用标识符APL#n相同的应用标识符的应用程序所对应的保存区域的地址信息。

并且,NVDIMM控制器103能够从检索到的保存区域的地址信息,识别保存有由应用程序(APL#n)在电源切断前使用的易失性存储器101 的区域#n的数据的保存区域(保存区域#2)。

然后,NVDIMM控制器103将存储在保存区域#2中的数据向易失性存储器101的区域#2中还原。

由此,能够将该应用程序(APL#n)的电源切断前的状态、也就是易失性存储器101的区域#n的电源切断前的内容从非易失性存储器104向重新分配给应用程序(APL#n)的易失性存储器101的区域#2中适当地还原。

同样地,应用程序(APL#2)状态也被还原到重新分配给应用程序(APL#2)的易失性存储器101的区域#4。

图5表示由NVDIMM控制器103执行的保存和还原工作的另一例。

对于图5的保存和还原工作,通过应用在非易失性存储器104的特定的保存区域中仅保存备份对象的应用程序的状态这样的图4的保存以及还原工作,能够将备份对象的应用程序的老一代的状态和新一代的状态中的任一个向易失性存储器101的任意区域中还原。

在为了实现图5的保存和还原工作而使用的管理信息表201A中,除了要备份的程序组的应用标识符之外,也可以追加表示这些程序组的备份状态的历史的历史标识符。

现在,假设对应用程序(APL#3)的老一代的状态和新一代的状态进行管理的情况。

NVDIMM控制器103也可以将非易失性存储器104的保存区域#1分配给备份对象的应用程序(APL#3)。NVDIMM控制器103将保存区域#1与应用标识符APL#3以及历史标识符(=0)的组合相关联地登记在管理信息表201A中。

在电源切断时,NVDIMM控制器103基于管理信息表201A将由应用程序(APL#3)使用的易失性存储器101的区域#3的数据保存到非易失性存储器104的保存区域#1中。

例如,当电源恢复后备份对象的应用程序(APL#3)被启动时,OS可能将易失性存储器101的区域#4重新分配给该备份对象的应用程序 (APL#3)。在该情况下,OS经由MMIO103A向NVDIMM控制器103通知应用标识符APL#3、历史标识符(=0)、和表示易失性存储器101的区域#4的地址信息。

NVDIMM控制器103从管理信息表201A中检索与应用标识符APL#3和历史标识符(=0)的组合相关联的保存区域的地址信息。然后,NVDIMM控制器103能够基于检索到的保存区域的地址信息,对保存由应用程序(APL#3)在电源切断前使用的易失性存储器101的区域#3的数据的非易失性存储器104的保存区域(保存区域#1)进行识别。

然后,NVDIMM控制器103将存储在所识别出的非易失性存储器104的保存区域#1中的数据向易失性存储器101的区域#4中还原。

应用程序(APL#3)能够使用易失性存储器101的区域#4来工作。

OS也可以向NVDIMM控制器103发送应用标识符APL#3、历史标识符(=1)、以及易失性存储器101的区域#4的地址信息。NVDIMM控制器103也可以将非易失性存储器104的未使用的保存区域、例如保存区域#3作为用于保存应用程序(APL#3)的新一代的状态的保存区域来分配。由此,NVDIMM控制器103在管理信息表201A中登记应用标识符APL#3、历史标识符(=1)、易失性存储器101的区域#4的地址信息、以及表示保存区域#3的地址信息。

随着应用程序(APL#3)的执行,易失性存储器101的区域#4的内容被更新。

之后,例如,如果发生了如没有预料到的停电那样的电源切断,则NVDIMM控制器103将由应用程序(APL#3)使用的区域#4的数据向应用程序(APL#3)用的最新的保存区域#3中保存。由此,能够在应用程序(APL#3)的老一代的状态被维持在保存区域#1的状态下,将应用程序(APL#3)的新一代的状态向非易失性存储器104的另一保存区域(在此为保存区域#3)中保存。

在电源恢复后,当从主机系统110接收到应用程序(APL#3)的标识符APL#3、指定老一代和新一代中的某一个的历史标识符(0或1)、表 示重新分配给应用程序(APL#3)的易失性存储器101的区域(例如区域#7)的地址信息的情况下,NVDIMM控制器103将与由历史标识符(0或1)指定的一代对应的应用程序(APL#3)的状态向易失性存储器101的区域(例如区域#7)中还原。

更详细地说,如果历史标识符示出0,则NVDIMM控制器103将存储在与应用标识符APL#3以及历史标识符(=0)的组合相关联的保存区域#1中的数据向易失性存储器101的区域#7中还原。另一方面,如果历史标识符示出1,则NVDIMM控制器103将存储在与应用标识符APL#3以及历史标识符(=1)的组合相关联的保存区域#3中的数据向易失性存储器101的区域#7中还原。

图6表示应用于用图3说明过的保存和还原工作的管理信息表201A的数据构造的例子。

管理信息表201A具有赋予了不同值的索引(index)的多个项目(entry)(多个存储区域)。各项目包含应用ID字段(field)301、DIMM地址字段302、以及偏移字段303。

应用ID字段301是保存应用标识符的应用识别信息部。作为应用标识符(应用ID),能够使用可识别各应用的任意种类的信息。如上述那样,应用标识符既可以是数字,也可以是文字代码。

FFFF是无效的应用标识符,在管理信息表201A的最终项目中设定应用标识符=FFFF。应用标识符=FFFF是表示该项目为表的最终项目的特定数据。

DIMM地址字段302和偏移字段303是用于保存表示对应的应用程序所使用的非易失性存储器101的区域的地址信息的易失性数据存储器地址信息部。设定在DIMM地址字段302的DIMM地址表示该区域的开始地址,设定在偏移字段303的偏移表示该区域的大小。

图7表示用于存储装置200与主机系统110的接口的MMIO103A的例子。

MMIO103A的寄存器文件(register file)包含运算字段401、应用ID 字段402、应用历史字段403、DIMM地址字段404、偏移字段405、以及状态字段406。

主机系统110经由SM总线向MMIO103A的运算字段401写入运算代码(指令)。在可利用的运算代码(指令)的种类中也可以包含备份指令和登记(项目)指令。备份指令是对存储装置200请求从易失性存储器101向非易失性存储器104保存数据的指令。登记(项目)指令是向存储装置200请求管理信息的登记的指令。该登记(项目)指令也可以用作对存储装置200请求要还原特定的应用程序的状态的恢复指令。

主机系统110向MMIO103A的应用ID字段402写入登记或还原(恢复)对象的应用程序的应用标识符。

主机系统110根据需要向MMIO103A的应用历史字段403写入登记或还原(恢复)对象的应用程序的历史标识符。

主机系统110向MMIO103A的DIMM地址字段404写入(重新)分配给登记或还原(恢复)对象的应用程序的易失性存储器101的区域的DIMM地址。DIMM地址表示该区域的开始地址。

主机系统110向MMIO103A的偏移字段405中写入对分配给对象的应用程序的登记或对还原(恢复)对象的应用程序(重新)分配的易失性存储器101的区域的偏移(尺寸)。

MMIO103A的状态字段406用于向主机系统110通知NVDIMM控制器103的当前的状态。

如果包含与请求了登记的管理信息内的应用标识符相同的应用标识符的应用识别信息部已经存在于管理信息表201A内,则有可能与该应用标识符对应的应用程序的状态(备份数据)存在于非易失性存储器104内。因此,在该情况下,NVDIMM控制器103将该应用程序的状态(备份数据)向从请求了登记的管理信息内的DIMM地址开始的非易失性存储器104内的区域中还原。

在主机系统110上的应用程序被启动时,OS生成能够识别该应用程序的特定的应用标识符。应用程序向OS请求所需要的存储器容量的分配, 等待来自OS的响应。

在OS接收到该存储器分配的请求时,OS决定要分配给该应用程序的易失性存储器101内的特定区域(存储区域)。并且,OS经由MMIO103A在管理信息表201A中登记与该所决定的区域相关的管理信息。

例如,OS向MMIO103A内的运算字段401、应用ID字段402、DIMM地址字段404、以及偏移字段405写入登记指令、该应用程序的应用标识符、该区域的DIMM地址、以及该区域的偏移(大小)。然后,OS等待NVDIMM控制器103在管理信息非易失性存储器201中存储该管理信息。在该情况下,OS也可以一边轮询(polling)状态字段406,一边等待直到状态字段406的值变为表示就绪的值为止。

当NVDIMM控制器103从主机系统110接收登记指令时,NVDIMM控制器103在状态字段406中设置(set)表示忙(busy)的值,并且,执行用于在管理信息表201A中登记管理信息的处理。在该情况下,如果包含与请求了登记的管理信息内的应用标识符相同的应用标识符的应用识别信息部已经存在于管理信息表201A内,则NVDIMM控制器103执行还原处理。

当NVDIMM控制器103完成登记处理、或还原处理和登记处理这两者时,NVDIMM控制器103在状态字段406中设置表示就绪的值。

当状态字段406变为表示就绪的值时,OS为了响应于上述的存储器分配请求,向应用程序通知易失性存储器101内的上述的特定区域(存储区域)。等待来自OS的响应的上述的应用程序能够利用所通知的存储区域。

如此,在管理信息表201A中登记表示分配了易失性存储器101内的区域的应用各自的存储区域的信息。

在主机系统110的电源切断检测电路113检测到电源切断时,主机系统110经由SM总线控制器112向MMIO103A的运算字段401写入备份指令。

在向运算字段401写入了备份指令时,或者存储装置200的电源切断 检测电路106检测到电源切断时,NVDIMM控制器103通过将例如易失性存储器101的所有数据向非易失性存储器104中复制,在非易失性存储器104中保存易失性存储器101的数据。在该保存工作的期间,存储装置200以来自备份电源105的备份电力进行工作。当保存工作完成时,存储装置200变为零功率状态。

接着,参照图8的流程图,示出由NVDIMM控制器103执行的登记工作以及还原(恢复)工作的程序的例子。该登记工作和还原(恢复)工作的程序对应于用图3说明过的保存和还原工作。

当NVDIMM控制器103经由MIMO103A从主机系统110接收登记指令(包含应用ID、DIMM地址、偏移)时,NVDIMM控制器103在MIMO103A的状态字段406中设置表示忙的值(步骤S501)。

NVDIMM控制器103求出具有与根据登记指令指定的应用ID相同的应用ID的应用识别信息部(应用ID字段),检索管理信息表201A。也就是说,NVDIMM控制器103一边增加索引的值,一边依次参照管理信息表201A的项目组(步骤S502、S503、S507、S508)。

如果在没有发现具有与根据登记指令指定的应用ID相同的应用ID的应用识别信息部的状态下当前的索引到达了管理信息表201A的最终项目(步骤S503的“是”),则NVDIMM控制器103在管理信息表201A中追加由登记指令指定的管理信息(应用ID、DIMM地址、偏移)。

更详细地说,NVDIMM控制器103在管理信息表201A的最终项目之后追加新项目,在该新项目内的应用识别信息部中登记表示表的最终项目的特定数据(步骤S504)。然后,NVDIMM控制器103在与当前的索引对应的项目中,也就是在所追加的新项目的前一个项目中,登记根据登记指令指定的管理信息(应用ID、DIMM地址、偏移)(步骤S505)。然后,NVDIMM控制器103向状态字段406写入表示就绪的值(步骤S506)。

另一方面,如果与当前的索引对应的应用识别信息部内的应用ID和由登记指令指定的应用ID相同(步骤S507的“是”),则NVDIMM控制器103结束检索处理。然后,NVDIMM控制器103基于与当前的索引对 应的易失性数据存储器地址信息部(DIMM地址和偏移),对保存由登记指令指定的应用ID的应用程序的数据的非易失性存储器104的区域(非易失性数据存储器地址)进行识别(步骤S509)。也就是说,NVDIMM控制器103从具有与根据登记指令指定的应用ID相同的ID的应用程序所对应的易失性存储器101的区域的地址信息,对保存有应用程序的数据的非易失性存储器104的区域进行识别。在本实施方式中,易失性存储器101的地址空间和非易失性存储器104的地址空间为一一对应。因此,能够将与当前的索引对应的易失性数据存储器地址信息部(DIMM地址和偏移)作为表示保存有对应的应用程序的数据的非易失性存储器104的区域(保存区域)的地址信息(非易失性数据存储器地址)来识别。

如此,NVDIMM控制器103从管理信息表201A中检索具有与根据登记指令指定的应用ID相同的ID的应用程序所对应的易失性存储器101的区域的地址信息,基于所检索到的地址信息对保存由通过登记指令指定的应用ID的应用程序在电源切断前使用的易失性存储器101的区域的数据的非易失性存储器104的区域(保存区域)进行识别。

NVDIMM控制器103将存储在所识别出的易失性存储器101的区域(保存区域)中的数据向由登记指令的DIMM地址和偏移而指定的易失性存储器101的区域中还原(步骤S510)。登记指令的DIMM地址是对重新分配给应用程序的易失性存储器101的区域进行指定的地址信息,因此应用程序的状态被还原到该重新分配的易失性存储器101的区域中。

在步骤S510中,NVDIMM控制器103将由偏移表示的大小的数据从所识别出的非易失性数据存储器地址向根据登记指令的DIMM地址指定的易失性数据存储器地址进行复制。

之后,NVDIMM控制器103在与当前的索引对应的项目中登记根据登记指令指定的管理信息(应用ID、DIMM地址、偏移)(步骤S505)。由此,在应用程序的状态被还原后,管理信息表201A自动地被更新。其结果是,所检索到的易失性数据存储器地址信息部(管理数据部)的内容(DIMM地址)被变更为根据登记指令指定的最新的DIMM地址、也就 是应用程序的状态被还原后的DIMM地址。

然后,NVDIMM控制器103向MIMO103A的状态字段406中写入表示就绪的值(步骤S506)。

再有,在此例示了登记指令兼具登记请求和恢复请求的情况,但主机系统110也可以在电源被恢复后向NVDIMM控制器103发送包含应用ID、DIMM地址、偏移的恢复指令。

例如,在电源被恢复后,OS被启动,并且由用户请求某应用程序的启动时,OS对该应用程序分配新的DIMM地址以及偏移。在该情况下,主机系统110也可以向MMIO103A写入恢复指令、该应用程序的应用ID、新DIMM地址、以及偏移。

在该情况下,也由NVDIMM控制器103执行上述的步骤S509、S510、S505、S506的处理。

根据以上的处理,即使是在电源被恢复后与电源切断前的DIMM地址不同的新DIMM地址被分配给应用程序用的情况下,也能够将该应用程序的电源切断前的状态还原到与新DIMM地址对应的易失性存储器101的区域中。

图9表示应用于用图4说明过的保存和还原工作的管理信息表201A的数据构造的例子。

在图9的管理信息表201A中,作为应用ID,使用了文字代码,但不限于此,应用ID也可以是数字等。

在图9的管理信息表201A中,除了上述的应用ID字段301、DIMM地址字段302、以及偏移字段303之外,还追加了NVRAM地址字段304。

“final”的文字代码是无效的应用标识符,在管理信息表201A的最终项目中设定应用标识符=final。应用标识符=final是表示该项目为表的最终项目的特定数据。

DIMM地址字段302和偏移字段303是如上述那样用于保存表示由对应的应用程序使用的非易失性存储器101的区域的地址信息的易失性数据存储器地址信息部。

NVRAM地址字段304和偏移字段303是用于保存表示分配给应用程序的易失性存储器101的区域(保存区域)的地址信息的非易失性数据存储器地址信息部。

主机系统110不是向存储装置200发送全部的应用程序,而仅发送与需要备份的应用程序相关的管理信息(应用ID、DIMM地址、偏移)。启动后的应用程序也可以向OS发送表示是否需要进行该应用的备份的信息以及存储器分配请求。由此,OS能够容易地确定需要备份的应用程序,能够向存储装置200仅发送与需要备份的应用程序相关的管理信息(应用ID、DIMM地址、偏移)。

关于NVRAM地址的分配,例如NVDIMM控制器103也可以从非易失性存储器104的未使用区域中自动地选择应对需要备份的应用程序分配的特定存储区域(保存区域)。在该情况下,非易失性存储器104内的该确定存储区域的首地址被登记在NVRAM地址字段304中。

或者,不仅是应用ID、DIMM地址、偏移,而且也可以从主机系统110向存储装置200发送NVRAM地址。作为用于从主机系统110向存储装置200发送NVRAM地址的方法,能够使用各种方法。例如,也可以在图6的MMIO103A中追加用于写入NVRAM地址的字段。

在运算字段401中写入了备份指令时,或者存储装置200的电源切断检测电路106检测到电源切断时,NVDIMM控制器103参照图9的管理信息表201A,按要备份的应用程序,确定对该应用程序分配的易失性存储器101内的区域、和对该应用程序分配的非易失性存储器104内的保存区域。然后,NVDIMM控制器103将要备份的各应用程序的状态从易失性存储器101的区域向非易失性存储器104的保存区域中保存。在该保存工作的期间,存储装置200以来自备份电源105的备份电力进行工作。当保存工作完成时,存储装置200变为零功率状态。

仅保存由需要备份的应用程序使用的易失性存储器101的区域的数据,而不是全部的数据,因此能够缩短保存工作所需的时间。

接着,参照图10的流程图,示出由NVDIMM控制器103执行的登记 工作和还原(恢复)工作的程序的例子。该登记工作和还原(恢复)工作的程序对应于用图4说明过的保存和还原工作。

当NVDIMM控制器103经由MIMO103A从主机系统110接收登记指令(包含应用ID、DIMM地址、偏移)时,NVDIMM控制器103在MIMO103A的状态字段406中设置表示忙的值(步骤S601)。

NVDIMM控制器103求出具有与根据登记指令指定的应用ID相同的应用ID的应用识别信息部(应用ID字段),检索管理信息表201A。也就是说,NVDIMM控制器103一边增加索引的值,一边依次参照管理信息表201A的项目组(步骤S602、S603、S608、S609)。

如果在没有发现具有与根据登记指令指定的应用ID相同的应用ID的应用识别信息部的状态下当前的索引到达了管理信息表201A的最终项目(步骤S603的“是”),则NVDIMM控制器103在管理信息表201A中追加由登记指令指定的管理信息(应用ID、DIMM地址、偏移)。

更详细地说,NVDIMM控制器103在管理信息表201A的最终项目之后追加新项目,在该新项目内的应用识别信息部中登记表示表的最终项目的特定数据(步骤S604)。NVDIMM控制器103在非易失性存储器104内确保特定存储区域(保存区域)(步骤S605)。在步骤S605中,NVDIMM控制器103也可以从非易失性存储器104的未使用区域中自动地选择用于保存根据登记指令指定的应用程序的数据的特定存储区域(保存区域)。或者,如果在根据登记指令指定的管理信息中包含了NVRAM地址,则NVDIMM控制器103也可以基于该NVRAM地址和偏移来确保特定存储区域。

然后,NVDIMM控制器103在与当前的索引对应的项目中,也就是在所追加的新项目的前一个项目中,登记由登记指令指定的管理信息(应用ID、DIMM地址、偏移)和与特定存储区域对应的NVRAM地址(步骤S606)。然后,NVDIMM控制器103向MIMO103A的状态字段406中写入表示就绪的值(步骤S607)。

另一方面,如果与当前的索引对应的应用识别信息部内的应用ID和 根据登记指令指定的应用ID相同(步骤S608的“是”),则NVDIMM控制器103结束检索处理。然后,NVDIMM控制器103基于与当前的索引对应的非易失性数据存储器地址信息部(NVRAM地址),对保存由根据登记指令指定的应用ID的应用程序在电源切断前所使用的易失性存储器101的区域的数据的非易失性存储器104的保存区域(非易失性数据存储器地址)进行识别(步骤S610)。

如此,NVDIMM控制器103从管理信息表201A中检索具有与根据登记指令指定的应用ID相同的ID的应用程序所对应的保存区域的地址信息(NVRAM地址、偏移),将所检索到的地址信息(NVRAM地址)作为由根据登记指令指定的应用ID的应用程序在电源切断前所使用的易失性存储器101的区域的数据被保存的非易失性存储器104的保存区域来识别。

NVDIMM控制器103将存储在所识别出的保存区域中的数据向由登记指令的DIMM地址以及偏移指定的易失性存储器101的区域中还原(步骤S611)。登记指令的DIMM地址是对重新分配给应用程序的易失性存储器101的区域进行指定的地址信息,因此,应用程序的状态被还原到该重新分配的易失性存储器101的区域中。

在步骤S611中,NVDIMM控制器103将由偏移表示的大小的数据从识别出的非易失性数据存储器地址向由登记指令的DIMM地址指定的易失性数据存储器地址中进行复制。

之后,NVDIMM控制器103在非易失性存储器104内确保特定存储区域(状态被还原的应用程序用的保存区域)(步骤S605)。在步骤S605中,NVDIMM控制器103也可以基于所检索到的项目内的NVRAM地址和偏移来确保与电源切断前相同的非易失性存储器104内的保存区域来作为特定存储区域。

然后,NVDIMM控制器103在与当前的索引对应的项目中登记由登记指令指定的管理信息(应用ID、DIMM地址、偏移)和与特定存储区域对应的NVRAM地址(步骤S606)。由此,在应用程序的状态被还原后,管理信息表201A自动地被更新。其结果是,所检索到的易失性数据存储 器地址信息部的内容(DIMM地址)被变更为根据登记指令指定的最新的DIMM地址、也就是应用程序的状态被还原后的DIMM地址。

然后,NVDIMM控制器103向MIMO103A的状态字段406中写入表示就绪的值(步骤S607)。

再有,在此例示了登记指令兼具登记请求和恢复请求的情况,但主机系统110也可以在电源被恢复后向NVDIMM控制器103发送包含应用ID、DIMM地址、偏移的恢复指令。

例如,在电源被恢复后,OS被启动,并且由用户启动某应用程序时,该应用程序向OS发送表示是否需要进行该应用程序的备份的信息和存储器分配请求。OS对该应用程序分配新的DIMM地址以及偏移。

如果需要进行该应用程序的备份,则OS向MMIO103A写入恢复指令、该应用程序的应用ID、新DIMM地址、以及偏移,等待MMIO103A的状态字段406变为就绪。

在该情况下,也由NVDIMM控制器103执行上述的步骤S610、S611、S605、S606、S707的处理。

根据以上的处理,即使是在电源被恢复后与电源切断前的DIMM地址不同的新DIMM地址分配给应用程序用的情况下,也能够将该应用程序的电源切断前的状态向与新DIMM地址对应的易失性存储器101的区域中还原。进而,能够仅保存应备份的应用程序的状态,因此能够缩短保存处理所需的时间。另外,进而能够将非易失性存储器104的改写次数抑制到需要最小限度,因此能够延长非易失性存储器104的寿命。另外,进而能够任意地决定保存区域,因此能够将非易失性存储器104的各擦除块(物理块)的改写次数进行平均化,能够谋求非易失性存储器104的延长寿命。

图11表示应用于用图5说明过的保存和还原工作的管理信息表201A的数据构造的例子。

在图11的管理信息表201A中,作为应用ID,使用了文字代码,但不限于此,应用ID也可以是数字等。

在图11的管理信息表201A中,与图9的管理信息201A相比,追加 了应用历史字段305。

“final”的文字代码是无效的应用标识符,在管理信息表201A的最终项目中设定应用标识符=final。应用标识符=final是表示该项目为表的最终项目的特定数据。

DIMM地址字段302和偏移字段303是如上述那样用于保存表示对应的应用程序用的非易失性存储器101的区域的地址信息的易失性数据存储器地址信息部。

NVRAM地址字段304和偏移字段303是用于保存表示分配给应用程序用的易失性存储器101的区域(保存区域)的地址信息的非易失性数据存储器地址信息部。

在应用历史字段305中设定与应用程序的备份状态的历史相关的历史信息(历史标识符)。该历史标识符用于指定如老一代的备份状态、新一代的备份状态那样的多代的备份状态的历史内的特定的一代。

关于需要管理多代的备份状态的历史的应用程序,在管理信息表201A中登记给予了不同的历史标识符的多个管理信息。例如,在图11的管理信息表201A中,关于应用标识符“存储器缓存”的应用程序,登记了给予了历史标识符0的管理信息和给予了历史标识符1的管理信息。历史标识符0的管理信息用于管理该应用程序的老一代的状态。例如,历史标识符0的管理信息中包含的NVRAM地址表示保存有老一代的状态的保存区域。历史标识符1的管理信息用于管理该应用程序的新一代的状态。例如,历史标识符1的管理信息中包含的NVRAM地址表示保存有新一代的状态的保存区域、或者应保存新一代的状态的保存区域。

关于需要进行仅一代的备份状态的管理的应用程序,在管理信息表201A中仅登记给予了历史标识符0的管理信息。

主机系统110不是向存储装置200发送全部的应用程序,而是仅发送与需要备份的应用程序相关的管理信息(应用ID、历史ID(历史标识符)、DIMM地址、偏移)。启动后的应用程序也可以向OS发送表示是否需要进行该应用程序的备份的信息、历史ID、和存储器分配请求。

关于NVRAM地址的分配,例如NVDIMM控制器103也可以从非易失性存储器104的未使用区域中自动地选择要分配给需要备份的应用程序用的特定存储区域(保存区域)。在该情况下,非易失性存储器104内的该特定存储区域的首地址被登记在NVRAM地址字段304。对于具有不同的历史ID的同一应用程序,分配与这些历史ID分别对应的多个特定存储区域。

在运算字段401中写入了备份指令时,或者存储装置200的电源切断检测电路106检测到电源切断时,NVDIMM控制器103参照图11的管理信息表201A,按要备份的应用程序,确定由该应用程序使用的易失性存储器101内的区域、和分配给该应用程序的非易失性存储器104内的保存区域。然后,NVDIMM控制器103将应备份的各应用程序的状态从易失性存储器101的区域向非易失性存储器104的保存区域中保存。

对于具有不同历史ID的同一应用程序,NVDIMM控制器103将该应用程序的状态从易失性存储器101内的区域向与最新的历史ID对应的非易失性存储器104内的保存区域中保存。

在保存工作的期间,存储装置200以来自备份电源105的备份电力进行工作。当保存工作完成时,存储装置200变为零功率状态。

仅保存需要备份的应用程序的状态,不是全部的数据,因此能够缩短保存工作所需的时间。

接着,参照图12的流程图,示出由NVDIMM控制器103执行的登记工作以及还原(恢复)工作的程序的例子。该登记工作和还原(恢复)工作的程序对应于用图5说明过的保存和还原工作。

当NVDIMM控制器103经由MIMO103A从主机系统110接收登记指令(包含应用ID、历史ID、DIMM地址、偏移)时,NVDIMM控制器103在MIMO103A的状态字段406中设置表示忙的值(步骤S701)。

NVDIMM控制器103求出与根据登记指令指定的应用ID及历史ID的组合相同的应用ID及历史ID的组合,检索管理信息表201A。也就是说,NVDIMM控制器103一边增加索引的值,一边依次参照管理信息表 201A的项目组(步骤S702、S703、S708、S709)。

如果在没发现具有与由登记指令指定应用ID及历史ID的组合相同的应用ID和历史ID的组合的状态下当前的索引到达了管理信息表201A的最终项目(步骤S703的“是”),则NVDIMM控制器103在管理信息表201A中追加根据登记指令指定的管理信息(应用ID、历史ID、DIMM地址、偏移)。

更详细地说,NVDIMM控制器103在管理信息表201A的最终项目之后追加新项目,在该新项目内的应用识别信息部中登记表示表的最终项目的特定数据(步骤S704)。NVDIMM控制器103在非易失性存储器104内确保特定存储区域(根据登记指令指定的应用程序用的保存区域)(步骤S705)。在步骤S705中,NVDIMM控制器103也可以从非易失性存储器104的未使用区域中自动地选择要对根据登记指令指定的应用程序分配的特定存储区域。

然后,NVDIMM控制器103在与当前的索引对应的项目中,也就是在所追加的新项目的前一个项目中,登记由登记指令指定的管理信息(应用ID、历史ID、DIMM地址、偏移)和与特定存储区域对应的NVRAM地址(步骤S706)。然后,NVDIMM控制器103向MIMO103A的状态字段406中写入表示就绪的值(步骤S707)。

另一方面,如果与当前的索引对应的应用ID及历史ID的组合、和由登记指令指定的应用ID及历史ID的组合相同(步骤S708的“是”),则NVDIMM控制器103结束检索处理。然后,NVDIMM控制器103基于与当前的索引对应的非易失性数据存储器地址信息部,对保存由通过登记指令指定的应用ID及历史ID的组合对应的应用程序所使用的易失性存储器101的区域的数据的非易失性存储器104的保存区域(非易失性数据存储器地址)进行识别(步骤S710)。

如此,NVDIMM控制器103从管理信息表201A中检索同与由登记指令指定的应用ID及历史ID的组合相同的应用ID及历史ID的组合相关联的项目,将由所检索到的项目表示的非易失性存储器104内的保存区域作 为保存与由登记指令指定的应用ID及历史ID的组合对应的应用程序的状态的非易失性存储器104的保存区域来加以识别。

NVDIMM控制器103将存储在所识别出的保存区域中的数据向由登记指令的DIMM地址指定的易失性存储器101的区域中还原(步骤S711)。

之后,NVDIMM控制器103在非易失性存储器104内确保特定存储区域(状态被还原的应用程序用的保存区域)(步骤S705)。在步骤S705中,NVDIMM控制器103也可以基于所检索到的项目内的NVRAM地址和偏移,确保与电源切断前相同的非易失性存储器104内的区域来作为特定存储区域。

然后,NVDIMM控制器103在与当前的索引对应的项目中,也就是在所追加的新项目的前一个项目中,登记由登记指令指定的管理信息(应用ID、历史ID、DIMM地址、偏移)和与特定存储区域对应的NVRAM地址(步骤S706)。由此,在应用程序的状态被还原后,检索到的项目内的DIMM地址被更新为由登记指令指定的最新的DIMM地址(应用程序的状态被还原后的DIMM地址)。然后,NVDIMM控制器103向MIMO103A的状态字段406中写入表示就绪的值(步骤S607)。

再有,OS也可以在某应用程序的备份数据被还原后,经由MMIO103A在管理信息表201A中登记该应用的应用标识符、通过在该应用的当前的历史标识符上加上+1而得到的新历史标识符、表示该应用的备份数据被还原后的区域的DIMM地址以及偏移。在该情况下,NVDIMM控制器103也可以分配用于保存该应用程序的新一代的状态的保存区域。

之后,当发生电源切断时,NVDIMM控制器103将由该应用程序使用的易失性存储器101的区域的数据向用于保存该应用程序的新一代的状态的保存区域中保存。由此,能够在该应用程序的老一代的状态被维持在某个保存区域中的状态下,将该应用程序的新一代的状态向非易失性存储器104的另一个保存区域中保存。

根据以上的处理,能够在易失性存储器101的任意区域中选择性地还原备份对象的应用程序的老一代的状态或新一代的状态。

如以上说明的那样,根据本实施方式,能够将由从主机系统110接收到的应用标识符而指定的应用程序的备份数据向与从主机系统110接收到的地址信息对应的易失性存储器101内的区域中还原。因而,即使在对某应用程序重新分配了与电源切断前不同的易失性存储器101内的区域的情况下,也能够将该应用程序的已备份的数据从非易失性存储器104向该重新分配的易失性存储器101内的区域中适当地进行还原。因而,能够将易失性存储器101的状态还原为对主机系统110有用的状态。

再有,在本实施方式中,主要说明了在非易失性存储器104中对由应用程序使用的易失性存储器101的区域的内容进行备份的情况,但也可以在非易失性存储器104中对由OS使用的易失性存储器101内的区域的内容进行备份。在该情况下,由OS使用的易失性存储器101内的区域的内容也可以向与由OS在电源切断前所使用的易失性存储器101内的区域相同的特定区域中还原。

说明了本发明的几个实施方式,但这些实施方式是作为示例而呈现的实施方式,不意图限定本发明的范围。这些新实施方式能够以其他各种方式来实施,在不超出本发明的主旨的范围内能够进行各种省略、替换、变更。这些实施方式及其变形包含在本发明的范围、主旨内,并且包含在与权利要求书所记载的发明等同的范围内。

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