一种提高Block使用率的方法、装置及系统与流程

文档序号:14443981阅读:277来源:国知局
一种提高Block使用率的方法、装置及系统与流程

本申请涉及半导体技术领域,尤其涉及一种提高block使用率的方法、装置及系统。



背景技术:

在ssd(solidstatedrives,固态硬盘)实际的使用场景中,通常会将多个block(块,nandflash中擦除的基本单元)绑到一起并行操作,以实现nandflash(快闪记忆体)的multi-planeoperation(多平面操作)的特性。这种特性在单次执行操作的时候,对多个物理block进行基本操作,可以提高单次操作的数据量、带宽和效率,目前,主流的multi-plane为4-plane、2-plane等,即4个物理block和2个物理block并发操作,其中,一个plane(平面)对应于一个block。

目前,ssd上的multi-plane操作多是依赖于nandflash的unaligned-planeoperation(不对齐平面操作)的特性,unaligned-planeoperation是指不是同一行的block也可以组成多plane结构进行操作,这样对于nandflash不支持unaligned-planeoperation的情况,ssd进行multi-plane操作的可行性会降低;另外,在nandflash不支持unaligned-planeoperation的情况下,如果有一个物理block损坏,multi-plane操作下的多个block都会被标记为坏块而不被使用,使好的物理block浪费,影响ssd内部容量的冗余,即使目前有使用好的block对坏的block进行替换的操作,也会造成额外的开销,造成不必要的浪费。

可见,目前使用的multi-plane操作过多依赖于nandflash的unaligned-planeoperation的特性,同时,为了维护unaligned-plane,还要过多浪费额外的开销。



技术实现要素:

本申请提供了一种提高block使用率的方法、装置及系统,以解决目前使用的multi-plane操作过多依赖于nandflash的unaligned-planeoperation的特性和过多浪费额外的开销的问题。

第一方面,本申请提供了一种提高block使用率的方法,包括:

获取数据存储指令;

根据所述数据存储指令,遍历nandflash中第一multi-plane的所有block,确定坏block所在的位置,其中,每一个所述block对应一个plane;

降低所述plane中planeaddress的比特数量,得到第二multi-plane;

将所述坏block在所述第二multi-plane中排除,得到可用block集合;

向所述block集合中存入数据。

可选的,所述第一multi-plane为包含多个plane集合的集合,其中,所述plane集合为多个block并行绑定的集合。

可选的,所述第二multi-plane中包括多个所述plane集合,其中,所述plane集合为多个block并行绑定的集合或者单个block组成的集合。

可选的,所述根据所述数据存储指令,遍历nandflash中第一multi-plane的所有block,确定坏block所在的位置的步骤包括:

标记第一multi-plane中的所有block,使所有block带有标记信息,其中,标记信息与所述block的位置对应;

根据所述数据存储指令,遍历nandflash中第一multi-plane的所有block;

如果存在坏block,则读取所述坏block的标记信息,确定坏block所在的位置。

可选的,所述planeaddress是从blockaddress的尾部划分出来的,以及,所述planeaddress的比特数量是指所述planeaddress的地址位长度。

第二方面,本申请提供一种提高block使用率的装置,包括:

指令获取单元,用于获取数据存储指令;

扫描单元,用于根据所述数据存储指令,遍历nandflash中第一multi-plane的所有block,确定坏block所在的位置,其中,每一个所述block对应一个plane;

控制单元,用于降低所述plane中planeaddress的比特数量,得到第二multi-plane;整合单元,用于将所述坏block在所述第二multi-plane中排除,得到可用block集合;

存储单元,用于向所述block集合中存入数据。

可选的,所述扫描单元还包括:

标记单元,用于标记第一multi-plane中的所有block,使所有block带有标记信息,其中,标记信息与所述block的位置对应;

遍历单元,用于根据所述数据存储指令,遍历nandflash中第一multi-plane的所有block;

