具有运行时变量RAID保护方案的方法、固态驱动器控制器以及数据存储设备转让专利

申请号 : CN201380072071.6

文献号 : CN105009088B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : R·丹尼尔克R·N·马伦多尔J·琼斯A·J·汤姆林

申请人 : 西部数据技术公司天空时代有限责任公司

摘要 :

数据存储设备可以包括闪存控制器和耦合到所述闪存控制器的闪存设备的阵列。所述阵列可以包括多个S页,每个所述S页包括多个F页。依次地,所述多个F页中的每个可以被配置为存储可变量的数据和可变量的纠错码。所述闪存控制器可以被配置为跨越S页的每个F页生成纠错码,以及将所生成的纠错码存储在具有所述最大数据量的一个或多个F页内。

权利要求 :

1.一种固态驱动器控制器,包括:

处理器,所述处理器被配置为耦合到闪存设备的阵列,所述阵列包括多个管芯,每一个管芯包括多个闪存块F块,每一个F块包括多个闪存页F页,所述F页中的至少一些包括至少一个纠错码页E页,并且所述E页中的至少一些包括可变尺寸的纠错码ECC部分和相应的可变尺寸的数据部分,在一个F页内的所述可变尺寸的数据部分作为总体定义了F页数据部分,其中,所述处理器被配置为:

定义S页,所述S页包括来自所述多个管芯中的一个或多个的多个F页;

在所述S页内,

在所述F页内的每一个E页的所述可变尺寸的ECC部分内存储E页纠错码,以用于纠正在所述相应的可变尺寸的数据部分内的错误;

将在所述S页中的所述F页之中具有最大尺寸F页数据部分的至少一个F页指定为校验页;以及在所述至少一个校验页内存储跨F页纠错码。

2.根据权利要求1所述的固态驱动器控制器,其中,所述跨F页纠错码包括前向纠错FEC码。

3.根据权利要求2所述的固态驱动器控制器,其中,所述前向纠错FEC码包括Reed-Solomon码。

4.根据权利要求1所述的固态驱动器控制器,其中,所述E页纠错码包括低密度奇偶校验(LDPC)纠错码。

5.根据权利要求1所述的固态驱动器控制器,其中,所述处理器被配置为在生成所述多个E页中的一个时,在运行时生成和存储所述E页纠错码。

6.根据权利要求1所述的固态驱动器控制器,其中,所述处理器还被配置为随着数据被写入到所述S页,生成针对所述S页的所述跨F页纠错码。

7.根据权利要求1所述的固态驱动器控制器,其中,所述处理器还被配置为从所述S页读取数据并且跳过已被指定为校验页的所述S页内的所述至少一个F页。

8.根据权利要求1所述的固态驱动器控制器,其中,所述处理器还被配置为:在块信息数据结构中设置标志以指定S页内的特定F页为校验页;以及查阅所述块信息数据结构以确定S页的所述F页中的哪些已被指定为校验页。

9.根据权利要求1所述的固态驱动器控制器,其中,所述处理器还被配置为取决于以下中的至少一项,将所述S页中的另外的F页指定为校验页:(1)所述阵列的配置,(2)所述阵列的性能,以及(3)所述阵列的预定部分的使用配置项。

10.根据权利要求1所述的固态驱动器控制器,其中,所述处理器还被配置为将另外的F页指定为S页中的校验页,用于存储预定类型的信息。

11.根据权利要求10所述的固态驱动器控制器,其中,所述预定类型的信息包括元数据。

12.根据权利要求10所述的固态驱动器控制器,其中,所述预定类型的信息包括主机指示的数据。

13.根据权利要求1所述的固态驱动器控制器,其中,在第一S页和第二S页之间,与被指定为所述第二S页内的校验页的所述至少一个F页所占据的位置相比,被指定为所述第一S页中的校验页的所述至少一个F页占据所述第一S页内的相对不同的位置。

14.根据权利要求1所述的固态驱动器控制器,其中,所述S页是第一S页并且所述控制器还被配置为定义第二S页,所述第二S页具有与所述第一S页相比较大数量的被指定为校验页的F页。

15.根据权利要求1所述的固态驱动器控制器,其中,所述处理器还被配置为,当写入F块时,确定以下中的至少一项:(1)要在每一个E页中的所述可变尺寸的ECC部分内生成的E页纠错码的强度;

(2)要生成的跨F页纠错码的强度;以及

(3)S页内的哪些F页被指定为校验页。

16.根据权利要求1所述的固态驱动器控制器,其中,所述处理器还被配置为当所述E页纠错码没能纠正所遇到的错误时,应用所述跨F页纠错码。

17.一种数据存储设备,包括:

权利要求1所述的控制器,以及

所述闪存设备的阵列。

18.一种控制数据存储设备的方法,所述数据存储设备包括处理器,所述处理器被配置为耦合到闪存设备的阵列,所述阵列包括多个管芯,每一个管芯包括多个闪存块F块,每一个F块包括多个闪存页F页,所述F页中的至少一些包括至少一个纠错码页E页,并且所述E页中的至少一些包括可变尺寸的纠错码ECC部分和相应的可变尺寸的数据部分,在一个F页内的所述可变尺寸的数据部分作为总体定义了F页数据部分,所述方法包括:定义S页,所述S页包括来自所述多个管芯中的一个或多个的多个F页;

在所述S页内,

在所述F页内的每一个E页的所述可变尺寸的ECC部分内存储E页纠错码,以用于纠正在所述相应的可变尺寸的数据部分内的错误;

将在所述S页中的所述F页之中具有最大尺寸F页数据部分的至少一个F页指定为校验页;以及在所述至少一个校验页内存储跨F页纠错码。

19.根据权利要求18所述的方法,其中,所述跨F页纠错码包括前向纠错FEC码。

20.根据权利要求19所述的方法,其中,所述前向纠错FEC码包括Reed-Solomon码。

21.根据权利要求18所述的方法,其中,所述E页纠错码包括低密度奇偶校验(LDPC)纠错码。

22.根据权利要求18所述的方法,其中,存储所述E页纠错码包括在生成所述多个E页中的一个时,在运行时生成和存储所述E页纠错码。

23.根据权利要求18所述的方法,其中,存储所述跨F页纠错码包括随着数据被写入到所述S页,生成和存储针对所述S页的所述跨F页纠错码。

24.根据权利要求18所述的方法,还包括从所述S页读取数据并且跳过已被指定为校验页的所述S页内的所述至少一个F页。

25.根据权利要求18所述的方法,还包括:

在块信息数据结构中设置标志以指定S页内的特定F页为校验页;以及查阅所述块信息数据结构以确定S页的所述F页中的哪些已被指定为校验页。

26.根据权利要求18所述的方法,还包括取决于以下中的至少一项,将所述S页中的另外的F页指定为校验页:(1)所述阵列的配置,(2)所述阵列的性能,以及(3)所述阵列的预定部分的使用配置项。

27.根据权利要求18所述的方法,还包括将另外的F页指定为S页中的校验页,用于存储预定类型的信息。

28.根据权利要求27所述的方法,其中,所述预定类型的信息包括元数据和主机指示数据中的一个。

29.根据权利要求18所述的方法,其中,在第一S页和第二S页之间,与被指定为所述第二S页内的校验页的所述至少一个F页所占据的位置相比,被指定为所述第一S页中的校验页的所述至少一个F页占据所述第一S页内的相对不同的位置。

30.根据权利要求18所述的方法,其中,所述S页是第一S页并且其中所述方法还包括定义第二S页,所述第二S页具有与所述第一S页相比较大数量的被指定为校验页的F页。

31.根据权利要求18所述的方法,其中,当写入F块时,所述方法还包括确定以下中的至少一项:(1)要在每一个E页中的所述可变尺寸的ECC部分内生成的E页纠错码的强度;

(2)要生成的跨F页纠错码的强度;以及

(3)S页内的哪些F页被指定为校验页。

32.根据权利要求18所述的方法,还包括当所述E页纠错码没能纠正所遇到的错误时,应用所述跨F页纠错码。

33.一种用于控制数据存储设备的方法,所述数据存储设备包括闪存控制器和耦合到所述闪存控制器的闪存设备的阵列,所述阵列包括多个S页,每一个所述S页包括多个F页,所述方法包括:在所述多个F页的每一个中存储可变量的数据和可变量的纠错码;

跨越S页的每一个F页生成纠错码;以及

将所生成的纠错码存储在具有最大数据量的至少一个F页内。

34.一种固态驱动器控制器,包括:

处理器,所述处理器被配置为耦合到包括多个S页的闪存设备的阵列,每一个所述S页包括多个F页,所述多个F页中的每一个被配置为存储可变量的数据和可变量的纠错码;

其中,所述处理器被配置为跨越S页的每一个F页生成纠错码以及将所生成的纠错码存储在包括最大数据量的至少一个F页内。

35.一种数据存储设备,包括:

权利要求34所述的控制器,以及

所述闪存设备的阵列。

说明书 :

具有运行时变量RAID保护方案的方法、固态驱动器控制器以

及数据存储设备

[0001] 相关申请的交叉引用
[0002] 本申请要求于2012年12月3日提交的临时美国专利申请序列号61/732,830(Atty.Docket No.T5961.P)的优先权,其整体以引用的方式并入在此。

背景技术

[0003] 除其他因素外,由于工艺技术和制造偏差,在固态驱动器(SSD)的任何管芯中可能存在很多坏的存储器块。而且,每个块的耐久性不同。在管芯的早期寿命中,块中的大部分是好的。然而,存在一些初始故障。在大量的管芯寿命期间,发生随机位错误。最终,在管芯的寿命即将结束时,磨损效应显露,在其中错误率增加。每个块都经历这样的生命周期,虽然潜在地以不同的速率。实际上,一些块花费很长的时间经历该生命周期,而其他块花费相比较而言较短的时间段。然而,为了提供充足的安全裕量,常规的SSD系统根据表现最差的块而被提供。
[0004] 闪存中的位可能在被编程之后被错误地读取(即,开发位错误)。闪存单元(cell)上的电荷水平将由于若干条件(例如,时间、温度、对块中的其他页的访问等)而改变。最终,当受到影响的单元被读取,则会返回错误的值。闪存制造商基于工艺技术、单元设计、实验室测试、模拟、操作条件等来规定针对闪存页的位错误的最大数。通常将位错误规范规定为每M字节P个错误。在一些情况下,控制器制造商负责实现满足或超过规范的纠错码(ECC)。ECC的类型包括Reed Solomon码、BCH码和低密度奇偶校验(LDPC)码,他们是在数据位的块中纠正位错误的方法。由闪存制造商规定的闪存设备的寿命(以编程/擦除(PE)周期测量)是基于对所规定的纠错需求的实现。闪存制造商在闪存页中提供额外的字节以容纳预期的ECC位的数量加上针对诸如例如循环冗余校验(CRC)字段、扇区号等的其他元数据的少量空间。
[0005] 开放NAND闪存接口(ONFI)规范版本2.3将闪存页定义为包含数据区域和备用区域。备用区域旨在用于保持ECC校验位和元数据,而数据区域被假定包含扇区(例如,逻辑块)数据。错误可能发生在特定页的数据部分以及在整个页中。针对每种类型的错误,需要不同的ECC代码和不同的纠错策略。

附图说明

[0006] 图1A是示出了根据一个实施例的数据存储设备的物理数据组织和逻辑数据组织的方面的图。
[0007] 图1B是根据一个实施例的其中每个E页的数据部分和ECC部分在物理上分开的F页的图。
[0008] 图1C是示出了在给定F页内F页数据部分和F页ECC部分在尺寸上可变的图。
[0009] 图2示出了根据一个实施例的逻辑到物理地址转换映射及其示例性条目。
[0010] 图3示出了显示针对常规设备和方法二者的以及根据一个实施例的坏块与编程/擦除周期的百分比的图。
[0011] 图4是示出了根据一个实施例的块失效率与数据存储设备的生命期之间关系、以及可以变化E页的ECC部分和数据部分以扩展数据存储设备的有用生命期的方式的图。
[0012] 图5是根据一个实施例的块信息数据结构的图。
[0013] 图6是根据一个实施例的超块(S块)的方框图。
[0014] 图7示出了根据一个实施例的超页(S页)的另一视图。
[0015] 图8是根据一个实施例的示出了校验页的生成与存储的S页的图。
[0016] 图9是示出了根据一个实施例的块失效率与数据存储设备的生命期之间关系、以及可以变化校验页的数量以扩展数据存储设备的有用生命期的方式的图。
[0017] 图10是根据一个实施例的在数据存储设备中生成和存储校验页的方法的流程图。

具体实施方式

[0018] 图1A是示出了根据一个实施例的数据存储设备的物理数据组织和逻辑数据组织的方面的图。在一个实施例中,数据存储设备是SSD。在另一实施例中,数据存储设备是包括闪存和旋转磁存储介质的混合驱动器。本公开能够应用于SSD和混合实现二者,但是出于简单的缘故,参考基于SSD的实现来对各种实施例进行描述。根据一个实施例,SSD控制器102可以被配置为耦合到如附图标记118处所示的主机。主机118可以采用逻辑块寻址(LBA)方案。尽管LBA的尺寸通常是固定的,但是主机能够动态地改变LBA的尺寸。例如,LBA的尺寸可以随着接口和接口模式而不同。实际上,尽管512字节是最常见的,但4KB的尺寸也正在获得青睐,还有512+(520、528等)和4K+(4K+8、4K+16等)格式。如其中所示出的,SSD控制器102可以包括或耦合到一个或多个页寄存器104。控制器102可以被配置为响应于来自主机118的数据访问命令而对来自闪存设备的阵列的数据进行编程并且读取。尽管本文的描述涉及闪存,但是应当理解的是,存储器设备的阵列可以包括其他类型的非易失性存储器,例如,闪存集成电路、硫系RAM(C-RAM)、相变存储器(PC-RAM或PRAM)、可编程金属化单元RAM(PMC-RAM或PMCm)、Ovonic Unified Memory(OUM)、阻变式RAM(RRAM)、NAND存储器(例如,单层单元(SLC)存储器、多层单元(MLC)存储器、或其任意组合)、NOR存储器、EEPROM、铁电体存储器(FeRAM)、磁阻RAM(MRAM)、其他分立的NVM(非易失性存储器)芯片、或其任意组合。
[0019] 页寄存器104可以被配置为使控制器102能够从阵列中读取数据以及将数据存储到阵列。闪存设备的阵列可以包括一个或多个管芯(例如,128管芯)中的多个闪存设备。闪存设备可以包括多个闪存块,如图1A中109处所示。集合在一起的闪存块的组合可以被称为超块或S块。在一些实施例中,形成S块的单独的块可以从一个或多个管芯、平面或其他粒度级别中选择。因此,S块可以包括组合在一起的、跨过一个或多个管芯分布的多个闪存块。以这种方式,S块可以形成闪存管理系统(FMS)在其上操作的单元。在一些实施例中,可以根据与在管芯级不同的粒度来选择形成S块的单独的块,例如以下情况:当存储器设备包括被细分为诸如平面的结构的管芯(即,块可以从单独的平面中取得)时。根据一个实施例,分配、擦除和垃圾收集可以在S块级执行。在其他实施例中,FMS可以根据诸如页、块、平面、管芯等的其他逻辑分组来执行数据操作。
[0020] 闪存块109中的每一个可以包括多个诸如闪存页(F页)208的物理页。每一个F页208可以是固定尺寸的,例如,16KB。根据一个实施例,F页208的尺寸可以被定义为用于给定的闪存设备的编程的最小单元的尺寸。同样如图1A所示,每一个F页208可以被配置为容纳一个或多个诸如ECC页的物理子页,在下文中被称为E页210。本文中所使用的术语“E页”指的是被配置为在非易失性存储器(在其上应用了纠错码)中存储数据的数据结构。根据一个实施例,E页210可以形成SSD内的物理寻址的基础,并且可以构成闪存读取数据传送的最小单元。即,每个E页210可以被配置为存储由控制器102可读取的数据的最小量。E页210可以是预定的固定尺寸(例如,2KB),并且确定ECC系统的有效载荷(例如,主机或其他数据)的尺寸。然而,物理页(例如,E页)的尺寸不必是固定的。在一个实施例中,E页的地址唯一地标识在闪存内E页的位置。例如,E页的地址可以指定闪存通道、在所标识的闪存通道内的特定管芯、在管芯内的特定块、特定F页、以及最后在所标识的F页内的E页的起始。
[0021] 根据一个实施例,每一个F页208可以被配置为将一个或多个E页210安置在其边界内。例如,给定16KB宽的F页208以及每E页210固定尺寸2KB,八个E页210安置在单个F页208内,如图1A所示。根据一个实施例,在任何事件中,整数个E页,诸如2的幂次个E页210(包括ECC)可以被配置为安置于F页208。同样如图1A所示,每一个E页210可以包括数据部分114,并且取决于E页210位于何处也可以包括ECC部分116。ECC部分116可以被配置为存储被应用于E页210的数据部分114中存储的数据的ECC。根据一个实施例,数据部分114和ECC部分116在尺寸上都不需要是固定的。因此,根据一个实施例,对于给定的E页尺寸,E页内ECC部分的尺寸与数据部分的尺寸之间的比率可以变化。
[0022] E页、数据部分、以及ECC部分不需要根据图1A的示例性布局来布置。例如,每个E页的数据部分和ECC部分可以在物理上分离,这使得在F页内数据部分集合在一起而ECC部分集合在一起,如图1B中所示。在F页内,数据部分和ECC部分尺寸可变。实际上,图1C示出了F页,其构成数据部分比图1B中示出的E页的数据部分相对较大。相应地,图1C的F页的ECC部分比图1B中示出的E页的ECC部分在尺寸上相对较小。因此,结果就是在F页内的聚合中,图1C的F页的F页数据部分大于图1B中示出的F页的F页数据部分。类似地,在F页内的聚合中,与图1B中示出的F页的F页数据部分相比,图1C的F页的F页ECC部分在尺寸上较小。F页的数据部分和ECC部分尺寸可变将被用作在存储F页纠错码中的优势,这在下文中得到充分发展。在各种实施例中,E页、数据部分、以及ECC部分的其他布置是可能的,并且本文所公开的尺寸调节方法也能够应用于那些实施例。在一个实施例中,F页可以包括仅一个E页。
[0023] 实际上,为了在SSD上的物理寻址与由主机进行的逻辑块寻址之间建立桥梁,引入了逻辑页(L页)结构。图1A和图2中由附图标记212所指示的L页可以包括由闪存管理系统所使用的地址转换的最小单元。根据一个实施例,每一个L页212可以与L页号相关联。在一个实施例中,数据被逻辑地存储在L页212中,而L页212被物理地存储在SSD上、在E页210中。根据一个实施例,鉴于E页210是固定尺寸的(整数的E页可以安置在F页内),根据一个实施例由于对要存储的数据进行的压缩中的可变性,L页112的尺寸是可变的。由于数据的可压缩性不同,所以4KB量的一种类型的数据可以被压缩成2KB的L页,而4KB量的另一种类型的数据可以被压缩成1KB的L页。由于这样的压缩,根据一个实施例,不需要对齐物理尺寸和逻辑尺寸,这会在本文进一步发展。因此,L页212及其相关联的L页号可以被配置为使控制器102能够对被存储在E页210中的一个或多个中的数据(例如,主机数据)进行逻辑地引用。也可以利用L页212作为压缩的基本单元。实际上,根据一个实施例,与F页208和E页210不同,L页212在尺寸上是不固定的,并且可以在一个范围内变化,所述范围例如由最小压缩尺寸(大约24字节)到最大解压缩尺寸(大约4KB或4KB+)进行定义。
[0024] 如图1A和图2所示,L页212不需要与E页210的边界对齐。实际上,L页212可以被配置为具有与F页208和/或E页210边界对齐的起始地址,但也可以被配置为不与F页208或E页210的任一边界对齐。即,L页起始地址可以位于与以下之一非零偏移处:F页208的起始地址或结束地址、或者E页210的起始地址或结束地址,如图1A所示。由于L页212的尺寸是不固定的并且可能小于固定尺寸的E页210,所以多于一个L页212可以安置在单个E页210中。类似地,由于L页212在尺寸上可能大于E页210,所以L页212可能跨越多于一个E页210并且甚至可能跨过F页208的边界,如图1A中附图标记117处所示。如下文更详细描述的,L页112也可以跨越块边界,诸如将是以下情况:其中边界117中的一个表示块边界。
[0025] 例如,在LBA尺寸是512或512+字节的情况,假定解压缩的L页212可以是4KB到4KB+,最大八个连续的LBA可以被组装至4KB的L页212。根据一个实施例,应当注意的是,L页212的确切逻辑尺寸不重要,这是因为在压缩之后物理尺寸可以跨越从最小尺寸的几个字节到完整尺寸的上千字节。例如,对于4TB的SSD设备,可以使用30位编址来对每一个L页112进行编址以覆盖可能潜在地呈现在这样的SSD中的L页的量。
[0026] 图2示出了根据一个实施例的逻辑到物理地址转换映射250及其示例性条目。由于存储的数据在L页212中由主机引用,并且由于SSD将L页212存储在一个或多个E页210中,所以要求逻辑到物理地址转换映射使控制器202能够将L页212与一个或多个E页210相关联。这样的逻辑到物理地址转换映射(实际上,L页到E页地址转换映射)在图2中250处示出,并且在一个实施例中,逻辑到物理地址转换映射是具有每L页212一个条目的线性阵列。这样的地址转换映射250可以存储在诸如DRAM的易失性存储器中。
[0027] 图2还示出了针对四个不同的L页号的地址转换映射250中的条目,其中,L页号在图2中标注为L页1、L页2、L页3、以及L页4。根据一个实施例,存储在SSD中的每一个L页可以由地址转换映射250中单个并且唯一的L页号条目所指向。因此,在以此发展的示例中,示出了四个条目。如所示出,L页到E页转换映射250中的每一个条目可以包括L页号,其可以包括包含被引用的L页的起始地址的E页的标识、在E页内的起始地址的偏移以及L页的长。另外,多个ECC位可以针对映射条目提供错误纠正功能。例如,如图2所示,并且假设E页尺寸为2KB,L页1可以在地址转换映射250中被引用如下:E页1003、偏移800、长1624,紧接着是预定数量的ECC位(未示出)。即,在物理地址项中,由L页号L页1所引用的L页的起始是在E页1003内(不与E页1003对齐),并且位于与E页1003的起始物理位置相距等于800字节的偏移处。而且,与L页号L页1相关联的压缩的L页扩展1624字节,从而跨过E页边界到达E页1004。因此,E页1003和E页1004的每一个都存储与L页号L页1相关联的L页的一部分。
[0028] 类似地,与L页号L页2相关联的压缩的L页全部存储在E页1004内,并且在其中偏移400字节处起始,并仅在E页1004内扩展696字节,从而全部保持在指定为E页1004的起始地址和结束地址范围内。与L页号L页3相关联的压缩的L页起始于E页1004内偏移1120字节处(距离L页2的边界正好24字节),并且扩展4096字节越过E页1005并进入E页1006内。因此,与L页号L页3相关联的L页跨越E页1004的一部分、E页1005的全部以及E页1006的一部分。最后,与L页号L页4相关联的L页起始于E页1006内偏移1144字节处,并且扩展3128字节以完全跨越E页1007、跨过F页边界进入到下一个F页的E页1008中。
[0029] 共同地,组成了地址转换映射250的每一个条目的这些构成标识符字段(E页、偏移、长度和ECC)中的每一个在尺寸上都可以是例如8字节。即,对于示例性4TB的驱动器,E页的地址在尺寸上可以是32位,偏移在尺寸上可以是12位(对于E页数据部分多达4KB),长度可以是13位,并且可以提供ECC字段。每当写入或改变L页时,可以创建这样的8字节条目,使得控制器102能够记录在闪存存储装置内的(被写入到L页的)数据。如上所示,在地址转换映射250中的该8字节条目可以被称为逻辑页号或LPN。应当注意到,在4KB扇区尺寸的情况下,LBA与LPN相同。因此,LPN可以构成在逻辑到物理地址转换表250内的L页的索引,并且包括在非易失性存储器内的条目的地址。因此,当控制器102从主机118接收到读取命令时,可以从所提供的LBA中得到LPN,并且其可以被用于索引至地址转换映射250,以提取闪存中要被读取的数据的位置。当控制器102从主机118接收到写入命令时,LPN可以从LBA构建,并且可以对地址转换映射250进行修改。例如,可以在其中创建新的条目。取决于存储地址转换映射250的易失性存储器的尺寸,LPN可以存储在单个条目中或被拆分为例如两个条目。例如,第一条目可以标识包含正讨论的L页的起始地址的E页(加ECC位),以及第二条目可以标识偏移和长度(加ECC位)。这两个条目可以一起与闪存内的单个L页相对应并且指向闪存内的单个L页。在其他实施例中,地址转换映射条目的特定格式可以与以上所示出的示例不同。
[0030] 以各种方式使用E页内的可变的数据部分尺寸,以适应闪存设备的阵列中存储器块的变化的条件。下文参考图3和图4进一步讨论块的条件。图3示出了显示针对常规设备和方法以及根据各种实施例的那些设备和方法的坏块与PE周期的百分比的图。图4是示出了根据一个实施例的块失效率与诸如SSD的数据存储设备的生命期之间关系、以及可以变化E页的ECC部分和数据部分以扩展数据存储设备的有用生命期的方式的图。块的生命周期根据不同块而不同,并且根据不同管芯而不同,一些块比其他块更快老化(变得较不能够可靠地存储数据)。这些差异可能归因于管芯与管芯的制程差异、在管芯上的块位置,以及归因于一个块到下一个块的使用模式和不均匀的PE周期,以及其他不均匀老化的原因。
[0031] 根据一个实施例,数据存储设备可以被配置为至少部分地基于(多个)块的条件来确定应用多个ECC配置项(profile)中的哪个和/或调节ECC部分116的尺寸并且相应地调节在一个或多个F页和/或一个或多个块中的E页210的数据部分114的尺寸。块的条件可以包括例如块的PE数、ECC错误率、闪存错误信息、温度、驻留时间(dwell time)(擦除事件之间的时间)、以及内部闪存状态信息、或诸如操作条件、温度、使用年限(age)等的大部分任意其他可测量的物理特性。根据一个实施例,控制器可以被配置为基于主机提供(host-provided)的(例如,作为诸如TRIM命令的主机专用(host-specified)的数据集管理命令的结果而生成的)元数据和/或数据存储设备中的全部空闲空间来调节ECC部分的尺寸和/或数据部分的尺寸。这样做时,一个实施例可以操作以将块的有用生命从图3中300处所示的初始PE数PEi扩展到更大的PE数PEi+x,其中“x”大于0,如302处所示。这是因为已经降级的块能够利用较大量的ECC来保护,因此扩展其有用生命。另外,在块/页级别的ECC的可变性也意味着所应用的ECC能够为单独的块/页的唯一条件而定制,并且能够追踪那些单独的块/页所经历的降级路径。
[0032] 如图3所提出的,SSD的有用生命扩展到这样的PE数:在该PE数,坏块的百分比达到预定的最大值。在实践中,该预定的最大值可以由SSD垃圾收集的能力所指定。当垃圾收集不再可能时,由于空闲块的数量不够,SSD实际上到达其有用生命的结束,或者至少到达其存储新数据的能力的结束。根据一个实施例,至少部分地基于(多个)块的条件,通过明智地调节ECC部分116的尺寸并且相应地调节一个或多个块中的E页210的数据部分114的尺寸,被认为是“坏块”的存储器块的数量可以相对于PE周期上升得更慢,结果是增加了通过PE周期的数量来测量的SSD的生命。应当注意的是,根据一个实施例,针对一个块所选择的ECC配置项可以被保持,直到至少该正在讨论的块已被垃圾收集。
[0033] 如图4所示,针对SSD的生命周期中的不同点,所观察到的坏块的百分比可以不同。在早期生命(当PE周期数低时)中,失效率可以稍高;即,可以存在页/块相关的失效的相对较高的发生率。这些早期生命的页/块失效中的至少一些实际上可能是使用E页的ECC不可纠正的。为了处理这些ECC不可纠正的实例,一些实施例提供了在一个或多个F页中的称为“校验页”的另外的纠错机制,其具有根据跨过多个F页的数据所计算的校验数据,这将结合图8-10进一步描述。由于使用校验页来处理这些早期的ECC不可纠正的失效,在早期生命中,E页可以被配置为具有与生命的后期阶段相比相对较弱的ECC。而且,与相对较强的ECC所必需的相比,可以以较少的字节提供较弱的ECC。因此,如所示出,ECC部分116EARLY可以被调节为占据E页中的相对较小的字节数。反过来,假定E页尺寸固定,这允许相对较大的数据部分114EARLY。有利地,该较大数据部分114EARLY空出来额外的字节,收益更大的空闲空间以用于数据存储和垃圾收集,并且增加了预留空间(overprovisioning)。替代地,为了适应失效率的较高发生率,在一些实施例中可以使用较高量的ECC。
[0034] 在生命中期,SSD平衡数据部分的尺寸与ECC的强度的能力在其巅峰,结果是对E页的有效使用以优化生命期限。如所示出,生命中期是在SSD的生命期限中相对稳定的时期,如由相对平的失效率曲线所示。因此,与116EARLY相比,可以将稍大量的字节用作ECC,如116MID处所示。根据一个实施例,与如114EARLY所示的为生命早期E页中数据部分保留的空间相比,在生命中期E页内为数据部分114MID保留的空间则可能相对较小。而且,相对较小的数据部分114MID只可以收益相对较小量的额外空闲空间,并且因此,仅产生了在预留空间上相对小的增加。但是,该相对较小的数据部分114MID然而可以大于以下情况:如果该块已经被提供用于最坏情况的失效率,如常规所进行的。
[0035] 接近生命的后期或结束,数据部分114LATE仍可以被调节得更小以在E页中为更强(例如,更大)ECC部分116LATE腾出空间。如一个实施例通过对数据部分和ECC部分尺寸的调节和对ECC配置项的选择来增加SSD的可用生命,在生命后期/生命结束中,相对于常规使用的ECC部分尺寸,可能需要增加ECC强度。通过在生成时对ECC强度的明智选择,因此SSD的最大PE数可以比常规可能的情况有所增加,在常规可能的情况下E页的数据部分和ECC部分二者的尺寸是静态的。这是因为,在生命早期和生命中期,分配给ECC的空间小于根据常规实践所要求的,在常规实践中ECC和数据部分的尺寸是静态的。根据一个实施例,即使在生命后期/结束中ECC部分尺寸增加以及对应的数据部分尺寸的减少也不够抵消在生命早期和生命中期通过增加数据部分尺寸所获得的增益,结果是在数据存储设备的有用生命期上的PE数的净增加。此外,根据一个实施例并且如下文所描述的,利用F页的可变尺寸数据部分和交叉F页(cross-F-Page)纠错(也称为“外”(outer)纠错,相对于被称为“内”纠错的ECC部分)的使用,通过PE周期数测量的SSD的有用生命可以更进一步增加。
[0036] 一个实施例贯穿SSD的生命周期支持并且动态地追踪ECC的块级配置。除了贯穿生命周期调节ECC之外,基于块质量,不同的ECC可以用于不同的块。可以为弱块提供额外的ECC,而可以为相对较强的块以相对较小的ECC部分116来提供相对较弱的ECC,从而收益额外的空闲空间和随之发生的预留空间的增加。
[0037] 根据一个实施例,控制器102可以被配置为:随着SSD从生命早期到生命中期的转变,当PE数达到第一预定的阈值PETH1时,增加ECC部分的尺寸并且相应地减小E页中的一个或多个中的数据部分的尺寸。也根据一个实施例,控制器102可以被配置为:随着SSD从生命中期到生命后期/结束的转变,当PE数达到第二预定的阈值PETH2时,进一步增加ECC部分的尺寸,并且再次相应地减小E页中的一个或多个中的数据部分的尺寸。第二预定阈值PETH2可能高于第一预定PE阈值PETH1。应当理解的是,本文所描述和示出的生命阶段(早期、中期和后期/结束)仅是示例性阶段,并且可以定义具有相应减少或增加数量的预定PE阈值的更小或更大粒度(例如,数量)的生命阶段。替代地,支配物理页的ECC部分和数据部分的调节的阈值可以完全独立于(或者不仅仅依赖于)PE数。因此,实施例不限于基于PE数调节物理页的数据和ECC部分的相对尺寸。实际上,其他因素可以驱动或者贡献这样的调节,诸如预留空间量、空闲空间、操作模式、操作温度、数据的关键程度、安全裕度等。
[0038] 根据一个实施例,可以由控制器102通过选择多个ECC配置项中的一个来进行ECC部分的强度(以及尺寸)的选择。根据一个实施例,这样的选择可以在运行时进行。该选择可以确定对块、F页或E页中的一个或多个应用多个ECC配置项中的哪个。ECC配置项中的至少一些可以定义不同的ECC强度,并且因此,对应于占据更多或更少字节数的纠错码,而其能够纠正存储在物理页中的更多或更少量的数据(例如,位数、符号数)。给定固定的物理页尺寸,ECC配置项可以指示多少字节分配给在数据部分114中的数据以及多少字节分配给在ECC部分116中的ECC。每个配置项可以与不同的数字相关联。例如,可以定义16个ECC配置项,因此可以使用4位对16个ECC配置项编址。ECC配置项可以被存储在控制器102内,或者可以由控制器102访问,并且可以基于要被编程的(多个)E页、(多个)F页或(多个)块的条件来选择ECC配置项。
[0039] 根据一个实施例,控制器102还可以被配置为在生成块109时确定:要跨越块109中的F页内的E页应用多个ECC配置项中的哪个。这反过来暗示控制器102将多个ECC配置项中的不同配置项应用到多个块109、F页208和/或E页210中的不同者的能力。例如,控制器102可以被配置为选择多个ECC配置项中的第一个配置项生成第一块109中的F页208,并且选择多个ECC配置项中的第二个配置项生成第二块109的F页208。在生命早期和/或生命中期,控制器可以被配置为:当例如块109的PE数低于预定的或动态选择的或计算的阈值(例如,PETH1或PETH2)时,通过减小ECC部分116的尺寸并且相应地增加块109的E页210的数据部分114的尺寸来增加SSD的预留空间。
[0040] 根据一个实施例,控制器102还可以被配置为基于错误率来确定多个ECC配置项中的哪个将应用到块109、F页208或E页210。当特定块109、F页208或E页210内的错误率低时,在下一次编程时,控制器102可以针对特定E页210或驻留于特定块109或F页208中的(多个)E页,选择定义了相对较小ECC部分116和相应较大数据部分114的ECC配置项。例如,错误率可以基于先前发生块109、F页208或E页210内的ECC错误。
[0041] 返回参考图2,与L页号L页4(L页4)相关联的L页跨越两个F页。此外,继续参考图2,虚线117可以指示块边界,意味着L页4跨越两个不同的块。根据一个实施例,可以使用根据第一ECC配置项的ECC对第一F页内的E页的数据部分进行纠错,并且可以使用根据不同于第一ECC配置项的第二ECC配置项的ECC对第二F页内的E页的数据部分进行纠错。因此,由此得出控制器102还可以被配置为读取跨越块(例如,从第一块到第二块)的诸如图2中的L页4的L页,并且在涉及L页的单个读操作内容纳多个ECC配置项中的两个或更多个。例如,第一F页可能属于已经转变为生命后期或生命结束的块,例如,第二F页所属于的块可能仍被分类为安置在生命结束阶段内,并因此,相比于第二F页所属于的块的E页的ECC部分116,第一F页所属于的块的E页包括尺寸相对较大的ECC部分116。因此,在SSD正在处理随机主机读取时,在页寄存器104中呈现的E页中可能存在多个不同尺寸的ECC部分。
[0042] 根据一个实施例,任意给定块109可以包括具有第一尺寸的ECC部分的第一E页以及具有不同于第一尺寸的第二尺寸的ECC部分的第二E页。根据一个实施例,可以基于在块内的第二E页的位置选择第二尺寸。在一个实施例中,基于(第一和第二E页驻留于其中的)F页的存储器块内的物理位置来选择不同的ECC部分尺寸。该基于F页位置的ECC配置项选择可能在选择ECC配置项以应用于块内的特定F页时是有用的。例如,块的第一F页(诸如图1A中的F页0)和块的最后F页(诸如图1A中的F页255)在错误发生方面可能是该块中最差的F页。因此,根据一个实施例,针对块的第一和最后F页所选择的ECC配置项可以使得控制器102将具有较强纠错能力的ECC应用到存储在块的第一和最后F页中的物理页(例如,E页)中的数据。然而,这样的受位置影响的ECC配置项选择不限于块的第一和最后F页,而是可以根据需要被广泛应用以最高效地扩展SSD的有用生命期和/或为了任何其他目的。
[0043] 图5是根据一个实施例的块信息数据结构的框图。在一个实施例中,每个块109可以与例如大约32字节的信息相关联,该大约32字节的信息可以被存储在例如如图5中的500所示的块信息数据结构中。该块信息数据结构500或者类似的块信息数据结构可以由控制器固件保存到闪存,这使得块信息以非易失的方式被存储。如其中所示,块类型字段可以被配置为存储已将哪个ECC配置项应用到该特定块的E页的数据部分。实际上,针对每个块的ECC配置项应当被追踪,这是因为该ECC配置项每次读取都被抽出以使控制器102能够适当地对存储在该块的E页的数据部分中的数据进行解码和纠错。如所示出,块类型字段可以占据例如4位来对可能的16个ECC配置项进行编址。然而,可以提供更多或更少数量的ECC配置项,可以使用更多或更少的位数来对其进行选择。不同的ECC格式自身可以被存储在如502处所示的ECC配置项表中。ECC配置项表502可以由块信息数据结构500的块类型字段所引用。
[0044] 应当注意的是,如果最强的ECC格式在对存储在给定块的E页中的数据的纠错中都是无效的,则该块可能被切换到仅较低页(假设使用MLC存储器),意味着将每个单元仅存储一个位,而不是每个单元存储两个位。块信息结构500内的块类型字段也可以通过在其中存储例如0xFh值,来指示与其相关联的块是否为彻底的坏块。以这种方式,这样的坏块被标记为其后对数据存储不可用,从而潜在地减少了空闲空间和预留空间。根据一个实施例,ECC配置项可以被定义和选择以使得控制器102在编程期间跳过无效的F页。这将由控制器102所识别,控制器102将不对无效F页编程而将跳至该块的下一个顺序的F页。
[0045] 如图5所示的块信息数据结构500也可以包括时间戳字段,其可以指示最后写入的日期和时间。块信息数据结构500也可以包括温度字段以存储温度相关的信息,以及PE数字段以追踪该块所经历的编程/擦除周期的数量,例如当选择要使用的ECC配置项时,可以使用该字段,并且可以因此影响所选择的该块的E页中的数据部分114和ECC部分116的尺寸,如先前详细描述的那样。块信息数据结构500的一个或多个块修整(Trim)偏移字段可以由SSD的固件所使用以调节闪存设备的内部设置。块修整偏移字段可以提供其自身的纠错。此外,块的TRIM信息可以被配置为包含与块的健康相关的数据,这使得如果错误变为使用当前ECC所不能纠正的,则可以使用该信息来改变ECC配置项并增加所使用的ECC的强度以为存储在该块的E页中的数据提供纠错。可以提供读取干扰字段以包含该块已被读取的次数。错误数字段可以追踪在块中遇到的错误数。如将在稍后描述的,数据结构500也可以包括一个或多个数据值(例如,(多个)标志)以指示S页内的哪些(哪个)F页被指定为(多个)校验页。
[0046] 图5提供了用于存储关于块的信息的示例性格式。在其他实施例中,该信息可以在不同的粒度级别被存储。例如,在一些实施例中,每个E页或F页可以具有其自身的配置项指定以及对应的信息。同样,可以以与图5中所描述的示例不同的格式存储信息。
[0047] 根据一个实施例,称为S日志的结构可以被配置为包含给定S块的映射信息。更准确地,根据一个实施例,S日志包含给定S块内预定范围的E页的映射信息。图6是根据一个实施例的S块的框图。如其中所示,S块602可以包括每管芯一个闪存块(F块)604(也如图1中的109处所示)。因此,可以把S块看作F块的集合,每管芯一个F块,其组合在一起以形成闪存管理系统的单元。根据一个实施例,分配、擦除和GC可以在S块级被管理。如图6所示,每一个F块604可以包括多个闪存页(F页),例如,256或512个F页。根据一个实施例,F页可以是用于给定的非易失性存储器设备的编程的最小单元的尺寸。图7示出了根据一个实施例的超页(S页)。如其中所示,S页702可以包括S块中的每F块中一个F页,意味着S页跨越整个S块。
[0048] 图8是根据一个实施例的示出了校验页的生成与存储的S页的图。示出了包括在多个管芯中的每个管芯中相应编号的F页的S页702。在图8的示例中,S页702包括128个管芯的F页3。应当理解的是,S页不限于图8中示出的示例性128个管芯。闪存控制器102可以被配置为生成可变尺寸的ECC部分并且将数据存储在F页内对应的可变尺寸的数据部分中,如关于图1B和1C所示出和描述的。这样的ECC部分因此可以以作为E页内的纠错码为特征;也就是,只应用到F页内的给定E页内的预定数据部分的纠错码。这样的E页内的纠错码也可以以“内”纠错码为特征。如上所述,一个F页内的E页的可变尺寸的数据部分在聚合中集合地定义F页的数据部分。
[0049] 根据一个实施例,控制器102还可以被配置为生成跨越S页的F页的一个或多个纠错码,并且将所生成的纠错码存储在S页的具有最大F页数据部分的该F页或那些F页内。用于存储所生成的纠错码的一个或多个F页被称为“校验页”。这样的跨F页的纠错码也可以以“外”纠错码为特征,并且以与“内”纠错码正交的方式操作以提供另外层的数据保护。即,所生成的(多个)跨F页纠错码可以被存储在该F页或多个F页中(其具有最大F页数据部分(多个部分)),如图1B和1C中所示出的这样的部分。图8示出了这样的跨F页纠错码802的生成和存储的方面。根据一个实施例,控制器102可以被配置为在S页中的F页之间指定具有最大尺寸的F页数据部分的一个或多个F页作为(多个)校验页;即,作为指定为存储跨F页纠错码的(多个)F页。根据一个实施例,跨F页纠错码可以包括前向纠错(FEC)码,例如,Reed-Solomon(“R-S”)码。
[0050] 根据一个实施例,控制器102还可以被配置为在生成每个E页之后在运行时生成并存储E页纠错码。相反,控制器102可以被配置为在数据(例如,用户数据)已经存储在S页内的F页中之后完成跨F页纠错码(例如,R-S或其他FEC码)的生成和存储。根据一个实施例以及如图8所提出的,随着在S页内的数据(例如,用户数据)被存储,校验信息生成器(例如,编程的控制器或处理器)可以在运行时以跨F页(即,同时跨过若干F页)的方式遍历S页,并且可以根据S页内的F页的成分E页的数据部分来生成一个或多个FEC(例如,R-S)码802。为了使该码能够从所有F页中生成,当生成如812处所示的S页时,可以跳过具有最大(多个)数据部分的(多个)F页,以便使控制器102能够在其后将FEC码存储在具有最大(多个)数据部分的这样的(多个)F页中-图8中的附图标记806和808处所示。如810处所示,如果FEC码802存储在例如管芯127的F页3中,则FEC码将不从管芯1中的F页3生成,在附图标记804处示出。只有通过首先编码S页中的所有数据并且其后将校验(例如,奇偶)符号写出在具有最大F页数据部分的指定的(多个)F页(指定的(多个)校验页)中,才能保证跨F页纠错码覆盖S页内的全部可变尺寸的F页数据部分。由于(多个)校验页包括所生成的跨F页纠错码而非用户数据,所以它们可以在读操作期间被跳过(不被读取)。因此,校验页只需要在尝试从F页中的错误中恢复时被访问。如之前一样,存储在E页的ECC部分内的ECC码可以用于从给定E页的数据部分内的错误中恢复。用于纠正数据错误的存储在E页的ECC部分内的ECC码的失效识别经受该错误的S页的多个F页内的F页。在从F页错误中恢复的尝试中,跨F页纠错码可以被应用是与因此被识别的(多个)F页相对的。应当注意的是,当生成FEC码802时,没有被指定为校验页的F页中的E页可以被填充(例如,用零)以使得这些E页的数据字段尺寸与校验页中的E页的数据字段尺寸相匹配。相反地,当纠正F页时,在FEC码802生成期间所使用的填充值可以在纠正期间被使用。此外,S页中的F页中的一个或多个可能先前已经被标记为“坏”,或者对数据存储不可用。应当理解,这样的坏F页可以在FEC码802的生成期间被跳过,并且可以不参与任何随后的使用该FEC码802的纠正。
[0051] 根据一个实施例,控制器102还可以被配置为在块信息数据结构(诸如图5中的500)中设置标志以用于将特定F页或S页内的F页识别和指定为(多个)校验页。因此,控制器
102可以被配置为查阅块信息数据结构500以确定S页中的F页中的哪个或哪些被指定为(多个)校验页。因此,根据一个实施例,于是(多个)校验页的位置在S页中不固定。例如,如在第一S页和第二S页之间,在第一S页中被指定为(多个)校验页的(多个)F页可以在第一S页内占据与在第二S页中被指定为(多个)校验页的(多个)F页相对不同的位置。
[0052] 应当注意的是,S页中的一个或多个另外的F页可以被指定为校验页并且被配置为存储跨F页纠错码。生成和存储另外的跨F页纠错码的决定可以取决于一个或多个因素。例如,可以基于存储器阵列的配置、存储器阵列的性能(例如,可纠正或不可纠正和/或两者的E页ECC错误的记录数)和/或存储器阵列的预定部分的使用配置项(use-profile)来生成和存储另外的跨F页纠错码。实际上,配置、性能和使用配置项的某种组合可以比其他情况推荐指定更大数量的校验页。例如,可以向存储关键信息的存储器阵列的某些区域(比存储器阵列的其他区域)提供每S页相对较大数量的校验页。例如,可以向存储文件系统信息(诸如S日志)的S页(比不存储这样的文件系统信息的S页)提供相对较大数量的校验页。因此,根据一个实施例,不同的S页可以包括不同数量的校验页,并且这样的校验页的位置跨S页是不固定的。
[0053] 根据一个实施例,控制器102可以被配置为周期性地确定(例如,在每个编程-擦除(PE)周期上):在每个E页的可变尺寸ECC部分内要生成的E页纠错码的强度,被生成的在S页内要生成的跨F页纠错码的强度,以及被生成的S页内的哪个(或哪些)F页应当被指定为校验页。因此,E页ECC、跨F页纠错码二者的强度以及校验页的数量可以动态地被确定以及例如跨S页改变。
[0054] 图9是示出了根据一个实施例的块失效率与数据存储设备的生命期之间关系、以及可以变化校验页的数量以扩展数据存储设备的有用生命期的方式的图。三个图902、904和906在X轴上时相关的,由于它们绘制了三个参数相对于相同的PE数的进展。图902绘制了失效率比PE数,图904绘制了所使用的ECC强度比PE数,而图906绘制了所使用的校验页数量比PE数。
[0055] 如关于图4所描述的,尽管存储器阵列可以相对健康,但在生命早期存储器阵列可能以相对高的F页失效发生率为特征,其错误是使用F页中的E页内ECC不能纠正的。在之后的生命中,E页内的ECC的强度可能逐渐增加。为了处理上述在存储器阵列的生命早期中页错误的相对高的发生率,可以在早期生命中利用与之后的阵列生命周期中相比相对较大数量的校验页(如912所示)。例如,可以使用每S页四个校验页(或更多)来纠正这样的(否则使用E页的ECC不能纠正的)生命早期的F页错误。在之后的生命中(例如,在生命中期),由于E页的ECC强度增加(如918所示)而F页错误变得较不频繁,所以可以向S页提供相对较少的校验页并且它们的数量可以保持相对稳定(如914所示)。在生命的后期或生命的结束,E页错误上升而F页错误也变得相对于生命中期更频繁,则可以增加E页的ECC的强度(如920所示)并且可以根据需要增加每S页的校验页的数量(如916所示)。根据一个实施例,控制器102可以记录E页ECC错误率并且该所记录的比率可以用作对S页提供的校验页数量的确定中的一个示例性因素。在其他实施例中,不可纠正的ECC错误的数量被用作该确定中的至少一个因素。可以应用其他E页ECC和/或校验页配置项,如该领域那些技术人员可以识别的那样。例如,在不同生命阶段所使用的ECC和所使用的校验页的量之间的关系不需要如图9中所示的那样关联。在一些实施例中,每个可以被独立地调节而不考虑另一个的趋势。
[0056] 图10是根据一个实施例的在数据存储设备中生成和存储校验页的方法的流程图。如所示出,框B101要求定义如上所示和所描述的那样配置S页;也就是,包括来自多个管芯中的一个或多个管芯的多个F页。如B102处所示以及如在图1C处所示,具有可变尺寸ECC部分的E页纠错码可以被存储在所定义的S页的F页的E页中的一个或多个内,以用于纠正E页的相应的可变尺寸数据部分内的错误。框B103要求在所定义的S页中的F页之中指定具有最大尺寸F页数据部分的一个或多个F页作为(多个)校验页,如关于图8所示出和描述的那样。
如B104处所示,跨F页纠错码然后可以被存储在被指定为校验页的每个(多个)F页内。这样的跨F页纠错码可以包括例如R-S码或其他FEC码。
[0057] 尽管已经描述了本公开的特定实施例,但这些实施例只是以示例的方式被呈现,而不意在限制本公开的范围。实际上,可以以各种其他形式来体现本文所描述的新颖的方法、设备和系统。另外,可以对本文所描述的方法和系统的形式做出各种省略、替换和改变,而不偏离本公开的精神。所附的权利要求及其等价物意在涵盖这样的形式或修改,其将落入本公开的范围和精神内。例如,本领域中的技术人员将意识到,在各种实施例中,实际的结构(例如,SSD块的结构或物理或逻辑页的结构)可以与附图中所示的那些不同。取决于实施例,可以移除在以上示例中所描述的特定步骤,可以添加其他步骤。同样,上文所公开的特定实施例的特征和属性可以以不同的方式组合以形成另外的实施例,其全部落入本公开的范围内。尽管本公开提供了特定优选的实施例和应用,但对本领域的普通技术人员而言显而易见的是,包括没有提供本文所阐述的全部特征和优点的实施例在内的其他实施例,也在本公开的范围内。因此,本公开的范围意在仅通过参考所附的权利要求来限定。