纠错单元管理方法、存储控制芯片及闪存设备与流程
未命名
07-19
阅读:90
评论:0
1.本技术涉及存储设备应用领域,特别是涉及一种纠错单元管理方法、存储控制芯片及闪存设备。
背景技术:
2.闪存设备,例如:固态硬盘(solid state drives,ssd),是采用固态电子存储芯片阵列而制成的硬盘,固态硬盘包括控制单元和存储单元(flash存储芯片或 dram存储芯片)。闪存(nand flash)是固态硬盘的主要存储介质。数据在闪存的最小编程单元(例如:闪存页)内以纠错单元的形式存储,纠错单元由有效数据和校验数据组成,其中,有效数据包括主机数据块。
3.目前,闪存采用的纠错单元管理方法为:将同一类型的主机数据块存储至同一个最小编程单元(例如:闪存页)内,并且同一个最小编程单元内的每个纠错单元的码长相同。
4.然而,当有多命名空间需求时,主机数据块的类型增加,从而使得不同类型的主机数据块对应的有效数据长度不一样,导致形成的纠错单元的纠错强度存在差异。如果仍然采用上述纠错单元管理方法,那么不同的最小编程单元的数据可靠性会有所差异,即纠错强度存在差异,同一个最小编程单元内的各个纠错单元的纠错强度也会不同。当不同类型的主机数据块的数据长度差异越大,纠错强度差异也越明显。
技术实现要素:
5.本技术实施例提供一种纠错单元管理方法、存储控制芯片及闪存设备,以使闪存的最小编程单元内的各个纠错单元的纠错强度均衡,以及闪存的各个最小编程单元的纠错强度均衡,从而提升闪存设备的整体可靠性。
6.本技术实施例提供以下技术方案:第一方面,本技术实施例提供一种纠错单元管理方法,应用于闪存设备,闪存设备包括纠错单元和最小编程单元,纠错单元包括有效数据,纠错单元管理方法包括:根据有效数据的数据长度,对有效数据进行分类,确定多种有效数据类型,并得到每一有效数据类型对应的子集;从不同的子集中选择至少两种不同类型的有效数据,以生成不同类型的纠错单元;组合至少两个不同类型的所述纠错单元,得到一个纠错单元混集,并将纠错单元混集存储至最小编程单元。
7.第二方面,本技术实施例提供一种存储控制芯片,存储控制芯片包括纠错管理单元,纠错管理单元应用如第一方面的纠错单元管理方法,纠错管理单元包括有效数据分类管理模块、纠错单元生成管理模块和纠错单元分类管理模块,其中,有效数据分类管理模块,连接纠错单元生成管理模块,用于对有效数据进行分类,得到每一有效数据类型对应的子集;
纠错单元生成管理模块,连接有效数据分类管理模块与纠错单元分类管理模块,用于从不同的子集中选择至少两种不同类型的有效数据,以生成不同类型的纠错单元;纠错单元分类管理模块,连接纠错单元生成管理模块,用于将纠错单元组合,得到组合数据,并基于纠错单元的类型,对若干个组合数据进行分类,以得到若干个纠错单元混集。
8.在一些实施例中,存储控制芯片还包括数据缓存单元、数据纠错引擎与数据存储单元,其中,数据缓存单元,连接纠错管理单元与数据纠错引擎,用于缓存每一有效数据类型对应的子集;数据纠错引擎,连接数据缓存单元、纠错管理单元与数据存储单元,用于在数据写入时对数据进行编码以生成纠错单元,和/或,在读取数据时对纠错单元进行解码;数据存储单元,连接纠错管理单元与数据纠错引擎,用于将数据存储至闪存或者从闪存中读取数据。
9.第三方面,本技术实施例提供一种闪存设备,包括:如第二方面的存储控制芯片;至少一个闪存介质,与存储控制芯片通信连接。
10.第四方面,本技术实施例还提供了一种非易失性计算机可读存储介质,非易失性计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使闪存设备能够执行第一方面的纠错单元管理方法。
11.本技术实施例的有益效果是:区别于现有技术的情况下,本技术实施例提供一种纠错单元管理方法,该纠错单元管理方法应用于闪存设备,闪存设备包括纠错单元和最小编程单元,纠错单元包括有效数据,纠错单元管理方法包括:根据有效数据的数据长度,对有效数据进行分类,确定多种有效数据类型,并得到每一有效数据类型对应的子集;从不同的子集中选择至少两种不同类型的有效数据,以生成不同类型的纠错单元;组合至少两个不同类型的纠错单元,得到一个纠错单元混集,并将纠错单元混集存储至最小编程单元。
12.通过选择至少两种不同类型的有效数据,生成不同类型的纠错单元,并将组合纠错单元得到的纠错单元混集存储至最小编程单元,本技术能够使得闪存的最小编程单元内的各个纠错单元的纠错强度均衡,并使得闪存的各个最小编程单元的纠错强度均衡,从而提升闪存设备的整体可靠性。
附图说明
13.一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
14.图1是本技术实施例提供的一种闪存设备的结构示意图;图2是本技术实施例提供的一种闪存封装芯片的结构示意图;图3是本技术实施例提供的一种闪存页内存储的纠错单元的类型示意图;图4是本技术实施例提供的一种纠错单元的结构示意图;图5是本技术实施例提供的一种纠错单元管理方法的流程示意图;
图6是本技术实施例提供的不同有效数据类型对应的有效数据的示意图;图7是本技术实施例提供的一种有效数据类型集合的示意图;图8是图5中的步骤s502的细化流程示意图;图9是图8中的步骤s521的细化流程示意图;图10是本技术实施例提供的一种不同类型的有效数据对应的校验数据的数据长度的分布图;图11是图8中的步骤s523的细化流程示意图;图12是图5中的步骤s503的细化流程示意图;图13是本技术实施例提供的不同的纠错单元混集的示意图;图14是本技术实施例提供的另一种闪存页内存储的纠错单元的类型示意图;图15是本技术实施例提供的两种不同的纠错单元管理方法对应的编程单元的示意图;图16是本技术实施例提供的一种纠错单元管理方法的总体流程示意图;图17是本技术实施例提供的一种存储控制芯片的结构示意图;图18是本技术实施例提供的一种纠错管理单元的结构示意图。
具体实施方式
15.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
16.此外,下面所描述的本技术各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
17.下面结合说明书附图具体地阐述本技术的技术方案。
18.请参阅图1,图1是本技术实施例提供的一种闪存设备的结构示意图;如图1所示,闪存设备100包括连接器101、存储控制芯片102、其他外围单元103、缓存单元104和闪存介质105。
19.其中,连接器101,连接存储控制芯片102与主机,用于与主机通信,主机例如:计算机或者服务器;存储控制芯片102,连接连接器101、其他外围单元103、缓存单元104和闪存介质105,用于作为控制运算单元,管理闪存设备的内部系统,存储控制芯片102包括但不限于固态硬盘控制器;外围单元103,连接存储控制芯片102,包括串口、传感器、寄存器、电源芯片等部件;缓存单元104,连接存储控制芯片102,作为缓存、算法表存储单元,缓存单元104一般为动态随机存取存储器(dynamic random access memory,dram)。
20.其中,闪存介质105,作为闪存设备100的存储介质,也称作闪存、flash、flash存储器或flash颗粒,作为存储单元,用于存储用户数据、系统数据等。存储控制芯片102与闪存介质105之间呈现多个通道,一个通道独立连接一个闪存介质,例如:通道0连接一个闪存介质、通道1连接一个闪存介质、
……
、通道x连接一个闪存介质。其中,闪存介质105的特性是写入之前,必须进行擦除,且每个闪存擦除次数有限,一个闪存介质105包括至少一个闪存封装芯片(chip)。
21.请参阅图2,图2是本技术实施例提供的一种闪存封装芯片的结构示意图;如图2所示,一个闪存封装芯片(chip)由多个裸片(die)组成,例如:由裸片0,
……
,裸片n组成;每个裸片由多个分组(plane)组成,例如:由分组0,
……
,分组n组成;每个分组由多个块(block)组成,例如:由块0,
……
,块x,
……
,块n组成;每个块由多个字线(wordline)组成,例如:由字线0,
……
,字线x,
……
,字线n组成;每个字线由1~n个页(page,又称闪存页)组成。对于不同的闪存设备,例如:单层存储单元模式的闪存设备(single level cell flash,slc flash)、双层存储单元模式的闪存设备(multiple level cell flash,mlc flash)、三层存储单元模式的闪存设备(triple level cell flash,tlc flash)、四层存储单元模式的闪存设备(quad-level cell flash,qlc flash),组成一个字线的页的类型和数量也不同,图2中以tlc flash为例,tlc flash的一个字线由最低有效位(least significant bit ,lsb)数据页、中央有效位(central significant bit ,csb)数据页和最高有效位(most significant bit ,msb)数据页组成。其中,n、x、n均为正整数,0《x《n。
22.其中,块是擦除的基本单位,页或者字线是读写的基本单位。当一个存储页或者字线被写入数据后,只有在进行了块擦除后才可进行新的写入操作。可以理解的是,在一些老类型的闪存设备中,闪存封装芯片内无字线,块由多个页组成。
23.由于闪存存储存在误码率,为了数据的正确性,在向闪存页写入用户数据时加入校验数据以对用户数据进行校验保护。数据在闪存页内以纠错单元的形式存储,一个闪存页存储n个纠错单元,纠错单元的数据长度一般为1kb、2kb或4kb。或者,纠错单元跨页存储,然而在跨页读取时需要进行2次页读取,延长读取时间,这样会导致闪存设备的性能低下,故而本技术只考虑在一个闪存页存储n个纠错单元的情况。
24.目前,闪存采用的纠错单元管理方法为:将同一类型的主机数据块存储至同一个最小编程单元(例如:闪存页)内,并且同一个最小编程单元内的每个纠错单元的码长相同。
25.请参阅图3,图3是本技术实施例提供的一种闪存页内存储的纠错单元的类型示意图;如图3所示,在一个最小编程单元内存储若干个同一类型的纠错单元,例如:在一个闪存页内存储若干个纠错单元类型均为0的纠错单元0,或者,在另一个闪存页内存储若干个纠错单元类型均为1的纠错单元1。其中,纠错单元类型相同,即纠错单元的数据长度(码长)相同,纠错单元类型不同,即纠错单元的数据长度(码长)不同,例如:纠错单元0与纠错单元1的数据长度不同。
26.请参阅图4,图4是本技术实施例提供的一种纠错单元的结构示意图;如图4所示,一个闪存页内存储若干个纠错单元类型均为0的纠错单元0,每一纠错单元均由有效数据和校验数据组成。其中,有效数据包括主机数据块、闪存设备的主控制器内部的数据保护信息(internal data protection,idp)、闪存设备的主控制器和主机之间的保护信息(external data protection,edp)和元信息。
27.闪存设备的主控制器内部的数据保护信息一般是循环冗余校验码(cyclic redundancy check,crc)和记忆体保护纠错码(memoryprotectionecc, mpecc),闪存设备的主控制器和主机之间的保护信息一般是dif数据或者dix数据,元信息也称为管理数据或元数据,用于固件算法管理,校验数据用于纠错算法。
28.数据在闪存上按照最小存储单元进行存储,纠错引擎对数据进行处理以生成纠错单元。纠错单元的最大码长(即纠错单元的数据长度)等于最小编程单元的长度除以存储的纠错单元的数量。当码长确定的情况下,码率(有效数据和码长的比例)越低,纠错强度越好,也就是校验数据的数据长度越大(相对而言有效数据长度越短),纠错强度越大,可允许错误数量就越大。
29.然而,当有多命名空间需求时,由于每个命名空间可以指定主机数据类型,主机数据块的类型增加,使得不同类型的主机数据块的数据长度不一致。
30.请参阅表1,表1是本技术实施例提供的纠错单元内的各个数据段的长度的确定条件;表1可以看出,idp、元信息、校验数据对闪存设备而言,是可调整的,主机数据块和edp是由主机确定的,不调整的。因此,主机数据块的类型增加,会使得不同类型的主机数据块对应的有效数据长度不一样,导致形成的纠错单元的纠错强度存在差异。如果仍然将同一类型的主机数据块存储至同一个最小编程单元(例如:闪存页)内,那么不同的最小编程单元的数据可靠性会有所差异,即页之间的数据可靠性有所差异;如果仍然使得同一个最小编程单元内的每个纠错单元的码长相同,那么会导致同一个最小编程单元内的各个纠错单元的纠错强度不同。当主机数据块的大小差异越大,纠错强度的差异也越明显。
31.因此,本技术实施例提供一种纠错单元管理方法,通过选择至少两种不同类型的有效数据,生成不同类型的纠错单元,并将组合纠错单元得到的纠错单元混集存储至最小编程单元,本技术能够使得闪存的最小编程单元内的各个纠错单元的纠错强度均衡,并使得闪存的各个最小编程单元的纠错强度均衡,从而提升闪存设备的整体可靠性。
32.请参阅图5,图5是本技术实施例提供的一种纠错单元管理方法的流程示意图;其中,该纠错单元管理方法,应用于闪存设备,闪存设备包括纠错单元和最小编程单元,纠错单元包括有效数据。
33.如图5所示,该纠错单元管理方法,包括:步骤s501:根据有效数据的数据长度,对有效数据进行分类,确定多种有效数据类型,并得到每一有效数据类型对应的子集;具体的,闪存设备接收主机发送的若干个有效数据,其中,每一有效数据均包括主机数据块、元信息、闪存设备的主控制器内部的数据保护信息(internal data protection,idp)。
34.在一些实施例中,每一有效数据还包括闪存设备的主控制器和主机之间的保护信息(external data protection,edp)。
35.由于主机数据块的类型不同(即数据长度不同),不同类型的主机数据块对应的有效数据类型不同,其中,主机数据块的类型由主机数据类型确定。
36.因此,根据有效数据的数据长度,对有效数据进行分类,确定多种有效数据类型,其中,同一种有效数据类型对应的有效数据的数据长度相同,同一种有效数据类型对应的
有效数据内的主机数据块的数据长度相同。
37.请参阅图6,图6是本技术实施例提供的不同有效数据类型对应的有效数据的示意图;在本技术实施例中,对有效数据的数据长度不做限制,下面以有效数据的数据长度为4kb为例进行说明。可以理解的是,这里的4kb是指虚数概念,其具体值可能大于4096bytes,例如:(4096+8) bytes,(4096+16 )bytes, (4096+32)bytes,
……
,(4096+256bytes)等。
38.如图6所示,每一有效数据类型对应的有效数据由主机数据类型对应的主机数据块、idp和元信息组成。在本技术的一些实施例中,主机数据块可以包括edp。对于有效数据类型0对应的有效数据,主机数据类型0对应的主机数据块仅包括512b的数据;对于有效数据类型1对应的有效数据,主机数据类型1对应的主机数据块包括512b的数据和edp;对于有效数据类型2对应的有效数据,主机数据类型2对应的主机数据块仅包括4kb的数据;对于有效数据类型3对应的有效数据,主机数据类型3对应的主机数据块包括4kb的数据和edp。
39.可以看出,不同主机数据类型对应的主机数据块的数据长度不同,从而使得由该主机数据块组成的有效数据对应的有效数据类型不同。
40.请参阅表2,表2是本技术实施例提供的不同类型的有效数据的数据长度;在本技术实施例中,以有效数据由主机数据块、edp、idp和元信息组成为例进行说明。
41.表2以典型的最小编程单元大小为例,其数据大小为16kb(16384bytes=16x1024bytes),冗余区为1952bytes。该编程单元放4个相同数据长度的纠错单元,那么每一个纠错单元的码长为(16384+1952)bytes/4=(4096+488)bytes=4584bytes。结合表2,可计算得到对应的校验数据长度,如表3所示。
42.请参阅表3,表3是本技术实施例提供的最小编程单元为16kb时不同类型的有效数据的数据长度;表3
根据纠错算法,可知:在有效数据的数据长度确定的情况下,校验数据越长,纠错单元的纠错能力越好。从表3中,可见序号3的码长最短,校验数据只有160bytes,因此,纠错能力最差;而序号4的码长最长,校验数据有464bytes,因此,纠错能力最强。
43.显然如果能够将序号3、4的有效数据,存放到同一个最小编程单元,并加以管理:通过调整给予的校验数据空间,从而形成各自合适的码长的纠错单元,以达到纠错能力的均衡。
44.基于此,本技术在完成对有效数据进行分类,确定多种有效数据类型后,将同一种有效数据类型对应的若干个有效数据划分至同一个子集内,进而得到每一有效数据类型对应的子集,其中,若干个子集构成一个有效数据类型集合。
45.请参阅图7,图7是本技术实施例提供的一种有效数据类型集合的示意图;如图7所示,一个有效数据类型集合中包括n+1个子集,例如:子集0、子集1、子集2、子集3、
……
、子集n,子集0包括有效数据类型为0的有效数据,子集1包括有效数据类型为1的有效数据,子集2包括有效数据类型为2的有效数据,子集3包括有效数据类型为3的有效数据,
……
,子集n包括有效数据类型为n的有效数据。
46.进一步地,在得到每一有效数据类型对应的子集后,依次进入步骤s502与步骤s503,以在一个最小编程单元内存储至少两种类型的纠错单元,从而实现对不同类型的主机数据块组成的有效数据,进行纠错单元级别的纠错能力均衡。
47.步骤s502:从不同的子集中选择至少两种不同类型的有效数据,以生成不同类型的纠错单元;具体的,纠错单元的数据长度小于最小编程单元的数据长度,不同类型的纠错单元的码长不同。从不同的子集中选择至少两种不同类型的有效数据,根据每一有效数据的数据长度,确定每一有效数据对应的校验数据的数据长度,生成每一有效数据对应的纠错单元,从而得到至少两个不同类型的纠错单元,其中,每一纠错单元均包括有效数据和校验数据,不同类型的有效数据对应的纠错单元的类型不同,即数据长度不同。
48.请参阅图8,图8是图5中的步骤s502的细化流程示意图;如图8所示,步骤s502:从不同的子集中选择至少两种不同类型的有效数据,以生成不同类型的纠错单元,包括:步骤s521:根据每一子集内的有效数据的数据长度,从有效数据类型集合中选择n个子集;具体的,n为一个最小编程单元对应的有效数据的种类数, n为正整数且n2。在确定一个最小编程单元内存储的有效数据的种类数n的具体数值后,根据每一子集内的有效数据的数据长度,从有效数据类型集合中选择n个子集。
49.例如:确定一个最小编程单元内存储2种类型的有效数据后,根据每一子集内的有效数据的数据长度,从集合中选择2个子集;或者,确定一个最小编程单元内存储3种类型的有效数据后,根据每一子集内的有效数据的数据长度,从集合中选择3个子集。
50.请参阅图9,图9是图8中的步骤s521的细化流程示意图;如图9所示,步骤s521:根据每一子集内的有效数据的数据长度,从有效数据类型集合中选择n个子集,包括:步骤s5211:按照每一子集内的有效数据的数据长度从大到小的顺序,对子集进行序号递增排列,得到子集序列;例如:子集序列由第一子集、第二子集、
……
、第m子集组成,其中,m为正整数且m2,第一子集为有效数据的数据长度最大的子集,第m子集为有效数据的数据长度最小的子集。
51.步骤s5212:从子集序列中选择一个序列号最小的子集和一个序列号最大的子集,并在子集序列中删除已选择的子集,以更新子集序列;具体的,序列号最小的子集为在子集序列中有效数据的数据长度最大的子集,序列号最大的子集为在子集序列中有效数据的数据长度最小的子集。例如:当n=2时,从子集序列中选择一个序列号最小的子集和一个序列号最大的子集,得到两个子集,然后进入步骤s522;当n》2时,从子集序列中选择一个序列号最小的子集和一个序列号最大的子集,并在子集序列中删除已选择的子集,得到更新后的子集序列。
52.步骤s5213:从更新后的子集序列中依次选择一个序列号最小的子集和一个序列号最大的子集,直至得到n个子集。
53.例如:n》2时,在步骤s5212得到2个子集后,从更新后的子集序列中依次选择一个序列号最小的子集和一个序列号最大的子集,直至得到n个子集。
54.步骤s522:分别从每一个被选择的子集中获取一个有效数据,得到n个不同类型的有效数据;具体的,每一子集内的有效数据的数据长度相同,不同子集的有效数据的数据长度不同,分别从每一个被选择的子集中获取一个有效数据,得到n个不同类型的有效数据,即n个不同数据长度的有效数据。
55.在本技术实施例中,通过重复从当前的子集序列中选择一个序列号最小的子集和一个序列号最大的子集,直至得到n个子集,并分别从每一个被选择的子集中获取一个有效数据,得到n个不同类型的有效数据,本技术能够选取数据长度大和数据长度小的有效数据进行组合,从而达到有效数据的数据长度平均化,进而分配平均化的校验数据长度。
56.步骤s523:根据n个不同类型的有效数据的数据长度,确定每一有效数据对应的校验数据的数据长度,以生成不同类型的纠错单元。
57.具体的,每一纠错单元均包括有效数据和校验数据,校验数据通过对有效数据进行纠错编码得到。其中,校验数据的数据长度大于或等于最小校验数据长度。
58.对于一个闪存设备,其纠错引擎能力是确定的,其纠错能力通过校验数据的长度体现,校验数据长度(字节数)与码字纠错能力的关系,如下:
其中,表示校验数据长度,表示参数因子,表示基于码字纠错能力的数学关系表达式,表示码字纠错能力,即某种码字可以纠错的比特数目。
59.其中,校验数据长度一般表达为:某种码字可以纠错多少比特,则需要多少字节数的校验数据。和成正比关系,即纠错能力越强,需要的校验数据的字节数越多。
60.因此,当闪存设备确定使用的闪存时,闪存对纠错能力的要求也是确定的,那么最小校验数据长度与闪存要求的纠错能力的关系,如下:其中,表示最小校验数据长度,表示参数因子,表示基于闪存要求的码字纠错能力的数学关系表达式,表示闪存要求的码字纠错能力,即闪存设定的某种码字可以纠错的比特数目。
61.可以理解的是,上述函数也是纠错引擎的一种函数表达式,其中,由闪存供应商提供具体值,由纠错引擎的算法所确定,在本技术实施例中不做限制,可由本领域技术人员根据实际情况进行设置,在本技术实施例中不做限制,故而可以确定最小校验数据长度。
62.请参阅图10,图10是本技术实施例提供的一种不同类型的有效数据对应的校验数据的数据长度的分布图;如图10,不同类型(不同数据长度)的有效数据对应的校验数据的数据长度不同,且校验数据的数据长度均大于最小校验数据长度。并且,这些校验数据的数据长度处于参考平均有效数据长度的偏差阈值范围内,即满足:,其中,表示第i个校验数据的数据长度,表示参考平均校验数据长度,满足:其中,表示偏差阈值,表示参考平均校验数据长度,表示最小校验数据长度。
63.其中,参考平均校验数据长度根据下述公式计算得到:其中,表示参考平均校验数据长度,表示最小编程单元的数据长度,表示一个最小编程单元存储的码字的数量,表示参考平均有效数据长度。
64.其中,参考平均有效数据长度根据下述公式计算得到:其中,表示参考平均有效数据长度,表示闪存设备能够支持的有效数据的
数据长度的种类数,表示第i个有效数据的数据长度。
65.可以理解的是,如果所有的有效数据能够用接近参考平均有效数据长度的字节数作为校验数据的数据长度,那么各个最小编程单元之间以及最小编程单元内的各个纠错单元之间的纠错强度将会达到最佳均衡状态。但在实际工程实践中,由于用户数据格式的不确定性,有效数据对应的校验数据的数据长度不可能全部达到参考平均有效数据长度,因此,校验数据的数据长度会在一个区间范围内,即满足:。
66.所以,可以根据n个不同类型的有效数据的数据长度,计算得到n个不同类型的有效数据对应的平均校验数据长度,然后通过判断预设值(即参考平均有效数据长度)与计算得到的平均校验数据长度的差值与偏差阈值的关系,确定每一有效数据对应的校验数据的数据长度,以使校验数据的数据长度处于参考平均有效数据长度的偏差阈值范围内,即满足:。
67.请参阅图11,图11是图8中的步骤s523的细化流程示意图;如图11所示,步骤s523:根据n个不同类型的有效数据的数据长度,确定每一有效数据对应的校验数据的数据长度,以生成不同类型的纠错单元,包括:步骤s5231:对n个不同类型的有效数据的数据长度取平均值,得到平均有效数据长度;具体的,平均有效数据长度可由下述公式计算得到:其中,表示平均有效数据长度,表示有效数据的种类数,表示第个有效数据的数据长度。
68.步骤s5232:根据平均有效数据长度,计算得到平均校验数据长度;具体的,将步骤s5231计算得到的平均有效数据长度,代入下述下述公式,计算得到平均校验数据长度:其中,为平均校验数据长度,为最小编程单元的数据长度,为一个最小编程单元存储的码字的数量,为平均有效数据长度。
69.步骤s5233:计算预设值与平均校验数据长度的差值;具体的,预设值为参考平均校验数据长度,差值=预设值-平均校验数据长度。
70.步骤s5234:判断差值是否小于或等于偏差阈值;具体的,若差值小于或等于偏差阈值,则进入步骤s5235;若差值大于偏差阈值,则进入步骤s5236。
71.步骤s5235:确定每一有效数据对应的校验数据的数据长度均为平均校验数据长
度;具体的,若差值小于或等于偏差阈值,则确定每一有效数据对应的校验数据的数据长度均为平均校验数据长度,从而得到每一有效数据对应的纠错单元,其中,纠错单元由有效数据和校验数据组成。
72.例如:n=2时,从子集序列中有效数据的数据长度最大的子集中获取一个有效数据,从子集序列中有效数据的数据长度最小的子集中获取一个有效数据,二者的平均有效数据长度, 平均校验数据长度, 预设值与平均校验数据长度的差值,当,即差值小于或等于偏差阈值时,确定有效数据和对应的校验数据的数据长度均为平均校验数据长度。从而分别对有效数据和进行纠错编码,得到各自对应的校验数据,且校验数据的数据长度均为平均校验数据长度,对有效数据和其对应的数据长度为的校验数据进行组合,得到一个纠错单元,并对有效数据和其对应的数据长度为的校验数据进行组合,得到另一个纠错单元。这两个纠错单元会在后续存放到一个最小编程单元内。
73.步骤s5236:将n个不同类型的有效数据中数据长度最小的有效数据删除;具体的,若差值大于偏差阈值,则将n个不同类型的有效数据中数据长度最小的有效数据删除。
74.例如:上例中的,即差值大于偏差阈值时,保留有效数据,删除有效数据。
75.步骤s5237:从有效数据类型集合内未被选择过的子集中选择一个子集,获取一个有效数据,以得到更新后的n个不同类型的有效数据。
76.具体的,从有效数据类型集合内未被选择过的子集中选择一个数据长度最小的子集,获取该子集内的一个有效数据,得到更新后的n个不同类型的有效数据,然后进入步骤s5231,计算更新后的n个不同类型的有效数据对应的平均有效数据长度,例如:第一平均有效数据长度,从而进入步骤s5232,计算更新后的n个不同类型的有效数据对应的平均校验数据长度,例如:根据更新后的n个不同类型的有效数据对应的第一平均有效数据长度,计算得到第一平均校验数据长度,直至预设值与第一平均校验数据长度的差值小于或等于偏差阈值,确定每一有效数据对应的校验数据的数据长度均为第一平均校验数据长度,停止循环步骤。
77.例如:上例中在保留有效数据,删除有效数据后,从有效数据类型集合内未被选择过的子集中选择一个数据长度最小的子集,获取该子集内的一个有效数据,重复步骤s5231-步骤s5234,当预设值与有效数据与对应的第一平均校验数据长度的差值,即差值小于或等于偏差阈值时,确定有效数据和对应的校验数据的数据长度均为第一平均校验数据长度。此时停止循环,否则,进入步骤s5236。
78.请结合表3,参阅表4,表4是表3中满足最小校验数据长度的不同类型的有效数据;表4其中,最小编程单元的数据长度=(16384+1952)bytes,一个最小编程单元存储的码字的数量=4,以典型的铠侠bics系列闪存为例,闪存要求的码字纠错能力为120bit/1kb, 换算得到纠错能力为320bit/4kb,因此,最小校验数据长度=320bytes。也就是说,对于表3中序号2、3、9,因为无法达到纠错能力要求,即校验数据的数据长度小于320 bytes,所以闪存设备无法支持这三种类型的有效数据。如要支持,需要特别处理,对剩余的有效数据进行均衡化计算。
79.对于表4,参考平均校验数据长度= 410bytes,参考平均有效数据长度4174 bytes,结合最小校验数据长度bytes,结合最小校验数据长度320bytes,可计算得到偏差阈值320bytes,可计算得到偏差阈值35bytes。对于序号8对应的有效数据的数据长度=4240bytes,对于序号4对应的有效数据的数据长度=4120bytes,相应地,二者对应的平均校验数据长度404bytes, 预设值与平均校验数据长度的差值
△
= 6bytes《偏差阈值, 因此,在后续将序号8和序号4对应的有效数据形成的两个纠错单元存放到一个最小编程单元内是适合的,且均衡化每一纠错单元的纠错能力。可以看出,序号8对应的有效数据现在的校验数据的数据长度=404bytes,相比之前方案的校验数据的数据长度344 ,数据长度增加,提高了纠错能力。
80.在本技术实施例中,根据n个不同类型的有效数据的数据长度,计算得到n个不同类型的有效数据对应的平均校验数据长度,然后通过判断预设值(即参考平均有效数据长度)与计算得到的平均校验数据长度的差值与偏差阈值的关系,确定每一有效数据对应的校验数据的数据长度,本技术能够使得校验数据的数据长度处于参考平均有效数据长度的偏差阈值范围内,从而使得各个纠错单元的纠错强度均衡。
81.步骤s503:组合至少两个不同类型的纠错单元,得到一个纠错单元混集,并将纠错单元混集存储至最小编程单元。
82.具体的,在完成一次步骤s502后,得到至少两个不同类型的纠错单元,将这些纠错单元进行组合,得到一个组合数据,并将该组合数据划分入一个纠错单元混集。在完成多次步骤s502后,会得到若干个组合数据,对组合数据分类,从而将不同的组合数据划分入不同的纠错单元混集,以得到若干个纠错单元混集。当数据需要写入到闪存时,将纠错单元混集存储至最小编程单元。
83.请参阅图12,图12是图5中的步骤s503的细化流程示意图;如图12所示,步骤s503:组合至少两个不同类型的纠错单元,得到一个纠错单元混集,并将纠错单元混集存储至最小编程单元,包括:步骤s5031:组合至少两个不同类型的纠错单元,得到组合数据;具体的,每完成一次步骤s502,对获取的至少两个不同类型的纠错单元进行组合,得到一个组合数据。其中,一个组合数据包括至少两个不同类型(即不同码长)的纠错单元。其中,多个纠错单元的组合方式可由本领域技术人员根据实际需要进行设置,在本技术实施例中不做限制。
84.步骤s5032:基于纠错单元的类型,对若干个组合数据进行分类,以得到若干个纠错单元混集;具体的,根据每一组合数据中的纠错单元的类型,确定每一组合数据对应的纠错单元的种类数,将对应相同种类数的若干个组合数据划分入同一个纠错单元混集,若干个纠错单元混集构成了一个纠错单元类型集合。其中,每一组合数据对应一个最小编程单元,每一纠错单元混集包括至少两种类型的纠错单元,同一个纠错单元混集内的若干个组合数据对应的纠错单元的种类数相同,不同的纠错单元混集内的组合数据对应的纠错单元的种类数不同。
85.可以理解的是,这些纠错单元混集内的每个组合数据对应一个最小编程单元,所以纠错单元混集也可以称为基于最小编程单元的纠错单元混集,例如:基于页的纠错单元混集。
86.请参阅图13,图13是本技术实施例提供的不同的纠错单元混集的示意图;如图13所示,对于3个纠错单元混集:纠错单元混集0、纠错单元混集1与纠错单元混集2,每一纠错单元混集内均有若干个组合数据,每一组合数据均包括至少两个类型的纠错单元。纠错单元混集0为具有4种类型的纠错单元的混集,4种类型的纠错单元为:有效数据类型0对应的纠错单元、有效数据类型1对应的纠错单元、有效数据类型2对应的纠错单元和有效数据类型3对应的纠错单元,虽然校验数据的长度趋向一致,但是由于有效数据类型不同即有效数据的数据长度不同,所以这4种纠错单元的码长不同,也就是类型不同。
87.纠错单元混集1为具有2种类型的纠错单元的混集,2种类型的纠错单元为:有效数据类型0对应的纠错单元、有效数据类型1对应的纠错单元;纠错单元混集2为具有3种类型的纠错单元的混集,3种类型的纠错单元为:有效数据类型2对应的纠错单元、有效数据类型3对应的纠错单元和有效数据类型n对应的纠错单元。
88.可以理解的是,纠错单元混集的数量与组合数据的种类数相同,组合数据的种类数由组合数据包括的纠错单元的种类数决定,不同种类的组合数据包括的纠错单元的种类数不同,如图13,组合数据0为包括4种类型的纠错单元的组合数据,组合数据1为包括2种类型的纠错单元的组合数据,组合数据2为包括3种类型的纠错单元的组合数据,有3种组合数据,所以对应有3个纠错单元混集。
89.步骤s5033:将至少一个纠错单元混集内的组合数据写入对应的最小编程单元。
90.具体的,在数据需要写入到闪存时,从纠错单元类型集合中选取一个纠错单元混集,将该纠错单元混集内的组合数据,即若干个纠错单元写入到对应的最小编程单元内。其中,一个最小编程单元内存储至少两种不同类型的纠错单元。
91.请参阅图14,图14是本技术实施例提供的另一种闪存页内存储的纠错单元的类型示意图;如图14所示,每一个最小编程单元,例如:闪存页,均存储至少两种类型的纠错单元,例如:纠错单元0'、纠错单元1'、
……
、纠错单元n'。其中,纠错单元0'、纠错单元1'、
……
与纠错单元n'的数据长度均不同。
92.请再参阅图3,虽然图14中的纠错单元0'与图3中的纠错单元0包括同一种类型的有效数据,但是由于校验数据的数据长度有所调整,所以图14中的纠错单元0'与图3中的纠错单元0的类型也发生了变化。
93.请参阅图15,图15是本技术实施例提供的两种不同的纠错单元管理方法对应的编程单元的示意图;其中,图15上半部分的编程单元0和编程单元1采用的纠错单元管理方法为:将同一类型的主机数据块存储至同一个最小编程单元内,并且同一个最小编程单元内的每个纠错单元的码长相同,即每一编程单元内存储若干个类型相同的主机数据块,而不同类型的主机数据块会使得有效数据的数据长度不同,即有效数据类型不同。图15下半部分的编程单元0和编程单元1采用的是本技术步骤s501-步骤s503对应的纠错单元管理方法。
94.如图15所示,对于图15上半部分的编程单元0和编程单元1,编程单元0存储的纠错单元均为有效数据类型0对应的纠错单元,编程单元1存储的纠错单元均为有效数据类型1对应的纠错单元,每一编程单元内的纠错单元的数据长度都相同,有效数据类型为0的有效数据的数据长度与效数据类型为1的有效数据的数据长度不同,编程单元0内的校验数据与编程单元1内的校验数据的数据长度不同。
95.对于图15下半部分的编程单元0和编程单元1,编程单元0和编程单元1均存储有两种类型的纠错单元,即有效数据类型0对应的纠错单元和有效数据类型1对应的纠错单元,有效数据类型0对应的纠错单元与有效数据类型1对应的纠错单元的数据长度不同。其中,有效数据类型0对应的纠错单元的校验数据的数据长度,相比于图15上半部分中有效数据类型0对应的纠错单元的校验数据的数据长度变长;有效数据类型1对应的纠错单元的校验数据的数据长度,相比于图15上半部分中有效数据类型1对应的纠错单元的校验数据的数据长度变短。
96.可以看出,相比于目前采用的纠错单元管理方法,本技术步骤s501-步骤s503对应的纠错单元管理方法,可以对不同有效数据类型对应的纠错单元的校验数据的数据长度进行调整,从而使得各个纠错单元之间以及各个最小编程单元之间的纠错强度均衡。
97.请参阅图16,图16是本技术实施例提供的一种纠错单元管理方法的总体流程示意图;如图16所示,纠错单元管理方法的总体流程,包括:步骤s1601:获取有效数据,对有效数据进行分类,确定多种有效数据类型,并得到每一有效数据类型对应的子集;具体的,闪存设备接收主机发送的若干个有效数据,根据有效数据的数据长度对有效数据进行分类,确定多种有效数据类型,并将同一种有效数据类型对应的若干个有效数据划分至同一个子集内,进而得到每一有效数据类型对应的子集,其中,同一种有效数据类型对应的有效数据的数据长度相同,若干个子集构成一个有效数据类型集合。
98.例如:得到有效数据类型0对应的子集、有效数据类型1对应的子集、有效数据类型2对应的子集、有效数据类型3对应的子集、有效数据类型n对应的子集,全部子集构成一个有效数据类型集合。
99.步骤s1602:从不同的子集中选择至少两种不同类型的有效数据,以生成不同类型的纠错单元,并组合至少两个不同类型的纠错单元,得到组合数据,对若干个组合数据进行分类,以得到若干个纠错单元混集;具体的,每完成一次从不同的子集中选择至少两种不同类型的有效数据,生成不同类型的纠错单元,对每一次生成的至少两个纠错单元进行组合,得到一个组合数据。重复上述步骤,得到若干个组合数据,对组合数据分类,从而将不同的组合数据划分入不同的纠错单元混集,以得到若干个纠错单元混集。
100.例如:得到纠错单元混集0、纠错单元混集1、纠错单元混集2、纠错单元混集n,全部纠错单元混集构成一个纠错单元类型集合。
101.步骤s1603:写入最小编程单元。
102.具体的,当数据需要写入到闪存时,从纠错单元类型集合中选取一个纠错单元混集,将该纠错单元混集内的组合数据,即若干个纠错单元写入到对应的最小编程单元内。
103.在本技术实施例中,通过提供一种纠错单元管理方法,应用于闪存设备,闪存设备包括纠错单元和最小编程单元,纠错单元包括有效数据,纠错单元管理方法包括:根据有效数据的数据长度,对有效数据进行分类,确定多种有效数据类型,并得到每一有效数据类型对应的子集;从不同的子集中选择至少两种不同类型的有效数据,以生成不同类型的纠错单元;组合至少两个不同类型的纠错单元,得到一个纠错单元混集,并将纠错单元混集存储至最小编程单元。
104.通过选择至少两种不同类型的有效数据,生成不同类型的纠错单元,并将组合纠错单元得到的纠错单元混集存储至最小编程单元,本技术能够使得闪存的最小编程单元内的各个纠错单元的纠错强度均衡,并使得闪存的各个最小编程单元的纠错强度均衡,从而提升闪存设备的整体可靠性。
105.请参阅图17,图17是本技术实施例提供的一种存储控制芯片的结构示意图;如图17所示,存储控制芯片170包括纠错管理单元171、数据缓存单元172、数据纠错引擎173与数据存储单元174。
106.纠错管理单元171,连接数据缓存单元172、数据纠错引擎173与数据存储单元174,用于根据有效数据的数据长度,对有效数据进行分类,确定多种有效数据类型,并得到每一有效数据类型对应的子集;从不同的子集中选择至少两种不同类型的有效数据,以生成不同类型的纠错单元;组合至少两个不同类型的纠错单元,得到一个纠错单元混集,并将纠错单元混集存储至最小编程单元。
107.具体的,请参阅图18,图18是本技术实施例提供的一种纠错管理单元的结构示意图;在本技术实施例中,该纠错管理单元应用上述任一实施例的纠错单元管理方法。
108.如图18所示,纠错管理单元171包括有效数据分类管理模块1711、纠错单元生成管理模块1712和纠错单元分类管理模块1713。
109.有效数据分类管理模块1711,连接纠错单元生成管理模块,用于对有效数据进行
分类,得到每一有效数据类型对应的子集。具体的,主机(host)写入的数据会存放在闪存设备的缓存(一般是存储控制芯片外部的双倍率动态随机存储器或者存储控制芯片内部的随机存储器),在数据存入缓存的过程中,有效数据分类管理模块介入进行相应处理。
110.纠错单元生成管理模块1712,连接有效数据分类管理模块1711与纠错单元分类管理模块1713,用于从不同的子集中选择至少两种不同类型的有效数据,以生成不同类型的纠错单元。具体的,纠错单元生成管理模块1712还用于计算最小校验数据长度、参考平均校验数据长度、偏差阈值等。
111.纠错单元分类管理模块1713,连接纠错单元生成管理模块1712,用于将纠错单元组合,得到组合数据,并基于纠错单元的类型,对若干个组合数据进行分类,以得到若干个纠错单元混集。纠错单元生成之后暂存到闪存设备的缓存,需要纠错单元分类管理模块1713管理纠错单元混集。
112.在本技术实施例中,提供一种纠错管理单元,该纠错管理单元包括:有效数据分类管理模块,连接纠错单元生成管理模块,用于对有效数据进行分类,得到每一有效数据类型对应的子集;纠错单元生成管理模块,连接有效数据分类管理模块与纠错单元分类管理模块,用于从不同的子集中选择至少两种不同类型的有效数据,以生成不同类型的纠错单元;纠错单元分类管理模块,连接纠错单元生成管理模块,用于将纠错单元组合,得到组合数据,并基于纠错单元的类型,对若干个组合数据进行分类,以得到若干个纠错单元混集。本技术能够使得各个最小编程单元之间以及最小编程单元内的各个纠错单元之间的纠错强度均衡,从而提升闪存设备的整体可靠性。
113.数据缓存单元172,连接纠错管理单元171与数据纠错引擎173,用于缓存每一有效数据类型对应的子集。
114.数据纠错引擎173,连接数据缓存单元172、纠错管理单元171与数据存储单元174,用于在数据写入时对数据进行编码以生成纠错单元,和/或,在读取数据时对纠错单元进行解码。
115.数据存储单元174,连接纠错管理单元171与数据纠错引擎173,用于将数据存储至闪存或者从闪存中读取数据。
116.在本技术实施例中,提供一种存储控制芯片,该存储控制芯片包括:纠错管理单元,连接数据缓存单、数据纠错引擎与数据存储单元,用于根据有效数据的数据长度,对有效数据进行分类,确定多种有效数据类型,并得到每一有效数据类型对应的子集,从不同的子集中选择至少两种不同类型的有效数据,以生成不同类型的纠错单元,组合至少两个不同类型的纠错单元,得到一个纠错单元混集,并将纠错单元混集存储至最小编程单元;数据缓存单元,连接纠错管理单元与数据纠错引擎,用于缓存每一有效数据类型对应的子集;数据纠错引擎,连接数据缓存单元、纠错管理单元与数据存储单元,用于在数据写入时对数据进行编码以生成纠错单元,和/或,在读取数据时对纠错单元进行解码;数据存储单元,连接纠错管理单元与数据纠错引擎,用于将数据存储至闪存或者从闪存中读取数据。本技术能够使得各个最小编程单元之间以及最小编程单元内的各个纠错单元之间的纠错强度均衡,从而提升闪存设备的整体可靠性。
117.本技术实施例还提供了一种非易失性计算机存储介质,非易失性计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,可使得上述一
个或多个处理器可执行上述任意方法实施例中的纠错单元管理方法,例如,执行上述任意方法实施例中的纠错单元管理方法。
118.以上所描述的装置或设备实施例仅仅是示意性的,其中作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
119.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用直至得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
120.最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;在本技术的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上的本技术的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
技术特征:
1.一种纠错单元管理方法,应用于闪存设备,其特征在于,所述闪存设备包括纠错单元和最小编程单元,所述纠错单元包括有效数据,所述方法包括:根据所述有效数据的数据长度,对所述有效数据进行分类,确定多种有效数据类型,并得到每一有效数据类型对应的子集;从不同的子集中选择至少两种不同类型的有效数据,以生成不同类型的纠错单元;组合至少两个不同类型的所述纠错单元,得到一个纠错单元混集,并将所述纠错单元混集存储至所述最小编程单元。2.根据权利要求1所述的方法,其特征在于,所述纠错单元的数据长度小于所述最小编程单元的数据长度,所述不同类型的纠错单元的码长不同,不同有效数据类型对应的有效数据的数据长度不同,若干个所述子集构成一个有效数据类型集合。3.根据权利要求2所述的方法,其特征在于,所述从不同的子集中选择至少两种不同类型的有效数据,以生成不同类型的纠错单元,包括:根据每一子集内的有效数据的数据长度,从所述有效数据类型集合中选择n个子集,其中,n为一个最小编程单元对应的有效数据的种类数, n为正整数且n2;分别从每一个被选择的子集中获取一个有效数据,得到n个不同类型的有效数据,其中,每一子集内的有效数据的数据长度相同,不同子集的有效数据的数据长度不同;根据n个不同类型的有效数据的数据长度,确定每一有效数据对应的校验数据的数据长度,以生成不同类型的纠错单元,其中,每一所述纠错单元均包括有效数据和校验数据。4.根据权利要求3所述的方法,其特征在于,所述根据每一子集内的有效数据的数据长度,从所述有效数据类型集合中选择n个子集,包括:按照每一子集内的有效数据的数据长度从大到小的顺序,对所述子集进行序号递增排列,得到子集序列;从所述子集序列中选择一个序列号最小的子集和一个序列号最大的子集,并在所述子集序列中删除已选择的子集,以更新所述子集序列;从更新后的子集序列中依次选择一个序列号最小的子集和一个序列号最大的子集,直至得到n个子集。5.根据权利要求3所述的方法,其特征在于,所述根据n个不同类型的有效数据的数据长度,确定每一有效数据对应的校验数据的数据长度,以生成不同类型的纠错单元,包括:对n个不同类型的有效数据的数据长度取平均值,得到平均有效数据长度;根据所述平均有效数据长度,计算得到平均校验数据长度;计算预设值与所述平均校验数据长度的差值,其中,所述差值=预设的平均校验数据长度-平均校验数据长度;若所述差值小于或等于偏差阈值,则确定每一有效数据对应的校验数据的数据长度均为所述平均校验数据长度,其中,所述校验数据的数据长度大于或等于最小校验数据长度。6.根据权利要求3-5任一项所述的方法,其特征在于,所述根据n个不同类型的有效数据的数据长度,确定每一有效数据对应的校验数据的数据长度,以生成不同类型的纠错单元,还包括:若所述差值大于偏差阈值,则将n个不同类型的有效数据中数据长度最小的有效数据删除;
从所述集合内未被选择过的子集中选择一个子集,获取一个有效数据,以得到更新后的n个不同类型的有效数据;根据更新后的n个不同类型的有效数据对应的第一平均有效数据长度,计算得到第一平均校验数据长度;直至预设值与所述第一平均校验数据长度的差值小于或等于偏差阈值,确定每一有效数据对应的校验数据的数据长度均为所述第一平均校验数据长度。7.根据权利要求3所述的方法,其特征在于,所述平均校验数据长度包括:其中,为平均校验数据长度,为最小编程单元的数据长度,为一个最小编程单元存储的码字的数量,为平均有效数据长度。8.根据权利要求1所述的方法,其特征在于,所述组合至少两个不同类型的所述纠错单元,得到一个纠错单元混集,并将所述纠错单元混集存储至所述最小编程单元,包括:组合至少两个不同类型的所述纠错单元,得到组合数据;基于纠错单元的类型,对若干个所述组合数据进行分类,以得到若干个纠错单元混集,其中,每一所述组合数据对应一个最小编程单元,每一所述纠错单元混集包括至少两种类型的纠错单元,同一个纠错单元混集内的若干个组合数据对应的纠错单元的种类数相同,不同的纠错单元混集内的组合数据对应的纠错单元的种类数不同;将至少一个所述纠错单元混集内的组合数据写入对应的最小编程单元。9.一种存储控制芯片,其特征在于,包括纠错管理单元,所述纠错管理单元应用如权利要求1-8任一项所述的纠错单元管理方法,所述纠错管理单元包括有效数据分类管理模块、纠错单元生成管理模块和纠错单元分类管理模块,其中,有效数据分类管理模块,连接所述纠错单元生成管理模块,用于对有效数据进行分类,得到每一有效数据类型对应的子集;纠错单元生成管理模块,连接所述有效数据分类管理模块与所述纠错单元分类管理模块,用于从不同的子集中选择至少两种不同类型的有效数据,以生成不同类型的纠错单元;纠错单元分类管理模块,连接所述纠错单元生成管理模块,用于将纠错单元组合,得到组合数据,并基于纠错单元的类型,对若干个所述组合数据进行分类,以得到若干个纠错单元混集。10.根据权利要求9所述的存储控制芯片,其特征在于,所述存储控制芯片还包括数据缓存单元、数据纠错引擎与数据存储单元,其中,数据缓存单元,连接纠错管理单元与数据纠错引擎,用于缓存每一有效数据类型对应的子集;数据纠错引擎,连接数据缓存单元、纠错管理单元与数据存储单元,用于在数据写入时对数据进行编码以生成纠错单元,和/或,在读取数据时对纠错单元进行解码;数据存储单元,连接纠错管理单元与数据纠错引擎,用于将数据存储至闪存或者从闪存中读取数据。11.一种闪存设备,其特征在于,包括:
如权利要求9或10所述的存储控制芯片;至少一个闪存介质,与所述存储控制芯片通信连接。
技术总结
本申请实施例涉及存储设备应用领域,公开了一种纠错单元管理方法、存储控制芯片及闪存设备,纠错单元管理方法包括:根据有效数据的数据长度,对有效数据进行分类,确定多种有效数据类型,并得到每一有效数据类型对应的子集;从不同的子集中选择至少两种不同类型的有效数据,以生成不同类型的纠错单元;组合至少两个不同类型的纠错单元,得到一个纠错单元混集,并将纠错单元混集存储至最小编程单元。通过选择至少两种不同类型的有效数据,生成不同类型的纠错单元,并将组合纠错单元得到的纠错单元混集存储至最小编程单元,本申请能够使得各个最小编程单元之间以及最小编程单元内的各个纠错单元之间的纠错强度均衡,从而提升闪存设备的整体可靠性。存设备的整体可靠性。存设备的整体可靠性。
技术研发人员:方浩俊 黄运新 葛鸿民 陆洲
受保护的技术使用者:深圳大普微电子科技有限公司
技术研发日:2023.06.12
技术公布日:2023/7/18
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
