CN117573568A - Ssd闪存颗粒管理信息存储方法、读取方法及ssd设备 - Google Patents
Ssd闪存颗粒管理信息存储方法、读取方法及ssd设备 Download PDFInfo
- Publication number
- CN117573568A CN117573568A CN202311371218.3A CN202311371218A CN117573568A CN 117573568 A CN117573568 A CN 117573568A CN 202311371218 A CN202311371218 A CN 202311371218A CN 117573568 A CN117573568 A CN 117573568A
- Authority
- CN
- China
- Prior art keywords
- die
- block
- physical
- flash memory
- selecting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 75
- 239000002245 particle Substances 0.000 title claims abstract description 75
- 239000008187 granular material Substances 0.000 claims description 53
- 230000002159 abnormal effect Effects 0.000 claims description 30
- 230000008878 coupling Effects 0.000 claims description 13
- 238000010168 coupling process Methods 0.000 claims description 13
- 238000005859 coupling reaction Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 3
- 238000012937 correction Methods 0.000 claims description 3
- 239000002699 waste material Substances 0.000 abstract description 7
- 239000007787 solid Substances 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出了一种SSD闪存颗粒管理信息存储方法、读取方法及SSD设备。其中,SSD闪存颗粒管理信息存储方法包括:选取第一数量的第一die,在各个第一die中分别选择一个物理块作为一级表块,在各个一级表块中分别写入记录有二级表块位置信息的一级表;选取第二数量的第二die,在各个第二die中分别选择一个物理块作为二级表块,在各个二级表块中分别写入记录有三级表块位置信息的二级表;为闪存颗粒中的每一die分别选取一个备份die,在每一die和与其对应的备份die中分别选择一个物理块作为当前die的三级表块,在各个三级表块中分别写入记录有各自对应die的管理信息的三级表。本发明减少了闪存颗粒存储容量的浪费,提高了管理信息的搜索效率。
Description
技术领域
本发明涉及固态硬盘技术领域,尤其是涉及一种SSD闪存颗粒管理信息存储方法、读取方法及SSD设备。
背景技术
SSD称为固态硬盘(Solid State Disk或Solid State Drive,简称SSD),又称固态驱动器,是用固态电子存储芯片阵列制成的硬盘,SSD的数据全部都存储在闪存颗粒中,不同的容量的SSD包含多个闪存颗粒,每个闪存颗粒内部包含多个可独立并发操作的单元die。每个die的状况存在或多或少的差异,比如坏块数,坏块的位置信息,各个块的坏page(物理页)数量,坏page的位置信息等,又比如每个page的program时间等。每个die上的这些状态信息都需要准确无误的记录下来。闪存颗粒在出厂的时候会标记一些出厂坏块,在SSD的使用过程中,还会产生新增坏块,SSD需要实时管理、更新这些信息。这些管理信息非常的重要,如果发生错误或者丢失,那么用户数据也会发生错误或者丢失,甚至整个SSD都无法使用。
闪存颗粒的物理块主要按用途分类分为用户容量和管理块容量,SSD在出厂前,会为每个die分配一定数量的管理块。随着闪存技术的发展,单个物理块的容量越来越大,管理块占用的容量也随着迅速增大,给用户使用的用户容量相应的减少了。单位容量的SSD的成本会相应增加,所以缩减管理块占用块的数量,显得很有必要。而且,随着SSD被用户的不断使用,闪存也在不断地磨损中,闪存存在失效的风险。一般来说,page、block、plane、die这四个维度都可能坏掉,存储在其中的数据也会丢失,特别是管理数据,如果掉失,整个SSD都不能正常使用。
现有技术中针对die的管理信息通过二级表的方式进行存储,具体为通过第一级表的内容(存储二级表的位置信息)索引第二级表。第一级表存储的内容固定不变,内容数据的长度也比较小(一般一个page可以存储完成),并且在SSD的生命周期里不再更新。但是二级表缺陷也明显,首先,二级表的存储方式是在每个die中都会存在一个一级表块,这就造成容量浪费比较多。每个一级表块其实只存有1个page的有效数据,其他的page都是空闲的,随着新的闪存发展,单位块容量越来越大,这样造成了较大的浪费,考虑到管理信息的多备份的话,浪费容量也会成倍的增加。其次,在二级表管理的架构下,当二级表块发生异常(erase fail,program fail,read错误),这个块无法再被使用,需要用新块进行更换,但是二级表块记录在一级表中,一级表无法更新,也就无法记录被更换的二级表块。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本发明提供了一种SSD闪存颗粒管理信息存储方法、读取方法及SSD设备。
第一方面,本发明实施例提供一种SSD闪存颗粒管理信息存储方法,所述方法包括:
在闪存颗粒中的各个die中选取预设的第一数量的第一die,在各个第一die中分别选择一个物理块作为一级表块,在各个一级表块中分别写入一级表,一级表中记录有二级表块的位置信息,其中,一级表块为位于第一die中物理块编号在第一预设编号之前的物理块,各个一级表块中的一级表互为备份;
在闪存颗粒中的各个die中选取预设的第二数量的第二die,在各个第二die中分别选择一个物理块作为二级表块,在各个二级表块中分别写入二级表,二级表中记录有三级表块的位置信息,其中,各个二级表块中的二级表互为备份;
为闪存颗粒中的每一die分别选取一个备份die,在每一die和与其对应的备份die中分别选择一个物理块作为当前die的三级表块,在各个三级表块中分别写入各自对应die的三级表,三级表中记录有各自对应die的管理信息。
进一步地,所述在闪存颗粒中的各个die中选取预设的第一数量的第一die,在各个第一die中分别选择一个物理块作为一级表块包括:
在闪存颗粒中的各个die中选择包含有正常状态的物理块数量最多的一个die作为当前第一die;
判断闪存颗粒中一级表块占用的plane编号是否已经包含闪存颗粒的所有plane编号;
若不包含闪存颗粒的所有plane编号,则在当前第一die未被一级表块占用的plane编号对应的各个plane中,选择包含有正常状态的物理块数量最多的一个plane作为当前第一plane;
若已包含闪存颗粒的所有plane编号,则在当前第一die的所有plane中选择包含有正常状态的物理块数量最多的一个plane作为当前第一plane;
在当前第一plane的物理块编号在第一预设编号之前的物理块中选择最强壮的一个物理块作为一级表块;
重复执行上述操作,直至获得第一数量的一级表块。
进一步地,所述在各个一级表块中分别写入一级表包括:
选取一级表块中物理页编号在第二预设编号之前的物理页作为目标物理页;
在每个目标物理页中分别写入一个一级表。
进一步地,所述在闪存颗粒中的各个die中选取预设的第二数量的第二die,在各个第二die中分别选择一个物理块作为二级表块包括:
在闪存颗粒中的各个die中选择包含有正常状态的物理块数量最多的一个die作为当前第二die;
判断闪存颗粒中的二级表块占用的plane编号是否已经包含闪存颗粒的所有plane编号;
若不包含闪存颗粒的所有plane编号,则在当前第二die未被二级表块占用plane编号的各个plane中,选择包含有正常状态的物理块数量最多的一个plane作为当前第二plane;
若已包含闪存颗粒的所有plane编号,则在当前第二die的所有plane中选择包含有正常状态的物理块数量最多的一个plane作为当前第二plane;
在当前第二plane中选择一个块作为二级表块;
重复执行上述操作,直至获得第二数量的二级表块。
进一步地,所述方法还包括:
当有二级表块发生异常时,丢弃发生异常的二级表块;
在闪存颗粒的各个die中重新选择一个空闲物理块作为新的二级表块;
根据新的二级表块的位置信息更新一级表的内容;
进一步地,所述方法还包括:
当有三级表块发生异常时,丢弃发生异常的三级表块;
判断发生异常的三级表块的位置所属的die和发生异常的三级表块中三级表记录的管理信息所属的die是否为同一die;
若为同一die,则在当前die上重新选择一个空闲物理块作为新的三级表块;
若不为同一die,则在当前die之外重新选择一个空闲物理块作为新的三级表块;
根据新的三级表块的位置信息更新二级表的内容;
在二级表块的空闲物理页中,选择物理页编号最靠前的物理页写入更新后的二级表。
进一步地,所述方法还包括:
当有目标die的管理信息发生变化时,更新目标die的三级表;
在目标die的三级表块的空闲物理页中,选择物理页编号最靠前的物理页写入更新后的三级表。
进一步地,所述方法还包括:
在闪存颗粒的各个die中,按照包含有正常状态的物理块数量由多到少的顺序依次选择两个die作为公共第三die;
在公共第三die中,在包含有正常状态的物理块数量最多的plane上选择一个物理块作为公共三级表块;
在公共三级表块中分别写入公共三级表,公共三级表中记录了各个die的耦合管理信息,其中,两个所述公共三级表块中的公共三级表互为备份。
进一步地,所述方法还包括:
当有公共三级表块生异常时,丢弃发生异常的公共三级表块;
在闪存颗粒的各个die中重新选择一个空闲物理块作为新的公共三级表块;
根据新的公共三级表块的位置信息更新二级表的内容;
在二级表块的空闲物理页中,选择物理页编号最靠前的物理页写入更新后的二级表。
进一步地,所述方法还包括:
判断各个die的耦合管理信息是否发生变化;
若各个die的耦合管理信息发生变化则更新与各个die的耦合管理信息对应的公共三级表;
在公共三级表块中的空闲物理页中,选择物理页编号最靠前的物理页写入更新后的公共三级表。
进一步地,所述一级表块、二级表块、目标三级表块均采用SLC模式存储信息。
本发明的另一方面,提供了一种SSD闪存颗粒管理信息读取方法,SSD闪存颗粒管理信息根据上述各项所述的SSD闪存颗粒管理信息存储方法进行存储,所述SSD闪存颗粒管理信息读取方法包括:
依次读取SSD闪存颗粒各个die的物理块编号在第一预设编号之前的物理块,以获得SSD闪存颗粒的一级表块;
在各个一级表块中读取一级表,并根据一级表中记录的内容获得二级表块的位置信息;
根据各个二级表块的位置信息搜索获得二级表块,在各个二级表块中读取二级表,并根据二级表中记录的内容获得与目标die对应的目标三级表块的位置信息;
根据目标三级表块的位置信息搜索获得目标三级表块,在目标三级表块中读取目标三级表,并根据目标三级表中记录的内容获得目标die的管理信息。
进一步地,所述依次读取SSD闪存颗粒各个die的物理块编号在第一预设编号之前的物理块,以获得SSD闪存颗粒的一级表块包括:
读取当前die的物理块编号在第一预设编号之前的物理块,判断物理块中的物理页是否为空闲物理页;
若不是空闲物理页,则对物理页中记录的内容进行纠错;
若纠错成功,则判断物理页中记录的内容是否为一级表;
若物理页中记录的内容为一级表,则判定找到一个一级表块;
重复执行上述操作,直至找到第一数量的一级表块。
进一步地,所述在各个一级表块中读取一级表包括:
在一级表块中选择最后一组被写入的物理页作为目标物理页,在目标物理页中读取目标一级表;
判断目标一级表中记录的数据是否正确;
若正确,则判定找到目标一级表;
若不正确,则重新选择一个一级表块,并重复执行上述操作,直至读取到数据正确的一级表。
本发明的另一方面,还提供了一种SSD设备,该SSD设备包括存储控制器,所述存储控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述各项所述的SSD闪存颗粒管理信息存储方法的步骤,或SSD闪存颗粒管理信息读取方法的步骤。
本发明实施例提供的SSD闪存颗粒管理信息存储方法、读取方法及SSD设备,将一级表存储至die的物理块编号在第一预设编号之前的物理块中,以便于在搜索一级表时仅对各个die的第一预设编号之前的块进行搜索即可,有效缩短了一级表的搜索时间;通过一级表中的记录找到二级表,通过二级表中的记录找到三级表,实现了die管理信息的逐级索引,减少了读表次数,提高了搜索管理信息的效率;且一级表和二级表占用闪存颗粒中较少数量的块,减少了闪存颗粒存储容量的浪费;一级表、二级表和三级表的各个备份被分配到不同的die上,从闪存特性上实现了多备份管理块的物理隔离,大幅降低多备份的管理同时失效的风险,提升SSD数据安全性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的三级表的拓扑结构图;
图2为本发明实施例的SSD闪存颗粒管理信息存储方法的流程示意图;
图3为本发明实施例的SSD闪存颗粒一级表块的筛选方法的流程示意图;
图4为本发明实施例的SSD闪存颗粒的三级表管理块的分布示意图;
图5为本发明实施例的SSD闪存颗粒管理信息读取方法的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中涉及到的专有名词解释如下:
Die:逻辑单元,NAND Flash中独立执行命令和报告状态的最小单元。
Plane,面,由block组成,提供单个page-sized register,一个独立存储单元。每个Plane都可以独立执行读、写和擦除操作,。
Block:物理块(或块),擦除(erase)操作的最小单元。
Page:物理页(或页),program(编程)操作的最小单元。
在进行管理信息存储时,通常每个die的管理信息都存储在当前die的块上,并且多个管理块相互备份。一旦某个块坏掉,就从另一个备份块中读出来恢复管理数据。如果所有的备份块都坏掉甚至整个die都失效,那么这个die的管理信息就无法恢复、丢失,这种情况下SSD无法正常使用。对于SSD来说,包含很多die,各个die的体质或多或少存在差异,一般坏块并不是平均分布在各个die上,而是集中在某个die上非常多,其他die很少。在die内,坏块一般集中在某个plane上,其他plane较少。所以,管理信息即使采用了多个备份,但多备份都存储在同一个die同一个plane上也并不安全。本发明实施例提供的SSD闪存颗粒管理信息存储方法针对SSD的die的物理特性对各个die的管理信息进行存储,可以有效降低多个备份的管理信息同时失效的情况的发生。
基于闪存颗粒的上述物理特性,本发明实施例提供的SSD闪存颗粒管理信息存储方法是将多个备份分布在不同die,不同plane的方式,即使某个die中某个管理块坏掉,也能通过分布在其它die上的备份恢复管理信息(不同die,不同plane上的两个备份块同时坏掉的概率远远低与在相同的die,相同plane的概率)。这样,可以大幅提高管理块中存储的管理信息的安全性。本发明实施例中管理块为存储有管理信息的物理块,一级表块、二级表块和三级表块可以统称为管理块。
本发明实施例提供的SSD闪存颗粒管理信息采用三级表的形式进行存储,如图1所示,其中一级表用于存储二级表的位置信息,二级表用于存储三级表的位置信息,三级表具体分为各个die的独立的管理信息的三级表和记录各个die耦合信息的公共三级表。其中一级表和二级表可以采用较少备份,并通过备份到不同die的不同物理块上,以保证一级表和二级表的存储稳定性。
图2示意性的示出了本发明实施例的SSD闪存颗粒管理信息存储方法,参见图2,本发明实施例的SSD闪存颗粒管理信息存储方法包括如下步骤:
S11、在闪存颗粒中的各个die中选取预设的第一数量的第一die,在各个第一die中分别选择一个物理块作为一级表块,在各个一级表块中分别写入一级表,一级表中记录有二级表块的位置信息,其中,一级表块为位于第一die中物理块编号在第一预设编号之前的物理块,各个一级表块中的一级表互为备份;
在SSD上电时,无法知道各个管理信息所在的位置,需要在每个die上一定范围内进行搜索,且每个表都需要搜索,耗费的时间将会非常的长。本发明将一级表块限定在物理块编号的第一预设编号之前,在搜索一级表时,只需要对各个die的第一预设编号之前的物理块进行搜索即可,可以极大的缩短一级表的搜索时长,提高了搜索管理信息的效率。本发明实施例中的第一预设编号的取值可以为1-5,该取值范围不作为限定本发明的保护范围的依据,因为随着搜索速度的增加还可以增加第一预设编号的取值以同时满足一级表块的稳定性和管理信息的搜索速度。
进一步地,本发明实施例的第一数量的取值远小于闪存颗粒的die的数量,例如,可以在不同的die不同的plane上分别选择三个表块作为一级表块,而无需在每个die上都分配一个物理块作为一级表块,从而减少了存储空间的浪费,由于各个一级表块中的一级表互为备份,即使某个一级表块坏掉,还可以从其他一级表块中读取出相应的备份一级表,因此也大大加强了一级表的稳定性。
S12、在闪存颗粒中的各个die中选取预设的第二数量的第二die,在各个第二die中分别选择一个物理块作为二级表块,在各个二级表块中分别写入二级表,二级表中记录有三级表块的位置信息,其中,各个二级表块中的二级表互为备份;
本发明实施例的二级表块用于存储三级表的位置信息,由于二级表块可以更换,所以本发明实施例中二级表块也可以采用较少数量的块,例如选择小于或等于三的数量的物理块作为二级表块,以满足管理信息的存储稳定性。本发明的优选实施例中,二级表采用双备份的形式变既能满足存储的稳定性又能保证占用较少的物理块,由于各个二级表块中的二级表互为备份,即使某个二级表块损坏还可以从其他二级表块中读取出备份的二级表,因此也大大加强了一级表的稳定性。而由于本发明实施例在后续实施例中当二级表块损坏时,还会选择相其他物理块替换损坏的二级表块,因此保证了始终存在两个存储在不同物理块的互为备份的二级表。
S13、为闪存颗粒中的每一die分别选取一个备份die,在每一die和与其对应的备份die中分别选择一个物理块作为当前die的三级表块,在各个三级表块中分别写入各自对应die的三级表,三级表中记录有各自对应die的管理信息。
在本发明实施例中,对于每个die来说,在当前die和其他die上分别选择一个块作为当前die的三级表块,用于存储当前die的管理信息,可以对当前die的管理信息备份到其他die上,提高了每个die的管理信息的存储的安全性。此外,需要说明的是,参照图1可知,若每个die存在不同类别的管理信息,且不同类别的管理信息都需要分配一个三级表块时,只需重复上述操作即可,也即,对于每个die的某一个类别的管理信息,均在其他die上存在一个三级表表块用于备份该类别的管理信息。
进一步地,本发明实施例中在闪存颗粒中的各个die中选取预设的第一数量的第一die,在各个第一die中分别选择一个物理块作为一级表块包括还包括如图3所示的如下步骤:
S111、在闪存颗粒中的各个die中选择包含有正常状态的物理块数量最多的一个die作为当前第一die;
在闪存颗粒的实际使用中,由于各个die的体质或多或少存在差异,一般坏块(不能使用的物理块)并不是平均分布在各个die上,而是集中在某个die上非常多,其他die很少。因而本发明实施例选择正常状态的物理块(好块)作为第一die可以在选择一级表块时便为一级表块选择在一个较为强壮的die上,提高了一级表块的稳定性,因而也提高了一级表的稳定性。
S112、判断闪存颗粒中一级表块占用的plane编号是否已经包含闪存颗粒的所有plane编号;
S1131、若不包含闪存颗粒的所有plane编号,则在当前第一die未被一级表块占用的plane编号对应的各个plane中,选择包含有正常状态的物理块数量最多的一个plane作为当前第一plane;
S1132、若已包含闪存颗粒的所有plane编号,则在当前第一die的所有plane中选择包含有正常状态的物理块数量最多的一个plane作为当前第一plane;
由于在闪存颗粒的实际使用中还发现坏块(不能正常使用的物理块)一般集中在某个plane上,其他plane较少。因而本发明实施例将一级表块设置在不同的plane上,进一步避免了多个一级表块同时失效的情况的发生,提高了一级表块的稳定性。
此外,由于一级表块的数量与plane的数量并不是相同的,因而在选择第一plane时,需要判断各个plane编号中是否都存在了一级表块,再进行一级表块的分配,这样分配的优点在于,当一级表块的数量大于或等于plane编号的数量时,使得每个plane编号的plane中都存在一个一级表块,当一级表块的数量小于plane编号的数量时,一级表块优先设置在正常状态的物理块数量最多plane上,进而进一步提高一级表块的稳定性。
S114、在当前第一plane的物理块编号在第一预设编号之前的物理块中选择最强壮的一个物理块作为一级表块;
重复执行上述操作,直至获得第一数量的一级表块。
在本发明实施例中,所谓的健壮是指在读数据时发生错误的数据位数少,且在规格书中规定的program、erase的busy时间范围内,写操作时用的时间很短,擦操作时用的时间很短,即性能指标比较优良。相应的二级表块和三级表块也可以选择相应较为健壮的块。
在本发明实施例中,通过将一级表块设置在不同的die,不同的plane上,能够有效避免多个一级表块同时损坏的发生,提高了一级表块的稳定性。此外,由于一级表块只能存储在第一预设编号之前的物理块中,而第一预设编号之前的物理块在SSD出厂时基本已都被占中,因而一级表块一般是不能更换的,此时一级表块的选择尤为重要,因此本发明实施例中优先选择最强壮的die和最强壮的plane中最强壮的物理块作为一级表块,当一级表块发生异常时,通常将发生异常的一级表块擦除并丢弃,此后不再使用该异常的一级表块即可。
进一步地,在确定一级表块之后,需要在一级表块中写入一级表,具体为:选取一级表块中物理页编号在第二预设编号之前的物理页作为目标物理页;在每个目标物理页中分别写入一个一级表。由于二级表的位置信息很少,一般一个物理页便能存下,而又由于一级表比较重要,本发明实施例将一级表存储为多份,如果某个物理页损坏,还可以从其他物理页中读取出正确的一级表。本发明的一个具体实施例中第二预设编号可以为10-20。
进一步地,在确定完一级表块的位置后,需要确定二级表块的位置,因此在步骤S12中所述在闪存颗粒中的各个die中选取预设的第二数量的第二die,在各个第二die中分别选择一个物理块作为二级表块还包括附图中未示出的如下步骤:
S121、在闪存颗粒中的各个die中选择包含有正常状态的物理块数量最多的一个die作为当前第二die;
S122、判断闪存颗粒中的二级表块占用的plane编号是否已经包含闪存颗粒的所有plane编号;
S1231、若不包含闪存颗粒的所有plane编号,则在当前第二die未被二级表块占用plane编号的各个plane中,选择包含有正常状态的物理块数量最多的一个plane作为当前第二plane;
S1232、若已包含闪存颗粒的所有plane编号,则在当前第二die的所有plane中选择包含有正常状态的物理块数量最多的一个plane作为当前第二plane;
S124、在当前第二plane中选择一个块作为二级表块;
重复执行上述操作,直至获得第二数量的二级表块。
在本发明实施例中,二级表块的选择逻辑可以同一级表块相同,优选于将二级表块分布在不同die、不同plane上。由于二级表块可以在使用的过程中更换,所以二级表块也可以随机选择。本发明实施例中二级表块的数量可以为2-5个,其中,优选为2个,即保证二级表存在备份即可,而由于不同的die、不同plane上两个物理块同时损坏的概率很低,因而,可以保证二级表块的稳定性。
进一步地,由于二级表块的位置可以更换,因而本发明实施例还包括二级表块更换的方法,具体为:当有二级表块发生异常时,丢弃发生异常的二级表块;在闪存颗粒的各个die中重新选择一个空闲物理块作为新的二级表块;根据新的二级表块的位置信息更新一级表的内容;在一级表块的空闲物理页中,选择物理页编号最靠前的物理页写入更新后的一级表。
需要说明的是,在更换二级表块时可以采用随机的方法选择空闲物理块作为新的二级表块,也可以根据上述实施例中二级表块的筛选方法进行二级表块的选择,相应的在获得更新后的二级表块之后,还需要将最新的二级表写入二级表块中的物理页中,具体为按照物理页编号由前到后的顺序依次书写即可。
在本发明实施例中,在丢弃发生异常的二级表块之前,还可以擦除发生异常的二级表块。此外,二级表块的位置信息发生变化时,需要更新一级表的内容,此时需要将更新后的一级表写入一级表块中的空闲物理页中,本发明实施例可以将一级表写入一个物理页编号最靠前的物理页,也可以同时选择多个物理页分别同时写入更新后的一级表,以对更新后的一级表进行多备份。
进一步地,对于三级表块来说,同样存在三级表块发生异常的情况,因而本发明实施例的SSD闪存颗粒管理信息存储方法还包括:当有三级表块发生异常时,丢弃发生异常的三级表块;判断发生异常的三级表块的位置所属的die和发生异常的三级表块中三级表记录的管理信息所属的die是否为同一die;若为同一die,则在当前die上重新选择一个空闲物理块作为新的三级表块;若不为同一die,则在当前die之外重新选择一个空闲物理块作为新的三级表块;根据新的三级表块的位置信息更新二级表的内容;在二级表块的空闲物理页中,选择物理页编号最靠前的物理页写入更新后的二级表。
需要说明的是,上述实施例只是本发明的一个优选实施例,由于每个die的三级表块都优选有一个三级表块位于当前die上,因而在选择新的三级表块时,需要事先判断三级表块的位置,以便于在更换三级表块之后,优先保证每个die在当前die和当前die之外还存在一个die具有当前die的备份三级表块,当然,若位于当前die上的当前die三级表表块损坏之后,在当前die上没有找到合适的空闲物理块作为当前die的三级表块,也可以从其他die上选择一个空闲物理块作为当前die的三级表块。
进一步地,当三级表块的位置信息发生变化时,需要根据变化的三级表块的位置信息更新二级表的内容,此时在二级表块的空闲物理页中,选择物理页编号最靠前的物理页写入更新后的二级表即可。
进一步地,由于在SSD的使用过程中,各个die的管理信息也会随之发生变化,因而本发明实施例的SSD闪存颗粒管理信息存储方法还包括:当有目标die的管理信息发生变化时,更新目标die的三级表;在目标die的三级表块的空闲物理页中,选择物理页编号最靠前的物理页写入更新后的三级表。
进一步地,对于各个die来说除包括每个die都有各自独立的表,存储当前die的管理信息。一般包括多种表(例如,坏块表,坏page表等)。还有一种三级表存储各个die相互耦合的信息的公共表(例如,多个die block组成raid,记录raid类型,以及各个die block是否有效)。因此,本发明实施例中还包括对各个die的耦合管理信息进行存储的公共三级表块。
对于公共三级表块的选择,包括了附图中未示出的如下步骤:
S141、在闪存颗粒的各个die中,按照包含有正常状态的物理块数量由多到少的顺序依次选择两个die作为公共第三die;
S142、在公共第三die中,在包含有正常状态的物理块数量最多的plane上选择一个物理块作为公共三级表块;
S143、在公共三级表块中分别写入公共三级表,公共三级表中记录了各个die的耦合管理信息,其中,两个所述公共三级表块中的公共三级表互为备份。
此外,对于公共三级表的更新,还包括:当有公共三级表块生异常时,丢弃发生异常的公共三级表块;在闪存颗粒的各个die中重新选择一个空闲物理块作为新的公共三级表块;根据新的公共三级表块的位置信息更新二级表的内容;在二级表块的空闲物理页中,选择物理页编号最靠前的物理页写入更新后的二级表。
此处需要说明的事,各个die的耦合管理信息不止一类,因而公共三级表也不止一个,在SSD闪存颗粒管理信息进行存储时,只需要保证每类耦合管理信息的公共三级表均存在其他die的物理块上存在备份即可,也即对每一类公共三级表而言需要根据公共三级表块的选择选择方法进行选择。
在本发明的一个实施例中,一级表块、二级表块和三级表块以及公共三级表块均采用SLC模式存储。其中,SLC模式更加稳定,最大擦写次数较多,因此寿命较长。
可理解的是,本发明对各个管理块实行多备份,并且分配在不同的die,plane上,从闪存特性上物理的隔离多备份的管理块,大幅降低多备份的管理同时失效的风险,提升SSD数据安全性。
图4示意性的示出了本发明的一个具体实施例中,SSD闪存颗粒的三级表管理块的分布示意图,以一个具有6个die的闪存颗粒为例,在die0、die1和die2上分别在block0~1中挑选一个块作为一级表块,在die0和die2上分别选取一个块作为二级表块,在各个die上分别选取一个块作为当前die的三级表块,并在区别于当前die的其他die上选取一个块作为当前die的三级表块,在die1和die3上分别选取一个块作为三级表块存储所有die共用信息的表A,在die3和die4上分别选取一个块作为三级表块存储所有die共用信息的表B。
由图4可知,本发明实施例的多个备份的一级表分配在不同die、不同plane上,有效避免了多备份的管理信息同时失效的情况的发生。一级表只采用了三个备份,减少管理块数量,提高用户容量占用闪存的比例,降低SSD的成本。
此外,需要说明的是,本发明实施例在选择各级表块时,优先选择物理块编号靠前的物理块,以将物理块编号靠后的物理块留给用户作为存储空间使用。而且,在上述实施例中可知,由于在选择各级表块时,优先选择正常状态的物理块数量较多的die上的物理块,也会舍得各个die上剩余的正常状态的物理块数量更为接近,这些剩余的正常状态的物理块数量便作为用户的存储空间。
图5示意性的示出了本发明实施例的SSD闪存颗粒管理信息读取方法的流程示意图,其中SSD闪存颗粒管理信息根据上述实施例所述的SSD闪存颗粒管理信息存储方法进行存储,参照图5可知,本发明实施例的SSD闪存颗粒管理信息读取方法包括如下步骤:
S21、依次读取SSD闪存颗粒各个die的物理块编号在第一预设编号之前的物理块,以获得SSD闪存颗粒的一级表块;
本发明实施例中,所述依次读取SSD闪存颗粒各个die的物理块编号在第一预设编号之前的物理块,以获得SSD闪存颗粒的一级表块包括:读取当前die的物理块编号在第一预设编号之前的物理块,判断物理块中的物理页是否为空闲物理页;若不是空闲物理页,则对物理页中记录的内容进行纠错;若纠错成功,则判断物理页中记录的内容是否为一级表;若物理页中记录的内容为一级表,则判定找到一个一级表块;重复执行上述操作,直至找到第一数量的一级表块。
由于在SSD上电时,并不知道一级表块的存储位置,需要对每个die进行搜索获得表块,此时在对SSD闪存颗粒管理信息进行存储时,只旋转第一预设编号之前的物理块,例如只在block0~1中选择物理块作为一级表块,在进行一级表块搜索时,只需要搜索各个die的block0~1中的物理块即可,这样可以有效减少搜表的时间,提高搜表效率,减少上盘时间。
S22、在各个一级表块中读取一级表,并根据一级表中记录的内容获得二级表块的位置信息;
S23、根据各个二级表块的位置信息搜索获得二级表块,在各个二级表块中读取二级表,并根据二级表中记录的内容获得与目标die对应的目标三级表块的位置信息;
S24、根据目标三级表块的位置信息搜索获得目标三级表块,在目标三级表块中读取目标三级表,并根据目标三级表中记录的内容获得目标die的管理信息。
在本发明实施例中,一级表中存储有二级表块的位置信息,二级表中存储有三级表块的位置信息,因而通过逐级搜索的方式便可以获得各个die的管理信息和各个die的耦合管理信息。可以有效减少各个管理信息的搜索时间,提高搜索效率。
进一步地,所述在各个一级表块中读取一级表包括:在一级表块中选择最后一组被写入的物理页作为目标物理页,在目标物理页中读取目标一级表;判断目标一级表中记录的数据是否正确;若正确,则判定找到目标一级表;若不正确,则重新选择一个一级表块,并重复执行上述操作,直至读取到数据正确的一级表。
本发明实施例的另一方面,还提供了一种SSD设备,该SSD设备包括存储控制器,所述存储控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例所述的SSD闪存颗粒管理信存储方法的步骤,或实现如上述实施例所述的SSD闪存颗粒管理信息读取方法的步骤。
可以理解的是,本说明书实施例示意的结构并不构成对本说明书实施例的装置的具体限定。在说明书的另一些实施例中,上述装置可以包括比图示更多或者更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或者软件和硬件的组合来实现。
本发明实施例提供的SSD闪存颗粒管理信息存储方法、读取方法及SSD设备,将一级表存储至die的物理块编号在第一预设编号之前的物理块中,以便于在搜索一级表时仅对各个die的第一预设编号之前的块进行搜索即可,有效缩短了一级表的搜索时间;通过一级表中的记录找到二级表,通过二级表中的记录找到三级表,实现了die管理信息的逐级索引,减少了读表次数,提高了搜索管理信息的效率;且一级表和二级表占用闪存颗粒中较少数量的块,减少了闪存颗粒存储容量的浪费;一级表、二级表和三级表的各个备份被分配到不同的die上,从闪存特性上实现了多备份管理块的物理隔离,大幅降低多备份的管理同时失效的风险,提升SSD数据安全性。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、挂件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (15)
1.一种SSD闪存颗粒管理信息存储方法,其特征在于,所述方法包括:
在闪存颗粒中的各个die中选取预设的第一数量的第一die,在各个第一die中分别选择一个物理块作为一级表块,在各个一级表块中分别写入一级表,一级表中记录有二级表块的位置信息,其中,一级表块为位于第一die中物理块编号在第一预设编号之前的物理块,各个一级表块中的一级表互为备份;
在闪存颗粒中的各个die中选取预设的第二数量的第二die,在各个第二die中分别选择一个物理块作为二级表块,在各个二级表块中分别写入二级表,二级表中记录有三级表块的位置信息,其中,各个二级表块中的二级表互为备份;
为闪存颗粒中的每一die分别选取一个备份die,在每一die和与其对应的备份die中分别选择一个物理块作为当前die的三级表块,在各个三级表块中分别写入各自对应die的三级表,三级表中记录有各自对应die的管理信息。
2.根据权利要求1所述的方法,其特征在于,所述在闪存颗粒中的各个die中选取预设的第一数量的第一die,在各个第一die中分别选择一个物理块作为一级表块包括:
在闪存颗粒中的各个die中选择包含有正常状态的物理块数量最多的一个die作为当前第一die;
判断闪存颗粒中一级表块占用的plane编号是否已经包含闪存颗粒的所有plane编号;
若不包含闪存颗粒的所有plane编号,则在当前第一die未被一级表块占用的plane编号对应的各个plane中,选择包含有正常状态的物理块数量最多的一个plane作为当前第一plane;
若已包含闪存颗粒的所有plane编号,则在当前第一die的所有plane中选择包含有正常状态的物理块数量最多的一个plane作为当前第一plane;
在当前第一plane的物理块编号在第一预设编号之前的物理块中选择最强壮的一个物理块作为一级表块;
重复执行上述操作,直至获得第一数量的一级表块。
3.根据权利要求1或2所述的方法,其特征在于,所述在各个一级表块中分别写入一级表包括:
选取一级表块中物理页编号在第二预设编号之前的物理页作为目标物理页;
在每个目标物理页中分别写入一个一级表。
4.根据权利要求1所述的方法,其特征在于,所述在闪存颗粒中的各个die中选取预设的第二数量的第二die,在各个第二die中分别选择一个物理块作为二级表块包括:
在闪存颗粒中的各个die中选择包含有正常状态的物理块数量最多的一个die作为当前第二die;
判断闪存颗粒中的二级表块占用的plane编号是否已经包含闪存颗粒的所有plane编号;
若不包含闪存颗粒的所有plane编号,则在当前第二die未被二级表块占用plane编号的各个plane中,选择包含有正常状态的物理块数量最多的一个plane作为当前第二plane;
若已包含闪存颗粒的所有plane编号,则在当前第二die的所有plane中选择包含有正常状态的物理块数量最多的一个plane作为当前第二plane;
在当前第二plane中选择一个块作为二级表块;
重复执行上述操作,直至获得第二数量的二级表块。
5.根据权利要求1或4所述的方法,其特征在于,所述方法还包括:
当有二级表块发生异常时,丢弃发生异常的二级表块;
在闪存颗粒的各个die中重新选择一个空闲物理块作为新的二级表块;
根据新的二级表块的位置信息更新一级表的内容;
在一级表块的空闲物理页中,选择物理页编号最靠前的物理页写入更新后的一级表。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当有三级表块发生异常时,丢弃发生异常的三级表块;
判断发生异常的三级表块的位置所属的die和发生异常的三级表块中三级表记录的管理信息所属的die是否为同一die;
若为同一die,则在当前die上重新选择一个空闲物理块作为新的三级表块;
若不为同一die,则在当前die之外重新选择一个空闲物理块作为新的三级表块;
根据新的三级表块的位置信息更新二级表的内容;
在二级表块的空闲物理页中,选择物理页编号最靠前的物理页写入更新后的二级表。
7.根据权利要求1或6所述的方法,其特征在于,所述方法还包括:
当有目标die的管理信息发生变化时,更新目标die的三级表;
在目标die的三级表块的空闲物理页中,选择物理页编号最靠前的物理页写入更新后的三级表。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在闪存颗粒的各个die中,按照包含有正常状态的物理块数量由多到少的顺序依次选择两个die作为公共第三die;
在公共第三die中,在包含有正常状态的物理块数量最多的plane上选择一个物理块作为公共三级表块;
在公共三级表块中分别写入公共三级表,公共三级表中记录了各个die的耦合管理信息,其中,两个所述公共三级表块中的公共三级表互为备份。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
当有公共三级表块生异常时,丢弃发生异常的公共三级表块;
在闪存颗粒的各个die中重新选择一个空闲物理块作为新的公共三级表块;
根据新的公共三级表块的位置信息更新二级表的内容;
在二级表块的空闲物理页中,选择物理页编号最靠前的物理页写入更新后的二级表。
10.根据权利要求8或9所述的方法,其特征在于,所述方法还包括:
判断各个die的耦合管理信息是否发生变化;
若各个die的耦合管理信息发生变化则更新与各个die的耦合管理信息对应的公共三级表;
在公共三级表块中的空闲物理页中,选择物理页编号最靠前的物理页写入更新后的公共三级表。
11.根据权利要求1所述的方法,其特征在于,所述一级表块、二级表块、目标三级表块均采用SLC模式存储信息。
12.一种SSD闪存颗粒管理信息读取方法,其特征在于,SSD闪存颗粒管理信息根据权利要求1-11任一项所述的SSD闪存颗粒管理信息存储方法进行存储,所述SSD闪存颗粒管理信息读取方法包括:
依次读取SSD闪存颗粒各个die的物理块编号在第一预设编号之前的物理块,以获得SSD闪存颗粒的一级表块;
在各个一级表块中读取一级表,并根据一级表中记录的内容获得二级表块的位置信息;
根据各个二级表块的位置信息搜索获得二级表块,在各个二级表块中读取二级表,并根据二级表中记录的内容获得与目标die对应的目标三级表块的位置信息;
根据目标三级表块的位置信息搜索获得目标三级表块,在目标三级表块中读取目标三级表,并根据目标三级表中记录的内容获得目标die的管理信息。
13.根据权利要求12所述的方法,其特征在于,所述依次读取SSD闪存颗粒各个die的物理块编号在第一预设编号之前的物理块,以获得SSD闪存颗粒的一级表块包括:
读取当前die的物理块编号在第一预设编号之前的物理块,判断物理块中的物理页是否为空闲物理页;
若不是空闲物理页,则对物理页中记录的内容进行纠错;
若纠错成功,则判断物理页中记录的内容是否为一级表;
若物理页中记录的内容为一级表,则判定找到一个一级表块;
重复执行上述操作,直至找到第一数量的一级表块。
14.根据权利要求12所述的方法,其特征在于,所述在各个一级表块中读取一级表包括:
在一级表块中选择最后一组被写入的物理页作为目标物理页,在目标物理页中读取目标一级表;
判断目标一级表中记录的数据是否正确;
若正确,则判定找到目标一级表;
若不正确,则重新选择一个一级表块,并重复执行上述操作,直至读取到数据正确的一级表。
15.一种SSD设备,其特征在于,包括存储控制器,所述存储控制器包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1-11中任一项或如权利要求12-14中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311371218.3A CN117573568A (zh) | 2023-10-20 | 2023-10-20 | Ssd闪存颗粒管理信息存储方法、读取方法及ssd设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311371218.3A CN117573568A (zh) | 2023-10-20 | 2023-10-20 | Ssd闪存颗粒管理信息存储方法、读取方法及ssd设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117573568A true CN117573568A (zh) | 2024-02-20 |
Family
ID=89859646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311371218.3A Pending CN117573568A (zh) | 2023-10-20 | 2023-10-20 | Ssd闪存颗粒管理信息存储方法、读取方法及ssd设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117573568A (zh) |
-
2023
- 2023-10-20 CN CN202311371218.3A patent/CN117573568A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111722793B (zh) | 开放通道存储设备的操作方法 | |
CN102023815B (zh) | 在固态存储器中实现raid | |
KR101613678B1 (ko) | 전력 손실 이후의 비-휘발성 메모리에 대한 복원 | |
US10120769B2 (en) | Raid rebuild algorithm with low I/O impact | |
US10503606B2 (en) | Data backup method, data recovery method and storage controller | |
US11200003B2 (en) | Bounded latency and command non service methods and apparatus | |
WO2009124320A1 (en) | Apparatus, system, and method for bad block remapping | |
CN111104245B (zh) | 固态存储装置的读取重试方法 | |
JP2002175211A (ja) | データ管理システムおよびデータ管理方法 | |
US10642731B2 (en) | Memory management method and storage controller | |
JP5950286B2 (ja) | アドレス変換テーブルを書き込む装置及び方法 | |
WO2022142544A1 (zh) | 防止闪存数据丢失的方法、固态硬盘控制器、固态硬盘 | |
CN111581022B (zh) | 一种数据恢复方法及系统 | |
JP2002175158A (ja) | ディスクアレイ装置におけるデータ修復方法及びディスクアレイコントローラ | |
US20240143188A1 (en) | Data processing method and apparatus, device, and readable storage medium | |
US10114699B2 (en) | RAID consistency initialization method | |
US10324648B1 (en) | Wear-based access optimization | |
WO2017012507A1 (zh) | 一种数据恢复方法及装置 | |
CN115185471B (zh) | Nand闪存颗粒及其逻辑单元筛选方法、电子设备 | |
CN117573568A (zh) | Ssd闪存颗粒管理信息存储方法、读取方法及ssd设备 | |
CN112131040B (zh) | 一种智能卡掉电备份区的磨损均衡管理方法和系统 | |
CN114691433A (zh) | 一种固态硬盘的控制方法和装置 | |
CN114550772A (zh) | Nand闪存中颗粒的管理方法、存储介质及存储设备 | |
JP2000513129A (ja) | ディスクアレイ内の不完全な書込を追跡する方法、およびこのような方法を行なうディスク記憶システム | |
CN114428592B (zh) | Ssd硬盘的块信息存储方法和系统、ssd硬盘 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |