CN107168816B - Ecc帧长调整方法及其装置 - Google Patents
Ecc帧长调整方法及其装置 Download PDFInfo
- Publication number
- CN107168816B CN107168816B CN201610127678.5A CN201610127678A CN107168816B CN 107168816 B CN107168816 B CN 107168816B CN 201610127678 A CN201610127678 A CN 201610127678A CN 107168816 B CN107168816 B CN 107168816B
- Authority
- CN
- China
- Prior art keywords
- data
- padding
- ecc block
- user data
- nvm
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明公开了一种错误校正码帧长调整方法,该方法包括:从ECC块的填充数据截断数据,使得修改后的ECC块能够写入NVM的物理页,其中,所述修改后的ECC块由用户数据单元、填充数据的部分和校验数据组成;将修改后的ECC块写入NVM的物理页。本发明能够在单一ECC引擎中支持多种码率,减少闪存物理页大小对码率的限制。
Description
技术领域
本发明涉及错误校正码(ECC)领域,尤其涉及一种错误校正码帧长调整方法及其装置。
背景技术
存储设备中通常使用NVM(Non-Volatile Memory非易失存储器)作为存储介质。NAND闪存、相变存储器、FeRAM、MRAM等是常见的NVM。NVM中存储的数据会在一定程度上出现损坏,为克服此类问题,通常在访问NVM时,通过容错编解码对NVM上存储的数据进行保护。常用的容错编解码包括BCH、LDPC、RS等。
存储介质上通常按页来存储和读取数据。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。而用户数据单元一般为例如4K字节数据与元数据的组合,例如用户数据单元的大小为4120字节。不同的ECC对校验数据的长度也有限制,例如每用户数据单元的校验数据为120比特。用户数据单元连同其校验数据构成ECC块,在本例中,ECC块大小为4240字节。在物理页容能够容纳4个ECC块,余下的704字节可填充无关数据。
用户数据单元大小与ECC块大小的比率,被称为ECC的码率。ECC的码率体现了ECC的纠错能力。一般而言,码率越低,纠错能力越强。
发明内容
在不同的场景,可能希望存储不同尺寸的用户数据单元,并希望使用不同的ECC码率。一些ECC或ECC编码器对用户数据单元的大小有限制,例如,要求用户数据单元是64字节或512比特的整数倍。当用户数据单元的尺寸不满足ECC要求时,需要填充用户数据单元,使其大小满足ECC的要求。
例如(图1),用户数据单元大小是520字节(包括原始数据与元数据),为满足ECC要求(用户数据单元大小需要是64字节或512比特的整数倍),需要将520字节的用户数据单元填充至576字节(填充56字节的填充数据)。对填充后的576字节用户数据单元计算校验数据,例如64字节。那么ECC块(包括校验数据、用户数据单元与填充数据)的总长度为640字节。假设NVM的物理页大小为600字节,这导致640字节的ECC块无法被完整容纳在NVM的物理页中。导致在该NVM上无法为520字节大小的用户数据单元提供码率为0.8125(520/640)ECC。
根据本发明的一个方面,提供了一种错误校正码帧长调整方法,所述方法包括:从ECC块的填充数据截断数据,使得修改后的ECC块能够写入NVM的物理页,其中,所述修改后的ECC块由用户数据单元、填充数据的部分和校验数据组成;将修改后的ECC块写入NVM的物理页。
根据本发明的一个实施方式,其中对所述用户数据单元与所述填充数据的组合计算校验数据,得到ECC块。
根据本发明的一个实施方式,进一步包括:向用户数据单元添加填充数据。
根据本发明的一个实施方式,进一步包括:接收要写入NVM的用户数据单元。
根据本发明的一个实施方式,其中,判定所述用户数据单元的长度是否满足指定ECC编码器要求,若所述用户数据单元的长度不满足指定ECC编码器要求,向所述用户数据单元添加填充数据。
根据本发明的一个实施方式,其中,判定ECC块的长度是否大于NVM的物理页大小,若ECC块的长度大于NVM的物理页大小,从所述ECC块的填充数据截断数据,使得修改后的ECC块能够写入NVM的物理页。
根据本发明的一个实施方式,其中,所述填充数据生成方式为使用预定数据、使用结果可重复生成的预定随机数生成方法和/或随机数种子生成所述填充数据。
根据本发明的一个实施方式,其中,使用结果可重复生成的预定随机数生成方法和/或随机数种子生成所述填充数据中按照物理页的地址选择随机数生成方法和/或随机数种子。
根据本发明的一个实施方式,其中,使用结果可重复生成的预定随机数生成方法和/或随机数种子生成所述填充数据中按照物理页的地址和所述物理页的写入次数选择随机数生成方法和/或随机数种子。
根据本发明的第二方面,还提供了一种错误校正码帧长调整设备,所述设备包括:用于从ECC块的填充数据截断数据,使得修改后的ECC块能够写入NVM的物理页的装置,其中,所述修改后的ECC块由用户数据单元、填充数据的部分和校验数据组成;用于将修改后的ECC块写入NVM的物理页的装置。
根据本发明的第三方面,还提供了一种错误校正码帧长调整方法,所述方法包括:从NVM的物理页读出ECC块;在ECC块的填充数据的指定部分填充预定数据来修改ECC块;对修改后的ECC块进行ECC解码,得到信息数据;从信息数据中得到用户数据单元。
根据本发明的第四方面,还提供了一种错误校正码帧长调整设备,所述设备包括:用于从NVM的物理页读出ECC块的装置;用于在ECC块的填充数据的指定部分填充预定数据的装置;用于对修改后的ECC块进行ECC解码,得到信息数据的装置;用于从信息数据中得到用户数据单元的装置。
根据本发明的第五方面,还提供了一种错误校正码帧长调整方法,所述方法包括:从NVM的物理页读出ECC块;从ECC块取得校验数据与用户数据单元的组合;重新生成填充数据,并将校验数据、用户数据单元与所生成的填充数据组合成修改后的ECC块;对修改后的ECC块进行ECC解码,得到信息数据;从信息数据中得到用户数据单元。
根据本发明的第五方面的一个实施方式,其中,当ECC为LDPC时,进行软译码时,对于填充数据调整其LLR,以向译码器指示填充数据具有高可信度。
根据本发明的第六方面,还提供了一种错误校正码帧长调整设备,所述设备包括:用于从NVM的物理页读出ECC块的装置;用于从ECC块取得校验数据与用户数据单元的组合的装置;用于重新生成填充数据,并组成修改后的ECC块即填充数据、校验数据与用户数据单元的组合的装置;用于对修改后的ECC块进行ECC解码,得到信息数据的装置;用于从信息数据中得到用户数据单元的装置。
根据本发明的第七方面,还提供了一种错误校正码帧长调整方法,所述方法包括:从NVM的物理页读出校验数据与用户数据单元的组合;生成填充数据,并将校验数据、用户数据单元与所生成的填充数据组合成修改后的ECC块;对修改后的ECC块进行ECC解码,得到信息数据;从信息数据中得到用户数据单元。
根据本发明的第七方面的一个实施方式,其中,当ECC为LDPC时,进行软译码时,对于填充数据调整其LLR,以向译码器指示填充数据具有高可信度。
根据本发明的第七方面的一个实施方式,其中,软译码包括以下步骤:从NVM中读取校验数据的软比特与用户数据单元的软比特的组合;对校验数据的软比特、用户数据单元的软比特和填充数据的软比特的组合进行软译码。
根据本发明的第八方面,还提供了一种错误校正码帧长调整设备,所述设备包括:用于从NVM的物理页读出校验数据与用户数据单元的组合的装置;用于重新生成填充数据,并组成填充数据、校验数据与用户数据单元的组合即修改后的ECC块的装置;用于对修改后的ECC块进行ECC解码,得到信息数据的装置;用于从信息数据中得到用户数据单元的装置。
根据本发明的第九方面,还提供了一种错误校正码帧长调整方法,所述方法包括:删除第一ECC块的第一填充数据的部分,删除第二ECC块的第二填充数据的部分,使得修改后的第一ECC块与第二ECC块组合能够被NVM的物理页容纳;其中第一ECC块包括第一用户数据单元、第一填充数据以及第一校验数据,第二ECC块包括第二用户数据单元、第二填充数据以及第二校验数据;以及将修改后的第一ECC块与第二ECC块写入NVM的物理页。
根据本发明的第九方面的一个实施方式,还包括:接收要写入NVM的第一用户数据单元;向第一用户数据单元添加第一填充数据,使得第一用户数据单元与第一填充数据的组合满足ECC编码器对输入数据大小的要求;对第一用户数据单元与第一填充数据的组合计算第一校验数据,得到第一ECC块;接收要写入NVM的第二用户数据单元;向第二用户数据单元添加第二填充数据,使得第二用户数据单元与第二填充数据的组合满足ECC编码器对输入数据大小的要求;对第二用户数据单元与第二填充数据的组合计算第二校验数据,得到第二ECC块。
根据本发明的第九方面的一个实施方式,其中,使用预定数据、或者使用结果可重复生成的预定随机数生成方法和/或随机数种子生成所述第一填充数据与所述第二填充数据。
根据本发明的第九方面的一个实施方式,其中,第一用户数据单元与第一填充数据的组合的长度为k*N1,而第二用户数据单元与第二填充数据的组合的长度为k*N2,其中N1与N2为自然数,k为ECC编码器要求的数据块大小。
根据本发明的第十方面,还提供了一种错误校正码帧长调整设备,所述设备包括:用于删除第一ECC块的第一填充数据的部分,删除第二ECC块的第二填充数据的部分,使得修改后的第一ECC块与第二ECC块组合能够被NVM的物理页容纳的装置;其中第一ECC块包括第一用户数据单元、第一填充数据以及第一校验数据,第二ECC块包括第二用户数据单元、第二填充数据以及第二校验数据;以及用于将修改后的第一ECC块与第二ECC块写入NVM的物理页的装置。
根据本发明的第十一方面,还提供了一种错误校正码帧长调整方法,所述方法包括:确定第一填充数据的修改后长度与第二填充数据的修改后长度,根据第一填充数据的修改后长度生成第三填充数据与根据第二填充数据的修改后长度生成第四填充数据,使得第一用户数据单元、第三填充数据、第一校验数据与第二用户数据单元、第四填充数据与第二校验数据的组合能够被NVM的一个物理页容纳;生成修改后的第一ECC块与修改后的第二ECC块,其中修改后的第一ECC块包括第一用户数据单元、第一校验数据以及第三填充数据,第二ECC块包括第二用户数据单元、第二校验数据以及第四填充数据;以及将修改后的第一ECC块与第二ECC块写入NVM的物理页。
根据本发明的第十一方面的一个实施方式,还包括:接收要写入NVM的第一用户数据单元;向第一用户数据单元添加第一填充数据,使得第一用户数据单元与第一填充数据的组合满足ECC编码器对输入数据大小的要求;对第一用户数据单元与第一填充数据的组合计算第一校验数据;接收要写入NVM的第二用户数据单元;向第二用户数据单元添加第二填充数据,使得第二用户数据单元与第二填充数据的组合满足ECC编码器对输入数据大小的要求;对第二用户数据单元与第二填充数据的组合计算第二校验数据。
根据本发明的第十一方面的一个实施方式,其中,使用预定数据、或者使用结果可重复生成的预定随机数生成方法和/或随机数种子生成所述第一填充数据与所述第二填充数据。
根据本发明的第十一方面的一个实施方式,其中,第一用户数据单元与第一填充数据的组合的长度为k*N1,而第二用户数据单元与第二填充数据的组合的长度为k*N2,其中N1与N2为自然数,k为ECC编码器要求的数据块大小。
根据本发明的第十一方面的一个实施方式,其中,随机生成所述第三填充数据与所述第四填充数据。
根据本发明的第十二方面,还提供了一种错误校正码帧长调整设备,所述设备包括:用于确定第一填充数据的修改后长度与第二填充数据的修改后长度,根据第一填充数据的修改后长度生成第三填充数据与根据第二填充数据的修改后长度生成第四填充数据,使得第一用户数据单元、第三填充数据、第一校验数据与第二用户数据单元、第四填充数据与第二校验数据的组合能够被NVM的一个物理页容纳的装置;用于生成修改后的第一ECC块与修改后的第二ECC块的装置,其中修改后的第一ECC块包括第一用户数据单元、第一校验数据以及第三填充数据,第二ECC块包括第二用户数据单元、第二校验数据以及第四填充数据;以及用于将修改后的第一ECC块与第二ECC块写入NVM的物理页的装置。
根据本发明的第十三方面,提供一种包含计算机程序代码的计算机程序,当被载入计算机系统并在计算机系统上执行时,所述计算机程序代码使所述计算机系统执行根据本发明一方面提供的错误校正码帧长调整方法或者根据本发明第三方面提供的错误校正码帧长调整方法或者本发明第五方面提供的错误校正码帧长调整方法或者本发明第七方面提供的错误校正码帧长调整方法或者本发明第九方面提供的错误校正码帧长调整方法或本发明第十一方面提供的错误校正码帧长调整方法。
根据本发明的第十四方面,提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述计程序代码使所述存储设备执行根据本发明一方面提供的错误校正码帧长调整方法或者根据本发明第三方面提供的错误校正码帧长调整方法或者本发明第五方面提供的错误校正码帧长调整方法或者本发明第七方面提供的错误校正码帧长调整方法或者本发明第九方面提供的错误校正码帧长调整方法或本发明第十一方面提供的错误校正码帧长调整方法。
本发明能够在单一ECC引擎中支持多种码率,减少闪存物理页大小对码率的限制。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。其中在附图中,参考数字之后的字母标记指示多个相同的部件,当泛指这些部件时,将省略其最后的字母标记。在附图中:
图1示出了错误校正码帧长的示意图;
图2示出了根据本发明的一个实施方式的错误校正码帧长调整方法的示意图;
图3A示出了根据本发明的一个实施方式的错误校正码帧长调整方法的流程图;
图3B示出了根据本发明的另一个实施方式的错误校正码帧长调整方法的流程图;
图4示出了根据本发明的一个实施方式的错误校正码帧长调整设备的结构示意图;
图5A示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的流程图;
图5B示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的示意图;
图6A示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的流程图;
图6B示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的示意图;
图7示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的示意图;
图8A示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的流程图;
图8B示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的流程图;
图9示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的流程图;
图10示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的示意图。
在附图中,使用相同或类似的标号来指代相同或类似的元素。
具体实施方式
下面结合附图和具体的实施方式对本发明作进一步的描述。
图2示出了根据本发明的一个实施方式的错误校正码帧长调整方法的示意图。
图3A示出了根据本发明的一个实施方式的错误校正码帧长调整方法的流程图。图3A所示的流程图仅仅是示意性的,其中记载的步骤可以并行执行、省略和/或增加其他步骤。
如图3A所示,错误校正码帧长调整方法包括以下步骤:
步骤S3100:从ECC块的填充数据截断数据,使得修改后的ECC块能够写入NVM的物理页;
步骤S3200:将修改后的ECC块写入NVM的物理页。
参看图2,对用户数据单元与填充数据(210)的组合计算校验数据,得到ECC块(220),ECC块220由用户数据单元、填充数据和校验数据组成,在一些情况下,ECC块220的总长度大于要写入NVM的物理页。例如,用户数据单元的大小为520字节,填充数据的大小为56字节,校验数据210的大小为64字节,则ECC块220的总长度为640字节,假设要写入NVM的物理页的大小为600字节,则此时的ECC块不能被写入NVM的物理页,
为将ECC块写入NVM的物理页,参看图3A,在步骤S3100中将ECC块220中的填充数据210截断为填充数据215,使得修改后的ECC块225的总长度等于或小于要写入NVM的物理页。
在步骤S3100中,删除填充数据210的部分,将56字节的填充数据210删除40字节或更多,从而使得修改后的ECC块225的总长度等于或小于600字节,从而能够被NVM的物理页所容纳。可选的,NVM可选择为NAND闪存、相变存储器、FeRAM或MRAM。
结合图2和图3A,在步骤S3200中,修改后的ECC块225由用户数据单元、填充数据215(为填充数据210的部分)和校验数据组成,在步骤S3100中修改后的ECC块225的总长度等于或小于600字节,将修改后的ECC块225写入600字节的NVM的物理页中。
图3B示出了根据本发明的另一个实施方式的错误校正码帧长调整方法的流程图。
如图3B所示,错误校正码帧长调整方法包括以下步骤:
步骤S3040:接收要写入NVM的用户数据单元;
步骤S3050:向用户数据单元添加填充数据;
步骤S3100:从ECC块的填充数据截断数据,使得修改后的ECC块能够写入NVM的物理页;
步骤S3200:将修改后的ECC块写入NVM的物理页。
结合图2和图3B所示,在步骤S3040中,接收要写入NVM的用户数据单元,在图2所示的例子中,用户数据单元大小为520字节。用户数据单元包括原始数据与元数据。
在步骤S3050中,向用户数据单元添加填充数据210(参看图2)。根据指定ECC编码器要求,若用户数据单元的长度不满足指定ECC编码器要求,向用户数据单元添加填充数据。例如,用户数据单元大小是520字节,为满足ECC编码器要求(例如,要求用户数据单元是64字节或512比特的整数倍),可将520字节的用户数据单元填充至576字节(填充56字节填充数据210)。可以理解的是,在大多数的情况下,事先已知用户数据单元的长度不满足指定ECC编码器要求,则无需对用户数据单元的长度是否满足指定ECC编码器要求进行判定。
在步骤S3100中,从ECC块的填充数据210截断数据,使得修改后的ECC块225能够写入NVM的物理页。在一个实施例中,判断ECC块220的长度是否大于NVM的物理页大小,若ECC块220的长度大于NVM的物理页大小,对ECC块220的填充数据210进行截断。可以理解的是,在大多数的情况下,事先已知ECC块210的长度大于NVM的物理页大小,则无需对ECC块210的长度和NVM的物理页大小进行判定。
在根据本发明的实施例中,可使用多种方式生成填充数据。例如,填充数据生成方式可以为使用预定数据模式(例如重复的“01”比特序列)、使用结果可重复生成的预定随机数生成方法和/或随机数种子生成填充数据。其中,使用结果可重复生成的预定随机数生成方法和/或随机数种子生成填充数据中,可按照物理页的地址选择随机数生成方法和/或随机数种子。可选的,使用结果可重复生成的预定随机数生成方法和/或随机数种子生成填充数据中按照物理页的地址和该物理页的写入次数选择随机数生成方法和/或随机数种子。
在进一步的实施例中,填充数据的长度可以有多种,例如,ECC编码器要求信息数据长度为64字节倍数,而用户数据单元长度为520字节,那么填充数据的长度可以是56字节,也可以是56+64*n字节。
根据本发明的另一个方面,本发明还提供了一种错误校正码帧长调整设备,如图4所示,该设备包括:用于从ECC块的填充数据截断数据,使得修改后的ECC块能够写入NVM的物理页的装置410,其中,修改后的ECC块由用户数据单元、填充数据的部分和校验数据组成;以及用于将修改后的ECC块写入NVM的物理页的装置420。
在图2、图3A与图3B中,展示了根据本发明实施例调整错误校正码帧长(ECC块长度),以写入NVM的物理页的过程。接下来将描述从NVM物理页中读出ECC块,调整ECC块长度并进行ECC解码的过程。
图5A示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的流程图。图5A所示的流程图仅仅是示意性的,其中记载的步骤可以并行执行、省略和/或增加其他步骤。图5B示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的示意图。
如图5A所示,错误校正码帧长调整方法包括以下步骤:
步骤S5100:从NVM的物理页读出ECC块;
步骤S5200:在ECC块的填充数据的指定部分填充预定数据来修改ECC块;
步骤S5300:对修改后的ECC块进行ECC解码,得到信息数据;
步骤S5400:从信息数据中删除填充数据,得到用户数据单元。
结合图5A和图5B所示,在步骤S5100中,从NVM的物理页读出ECC块520(图5B)。此时的ECC块是由用户数据单元、填充数据的部分510和校验数据组成,在图2所示的例子中,ECC块520的长度与NVM的物理页的大小相等。
结合图5A和图5B所示,在步骤S5200中,在ECC块520的填充数据部分510的指定位置(尾部)填充预定数据来修改ECC块520,指定位置填充的预定数据为在步骤S3100(图3A、图3B)中从填充数据210中删除的数据,从而还原出同填充数据210具有相同尺寸的填充数据515。修改后的ECC块525由用户数据单元、填充数据515和校验数据组成。
从NVM的物理页读出的ECC块520可能存在错误,需要对ECC块520进行错误校正。修改后的ECC块525的长度满足ECC解码器的要求,对ECC块525进行ECC解码,若译码成功,得到校正后的校验数据、用户数据单元与填充数据。将用户数据单元与填充数据的组合称为信息数据,在步骤S5400,从信息数据中提取出用户数据单元。
从NVM物理页中读出的填充数据的部分510可能存在错误,而在步骤S5200中填充的预定数据则不存在因NVM物理页引入的错误,从而ECC块525可具有比ECC块520低的误码率,从而有利于通过ECC解码得到正确的用户数据单元。
图6A示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的流程图。图6B示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的示意图。
如图6A所示,错误校正码帧长调整方法包括以下步骤:
步骤S6100:从NVM的物理页读出ECC块;
步骤S6200:从ECC块取得校验数据与用户数据单元的组合;
步骤S6300:重新生成填充数据,并将校验数据、用户数据单元与所生成的填充数据组合成修改后的ECC块;
步骤S6400:对修改后的ECC块进行ECC解码,得到信息数据;
步骤S6500:从信息数据中删除填充数据,得到用户数据单元。
在步骤S6100中,参看图6B,ECC块620是由用户数据单元、填充数据的部分610和校验数据组成。在步骤S6200中,忽略或删除填充数据的部分610,取得校验数据与用户数据单元的组合。可选地,步骤S6100与步骤S6200可以合并,从NVM的物理页读出ECC块时,无需读出完整的NVM物理页,而是只读出NVM物理页中存储的校验数据与用户数据单元。可在NVM读命令中指定读出NVM物理页中存储的校验数据与用户数据单元。
在步骤S6300中,依据步骤S3050(图3B)中填充数据生成方式的来重新生成填充数据615,得到ECC块625。ECC块625包括从NVM物理页中读出的校验数据、用户数据单元与填充数据615。在从NVM物理页中读出的校验数据与用户数据单元存在因NVM物理页所引入的错误然而由于生成方式相同,从而在步骤S6300中生成的填充数据615中不存在因NVM物理页引入的错误。因而修改后的ECC块625可具有比ECC块620低的误码率,从而有利于通过ECC解码得到正确的用户数据单元。
在步骤S6400中,对ECC块625进行ECC译码。若译码成功,得到信息数据,信息数据包括用户数据单元以及填充数据615。
进一步的实施例中,当ECC为LDPC(低密度奇偶校验码)时,在进行软译码时,对于填充数据615调整其LLR(对数似然比),以向译码器指示填充数据615具有高可信度。例如,软译码包括以下步骤:从NVM中读取校验数据的软比特与用户数据单元的软比特的组合;对校验数据的软比特、用户数据单元的软比特和填充数据软比特的组合进行软译码。
在步骤S6500中,从译码结果中移除填充数据,得到用户数据单元。用户数据单元位于译码结果的预定位置,可从译码结果的预定位置获取用户数据单元。
图7示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的示意图。根据图7,在NVM物理页中存储两个ECC块。所属领域技术人员将意识到,在NVM物理页中还可存储其他数量的ECC块。
图8A示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的流程图。
如图8A所示,错误校正码帧长调整方法包括以下步骤:
步骤S8100:删除第一ECC块的第一填充数据的部分,删除第二ECC块的第二填充数据的部分,使得修改后的第一ECC块与第二ECC块组合能够被NVM的物理页容纳;
步骤S8200:将修改后的第一ECC块与第二ECC块写入NVM的物理页。
结合图7和图8A所示,要将ECC块720与ECC块722写入同一NVM物理页。ECC块720包括校验数据、用户数据单元与填充数据710,ECC块722包括校验数据、用户数据单元与填充数据712。ECC块710与ECC块722组合后的大小超过了NVM物理页的大小,因而通过根据本发明的实施例来调整ECC块720与ECC块722的大小,来满足NVM物理页大小的要求。
在步骤S8100中,将ECC块720的填充数据710截断,得到填充数据715,以及将将ECC块722的填充数据712截断,得到填充数据717。使得修改后的ECC块725与ECC块727的总长度等于或小于要写入NVM的物理页。
可选的,在截断填充数据之前,判定ECC块720和ECC块722的总长度是否大于NVM的物理页大小,若ECC块720和ECC722块的长度大于NVM的物理页大小,再执行对填充数据710与填充数据712的截断,使得修改后的ECC725块和ECC块727能够写入NVM的物理页。可以理解的是,在大多数的情况下,事先已知ECC720块和ECC722块的长度,以及NVM的物理页大小,并确定是否需要截断填充数据,以及截断后填充数据的大小,从而无需对ECC块720与ECC块722的长度和NVM的物理页大小进行判定。
可以理解的是,在图7的例子中,ECC块的数量为2,在进一步的实施例中,ECC块的数量可以大于2,从而在NVM的物理页中写入多个(大于2)ECC块,这就需要将每个ECC块中的填充数据截取部分数据,使得NVM的物理页可以容纳多个ECC块。
依然可以理解的,从填充数据710中截断数据的长度与从填充数据712中截断数据的长度可以不同。ECC块720与ECC块722的长度也可以不同。ECC块可以具有例如4种,每种ECC块具有预定的长度与填充数据大小。
图8B示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的流程图。图8B所示的流程图仅仅是示意性的,其中记载的步骤可以按照不同顺序执行、并行执行、省略和/或增加其他步骤。
如图8B所示,错误校正码帧长调整方法包括以下步骤:
步骤S8040:接收要写入NVM的第一用户数据单元;
步骤S8050:向第一用户数据单元添加第一填充数据,使得第一用户数据单元与第一填充数据的组合满足ECC编码器对输入数据大小的要求;
步骤S8060:对第一用户数据单元与第一填充数据的组合计算第一校验数据,得到第一ECC块;
步骤S8070:接收要写入NVM的第二用户数据单元;
步骤S8080:向第二用户数据单元添加第二填充数据,使得第二用户数据单元与第二填充数据的组合满足ECC编码器对输入数据大小的要求;
步骤S8090:对第二用户数据单元与第二填充数据的组合计算第二校验数据,得到第二ECC块;
步骤S8100:删除第一ECC块的第一填充数据的部分,删除第二ECC块的第二填充数据的部分,使得修改后的第一ECC块与第二ECC块组合能够被NVM的物理页容纳;
步骤S8200:将修改后的第一ECC块与第二ECC块写入NVM的物理页。
进一步的实施例中,添加填充数据的长度的方式可以有多种,例如,ECC编码器要求信息数据长度为k字节倍数,则第一用户数据单元与第一填充数据的组合的长度为k*N1(N1为自然数),而第二用户数据单元与第二填充数据的组合的长度为k*N2(N2为自然数)。N1与N2可以相同也可以不同。
图9示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的流程图。图9所示的流程图仅仅是示意性的,其中记载的步骤可以按照不同顺序执行、并行执行、省略和/或增加其他步骤。图10示出了根据本发明的又一个实施方式的错误校正码帧长调整方法的示意图。
参看图9与图10,错误校正码帧长调整方法包括以下步骤:
步骤S9040:接收要写入NVM的第一用户数据单元(1030);
步骤S9050:向第一用户数据单元(1030)添加第一填充数据(1010),使得第一用户数据单元(1030)与第一填充数据(1010)的组合满足ECC编码器对输入数据大小的要求;
步骤S9060:对第一用户数据单元(1030)与第一填充数据(1010)的组合计算第一校验数据(1040);
步骤S9070:接收要写入NVM的第二用户数据单元(1032);
步骤S9080:向第二用户数据单元(1032)添加第二填充数据(1012),使得第二用户数据单元(1032)与第二填充数据(1012)的组合满足ECC编码器对输入数据大小的要求;
步骤S9090:对第二用户数据单元(1032)与第二填充数据(1012)的组合计算第二校验数据(1042);
步骤S9100:确定第一填充数据(1010)的修改后长度与第二填充数据(1012)的修改后长度,使得包括第一用户数据单元(1030)、第一校验数据(1040)与第三填充数据(1015)的修改后ECC块(1025)与包括第二用户数据单元(1032)、第二校验数据(1042)与第四填充数据(1017)的修改后ECC块(1027)组合能够被NVM的一个物理页容纳。根据第一填充数据(1010)的修改后长度生成第三填充数据(1015),以及根据第二填充数据(1012)的修改后长度生成第四填充数据(1017)。
作为举例,使用预定数据、或者使用结果可重复生成的预定随机数生成方法和/或随机数种子生成第一填充数据(1010)与第二填充数据(1012)。而对第三填充数据(1015)与第四填充数据(1017)没有重复生成的需要。优选地,根据NVM对写入数据的随机化要求而生成第三填充数据(1015)与第四填充数据(1017)。在从NVM物理页中读出ECC块时,无需读出第三填充数据(1015)与第四填充数据(1017),而是重新生成第一填充数据(1010)与第二填充数据(1012)来用于解码用户数据单元。
步骤S9200:生成修改后的第一ECC块(1025)与修改后的第二ECC块(1027);以及
步骤S9300:将修改后的第一ECC(1025)块与第二ECC块(1027)写入NVM的物理页。
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。
这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作步骤,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的步骤。
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的步骤的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或步骤的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。
上述的不同块、操作以及技术的至少一部分可以被执行,通过使用硬件,控制设备执行固件指令,控制设备执行软件指令,或者及其任意组合。当采用执行固件以及软件指令的控制设备执行时,软件或固件指令可以被存储在任意计算机可读存储介质中,例如磁盘,光盘或者其他存储介质,在RAM或者ROM或者flash存储器,控制设备,硬盘,光盘,磁盘等等。同样地,软件和固件指令可以被传输到用户或者系统,通过任意已知的或者期望的传输方式包括,例如,在计算机可读盘或者其他便携式计算机存储机制或者通过通信媒介。通信媒介典型地具体化计算机可读指令,数据结构,序模块或者在已调制数据信号中的其它数据例如载波或者其他传输机制。通过示例,并非限制,通信介质包括有线介质例如有线网络或者单线连接,以及无线媒介,例如声、无线频率,红外以及其它无线介质。从而,软件和固件指令可以被传输给用户或者系统,通过通信信道,例如电话线,DSL线,电缆电视线,光纤线缆,无线信道,因特网,等等(通过便携式存储介质提供这样的软件,其被看作是相同的或者可互换的)。软件或者固件指令可以包括机器可读指令,这些可读指令在由控制设备执行时,导致控制设备执行不同动作。
当在硬件中执行时,硬件可以包括一个或多个离散组件,集成电路,应用的集成电路(ASIC),等等。
需要理解的是,本发明可以以纯软件、纯硬件、固件以及上述的各种组合来实现。硬件例如可以是控制设备、专用集成电路、大规模集成电路等等。
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。
Claims (8)
1.一种错误校正码帧长调整方法,所述方法包括:
从NVM的物理页读出校验数据与用户数据单元的组合,其中,忽略或删除填充数据的部分;
重新生成填充数据,并将校验数据、用户数据单元与所生成的填充数据组合成修改后的ECC块,其中,重新生成的填充数据依据将ECC块写入NVM的物理页时填充数据生成的方式重新生成;
对修改后的ECC块进行ECC解码,得到信息数据;
从信息数据中得到用户数据单元;
其中,对ECC块进行译码,若译码成功,得到信息数据,该信息数据包括用户数据单元以及填充数据,从译码结果中移除填充数据,得到用户数据单元;其中,用户数据单元位于译码结果的预定位置,从译码结果的预定位置获取用户数据单元;
其中,当ECC为LDPC且进行软译码时,对于填充数据调整其LLR,以向译码器指示填充数据具有高可信度;
其中,软译码包括以下步骤:从NVM中读取校验数据的软比特与用户数据单元的软比特的组合;对校验数据的软比特、用户数据单元的软比特和填充数据软比特的组合进行软译码。
2.一种错误校正码帧长调整方法,所述方法包括:
删除第一ECC块的第一填充数据的部分,删除第二ECC块的第二填充数据的部分,使得修改后的第一ECC块与第二ECC块组合能够被NVM的物理页容纳;其中第一ECC块包括第一用户数据单元、第一填充数据以及第一校验数据,第二ECC块包括第二用户数据单元、第二填充数据以及第二校验数据;以及
将修改后的第一ECC块与第二ECC块写入NVM的物理页;
其中,修改后的第一ECC块与第二ECC块的总长度等于或小于要写入NVM的物理页;
其中,当ECC为LDPC且进行软译码时,对于填充数据调整其LLR,以向译码器指示填充数据具有高可信度;
其中,软译码包括以下步骤:从NVM中读取校验数据的软比特与用户数据单元的软比特的组合;对校验数据的软比特、用户数据单元的软比特和填充数据软比特的组合进行软译码。
3.根据权利要求2所述的方法,还包括:
接收要写入NVM的第一用户数据单元;
向第一用户数据单元添加第一填充数据,使得第一用户数据单元与第一填充数据的组合满足ECC编码器对输入数据大小的要求;
对第一用户数据单元与第一填充数据的组合计算第一校验数据,得到第一ECC块;
接收要写入NVM的第二用户数据单元;
向第二用户数据单元添加第二填充数据,使得第二用户数据单元与第二填充数据的组合满足ECC编码器对输入数据大小的要求;
对第二用户数据单元与第二填充数据的组合计算第二校验数据,得到第二ECC块。
4.根据权利要求2-3之一所述的方法,其中,第一用户数据单元与第一填充数据的组合的长度为k*N1,而第二用户数据单元与第二填充数据的组合的长度为k*N2,其中N1与N2为自然数,k为ECC编码器要求的数据块大小。
5.一种错误校正码帧长调整方法,所述方法包括:
确定第一填充数据的修改后长度与第二填充数据的修改后长度,根据第一填充数据的修改后长度生成第三填充数据与根据第二填充数据的修改后长度生成第四填充数据,使得第一用户数据单元、第三填充数据、第一校验数据与第二用户数据单元、第四填充数据与第二校验数据的组合能够被NVM的一个物理页容纳;
生成修改后的第一ECC块与修改后的第二ECC块,其中修改后的第一ECC块包括第一用户数据单元、第一校验数据以及第三填充数据,第二ECC块包括第二用户数据单元、第二校验数据以及第四填充数据;以及
将修改后的第一ECC块与第二ECC块写入NVM的物理页;
其中,修改后的第一ECC块与第二ECC块的总长度等于或小于要写入NVM的物理页;
根据NVM的物理页对写入数据的随机化要求而生成第三填充数据和第四填充数据;且从NVM物理页中读出ECC块时,无需读出第三填充数据与第四填充数据,而是重新生成第一填充数据与第二填充数据来用于解码用户数据单元;
其中,当ECC为LDPC且进行软译码时,对于填充数据调整其LLR,以向译码器指示填充数据具有高可信度;
其中,软译码包括以下步骤:从NVM中读取校验数据的软比特与用户数据单元的软比特的组合;对校验数据的软比特、用户数据单元的软比特和填充数据软比特的组合进行软译码。
6.根据权利要求5所述的方法,还包括:
接收要写入NVM的第一用户数据单元;
向第一用户数据单元添加第一填充数据,使得第一用户数据单元与第一填充数据的组合满足ECC编码器对输入数据大小的要求;
对第一用户数据单元与第一填充数据的组合计算第一校验数据;
接收要写入NVM的第二用户数据单元;
向第二用户数据单元添加第二填充数据,使得第二用户数据单元与第二填充数据的组合满足ECC编码器对输入数据大小的要求;
对第二用户数据单元与第二填充数据的组合计算第二校验数据。
7.根据权利要求5-6之一所述的方法,其中,第一用户数据单元与第一填充数据的组合的长度为k*N1,而第二用户数据单元与第二填充数据的组合的长度为k*N2,其中N1与N2为自然数,k为ECC编码器要求的数据块大小。
8.根据权利要求7所述的方法,其中,随机生成所述第三填充数据与所述第四填充数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610127678.5A CN107168816B (zh) | 2016-03-07 | 2016-03-07 | Ecc帧长调整方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610127678.5A CN107168816B (zh) | 2016-03-07 | 2016-03-07 | Ecc帧长调整方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107168816A CN107168816A (zh) | 2017-09-15 |
CN107168816B true CN107168816B (zh) | 2021-03-23 |
Family
ID=59849298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610127678.5A Active CN107168816B (zh) | 2016-03-07 | 2016-03-07 | Ecc帧长调整方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107168816B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595287B (zh) * | 2018-04-27 | 2021-11-05 | 新华三技术有限公司成都分公司 | 基于纠删码的数据截断方法及装置 |
CN114047880B (zh) * | 2021-11-16 | 2023-07-04 | 深圳忆联信息系统有限公司 | 多Pass编程的NAND写入功耗优化方法、装置及计算机设备 |
CN114726382B (zh) * | 2022-05-16 | 2022-08-09 | 北京得瑞领新科技有限公司 | Ecc帧长匹配方法、装置、存储介质及固态硬盘 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412778A (zh) * | 2013-08-12 | 2013-11-27 | 上海盈方微电子股份有限公司 | 一种片上系统NANDFlash程序引导方法与装置 |
CN104658610A (zh) * | 2015-01-14 | 2015-05-27 | 广东省电子信息产业集团有限公司 | 一种动态调整的闪存错误检测方法及装置 |
CN104871249A (zh) * | 2012-10-24 | 2015-08-26 | 西部数据技术公司 | 数据存储系统的自适应错误纠正码 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4946249B2 (ja) * | 2006-08-07 | 2012-06-06 | 富士通セミコンダクター株式会社 | Eccのコード長が変更可能な半導体メモリ装置 |
-
2016
- 2016-03-07 CN CN201610127678.5A patent/CN107168816B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104871249A (zh) * | 2012-10-24 | 2015-08-26 | 西部数据技术公司 | 数据存储系统的自适应错误纠正码 |
CN103412778A (zh) * | 2013-08-12 | 2013-11-27 | 上海盈方微电子股份有限公司 | 一种片上系统NANDFlash程序引导方法与装置 |
CN104658610A (zh) * | 2015-01-14 | 2015-05-27 | 广东省电子信息产业集团有限公司 | 一种动态调整的闪存错误检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107168816A (zh) | 2017-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8769374B2 (en) | Multi-write endurance and error control coding of non-volatile memories | |
KR101588605B1 (ko) | 레이트 호환성 펑처링된 코드를 지원하는 메모리 컨트롤러 | |
KR101730510B1 (ko) | 메타데이터 태그를 통한 불규칙적인 패리티 분포 검출 | |
US9543983B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US7865809B1 (en) | Data error detection and correction in non-volatile memory devices | |
US20120278687A1 (en) | Method of data storage in non-volatile memory | |
KR102275717B1 (ko) | 플래시 메모리 시스템 및 그의 동작 방법 | |
US10489246B2 (en) | Data storage device and data maintenance method thereof | |
CN107168816B (zh) | Ecc帧长调整方法及其装置 | |
JP2019057812A (ja) | メモリシステム | |
KR20180010447A (ko) | 컨트롤러, 반도체 메모리 시스템 및 그의 동작 방법 | |
US10326473B2 (en) | Symbol-based coding for NAND flash devices | |
CN111869111B (zh) | 生成和使用可逆的缩短博斯-查德胡里-霍昆格姆码字 | |
KR20170107769A (ko) | 메모리 시스템 및 그의 동작 방법 | |
US10649841B2 (en) | Supporting multiple page lengths with unique error correction coding via galois field dimension folding | |
US10187086B2 (en) | State-based decoding of product codes | |
JP2020046823A (ja) | メモリシステム | |
JP2020135391A (ja) | メモリシステム | |
US20150074490A1 (en) | Nonvolatile semiconductor memory device | |
US11593197B2 (en) | Storage device with data quality metric and selectable data recovery scheme | |
US10951238B1 (en) | Memory system and method for controlling non-volatile memory | |
CN113626249B (zh) | 一种固态硬盘的软解码方法、装置、设备及存储介质 | |
CN109857340B (zh) | Nor flash中文件的存储和读取方法、装置及存储介质 | |
CN111406282B (zh) | 一种用于存储设备的存储器控制电路 | |
CN108170554A (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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Patentee after: Beijing yihengchuangyuan Technology Co.,Ltd. Address before: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing Patentee before: MEMBLAZE TECHNOLOGY (BEIJING) Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |