一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于存储器的数据保护方法及其存储装置与流程

2022-02-24 18:19:45 来源:中国专利 TAG:


1.本公开总体上涉及数据存储领域,以及更具体地,涉及一种能够基于raid来恢复存储器中的一个存储块丢失的数据的方法及其存储装置。


背景技术:

2.raid(redundant array of independent disks,独立磁盘冗余阵列)是将多个独立磁盘通过不同的组合方式组合在一起形成的磁盘阵列。由于raid可以通过数据校验/镜像功能提供容错,从而增强了数据存储的安全性。因此,raid已经广泛应用于数据存储和数据保护的各个领域中。
3.近年来,为了进一步提高闪速存储器件的位密度以及降低其成本,开发出了三维(3d)nand闪存存储器(3d nand flash memory device)。但是,在对3d nand闪存存储器的某一存储块进行写入的过程中,由于各种原因(例如掉电、写入失败等),导致要写入的数据不能全部成功写入到这一存储块中,此时对这一存储块的写入并未完成,从而写入到这一存储块的一部分数据将不可用。在重新开始写入时,也将跳过这一存储块从相邻的存储块开始写入。为了能够在写入完成后利用raid技术来恢复一个“成功写入”的存储块中丢失的数据,在基于多个“成功写入”的存储块中的存储数据计算校验码数据时将跳过那些“未成功写入”的存储块中的不可用数据,并且在利用校验码数据恢复所述一个“成功写入”的存储块中后来丢失的数据时也同样需要跳过那些“未成功写入”的存储块中的不可用数据,所以在计算校验码数据时还需要生成用于记录跳过了哪些数据的附加数据,其中,校验码数据和附加数据一起形成用于恢复某一个“成功写入”的存储块中后来丢失的数据的校验因子。
4.因此,需要一种用于存储器的数据保护方法及其存储装置,其能够大大降低对校验因子的附加数据的空间要求,维持系统的ecc纠错能力,并且大大降低存储器的空间浪费。


技术实现要素:

5.根据本公开的实施例,提供了一种用于存储器的数据保护方法,所述存储器包括多个存储块,所述方法包括:基于所述多个存储块中的多个有效存储块的存储数据生成校验因子的校验码数据;在所述校验因子中为所述多个存储块配置第一多个地址指针;以及在每一个所述有效存储块中设置第二多个地址指针,其中,每一个所述有效存储块中的第二多个地址指针中的每一个分别指向相应一个其他有效存储块,所述第一多个地址指针以及所述多个有效存储块的第二多个地址指针能够一起形成覆盖所述多个有效存储块的全部有效存储块的地址链。
6.在一些实施例中,所述第一多个地址指针为2个地址指针,所述第二多个地址指针为2个地址指针,在所述多个有效存储块的某一个有效存储块的数据丢失及其对应设置的第二多个地址指针丢失的情况下,所述第一多个地址指针以及所述多个有效存储块的其他
有效存储块的第二多个地址指针能够一起形成覆盖所述多个有效存储块的其他有效存储块的全部有效存储块的地址链。
7.在一些实施例中,所述方法还包括步骤:当所述多个有效存储块中的某一个有效存储块的数据丢失时,基于所述校验因子的所述校验码数据以及通过所述第一多个地址指针和所述多个有效存储块的其他有效存储块的第二多个地址指针形成的地址链读取所述多个有效存储块的相应有效存储块的存储数据,来恢复所述某一个有效存储块所丢失的数据。
8.在一些实施例中,所述第一多个地址指针为n个地址指针,所述第二多个地址指针为n个地址指针,n为大于或等于2的整数;针对某一个有效存储块设置的n个地址指针分别指向在所述某一个有效存储块成功写入之前最近成功写入的n个有效存储块之一;所述校验因子的n个地址指针分别指向所述有效存储块中的最后成功写入的n个有效存储块之一。
9.在一些实施例中,所述多个存储块的多个有效存储块的最先成功写入的有效存储块的n个地址指针指向为空,所述多个存储块的第(n-m)个成功写入的有效存储块的n个地址指针中,(m 1)个地址指针指向为空,m为大于或等于0且小于n的整数。
10.在一些实施例中,所述地址链自动跳过所述多个存储块中的无效存储块。
11.在一些实施例中,基于所述多个存储块中的全部有效存储块的存储数据生成所述校验因子的校验码数据。
12.在一些实施例中,对所述多个存储块中的所述多个有效存储块的存储数据执行异或操作来生成所述校验因子的校验码数据。
13.在一些实施例中,对所述校验码数据以及通过所述地址链读取的相应有效存储块的存储数据执行异或操作来恢复所述某一个有效存储块所丢失的数据。
14.在一些实施例中,所述存储器为3d nand闪存存储器。
15.根据本公开的另一实施例,提供了一种用于存储器的数据恢复方法,所述存储器包括多个存储块,所述方法包括:确定所述多个存储块中的多个有效存储块的某一个有效存储块的数据丢失;以及基于校验因子的校验码数据以及通过地址链读取所述多个有效存储块的相应有效存储块的存储数据,来恢复所述某一个有效存储块所丢失的数据;其中,所述校验因子包括所述校验码数据和为所述多个存储块配置的第一多个地址指针,所述地址链通过所述第一多个地址指针以及在每一个所述有效存储块中设置的第二多个地址指针形成,每一个所述有效存储块中的第二多个地址指针中的每一个分别指向相应一个其他有效存储块,从而所述地址链能够覆盖所述多个有效存储块的全部有效存储块。
16.在一些实施例中,所述第一多个地址指针为2个地址指针,所述第二多个地址指针为2个地址指针,在所述多个有效存储块的某一个有效存储块的数据丢失及其对应设置的第二多个地址指针丢失的情况下,所述第一多个地址指针以及所述多个有效存储块的其他有效存储块的第二多个地址指针能够一起形成覆盖所述多个有效存储块的其他有效存储块的全部有效存储块的地址链。
17.在一些实施例中,在读取某一个有效存储块的存储数据时,存储在所述某一个有效存储块的第二多个地址指针也被读取,并且基于所述第二多个地址指针确定接下来读取的相应有效存储块。
18.在一些实施例中,所述第一多个地址指针为n个地址指针,所述第二多个地址指针
为n个地址指针,n为大于或等于2的整数;针对某一个有效存储块设置的n个地址指针分别指向在所述某一个有效存储块成功写入之前最近成功写入的n个有效存储块之一;所述校验因子的n个地址指针分别指向所述有效存储块中的最后成功写入的n个有效存储块之一。
19.在一些实施例中,对所述校验码数据以及通过所述地址链读取的相应有效存储块的存储数据执行异或操作来恢复所述某一个有效存储块所丢失的数据。
20.根据本公开的再一实施例,提供了一种存储器系统,包括:存储器,所述存储器包括多个存储块;以及存储器控制器,所述存储器控制器耦接至所述存储器并且被配置为:基于所述多个存储块中的多个有效存储块的存储数据生成校验因子的校验码数据;在所述校验因子中为所述多个存储块配置第一多个地址指针;以及在每一个所述有效存储块中设置第二多个地址指针,其中,每一个所述有效存储块中的第二多个地址指针中的每一个分别指向相应一个其他有效存储块,所述第一多个地址指针以及所述多个有效存储块的第二多个地址指针能够一起形成覆盖所述多个有效存储块的全部有效存储块的地址链。
21.在一些实施例中,所述第一多个地址指针为2个地址指针,所述第二多个地址指针为2个地址指针,在所述多个有效存储块的某一个有效存储块的数据丢失及其对应设置的第二多个地址指针丢失的情况下,所述第一多个地址指针以及所述多个有效存储块的其他有效存储块的第二多个地址指针能够一起形成覆盖所述多个有效存储块的其他有效存储块的全部有效存储块的地址链。
22.在一些实施例中,所述控制器还被配置为当所述多个有效存储块中的某一个有效存储块的数据丢失时,基于所述校验因子的所述校验码数据以及通过所述第一多个地址指针和所述多个有效存储块的其他有效存储块的第二多个地址指针形成的地址链读取所述多个有效存储块的相应有效存储块的存储数据,来恢复所述某一个有效存储块所丢失的数据。
23.在一些实施例中,所述第一多个地址指针为n个地址指针,所述第二多个地址指针为n个地址指针,n为大于或等于2的整数;针对某一个有效存储块设置的n个地址指针分别指向在所述某一个有效存储块成功写入之前最近成功写入的n个有效存储块之一;所述校验因子的n个地址指针分别指向所述有效存储块中的最后成功写入的n个有效存储块之一。
24.在一些实施例中,所述多个存储块的多个有效存储块的最先成功写入的有效存储块的n个地址指针指向为空,所述多个存储块的第(n-m)个成功写入的有效存储块的n个地址指针中,(m 1)个地址指针指向为空,m为大于或等于0且小于n的整数。
25.在一些实施例中,所述地址链自动跳过所述多个存储块中的无效存储块。
26.在一些实施例中,所述控制器被配置为基于所述多个存储块中的全部有效存储块的存储数据生成所述校验因子的校验码数据。
27.在一些实施例中,所述控制器被配置为对所述多个存储块中的所述多个有效存储块的存储数据执行异或操作来生成所述校验因子的校验码数据。
28.在一些实施例中,所述控制器被配置为对所述校验码数据以及通过所述地址链读取的相应有效存储块的存储数据执行异或操作来恢复所述某一个有效存储块所丢失的数据。
29.在一些实施例中,所述存储器为3d nand闪存存储器。
30.根据本公开的再一实施例,提供了一种存储器系统,包括:存储器,所述存储器包
括多个存储块;以及存储器控制器,所述存储器控制器耦接至所述存储器并且被配置为:确定所述多个存储块中的多个有效存储块的某一个有效存储块的数据丢失;以及基于校验因子的校验码数据以及通过地址链读取所述多个有效存储块的相应有效存储块的存储数据,来恢复所述某一个有效存储块所丢失的数据;其中,所述校验因子包括校验码数据和为所述多个存储块配置的第一多个地址指针,所述地址链通过所述第一多个地址指针以及在每一个所述有效存储块中设置的第二多个地址指针形成,每一个所述有效存储块中的第二多个地址指针中的每一个分别指向相应一个其他有效存储块,从而所述地址链能够覆盖所述多个有效存储块的全部有效存储块。
31.在一些实施例中,所述第一多个地址指针为2个地址指针,所述第二多个地址指针为2个地址指针,在所述多个有效存储块的某一个有效存储块的数据丢失及其对应设置的第二多个地址指针丢失的情况下,所述第一多个地址指针以及所述多个有效存储块的其他有效存储块的第二多个地址指针能够一起形成覆盖所述多个有效存储块的其他有效存储块的全部有效存储块的地址链。
32.在一些实施例中,所述存储器控制器被配置为在读取某一个有效存储块的存储数据时,存储在所述某一个有效存储块的第二多个地址指针也被读取,并且基于所述第二多个地址指针确定接下来读取的相应有效存储块。
33.在一些实施例中,所述第一多个地址指针为n个地址指针,所述第二多个地址指针为n个地址指针,n为大于或等于2的整数;针对某一个有效存储块设置的n个地址指针分别指向在所述某一个有效存储块成功写入之前最近成功写入的n个有效存储块之一;所述校验因子的n个地址指针分别指向所述有效存储块中的最后成功写入的n个有效存储块之一。
34.在一些实施例中,所述存储器控制器被配置为对所述校验码数据以及通过所述地址链读取的相应有效存储块的存储数据执行异或操作来恢复所述某一个有效存储块所丢失的数据。
35.根据本公开的再一实施例,提供了一种一种存储器系统,包括:存储器,所述存储器包括校验用存储区域和多个存储块;以及存储器控制器,所述存储器控制器耦接至所述存储器;所述校验用存储区域存储有对应所述多个存储块的多个有效存储块的校验因子,所述校验因子包括校验码数据和为所述多个存储块配置的第一多个地址指针;每一个所述有效存储块中设置有第二多个地址指针,每一个所述有效存储块中的第二多个地址指针中的每一个分别指向相应一个其他有效存储块;其中,所述第一多个地址指针以及所述多个有效存储块的第二多个地址指针能够一起形成覆盖所述多个有效存储块的全部有效存储块的地址链。
附图说明
36.附图被并入本文并形成说明书的一部分,例示了本公开的实施例并与说明书一起进一步用以解释本公开的原理,并使相关领域的技术人员能够做出和使用本公开。
37.图1示出了根据本公开一实施例的用于存储器的数据保护方法的示意图。
38.图2示出了根据本公开又一实施例的用于存储器的数据保护方法的示意图。
39.图3示出了根据本公开一实施例的用于存储器的数据保护方法的流程图;
40.图4示出了根据本公开一实施例的用于存储器的数据恢复方法的流程图;以及
41.图5示出了根据本公开一实施例的存储器系统的示意图。
具体实施方式
42.现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
43.要指出的是,在说明书中提到“一个实施例”、“实施例”、“一些实施例”等表示所述的实施例可包括特定的特征、结构或特性,但未必每个实施例都包括该特定特征、结构或特性。此外,这样的措辞用语未必是指相同的实施例。另外,在结合实施例描述特定的特征、结构或特性时,结合明确或未明确描述的其它实施例实现此类特征、结构或特性应在相关领域技术人员的知识范围之内。
44.尽管将参考3d nand闪存存储器来描述本公开的实施例,但应当理解,本公开创造性概念的实施例不限于此配置。例如,在不脱离本公开的范围的情况下,本公开适用于其他非易失性存储器件,例如电可擦除可编程rom(eeprom)、nor闪存、相变ram(pram)、磁ram(mram)、电阻ram(rram)、铁电ram(fram)等。
45.图1示出了根据本公开一实施例的用于存储器的数据保护方法的示意图,其中,以位图形式记录跳过了哪些数据。也就是说,位图数据作为校验因子f的附加数据。如图1中所示,3d nand闪存存储器100包括存储块d0、存储块d1、存储块d2、
……
、存储块dn。在写入过程中,完成写入的存储块标记为“有效”并且在位图中以“0”来表示,未完成写入导致其写入的一部分数据不可用的存储块标记为“跳过”并且在位图中以“1”来表示。为了利用raid技术来恢复在某一有效存储块中成功写入并且在写入完成后丢失的数据,在基于多个有效存储块中的存储数据计算校验码数据时将跳过这些标记为“1”的存储块中的不可用数据,并且在利用校验码数据恢复所述存储块中丢失的数据时也同样需要跳过这些标记为“1”的存储块中的不可用数据
46.然而,即使以位图形式进行压缩,仍然需要占用很大的存储器空间。在如图1所示的用于存储器的数据保护方法中,在raid的比例(被保护数据的量和校验因子的量)为127:1的情况下,位图需要占用16个字节;在raid的比例为255:1的情况下,位图更是需要占用32个字节。在作为校验因子f的附加数据的位图需要占用16个字节或32个字节的情况下,这将导致每个有效存储块的16个字节或32个字节的空间浪费而不能用于存储数据,因为即使在每个有效存储块的这些空间中写入数据,也无法在写入完成后利用raid技术来恢复在某一有效存储块的该空间中成功写入且后来丢失的数据。因此,除了需要在校验因子f中保留很大的空间用于附加数据(例如,位图),从而极大降低系统的ecc纠错能力之外,每个有效存储块还浪费与该附加数据大小相同的空间。
47.图2示出了根据本公开又一实施例的用于存储器的数据保护方法的示意图。如图2中所示,3d nand闪存存储器200包括存储块d0、存储块d1、存储块d2、
……
存储块d126。
48.如图2中所示,在3d nand闪存存储器200的写入过程中,成功写入的存储块d标记为“有效”,例如存储块d0、存储块d2、
……
存储块d123、存储块d125、存储块d126。在写入过程中因为某些原因(例如,掉电、写入失败等)导致数据未能全部成功写入的存储块d标记为“跳过”,例如存储块d1、存储块d3、
……
存储块d124,被标记为“跳过”的存储块中的数据不可用。也就是说,在完成对存储器200的写入之后,如果某一有效存储块d中存储的数据丢失,如果利用raid技术来恢复该有效存储块d中丢失的数据,在计算用来恢复该有效存储块d中丢失的数据的校验码数据p时不能用到这些被标记为“跳过”的存储块d中写入的数据。
49.如图2中所示,校验码数据p可以通过对3d nand闪存存储器200的全部存储块中的多个有效存储块d中存储的数据执行“异或”(xor)操作来生成。在一个实施例中,校验码数据p可以通过对3d nand闪存存储器200的全部有效存储块d中存储的数据执行“异或”(xor)操作来生成。xor是对两个操作数的逻辑运算,如果进行“异或”的两个值不同,则它产生逻辑值“1”;如果进行“异或”的两个值相同,则它产生逻辑值“0”。例如,如果有效存储块d0存储的数据为“11001010”,并且有效存储块d2存储的数据为“10000011”,则“异或”之后的结果为“01001001”。接下来,将上述结果与下一个有效存储块d中存储的数据再执行“异或”操作,直至全部有效存储块d中存储的数据都执行了“异或”操作,从而得到校验码数据p。
50.与图1所示的一样,用来恢复某一有效存储块d在写入完成后丢失的数据的校验因子f除了校验码数据p之外,同样还包括附加数据。但是与图1中使用位图作为校验因子f的附加数据不同的是,在图2中,使用地址链作为校验因子f的附加数据。例如,如图2中所示,校验因子f除了通过对多个有效存储块d中存储的数据进行“异或”操作得到的校验码数据p之外,还包括两个地址指针l1、l2,这两个地址指针l1、l2分别指向3d nand闪存存储器200的相应一个有效存储块d。在一个实施例中,这两个地址指针l1、l2中分别记录了所述相应一个有效存储块d的编号。在这种情况下,如果raid的比例为127:1,则这两个地址指针l1、l2可以只需要占用两个字节的空间;如果raid的比例为255:1,则这两个地址指针l1、l2可以只需要占用四个字节的空间。
51.如图2中所示,作为校验因子f的附加数据的两个地址指针l1、l2可以分别指向3d nand闪存存储器200中的从时间上来说最后成功写入的两个有效存储块之一。例如,地址指针l2指向最后成功写入的有效存储块d126,并且地址指针l1指向倒数第二个成功写入的有效存储块d125。应理解,图2中所示的情况是示例性的,假如最后一个存储块d126被标记为“跳过”,从时间上来说最后成功写入的有效存储块为d125,并且从时间上来说倒数第二个成功写入的有效存储块为d124,则作为校验因子f的附加数据的地址指针l2指向有效存储块d125,并且地址指针l1指向有效存储块d124。
52.与图1中位图作为校验因子f的附加数据一样,在图2中,在校验因子f的两个地址指针l1、l2占用两个字节的空间的情况下,每个有效存储块d中除了写入的存储数据之外,还分别占用两个字节的空间来存储两个地址指针d
l1
、d
l2
,这两个地址指针d
l1
、d
l2
分别指向在完成对该有效存储块d的写入之前最近成功写入的两个有效存储块d之一。如图2中所示,有效存储块d126中除了存储的数据之外,还存储有两个地址指针d126
l1
、d126
l2
,其中地址指针d126
l2
指向在对有效存储块d126成功写入之前从时间上来说最近成功写入的有效存储块,例如d125,并且地址指针d126
l1
指向在对有效存储块d126成功写入之前倒数第二个成功写入的有效存储块,例如d123。因为存储块d124被标记为“跳过”,尽管存储块d124比存储块
d123更接近有效存储块d126,但是地址指针d126
l1
也不会指向存储块d124。类似地,有效存储块d125中除了存储的数据之外,还存储有两个地址指针d125
l1
、d125
l2
,其中地址指针d125
l2
指向在对有效存储块d125成功写入之前最近成功写入的有效存储块,例如d123,并且地址指针d125
l1
指向在对有效存储块d125成功写入之前倒数第二个成功写入的有效存储块,例如d122(图2中未示出)。因为存储块d124被标记为“跳过”,尽管存储块d124比存储块d123更接近有效存储块d125,但是有效存储块d125中的两个地址指针d125
l1
、d125
l2
都不会指向存储块d124。依次类推,可以确定每个有效存储块d存储的两个地址指针d
l1
、d
l2
分别所指向的存储块。
53.如图2中所示,对3d nand闪存存储器200的写入过程如下:首先对存储块d0进行写入,假如对存储块d0写入成功(被标记为“有效”),因为在对存储块d0成功写入之前没有存储块d被成功写入,所以有效存储块d0中的两个地址指针d0
l1
、d0
l2
指向为空;接下来,对存储块d1进行写入,写入过程中,因为某一原因(例如,掉电)导致存储块d1未能成功写入(被标记为“跳过”);接下来,在恢复写入过程之后,对存储块d2进行写入,假如对存储块d2成功写入(被标记为“有效”),因为在对存储块d2成功写入之前只有存储块d0成功写入,则有效存储块d2中的地址指针d2
l2
指向有效存储块d0,并且有效存储块d2的地址指针d2
l1
指向为空;接下来,对存储块d3进行写入,写入过程中,因为某一原因(例如,掉电)导致存储块d3未能成功写入(被标记为“跳过”);接下来,在恢复写入过程之后,对存储块d4(图2中未示出)进行写入,假如对存储块d4成功写入,因为在对存储块d4成功写入之前存储块d0、存储块d2被成功写入,则有效存储块d4中的地址指针d4
l2
指向在有效存储块d4成功写入之前最近成功写入的有效存储块d2,并且有效存储块d4中的地址指针d4
l1
指向在有效存储块d4成功写入之前倒数第二个成功写入的有效存储块d0,
……
,依次类推,直至完成所有存储块d的写入。
54.在完成3d nand闪存存储器200的写入之后,如果某一有效存储块d存储的数据丢失,则利用raid技术能够恢复该有效存储块d中丢失的数据。具体而言,为了恢复某一有效存储块d丢失的数据,除了需要在写入过程中基于3d nand闪存存储器200的多个存储块中全部成功写入的有效存储块d中的存储数据得到的校验码数据p之外,还需要读取3d nand闪存存储器200的多个存储块d中除丢失数据的有效存储块d之外的其他有效存储块d中的存储数据。为了读取除丢失数据的有效存储块d之外的其他有效存储块d中的存储数据,可以通过校验因子f中的地址指针以及除丢失数据的有效存储块d之外的其他有效存储块d中的地址指针形成的地址链来读取相应有效存储块d中存储的数据。例如,在完成对3d nand闪存存储器200的写入之后,假设有效存储块d123中存储的数据丢失,为了恢复有效存储块d123中丢失的数据,根据校验因子f中的地址指针l2,知道存储块d126成功写入,因此需要读取有效存储块d126中的存储数据;接下来,根据有效存储块d126中的地址指针d126
l2
,知道存储块d125成功写入,因此需要读取有效存储块d125中的存储数据;再接下来,因为有效存储块d125中的地址指针d125
l2
指向存储块d123,但是存储块d123中的数据丢失已经无法读取,这时利用有效存储块d125中的地址指针d125
l1
,知道存储块d122(图2中未示出)成功写入,因此需要读取有效存储块d122中的存储数据;再接下来,根据有效存储块d122中的地址指针d122
l2

……
;依次类推,直至有效存储块d0中的存储数据也被读取。由此可见,通过校验因子f中的地址指针以及除丢失数据的有效存储块d123之外的其他有效存储块d中的
地址指针形成的地址链可以自动跳过3d nand闪存存储器200中被标记为“跳过”的存储块d以及丢失数据的有效存储块d123。也就是说,该地址链自动跳过3d nand闪存存储器200的多个存储块d中的无效存储块。在获得写入过程中基于3d nand闪存存储器200的全部有效存储块d中的存储数据得到的校验码数据p以及读取到的除丢失数据的有效存储块d123之外的其他有效存储块d中的存储数据之后,可以对校验码数据p以及通过校验因子f中的地址指针和除丢失数据的有效存储块d123之外的其他有效存储块d中的地址指针形成的地址链读取的相应有效存储块d中的存储数据执行“异或”操作,以恢复存储块d123中丢失的数据。
55.在图2所示的实施例中,如果在完成对3d nand闪存存储器200的写入之后,如果有效存储块d126中存储的数据丢失,为了利用raid技术恢复该有效存储块d126中后来丢失的数据,需要读取除有效存储块d126之外的其他有效存储块d中的存储数据。校验因子f的地址指针l2指向存储块d126,因为此时已经无法读取到存储块d126中存储的数据,所以此时可以利用校验因子f的地址指针l1指向有效存储块d125,先读取有效存储块d125中存储的数据。接下来,根据有效存储块d125中的地址指针d125
l2
,知道存储块d123成功写入,因此需要读取有效存储块d123中的存储数据;再接下来,根据有效存储块d123中的地址指针d123
l2

