CN115237351B - Nand块动态重映射、读写命令处理方法及存储设备 - Google Patents
Nand块动态重映射、读写命令处理方法及存储设备 Download PDFInfo
- Publication number
- CN115237351B CN115237351B CN202210923986.4A CN202210923986A CN115237351B CN 115237351 B CN115237351 B CN 115237351B CN 202210923986 A CN202210923986 A CN 202210923986A CN 115237351 B CN115237351 B CN 115237351B
- Authority
- CN
- China
- Prior art keywords
- block
- blocks
- nand
- good
- big
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请提供一种NAND块动态重映射和读写命令处理方法及存储设备,涉及计算机领域,NAND块动态重映射方法包括:对不同LUN中相同物理索引的NAND块进行绑定,组成大块;以大块索引和LUN索引分别为行和列,建立NAND块动态映射表,根据NAND块的物理索引对NAND块动态映射表的表项进行初始化;获取第一大块和第二大块,其中,第一大块中好块数量大于第二大块中好块数量;在相同LUN索引内,将第一大块内的好块与第二大块内的坏块进行交换,更新NAND块动态映射表。本申请根据SSD生产完成后坏块的实时分布情况,对坏块进行重映射,实现SSD中所有大块中好块数量均衡,提高SSD写性能。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种NAND块动态重映射、读写命令处理方法及存储设备。
背景技术
目前固态硬盘(SSD)在使用非易失性存储块(NAND块)时,会将位于不同数据存储位置(die)的相同物理索引块绑定,组成一个大块(superblock,或xblock),作为写入和擦除单元。大块包括来自多个逻辑单元(LUN)的每个的物理块,为大块提供物理块的多个逻辑单元被称为逻辑单元组,逻辑单元组的每个逻辑单元可以为大块提供一个物理块。
非易失性存储器(NAND)在出厂时,有一定数量的出厂坏块。同一代,同一批次或不同批次NAND,出厂坏块可能集中在若干个相同索引的NAND块中,这就会导致若干个大块中可用好块数量明显少于其他大块,或者无好块可用。
存储设备接收主机的写命令并向NAND写入数据时,将要写入的数据按页条带的格式组装,使得按照页条带为单位,每次向整个页条带写入数据。当大块中存在坏块,或者多个大块中坏块的数量不同时,导致来自大块的页条带的容量或物理页数量发生变化(因为坏块不能被写入数据)。页条带来自不同LUN的物理页可被同时写入数据,从而页条带的容量或物理页数量,直接影响向页条带写入数据时的并行度,并影响存储设备处理写命令的性能。随着大块的坏块数量增加,由来自该大块的页条带承载写入数据时,处理写命令的性能下降。当各大块的坏块数量不同,坏块分布不均衡,导致在实际的写操作中,速度会非常不稳定,由来自这些大块的页条带各自承载写入数据时,处理写命令的性能发生抖动。
这种性能的明显下降或抖动对于固态硬盘(SSD)产品是不可接受的。
发明内容
本申请的目的在于提供一种NAND块动态重映射和读写命令处理方法及存储设备,NAND块动态重映射方法根据SSD生产完成后坏块的实时分布情况,对坏块进行重映射,实现SSD中所有大块中好块数量均衡,提高SSD写性能,降低抖动。
为达到上述目的,在第一方面,本申请提供一种NAND块动态重映射方法,该方法包括如下步骤:对不同LUN中相同物理索引的NAND块进行绑定,组成大块;以大块索引和LUN索引分别为行和列,建立NAND块动态映射表,根据NAND块的物理索引对NAND块动态映射表的表项进行初始化;获取各大块内好块的数量;根据各大块内好块的数量,对不同大块内的好块与坏块进行重映射;更新NAND块动态映射表。
如上所述的NAND块动态重映射方法,其中优选的是,所述根据各大块内好块的数量,对不同大块内的好块与坏块进行重映射包括:根据各大块内好块的数量确定第一大块和第二大块,其中,第一大块中好块数量大于第二大块中好块数量;将第一大块内的好块与第二大块内的坏块进行交换,完成重映射。
如上所述的NAND块动态重映射方法,其中优选的是,所述第一大块为所有大块中好块数量最多的大块,所述第二大块为所有大块中好块数量最少的大块。
如上所述的NAND块动态重映射方法,其中优选的是,还包括:对交换后的各大块内好块数量的最大值和最小值的差值与第一阈值进行比较,如果最大值与最小值的差值大于第一阈值,则重复根据大块内好块的数量,对不同大块内的好块与坏块进行重映射,直到最大值与最小值的差值不大于第一阈值,完成重映射。
如上所述的NAND块动态重映射方法,其中优选的是,还包括:计算各大块中好块数量的平均值,将各大块中好块数量大于平均值的确定为第一大块,将各大块中好块数量小于平均值的确定为第二大块。
如上所述的NAND块动态重映射方法,其中优选的是,对交换后的各大块内好块的数量的最大值和最小值的差值与第一阈值进行比较,如果最大值与最小值的差值大于第一阈值,则重复根据大块内好块的数量,对不同大块内的好块与坏块进行重映射,直到最大值与最小值的差值不大于第一阈值,完成重映射;或
计算交换后第一大块中好块的数量与所述平均值的差值和第二大块中好块的数量与所述平均值的差值,分别为第一差值和第二差值,如果第一差值和第二差值均大于第二阈值,则重复根据大块内好块的数量,对不同大块内的好块与坏块进行重映射,直到第一差值和第二差值不大于第二阈值,完成重映射。
如上所述的NAND块动态重映射方法,其中优选的是,获取包含好块的数量最多和最少的两个大块,分别为第一大块和第二大块;将所述第一大块内的好块与所述第二大块内的坏块进行交换,直到两个大块中好块相差数量符合阈值。
如上所述的NAND块动态重映射方法,其中优选的是,获取好块数量大于各大块好块数量平均值的大块作为第一大块,好块数量小于各大块好块数量平均值的大块作为第二大块;将所述第一大块内的好块与所述第二大块内的坏块进行交换,直到两个大块中好块相差数量符合阈值
如上所述的NAND块动态重映射方法,其中优选的是,重复获取包含好块的数量最多和最少的两个大块,分别为第一大块和第二大块;对两个大块中的好块和坏块进行交换,直至所有大块中好块的相差数量符合阈值。
如上所述的NAND块动态重映射方法,其中优选的是,保存NAND块动态映射表到NAND和/或SSD系统信息中。
如上所述的NAND块动态重映射方法,其中优选的是,对NAND块动态映射表中尚未被写入数据的空闲大块实施NAND块的动态重映射。
如上所述的NAND块动态重映射方法,其中优选的是,NAND块动态映射表中对坏块和好块进行标注,或对好块数量进行标注。
第二方面,本申请还提供一种写命令处理方法,在所述的NAND块动态重映射方法之后执行,该方法包括如下步骤:存储设备获取主机发送的写命令,从NAND块动态映射表中获取空闲大块,从空闲大块中获取页条带;将写命令的数据按照获取的所述页条带组装;将组装后的数据写入所述页条带。
第三方面,本申请还提供一种读命令处理方法,在所述的NAND块动态重映射方法之后执行,该方法包括如下步骤:存储设备获取主机发送的读命令;根据读命令,从物理页读出数据,判断读出数据是否存在错误,若是,则根据NAND块动态映射表获取出错的物理页所属的大块,否则,无需获取大块;从获取大块中的各个好块中获取页条带;利用获取的页条带重建出错的数据;更新NAND块动态映射表。
第四方面,本申请还提供一种存储设备,该存储设备周期性地实施所述的NAND块动态重映射方法,或者响应于识别出坏块,在NAND块动态映射表中记录坏块后,再判断是否需要执行NAND块动态重映射方法;该存储设备包括控制部件,用于管理NAND块动态映射表。
与现有技术相比,本申请实现的有益效果如下:
(1)本申请通过实施NAND块动态重映射方法,使得存储设备的各大块所包括的好块数量彼此接近,从而使得由来自不同的大块的页条带承载写入数据时,存储设备的写性能保持稳定,有较好的一致性,降低抖动,提升了用户体验。
(2)本申请对NAND块的动态重映射方法完成后,将最新的NAND块动态映射表存储在NAND中,以便存储设备下次上电时能获取该NAND块动态映射表,以获取各大块的构造方式。
(3)本申请的NAND块动态重映射方法中,所有好的NAND块都会被使用,为SSD提供冗余空间。
(4)本申请的NAND块动态重映射方法能自适应不同厂商、不同代、不同批次闪存(NAND Flash),从而实现不同产品线中算法一致性,降低SSD固件开发、维护成本。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例的一种NAND块动态重映射方法流程图。
图2为本申请实施例的获取第一大块和第二大块的方法流程图。
图3为本申请实施例的大块的构造示意图。
图4为本申请实施例的NAND块动态映射表的示意图1。
图5为本申请另一实施例的NAND块动态映射表的示意图2。
图6为本申请另一实施例的NAND块动态映射表的示意图3。
图7为本申请另一实施例的NAND块动态映射表的示意图4。
图8为本申请另一实施例的NAND块动态映射表的示意图5。
图9为本申请实施例的未进行NAND动态重映射前的大块页条带构成的RAID组示意。
图10为本申请实施例的进行NAND动态重映射后的大块页条带构成的RAID组示意。
图11为本申请实施例的一种写命令处理方法的流程图。
图12为本申请实施例的一种擦除大块处理方法的流程图。
图13为本申请实施例的一种读命令处理方法的流程图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的相关实施例中,可以采用如下方案:
第一种方案:找到大块索引与NAND块物理索引和LUN索引之间的一种固定函数关系,即大块索引=f(NAND块物理索引,LUN索引),将不同LUN中物理索引不同的NAND块(非易失性存储块)绑定,组成大块。此种方案通常称之为NAND块静态重映射。此种方案在一定程度上能够缓解大块中好块数量不均衡的问题,但不是绝对均衡,效果不好。在NAND换代或者批次变化,出厂坏块分布发生变化时,需要重新定义大块索引=f(NAND块索引,LUN索引)函数关系,较为麻烦。
第二种方案:根据SSD产品生命周期中可能出现的平均或最大坏块数量,在每个LUN中预留一定数量的NAND块,这些预留的NAND块专门用作替换相同LUN中出现的坏块。预留的NAND块在替换坏块之前,不会被写入数据。因此这种方案会缩小SSD的冗余空间,进而降低稳态随机写性能。
因此,目前亟需解决的技术问题是:如何实现SSD中所有大块中好块数量均衡,提高写性能,降低抖动。
实施例一
如图1所示,本申请提供一种NAND块动态重映射方法,该方法包括如下步骤:
步骤S110,对不同LUN中相同物理索引的NAND块进行绑定,组成大块。
如图3所示,作为构造大块的具体实施例,例如在16个逻辑单元(LUN0、LUN1、……、LUN15)的逻辑单元组上构造大块;LUN0-LUN15的块0构成大块0。其中,LUN0到LUN14的各个平面中的物理块0用于存储用户数据,而LUN15的物理块0用于存储根据大块0的用户数据计算得到的校验数据。同理,LUN0-LUN15的块1构成大块1。其中,LUN0到LUN14的各个平面中的物理块1用于存储用户数据,而LUN15的物理块1用于存储根据大块1的用户数据计算得到的校验数据。大块2、大块3……的构成方式以此类推。
如图3所示,作为本发明的一个具体实施例,在大块的基础上构造页条带,大块内的每个物理块的相同物理地址的物理页构成页条带。例如,大块0内的物理页P0-0、物理页P0-1、……、与物理页P0-X构成页条带0,其中,物理页P0-0、物理页P0-1、……、物理页P0-14用于存储用户数据,物理页P0-X用于存储根据条带内的所有用户数据计算得到的校验数据。类似地,物理页P2-0、物理页P2-1、……、与物理页P2-X构成页条带2。可选地,物理页P2-X用于存储校验数据的物理页可以位于页条带中的任意位置。
步骤S120,以大块索引和LUN索引分别为行和列,建立NAND块动态映射表,根据NAND块的物理索引对NAND块动态映射表的表项进行初始化。
初始化后的NAND块动态映射表的每个表项为NAND块物理索引。
如图4所示,以大块索引为行索引值,以LUN索引为列索引值,建立NAND块动态映射表,NAND块动态映射表用于记录NAND块动态重映射的结果。换句话说,NAND块动态映射表为二维数组,一级索引为大块索引,二级索引为LUN索引,各个数组项的值为NAND块的物理索引。可以理解的是:NAND块动态映射表的第一列代表一级索引(大块索引),第一行代表二级索引(LUN索引)。对于每个一级索引,其代表一个大块,其二级索引的数量代表了为该大块贡献物理块的LUN(逻辑单元)的数量。例如,每个大块中包括来自6个LUN(逻辑单元)的物理块。虽然,在上例中,每个LUN(逻辑单元)为大块贡献一个物理块,但是在其他例子中,每个LUN(逻辑单元)可被大块共享其他数量的物理块,例如,来自相同LUN(逻辑单元)的多个平面(Plane)的多个物理块。
作为本发明的具体实施例,NAND块动态映射表的每行代表了一个大块,以及显示构成该大块的每个物理块的索引。根据本发明的实施例,在初始化存储设备时,按预定的方式,将不同LUN(逻辑单元)中相同索引的物理块绑定。属于大块i的来自不同LUN(逻辑单元)的各物理块的索引也为i。
步骤S130,获取包含好块的数量最多和最少的两个大块,分别为第一大块和第二大块。
如图2所示,步骤S130包括如下子步骤:
步骤S131,识别每个大块中的好块或坏块。好块即无故障NAND块,坏块即有故障NAND块。
步骤S132,根据识别的好块或坏块,计算每个大块中好块的数量。
步骤S133,比较各个大块中好块的数量大小,选取包含好块的数量最多和最少的两个大块,分别为第一大块和第二大块。
步骤S140,在相同LUN索引内,将第一大块内的好块与第二大块内的坏块进行交换,并更新NAND块动态映射表。
优选的,可以第一大块内的好块与第二大块内的坏块每交换一次,更新一次NAND块动态映射表。也可以毎交换一次后根据第一阈值判断是否需要重复上述步骤来继续交换,如果不需要继续交换则更新NAND块动态映射表,即也可以是多次交换好块和坏块后完成重映射时,更新一次NAND块动态映射表。
步骤S150,判断所有大块中每两个大块的好块的相差数量是否大于第一阈值,若是,则返回执行步骤S130和步骤S140,若否,则结束NAND块动态重映射方法。
其中,在相同LUN索引内,将第一大块内的好块与第二大块内的坏块进行交换,直到两个大块中好块的相差数量符合预设条件,优选的,直到两个大块中好块的数量相同或相差数量为1。该相差数量也可以是其他值,在此不限定该相差数量。并不是把第一大块内的所有好块与第二大块内对应的坏块交换,两个大块中好块的相差数量符合预设条件即可。
可以理解的是,在NAND块动态重映射方法过程中,重复执行步骤S130以及步骤S140,直至所有大块中好块的相差数量符合阈值(即不大于阈值)。优选的,阈值可以为1,即直到所有大块中好块的数量相同或相差数量为1。该相差数量也可以是其他值,在此不限定该阈值的数值。
作为本发明的具体实施例,保存NAND块动态映射表到NAND和/或SSD系统信息中,以便在SSD系统信息和NAND中查找到NAND块动态映射表。
如图5所示,NAND块动态映射表中对坏块和好块进行标注。坏块存在于存储设备的LUN中,其中“x”代表坏块,坏块不能被写入数据,不带有“x”代表好块,好块可以写入数据。
作为本发明的具体实施例,NAND块动态映射表还可以进一步包括好块数量,可以标注在大块索引所在这一行的最后一列。如图5所示,NAND块动态映射表还额外地标注了各大块的好块的数量。可以理解地是,好块数量可以属于或不属于NAND块动态映射表的部分。
作为本发明的一个具体实施例,以图5中所示的NAND块动态映射表为例,选取出存储设备中好块数量最多与最少的大块,分别是大块3(6个好块)与大块2(2个好块)。由于好块数量最多与最少的大块之间,其好块数量的差值(6-2=4)大于阈值(作为举例,阈值为1),因此需要执行NAND块动态重映射方法,来使得存储设备中好块数量最多与最少的大块中的好块数量之差不大于阈值,也就是使得大块3和大块2的好块数量差值不大于阈值。对于选出的好块数量最多大块3与好块最少的大块2,在相同LUN(逻辑单元)内交换他们二者的好块与坏块,以减小其好块数量的差。交换时先对所要交换的两个大块中相同LUN内的好块或坏块进行判断,只有对应LUN内好块与坏块不同时才交换,对于相同LUN(逻辑单元)内选出的两个大块都是好块或坏块的不进行交换,即,若相同LUN内,若大块3和大块2都是好块则不交换NAND块,若大块3和大块2都是坏块也不交换NAND块,只有在大块3是好块且大块2是坏块条件下再进行交换,直到二者的差值不大于阈值,并更新NAND块动态映射表。如图6所示,在LUN0内将大块3的好块(物理块3)与大块2的坏块(物理块2(x))进行交换,在LUN1内将大块3的好块(物理块3)与大块2的坏块(物理块2(x))进行交换。交换完成后,大块3和大块2的好块数量均为4,二者的差值不大于阈值。
如图6所示,从NAND块动态映射表中再次选取出存储设备中好块数量最多与最少的大块,分别是大块0(5个好块)与大块1/2/3(4个好块)。由于好块数量最多与最少的大块之间,其好块数量的差值为1,该差值不大于阈值,因而完成了对NAND块动态映射表的更新。
作为本发明的一个具体实施例,在图5所示基础上,可以选出好块数量最多的大块与好块数量最少的大块,通过比较差值确定需要交换几个物理块,图5中大块2和大块3的好块数量差值为4,则交换2个物理快即可。以图6所示为例,为交换后的状态,确定需要交换2个物理块后只需要直接按数量进行交换即可。
作为又一个实施例,在图5所示的NAND块动态映射表中,选择出好块数量最多与最少的大块3(6个好块)与大块2(2个好块),在相同LUN内交换他们二者的“一个”好物理块与坏物理块,并相应地更新NAND块动态映射表。可选地,交换物理块时,需要寻找合适的LUN(逻辑单元)。合适的LUN需满足一定条件,例如,由该LUN提供给大块3与大块2的物理块中不都是好块,也不都是坏块(选择LUN0);合适的LUN例如:图5中,LUN0(提供给大块3的是好块,提供给大块2的是坏块);LUN1(提供给大块3的是好块,提供给大块2的是坏块。而另一个可选的条件是,前后两次交换物理块的LUN是相同的或不同的。可以理解的是,在图5中,大块2和大块3第一次交换物理块的LUN是LUN0,大块2和大块3第二次交换物理块的LUN是LUN1,因此,第一次交换物理块和第二次交换物理块(即前后两次交换物理块)的LUN可以是不同的。
作为又一个实施例,在图7的NAND块动态映射表中,选取出存储设备中好块数量最多与最少的大块,分别是大块0与大块3(各自有5个好块)与大块2(3个好块)。由于好块数量最多与最少的大块之间,其好块数量的差(5-3=2)大于阈值(作为举例,阈值为1),因此,需要继续执行NAND块动态重映射方法。选取大块0与大块3之一,同大块2交换好块与坏块,作为举例,这里选择大块0。由于LUN0为大块0与大块2提供的都是好块,LUN1为大块0与大块2提供的都是坏块,无法交换,因而选择LUN2,交换其提供给大块0的好块(物理块0)和大块2的坏块(物理块2(x)),交换后,如图8所示,大块0的好块数量和大块2的好块数量均为4。
如图8所示,好块数量最多与最少的大块之间,其好块数量的差值(5-4=1)不大于阈值(作为举例,阈值为1),则完成对NAND块的动态重映射方法。
作为本发明的一个具体实施例,在图5所示基础上,可以选出好块数量最多的大块与好块数量最少的大块,通过一个物理块的交换,即大块2和大块3在LUN0内交换好块和坏块,得到图7所示,之后再次根据新的好块最多的大块与好块最少的大块进行第二次一个物理块的交换,即大块2和大块0在LUN2内交换好块和坏块,得到图8所示。可理解,前后两次交换物理块可以是不同的大块,在不同的LUN内进行交换,以图7和图8所示为例,确定需要交换2个物理块后只需要直接按数量进行交换即可。根据本申请的实施例的不同交换方式,目的在于使得各大块的好块数量尽量保持均衡。上面通过图6到图8给出的实施方式仅作为举例,本领域技术人员将意识到其他方式来实现本申请的技术目的。本申请示例仅是一个具体的例子,而不作为限制本发明的实施例必须为如下具体的步骤、数值、条件、数据、顺序等等。本领域技术人员可以通过阅读本说明书来运用本发明的构思来构造本说明书中未提到的更多实施例。
需要说明的是,对于如何选择需要进行交换的大块,除了采用上述选择好块数量最多和最少的大块这种方式,还可以采用其他方式,如基于好块数量平均值进行重分配。作为本发明的一个具体实施例,计算各大块中好块数量的平均值,将各大块中好块数量大于平均值的确定为第一大块,将各大块中好块数量小于平均值的确定为第二大块。
作为本发明的具体实施例,对交换后的各大块内好块的数量的最大值和最小值的差值与第一阈值进行比较,如果最大值与最小值的差值大于第一阈值,则重复根据大块内好块的数量,对不同大块内的好块与坏块进行重映射,直到最大值与最小值的差值不大于第一阈值,完成重映射。
作为本发明的另一个具体实施例,计算交换后第一大块中好块的数量与所述平均值的差值和第二大块中好块的数量与所述平均值的差值,分别为第一差值和第二差值,如果第一差值和第二差值均大于第二阈值,则重复根据大块内好块的数量,对不同大块内的好块与坏块进行重映射,直到第一差值和第二差值不大于第二阈值,完成重映射。
例如,根据存储设备中各大块的好块数量之和,计算出各大块的好块数量平均值。对于好块数量超出好块数量平均值的各大块,从其中取出超额部分作为待重分配好块,并将待重分配好块分配给好块数量小于好块数量平均值的各大块,以使得好块数量小于好块数量平均值的大块的好块数量增加以接近好块数量平均值,并将好块的取出与分配结果记录在NAND块动态映射表中。根据平均值,可快速计算出各个大块中好块数量与平均值的差值,从而快速识别出好块数量较多的大块和好块数量较少的大块,以简单快速的从好块数量较多的大块中获取到待分配的好块,将待分配好块分配给好块数量较少的大块,且根据大块中好块与平均值的差值,能够准确快速的获取待分配好块的数量,以分配给好块数量较少的大块,提高了重映射效率。
在根据本申请的进一步的实施例中,在存储设备的使用过程中,可选地,仅对NAND块动态映射表中的尚未被写入数据的空闲大块实施NAND块的动态重映射方法,而对已写入数据的大块不进行NAND块的动态重映射方法,以避免破坏其页条带中以形成的数据冗余校验关系。
作为本发明的具体实施例,对NAND块的动态重映射方法完成后,将最新的NAND块动态映射表(图6或图8)存储在NAND中,以便存储设备下次上电时能获取该NAND块动态映射表,以获取各大块的构造方式。通过实施上述NAND块动态重映射方法,使得存储设备的各大块所包括的好物理块数量彼此接近,从而使得由来自不同的大块的页条带承载写入数据时,存储设备的写性能保持稳定,有较好的一致性,降低抖动,提升了用户体验。
实施例二
本申请还提供一种存储设备,包括控制部件和存储芯片;在存储设备使用期间,周期性地实施NAND块的动态重映射方法,或者响应于识别出坏块,而在NAND块动态映射表中记录坏块后,再检查是否需要执行NAND块的动态重映射方法,即判断所有大块中每两个大块的好块的相差数量是否大于阈值,若是,则继续执行NAND块的动态重映射方法,若否,则结束NAND块动态重映射方法。
实施例三
如图11所示,本申请还提供一种写命令处理方法,该方法包括如下步骤:
步骤S210,从NAND块动态映射表中获取空闲大块。
作为本发明的具体实施例,NAND块动态映射表提供了动态重映射后的各大块的物理块构成,以及根据大块的物理块构成得到各页条带。例如,从构成大块的每个物理块中获取具有相同索引的物理页来得到页条带,大块的每个物理块为页条带提供一个物理页。
步骤S220,从空闲大块中获取页条带(xpage)。
具体的,从NAND块动态映射表中获取空闲大块(代表空闲大块的大块索引),以及从空闲大块获取页条带,页条带用于为承载主机写命令要写入的数据。
步骤S230,存储设备获取主机发送的写命令。
步骤S240,将写命令的数据按照页条带组装。
具体的,将写命令要写入的数据按获取的页条带的规格组装。
步骤S250,将组装后的数据写入获取的页条带。
在凑满属于一个页条带的数据后,将组装后的数据写入页条带。避免了页条带写入数据不足后的空间回收流程。
作为本发明的具体实施例,从所获取的大块获取下一个页条带来承载要写入的数据。
由于从NAND块动态映射表中获取的各空闲大块具有大体相同的好块数量,从而各页条带具有大体相同的容量与并行度(为页条带提供物理页的LUN的数量)。从而向各页条带写入数据时,具有大体相同的写性能,保证了存储设备性能的稳定,降低了抖动。
实施例四
本申请还提供一种擦除大块处理方法,当存储设备要擦除大块时,需要访问NAND块动态映射表,根据要擦除的大块的索引访问NAND块动态映射表,从中获取构成要擦除大块的各个好块(对坏块避免实施擦除操作),并向获取的各个好块发出擦除命令来完成对大块的擦除。
如图12所示,一种擦除大块处理方法包括如下步骤:
步骤S310,获取待擦除大块索引。
步骤S320,根据NAND块动态映射表,获取待擦除大块的各个好块。
步骤S330,向各个好块发出擦除命令。
实施例五
如图13所示,本申请提供一种读命令处理方法,该方法包括如下步骤:
步骤S410,存储设备获取主机发送的读命令。
步骤S420,根据读命令,从物理页读出数据。
步骤S430,判断读出的数据是否存在错误,若是,则执行步骤S440,否则,无需获取大块。
步骤S440、根据NAND块动态映射表获取出错的物理页所属的大块。
步骤S450,从获取大块中各个好块中获取页条带。
步骤S460,利用获取的页条带重建出错的数据。
步骤S470,更新NAND块动态映射表。
具体的,当存储设备收到读命令,从NAND指定的物理页获取读命令所需的数据。若读出的数据存在错误,并且需要通过页条带提供的RAID能力(数据冗余能力)恢复数据时,获取指定的物理页所处物理块,访问NAND块动态映射表从中获取该物理块所在的大块,以及构成该大块的所有好物理块。该指定物理页所属的页条带由这些好物理块提供。例如,指定物理页的页索引为P,则这些好物理块各自的索引为P的物理页与该指定物理页共同构成了页条带。利用页条带重建存在错误的数据。
可选地,还将该指定物理页所属的物理块标记为坏块,并相应地更新NAND块动态映射表。
本申请的NAND块动态重映射方法能够解决大块中坏块过于集中的问题,避免了数据写入时,正好将数据写入坏块数量较多大块RAID(磁盘阵列)条带,造成写入性能抖动。
如图9所示,由大块构造的页条带最初是31+1的RAID组(RAID组数仅示意),如果大块0中有一个坏块,RAID组为30+1,如果大块1有3个坏块,RAID组为28+1,如果大块2有4个坏块,RAID组会降低到27+1,大块页条带组成的RAID组数不同。而经过NAND块动态映射后,可以实现不同大块中好的NAND块数量均衡性,由大块页条带组成的RAID组成数量平均,如图10所示,在LUN0中,对大块0的有效物理块与大块4的坏块进行交换;在LUN1中,对大块3和有效物理块和大块2的坏块进行交换;在LUN2中,将大块5的有效物理块和大块2的坏块进行交换;在LUN3中,将大块3的有效物理块和大块1的坏块进行交换;RAID组数都平均为29+1(或28+1),从而保证写性能一致性。
作为本发明的具体实施例,本发明实现上述方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
本申请实现的有益效果如下:
(1)本申请通过实施NAND块动态重映射方法,使得存储设备的各大块所包括的好块数量彼此接近,从而使得由来自不同的大块的页条带承载写入数据时,存储设备的写性能保持稳定,有较好的一致性,降低抖动,提升了用户体验。
(2)本申请对NAND块的动态重映射方法完成后,将最新的NAND块动态映射表存储在NAND中,以便存储设备下次上电时能获取该NAND块动态映射表,以获取各大块的构造方式。
(3)本申请的NAND块动态重映射方法中,所有好的NAND块都会被使用,为SSD提供冗余空间。
(4)本申请的NAND块动态重映射方法能自适应不同厂商、不同代、不同批次闪存(NAND Flash),从而实现不同产品线中算法一致性,降低SSD固件开发、维护成本。
以上所述仅为本发明的实施方式而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理内所做的任何修改、等同替换、改进等,均应包括在本发明的权利要求范围之内。
Claims (12)
1.一种NAND块动态重映射方法,其特征在于,该方法包括如下步骤:
对不同LUN中相同物理索引的NAND块进行绑定,组成大块;
以大块索引和LUN索引分别为行和列,建立NAND块动态映射表,根据NAND块的物理索引对NAND块动态映射表的表项进行初始化;
获取各大块内好块的数量;
根据各大块内好块的数量,对不同大块内的好块与坏块进行重映射;
更新NAND块动态映射表;
所述根据各大块内好块的数量,对不同大块内的好块与坏块进行重映射包括:
根据各大块内好块的数量确定第一大块和第二大块,其中,第一大块中好块数量大于第二大块中好块数量;
将第一大块内的好块与第二大块内的坏块进行交换,完成重映射。
2.根据权利要求1所述的NAND块动态重映射方法,其特征在于,所述第一大块为所有大块中好块数量最多的大块,所述第二大块为所有大块中好块数量最少的大块。
3.根据权利要求2所述的NAND块动态重映射方法,其特征在于,还包括:
对交换后的各大块内好块数量的最大值和最小值的差值与第一阈值进行比较,如果最大值与最小值的差值大于第一阈值,则重复根据大块内好块的数量,对不同大块内的好块与坏块进行重映射,直到最大值与最小值的差值不大于第一阈值,完成重映射。
4.根据权利要求1所述的NAND块动态重映射方法,其特征在于,还包括:
计算各大块中好块数量的平均值,将各大块中好块数量大于平均值的确定为第一大块,将各大块中好块数量小于平均值的确定为第二大块。
5.根据权利要求4所述的NAND块动态重映射方法,其特征在于,还包括:
对交换后的各大块内好块的数量的最大值和最小值的差值与第一阈值进行比较,如果最大值与最小值的差值大于第一阈值,则重复根据大块内好块的数量,对不同大块内的好块与坏块进行重映射,直到最大值与最小值的差值不大于第一阈值,完成重映射;或
计算交换后第一大块中好块的数量与所述平均值的差值和第二大块中好块的数量与所述平均值的差值,分别为第一差值和第二差值,如果第一差值和第二差值均大于第二阈值,则重复根据大块内好块的数量,对不同大块内的好块与坏块进行重映射,直到第一差值和第二差值不大于第二阈值,完成重映射。
6.根据权利要求1所述的NAND块动态重映射方法,其特征在于,保存所述NAND块动态映射表到NAND和/或SSD系统信息中。
7.根据权利要求1-6中任一项所述的NAND块动态重映射方法,其特征在于,对NAND块动态映射表中尚未被写入数据的空闲大块实施NAND块的动态重映射。
8.根据权利要求1-6中任一项所述的NAND块动态重映射方法,其特征在于,还包括:NAND块动态映射表中对坏块和好块进行标注,或对好块数量进行标注。
9.一种写命令处理方法,在权利要求1-8中任一项所述的NAND块动态重映射方法之后执行,其特征在于,该方法包括如下步骤:
存储设备获取主机发送的写命令,从NAND块动态映射表中获取空闲大块,从空闲大块中获取页条带;
将写命令的数据按照获取的所述页条带组装;
将组装后的数据写入所述页条带。
10.一种读命令处理方法,在权利要求1-8中任一项所述的NAND块动态重映射方法之后执行,其特征在于,该方法包括如下步骤:
存储设备获取主机发送的读命令;
根据读命令,从物理页读出数据,判断读出数据是否存在错误,若是,则根据NAND块动态映射表获取出错的物理页所属的大块,否则,无需获取大块;
从获取大块中的各个好块中获取页条带;
利用获取的页条带重建出错的数据;
更新NAND块动态映射表。
11.一种存储设备,其特征在于,包括控制部件和存储芯片;所述控制部件用于执行权利要求1-8中任一项所述的方法,来管理NAND块动态映射表。
12.根据权利要求11所述的存储设备,其特征在于,该存储设备周期性地实施权利要求1-8中任一项所述的NAND块动态重映射方法,或者
响应于识别出坏块,在NAND块动态映射表中记录坏块后,再判断是否需要执行NAND块动态重映射方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210923986.4A CN115237351B (zh) | 2022-08-02 | 2022-08-02 | Nand块动态重映射、读写命令处理方法及存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210923986.4A CN115237351B (zh) | 2022-08-02 | 2022-08-02 | Nand块动态重映射、读写命令处理方法及存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115237351A CN115237351A (zh) | 2022-10-25 |
CN115237351B true CN115237351B (zh) | 2023-08-15 |
Family
ID=83676753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210923986.4A Active CN115237351B (zh) | 2022-08-02 | 2022-08-02 | Nand块动态重映射、读写命令处理方法及存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115237351B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986120B (zh) * | 2021-10-09 | 2024-02-09 | 至誉科技(武汉)有限公司 | 存储设备的坏块管理方法、系统及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1745433A (zh) * | 2002-12-09 | 2006-03-08 | 桑迪士克股份有限公司 | 对非易失性存储器中缺陷的区界调整 |
CN101788890A (zh) * | 2009-01-23 | 2010-07-28 | 普安科技股份有限公司 | 在一储存系统架构下产生一虚拟卷的方法及数据存取方法 |
CN112612418A (zh) * | 2020-12-25 | 2021-04-06 | 航天信息股份有限公司 | 一种用于大容量NandFlash坏块管理的方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8930307B2 (en) * | 2011-09-30 | 2015-01-06 | Pure Storage, Inc. | Method for removing duplicate data from a storage array |
-
2022
- 2022-08-02 CN CN202210923986.4A patent/CN115237351B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1745433A (zh) * | 2002-12-09 | 2006-03-08 | 桑迪士克股份有限公司 | 对非易失性存储器中缺陷的区界调整 |
CN101788890A (zh) * | 2009-01-23 | 2010-07-28 | 普安科技股份有限公司 | 在一储存系统架构下产生一虚拟卷的方法及数据存取方法 |
CN112612418A (zh) * | 2020-12-25 | 2021-04-06 | 航天信息股份有限公司 | 一种用于大容量NandFlash坏块管理的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115237351A (zh) | 2022-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110245093A (zh) | 固态存储驱动器阵列中的工作负荷自适应超额配置 | |
US8341336B2 (en) | Region-based management method of non-volatile memory | |
CN109977034B (zh) | 数据储存装置以及非挥发式存储器操作方法 | |
US20070288711A1 (en) | Snapshot copy management method used for logic volume manager | |
US8392797B2 (en) | Error correcting controller, flash memory chip system, and error correcting method thereof | |
CN112416242A (zh) | 数据存储设备及其操作方法 | |
CN110806839B (zh) | 存储控制的方法、记忆装置、存储器控制器及存储服务器 | |
CN104050097A (zh) | 在具有不同的最小可寻址数据单元大小的非易失性存储器单元之间进行选择 | |
US20190332331A1 (en) | Memory management method and storage controller | |
US8892812B2 (en) | Flash memory device and data writing method for a flash memory | |
US8074128B2 (en) | Block management and replacement method, flash memory storage system and controller using the same | |
CN112463647A (zh) | 使用散列来减小前向映射表的大小 | |
CN111651371A (zh) | 非对称型平面管理方法以及数据存储装置及其控制器 | |
CN111124262A (zh) | 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质 | |
CN108491290B (zh) | 一种数据写入方法及装置 | |
CN115237351B (zh) | Nand块动态重映射、读写命令处理方法及存储设备 | |
CN115437580A (zh) | 一种数据存储设备的管理方法、系统及数据存储设备 | |
US20140089566A1 (en) | Data storing method, and memory controller and memory storage apparatus using the same | |
US11934264B2 (en) | ECC parity biasing for Key-Value data storage devices | |
CN112131040B (zh) | 一种智能卡掉电备份区的磨损均衡管理方法和系统 | |
CN111338846B (zh) | 一种基于多核恢复l2p表的方法和装置 | |
US7330955B2 (en) | Recovery record for updating a system configuration | |
US10338850B2 (en) | Split-page queue buffer management for solid state storage drives | |
CN114063919B (zh) | 用于ssd的物理块分配顺序获取方法及数据恢复方法 | |
US11762735B2 (en) | Interleaved ECC coding for key-value data storage devices |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |