具体实施方式
以下将参照附图详细说明数据存储装置的示例性实施例。
第一实施例
为了提高根据第一实施例的数据存储装置的单独装置(以下称为“数据存储装置”)的可靠性,将数据存储装置配置为在其中包括诸如廉价磁盘冗余阵列(RAID)5的结构(在D.Patterson,G.Gibson和R.Katz的“A Case for Redundant Arrays of Inexpensive Disks(RAID)”,Proceedings of the 1988ACM SIGMOD,第109-116页,1988年6月中进行了描述),以实现数据存储装置中的数据恢复。
数据存储装置还需要降低成本。通常使用价格容量比相对廉价的存储介质。这种价格容量比相对廉价的存储介质通常具有相对低的数据写入速度。
当数据存储装置采用诸如RAID 5的配置时,与在存储介质上由主机设备请求写入的用户数据的写入量相比,数据恢复代码(以下称为“奇偶校验(parity)”)数据的写入量变大。因为在数据存储装置中的存储介质本身上的数据写入速度带存在上限,所以当数据存储装置采用诸如RAID 5的配置时,结果出现用户数据的写入速度变慢的缺点。
一般认为在诸如NAND型闪速存储器的一些存储介质中,在存储介质中包括的存储元件的产品寿命依赖于重写数据的次数而改变。在使用这样的存储介质的数据存储装置中,存在这样的缺点:当奇偶校验数据的写入量变大时,数据存储装置的设计寿命变短。
由于上述情形,当数据存储装置采用诸如RAID 5的配置时,与在存储介质上的用户数据的写入量相比,需要减少在存储介质上的奇偶校验数据的写入量。
因此,除了存储用户数据和奇偶校验数据的存储介质(第二数据存储单元)之外,本实施例还包括仅存储奇偶校验数据的存储介质(第一数据存储单元)。当更新奇偶校验数据时,第一数据存储单元存储更新的奇偶校验数据,然后在特定的时刻将第一数据存储单元中存储的奇偶校验数据写入第二数据存储单元。因此,与在存储介质上的用户数据的写入量相比,可减少在存储介质上的奇偶校验数据的写入量。
图1是示出根据第一实施例的数据存储装置100的配置实例的功能框图。如图1所示,数据存储装置100包括:第一数据存储单元151、第一存取控制单元101、第二数据存储单元152、第二存取控制单元102、第一状态存储单元153、第三存取控制单元103、第二状态存储单元154、第四存取控制单元104、状态更新单元120、控制器110、以及奇偶校验计算单元130。控制器110包括奇偶校验更新单元111和奇偶校验写入单元112。
第一数据存储单元151包括至少一个存储区,如图2所示。每个存储区在其中存储奇偶校验数据。第一数据存储单元151可包括多个存储区,并且每个存储区可在其中存储奇偶校验数据。换句话说,数据存储装置100可具有多个奇偶校验组。奇偶校验组意味着在其中存储由特定的奇偶校验数据保护的用户数据的存储区的集合(aggregation)。当数据存储装置100具有多个奇偶校验组时,数据存储装置100具有与奇偶校验组的数目相应的多个各种信息段(稍后说明)。当数据存储装置100具有多个奇偶校验组时,可据此提供以下描述的配置和处理。
第一存取控制单元101控制对第一数据存储单元151的读出或写入。
第二数据存储单元152包括多个存储区,如图3所示。每个存储区在其中存储用户数据或奇偶校验数据。在存储区当中,存储用户数据的存储区具有两种状态,即,第一状态和第二状态。第一状态是在存储区中存储的用户数据受到由第一数据存储单元151存储的奇偶校验数据保护的状态。第二状态是在存储区中存储的用户数据不受由第一数据存储单元151存储的奇偶校验数据保护的状态。
第二存取控制单元102控制对第二数据存储单元152的读出或写入。
第二数据存储单元152可被配置为在特性上比第一数据存储单元151相对低劣。例如,第二数据存储单元152的数据写入速度可比第一数据存储单元151相对低劣。在第二数据存储单元152包括其寿命取决于数据写入次数的存储元件的另一情况下,第二数据存储单元152可在数据写入耐用性的次数上比第一数据存储单元151相对低劣。在第二数据存储单元152包括其数据写入数据比数据读出速度相对低的存储元件的又一情况下,第二数据存储单元152可在数据写入速度比数据读出速度低的程度上比第一数据存储单元151相对低劣。特性的实例不限于这些实例。
第一状态存储单元153在其中存储第一状态集合信息。第一状态集合信息是在第二数据存储单元152中包括的存储区当中的识别处于第一状态的存储区的集合(第一状态集合)的信息(识别信息)。第一状态集合信息可以例如通过存储区的标识符的列表结构而形成,如图4所示。
第三存取控制单元103控制对第一状态存储单元153的存取。对第一状态存储单元153的存取包括对由第一状态存储单元153存储的第一状态集合信息的读出、由请求源指定的存储区信息向由第一状态存储单元153存储的第一状态集合信息的添加、以及对由请求源指定的存储区信息从由第一状态存储单元153存储的第一状态集合信息的删除。
第二状态存储单元154在其中存储第二状态集合信息。第二状态集合信息是在第二数据存储单元152中包括的存储区当中的识别处于第二状态的存储区的集合(第二状态集合)的信息。第二状态集合信息可以例如通过存储区的标识符的列表结构来形成,如图5所示。
第四存取控制单元104控制对第二状态存储单元154的存取。对第二状态存储单元154的存取包括对由第二状态存储单元154存储的第二状态集合信息的读出、由请求源指定的存储区信息向由第二状态存储单元154存储的第二状态集合信息的添加、以及对由请求源指定的存储区信息从由第二状态存储单元154存储的第二状态集合信息的删除。
奇偶校验计算单元130对从指令源接收的多个输入数据执行奇偶校验计算,并将计算结果返回到指令源。奇偶校验计算是当生成奇偶校验数据、更新奇偶校验数据、恢复数据等等时要执行的计算,并包括例如异或运算的运算。尽管下面说明了使用异或运算作为奇偶校验计算的实例,但是适用的奇偶校验计算不限于此。此外,奇偶校验计算单元130可被配置为被提供在数据存储装置100的外部。
状态更新单元120指示第四存取控制单元104读出由第二状态存储单元154存储的第二状态集合信息,并且在需要时,获取第二状态集合信息。状态更新单元120从获取的第二状态集合信息所指示的存储区的集合(第二状态集合)选择要改变为第一状态的存储区,并且向奇偶校验更新单元111通知关于所选择的存储区的识别信息。
此外,状态更新单元120指示第三存取控制单元103读出由第一状态存储单元153存储的第一状态集合信息,并且在需要时,获取第一状态集合信息。状态更新单元120从获取的第一状态集合信息所指示的存储区的集合(第一状态集合)选择要改变为第二状态的存储区,并且向奇偶校验更新单元111通知关于所选择的存储区的识别信息。
当从状态更新单元120通知了关于要改变为第一状态的存储区的识别信息时,奇偶校验更新单元111指示第二存取控制单元102读出由所通知的存储区存储的数据,并获取由所通知的存储区存储的数据。奇偶校验更新单元111指示第一存取控制单元101读出在第一数据存储单元151中记录的奇偶校验数据,并获取在第一数据存储单元151中记录的奇偶校验数据。奇偶校验更新单元111指示奇偶校验计算单元130对所获取的奇偶校验数据以及所获取的由存储区存储的数据执行奇偶校验计算。奇偶校验更新单元111指示第一存取控制单元101将所获取的更新后的奇偶校验数据写入第一数据存储单元151中。奇偶校验更新单元111指示第四存取控制单元104从由第二数据存储单元154存储的第二状态集合信息删除关于所通知的存储区的识别信息。奇偶校验更新单元111指示第三存取控制单元103将关于所通知的存储区的识别信息添加到由第一状态存储单元153存储的第一状态集合信息。
当从状态更新单元120通知了关于要改变为第二状态的存储区的识别信息时,奇偶校验更新单元111指示第二存取控制单元102读出由所通知的存储区存储的数据,并获取由所通知的存储区存储的数据。奇偶校验更新单元111指示第一存取控制单元101读出在第一数据存储单元151中记录的奇偶校验数据,并获取在第一数据存储单元151中记录的奇偶校验数据。奇偶校验更新单元111指示奇偶校验计算单元130对所获取的奇偶校验数据和所获取的由存储区存储的数据执行奇偶校验计算,并获取更新后的奇偶校验数据。奇偶校验更新单元111指示第一存取控制单元101将所获取的更新后的奇偶校验数据写入第一数据存储单元151中。奇偶校验更新单元111指示第三存取控制单元103从由第一状态存储单元153存储的第一状态集合信息删除关于所通知的存储区的识别信息。奇偶校验更新单元111指示第四存取控制单元104将关于所通知的存储区的识别信息添加到由第二状态存储单元154存储的第二状态集合信息。
如上所述,状态更新单元120向奇偶校验更新单元111分别通知将处于第二状态的存储区改变为第一状态的通告(notice),以及将处于第一状态的存储区改变为第二状态的通告。此外,奇偶校验更新单元111分别针对将处于第二状态的存储区改变为第一状态的通告和将处于第一状态的存储区改变为第二状态的通告而更新奇偶校验数据,这些通告来自于状态更新单元120。
因此,可以动态地改变这样的存储区的数目,这些存储区存储受到奇偶校验数据保护的用户数据。换句话说,可以动态地改变在奇偶校验组中包括的存储区的数目。
奇偶校验写入单元112指示第一存取控制单元101在预先地或动态地确定的特定时机(timing)读出在第一数据存储单元151中记录的奇偶校验数据,并获取在第一数据存储单元151中记录的奇偶校验数据。然后奇偶校验写入单元112指示第二存取控制单元102将所获取的奇偶校验数据写入第二数据存储单元152中。
预先地或动态地确定的特定时机意味着,例如,当满足预定要求时的时机。作为要求,例如,每当经过一定时间段时,或当奇偶校验数据的更新的次数超过特定数目时的时机,等等,可适用任何要求。
下文中,如果需要,将“指示第一存取控制单元101读出在第一数据存储单元151中记录的奇偶校验数据,获取在第一数据存储单元151中记录的奇偶校验数据,并指示第二存取控制单元102将所获取的奇偶校验数据写入第二数据存储单元152中”称为奇偶校验写入指令。
如上所述,奇偶校验更新单元111更新第一数据存储单元151上的奇偶校验数据。此外,独立于第一数据存储单元151上的奇偶校验数据更新处理,奇偶校验写入单元112在预先地或动态地确定的特定时机将第一数据存储单元151上的奇偶校验数据写入第二数据存储单元152中。因此,更新的奇偶校验数据并不是在每次执行奇偶校验更新处理时被写入第二数据存储单元152中。
当第一数据存储单元151和第二数据存储单元152具有存储器的上述特性时,可通过减少向第二数据存储单元152中的写入来抑制作为数据存储装置100的整体在性能上的劣化程度以及在寿命上的减少程度。如上所述,因为根据该实施例,更新的奇偶校验数据并不是在每次执行奇偶校验更新处理时被写入第二数据存储单元152中,所以可减少向第二数据存储单元152中的写入。因此,根据该实施例,可以抑制作为数据存储装置100的整体在性能上的劣化程度以及在寿命上的减少程度。
根据该实施例,仅允许对处于第二状态的存储区进行用户数据的重写。因此,例如,当需要重写在处于第一状态的存储区中存储的用户数据并在重写用户数据之后还保持第一状态时,将随后进行以下过程,例如,状态更新单元120作出将该存储区一次性改变为第二状态的指令,未示出的用户数据重写单元指示第二存取控制单元102重写该存储区中的用户数据,并且状态更新单元120作出将该存储区改变为第一状态的指令。
在不脱离本实施例的目的的范围内,可组合和优化上述的一系列处理,例如,可减少从第二数据存储单元152读出数据的次数。这同样适用于下述实施例。例如,考虑如下情况:将第二数据存储单元152中的数据A改变为数据A’,并且伴随着该改变,奇偶校验数据被更新。根据没有优化的方法,将改变后的数据A’存储到第二数据存储单元152,随后需要从第二数据存储单元152读出所存储的数据A’以更新奇偶校验数据。在该情况下,可通过将改变后的数据A’存储到临时存储单元,例如随机存取存储器(RAM),然后当更新奇偶校验数据时使用在临时存储单元中存储的数据A’,来减少从第二数据存储单元152读出数据的次数。
下面参照图6说明由此配置的根据第一实施例的数据存储装置100所执行的处理。图6是示出根据第一实施例的将存储区改变为第一状态的处理流程的流程图。
开始,如果需要,状态更新单元120从第二状态存储单元154读出第二状态集合(步骤S101)。具体地,状态更新单元120指示第四存取控制单元104读出由第二状态存储单元154存储的第二状态集合信息。第四存取控制单元104读出由第二状态存储单元154存储的第二状态集合信息,并输出至状态更新单元120。状态更新单元120获取第二状态集合信息。状态更新单元120从由所获取的第二状态集合信息指示的存储区的集合选择要改变为第一状态的存储区,并向奇偶校验更新单元111通知关于所选择的存储区的识别信息(步骤S102)。
奇偶校验更新单元111读出在要改变为第一状态的存储区中记录的数据(步骤S103)。具体地,当从状态更新单元120通知关于要改变为第一状态的存储区的识别信息时,奇偶校验更新单元111指示第二存取控制单元102读出由所通知的存储区存储的数据。第二存取控制单元102读出由所通知的存储区存储的数据,并输出至奇偶校验更新单元111。奇偶校验更新单元111获取由所通知的存储区存储的数据。
奇偶校验更新单元111从第一数据存储单元151读出奇偶校验数据(步骤S104)。具体地,奇偶校验更新单元111指示第一存取控制单元101读出在第一数据存储单元151中记录的奇偶校验数据。第一存取控制单元101读出在第一数据存储单元151中记录的奇偶校验数据,并输出至奇偶校验更新单元111。奇偶校验更新单元111获取在第一数据存储单元151中记录的奇偶校验数据。
奇偶校验更新单元111更新所获取的奇偶校验数据(步骤S105)。具体地,奇偶校验更新单元111指示奇偶校验计算单元130对所获取的奇偶校验数据和所获取的由存储区存储的数据执行奇偶校验计算。奇偶校验计算单元130对从指令源接收的多个输入数据执行奇偶校验计算,并将计算结果返回到指令源。奇偶校验计算是当生成或更新奇偶校验数据、恢复数据等时要执行的计算,并包括例如异或运算的运算。奇偶校验更新单元111获取更新后的奇偶校验数据。奇偶校验更新单元111指示第一存取控制单元101向第一数据存储单元151中写入所获取的更新后的奇偶校验数据。第一存取控制单元101向第一数据存储单元151中写入更新后的奇偶校验数据。
奇偶校验更新单元111更新关于存储区的状态信息(步骤S106)。具体地,奇偶校验更新单元111指示第四存取控制单元104从由第二状态存储单元154存储的第二状态集合信息删除关于所通知的存储区的识别信息。第四存取控制单元104从由第二状态存储单元154存储的第二状态集合信息删除关于向奇偶校验更新单元111通知的存储区的识别信息。奇偶校验更新单元111指示第三存取控制单元103将关于所通知的存储区的识别信息添加到由第一状态存储单元153存储的第一状态集合信息。第三存取控制单元103将关于向奇偶校验更新单元111通知的存储区的识别信息添加到由第一状态存储单元153存储的第一状态集合信息。
以下参照图7描述将存储区改变为第二状态的处理过程的实例。图7是示出根据第一实施例的将存储区改变为第二状态的处理的流程的流程图。
开始,如果需要,状态更新单元120从第一状态存储单元153读出第一状态集合(步骤S201)。具体地,状态更新单元120指示第三存取控制单元103读出由第一状态存储单元153存储的第一状态集合信息。第三存取控制单元103读出由第一状态存储单元153存储的第一状态集合信息,并输出至状态更新单元120。状态更新单元120获取第一状态集合信息。状态更新单元120从由所获取的第一状态集合信息指示的存储区的集合选择要改变为第二状态的存储区,并向奇偶校验更新单元111通知关于所选择的存储区的识别信息(步骤S202)。
奇偶校验更新单元111读出在要改变为第二状态的存储区中记录的数据(步骤S203)。具体地,当从状态更新单元120通知关于要改变为第二状态的存储区的识别信息时,奇偶校验更新单元111指示第二存取控制单元102读出由所通知的存储区存储的数据。第二存取控制单元102读出由所通知的存储区存储的数据,并输出至奇偶校验更新单元111。奇偶校验更新单元111获取由所通知的存储区存储的数据。
奇偶校验更新单元111随后读出奇偶校验数据(步骤S204),并更新所读出的奇偶校验数据(步骤S205)。该处理与图6中的步骤S104和S105的处理相同,因此省略详细说明。
奇偶校验更新单元111更新关于存储区的状态信息(步骤S206)。具体地,奇偶校验更新单元111指示第三存取控制单元103从由第一状态存储单元153存储的第一状态集合信息删除关于所通知的存储区的识别信息。第三存取控制单元103从由第一状态存储单元153存储的第一状态集合信息删除关于向奇偶校验更新单元111通知的存储区的识别信息。奇偶校验更新单元111指示第四存取控制单元104将关于所通知的存储区的识别信息添加到由第二状态存储单元154存储的第二状态集合信息。第四存取控制单元104将关于向奇偶校验更新单元111通知的存储区的识别信息添加到由第二状态存储单元154存储的第二状态集合信息。
以下参照图8描述奇偶校验写入的处理过程的实例。图8是示出根据第一实施例的奇偶校验写入处理的流程的流程图。
开始,奇偶校验写入单元112从第一数据存储单元151读出奇偶校验数据(步骤S301)。具体地,奇偶校验写入单元112指示第一存取控制单元101在预先地或动态地确定的特定时机读出在第一数据存储单元151中记录的奇偶校验数据。第一存取控制单元101读出在第一数据存储单元151中记录的奇偶校验数据,并输出至奇偶校验写入单元112。奇偶校验写入单元112获取在第一数据存储单元151中记录的奇偶校验数据。
奇偶校验写入单元112写入所获取的奇偶校验数据(步骤S302)。具体地,奇偶校验写入单元112指示第二存取控制单元102向第二数据存储单元152写入所获取的奇偶校验数据。第二存取控制单元102向第二数据存储单元152写入由奇偶校验写入单元112获取的奇偶校验数据。
这样,与在存储介质上的用户数据的写入量相比,根据第一实施例的数据存储装置可减少在存储介质上的奇偶校验数据的写入量。
第二实施例
在根据第二实施例的数据存储装置中,每当改变为第二状态的存储区的数目超过预先地或动态地确定的阈值时,从第一数据存储单元151向第二数据存储单元152写入奇偶校验数据。
图9是根据第二实施例的数据存储装置200的配置实例的功能框图。如图9所示,数据存储装置200包括:第一数据存储单元151、第一存取控制单元101、第二数据存储单元152、第二存取控制单元102、第一状态存储单元153、第三存取控制单元103、第二状态存储单元154、第四存取控制单元104、奇偶校验计算单元130、状态更新单元120-2、控制器110-2、第三状态存储单元255、以及第五存取控制单元205。控制器110-2包括奇偶校验更新单元111-2和奇偶校验写入单元112-2。对与已经说明的功能单元相同的单元分配相同的标号,并且省略详细说明。
第三状态存储单元255存储附加的(additional)第二状态集合信息。由第二状态存储单元154存储的第二状态集合信息所指示的处于第二状态的存储区的集合包括以下两个集合。
(1)在当稍后描述的奇偶校验写入单元112-2指示第一存取控制单元101和第二存取控制单元102向第二数据存储单元152中写入在第一数据存储单元151中记录的奇偶校验数据时最后的时刻(以下称为最后的奇偶校验写入时刻)之前起已连续地处于第二状态的存储区的集合。
(2)在最后的奇偶校验写入时刻之后,通过稍后描述的状态更新单元120-2从由第一状态集合信息指示的存储区的集合选择的作为要改变为第二状态的存储区、并作为结果而变为第二状态的存储区的集合。
附加的第二状态集合信息是关于在最后的奇偶校验写入时刻之后变成第二状态的存储区的集合(附加的第二状态集合)的信息。附加的第二状态集合信息通过例如如图10所示的存储区的标识符的列表结构而形成。
第五存取控制单元205控制对第三状态存储单元255的存取。对第三状态存储单元255的存取包括对由第三状态存储单元255存储的附加的第二状态集合信息的读出、由请求源指定的存储区信息向由第三状态存储单元255存储的附加的第二状态集合信息的添加、从由第三状态存储单元255存储的附加的第二状态集合信息对由请求源指定的存储区信息的删除、以及对由第三状态存储单元255存储的附加的第二状态集合信息的删除。
状态更新单元120-2类似于根据第一实施例的状态更新单元120,但通告目的地是奇偶校验更新单元111-2,而不是奇偶校验更新单元111,因此省略详细描述。
奇偶校验更新单元111-2类似于奇偶校验更新单元111,但涉及当从状态更新单元120-2通知关于要改变为第一状态的存储区的识别信息时的处理,通告源是状态更新单元120-2,而不是状态更新单元120,因此省略详细描述。
当从状态更新单元120-2通知关于要改变为第二状态的存储区的识别信息时,除了执行当从状态更新单元120向奇偶校验更新单元111通知关于要改变为第二状态的存储区的识别信息时执行的处理之外,奇偶校验更新单元111-2还指示第五存取控制单元205将关于所通知的存储区的识别信息添加到由第三状态存储单元255存储的附加的第二状态集合信息中。
奇偶校验写入单元112-2指示第五存取控制单元205读出由第三状态存储单元255存储的附加的第二状态集合信息,并获取由第三状态存储单元255存储的附加的第二状态集合信息。奇偶校验写入单元112-2获得关于在所获取的附加的第二状态集合信息中包括的存储区的识别信息(以下称为区域信息)的条数。当所获得的区域信息的条数超过预先地或动态地确定的阈值时,除了由奇偶校验写入单元112给出的奇偶校验写入指令之外,奇偶校验写入单元112-2指示第五存取控制单元205删除由第三状态存储单元255存储的附加的第二状态集合信息。
以下参照图11描述由此配置的根据第二实施例的数据存储装置200所执行的处理。将存储区改变为第一状态的处理的流程类似于根据第一实施例的图6,因此省略描述。图11是示出根据第二实施例的将存储区改变为第二状态的处理的流程的流程图。
步骤S401至S406是类似于由根据第一实施例的数据存储装置100在步骤S201至S206进行的处理的处理,因此省略对其的描述。
在步骤S407,奇偶校验更新单元111-2将关于要改变为第二状态的存储区的识别信息添加到附加的第二状态集合信息中。具体地,奇偶校验更新单元111-2指示第五存取控制单元205将关于从状态更新单元120-2通知的存储区的识别信息添加到由第三状态存储单元255存储的附加的第二状态集合信息中。第五存取控制单元205将关于从状态更新单元120-2向奇偶校验更新单元111-2通知的存储区的识别信息添加到由第三状态存储单元255存储的附加的第二状态集合信息中。
以下参照图12描述奇偶校验写入的处理过程的实例。图12是示出根据第二实施例的奇偶校验写入处理的流程的流程图。
开始,奇偶校验写入单元112-2获得在附加的第二状态集合信息中包括的区域信息的条数(步骤S501)。具体地,奇偶校验写入单元112-2指示第五存取控制单元205读出由第三状态存储单元255存储的附加的第二状态集合信息。第五存取控制单元205读出由第三状态存储单元255存储的附加的第二状态集合信息,并输出至奇偶校验写入单元112-2。奇偶校验写入单元112-2获取由第三状态存储单元255存储的附加的第二状态集合信息。奇偶校验写入单元112-2获得在所获取的附加的第二状态集合信息中包括的区域信息的条数。
奇偶校验写入单元112-2确定区域信息的条数是否超过预先地或动态地确定的阈值(步骤S502)。如果所获得的区域信息的条数不超过阈值(步骤S502的否),则处理结束。
如果所获得的区域信息的条数超过阈值(步骤S502的是),则奇偶校验写入单元112-2从第一数据存储单元151读出奇偶校验数据(步骤S503)。具体地,奇偶校验写入单元112-2指示第一存取控制单元101读出在第一数据存储单元151中记录的奇偶校验数据。第一存取控制单元101读出在第一数据存储单元151中记录的奇偶校验数据,并输出至奇偶校验写入单元112-2。奇偶校验写入单元112-2获取在第一数据存储单元151中记录的奇偶校验数据。
步骤S504的处理类似于图8中的步骤S302的处理,因此省略详细描述。
奇偶校验写入单元112-2从第三状态存储单元255删除附加的第二状态集合信息(步骤S505)。具体地,奇偶校验写入单元112-2指示第五存取控制单元205删除由第三状态存储单元255存储的附加的第二状态集合信息。第五存取控制单元205删除由第三状态存储单元255存储的附加的第二状态集合信息。
第三实施例
在根据第三实施例的数据存储装置中,每当要改变为第一状态的存储区的数目超过预先地或动态地确定的阈值时,从第一数据存储单元151向第二数据存储单元152写入奇偶校验数据。
图13是根据第三实施例的数据存储装置300的配置实例的功能框图。如图13所示,数据存储装置300包括:第一数据存储单元151、第一存取控制单元101、第二数据存储单元152、第二存取控制单元102、第一状态存储单元153、第三存取控制单元103、第二状态存储单元154、第四存取控制单元104、奇偶校验计算单元130、状态更新单元120-3、控制器110-3、第四状态存储单元356、以及第六存取控制单元306。控制器110-3包括奇偶校验更新单元111-3和奇偶校验写入单元112-3。对与已经说明的功能单元相同的单元分配相同的标号,并且省略详细说明。
第四状态存储单元356存储附加的第一状态集合信息。由第一状态存储单元153存储的第一状态集合信息所指示的处于第一状态的存储区的集合包括以下两个集合。
(1)在当稍后描述的奇偶校验写入单元112-3指示第一存取控制单元101和第二存取控制单元102向第二数据存储单元152中写入在第一数据存储单元151中记录的奇偶校验数据时最后的时刻(以下,称为最后的奇偶校验写入时刻)之前起已经连续地处于第一状态的存储区的集合。
(2)在最后的奇偶校验写入时刻之后,通过稍后描述的状态更新单元120-3从由第二状态集合信息指示的存储区的集合选择的作为要改变为第一状态的存储区、并作为结果而变为第一状态的存储区的集合。
附加的第一状态集合信息是关于在最后的奇偶校验写入时刻之后变成第一状态的存储区的集合(附加的第一状态集合)的信息。附加的第一状态集合信息通过例如如图14所示的存储区的标识符的列表结构而形成。
第六存取控制单元306控制对第四状态存储单元356的存取。对第四状态存储单元356的存取包括对由第四状态存储单元356存储的附加的第一状态集合信息的读出、由请求源指定的存储区信息向由第四状态存储单元356存储的附加的第一状态集合信息的添加、对由请求源指定的存储区信息从由第四状态存储单元356存储的附加的第一状态集合信息的删除、以及对由第四状态存储单元356存储的附加的第一状态集合信息的删除。
状态更新单元120-3类似于状态更新单元120,但通告目的地是奇偶校验更新单元111-3,而不是奇偶校验更新单元111,因此省略详细描述。
当从状态更新单元120-3通知关于要改变为第一状态的存储区的识别信息时,除了执行当从状态更新单元120向奇偶校验更新单元111通知关于要改变为第一状态的存储区的识别信息时执行的处理之外,奇偶校验更新单元111-3还指示第六存取控制单元206将关于所通知的存储区的识别信息添加到由第四状态存储单元356存储的附加的第一状态集合信息中。
奇偶校验更新单元111-3类似于奇偶校验更新单元111,但涉及当从状态更新单元120-3通知关于要改变为第二状态的存储区的识别信息时的处理,通告源是状态更新单元120-3,而不是状态更新单元120,因此省略详细描述。
奇偶校验写入单元112-3指示第六存取控制单元306读出由第四状态存储单元356存储的附加的第一状态集合信息,并获取由第四状态存储单元356存储的附加的第一状态集合信息。奇偶校验写入单元112-3获得关于在所获取的附加的第一状态集合信息中包括的存储区的识别信息(以下称为区域信息)的条数。当所获得的区域信息的条数超过预先地或动态地确定的阈值时,除了由奇偶校验写入单元112给出的奇偶校验写入指令之外,奇偶校验写入单元112-3还指示第六存取控制单元306删除由第四状态存储单元存储的附加的第一状态集合信息。
以下参照图15描述由此配置的根据第三实施例的数据存储装置300所执行的处理。图15是示出根据第三实施例的将存储区改变为第一状态的处理的流程的流程图。
步骤S601至S606是类似于由根据第一实施例的数据存储装置100在步骤S101至S106进行的处理的处理,因此省略对其的描述。
在步骤S607,奇偶校验更新单元111-3将关于要改变为第一状态的存储区的识别信息添加到附加的第一状态集合信息。具体地,奇偶校验更新单元111-3指示第六存取控制单元306将关于从状态更新单元120-3通知的存储区的识别信息添加到由第四状态存储单元356存储的附加的第一状态集合信息中。第六存取控制单元306将关于从状态更新单元120-3向奇偶校验更新单元111-3通知的存储区的识别信息添加到由第四状态存储单元356存储的附加的第一状态集合信息中。
将存储区改变为第二状态的处理流程类似于根据第一实施例的图7,因此省略描述。
以下参照图16描述奇偶校验写入的处理过程的实例。图16是示出根据第三实施例的奇偶校验写入处理的流程的流程图。
开始,奇偶校验写入单元112-3获得在附加的第一状态集合信息中包括的区域信息的条数(步骤S701)。具体地,奇偶校验写入单元112-3指示第六存取控制单元306读出由第四状态存储单元356存储的附加的第一状态集合信息。第六存取控制单元306读出由第四状态存储单元356存储的附加的第一状态集合信息,并输出至奇偶校验写入单元112-3。奇偶校验写入单元112-3获取由第四状态存储单元356存储的附加的第一状态集合信息。奇偶校验写入单元112-3获得在所获取的附加的第一状态集合信息中包括的区域信息的条数。
奇偶校验写入单元112-3确定区域信息的条数是否超过预先地或动态地确定的阈值(步骤S702)。如果所获得的区域信息的条数不超过阈值(步骤S702的否),则处理结束。
如果所获得的区域信息的条数超过阈值(步骤S702的是),则奇偶校验写入单元112-3从第一数据存储单元151读出奇偶校验数据(步骤S703)。具体地,奇偶校验写入单元112-3指示第一存取控制单元101读出在第一数据存储单元151中记录的奇偶校验数据。第一存取控制单元101读出在第一数据存储单元151中记录的奇偶校验数据,并输出至奇偶校验写入单元112-3。奇偶校验写入单元112-3获取在第一数据存储单元151中记录的奇偶校验数据。
步骤S704的处理类似于图8中的步骤S302的处理,因此省略详细描述。
奇偶校验写入单元112-3从第四状态存储单元356删除附加的第一状态集合信息(步骤S705)。具体地,奇偶校验写入单元112-3指示第六存取控制单元306删除由第四状态存储单元356存储的附加的第一状态集合信息。第六存取控制单元306删除由第四状态存储单元356存储的附加的第一状态集合信息。
第四实施例
在根据第四实施例的数据存储装置中,每当要改变为第一状态的存储区的数目超过阈值时,或每当要改变为第二状态的存储区的数目超过阈值时,从第一数据存储单元151向第二数据存储单元152写入奇偶校验数据。
图17是根据第四实施例的数据存储装置400的配置实例的功能框图。如图17所示,数据存储装置400包括:第一数据存储单元151、第一存取控制单元101、第二数据存储单元152、第二存取控制单元102、第一状态存储单元153、第三存取控制单元103、第二状态存储单元154、第四存取控制单元104、奇偶校验计算单元130、状态更新单元120-4、控制器110-4、第三状态存储单元255、第五存取控制单元205、第四状态存储单元356、以及第六存取控制单元305。控制器110-4包括奇偶校验更新单元111-4和奇偶校验写入单元112-4。对与已经说明的功能单元相同的单元分配相同的标号,并且省略详细说明。
状态更新单元120-4类似于状态更新单元120,但通告目的地是奇偶校验更新单元111-4,而不是奇偶校验更新单元111,因此省略详细描述。
奇偶校验更新单元111-4类似于奇偶校验更新单元111-3,但涉及当从状态更新单元120-4通知关于要改变为第一状态的存储区的识别信息时的处理,通告源是状态更新单元120-4,而不是状态更新单元120-3,因此省略详细描述。
奇偶校验更新单元111-4类似于奇偶校验更新单元111-2,但涉及当从状态更新单元120-4通知关于要改变为第二状态的存储区的识别信息时的处理,通告源是状态更新单元120-4,并非状态更新单元120-2,因此省略详细描述。
奇偶校验写入单元112-4指示第五存取控制单元205读出由第三状态存储单元255存储的附加的第二状态集合信息,并获取由第三状态存储单元255存储的附加的第二状态集合信息。奇偶校验写入单元112-4获得在所获取的附加的第二状态集合信息中包括的区域信息的条数。奇偶校验写入单元112-4指示第六存取控制单元306读出由第四状态存储单元356存储的附加的第一状态集合信息,并获取由第四状态存储单元356存储的附加的第一状态集合信息。奇偶校验写入单元112-4获得在所获取的附加的第一状态集合信息中包括的区域信息的条数。
当在所获得的附加的第二状态集合信息中包括的区域信息的条数超过预先地或动态地确定的阈值时,或当在所获得的附加的第一状态集合信息中包括的区域信息的条数超过预先地或动态地确定的阈值时,除了由奇偶校验写入单元112给出的奇偶校验写入指令并指示第五存取控制单元205删除由奇偶校验写入单元112-2给出的第三状态存储单元255所存储的附加的第二状态集合信息之外,奇偶校验写入单元112-4还指示第六存取控制单元306删除由第四状态存储单元356存储的附加的第一状态集合信息。
以下参照图18描述由此配置的根据第四实施例的数据存储装置400所执行的处理。将存储区改变为第一状态的处理以及将存储区改变为第二状态的处理分别类似于图15(第三实施例)和图11(第二实施例),因此省略描述。图18是示出根据第四实施例的奇偶校验写入处理的流程的流程图。
在步骤S801,获得在附加的第二状态集合信息中包括的区域信息的条数。该处理与图12中的步骤501的处理相同,但其是通过奇偶校验写入单元112-4执行的,而不是通过奇偶校验写入单元112-2执行的,因此省略详细描述。
在步骤S802,获得在附加的第一状态集合信息中包括的区域信息的条数。该处理与图16中的步骤701的处理相同,但其是通过奇偶校验写入单元112-4执行的,而不是通过奇偶校验写入单元112-3执行的,因此省略详细描述。
奇偶校验写入单元112-4确定区域信息的条数是否超过阈值(步骤S803)。具体地,奇偶校验写入单元112-4确定在步骤S801获得的附加的第二状态集合信息中所包括的区域信息的条数是否超过预先地或动态地确定的阈值(第一阈值),或在步骤S802获得的附加的第一状态集合信息中所包括的区域信息的条数是否超过预先地或动态地确定的阈值(第二阈值)。如果所获得的区域信息的条数不超过阈值(步骤S803的否),则该处理结束。
如果所获得的区域信息的条数超过阈值(步骤S803的是),则奇偶校验写入单元112-4从第一数据存储单元151读出奇偶校验数据(步骤S804)。该处理与图12中的步骤503的处理相同,但其是通过奇偶校验写入单元112-4执行的,而不是通过奇偶校验写入单元112-2执行的,因此省略详细描述。
步骤S805至S806的处理类似于通过根据第二实施例的数据存储装置200在步骤S504至S505进行的处理,因此省略对其的描述。此外,步骤S807的处理类似于通过根据第三实施例的数据存储装置300在步骤705进行的处理,因此省略对其的描述。
第五实施例
当使用具有上述特性的存储器时,在一些情况下,将易失性存储器用于第一数据存储单元151,并将非易失性存储器用于第二数据存储单元152。因此,例如,当关闭数据存储装置的电源时,在第一数据存储单元151上记录的奇偶校验数据丢失。为此,如果发生不期望的断电,当后来开启数据存储装置的电源时,需要恢复在断电之前在第一数据存储单元151上记录的奇偶校验数据。
可通过基于由第一状态存储单元153存储的第一状态集合信息而读出在处于第一状态的存储区中记录的所有数据并执行奇偶校验计算,来恢复在断电之前在第一数据存储单元151中记录的奇偶校验数据。然而,当奇偶校验组中包括大量存储区时,处理时间增加。
根据第五实施例,通过使用由第三状态存储单元255存储的附加的第二状态集合信息和由第四状态存储单元356存储的附加的第一状态集合信息,便于奇偶校验数据恢复的时间的缩短。
执行对在第一数据存储单元151中记录的奇偶校验数据的恢复的处理不限于以上情况。例如,可以当在第一数据存储单元151中记录的奇偶校验数据中检测到错误时,或当因为其他原因而需要恢复在第一数据存储单元151中记录的奇偶校验数据时,执行该处理。
图19是根据第五实施例的数据存储装置500的配置实例的功能框图。如图19所示,数据存储装置500包括:第一数据存储单元151、第一存取控制单元101、第二数据存储单元152、第二存取控制单元102、第一状态存储单元153、第三存取控制单元103、第二状态存储单元154、第四存取控制单元104、奇偶校验计算单元130、状态更新单元120-5、控制器110-5、第三状态存储单元255、第五存取控制单元205、第四状态存储单元356、以及第六存取控制单元306。控制器110-5包括奇偶校验更新单元111-5、奇偶校验写入单元112-4和奇偶校验恢复单元513。对与已经说明的功能单元相同的单元分配相同的标号,并且省略详细说明。
当需要恢复在第一数据存储单元151中记录的奇偶校验数据时,奇偶校验恢复单元513指示第二存取控制单元102读出在第二数据存储单元152中最后记录的奇偶校验数据,并获取在第二数据存储单元152中的最新(latest)记录的奇偶校验数据。
在固态驱动器(SSD)中,例如,为了使删除的次数在每个存储区中分布的目的,当更新一条数据时,在一些情况下,将更新后的数据记录在与更新前记录该数据的存储区不同的存储区中。获取最新记录的奇偶校验数据意味着获取这样的奇偶校验数据,该奇偶校验数据被最后记录为实际有效的奇偶校验数据,即使当通过使用上述数据记录方法将奇偶校验数据记录在多个区域中时也是如此。
奇偶校验恢复单元513指示第五存取控制单元205读出由第三状态存储单元255存储的附加的第二状态集合信息,并获取由第三状态存储单元255存储的附加的第二状态集合信息。
奇偶校验恢复单元513指示第二存取控制单元102从与所获取的附加的第二状态集合信息对应的第二数据存储单元152的各个存储区读出与附加的第二状态集合信息对应的存储区所存储的数据,并获取与附加的第二状态集合信息对应的存储区所存储的数据。
奇偶校验恢复单元513指示第六存取控制单元306读出由第四状态存储单元356存储的附加的第一状态集合信息,并获取由第四状态存储单元356存储的附加的第一状态集合信息。
奇偶校验恢复单元513指示第二存取控制单元102从与所获取的附加的第一状态集合信息对应的第二数据存储单元152的各个存储区读出与附加的第一状态集合信息对应的存储区所存储的数据,并获取与附加的第一状态集合信息对应的存储区所存储的数据。
奇偶校验恢复单元513指示奇偶校验计算单元130对所获取的在第二数据存储单元152中的最新记录的奇偶校验数据、由与所获取的附加的第二状态集合信息对应的存储区存储的数据的组、以及由与所获取的附加的第一状态集合信息对应的存储区存储的数据的组执行奇偶校验计算,并获取更新后的奇偶校验数据。
以上过程的顺序可在不导致奇偶校验计算的最终结果改变的范围内适当互换。
奇偶校验恢复单元513指示第一存取控制单元101向第一数据存储单元151中记录所获取的更新后的奇偶校验数据。
状态更新单元120-5指示第四存取控制单元104读出由第二状态存储单元154存储的第二状态集合信息(如果需要),并获取第二状态集合信息。状态更新单元120-5指示第五存取控制单元205读出由第三状态存储单元255存储的附加的第二状态集合信息,并获取附加的第二状态集合信息。状态更新单元120-5从这样的集合选择要改变为第一状态的存储区,并向奇偶校验更新单元111-5通知关于所选择的存储区的识别信息,该集合为从由所获取的第二状态集合信息指示的存储区的集合中将由所获取的附加的第二状态集合信息指示的存储区的集合排除在外而得到的集合。
奇偶校验更新单元111-5类似于奇偶校验更新单元111-4,但通告源是状态更新单元120-5,而不是状态更新单元120-4,因此省略详细描述。
以下参照图20描述由此配置的根据第五实施例的数据存储装置500所执行的处理。图20是示出根据第五实施例的将存储区改变为第一状态的处理的流程的流程图。
开始,如果需要,状态更新单元120-5从第二状态存储单元154读出第二状态集合(步骤S901)。具体地,状态更新单元120-5指示第四存取控制单元104读出由第二状态存储单元154存储的第二状态集合信息。第四存取控制单元104读出由第二状态存储单元154存储的第二状态集合信息,并输出至状态更新单元120-5。状态更新单元120-5获取第二状态集合信息。状态更新单元120-5指示第五存取控制单元205读出由第三状态存储单元255存储的附加的第二状态集合信息(步骤S902)。第五存取控制单元205读出由第三状态存储单元255存储的附加的第二状态集合信息,并输出至状态更新单元120-5。状态更新单元120-5获取附加的第二状态集合信息。状态更新单元120-5从这样的集合选择要改变为第一状态的存储区,并向奇偶校验更新单元111-5通知关于所选择的存储区的识别信息,该集合为从由所获取的第二状态集合信息指示的存储区的集合中将由所获取的附加的第二状态集合信息指示的存储区的集合排除在外而得到的集合(步骤S903)。
步骤S904至S908的处理类似于根据第三实施例由数据存储装置300在步骤S603至S607进行的处理,因此省略对其的描述。
对要改变为第一状态的存储区设置限制的原因是因为当恢复奇偶校验数据(稍后描述)时需要由附加的第二状态集合信息指示的存储区所存储的数据。为此,根据该实施例,仅允许在被包括在这样的集合中的处于第二状态的存储区中进行用户数据的重写处理,该集合为从由第二状态集合信息指示的存储区的集合中将由附加的第二状态集合信息指示的存储区的集合排除在外而得到的集合。换句话说,不允许在由附加的第二状态集合信息指示的存储区的集合中所包括的处于第二状态的存储区中进行用户数据的重写处理。因此,可保持由附加的第二状态集合信息指示的存储区所存储的数据。
将存储区改变为第二状态的处理过程的实例以及奇偶校验写入的处理过程的实例类似于第四实施例,因此省略详细描述。
以下参照图21描述恢复奇偶校验数据的处理过程的实例。
开始,奇偶校验恢复单元513读出最后写入的奇偶校验数据(步骤S1001)。具体地,当需要恢复在第一数据存储单元151中记录的奇偶校验数据时,奇偶校验恢复单元513指示第二存取控制单元102读出被最后记录到第二数据存储单元152中的奇偶校验数据。第二存取控制单元102读出被最后记录到第二数据存储单元152中的奇偶校验数据,并输出至奇偶校验恢复单元513。奇偶校验恢复单元513获取被最后记录到第二数据存储单元152中的奇偶校验数据。
奇偶校验恢复单元513读出与附加的第二状态集合信息对应的存储区所存储的数据。具体地,奇偶校验恢复单元513指示第五存取控制单元205读出由第三状态存储单元255存储的附加的第二状态集合信息。第五存取控制单元205读出由第三状态存储单元255存储的附加的第二状态集合信息,并输出至奇偶校验恢复单元513。奇偶校验恢复单元513获取由第三状态存储单元255存储的附加的第二状态集合信息(步骤S1002)。针对与所获取的附加的第二状态集合信息对应的第二数据存储单元152的每个存储区,奇偶校验恢复单元513指示第二存取控制单元102读出由与附加的第二状态集合信息对应的存储区存储的数据。第二存取控制单元102读出与由奇偶校验恢复单元513获取的附加的第二状态集合信息对应的存储区所存储的数据,并输出至奇偶校验恢复单元513。奇偶校验恢复单元513获取与附加的第二状态集合信息对应的存储区所存储的数据(步骤S1003)。
奇偶校验恢复单元513读出与附加的第一状态集合信息对应的存储区所存储的数据。具体地,奇偶校验恢复单元513指示第六存取控制单元306读出由第四状态存储单元356存储的附加的第一状态集合信息。第六存取控制单元306读出由第四状态存储单元356存储的附加的第一状态集合信息,并输出至奇偶校验恢复单元513。奇偶校验恢复单元513获取由第四状态存储单元356存储的附加的第一状态集合信息(步骤S1004)。针对与所获取的附加的第一状态集合信息对应的第二数据存储单元152的每个存储区,奇偶校验恢复单元513指示第二存取控制单元102读出与附加的第一状态集合信息对应的存储区所存储的数据。第二存取控制单元102读出与由奇偶校验恢复单元513获取的附加的第一状态集合信息对应的存储区所存储的数据,并输出至奇偶校验恢复单元513。奇偶校验恢复单元513获取与附加的第一状态集合信息对应的存储区所存储的数据(步骤S1005)。
奇偶校验恢复单元513更新奇偶校验数据(步骤S1006)。具体地,奇偶校验恢复单元513指示奇偶校验计算单元130对所获取的在第二数据存储单元152中最新记录的奇偶校验数据、与所获取的附加的第二状态集合信息对应的存储区所存储的数据的组、以及与所获取的附加的第一状态集合信息对应的存储区所存储的数据的组执行奇偶校验计算。奇偶校验计算单元130对从指令源接收的多个输入数据执行奇偶校验计算,并将计算结果返回到指令源。奇偶校验恢复单元513获取更新后的奇偶校验数据。
奇偶校验恢复单元513存储奇偶校验数据(步骤S1007)。具体地,奇偶校验恢复单元513指示第一存取控制单元101向第一数据存储单元151中写入所获取的更新后的奇偶校验数据。第一存取控制单元101向第一数据存储单元151中写入所获取的更新后的奇偶校验数据。
这样,通过使用附加的第二状态集合信息和附加的第一状态集合信息,根据第五实施例的数据存储装置可以恢复奇偶校验数据,而无需读出在处于第一状态的存储区域中存储的所有用户数据。因此,可以实现奇偶校验数据的恢复时间的缩短。
第六实施例
如果根据奇偶校验数据提高恢复用户数据的可能性,可以进一步改善数据存储装置的可靠性。在通过异或运算的奇偶校验数据的情况下,可利用奇偶校验数据恢复在同一奇偶校验组中的一条用户数据,但利用奇偶校验数据不能恢复在同一奇偶校验组中的两条或更多条用户数据。通过适当地修改以下实施例,其可适用于通过除了异或运算之外的运算方法的数据恢复代码。
通过使用附加的第二状态集合信息和附加的第一状态集合信息,根据第六实施例的数据存储装置实现了同一奇偶校验组中的两条或更多条用户数据的恢复。下文中,根据第六实施例的用户数据的恢复方法称为重复差异校正(repetitive difference correction)。
图22是根据第六实施例的数据存储装置600的配置实例的功能框图。如图22所示,数据存储装置600包括:第一数据存储单元151、第一存取控制单元101、第二数据存储单元152、第二存取控制单元102、第一状态存储单元153、第三存取控制单元103、第二状态存储单元154、第四存取控制单元104、奇偶校验计算单元130、状态更新单元120-5、控制器110-6、第三状态存储单元255、第五存取控制单元205、第四状态存储单元356、以及第六存取控制单元306。控制器110-6包括奇偶校验更新单元111-5、奇偶校验写入单元112-4和奇偶校验恢复单元614。对与已经说明的功能单元相同的单元分配相同的标号,并且省略详细说明。
在开始对数据恢复单元614的说明之前,以下说明存储区与数据的保护状态之间的关系。图23是示出存储区的状态与通过奇偶校验数据的在存储区中记录的数据的保护状态之间的关系的示意图。
如图23所示,在由第一状态集合信息指示的存储区的集合(第一状态集合)中包括由附加的第一状态集合信息指示的存储区的集合(附加的第一状态集合)。在由第二状态集合信息指示的存储区的集合(第二状态集合)中包括由附加的第二状态集合信息指示的存储区的集合(附加的第二状态集合)。
如图23所示,第一状态集合是记录受到在第一数据存储单元151中记录的奇偶校验数据保护的数据的存储区的集合。将附加的第二状态集合与从第一状态集合排除了附加的第一状态集合而得到的存储区的集合相组合的存储区的集合是记录受到在第二数据存储单元152中的最新记录的奇偶校验数据保护的数据的存储区的集合。
如图23所示,当在其中存储希望被恢复的数据的两个存储区当中,一个存储区(以下称为存储区A)被包括在由附加的第一状态集合信息指示的存储区的集合中,另一存储区(以下称为存储区B)被包括在从第一状态集合排除了附加的第一状态集合而得到的存储区的集合中时,可以执行重复差异校正。在这样的状态下,在其中存储希望利用奇偶校验数据恢复的数据的两个存储区被包括在同一奇偶校验组中(第一状态集合),从而通过利用奇偶校验数据的通常的数据恢复处理不能恢复数据。
返回到对图22中所示的数据恢复单元614的说明。当从未示出的恢复请求源接收到重复差异校正请求(该重复差异校正请求包括关于在其中存储希望被恢复的数据的两个存储区的识别信息)时,数据恢复单元614确定是否:在两个存储区当中,一个存储区(存储区A)被包括在附加的第一状态集合中,而另一存储区(存储区B)被包括在从第一状态集合排除了附加的第一状态集合而得到的存储区的集合中。
具体地,数据恢复单元614指示第三存取控制单元103读出由第一状态存储单元153存储的第一状态集合信息,并获取由第一状态存储单元153存储的第一状态集合信息。数据恢复单元614指示第六存取控制单元306读出由第四状态存储单元356存储的附加的第一状态集合信息,并获取由第四状态存储单元356存储的附加的第一状态集合信息。数据恢复单元614确定是否:在接收到的重复差异校正请求中包括的两个存储区当中,一个存储区(存储区A)被包括在与所获取的附加的第一状态集合信息对应的存储区的集合中,而另一个存储区(存储区B)被包括在从由所获取的第一状态集合信息指示的存储区的集合中排除了由所获取的附加的第一状态集合信息指示的存储区的集合而得到的存储区的集合中。如果确定结果为假,则数据恢复单元614向未示出的恢复请求源输出不能执行重复差异校正。
数据恢复单元614恢复存储区B中的数据。开始,数据恢复单元614获取第二数据存储单元152中的最新记录的奇偶校正数据、以及利用奇偶校正数据进行恢复所需的用户数据。
具体地,数据恢复单元614指示第五存取控制单元205读出由第三状态存储单元255存储的附加的第二状态集合信息,并获取由第三状态存储单元255存储的附加的第二状态集合信息。数据恢复单元614指示第二存取控制单元102读出第二数据存储单元152中的最新记录的奇偶校验数据,并获取第二数据存储单元152中的最新记录的奇偶校验数据。此外,数据恢复单元614指示第二存取控制单元102读出从这样的存储区的集合排除了存储区B的存储区而得到的存储区的集合中的每个存储区所存储的数据,并获取每个存储区所存储的数据,该存储区的集合为将由所获取的附加的第二状态集合信息指示的存储区的集合与从由所获取的第一状态集合指示的存储区的集合排除了由所获取的附加的第一状态集合信息指示的存储区的集合而得到的存储区的集合进行组合而成的。
然后,数据恢复单元614从所获取的在第二数据存储单元152中的最新记录的奇偶校验数据以及利用奇偶校验数据进行恢复所需的用户数据而恢复存储区B中的数据。
具体地,数据恢复单元614指示奇偶校验计算单元130度所获取的在第二数据存储单元152中的最新记录的奇偶校验数据以及所获取的数据组执行奇偶校验计算,并获取在存储区B中的作为结果而恢复的数据。
数据恢复单元614恢复存储区A中的数据。开始,数据恢复单元614获取在第一数据存储单元151中记录的奇偶校验数据以及利用奇偶校验数据进行恢复所需的用户数据。所恢复的数据将被视为存储区B中的数据。
具体地,数据恢复单元614指示第一存取控制单元101读出在第一数据存储单元151中记录的奇偶校验数据,并获取在第一数据存储单元151中记录的奇偶校验数据。此外,数据恢复单元614指示第二存取控制单元102读出由从所获取的第一状态集合所指示的存储区的集合排除了存储区A的存储区和存储区B的存储区而得到的存储区的集合中的每个存储区存储的数据;并获取由每个存储区存储的数据。
数据恢复单元614随后从所获取的在第一数据存储单元151中记录的奇偶校验数据以及利用奇偶校验数据进行恢复所需的用户数据,恢复存储区A中的数据。
具体地,数据恢复单元614指示奇偶校验计算单元130对所获取的奇偶校验数据、所获取的数据组、以及所获取的在存储区B中的恢复的数据执行奇偶校验计算,并获取作为结果而恢复的存储区A中的数据。
以上过程的顺序可在不导致奇偶校验计算的最终结果改变的范围内适当互换。例如,通过单独地存储奇偶校验计算的中间计算结果,可便于优化,例如,减少从第二数据存储单元152读出数据的次数。
数据恢复单元614将在存储区A中的恢复的数据以及在存储区B中的恢复的数据返回到未示出的恢复请求源。
这样,通过适当地使用第二数据存储单元152中的最新记录的奇偶校验数据,有时候,在一些情况下可通过重复差异校正而恢复在同一奇偶校验组中的两条用户数据,从而可以进一步提高数据存储装置的可靠性。
以下参照图24描述由此配置的根据第六实施例的数据存储装置600所执行的处理。将存储区改变为第一状态的处理过程的实例、将存储区改变为第二状态的处理过程的实例、以及奇偶校验写入的处理过程的实例类似于根据第五实施例的情况,因此省略详细描述。图24是示出根据第六实施例的重复差异校正处理的实例的流程图。
开始,数据恢复单元614确定是否可执行重复差异校正(步骤S1101)。换句话说,当从未示出的恢复请求源接收到重复差异校正请求(该重复差异校正请求包括关于在其中存储希望被恢复的数据的两个存储区的识别信息)时,数据恢复单元614确定是否:在这两个存储区当中,一个存储区(存储区A)被包括在附加的第一状态集合中,而另一存储区(存储区B)被包括在从第一状态集合排除了附加的第一状态集合而得到的存储区的集合中。
具体地,数据恢复单元614指示第三存取控制单元103读出由第一状态存储单元153存储的第一状态集合信息。第三存取控制单元103读出由第一状态存储单元153存储的第一状态集合信息,并输出至数据恢复单元614。数据恢复单元614获取由第一状态存储单元153存储的第一状态集合信息。数据恢复单元614指示第六存取控制单元306读出由第四状态存储单元356存储的附加的第一状态集合信息。第六存取控制单元306读出由第四状态存储单元356存储的附加的第一状态集合信息,并输出至数据恢复单元614。数据恢复单元614获取由第四状态存储单元356存储的附加的第一状态集合信息。数据恢复单元614确定是否:在接收到的重复差异校正请求中包括的两个存储区当中,一个存储区(存储区A)被包括在与所获取的附加的第一状态集合信息对应的存储区的集合中,而另一个存储区(存储区B)被包括在从由所获取的第一状态集合信息指示的存储区的集合中排除了由所获取的附加的第一状态集合信息指示的存储区的集合而得到的存储区的集合中。
如果确定结果为假(S1101的否),则数据恢复单元614向未示出的恢复请求源输出不能执行重复差异校正,并且结束该处理。如果确定结果为真(S1101的是),数据恢复单元614获取在第二数据存储单元152中的最新记录的奇偶校验数据以及利用奇偶校正数据进行恢复所需的用户数据(步骤S1102)。具体地,数据恢复单元614指示第五存取控制单元205读出由第三状态存储单元255存储的附加的第二状态集合信息。第五存取控制单元205读出由第三状态存储单元255存储的附加的第二状态集合信息,并输出至数据恢复单元614。数据恢复单元614获取由第三状态存储单元255存储的附加的第二状态集合信息。数据恢复单元614指示第二存取控制单元102读出在第二数据存储单元152中的最新记录的奇偶校验数据。第二存取控制单元102读出在第二数据存储单元152中的最新记录的奇偶校验数据,并输出至数据恢复单元614。数据恢复单元614获取在第二数据存储单元152中的最新记录的奇偶校验数据。
此外,数据恢复单元614指示第二存取控制单元102读出从这样的存储区的集合排除了存储区B的存储区而得到的存储区的集合中的每个存储区所存储的数据,该存储区的集合为将由所获取的附加的第二状态集合信息指示的存储区的集合与从由所获取的第一状态集合指示的存储区的集合排除了由所获取的附加的第一状态集合信息指示的存储区的集合而得到的存储区的集合进行组合而成的。第二数据存储单元102读出由每个所指示的存储区存储的数据,并输出至数据恢复单元614。数据恢复单元614获取由所述每个存储区存储的数据。
数据恢复单元614恢复存储区B中的数据(步骤S1103)。具体地,数据恢复单元614指示奇偶校验计算单元130对所获取的在第二数据存储单元152中的最新记录的奇偶校验数据以及所获取的数据组执行奇偶校验计算。奇偶校验计算单元130对从指令源接收到的多个输入数据执行奇偶校验计算,并将计算结果返回到指令源。数据恢复单元614获取在存储区B中作为结果而恢复的数据。
数据恢复单元614获取在第一数据存储单元151中记录的奇偶校验数据以及利用奇偶校验数据进行恢复所需的用户数据(步骤S1104)。具体地,数据恢复单元614指示第一存取控制单元101读出在第一数据存储单元151中记录的奇偶校验数据。第一存取控制单元101读出在第一数据存储单元151中记录的奇偶校验数据,并输出至数据恢复单元614。数据恢复单元614获取在第一数据存储单元151中记录的奇偶校验数据。数据恢复单元614指示第二存取控制单元102读出由从所获取的第一状态集合所指示的存储区的集合排除了存储区A的存储区和存储区B的存储区而得到的存储区的集合中每个存储区存储的数据。第二存取控制单元102读出由每个所指示的存储区存储的数据,并输出至数据恢复单元614。数据恢复单元614获取由所述每个存储区存储的数据。
数据恢复单元614恢复存储区A中的数据(步骤S1105)。具体地,数据恢复单元614指示奇偶校验计算单元130对所获取的奇偶校验数据、所获取的数据组、以及所获取的存储区B中的恢复的数据执行奇偶校验计算。奇偶校验计算单元130对从指令源接收到的多个输入数据执行奇偶校验计算,并将计算结果返回到指令源。数据恢复单元614获取作为结果而恢复的存储区A中的数据。从步骤S1102至步骤S1105的过程的顺序可在不导致奇偶校验计算的最终结果改变的范围内适当互换。通过使从步骤S1102至步骤S1105的过程的顺序互换,例如,通过单独地存储奇偶校验计算的中间计算结果,可便于优化,例如,减少从第二数据存储单元152读出数据的次数。
数据恢复单元614将存储区A中的恢复的数据以及存储区B中的恢复的数据返回到未示出的恢复请求源(步骤S1106)。
这样,通过使用第二数据存储单元152中的最新记录的奇偶校验数据,根据第六实施例的数据存储装置可通过重复差异校正而恢复在同一奇偶校验组中的两条用户数据。因此,可以进一步提高数据存储装置的可靠性。
如上所述,根据第一至第六实施例,可以改善作为单独装置的数据存储装置的可靠性。此外,当更新奇偶校验数据时,更新的奇偶校验数据被存储在第一数据存储单元中,并且在特定的时机将在第一数据存储单元中存储的奇偶校验数据写入到第二数据存储单元中。因此,与在存储介质上的用户数据的写入量相比,可以减少在存储介质上的奇偶校验数据的写入量。
以下说明根据第一至第六实施例的控制器的硬件配置。根据第一至第六实施例的控制器包括诸如中央处理单元(CPU)的控制装置、诸如只读存储器(ROM)和随机存取存储器(RAM)的存储单元、以及连接每个单元的总线。
通过被预先并入例如ROM中而提供通过根据第一至第六实施例的控制器执行的计算机程序。
通过根据第一至第六实施例的控制器执行的计算机程序可被配置为通过在计算机可读的记录介质上以可安装格式或可执行格式将其记录在文件中而作为计算机程序产品来提供,所述计算机可读的记录介质为例如压缩盘只读存储器(CD-ROM)、软盘(FD)、可记录的压缩盘(CD-R)、或数字通用盘(DVD)。
此外,通过根据第一至第六实施例的控制器执行的计算机程序可被配置为通过将其存储在与网络(例如因特网)连接的计算机中并使其通过网络而被下载来提供。此外,通过根据第一至第六实施例的控制器执行的计算机程序可被配置为通过网络(例如因特网)来提供或分布。
通过根据第一至第六实施例的控制器执行的计算机程序可使得计算机用作上述存储装置的每个单元(奇偶校验更新单元、和奇偶校验写入单元)。计算机可通过用CPU将其从计算机可读的存储介质读出到主存储器上来执行计算机程序。
根据上述至少一个实施例的控制器,所述控制器控制向这样的存储装置的写入和从该存储装置的读出,该存储装置包括第一数据存储单元和第二数据存储单元。第二数据存储单元存储用户数据和用户数据的奇偶校验数据。第一数据存储单元存储奇偶校验数据。所述控制器包括奇偶校验更新单元和奇偶校验写入单元。当更新奇偶校验数据时,奇偶校验更新单元将更新的奇偶校验数据写入到第一数据存储单元中。当满足特定要求时,奇偶校验写入单元读出在第一数据存储单元中写入的奇偶校验数据,并将由此读出的奇偶校验数据写入到第二数据存储单元中。因此,可以改善作为单独装置的数据存储装置的可靠性。
尽管描述了某些实施例,但是这些实施例仅通过实例给出,并不旨在限制本发明的范围。实际上,这里所述的新颖实施例可通过各种其他形式实现;此外,在不脱离本发明的精神的情况下,可在这里所述的实施例的形式上进行各种省略、替换和修改。所附权利要求及其等同物旨在涵盖落入本发明的范围和精神内的这样的形式或修改。