……
;依次类推,直至有效存储块d0中的存储数据也被读取。同样地,在获得写入过程中基于3d nand闪存存储器200的全部有效存储块d中的存储数据得到的校验码数据p以及通过校验因子f中的地址指针和除丢失数据的有效存储块d126之外的其他有效存储块d中的地址指针形成的地址链读取到的除丢失数据的有效存储块d126之外的其他有效存储块d中的存储数据之后,可以对校验码数据p以及所读取的相应有效存储块d中的存储数据执行“异或”操作,以恢复存储块d126中丢失的数据。
56.在一个实施例中,可以对生成的校验码数据p以及通过地址链读取的相应有效存储块的存储数据执行“异或”操作来恢复在写入过程之后某一个有效存储块d中丢失的数据。例如,仍以图2所示的方法为例,假设在写入过程之后,有效存储块d123中存储的数据丢失。为了恢复有效存储块d123中丢失的数据,可以首先将生成的附加校验码p与通过校验因子f中的地址指针l2读取到的有效存储块d126中的存储数据执行“异或”操作,然后将所得结果与通过有效存储块d126中的地址指针l2读取到的有效存储块d125中的存储数据再执行“异或”操作,然后将所得结果与通过有效存储块d125中的地址指针l1读取到的有效存储块d122(图2中未示出)中的存储数据再执行“异或”操作,
……
,直至将所得结果与读取到的有效存储块d2中的存储数据再执行“异或”操作,从而获得上述多个“异或”操作的最终结果,该最终结果也是有效存储块d0中存储的数据与有效存储块123中原来存储的数据执行“异或”操作的结果。因此,通过对生成的校验码数据p以及通过地址链读取的相应有效存储块的存储数据执行“异或”操作可以恢复在写入过程之后有效存储块d123中丢失的数据。
57.在图2所示的实施例中,因为校验因子f的两个地址指针l1、l2分别指向3d nand闪存存储器200的有效存储块d中最后成功写入的两个有效存储块之一,在不是最后成功写入的有效存储块d中存储的数据后来丢失时,利用校验因子f的地址指针l2以及除丢失数据的有效存储块d之外的其他有效存储块d中的地址指针形成的地址链,来读取除数据丢失的有效存储块d之外的其他有效存储块d中存储的数据。另外,即使在最后成功写入的有效存储块d(例如,存储块d126)中存储的数据后来丢失时,也可以利用校验因子f的地址指针l1以
及除最后成功写入的有效存储块d之外的其他有效存储块d中的地址指针形成的地址链,来读取除最后成功写入的有效存储块d之外的其他有效存储块d中存储的数据。由于可以根据发生数据丢失的有效存储块d的位置选择性地利用校验因子f的两个地址指针l1、l2之一作为链首的地址链来读取相应有效存储块d中存储的数据,所以不会发生断链。相反地,如果校验因子f只有一个地址指针l并且该地址指针l指向有效存储块中最后成功写入的有效存储块d,例如有效存储块d126,当有效存储块d126中存储的数据丢失时,将不能读取除有效存储块d126之外的其他有效存储块d中存储的数据。也就是说,这时将发生断链,从而无法利用raid技术来恢复存储块d126中丢失的数据。
58.另外,在raid的比例为127:1的情况下,如果如图1所示的以位图形式记录跳过了哪些数据,作为校验因子f的附加数据的位图需要占用16个字节的空间,并且每个有效存储块d也相应地浪费16个字节的空间;而如图2所示的以地址链的形式记录哪些存储块存储中的数据有效,作为校验因子f的附加数据的地址链只需要占用2个字节的空间,并且每个有效存储块d也相应地只浪费例如2个字节的空间,从而大大节省存储器的空间。
59.应理解,图2中所示的校验因子f包括两个地址指针l1、l2以及每个有效存储块d包括两个地址指针仅仅是示例性的。在一个实施例中,校验因子f可以包括n个地址指针(n为大于或等于2的整数),其分别指向3d nand闪存存储器200的有效存储块d中的最后成功写入的n个有效存储块之一。在这种情况下,每个有效存储块d除了所写入的存储数据之外,同样包括n个地址指针(n为大于或等于2的整数),其分别指向在相应有效存储块d成功写入之前最近成功写入的n个有效存储块d之一。例如,校验因子f可以包括三个地址指针l1、l2、l3并且每个有效存储块d可以包括三个地址指针,校验因子f的地址指针l3指向有效存储块d中的最后成功写入的有效存储块,地址指针l2指向有效存储块d中倒数第二个成功写入的有效存储块,并且地址指针l1指向有效存储块d中倒数第三个成功写入的有效存储块。相应地,每个有效存储块d的三个地址指针分别指向在该有效存储块d成功写入之前最近成功写入的三个有效存储块之一。
60.图3示出了根据本公开一实施例的用于存储器的数据保护方法的流程图,存储器包括多个存储块。如图3中所示,方法300包括:基于所述多个存储块中的多个有效存储块的存储数据生成校验因子的校验码数据(步骤s310);在所述校验因子中为所述多个存储块配置第一多个地址指针(步骤s320);以及在每一个所述有效存储块中设置第二多个地址指针,其中,每一个所述有效存储块中的第二多个地址指针中的每一个分别指向相应一个其他有效存储块,所述第一多个地址指针以及所述多个有效存储块的第二多个地址指针能够一起形成覆盖所述多个有效存储块的全部有效存储块的地址链(步骤s330)。步骤s310-s330说明如下:
61.步骤s310:基于所述多个存储块中的多个有效存储块的存储数据生成校验因子的校验码数据。仍以图2所示的方法为例,在3d nand闪存存储器的写入过程中,可以对全部有效存储块d中存储的数据执行“异或”操作生成校验因子f的校验码数据p。
62.步骤s320:在所述校验因子中为所述多个存储块配置第一多个地址指针。如图2中所示,校验因子f除了在步骤s310中得到的校验码数据p之外,还包括为所述多个存储块配置的作为附加数据的两个地址指针l1、l2,所述两个地址指针l1、l2分别指向所述多个有效存储块中的最后成功写入的两个有效存储块之一。
63.步骤s330:在每一个所述有效存储块中设置第二多个地址指针,其中,每一个所述有效存储块中的第二多个地址指针中的每一个分别指向相应一个其他有效存储块,所述第一多个地址指针以及所述多个有效存储块的第二多个地址指针能够一起形成覆盖所述多个有效存储块的全部有效存储块的地址链。仍以图2所示的方法为例,每一个有效存储块d中除了写入的存储数据之外,还设置有两个地址指针,所述两个地址指针分别指向在该有效存储块d成功写入之前最近成功写入的两个有效存储块之一。校验因子f的两个地址指针l1、l2以及每一个有效存储块d的两个地址指针能够一起形成覆盖全部有效存储块d的地址链。
64.图4示出了根据本公开一实施例的用于存储器的数据恢复方法的流程图,所述存储器包括多个存储块。如图4中所示,方法400包括:确定所述多个存储块中的多个有效存储块的某一个有效存储块的数据丢失(步骤s410);以及基于校验因子的校验码数据以及通过地址链读取所述多个有效存储块的相应有效存储块的存储数据,来恢复所述某一个有效存储块所丢失的数据,其中,所述校验因子包括所述校验码数据和为所述多个存储块配置的第一多个地址指针,所述地址链通过所述第一多个地址指针以及在每一个所述有效存储块中设置的第二多个地址指针形成,每一个所述有效存储块中的第二多个地址指针中的每一个分别指向相应一个其他有效存储块,从而所述地址链能够覆盖所述多个有效存储块的全部有效存储块(步骤s420)。
65.仍以图2所示的方法为例,首先确定多个有效存储块的某一个有效存储块d的数据丢失,例如,在写入过程之后,确定存储块d123中存储的数据丢失;然后读取除丢失数据的有效存储块d123之外的其他有效存储块d中的存储数据,为了读取其他有效存储块d中的存储数据,可以通过校验因子f中的两个地址指针以及其他有效存储块d中的地址指针形成的地址链来读取除有效存储块d123之外的全部有效存储块d中存储的数据;最后,可以对写入过程中基于3d nand闪存存储器200的全部有效存储块d中的存储数据得到的校验码数据p以及通过所述地址链读取到的除有效存储块d123之外的全部有效存储块d中的存储数据执行“异或”操作,以恢复存储块d123中丢失的数据。
66.图5示出了根据本公开一实施例的具有存储器的系统500的示意图。系统500可以是移动电话、台式计算机、膝上型计算机、平板计算机、游戏控制台、打印机、定位设备、可穿戴电子设备、智能传感器、虚拟现实(vr)设备、增强现实(ar)设备或具有存储器的任何其他合适电子设备。如图5中所示,系统500可以包括主机510和具有一个或多个存储器501和存储器控制器502的存储器系统520。主机510可以被配置为将数据发送到存储器501或从存储器501接收数据。
67.存储器501可以是本文所公开的任何存储器,例如3d nand闪存存储器,其包括检验用存储区域5011和多个存储块,例如存储块0、存储块1、存储块2、
……
、存储块n。检验用存储区域5011存储有对应多个存储块的多个有效存储块的校验因子,所述校验因子包括校验码数据和为所述多个存储块配置的第一多个地址指针。另外,存储器501的多个存储块的每一个有效存储块中设置有第二多个地址指针,每一个有效存储块的第二多个地址指针中的每一个分别指向相应一个其他有效存储块。其中,第一多个地址指针以及所述多个有效存储块的第二多个地址指针能够一起形成覆盖所述多个有效存储块的全部有效存储块的地址链。
68.如图5中所示,存储器控制器502包括前端接口5021和后端接口5022,前端接口5021通过通道lane 0、lane 1、lane2、lane3耦接到主机510,并且后端接口5022通过通道ch0、ch1、
……
、chn耦接到存储器501的检验用存储区域5011以及相应存储块,其中前端接口5021可以根据特定通信协议(例如,pcie、nvme)与主机510通信;后端接口5022包括raid模块。raid模块具体可以通过例如在后端接口5022的控制器中所写入的固件(firmware)等实现,也可以通过专用的硬件引擎电路实现。
69.在一个实施例中,raid模块可以被配置为基于存储器501的多个存储块中的多个有效存储块的存储数据生成校验因子的校验码数据;在所述校验因子中为所述多个存储块配置第一多个地址指针;以及在每一个所述有效存储块中针对其存储的存储数据设置第二多个地址指针,其中,每一个所述有效存储块中的第二多个地址指针中的每一个分别指向相应一个其他有效存储块,所述第一多个地址指针以及所述多个有效存储块的第二多个地址指针能够一起形成覆盖所述多个有效存储块的全部有效存储块的地址链。在另一实施例中,raid模块可以被配置为确定存储器501的多个存储块中的多个有效存储块的某一个有效存储块的数据丢失;以及基于校验因子的校验码数据以及通过地址链读取所述多个有效存储块的相应有效存储块的存储数据,来恢复所述某一个有效存储块所丢失的数据;其中,所述校验因子包括校验码数据和为所述多个存储块配置的第一多个地址指针,所述地址链通过所述第一多个地址指针以及在每一个所述有效存储块中针对其存储的所述存储数据而设置的第二多个地址指针形成,每一个所述有效存储块中的第二多个地址指针中的每一个分别指向相应一个其他有效存储块,从而所述地址链能够覆盖所述多个有效存储块的全部有效存储块。
70.存储器控制器502还包括具有处理单元1、处理单元2、
……
、处理单元n的处理模块5023,对应处理单元可以配置有相应的固件,例如,实现ftl(flash to logic,闪存到逻辑)功能的固件,处理单元上运行的相应固件可以基于接收的来自主机510的指令来控制存储器501的操作,例如,读取、擦除和编程操作。存储器控制器502还包括静态随机存取存储器(sram)5024、动态随机存取存储器(dram)控制器5025、动态随机存取存储器(dram)接口5026,其中动态随机存取存储器(dram)接口5026耦接至动态随机存取存储器(dram)503。如图5中所示,存储器控制器502的各部件可以连接至总线&电桥5027。
71.如上所述,根据本公开一实施例的存储器系统520能够利用地址链作为校验因子的附加数据,从而能够大大降低对校验因子的附加数据的空间要求,维持系统的ecc纠错能力,并且大大降低存储器的空间浪费。
72.根据一个实施例,提供了一种计算机可读存储介质,在其上存储有程序代码,当所述程序代码由处理器执行时,使得所述处理器能够执行本说明书结合图1-4描述的各个实施例中的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
73.可读存储介质的实施例包括非易失性存储卡和rom等。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
74.需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需
要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
75.已经结合各种装置和方法描述了控制器。所述控制器可以使用电子硬件、计算机软件或其任意组合来实施。所述控制器是实施为硬件还是软件将取决于具体的应用以及施加在系统上的总体设计约束。作为示例,本公开中给出的控制器、控制器的任意部分、或者控制器的任意组合可以实施为微处理器、微控制器、数字信号处理器(dsp)、现场可编程门阵列(fpga)、可编程逻辑器件(pld)、状态机、门逻辑、分立硬件电路、以及配置用于执行在本公开中描述的各种功能的其它适合的处理部件。本公开给出的控制器、控制器的任意部分、或者控制器的任意组合的功能可以实施为由微处理器、微控制器、dsp或其它适合的平台所执行的软件。
76.本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献