CN116343890B - 纠错单元管理方法、存储控制芯片及闪存设备 - Google Patents
纠错单元管理方法、存储控制芯片及闪存设备 Download PDFInfo
- Publication number
- CN116343890B CN116343890B CN202310628921.1A CN202310628921A CN116343890B CN 116343890 B CN116343890 B CN 116343890B CN 202310628921 A CN202310628921 A CN 202310628921A CN 116343890 B CN116343890 B CN 116343890B
- Authority
- CN
- China
- Prior art keywords
- data
- error correction
- unit
- compression
- compression unit
- 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
- 238000012937 correction Methods 0.000 title claims abstract description 505
- 238000007726 management method Methods 0.000 title claims abstract description 69
- 238000007906 compression Methods 0.000 claims abstract description 755
- 230000006835 compression Effects 0.000 claims abstract description 755
- 238000000034 method Methods 0.000 claims description 31
- 230000011218 segmentation Effects 0.000 claims description 20
- 238000013500 data storage Methods 0.000 claims description 18
- 238000013144 data compression Methods 0.000 claims description 14
- 238000004891 communication Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 36
- 239000007787 solid Substances 0.000 description 6
- 238000012795 verification Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/40—Response verification devices using compression techniques
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/56—External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
-
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请实施例涉及存储设备应用领域,公开了一种纠错单元管理方法、存储控制芯片及闪存设备,纠错单元管理方法包括:对至少两个用户数据进行压缩,得到每一用户数据一一对应的压缩单元;对至少一个第二压缩单元进行切分,得到至少两个第三压缩单元;将至少一个第三压缩单元与若干个第一压缩单元进行组合,得到若干个基础纠错单元;根据若干个第二压缩单元,得到若干个扩展纠错单元;按照排列顺序,将若干个基础纠错单元和若干个扩展纠错单元进行组合,得到存储数据队列。通过对压缩单元进行切分与组合,得到基础纠错单元与扩展纠错单元,并按照排列顺序组合得到存储数据队列,本申请能够减少冗余数据占据存储空间,提高存储空间的利用率。
Description
技术领域
本申请涉及存储设备应用领域,特别是涉及一种纠错单元管理方法、存储控制芯片及闪存设备。
背景技术
闪存设备,例如:固态硬盘(Solid State Drives,SSD),是采用固态电子存储芯片阵列而制成的硬盘,固态硬盘包括控制单元和存储单元(FLASH存储芯片或 DRAM存储芯片)。
闪存(NAND Flash)是固态硬盘的主要存储介质。由于闪存存储存在误码率,为了数据的正确性,在写入用户数据时加入校验数据以对用户数据进行校验保护。数据在闪存页内以纠错单元的形式存储,纠错单元由有效数据和校验数据组成,其中,有效数据包括压缩单元,压缩单元为压缩后的用户数据。
目前,当纠错单元内的多个压缩单元的数据长度之和不满足设定的有效数据的长度,且在剩余的压缩单元中没有数据长度适合的压缩单元时,采用写入无效数据的方式或对压缩单元进行切分的方式增加数据长度,以使纠错单元的数据长度满足设定的纠错长度。然而,无效数据作为冗余数据占据存储空间,会造成存储空间的浪费,降低存储空间的利用率,而且在对压缩单元切分后,读取该压缩单元时,需要读取至少两个纠错单元进行解码,会导致读带宽的负载增加。
发明内容
本申请实施例提供一种纠错单元管理方法、存储控制芯片及闪存设备,以减少冗余数据占据闪存设备的存储空间,提高闪存设备的存储空间的利用率,并保证闪存设备的性能不受影响。
本申请实施例提供以下技术方案:
第一方面,本申请实施例提供一种纠错单元管理方法,应用于闪存设备,闪存设备包括纠错单元,纠错单元包括基础纠错单元与扩展纠错单元,纠错单元管理方法包括:
对至少两个用户数据进行压缩,得到每一用户数据一一对应的压缩单元,其中,所述压缩单元包括第一压缩单元和第二压缩单元,所述第一压缩单元为压缩后不需被切分的压缩单元,所述第二压缩单元为压缩后需被切分的压缩单元;
对至少一个第二压缩单元进行切分,得到至少两个第三压缩单元;
将至少一个第三压缩单元与若干个第一压缩单元进行组合,得到若干个基础纠错单元,其中,一个基础纠错单元包括至少一个第三压缩单元和至少一个第一压缩单元;
根据若干个第二压缩单元,得到若干个扩展纠错单元;
按照排列顺序,将若干个基础纠错单元和若干个扩展纠错单元进行组合,得到存储数据队列。
第二方面,本申请实施例提供一种存储控制芯片,应用如第一方面的纠错单元管理方法,存储控制芯片包括:
数据压缩单元,连接纠错管理单元与数据纠错引擎单元,用于对至少两个用户数据进行压缩,得到每一用户数据一一对应的压缩单元,其中,所述压缩单元包括第一压缩单元和第二压缩单元,所述第一压缩单元为压缩后不被切分的压缩单元,所述第二压缩单元为压缩后被切分的压缩单元;
纠错管理单元,连接数据压缩单元、数据纠错引擎单元与数据存储单元,用于对至少一个第二压缩单元进行切分,得到至少两个第三压缩单元;
数据纠错引擎单元,连接数据压缩单元、纠错管理单元与数据存储单元,用于将至少一个第三压缩单元与若干个第一压缩单元进行组合,得到若干个基础纠错单元,或者,根据若干个第二压缩单元,得到若干个扩展纠错单元,其中,一个基础纠错单元包括至少一个第三压缩单元和至少一个第一压缩单元;
数据存储单元,连接纠错管理单元与数据纠错引擎单元,用于按照排列顺序,将若干个基础纠错单元和若干个扩展纠错单元进行组合,得到存储数据队列。
第三方面,本申请实施例提供一种闪存设备,包括:
如第二方面的存储控制芯片;
至少一个闪存介质,与存储控制芯片通信连接。
第四方面,本申请实施例还提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使闪存设备能够执行第一方面的纠错单元管理方法。
本申请实施例的有益效果是:区别于现有技术的情况下,本申请实施例提供的一种纠错单元管理方法,应用于闪存设备,闪存设备包括纠错单元,纠错单元包括基础纠错单元与扩展纠错单元,纠错单元管理方法包括:对至少两个用户数据进行压缩,得到每一用户数据一一对应的压缩单元,其中,压缩单元包括第一压缩单元和第二压缩单元,第一压缩单元为压缩后不需被切分的压缩单元,第二压缩单元为压缩后需被切分的压缩单元;对至少一个第二压缩单元进行切分,得到至少两个第三压缩单元;将至少一个第三压缩单元与若干个第一压缩单元进行组合,得到若干个基础纠错单元,其中,一个基础纠错单元包括至少一个第三压缩单元和至少一个第一压缩单元;根据若干个第二压缩单元,得到若干个扩展纠错单元;按照排列顺序,将若干个基础纠错单元和若干个扩展纠错单元进行组合,得到存储数据队列。
通过将对第二压缩单元进行切分得到的第三压缩单元与若干个第一压缩单元进行组合,得到若干个基础纠错单元,并根据若干个第二压缩单元,得到若干个扩展纠错单元,然后按照排列顺序,将若干个基础纠错单元和若干个扩展纠错单元进行组合,得到存储数据队列,本申请能够减少冗余数据占据闪存设备的存储空间,提高闪存设备的存储空间的利用率,并保证闪存设备的性能不受影响。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请实施例提供的一种闪存设备的结构示意图;
图2是本申请实施例提供的一种闪存封装芯片的结构示意图;
图3是本申请实施例提供的一种闪存页与纠错单元的结构示意图;
图4是本申请实施例提供的一种根据用户数据得到纠错单元的示意图;
图5是本申请实施例提供的一种纠错单元管理方法的流程示意图;
图6是图5中的步骤S502的细化流程示意图;
图7是本申请实施例提供的一种对若干个第二压缩单元进行切分的细化流程示意图;
图8是图5中的步骤S503的细化流程示意图;
图9是图5中的步骤S504的细化流程示意图;
图10是本申请实施例提供的一种基础纠错单元与扩展纠错单元的对比示意图;
图11是本申请实施例提供的一种根据用户数据得到基础纠错单元与扩展纠错单元的示意图;
图12是图5中的步骤S505的细化流程示意图;
图13是本申请实施例提供的一种将用户数据存储至闪存设备的完整流程示意图;
图14是本申请实施例提供的一种将用户数据存储至闪存设备的示意图;
图15是本申请实施例提供的一种有效数据与校验数据分别连续排列的示意图;
图16是本申请实施例提供的一种读取用户数据的流程示意图;
图17是本申请实施例提供的一种读取基础纠错单元内的数据的示意图;
图18是本申请实施例提供的一种读取扩展纠错单元内的数据的示意图;
图19是本申请实施例提供的一种存储控制芯片的结构示意图;
图20是本申请实施例提供的一种纠错管理单元的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
此外,下面所描述的本申请各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
下面结合说明书附图具体地阐述本申请的技术方案。
请参阅图1,图1是本申请实施例提供的一种闪存设备的结构示意图;
如图1所示,闪存设备100包括连接器101、存储控制芯片102、其他外围单元103、缓存单元104和闪存介质105。
其中,连接器101,连接存储控制芯片102与主机,用于与主机通信,主机例如:计算机或者服务器;存储控制芯片102,连接连接器101、其他外围单元103、缓存单元104和闪存介质105,用于作为控制运算单元,管理闪存设备的内部系统,存储控制芯片102包括但不限于固态硬盘控制器;外围单元103,连接存储控制芯片102,包括串口、传感器、寄存器、电源芯片等部件;缓存单元104,连接存储控制芯片102,作为缓存、算法表存储单元,缓存单元104一般为动态随机存取存储器(Dynamic Random Access Memory,DRAM)。
其中,闪存介质105,作为闪存设备100的存储介质,也称作闪存、Flash、Flash存储器或Flash颗粒,作为存储单元,用于存储用户数据、系统数据等。存储控制芯片102与闪存介质105之间呈现多个通道,一个通道独立连接一个闪存介质,例如:通道0连接一个闪存介质、通道1连接一个闪存介质、……、通道x连接一个闪存介质。其中,闪存介质105的特性是写入之前,必须进行擦除,且每个闪存擦除次数有限,一个闪存介质105包括至少一个闪存封装芯片(Chip)。
请参阅图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 LevelCell Flash,MLC Flash)、三层存储单元模式的闪存设备(Triple Level Cell Flash,TLCFlash)、四层存储单元模式的闪存设备(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。
其中,块是擦除的基本单位,页或者字线是读写的基本单位。当一个存储页或者字线被写入数据后,只有在进行了块擦除后才可进行新的写入操作。可以理解的是,在一些老类型的闪存设备中,闪存封装芯片内无字线,块由多个页组成。
由于闪存存储存在误码率,为了数据的正确性,在向闪存页写入用户数据时加入校验数据以对用户数据进行校验保护。数据在闪存页内以纠错单元的形式存储,一个闪存页存储N个纠错单元,纠错单元的数据长度一般为1KB、2KB或4KB。
请参阅图3,图3是本申请实施例提供的一种闪存页与纠错单元的结构示意图;
如图3所示,一个闪存页内存储n+1个纠错单元,例如:纠错单元0、纠错单元1、……、纠错单元n,每一纠错单元均由有效数据和校验数据组成。其中,有效数据包括用户数据和元信息,用户数据以压缩单元的形式存储于纠错单元内,压缩单元为压缩后的用户数据,元信息用于固件算法管理,校验数据用于纠错算法。从用户角度来说,元信息和校验数据都是冗余数据。
目前,纠错单元内的压缩单元组合存储,一个纠错单元内存储多个压缩单元,压缩单元的数量为整数个。当纠错单元内的多个压缩单元的数据长度之和不满足设定的有效数据的长度,且在剩余的压缩单元中没有数据长度适合的压缩单元时,采用写入无效数据的方式增加数据长度,以使纠错单元的数据长度满足设定的纠错长度。
请参阅图4,图4是本申请实施例提供的一种根据用户数据得到纠错单元的示意图;
在本申请实施例中,对用户数据的数据长度不做限制,下面以用户数据的数据长度为4KB为例进行说明。可以理解的是,这里的4KB是指虚数概念,其具体值可能大于4096Bytes,例如:(4096+8) Bytes,(4096+16 )Bytes, (4096+32)Bytes,……,(4096+256Bytes)等。下面以4个用户数据即用户数据0、用户数据1、用户数据2和用户数据3为例,具体说明得到纠错单元的方法。
如图4所示,用户数据0、用户数据1、用户数据2和用户数据3的数据长度均为4KB,闪存设备对每一用户数据进行压缩后,得到对应的压缩单元,即压缩单元0、压缩单元1、压缩单元2和压缩单元3,其中,压缩单元0的数据长度为2KB,压缩单元1的数据长度为1KB,压缩单元2的数据长度为2KB,压缩单元3的数据长度为2KB。
将压缩单元0与压缩单元1组合并存储至纠错单元0,由于压缩单元0与压缩单元1的数据长度之和为3KB,不满足设定的有效数据的长度4KB,而且在除压缩单元0与压缩单元1之外的压缩单元中没有数据长度为1KB的压缩单元,因此,向纠错单元0写入数据长度为1KB的无效数据,以使纠错单元0内的有效数据的长度满足设定的有效数据的长度,并对压缩单元0、压缩单元1与无效数据进行编码得到校验数据,将压缩单元0、压缩单元1、无效数据与校验数据组合得到纠错单元0。
将压缩单元2与压缩单元3组合并存储至纠错单元1,由于压缩单元2与压缩单元3的数据长度之和为4KB,满足设定的有效数据的长度4KB,因此,无需填充无效数据,直接对压缩单元2与压缩单元3进行编码得到校验数据,将压缩单元2、压缩单元3与校验数据组合得到纠错单元1。
进一步地,将纠错单元0与纠错单元1写入闪存页。可以理解的是,一个闪存页内可存储有多个纠错单元,例如:纠错单元0,纠错单元1,……,纠错单元n。其中,图4中的纠错单元n内的有效数据为一个压缩单元,该压缩单元的数据长度为4KB。
在上述过程中,当纠错单元内的多个压缩单元的数据长度之和不满足设定的有效数据的长度,且在剩余的压缩单元中没有数据长度适合的压缩单元时,采用写入无效数据的方式增加数据长度,会使得无效数据作为冗余数据占据存储空间,造成存储空间的浪费,降低存储空间的利用率。
因此,为了提高闪存设备的存储空间的利用率,并保证闪存设备的性能不受影响,本申请提供一种纠错单元管理方法,通过将对第二压缩单元进行切分得到的第三压缩单元与若干个第一压缩单元进行组合,得到若干个基础纠错单元,并根据若干个第二压缩单元,得到若干个扩展纠错单元,然后按照排列顺序,将若干个基础纠错单元和若干个扩展纠错单元进行组合,得到存储数据队列,从而减少冗余数据占据闪存设备的存储空间,提高闪存设备的存储空间的利用率,并保证闪存设备的性能不受影响。
请参阅图5,图5是本申请实施例提供的一种纠错单元管理方法的流程示意图;
其中,该纠错单元管理方法,应用于闪存设备,该闪存设备包括纠错单元。
如图5所示,该纠错单元管理方法,包括:
步骤S501:对至少两个用户数据进行压缩,得到每一用户数据一一对应的压缩单元;
具体的,获取主机发送的至少两个用户数据,对每一用户数据进行压缩,得到对应的压缩单元,并将压缩单元保存至缓存中以等待后续步骤对压缩单元进行处理,其中,一个用户数据对应一个压缩单元。在本申请实施例中,对用户数据的数据长度不做限制,下述任一实施例均以用户数据的数据长度为4KB为例进行说明,可以理解的是,这里的4KB是指虚数概念,其具体值可能大于4096Bytes,例如:(4096+8) Bytes,(4096+16 )Bytes, (4096+32)Bytes,……,(4096+256Bytes)等。在工程实例中,会对压缩单元设定最小颗粒度,以便管理,例如:最小颗粒度为512B,对应的压缩单元的数据长度为0.5KB、1KB、1.5KB、2 KB、2.5KB、3KB、3.KB或4KB。其中,压缩单元包括第一压缩单元和第二压缩单元,第一压缩单元为压缩后不需被切分的压缩单元,第二压缩单元为压缩后需被切分的压缩单元。
步骤S502:对至少一个第二压缩单元进行切分,得到至少两个第三压缩单元;
具体的,在得到每一用户数据一一对应的压缩单元后,将每一数据长度等于预设长度的压缩单元存储至一一对应的纠错单元,其中,纠错单元例如基础纠错单元,数据长度等于预设长度的压缩单元为第一压缩单元;和/或,将至少两个压缩单元组合并存储至纠错单元,其中,至少两个压缩单元组合得到的有效数据的数据长度小于或等于预设长度,若至少两个压缩单元组合得到的有效数据的数据长度等于预设长度,则将该有效数据对应的至少两个压缩单元存储至一个纠错单元,例如基础纠错单元。可以理解的是,纠错单元的数据长度大于压缩单元的数据长度,每一纠错单元内存储至少一个压缩单元,预设长度为纠错单元内的有效数据的最大数据长度,每一压缩单元的数据长度小于或等于预设长度,预设长度预先设置于闪存设备内,可选地,预设长度为4KB。
进一步地,若至少两个压缩单元组合得到的有效数据的数据长度小于预设长度,则在未存储至纠错单元的压缩单元中,选择一个压缩单元作为第二压缩单元,对该第二压缩单元进行切分,得到至少两个第三压缩单元,重复上述步骤,直至每一有效数据集合内的有效数据的数据长度等于预设长度,其中,第三压缩单元为第二压缩单元的一部分。可以理解的是,步骤S501中提及的第一压缩单元与第二压缩单元仅用于定义压缩单元的类型,第二压缩单元仅在步骤S502被切分,得到第三压缩单元。
请参阅图6,图6是图5中的步骤S502的细化流程示意图;
如图6所示,步骤S502:对至少一个第二压缩单元进行切分,得到至少两个第三压缩单元,包括:
步骤S521:对至少两个压缩单元进行组合,以得到有效数据;
具体的,对数据长度小于预设长度的至少两个压缩单元进行组合,以得到有效数据,其中,有效数据为至少两个压缩单元组合得到的数据。
步骤S522:判断有效数据的数据长度是否小于预设长度;
具体的,若有效数据的数据长度小于预设长度,则进入步骤S523;若有效数据的数据长度等于预设长度,则将该有效数据对应的至少两个压缩单元存储至一个纠错单元,例如基础纠错单元;若有效数据的数据长度大于预设长度,则返回步骤S521,重新对至少两个压缩单元进行组合,以使得到的有效数据的数据长度小于或等于预设长度。
步骤S523:根据每一压缩单元的数据长度,对压缩单元进行递增排序,以得到压缩单元序列;
具体的,若有效数据的数据长度小于预设长度,则根据每一未存储至纠错单元的压缩单元的数据长度,对压缩单元进行递增排序,以得到压缩单元序列。
步骤S524:将压缩单元序列中序列号最大的压缩单元划分至有效数据集合,并在压缩单元序列中删除序列号最大的压缩单元,以更新压缩单元序列;
具体的,建立一个有效数据集合,将压缩单元序列中序列号最大的压缩单元划分至有效数据集合,并在压缩单元序列中删除序列号最大的压缩单元,以更新压缩单元序列。
步骤S525:判断当前的压缩单元序列中序列号最小的压缩单元与有效数据集合中的全部数据的数据长度之和是否大于预设长度;
具体的,若当前的压缩单元序列中序列号最小的压缩单元与有效数据集合中的全部数据的数据长度之和大于预设长度,则进入步骤S526;若当前的压缩单元序列中序列号最小的压缩单元与有效数据集合中的全部数据的数据长度之和小于或等于预设长度,则进入步骤S527。
步骤S526:确定序列号最小的压缩单元为第二压缩单元,对第二压缩单元进行切分,得到至少两个第三压缩单元;
具体的,若当前的压缩单元序列中序列号最小的压缩单元与有效数据集合中的全部数据的数据长度之和大于预设长度,则确定序列号最小的压缩单元为第二压缩单元,对第二压缩单元进行切分,得到至少两个第三压缩单元。
步骤S527:将序列号最小的压缩单元划分至有效数据集合,在当前的压缩单元序列中删除序列号最小的压缩单元,以更新当前的压缩单元序列;
具体的,若当前的压缩单元序列中序列号最小的压缩单元与有效数据集合中的全部数据的数据长度之和小于或等于预设长度,则将序列号最小的压缩单元划分至有效数据集合,在当前的压缩单元序列中删除序列号最小的压缩单元,以更新当前的压缩单元序列。
步骤S528:判断预设长度与有效数据集合中的全部数据的数据长度之差是否小于切分阈值,且更新后的压缩单元序列中序列号最小的压缩单元的数据长度是否大于或等于切分阈值;
具体的,若预设长度与有效数据集合中的全部数据的数据长度之差小于切分阈值,且更新后的压缩单元序列中序列号最小的压缩单元的数据长度大于或等于切分阈值,则进入步骤S526;若预设长度与有效数据集合中的全部数据的数据长度之差大于或等于切分阈值,或者,更新后的压缩单元序列中序列号最小的压缩单元的数据长度小于切分阈值,则进入步骤S529。
步骤S529:将当前的压缩单元序列中序列号最小的压缩单元划分至有效数据集合,并在当前的压缩单元序列中删除序列号最小的压缩单元,以更新当前的压缩单元序列。
具体的,若预设长度与有效数据集合中的全部数据的数据长度之差大于或等于切分阈值,或者,更新后的压缩单元序列中序列号最小的压缩单元的数据长度小于切分阈值,则将当前的压缩单元序列(即步骤S527中更新后的压缩单元序列)中序列号最小的压缩单元划分至有效数据集合,并在当前的压缩单元序列中删除序列号最小的压缩单元,以更新当前的压缩单元序列。
请参阅图7,图7是本申请实施例提供的一种对若干个第二压缩单元进行切分的细化流程示意图;
如图7所示,对若干个第二压缩单元进行切分的流程,包括:
步骤S701:根据每一压缩单元的数据长度,对压缩单元进行递增排序,以得到压缩单元序列;
具体的,若对至少两个压缩单元进行组合,得到的有效数据的数据长度小于预设长度,则按照压缩单元的数据长度由小到大的顺序,对未存储至纠错单元的压缩单元进行排序,以得到压缩单元序列,其中,压缩单元序列为按照压缩单元的数据长度由小到大的顺序,由至少两个压缩单元组成的序列。
步骤S702:建立一个有效数据集合;
具体的,纠错单元包括基础纠错单元与扩展纠错单元,一个基础纠错单元包括至少一个第三压缩单元和至少一个第一压缩单元,一个扩展纠错单元包括一个第二压缩单元。有效数据集合用于存储基础纠错单元的有效数据,每一基础纠错单元对应一个有效数据集合。
步骤S703:判断压缩单元序列中是否存在第三压缩单元;
具体的,若压缩单元序列中存在第三压缩单元,则进入步骤S704;若压缩单元序列中不存在第三压缩单元,则进入步骤S705。
步骤S704:将第三压缩单元划分至有效数据集合,在压缩单元序列中删除第三压缩单元,以更新压缩单元序列;
具体的,若压缩单元序列中存在第三压缩单元,则将该第三压缩单元划分至有效数据集合,并在压缩单元序列中删除该第三压缩单元,以更新压缩单元序列。
步骤S705:将压缩单元序列中序列号最大的压缩单元划分至有效数据集合,在压缩单元序列中删除序列号最大的压缩单元,以更新压缩单元序列;
具体的,若压缩单元序列中不存在第三压缩单元,则将压缩单元序列中序列号最大的压缩单元划分至有效数据集合,并在压缩单元序列中删除序列号最大的压缩单元,以更新压缩单元序列。
步骤S706:确定当前的压缩单元序列中序列号最小的压缩单元;
具体的,确定步骤S704或步骤S705中更新后的压缩单元序列中序列号最小的压缩单元。
步骤S707:判断当前的压缩单元序列中序列号最小的压缩单元与有效数据集合中的全部数据的数据长度之和是否大于预设长度;
具体的,若当前的压缩单元序列中序列号最小的压缩单元与有效数据集合中的全部数据的数据长度之和大于预设长度,则进入步骤S708;若当前的压缩单元序列中序列号最小的压缩单元与有效数据集合中的全部数据的数据长度之和小于或等于预设长度,则进入步骤S709。
步骤S708:对当前的压缩单元序列中序列号最小的压缩单元进行切分,得到至少两个第三压缩单元;
具体的,确定当前的压缩单元序列中序列号最小的压缩单元为第二压缩单元,对该第二压缩单元进行切分,得到至少两个第三压缩单元,其中,一个第三压缩单元与有效数据集合中的全部数据的数据长度之和等于预设长度。可以理解的是,每一第三压缩单元的数据长度可以与其它的第三压缩单元的数据长度相同,也可以不同。
步骤S709:将当前的压缩单元序列中序列号最小的压缩单元划分至有效数据集合,在当前的压缩单元序列中删除序列号最小的压缩单元,以更新当前的压缩单元序列;
具体的,若当前的压缩单元序列中序列号最小的压缩单元与有效数据集合中的全部数据的数据长度之和小于或等于预设长度,则将当前的压缩单元序列中序列号最小的压缩单元划分至有效数据集合,在当前的压缩单元序列中删除序列号最小的压缩单元,以更新当前的压缩单元序列。
步骤S710:判断预设长度与有效数据集合中的全部数据的数据长度之差是否小于切分阈值;
具体的,切分阈值用于判断是否对压缩单元进行切分,切分阈值预先设置于闪存设备内,切分阈值的设定取决于压缩单元的最小颗粒度,例如:压缩单元的最小颗粒度为512B时,考虑到4KB的用户数据压缩为512B的概率较低,将切分阈值设置为512B。
若预设长度与有效数据集合中的全部数据的数据长度之差小于切分阈值,则进入步骤S711;若预设长度与有效数据集合中的全部数据的数据长度之差大于或等于切分阈值,则返回步骤S706。
步骤S711:判断当前的压缩单元序列中序列号最小的压缩单元的数据长度是否小于切分阈值;
具体的,若预设长度与有效数据集合中的全部数据的数据长度之差小于切分阈值,则判断当前的压缩单元序列中序列号最小的压缩单元的数据长度是否小于切分阈值。
若当前的压缩单元序列中序列号最小的压缩单元的数据长度小于切分阈值,则进入步骤S712;若当前的压缩单元序列中序列号最小的压缩单元的数据长度大于或等于切分阈值,则返回步骤S708。
步骤S712:将当前的压缩单元序列中序列号最小的压缩单元划分至有效数据集合,在当前的压缩单元序列中删除序列号最小的压缩单元,以更新当前的压缩单元序列;
具体的,若当前的压缩单元序列中序列号最小的压缩单元的数据长度小于切分阈值,则将当前的压缩单元序列中序列号最小的压缩单元划分至有效数据集合,在当前的压缩单元序列中删除序列号最小的压缩单元,以更新当前的压缩单元序列。进一步地,在步骤S712完成更新当前的压缩单元序列后,返回步骤S711。
步骤S713:将至少一个第三压缩单元划分至有效数据集合。
具体的,在步骤S708得到至少两个第三压缩单元后,将至少一个第三压缩单元划分至有效数据集合,以使有效数据集合中的全部数据的数据长度之和等于预设长度,至此,完成一次对至少两个压缩单元组合得到一个有效数据集合,返回步骤S702,建立一个新的有效数据集合,重复步骤S703-步骤S713,直至每一有效数据集合内的有效数据的数据长度等于预设长度。
步骤S503:将至少一个第三压缩单元与若干个第一压缩单元进行组合,得到若干个基础纠错单元;
具体的,一个基础纠错单元包括至少一个第三压缩单元和至少一个第一压缩单元。
请参阅图8,图8是图5中的步骤S503的细化流程示意图;
如图8所示,步骤S503:将至少一个第三压缩单元与若干个第一压缩单元进行组合,得到若干个基础纠错单元,包括:
步骤S5031:将至少一个第三压缩单元划分至有效数据集合,以得到组合数据;
具体的,在对第二压缩单元进行切分,得到至少两个第三压缩单元后,将至少一个第三压缩单元划分至对应的有效数据集合,以得到一个组合数据,该组合数据的数据长度之和等于预设长度,重复上述步骤,得到至少两个组合数据,直至第三压缩单元全部被划分至对应的有效数据集合。其中,有效数据集合包括至少一个第一压缩单元,组合数据包括有效数据集合中的全部数据,每一有效数据集合对应一个组合数据,组合数据的数据长度之和等于预设长度。
步骤S5032:对每一组合数据进行编码,得到与每一组合数据一一对应的第一校验数据;
具体的,对每一组合数据进行纠错编码,例如:采用低密度奇偶校验方式,得到与每一组合数据对应的第一校验数据,其中,第一校验数据为组合数据对应的校验数据。在本申请实施例中,不对纠错编码的具体方式进行限制。
步骤S5033:将每一组合数据与对应的第一校验数据组合,得到若干个基础纠错单元。
具体的,一个基础纠错单元包括组合数据和第一校验数据,其中,组合数据为有效数据,第一校验数据为对组合数据进行编码得到的校验数据。
在一些实施例中,一个数据长度等于预设长度的压缩单元可直接存储至基础纠错单元,和/或,当至少两个压缩单元组合得到的有效数据的数据长度等于预设长度时,该有效数据对应的至少两个压缩单元也可直接组合存储至基础纠错单元。对应地,一个基础纠错单元可以包括一个数据长度等于预设长度的压缩单元以及该压缩单元对应的校验数据,或者,一个基础纠错单元可以仅包括数据长度等于预设长度的有效数据对应的至少两个压缩单元以及该有效数据对应的校验数据。
在本申请实施例中,通过对至少一个第二压缩单元进行切分,得到至少两个第三压缩单元,并将至少一个第三压缩单元与若干个第一压缩单元进行组合,得到若干个基础纠错单元,使得基础纠错单元内存储的压缩单元的数量可以是整数个,也可以是非整数个,相比采用写入无效数据的方式增加数据长度,本申请能够减少冗余数据占据闪存设备的存储空间,从而提高闪存设备的存储空间的利用率。
步骤S504:根据若干个第二压缩单元,得到若干个扩展纠错单元;
可以理解的是,在得到若干个基础纠错单元后,当需要读取一个第二压缩单元的数据时,由于该第二压缩单元的数据被存储至至少两个基础纠错单元内,且纠错时必须依次对至少两个基础纠错单元进行,因此,需要把两个基础纠错单元的数据全部读出之后,进行组合,提取数据。然而,两个基础纠错单元内还包括第一压缩单元,读取两个基础纠错单元得到的数据往往大于所需的第二压缩单元数据,这会影响闪存设备的性能。故而在本申请实施例中,将一个第二压缩单元存储至一个扩展纠错单元,以实现由独立的纠错单元即扩展纠错单元,保护第二压缩单元。
具体的,一个扩展纠错单元包括一个第二压缩单元,例如:若一个第二压缩单元被切分为两个第三压缩单元,则该第二压缩单元对应三个纠错单元,其中,一个第三压缩单元存储于第一基础纠错单元,另一个第三压缩单元存储于第二基础纠错单元,第二压缩单元整体存储于一个扩展纠错单元,两个第三压缩单元的数据长度可以相同,也可以不同,第一基础纠错单元为存储一个第三压缩单元的基础纠错单元,第二基础纠错单元为存储另一个第三压缩单元的基础纠错单元。
请参阅图9,图9是图5中的步骤S504的细化流程示意图;
如图9所示,步骤S504:根据若干个第二压缩单元,得到若干个扩展纠错单元,包括:
步骤S541:获取第二压缩单元;
具体的,第二压缩单元由步骤S503确定。
步骤S542:判断第二压缩单元的数据长度是否小于预设长度;
具体的,预设长度为纠错单元内的有效数据的最大数据长度,即基础纠错单元和/或扩展纠错单元内的有效数据的最大数据长度,可选地,预设长度为4KB。
若第二压缩单元的数据长度小于预设长度,则进入步骤S543;若第二压缩单元的数据长度等于预设长度,则进入步骤S545。
步骤S543:在第二压缩单元后填充无效数据,以使第二压缩单元与无效数据的数据长度之和等于预设长度;
具体的,若第二压缩单元的数据长度小于预设长度,则在第二压缩单元后填充无效数据,无效数据包括Dummy数据,例如:0或1,以使第二压缩单元与无效数据的数据长度之和等于预设长度。其中,填充的无效数据不被存储,无效数据仅用于在编码和解码时对数据长度进行补齐。
步骤S544:对第二压缩单元与无效数据进行编码,得到第二校验数据;
具体的,对第二压缩单元与无效数据进行纠错编码,例如:采用低密度奇偶校验方式,得到与对应的第二校验数据,其中,第二校验数据为第二压缩单元与无效数据对应的校验数据。在本申请实施例中,不对纠错编码的具体方式进行限制。
步骤S545:对第二压缩单元进行编码,得到第二校验数据;
具体的,若第二压缩单元的数据长度等于预设长度,则对第二压缩单元进行纠错编码,例如:采用低密度奇偶校验方式,得到与每一第二压缩单元一一对应的第二校验数据,其中,第二校验数据为第二压缩单元对应的校验数据。在本申请实施例中,不对纠错编码的具体方式进行限制。
步骤S546:将每一第二压缩单元与对应的每一第二校验数据组合,得到若干个扩展纠错单元。
具体的,一个扩展纠错单元包括一个第二压缩单元和第二校验数据,其中,第二校验数据与第二压缩单元一一对应,第二校验数据包括第二压缩单元对应的校验数据,或第二压缩单元与无效数据对应的校验数据。可以理解的是,当第二压缩单元的数据长度小于预设长度时,在得到第二压缩单元与无效数据对应的第二校验数据后,仅将该第二压缩单元与第二校验数据组合得到一个扩展纠错单元。
请参阅图10,图10是本申请实施例提供的一种基础纠错单元与扩展纠错单元的对比示意图;
如图10所示,一个基础纠错单元由组合数据与第一校验数据组成,其中,组合数据包括至少一个第三压缩单元和至少一个第一压缩单元,第一校验数据为对组合数据进行纠错编码得到的校验数据;一个扩展纠错单元包括一个第二压缩单元和第二校验数据,当第二压缩单元的数据长度小于预设长度时,在该第二压缩单元后填充无效数据,以使该第二压缩单元与无效数据的数据长度之和等于预设长度,对该第二压缩单元与无效数据进行纠错编码,得到第二校验数据,将该第二压缩单元和第二校验数据组合得到扩展纠错单元。
请参阅图11,图11是本申请实施例提供的一种根据用户数据得到基础纠错单元与扩展纠错单元的示意图;
在本申请实施例中,一个第二压缩单元可以被切分为至少两个第三压缩单元,下面以将一个第二压缩单元切分为两个第三压缩单元为例进行说明。
如图11所示,用户数据0、用户数据1、用户数据2和用户数据3的数据长度均为4KB,闪存设备对每一用户数据进行压缩后,得到对应的压缩单元,即压缩单元0、压缩单元1、压缩单元2和压缩单元3,其中,压缩单元0与压缩单元1的数据长度均为2.5KB,压缩单元2的数据长度为3KB,压缩单元3的数据长度为4KB。
由于压缩单元3的数据长度与预设长度4KB相同,将压缩单元3作为第一压缩单元存储至纠错单元内,例如:第三基础纠错单元,第三基础纠错单元由压缩单元3与第一校验数据组成,其中,第一校验数据为对压缩单元3进行纠错编码得到的校验数据。
由于压缩单元0、压缩单元1与压缩单元2的数据长度均小于预设长度,且两两组合得到的有效数据的数据长度之和大于预设长度,因此,在压缩单元0、压缩单元1与压缩单元2中选择一个压缩单元作为第二压缩单元,对该第二压缩单元进行切分,得到至少两个第三压缩单元,以使每一纠错单元(例如:第一基础纠错单元和第二基础纠错单元)内的组合数据的数据长度等于预设长度。其中,对第二压缩单元进行切分的具体实现方式与步骤S502相同,在此不再赘述。
将压缩单元1作为第二压缩单元,切分为两个第三压缩单元,其中,一个第三压缩单元的数据长度为1.5K,另一个第三压缩单元的数据长度为1K;将压缩单元0与数据长度为1.5K的第三压缩单元组合,得到一个数据长度为4K的组合数据,将该组合数据存储至纠错单元,例如:第一基础纠错单元,第一基础纠错单元由压缩单元0、数据长度为1.5K的第三压缩单元与第一校验数据组成,其中,压缩单元0为第一压缩单元,第一校验数据为对组合数据进行纠错编码得到的校验数据;将压缩单元2与数据长度为1K的第三压缩单元组合,得到一个数据长度为4K的组合数据,将该组合数据存储至纠错单元,例如:第二基础纠错单元,第二基础纠错单元由压缩单元2、数据长度为1K的第三压缩单元与第一校验数据组成,其中,压缩单元2为第一压缩单元,第一校验数据为对组合数据进行纠错编码得到的校验数据。
压缩单元1作为第二压缩单元,被存储至扩展纠错单元,其中,扩展纠错单元由压缩单元1与第二校验数据组成,第二校验数据为对压缩单元1与数据长度为1.5K的无效数据进行纠错编码得到的校验数据。
进一步地,将第一基础纠错单元、第二基础纠错单元与第三基础纠错单元写入闪存页,其中,压缩单元1对应的两个基础纠错单元即第一基础纠错单元与第二基础纠错单元连续排列。可以理解的是,一个闪存页内可存储有多个基础纠错单元,被切分为至少两部分的压缩单元对应的至少两个基础纠错单元,可在该闪存页内以连续排列的形式存储。
步骤S505:按照排列顺序,将若干个基础纠错单元和若干个扩展纠错单元进行组合,得到存储数据队列。
具体的,排列顺序包括有效数据与校验数据连续排列,或者,有效数据与校验数据分别连续排列。可以理解的是,有效数据和校验数据是纠错单元的两部分,它们在闪存上存储放置并没有严格要求,取决于存储控制芯片的设计要求,因此,校验数据的放置具有灵活性,可根据不同需求设置排列顺序。
请参阅图12,图12是图5中的步骤S505的细化流程示意图;
在本申请实施例中,一个第二压缩单元可被切分为至少两部分,下面以第二压缩单元被切分为两部分为例,进行说明。
如图12所示,步骤S505:按照排列顺序,将若干个基础纠错单元和若干个扩展纠错单元进行组合,得到存储数据队列,包括:
步骤S551:对基础纠错单元排列,得到存储数据队列;
具体的,若第二压缩单元被切分为两部分,则第二压缩单元对应的两个基础纠错单元连续排列。在存储数据队列内部,每一基础纠错单元内的有效数据与第一校验数据连续排列,或者,全部的基础纠错单元内的有效数据连续排列,全部的基础纠错单元内的第一校验数据连续排列。
步骤S552:将扩展纠错单元中的第二校验数据写入存储数据队列。
具体的,当每一基础纠错单元内的有效数据与第一校验数据连续排列时,将扩展纠错单元中的第二校验数据写入两个连续排列的基础纠错单元之间,其中,该扩展纠错单元内的有效数据包括两个连续排列的基础纠错单元内的第三压缩单元,该第二校验数据与两个连续排列的基础纠错单元中的第三压缩单元组成一个扩展纠错单元;当全部的基础纠错单元内的有效数据连续排列,全部的基础纠错单元内的第一校验数据连续排列时,将扩展纠错单元中的第二校验数据写入两个连续排列的基础纠错单元的第一校验数据之间,其中,该扩展纠错单元内的有效数据包括两个连续排列的基础纠错单元内的第三压缩单元,该第二校验数据与两个连续排列的基础纠错单元中的第三压缩单元组成一个扩展纠错单元。
在本申请实施例中,由于扩展纠错单元内的有效数据与该扩展单元对应的至少两个基础纠错单元内的第三压缩单元的数据相同,通过将扩展纠错单元中的第二校验数据写入存储数据队列,能够减少扩展纠错单元内的有效数据重复占据存储空间,从而提高闪存设备的存储空间的利用率,并且在读取第二压缩单元时,不会增加读带宽的负载,保证闪存设备的性能不受影响。
在本申请实施例中,在得到存储数据队列后,方法还包括:将存储数据队列写入闪存设备。
请参阅图13,图13是本申请实施例提供的一种将用户数据存储至闪存设备的完整流程示意图;
如图13所示,将用户数据存储至闪存设备的流程,包括:
步骤S1301:对用户数据进行压缩;
具体的,对至少两个用户数据进行压缩,得到每一用户数据一一对应的压缩单元,该步骤与步骤S501的具体实现方式相同,在此不再赘述。
步骤S1302:判断是否对压缩单元进行切分与组合;
具体的,在得到每一用户数据一一对应的压缩单元后,将每一数据长度等于预设长度的压缩单元存储至一一对应的纠错单元,和/或,将至少两个压缩单元组合并存储至纠错单元,其中,至少两个压缩单元组合得到的有效数据的数据长度小于或等于预设长度。若至少两个压缩单元组合得到的有效数据的数据长度小于预设长度,则需要对压缩单元进行切分与组合;若至少两个压缩单元组合得到的有效数据的数据长度等于预设长度,则不需要对压缩单元进行切分与组合。
进一步地,若需要对压缩单元进行切分与组合,则进入步骤S1303;若不需要对压缩单元进行切分与组合,则进入步骤S1304。
可以理解的是,在得到压缩单元后,对压缩单元进行遍历检查,若压缩率很低,例如:压缩率为90%,压缩单元的数据长度为3.5K,该情况下需要把一个压缩单元切分为多个部分才能达到比较理想的组合,管理代价较大,故而,在这种情况不对压缩单元进行切分和组合。
步骤S1303:对压缩单元进行切分与组合;
具体的,对至少一个第二压缩单元进行切分,得到至少两个第三压缩单元,并将至少一个第三压缩单元划分至有效数据集合,以使有效数据集合中的全部数据的数据长度之和等于预设长度。该步骤与步骤S502的具体实现方式相同,在此不再赘述。
步骤S1304:获取生成纠错单元请求;
具体的,生成纠错单元请求用于根据压缩单元得到纠错单元,其中,纠错单元包括基础纠错单元与扩展纠错单元。
步骤S1305:生成基础纠错单元;
具体的,将至少一个第三压缩单元与若干个第一压缩单元进行组合,得到若干个基础纠错单元,其中,一个基础纠错单元包括至少一个第一压缩单元和至少一个第三压缩单元。该步骤与步骤S503的具体实现方式相同,在此不再赘述。
步骤S1306:判断是否需要生成扩展纠错单元;
具体的,若至少一个第二压缩单元被切分,则需要生成扩展纠错单元;若没有压缩单元被切分,则不需要生成扩展纠错单元,其中,一个扩展纠错单元包括一个第二压缩单元。
进一步地,若需要生成扩展纠错单元,则进入步骤S1307;若不需要生成扩展纠错单元,则进入步骤S1308。
步骤S1307:生成扩展纠错单元;
具体的,若至少一个第二压缩单元被切分,则根据若干个第二压缩单元,得到若干个扩展纠错单元。该步骤与步骤S504的具体实现方式相同,在此不再赘述。
步骤S1308:获取纠错单元排列请求;
具体的,纠错单元排列请求用于将若干个基础纠错单元和若干个扩展纠错单元进行组合,得到存储数据队列。
步骤S1309:对基础纠错单元排列,得到存储数据队列;
具体的,该步骤与步骤S551的具体实现方式相同,在此不再赘述。
步骤S1310:判断存储数据队列是否需要包括扩展纠错单元;
具体的,若至少一个第二压缩单元被切分,则存储数据队列需要包括扩展纠错单元;若没有压缩单元被切分,则存储数据队列不需要包括扩展纠错单元。
进一步地,若存储数据队列需要包括扩展纠错单元,则进入步骤S1311;若存储数据队列不需要包括扩展纠错单元,则进入步骤S1312。
步骤S1311:将扩展纠错单元中的第二校验数据写入存储数据队列;
具体的,该步骤与步骤S552的具体实现方式相同,在此不再赘述。
步骤S1312:将存储数据队列写入闪存设备。
具体的,若没有压缩单元被切分,则将仅包括基础纠错单元的存储数据队列写入闪存设备的闪存介质;若已将扩展纠错单元中的第二校验数据写入存储数据队列,则将包括基础纠错单元与扩展纠错单元中的第二校验数据的存储数据队列写入闪存设备的闪存介质。
请参阅图14,图14是本申请实施例提供的一种将用户数据存储至闪存设备的示意图;
如图14所示,分别对用户数据0、用户数据1、用户数据2、……、用户数据n进行压缩,得到对应的压缩单元,即压缩单元0、压缩单元1、压缩单元2、……、压缩单元n。
由于压缩单元n的数据长度与预设长度相同,将压缩单元n存储至基础纠错单元n,基础纠错单元n由压缩单元n与第一校验数据Pn组成,其中,压缩单元n为第一压缩单元,第一校验数据Pn为对压缩单元n进行纠错编码得到的校验数据。
由于压缩单元0、压缩单元1与压缩单元2的数据长度均小于预设长度,且两两组合得到的有效数据的数据长度之和大于预设长度,因此,确定压缩单元1为第二压缩单元,对压缩单元1进行切分,得到第三压缩单元0和第三压缩单元1。其中,确定压缩单元1为第二压缩单元,对压缩单元1进行切分的具体实现方式与步骤S502相似,在此不再赘述。
将压缩单元0与第三压缩单元0组合,得到组合数据1,将该组合数据1存储至基础纠错单元0,基础纠错单元0由压缩单元0、第三压缩单元0与第一校验数据P0组成,其中,压缩单元0为第一压缩单元,组合数据1的数据长度为预设长度,第一校验数据P0为对组合数据进行纠错编码得到的校验数据;将压缩单元2与第三压缩单元1组合,得到一个组合数据2,将该组合数据2存储至基础纠错单元1,基础纠错单元1由压缩单元2、第三压缩单元1与第一校验数据P1组成,其中,组合数据2的数据长度为预设长度,压缩单元2为第一压缩单元,第一校验数据P1为对组合数据2进行纠错编码得到的校验数据;由于压缩单元1作为第二压缩单元被切分,因此,将压缩单元1即第三压缩单元0与第三压缩单元1(即组合数据n+1),存储至一个扩展纠错单元,该扩展纠错单元由第三压缩单元0、第三压缩单元1与第二校验数据组成,其中,当组合数据n+1的数据长度为预设长度时,第二校验数据为对组合数据n+1进行纠错编码得到的校验数据,当组合数据n+1和无效数据的数据长度为预设长度时,第二校验数据为对组合数据n+1和无效数据进行纠错编码得到的校验数据。
可以理解的是,对于压缩单元3~压缩单元n-1(图14未示出),采用的对压缩单元切分和组合的方法与上述对压缩单元0、压缩单元1与压缩单元2切分和组合的方法相同,在此不再赘述。
进一步地,将基础纠错单元0、基础纠错单元1、……、基础纠错单元n写入存储数据队列,其中,存储数据队列内的有效数据与校验数据连续排列,每一基础纠错单元内的有效数据与第一校验数据连续排列,压缩单元1对应的基础纠错单元0与基础纠错单元1连续排列,基础纠错单元0内的组合数据按照压缩单元0、第三压缩单元0的顺序存储,基础纠错单元1内的组合数据按照第三压缩单元1、压缩单元2的顺序存储。然后,将扩展纠错单元中的第二校验数据写入基础纠错单元0与基础纠错单元1之间,得到存储数据队列,将存储数据队列写入闪存页,在该存储数据队列中,扩展纠错单元由基础纠错单元0内的第三压缩单元0、第二校验数据与基础纠错单元1内的第三压缩单元1组成。
可以理解的是,图14中仅示出了一种存储数据队列内的数据的排列顺序(即有效数据与校验数据连续排列),在本申请实施例中,存储数据队列内的数据还可以采用其它的排列顺序,例如:有效数据与校验数据分别连续排列。
请参阅图15,图15是本申请实施例提供的一种有效数据与校验数据分别连续排列的示意图;
如图15所示,全部的基础纠错单元内的有效数据连续排列,例如:有效数据0、有效数据1、……、有效数据n连续排列,全部的校验数据连续排列,例如:校验数据0、校验数据1、……、校验数据n连续排列,其中,校验数据包括第一校验数据和第二校验数据,每一有效数据与对应的校验数据组成一个基础纠错单元,例如:有效数据0和校验数据0组成基础纠错单元0。可以理解的是,若第二压缩单元被切分为两个第三压缩单元,则一个第二校验数据与对应的两个有效数据中的第三压缩单元组成一个扩展纠错单元。
在本申请实施例中,在将存储数据队列写入闪存设备后,方法还包括:读取用户数据。
请参阅图16,图16是本申请实施例提供的一种读取用户数据的流程示意图;
如图16所示,读取用户数据的流程,包括:
步骤S1601:获取读请求;
具体的,获取主机发送的读请求。
步骤S1602:根据读请求,读取闪存页内的数据;
具体的,根据读请求,按照纠错单元写入时的排列顺序读取闪存页内的数据,以确定需要读取的闪存数据的位置,其中,闪存数据位于第一压缩单元中,或者位于第二压缩单元中。
步骤S1603:获取解码纠错单元请求;
具体的,解码纠错单元请求用于根据纠错单元的类型对纠错单元进行解码,其中,纠错单元的类型包括基础纠错单元和扩展纠错单元。
步骤S1604:判断闪存数据是否位于扩展纠错单元;
具体的,闪存设备内存储有记录表,该记录表用于记录第二压缩单元,通过查询该记录表,确定闪存数据是否位于第二压缩单元中。若闪存数据位于第二压缩单元中,则确定闪存数据位于扩展纠错单元,进入步骤S1605;若闪存数据位于第一压缩单元中,则确定闪存数据位于基础纠错单元,进入步骤S1606。
步骤S1605:对读取得到的闪存页内的数据重新排列;
具体的,若闪存数据位于第二压缩单元中,即闪存数据位于扩展纠错单元,则对读取得到的闪存页内的数据重新排列,以删除基础纠错单元中的第一校验数据。
步骤S1606:根据纠错单元的类型,对纠错单元进行解码;
具体的,若闪存数据位于扩展纠错单元,则在对读取得到的闪存页内的数据重新排列后,确定闪存数据对应的扩展纠错单元,对扩展纠错单元进行解码,以提取扩展纠错单元中的有效数据,其中,扩展纠错单元包括第二校验数据与两个连续排列的基础纠错单元中的第三压缩单元,扩展纠错单元中的有效数据包括与扩展纠错单元对应的两个连续排列的基础纠错单元中的第三压缩单元;若闪存数据位于基础纠错单元,则对闪存数据对应的基础纠错单元进行解码,以提取基础纠错单元中的有效数据。
步骤S1607:对有效数据进行解压,得到用户数据。
具体的,对基础纠错单元中的第一压缩单元进行解压,得到用户数据,或者,对扩展纠错单元中的有效数据进行解压,得到用户数据。
在本申请实施例中,通过在闪存数据位于第二压缩单元中时,对读取得到的闪存页内的数据重新排列,以删除基础纠错单元中的第一校验数据,确定闪存数据对应的扩展纠错单元,对扩展纠错单元进行解码,以提取扩展纠错单元中的有效数据,本申请能够避免在对压缩单元切分后,读取该压缩单元时,需要读取至少两个纠错单元进行解码的情况,不会导致读带宽的负载增加,从而保证闪存设备的性能不受影响。
请参阅图17,图17是本申请实施例提供的一种读取基础纠错单元内的数据的示意图;
在本申请实施例中,以有效数据与校验数据连续排列的排列顺序为例进行说明。存储数据队列采用有效数据与校验数据分别连续排列的排列顺序时,读取基础纠错单元内的数据的具体方式与此相似,在此不再赘述。
如图17所示,图中P0、P1、Pn均为第一校验数据,当需要读取的闪存数据为压缩单元0内的数据时,在确定需要读取的闪存数据位于基础纠错单元后,提取该基础纠错单元并对该基础纠错单元进行解码纠错,以得到基础纠错单元内的有效数据,例如:对基础纠错单元0进行解码纠错,得到有效数据,其中,基础纠错单元0由压缩单元0、第三压缩单元0与第一校验数据P0组成,有效数据包括压缩单元0与第三压缩单元0。进一步地,对有效数据中的第一压缩单元即压缩单元0进行解压得到用户数据,例如:对压缩单元0进行解压得到用户数据0。
请参阅图18,图18是本申请实施例提供的一种读取扩展纠错单元内的数据的示意图;
在本申请实施例中,以有效数据与校验数据连续排列的排列顺序为例进行说明。存储数据队列采用有效数据与校验数据分别连续排列的排列顺序时,读取扩展纠错单元内的数据的具体方式与此相似,在此不再赘述。
如图18所示,图中P0、P1、Pn均为第一校验数据,当需要读取的闪存数据为压缩单元1即第三压缩单元0和/或第三压缩单元1内的数据时,在确定需要读取的闪存数据位于扩展纠错单元后,提取该扩展纠错单元并对该扩展纠错单元进行解码纠错,以得到扩展纠错单元内的有效数据,例如:提取由第三压缩单元0、第三压缩单元1与第二校验数据组成的扩展纠错单元,对该扩展纠错单元进行解码纠错,得到有效数据,有效数据包括第三压缩单元0与第三压缩单元1,即压缩单元1。进一步地,对有效数据进行解压得到用户数据,例如:对第三压缩单元0与第三压缩单元1进行解压得到用户数据1。
可以理解的是,在图17与图18中,压缩单元0、压缩单元1与压缩单元2一共构成3个纠错单元,分别为:由压缩单元0、第三压缩单元0与第一校验数据P0组成的基础纠错单元0,由第三压缩单元1、压缩单元2与第一校验数据P1组成的基础纠错单元,由第三压缩单元0、第一压缩单元1与第二校验数据组成的扩展纠错单元。从分布上看,扩展纠错单元在两个基础纠错单元之间,呈现出重叠排列的效果,这种排列方式主要是为读取压缩单元1即第三压缩单元0和/或第三压缩单元1内的数据带来了方便,直接读取扩展纠错单元内的有效数据即可。如果没有扩展纠错单元,需要读取连续的两个基础纠错单元,然后提取第三压缩单元解压得到对应的用户数据,会导致读带宽的负载增加。
在本申请实施例中,通过提供一种纠错单元管理方法,应用于闪存设备,闪存设备包括纠错单元,纠错单元包括基础纠错单元与扩展纠错单元,纠错单元管理方法包括:对至少两个用户数据进行压缩,得到每一用户数据一一对应的压缩单元,其中,压缩单元包括第一压缩单元和第二压缩单元,第一压缩单元为压缩后不需被切分的压缩单元,第二压缩单元为压缩后需被切分的压缩单元;对至少一个第二压缩单元进行切分,得到至少两个第三压缩单元;将至少一个第三压缩单元与若干个第一压缩单元进行组合,得到若干个基础纠错单元,其中,一个基础纠错单元包括至少一个第一压缩单元和至少一个第三压缩单元;根据若干个第二压缩单元,得到若干个扩展纠错单元;按照排列顺序,将若干个基础纠错单元和若干个扩展纠错单元进行组合,得到存储数据队列。
通过将对第二压缩单元进行切分得到的第三压缩单元与若干个第一压缩单元进行组合,得到若干个基础纠错单元,并根据若干个第二压缩单元,得到若干个扩展纠错单元,然后按照排列顺序,将若干个基础纠错单元和若干个扩展纠错单元进行组合,得到存储数据队列,本申请能够减少冗余数据占据闪存设备的存储空间,提高闪存设备的存储空间的利用率,并保证闪存设备的性能不受影响。
请参阅图19,图19是本申请实施例提供的一种存储控制芯片的结构示意图;
在本申请实施例中,该存储控制芯片应用上述任一实施例的纠错单元管理方法。
如图19所示,存储控制芯片190包括数据压缩单元191、纠错管理单元192、数据纠错引擎单元193与数据存储单元194。
数据压缩单元191,连接纠错管理单元192与数据纠错引擎单元193,用于对用户数据进行压缩或者对有效数据进行解压,以得到用户数据,例如:对至少两个用户数据进行压缩,得到每一用户数据一一对应的压缩单元,其中,压缩单元包括第一压缩单元和第二压缩单元,第一压缩单元为压缩后不被切分的压缩单元,第二压缩单元为压缩后被切分的压缩单元。
纠错管理单元192,连接数据压缩单元191、数据纠错引擎单元193与数据存储单元194,用于管理数据压缩单元191、数据纠错引擎单元193与数据存储单元194,例如:对至少一个第二压缩单元进行切分,得到至少两个第三压缩单元。
请参阅图20,图20是本申请实施例提供的一种纠错管理单元的结构示意图;
如图20所示,纠错管理单元192包括数据组合和切分管理模块1921、纠错单元编解码管理模块1922和纠错单元排列管理模块1923。
数据组合和切分管理模块1921,连接纠错单元编解码管理模块1922,用于对至少一个第二压缩单元进行切分,得到至少两个第三压缩单元,或者,确定基础纠错单元中的组合数据包括的至少一个第三压缩单元与若干个第一压缩单元。
纠错单元编解码管理模块1922,连接数据组合和切分管理模块1921与纠错单元排列管理模块1923,用于确定需要编码的纠错单元的类型,和/或确定需要解码的纠错单元的类型,其中,纠错单元的类型包括基础纠错单元和扩展纠错单元。
纠错单元排列管理模块1923,连接纠错单元编解码管理模块1922,用于确定基础纠错单元与扩展纠错单元的排列顺序,和/或读取闪存数据时确定需要读取的闪存数据的位置。
数据纠错引擎单元193,连接数据压缩单元191、纠错管理单元192与数据存储单元194,用于将至少一个第三压缩单元与若干个第一压缩单元进行组合,得到若干个基础纠错单元,或者,根据若干个第二压缩单元,得到若干个扩展纠错单元,其中,一个基础纠错单元包括至少一个第一压缩单元和至少一个第三压缩单元。
在本申请的一些实施方式中,数据纠错引擎单元193具体用于根据纠错单元编解码管理模块1922确定的需要编码的纠错单元的类型,和/或确定需要解码的纠错单元的类型,与数据组合和切分管理模块1921确定的组合数据,编码生成若干个基础纠错单元与扩展纠错单元。
在本申请的一些实施方式中,数据纠错引擎单元193还用于根据纠错单元的类型,对纠错单元进行解码。
数据存储单元194,连接纠错管理单元192与数据纠错引擎单元193,用于按照排列顺序,将若干个基础纠错单元和若干个扩展纠错单元进行组合,得到存储数据队列,和/或将存储数据队列写入闪存设备。
在本申请实施例中,通过存储控制芯片包括:数据压缩单元,连接纠错管理单元与数据纠错引擎单元,用于对至少两个用户数据进行压缩,得到每一用户数据一一对应的压缩单元,其中,压缩单元包括第一压缩单元和第二压缩单元,第一压缩单元为压缩后不被切分的压缩单元,第二压缩单元为压缩后被切分的压缩单元;纠错管理单元,连接数据压缩单元、数据纠错引擎单元与数据存储单元,用于对至少一个第二压缩单元进行切分,得到至少两个第三压缩单元;数据纠错引擎单元,连接数据压缩单元、纠错管理单元与数据存储单元,用于将至少一个第三压缩单元与若干个第一压缩单元进行组合,得到若干个基础纠错单元,或者,根据若干个第二压缩单元,得到若干个扩展纠错单元,其中,一个基础纠错单元包括至少一个第一压缩单元和至少一个第三压缩单元;数据存储单元,连接纠错管理单元与数据纠错引擎单元,用于按照排列顺序,将若干个基础纠错单元和若干个扩展纠错单元进行组合,得到存储数据队列。
通过将对第二压缩单元进行切分得到的第三压缩单元与若干个第一压缩单元进行组合,得到若干个基础纠错单元,并根据若干个第二压缩单元,得到若干个扩展纠错单元,然后按照排列顺序,将若干个基础纠错单元和若干个扩展纠错单元进行组合,得到存储数据队列,本申请能够减少冗余数据占据闪存设备的存储空间,提高闪存设备的存储空间的利用率,并保证闪存设备的性能不受影响。
本申请实施例还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,可使得上述一个或多个处理器可执行上述任意方法实施例中的纠错单元管理方法,例如,执行上述任意方法实施例中的纠错单元管理方法。
以上所描述的装置或设备实施例仅仅是示意性的,其中作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用直至得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (11)
1.一种纠错单元管理方法,应用于闪存设备,其特征在于,所述闪存设备包括纠错单元,所述纠错单元包括基础纠错单元与扩展纠错单元,所述方法包括:
对至少两个用户数据进行压缩,得到每一用户数据一一对应的压缩单元,其中,所述压缩单元包括第一压缩单元和第二压缩单元,所述第一压缩单元为压缩后不需被切分的压缩单元,所述第二压缩单元为压缩后需被切分的压缩单元;
对至少一个所述第二压缩单元进行切分,得到至少两个第三压缩单元;
将至少一个所述第三压缩单元与若干个所述第一压缩单元进行组合,得到若干个基础纠错单元,其中,一个所述基础纠错单元包括至少一个所述第三压缩单元和至少一个所述第一压缩单元;
根据若干个所述第二压缩单元,得到若干个扩展纠错单元;
按照排列顺序,将若干个所述基础纠错单元和若干个所述扩展纠错单元进行组合,得到存储数据队列。
2.根据权利要求1所述的方法,其特征在于,所述纠错单元的数据长度大于所述压缩单元的数据长度,每一所述纠错单元内存储至少一个所述压缩单元,若一个所述第二压缩单元被切分为两个所述第三压缩单元,则所述第二压缩单元对应三个所述纠错单元,其中,一个所述第三压缩单元存储于第一基础纠错单元,另一个所述第三压缩单元存储于第二基础纠错单元,所述第二压缩单元整体存储于所述扩展纠错单元。
3.根据权利要求1所述的方法,其特征在于,所述对至少一个所述第二压缩单元进行切分,得到至少两个第三压缩单元,包括:
对至少两个所述压缩单元进行组合,以得到有效数据;
若所述有效数据的数据长度小于预设长度,则根据每一所述压缩单元的数据长度,对所述压缩单元进行递增排序,以得到压缩单元序列;将所述压缩单元序列中序列号最大的压缩单元划分至有效数据集合,并在所述压缩单元序列中删除序列号最大的压缩单元,以更新所述压缩单元序列;
若当前的压缩单元序列中序列号最小的压缩单元与有效数据集合中的全部数据的数据长度之和大于预设长度,则确定所述序列号最小的压缩单元为第二压缩单元,对所述第二压缩单元进行切分,得到至少两个第三压缩单元。
4.根据权利要求3所述的方法,其特征在于,所述对至少一个所述第二压缩单元进行切分,得到至少两个第三压缩单元,还包括:
若当前的压缩单元序列中序列号最小的压缩单元与有效数据集合中的全部数据的数据长度之和小于或等于预设长度,则将所述序列号最小的压缩单元划分至有效数据集合,在当前的压缩单元序列中删除序列号最小的压缩单元,以更新当前的压缩单元序列;
若预设长度与有效数据集合中的全部数据的数据长度之差小于切分阈值,且更新后的压缩单元序列中序列号最小的压缩单元的数据长度大于或等于切分阈值,则确定所述更新后的压缩单元序列中序列号最小的压缩单元为第二压缩单元,对所述第二压缩单元进行切分,得到至少两个第三压缩单元。
5.根据权利要求3或4所述的方法,其特征在于,所述将至少一个所述第三压缩单元与若干个所述第一压缩单元进行组合,得到若干个基础纠错单元,包括:
将至少一个所述第三压缩单元划分至所述有效数据集合,以得到组合数据,其中,所述有效数据集合包括至少一个第一压缩单元,所述组合数据包括所述有效数据集合中的全部数据,所述组合数据的数据长度之和等于所述预设长度;
对每一所述组合数据进行编码,得到与每一所述组合数据一一对应的第一校验数据;
将每一所述组合数据与对应的所述第一校验数据组合,得到若干个所述基础纠错单元。
6.根据权利要求1所述的方法,其特征在于,所述根据若干个所述第二压缩单元,得到若干个扩展纠错单元,包括:
若所述第二压缩单元的数据长度小于预设长度,则在所述第二压缩单元后填充无效数据,以使所述第二压缩单元与所述无效数据的数据长度之和等于预设长度;
对所述第二压缩单元与所述无效数据进行编码,得到第二校验数据,其中,所述无效数据不被存储;
将每一所述第二压缩单元与对应的每一所述第二校验数据组合,得到若干个所述扩展纠错单元。
7.根据权利要求1所述的方法,其特征在于,所述按照排列顺序,将若干个所述基础纠错单元和若干个所述扩展纠错单元进行组合,得到存储数据队列,包括:
对所述基础纠错单元排列,得到存储数据队列,其中,所述第二压缩单元对应的至少两个所述基础纠错单元连续排列;
将所述扩展纠错单元中的第二校验数据写入所述存储数据队列,其中,所述扩展纠错单元中的第二校验数据位于两个连续排列的所述基础纠错单元之间,所述第二校验数据与两个连续排列的所述基础纠错单元中的第三压缩单元组成一个所述扩展纠错单元;
所述方法还包括:
将所述存储数据队列写入所述闪存设备。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取读请求;
根据所述读请求,确定需要读取的闪存数据的位置;
若所述闪存数据位于所述第一压缩单元中,则确定所述闪存数据对应的所述基础纠错单元,对所述基础纠错单元进行解码,以提取所述基础纠错单元中的有效数据;
若所述闪存数据位于所述第二压缩单元中,则对读取得到的闪存页内的数据重新排列,以删除所述基础纠错单元中的第一校验数据;
确定所述闪存数据对应的所述扩展纠错单元,对所述扩展纠错单元进行解码,以提取所述扩展纠错单元中的有效数据,其中,所述扩展纠错单元包括第二校验数据与两个连续排列的所述基础纠错单元中的第三压缩单元。
9.一种存储控制芯片,其特征在于,应用如权利要求1-8任一项所述的纠错单元管理方法,所述存储控制芯片包括:
数据压缩单元,连接纠错管理单元与数据纠错引擎单元,用于对至少两个用户数据进行压缩,得到每一用户数据一一对应的压缩单元,其中,所述压缩单元包括第一压缩单元和第二压缩单元,所述第一压缩单元为压缩后不需被切分的压缩单元,所述第二压缩单元为压缩后需被切分的压缩单元;
纠错管理单元,连接数据压缩单元、数据纠错引擎单元与数据存储单元,用于对至少一个所述第二压缩单元进行切分,得到至少两个第三压缩单元;
数据纠错引擎单元,连接数据压缩单元、纠错管理单元与数据存储单元,用于将至少一个所述第三压缩单元与若干个所述第一压缩单元进行组合,得到若干个基础纠错单元,或者,根据若干个所述第二压缩单元,得到若干个扩展纠错单元,其中,一个所述基础纠错单元包括至少一个所述第三压缩单元和至少一个所述第一压缩单元;
数据存储单元,连接纠错管理单元与数据纠错引擎单元,用于按照排列顺序,将若干个所述基础纠错单元和若干个所述扩展纠错单元进行组合,得到存储数据队列。
10.根据权利要求9所述的存储控制芯片,其特征在于,所述纠错管理单元包括数据组合和切分管理模块、纠错单元编解码管理模块和纠错单元排列管理模块,其中,
数据组合和切分管理模块,连接所述纠错单元编解码管理模块,用于对至少一个所述第二压缩单元进行切分,得到至少两个所述第三压缩单元,或者,确定所述基础纠错单元中的组合数据包括的至少一个所述第三压缩单元与若干个所述第一压缩单元;
纠错单元编解码管理模块,连接所述数据组合和切分管理模块与所述纠错单元排列管理模块,用于确定需要编码的纠错单元的类型,和/或确定需要解码的纠错单元的类型,其中,所述纠错单元的类型包括基础纠错单元和扩展纠错单元;
纠错单元排列管理模块,连接所述纠错单元编解码管理模块,用于确定所述基础纠错单元与所述扩展纠错单元的排列顺序,和/或读取闪存数据时确定需要读取的闪存数据的位置。
11.一种闪存设备,其特征在于,包括:
如权利要求9或10所述的存储控制芯片;
至少一个闪存介质,与所述存储控制芯片通信连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310628921.1A CN116343890B (zh) | 2023-05-31 | 2023-05-31 | 纠错单元管理方法、存储控制芯片及闪存设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310628921.1A CN116343890B (zh) | 2023-05-31 | 2023-05-31 | 纠错单元管理方法、存储控制芯片及闪存设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116343890A CN116343890A (zh) | 2023-06-27 |
CN116343890B true CN116343890B (zh) | 2023-07-25 |
Family
ID=86879145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310628921.1A Active CN116343890B (zh) | 2023-05-31 | 2023-05-31 | 纠错单元管理方法、存储控制芯片及闪存设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116343890B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102934093A (zh) * | 2010-06-29 | 2013-02-13 | 英特尔公司 | 用于改进固态驱动器的性能和/或可靠性的方法和系统 |
JP2014186614A (ja) * | 2013-03-25 | 2014-10-02 | Toshiba Corp | Nandフラッシュメモリコントローラ |
CN113778337A (zh) * | 2021-09-10 | 2021-12-10 | 深圳大普微电子科技有限公司 | 一种基于闪存的固态硬盘及其数据管理方法 |
CN116302670A (zh) * | 2023-01-11 | 2023-06-23 | 阿里巴巴(中国)有限公司 | 编解码方法、编解码器、芯片、硬盘、通讯系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8892980B2 (en) * | 2010-06-15 | 2014-11-18 | Fusion-Io, Inc. | Apparatus, system, and method for providing error correction |
KR101759658B1 (ko) * | 2011-02-23 | 2017-07-19 | 삼성전자 주식회사 | 메모리 장치 및 메모리 시스템 |
KR102081980B1 (ko) * | 2012-10-08 | 2020-02-27 | 삼성전자 주식회사 | 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법 |
TW201416849A (zh) * | 2012-10-30 | 2014-05-01 | Jmicron Technology Corp | 錯誤檢查及校正方法以及相關錯誤檢查及校正電路 |
US10776201B2 (en) * | 2018-12-28 | 2020-09-15 | Micron Technology, Inc. | Extended error correction in storage device |
US11522565B2 (en) * | 2021-04-07 | 2022-12-06 | Nvidia Corporation | Packed error correction code (ECC) for compressed data protection |
-
2023
- 2023-05-31 CN CN202310628921.1A patent/CN116343890B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102934093A (zh) * | 2010-06-29 | 2013-02-13 | 英特尔公司 | 用于改进固态驱动器的性能和/或可靠性的方法和系统 |
JP2014186614A (ja) * | 2013-03-25 | 2014-10-02 | Toshiba Corp | Nandフラッシュメモリコントローラ |
CN113778337A (zh) * | 2021-09-10 | 2021-12-10 | 深圳大普微电子科技有限公司 | 一种基于闪存的固态硬盘及其数据管理方法 |
CN116302670A (zh) * | 2023-01-11 | 2023-06-23 | 阿里巴巴(中国)有限公司 | 编解码方法、编解码器、芯片、硬盘、通讯系统 |
Non-Patent Citations (1)
Title |
---|
ECC嵌入BCH码的NAND闪存纠错算法;李进 等;《哈尔滨工程大学学报》;第33卷(第11期);第1439-1404页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116343890A (zh) | 2023-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2016107272A1 (zh) | 固态硬盘存储设备和固态硬盘存储设备的数据存取方法 | |
CN103348330B (zh) | 采用独立硅元件的动态较高级冗余模式管理 | |
US11372765B2 (en) | Mapping for multi-state programming of memory devices | |
US9336081B2 (en) | Data writing and reading method, and memory controller and memory storage apparatus using the same for improving reliability of data access | |
US20180205393A1 (en) | Encoding method and apparatus | |
US20210011819A1 (en) | Techniques for managing context information for a storage device while maintaining responsiveness | |
CN107918524B (zh) | 数据储存装置及数据维护方法 | |
CN110795272B (zh) | 用于在可变大小的i/o上促进的原子性和延迟保证的方法和系统 | |
US20200304142A1 (en) | Memory system and information processing system | |
CN112749039B (zh) | 用于数据写入和数据恢复的方法、设备和程序产品 | |
US11048622B2 (en) | Memory system | |
US11307997B2 (en) | Logical to physical data storage mapping | |
CN114203250B (zh) | 固态存储器的数据存储方法、数据读取方法及固态存储器 | |
CN116302670A (zh) | 编解码方法、编解码器、芯片、硬盘、通讯系统 | |
CN114968837A (zh) | 数据压缩方法及闪存设备 | |
CN110780806A (zh) | 促进元数据和数据捆绑存储的原子性保证的方法和系统 | |
CN107402725B (zh) | 非易失性存储装置及其数据去重复方法 | |
CN116343890B (zh) | 纠错单元管理方法、存储控制芯片及闪存设备 | |
US10776052B2 (en) | Information processing apparatus, data compressing method, and computer-readable recording medium | |
CN115857811A (zh) | 一种数据处理方法、装置、固态硬盘及可读存储介质 | |
US11461173B1 (en) | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement | |
US11934264B2 (en) | ECC parity biasing for Key-Value data storage devices | |
CN114625318A (zh) | 应用于固态硬盘的数据写入方法、装置、设备 | |
CN109189694B (zh) | 一种scm的数据编码方法及数据存储方法 | |
CN108170554B (zh) | 一种nand的数据编码方法和装置 |
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 |