定位单元,用于如果存在坏block,则读取所述坏block的标记信息,确定坏block所在的位置。

第三方面,本申请提供一种提高block使用率的系统,包括:

主控器和nandflash;

所述主控器,用于

获取数据存储指令;

根据所述数据存储指令,遍历nandflash中第一multi-plane的所有block,确定坏block所在的位置,其中,每一个所述block对应一个plane;

降低所述plane中planeaddress的比特数量,得到第二multi-plane;

将所述坏block在所述第二multi-plane中排除,得到可用block集合;

向所述block集合中存入数据;

所述nandflash,用于存储数据。

由以上技术方案可知,本申请提供了一种提高block使用率的方法、装置及系统,获取数据存储指令之后,遍历nandflash中第一multi-plane的所有block,确定坏block所在的位置,然后降低plane中planeaddress的比特数量,得到第二multi-plane,将坏block在第二multi-plane中排除,得到可用block集合,最后向block集合中存入数据。本申请提供的方法、装置及系统,可以通过降低planeaddress比特数量的方法,将多plane的block结构,转换成单block的结构,这样,即使多plane的block结构中存在坏block,也不影响其他block的使用,即使nandflash不支持unaligned-planeoperation特性,也可以提高block的使用率,同时不需要额外的维护开销。

附图说明

为了更清楚地说明本申请的技术方案,下面将对实施案例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种提高block使用率的方法流程图;

图2为本申请实施例提供的第二种提高block使用率的方法流程图;

图3为本申请实施例中的2-plane的结构图;

图4为本申请实施例中提供的blockaddress的地址结构图;

图5为本申请实施例中的single-plane的结构图;

图6为本申请实施例中的4-plane的结构图;

图7为本申请实施例中由4-plane转换而来的2-plane的结构图;

图8为本申请实施例提供的一种提高block使用率的装置的结构图;

图9为本申请实施例提供的扫描单元的结构图;

图10为本申请实施例提供的一种提高block使用率的系统的结构图。

具体实施方式

为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。

在ssd实际使用场景中,会遇到一些坏block比较多的nandflash,而由于nandflash的multi-planeoperation特性,实际上是把多个物理block绑定在一起进行操作,所以,即便只有单个物理block坏了,multi-plane下的多个block都会被标记为坏block,而不被使用,这种对好的物理block的浪费,会影响ssd内部容量的冗余,甚至导致ssd量产容量达不到要求,导致量产失败。其中multi-plane可以理解为多plane的结构。

参见图1,为本申请实施例提供的一种提高block使用率的方法流程图,包括:

步骤101,获取数据存储指令。数据存储指令通常是由ssd内的主控器发送给nandflash。

步骤102,根据所述数据存储指令,遍历nandflash中第一multi-plane的所有block,确定坏block所在的位置,其中,每一个所述block对应一个plane。

具体的,所述第一multi-plane为包含多个plane集合的集合,其中,所述plane集合为多个block并行绑定的集合。

步骤103,降低所述plane中planeaddress的比特数量,得到第二multi-plane。

具体的,所述第二multi-plane中包括多个所述plane集合,其中,所述plane集合为多个block并行绑定的集合或者单个block组成的集合。所述planeaddress是从blockaddress的尾部划分出来的,以及,所述planeaddress的比特数量是指所述planeaddress的地址位长度。

步骤104,将所述坏block在所述第二multi-plane中排除,得到可用block集合。

步骤105,向所述block集合中存入数据。

本申请提供的方法,可以通过降低planeaddress比特数量的方法,将多plane的block结构,转换成单block的结构,这样,即使多plane的block结构中存在坏block,也不影响其他block的使用,即使nandflash不支持unaligned-planeoperation特性,也可以提高block的使用率,同时不需要额外的维护开销。

参见图2,为本申请实施例提供的第二种提高block使用率的方法流程图,包括:

步骤201,获取数据存储指令。数据存储指令通常是由ssd内的主控器发送给nandflash。

步骤202,标记第一multi-plane中的所有block,使所有block带有标记信息,其中,标记信息与所述block的位置对应。

具体的,所述第一multi-plane为包含多个plane集合的集合,其中,所述plane集合为多个block并行绑定的集合。

步骤203,根据所述数据存储指令,遍历nandflash中第一multi-plane的所有block。

步骤204,如果存在坏block,则读取所述坏block的标记信息,确定坏block所在的位置。

步骤205,降低所述plane中planeaddress的比特数量,得到第二multi-plane。

具体的,所述第二multi-plane中包括多个所述plane集合,其中,所述plane集合为多个block并行绑定的集合或者单个block组成的集合。所述planeaddress是从blockaddress的尾部划分出来的,以及,所述planeaddress的比特数量是指所述planeaddress的地址位长度。

步骤206,将所述坏block在所述第二multi-plane中排除,得到可用block集合。

步骤207,向所述block集合中存入数据。

本申请提供的方法,可以通过降低planeaddress比特数量的方法,将多plane的block结构,转换成单block的结构,这样,即使多plane的block结构中存在坏block,也不影响其他block的使用,即使nandflash不支持unaligned-planeoperation特性,也可以提高block的使用率,同时不需要额外的维护开销。

具体的,上述两种实施例中,ssd中nandflash的存储结构是相同的,在使用ssd的场景中,nandflash中第一multi-plane的形式可以有多种,例如4-plane、2-plane等,其中4-plane为4个block并行绑定,2-plane为2个block并行绑定,本申请实施例中以4-plane和2-plane为例,对上述两种实施例做进一步地阐述。

如图3所示,本申请实施例中的nandflash中为2-plane结构,包括6个block,每一个block对应一个plane,并且,将这6个block分成3组plane集合,每个plane集合包括并行绑定的2个block,如果将每个block都标记上信息,则6个block分别为block1、block2、block3、block4、block5和block6,并且,所有block按照标记信息依次确定位置。

首先,ssd内的主控器先接收数据存储指令再发送给nandflash,使nandflash先对内部的物理block进行扫描,判断是否存在坏的block;本示例中,先对nandflash中2-plane集合中的所有block标记,确定block的位置,再扫描2-plane集合,如果发现坏block,则找出坏block的位置,如,block2为坏block。

然后降低planeaddress的比特数量,得到single-plane(单平面)。

通常planeaddress占blockaddress的后几位,便于寻址操作,如图4所示。本实施例中根据planeaddress的比特数量进行寻址,即采用planeaddressbit(s)进行寻址。对于本申请的2-plane而言,planeaddressbit(s)为1,即2个并行绑定的block的地址分别为0和1。

然而,前面介绍过,现有的multi-plane下的结构,如果只发现单个物理block坏了,multi-plane下的多个block都会被标记为坏block,而不被使用,所以如果block2为坏block,那么与block2连接的block1也会被标记为坏块,这样会造成block1的浪费。

所以,本申请进一步将planeaddress的比特数量降低,也就是使planeaddressbit(s)降低,将multi-plane转换成single-plane,使block1、block2、block3、block4、block5和block6为单独的块单元,如图5所示,最后planeaddressbit(s)为0。

将multi-plane转换成single-plane之后,每个block可作为单独的单元,这样即使block2是坏块,也不影响block1的使用,在single-plane中将block2除去,将数据按照剩下block的顺序,存入nandflash中。

如图6所示,本申请实施例中的nandflash中为4-plane结构,包括8个block,每一个block对应一个plane,并且,将这8个block分成2组plane集合,每个plane集合包括并行绑定的4个block,并对所有block标记。

首先,ssd内的主控器先接收数据存储指令再发送给nandflash,使nandflash先对内部的物理block进行扫描,判断是否存在坏的block;本示例中,先对nandflash中4-plane集合中的所有block标记,确定block的位置,再扫描4-plane集合,如果发现坏block,则找出坏block的位置,如,block2为坏block。

然后降低planeaddress的比特数量,得到第二multi-plane,即2-plane。

对于4-plane的情况而言,planeaddressbit(s)为2,即planeaddress的比特数量为2,这样采用planeaddressbit(s)可寻到的地址为00、01、10和11,再由于这四个地址分别对应于4-plane集合中一个plane集合的4个block,所以并行绑定的4个block的地址分别为00、01、10和11。

然而,前面介绍过,现有的multi-plane下的结构,如果只发现单个物理block坏了,multi-plane下的多个block都会被标记为坏block,而不被使用,所以如果block2为坏block,那么与block2连接的block1、block3和block4也会被标记为坏块,这样会造成block的浪费。

所以,本申请进一步将planeaddress的比特数量降低,也就是使planeaddressbit(s)降低,将4-plane转换成2-plane,使连接在一起的block变少,如图7所示,最后planeaddressbit(s)为2。

将4-plane转换成2-plane之后,这样即使block2是坏块,也不影响block3和block4的使用,在2-plane中将block1和block2的组合除去,将数据按照剩下block的顺序,存入nandflash中,或者再对block1和block2组成的2-plane进行降低planeaddressbit(s)的操作。

本申请实施例提供的这种方法,即使存在坏block,也不影响与之相连的其他的block的使用,大大提升了nandflash中multi-plane结构下,block的使用效率。

另外,对于nand不支持unaligned-plane的情况,本申请也可以很好的利用所有的好物理block。

参见图8,为本申请实施例提供的一种提高block使用率的装置的结构图,包括:

指令获取单元801,用于获取数据存储指令;

扫描单元802,用于根据所述数据存储指令,遍历nandflash中第一multi-plane的所有block,确定坏block所在的位置,其中,每一个所述block对应一个plane;

控制单元803,用于降低所述plane中planeaddress的比特数量,得到第二multi-plane;

整合单元804,用于将所述坏block在所述第二multi-plane中排除,得到可用block集合;

存储单元805,用于向所述block集合中存入数据。

可选的,如图9所示,所述扫描单元802还包括:

标记单元901,用于标记第一multi-plane中的所有block,使所有block带有标记信息,其中,标记信息与所述block的位置对应;

遍历单元902,用于根据所述数据存储指令,遍历nandflash中第一multi-plane的所有block;

定位单元903,用于如果存在坏block,则读取所述坏block的标记信息,确定坏block所在的位置。

参见图10,为本申请实施例提供的一种提高block使用率的系统的结构图,包括:

主控器1001和nandflash1002;

所述主控器1001,用于

获取数据存储指令;

根据所述数据存储指令,遍历nandflash中第一multi-plane的所有block,确定坏block所在的位置,其中,每一个所述block对应一个plane;

降低所述plane中planeaddress的比特数量,得到第二multi-plane;

将所述坏block在所述第二multi-plane中排除,得到可用block集合;

向所述block集合中存入数据;

所述nandflash1002,用于存储数据。

由以上技术方案可知,本申请提供了一种提高block使用率的方法、装置及系统,获取数据存储指令之后,遍历nandflash中multi-plane的所有block,确定坏block所在的位置,然后降低plane中planeaddress的比特数量,得到第二multi-plane,将坏block在第二multi-plane中排除,得到可用block集合,最后向block集合中存入数据。本申请提供的方法、装置及系统,可以通过降低planeaddress比特数量的方法,将多plane的block结构,转换成单block的结构,这样,即使多plane的block结构中存在坏block,也不影响其他block的使用,即使nandflash不支持unaligned-planeoperation特性,也可以提高block的使用率,同时不需要额外的维护开销。

本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围由权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。以上所述的本申请实施方式并不构成对本申请保护范围的限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1