CN109785895A - 纠正NAND Flash中多比特错误的ECC装置和方法 - Google Patents
纠正NAND Flash中多比特错误的ECC装置和方法 Download PDFInfo
- Publication number
- CN109785895A CN109785895A CN201910080160.4A CN201910080160A CN109785895A CN 109785895 A CN109785895 A CN 109785895A CN 201910080160 A CN201910080160 A CN 201910080160A CN 109785895 A CN109785895 A CN 109785895A
- Authority
- CN
- China
- Prior art keywords
- data
- ecc
- row
- module
- column
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000012937 correction Methods 0.000 claims abstract description 70
- 230000004927 fusion Effects 0.000 claims description 38
- 230000009466 transformation Effects 0.000 claims description 33
- 238000000926 separation method Methods 0.000 claims description 30
- 239000011159 matrix material Substances 0.000 claims description 20
- 238000006243 chemical reaction Methods 0.000 claims description 17
- 210000000352 storage cell Anatomy 0.000 claims description 3
- 238000012795 verification Methods 0.000 description 14
- 210000004027 cell Anatomy 0.000 description 4
- 235000013399 edible fruits Nutrition 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 238000004321 preservation Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000005290 field theory Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供了纠正NAND Flash中多比特错误的ECC装置和方法。该装置和方法通过将待处理数据进行空间变换,将数据从一维变换到二维空间,把数据位的错误分散到多个编码单元中,然后分别对行和列的维度上分别进行Hamming编码,将行ECC编码和列ECC编码以及数据一起保存在NAND Flash中。在数据读取时,将数据再次变换到二维空间,利用行ECC编码/列ECC编码分别进行校验,用列ECC校验成功的数据更新行数据,实现多比特纠错的目的。
Description
技术领域
本发明涉及存储器领域。更具体地,本发明涉及用于纠正NAND Flash中多比特错误的ECC装置和方法。
背景技术
在移动产品应用领域中,NAND Flash设备已专用于人们解决高密度固态存储。NAND Flash因容量大、访问速度快,被广泛应用在各种需要大量数据存储的领域。由于NANDFlash的工艺不能保证它的存储器阵列在它的生命周期中可靠地保持性能,所以NANDFlash在生产和使用过程中会产生坏块,导致存储数据的丢失。而由于NAND Flash物理介质的特性,容易受到位翻转干扰。同时,NAND Flash出错的时候一般不会造成整个块(Block)或是页(Page)不能读取或是全部出错,而是整个页(例如,512字节)中只有一个或几个比特出错。因此,在应用NAND Flash的系统中,为保持数据的可靠性,必须同时使用ECC(ErrorCorrecting Code,纠错码),用于错误的检测和纠正。
早期的NAND Flash由于为SLC(Single-Level Cell)结构,对ECC纠错能力要求不高,所以使用Hamming码(汉明码)即可满足要求。随着多层NAND Flash的发展,MLC(Multi-Level Cell,多层单元)、TLC(Triple-Level Cell,三层单元)、QLC(Quad-Level Cell,四层单元)对ECC的要求也越来越高。单纯的Hamming码只能纠正一比特的纠错能力,已经不能满足要求,对ECC算法要求有多比特纠错能力。
目前多比特ECC算法应用最广泛的是BCH算法,这是一种有限域中的线性分组码。它使用有限域上的域论与多项式来实现多比特纠错,复杂度较高,占用系统资源较多。
总之,现有技术中的缺点是:Hamming算法复杂度低,但是只能纠正一比特;BCH算法可以纠正多比特错误,但复杂度高,对系统资源要求比较大。
发明内容
本发明提供了一种纠正NAND Flash中多比特错误的ECC装置和方法。本发明解决了如何使用简单的一比特纠错算法完成纠正多比特错误的需求这一问题,而复杂度和资源需求却与一比特纠错算法相当。
本发明对Flash没有特殊要求,可以自由地应用在NAND Flash控制器和NANDFlash中,广泛应用在多种MLC/TLC/QLC NAND Flash上,比较灵活。而与BCH算法相比,本发明的算法复杂度低,占用资源较少。
总之,与现有的技术方案相比,本发明的优点为:
1.在NAND Flash中实现纠正多比特错误的ECC装置和方法,应用类型包括但不限于SLC/MLC/TLC/QLC。根据本发明的装置和方法,针对ECC编码时的基本单元,最少可以检测到4比特错误,最多可以检测到min(行数,列数)+1比特错误;最少可以纠正3比特错误,最多可以纠正min(行数,列数)比特错误。针对ECC编码时的基本单元,即针对M×N的矩阵,最少可以检测到4比特错误,最多可以检测到min(M,N)+1比特错误;最少可以纠正3比特错误,最多可以纠正min(M,N)比特错误。
2.根据本发明的装置和方法可应用在不同NAND Flash控制器中,包括但不限于NVDIMM。
3.对待处理的数据进行ECC编码时的空间变换,包括但不限于一维到二维的变换。
本发明总体上提供了下文所述的纠正NAND Flash中数据的多比特错误的ECC装置和方法。
根据本发明的第一方面,提供了纠正NAND Flash中数据的多比特错误的ECC装置,所述ECC装置包括:
ECC编码模块,包括:
各维度变换模块,通过所述各维度变换模块对输入数据进行各维度变换,得到各维度数据;
各维度ECC编码模块,通过对应的所述各维度ECC编码模块对所述各维度数据进行ECC编码,得到各维度ECC编码数据;
ECC合并模块,通过所述ECC合并模块将所述输入数据和所述各维度ECC编码数据依据一存储规则存储在所述NAND Flash中;ECC译码模块,包括:
ECC分离模块,通过所述ECC分离模块将存储在所述NAND Flash中的所述输入数据和所述各维度ECC编码数据依据与所述存储规则对应的读出规则读出,且通过ECC分离模块将所述数据变换回到多维空间以及进行对应的ECC变换;
各维度ECC校验模块,通过所述各维度ECC校验模块利用对应的所述各维度ECC编码数据对所读出的各维度数据进行校验,得出各维度校验结果;
各维度错误纠正模块,通过各维度错误纠正模块根据所述各维度校验结果对所读出的各维度数据进行错误纠正,得出经错误纠正的各维度数据;
数据融合模块,通过所述数据融合模块依据一融合规则对经错误纠正的各维度数据进行融合,得出经融合的各维度数据。
上文所述的“经融合的各维度数据”为一维数据,能够通过数据输出模块输出。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC装置的一个优选实施方案,所述多维空间为二维空间,其中所述ECC装置包括:
ECC编码模块,包括:
行变换模块,通过所述行变换模块对输入数据进行行变换,得到行数据;
列变换模块,通过所述列变换模块对所述输入数据进行列变换,得到列数据;
行ECC编码模块,通过所述行ECC编码模块对行数据进行行ECC编码,得到行ECC编码数据;
列ECC编码模块,通过所述列ECC编码模块对列数据进行列ECC编码,得到列ECC编码数据;
ECC合并模块,通过所述ECC合并模块将所述输入数据以及所述行ECC编码数据和所述列ECC编码数据依据一存储规则保存在所述NAND Flash中;
ECC译码模块,包括:
ECC分离模块,通过所述ECC分离模块将存储在所述NAND Flash中的所述输入数据以及所述行ECC编码数据和所述列ECC编码数据依据与所述存储规则对应的读出规则读出,且通过ECC分离模块将所述数据变换回到二维空间以及进行对应的ECC变换;
行ECC校验模块,通过所述行ECC校验模块利用所述行ECC编码数据对所读出的行数据进行行ECC校验,得出行校验结果;
列ECC校验模块,通过所述列ECC校验模块利用所述列ECC编码数据对所读出的列数据进行列ECC校验,得出列校验结果;
行错误纠正模块,通过行错误纠正模块根据所述行校验结果对所读出的行数据进行错误纠正,得出经错误纠正的行数据;
列错误纠正模块,通过列错误纠正模块根据所述列校验结果对所读出的列数据进行错误纠正,得出经错误纠正的列数据;
数据融合模块,通过所述数据融合模块依据一融合规则对经错误纠正的行数据和列数据进行融合,得出经融合的行数据和列数据。
上文中所提及的“二维空间”指的是实现ECC编码的基本单元所在空间的维数。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC装置的一个优选实施方案,所述ECC编码为能够检测到两比特错误且纠正一比特错误的编码方法。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC装置的一个优选实施方案,所述ECC编码为Hamming编码。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC装置的一个优选实施方案,所述输入数据以页为基本存储单位,每页中具有M×N×K比特数据,其中K、M和N均为正整数,且M=2i和N=2j,其中i≥0且j≥0且i和j均为整数,
其中,在所述ECC编码模块中,
所述行变换模块将每页数据变换成M×K个N比特数据;
所述行ECC编码模块对所述M×K个N比特数据进行编码,得到M×K个行ECC编码数据;
所述列变换模块将每页数据变换成N×K个M比特数据;
所述列ECC编码模块对所述N×K个M比特数据进行编码,得到N×K个列ECC编码数据;
所述ECC合并模块将每页M×N×K比特数据以及所得到的M×K个行ECC编码数据和N×K个列ECC编码数据依据所述存储规则存储在NAND Flash中;
其中,在所述ECC译码模块中,
所述ECC分离模块将存储在所述NAND Flash中的M×N×K比特数据以及所得到的M×K个行ECC编码数据和N×K个列ECC编码数据依据与所述存储规则对应的读出规则的读出,且通过ECC分离模块将所述数据变换回到二维空间以及进行对应的ECC变换,得到所读出的K个M×N矩阵数据以及对应的M×K个行ECC编码数据和N×K个列ECC编码数据;
通过所述行ECC校验模块利用所述M×K个行ECC编码数据对应地对所读出的K个M×N矩阵数据中的行数据进行行ECC校验,得出行校验结果;
通过所述列ECC校验模块利用所述N×K个列ECC编码数据对应地对所读出的K个M×N矩阵数据中的列数据进行列ECC校验,得出列校验结果;
通过行错误纠正模块根据所述行校验结果对所读出的K个M×N矩阵数据中的行数据进行错误纠正,得出经错误纠正的行数据;
通过列错误纠正模块根据所述列校验结果对所读出的K个M×N矩阵数据中列数据进行错误纠正,得出经错误纠正的列数据;
数据融合模块,通过所述数据融合模块依据一融合规则对经错误纠正的行数据和列数据进行融合,得出经融合的行数据和列数据。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC装置的一个优选实施方案,所述融合规则为:
如果所有所述行校验结果都为检测到至多一比特错误,则融合时不考虑经错误纠正的列数据,将经错误纠正的行数据通过数据输出模块输出;
如果存在所述行校验结果为检测到等于或大于两比特错误且如果所有列校验结果都为检测到至多一比特错误的情况,则融合时不考虑经错误纠正的行数据,将经错误纠正的列数据变换为行数据且通过数据输出模块输出。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC装置的一个优选实施方案,如果所述列校验结果为检测到等于或大于两比特错误,则所述ECC装置还包括二次ECC译码模块,该二次ECC译码模块位于所述数据融合模块和所述输出模块之间,该二次ECC译码模块包括:
二次行ECC校验模块,所述二次行ECC校验模块接收所述经融合的行数据和列数据且对所述经融合的行数据和列数据进行二次行ECC校验,得到二次行ECC校验结果;
二次行错误纠正模块,所述二次行错误纠正模块对所述经融合的行数据和列数据进行二次行错误纠正,得到经二次行错误纠正的行数据。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC装置的一个优选实施方案,所述ECC装置还包括译码状态机模块,所述译码状态机模块标志ECC译码模块中的状态。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC装置的一个优选实施方案,如果所有所述行校验结果或者所述列校验结果都为检测到至多一比特错误,则所述译码状态机模块标志纠错成功;如果存在所述行校验结果或者所述列校验结果为检测到等于或大于两比特错误的情况,则所述译码状态机模块标志纠错失败。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC装置的一个优选实施方案,所述ECC装置还包括译码状态机模块,所述译码状态机模块标志二次ECC译码模块中的状态。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC装置的一个优选实施方案,如果所有所述二次行ECC校验结果都为检测到至多一比特错误,则所述译码状态机模块标志纠错成功;如果存在所述二次行ECC校验结果为检测到等于或大于两比特错误的情况,则所述译码状态机模块标志纠错失败。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC装置的一个优选实施方案,所述存储规则为:先存储第m行数据,然后存储第m行数据的行ECC编码数据,接着存储第m列数据的列ECC编码数据;其中0<m≤max(M,N),m为整数;重复K次,完成该页数据和ECC编码数据的保存。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC装置的一个优选实施方案,所述存储规则为:先存储每页M×N×K比特数据,然后再存储所得到的M×K个行ECC编码数据和N×K个列ECC编码数据。
根据本发明的第二方面,提供了纠正NAND Flash中数据的多比特错误的ECC方法,所述ECC方法包括如下步骤:
通过ECC编码模块中的各维度变换模块对输入数据进行各维度变换,得到各维度数据;
通过ECC编码模块中的各维度ECC编码模块对所述各维度数据进行ECC编码,得到各维度ECC编码数据;
通过ECC编码模块中的ECC合并模块将所述输入数据和所述各维度ECC编码数据依据一存储规则存储在所述NAND Flash中;
通过ECC译码模块中的ECC分离模块将存储在所述NAND Flash中的所述输入数据和所述各维度ECC编码数据依据与所述存储规则对应的读出规则读出,且通过ECC分离模块将所述数据变换回到多维空间且进行对应的ECC变换;
通过ECC译码模块中的各维度ECC校验模块利用对应的所述各维度ECC编码数据对所读出的各维度数据进行校验,得出各维度校验结果;
通过ECC译码模块中的各维度错误纠正模块根据所述各维度校验结果对所读出的各维度数据进行错误纠正,得出经错误纠正的各维度数据;
通过ECC译码模块中的数据融合模块依据一融合规则对经错误纠正的各维度数据进行融合,得出经融合的各维度数据。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC方法的一个优选实施方案,所述多维空间为二维空间,其中所述ECC方法包括如下步骤:
通过ECC编码模块中的行变换模块对输入数据进行行变换,得到行数据;
通过ECC编码模块中的列变换模块对所述输入数据进行列变换,得到列数据;
通过ECC编码模块中的行ECC编码模块对行数据进行行ECC编码,得到行ECC编码数据;
通过ECC编码模块中的列ECC编码模块对列数据进行列ECC编码,得到列ECC编码数据;
通过ECC编码模块中的ECC合并模块将所述输入数据以及所述行ECC编码数据和所述列ECC编码数据依据一存储规则保存在所述NAND Flash中;
通过ECC译码模块中的ECC分离模块将存储在所述NAND Flash中的所述输入数据以及所述行ECC编码数据和所述列ECC编码数据依据与所述存储规则对应的读出规则读出,且通过ECC分离模块将所述数据变换回到二维空间且进行对应的ECC变换;
通过ECC译码模块中的行ECC校验模块利用所述行ECC编码数据对所读出的行数据进行行ECC校验,得出行校验结果;
通过ECC译码模块中的列ECC校验模块利用所述列ECC编码数据对所读出的列数据进行列ECC校验,得出列校验结果;
通过ECC译码模块中的行错误纠正模块根据所述行校验结果对所读出的行数据进行错误纠正,得出经错误纠正的行数据;
通过ECC译码模块中的列错误纠正模块根据所述列校验结果对所读出的列数据进行错误纠正,得出经错误纠正的列数据;
通过ECC译码模块中的数据融合模块依据一融合规则对经错误纠正的行数据和列数据进行融合,得出经融合的行数据和列数据。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC方法的一个优选实施方案,所述ECC编码为能够检测到两比特错误且纠正一比特错误的编码方法。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC方法的一个优选实施方案,所述ECC编码为Hamming编码。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC方法的一个优选实施方案,所述输入数据以页为基本存储单位,每页中具有M×N×K比特数据,其中K、M和N均为正整数,且M=2i和N=2j,其中i≥0且j≥0且i和j均为整数,
通过所述ECC编码模块中的所述行变换模块将每页数据变换成M×K个N比特数据;
通过所述ECC编码模块中的所述行ECC编码模块对所述M×K个N比特数据进行编码,得到M×K个行ECC编码数据;
通过所述ECC编码模块中的所述列变换模块将每页数据变换成N×K个M比特数据;
通过所述ECC编码模块中的所述列ECC编码模块对所述N×K个M比特数据进行编码,得到N×K个列ECC编码数据;
通过所述ECC编码模块中的所述ECC合并模块将每页M×N×K比特数据以及所得到的M×K个行ECC编码数据和N×K个列ECC编码数据依据所述存储规则存储在NAND Flash中;
通过所述ECC译码模块中的所述ECC分离模块将存储在所述NAND Flash中的M×N×K比特数据以及所得到的M×K个行ECC编码数据和N×K个列ECC编码数据依据与所述存储规则对应的读出规则的读出,且通过ECC分离模块将所述数据变换回到二维空间且进行对应的ECC变换,得到所读出的K个M×N矩阵数据以及对应的M×K个行ECC编码数据和N×K个列ECC编码数据;
通过所述ECC译码模块中的所述行ECC校验模块利用所述M×K个行ECC编码数据对应地对所读出的K个M×N矩阵数据中的行数据进行行ECC校验,得出行校验结果;
通过所述ECC译码模块中的所述列ECC校验模块利用所述N×K个列ECC编码数据对应地对所读出的K个M×N矩阵数据中的列数据进行列ECC校验,得出列校验结果;
通过所述ECC译码模块中的行错误纠正模块根据所述行校验结果对所读出的K个M×N矩阵数据中的行数据进行错误纠正,得出经错误纠正的行数据;
通过所述ECC译码模块中的列错误纠正模块根据所述列校验结果对所读出的K个M×N矩阵数据中列数据进行错误纠正,得出经错误纠正的列数据;
通过所述ECC译码模块中的数据融合模块依据一融合规则对经错误纠正的行数据和列数据进行融合,得出经融合的行数据和列数据。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC方法的一个优选实施方案,所述融合规则为:
如果所有所述行校验结果都为检测到至多一比特错误,则融合时不考虑经错误纠正的列数据,将经错误纠正的行数据通过数据输出模块输出;
如果存在所述行校验结果为检测到等于或大于两比特错误且如果所有列校验结果都为检测到至多一比特错误的情况,则融合时不考虑经错误纠正的行数据,将经错误纠正的列数据变换为行数据且通过数据输出模块输出。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC方法的一个优选实施方案,如果所述列校验结果为检测到等于或大于两比特错误,则所述ECC方法还包括如下步骤:
通过二次ECC译码模块中的二次行ECC校验模块接收所述经融合的行数据和列数据且对所述经融合的行数据和列数据进行二次行ECC校验,得到二次行ECC校验结果;其中该二次ECC译码模块位于所述数据融合模块和所述输出模块之间;
通过二次ECC译码模块中的二次行错误纠正模块对所述经融合的行数据和列数据进行二次行错误纠正,得到经二次行错误纠正的行数据。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC方法的一个优选实施方案,通过译码状态机模块标志ECC译码模块中的状态。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC方法的一个优选实施方案,如果所有所述行校验结果或者所述列校验结果都为检测到至多一比特错误,则所述译码状态机模块标志纠错成功;如果存在所述行校验结果或者所述列校验结果为检测到等于或大于两比特错误的情况,则所述译码状态机模块标志纠错失败。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC方法的一个优选实施方案,通过译码状态机模块标志ECC译码模块中的状态。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC方法的一个优选实施方案,如果所有所述二次行ECC校验结果都为检测到至多一比特错误,则所述译码状态机模块标志纠错成功;如果存在所述二次行ECC校验结果为检测到等于或大于两比特错误的情况,则所述译码状态机模块标志纠错失败。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC方法的一个优选实施方案,所述存储规则为:先存储第m行数据,然后存储第m行数据的行ECC编码数据,接着存储第m列数据的列ECC编码数据;其中0<m≤max(M,N),m为整数;重复K次,完成该页数据和ECC编码数据的保存。
根据本发明的纠正NAND Flash中数据的多比特错误的ECC方法的一个优选实施方案,所述存储规则为:先存储每页M×N×K比特数据,然后再存储所得到的M×K个行ECC编码数据和N×K个列ECC编码数据。
附图说明
通过下文结合对附图的说明,将更容易理解本发明,在附图中:
图1是根据本发明的ECC编码和译码方法的示意图。
图2是根据本发明的纠正NAND Flash中多比特错误的ECC装置的整体结构图,其中将待处理数据从一维空间变换到二维空间。
图3是根据本发明的纠正NAND Flash中多比特错误的ECC装置的整体结构图,其中将待处理数据从一维空间变换到多维空间。
具体实施方式
下面结合附图对本发明进行详细描述。
本发明的总体思想是提供一种基于能够检测两比特错误且纠正一比特错误的编码方法实现纠正多比特错误的ECC装置和方法。在本文下面的描述中,本发明的方法基于Hamming编码。本领域技术人员应当能够理解,本发明的ECC装置和方法同样能够基于Hsiao编码来实现。
另外,本发明在经过略微改型之后,也能够适用于通过具有更强大检错和纠错能力的编码方法(例如,检测三比特纠正两比特的编码方法等)来实现。
下面的描述以将待处理数据从一维空间变换到二维空间为例来进行说明。本发明同样适用于将待处理数据从一维空间变换到多维空间。本文中所提及的“二维空间”或“多维空间”指的是实现ECC编码的基本单元所在空间的维数。
本发明的装置和方法通过将待处理数据进行空间变换,将数据从一维变换到二维空间,把数据位的错误分散到多个编码单元中,然后分别在行和列的维度上进行Hamming编码,之后将行ECC编码和列ECC编码以及数据一起保存在NAND Flash中。在数据读取时,将数据再次变换到二维空间,利用行ECC编码/列ECC编码分别进行校验,在行编码不能纠错的情况下,用列ECC校验成功的数据更新行数据,实现多比特纠错的目的。
图1是根据本发明的ECC编码和译码方法的示意图。本发明的方法分为两部分:编码和译码。
编码部分主要完成对输入的数据进行编码,输出编码后的数据。现在以将输入的数据从一维空间变换到二维空间为例进行说明。首先将数据从一维空间变换到二维空间,分别按行和列进行ECC编码,将编码后的数据输出,存储到NAND Flash上。如上面所提及的,本发明中的“二维空间”指的是ECC编码的基本单元所在空间的维数。在下面的描述中,由于ECC编码的基本单元是M行×N列数据,所以称为“二维空间”。
在将数据保存NAND Flash上时,必须按页(page)进行编程。把每页的数据分为M×N×K比特数据,其中K、M和N均为正整数,且M=2i和N=2j,其中i≥0且j≥0且i和j均为整数。M和N分别对应数据矩阵的行和列,每行有N比特数据,每列有M行,总共M×N比特的数据,K为每页所对应的矩阵数量。
对于每行的N比特数据,采用Hamming编码计算得出一组ECC数据;对于M行数据,得到M个行ECC编码数据。对于每列的M比特数据,采用Hamming编码计算得出另一组ECC数据;对于N列数据,得到N个列ECC编码数据。
遍历所有的M行和N列,计算得出该M×N矩阵的ECC数据,即可以得到M个行ECC编码数据和N个列ECC编码数据。
循环K次上述操作,获得该M×N×K矩阵的ECC数据,即可以得到M×K个行ECC编码数据和N×K个列ECC编码数据。
将该页数据和所生成的ECC数据依据一存储规则存放在NAND Flash对应的页存储器阵列中。
例如,该存储规则为先存储第m行数据,然后存储第m行数据的行ECC编码数据,接着存储第m列数据的列ECC编码数据;其中0<m≤max(M,N),m为整数;重复K次,完成该页数据和ECC编码数据的保存。在该存储规则时候,如果M和N不相等,例如M为128、N为64,则在存储第65行数据和第65行数据的行ECC编码之后,紧接着存储第66行数据和第66行数据的行ECC编码。在进行校验时,根据M和N的值,可以知晓在第65行数据和第65行数据的行ECC编码之后,并非是第65列数据的列ECC编码数据,而是第66行数据和第66行数据的行ECC编码。
或者,例如,该存储规则为先存储每页M×N×K比特数据,然后再存储所得到的M×K个行ECC编码数据和N×K个列ECC编码数据。
上面的存储规则仅仅是例示,并不意在表示本发明仅限于这些存储规则。本领域技术人员应当能够知晓多种存储规则都是可行的。
每次往NAND Flash中写入数据时,都按照上述流程完成页数据的ECC校验,然后把数据和ECC一起存储在对应的页中。
译码部分主要完成对从NAND Flash中读出的数据进行校验。首先,从NAND Flash中依据与所述存储规则对应的读出规则的读出数据。其次,从NAND Flash中读出的数据经过ECC分离,分别得到待校验数据和ECC编码,即得到M×N×K比特数据以及M×K个行ECC编码数据和N×K个列ECC编码数据。
在ECC分离模块中,将待校验数据从一维空间映射到二维空间。然后,在译码部分中,用ECC编码分别对其按行和列进行解校验。由于ECC编码的基本单元为M×N比特数据的矩阵,所以对应的解校验也以M×N比特数据为基本单元。
解校验的步骤如下:
首先,进行一次译码。使用M个行ECC编码数据对M×N比特数据进行行校验。如本领域技术人员公知的,Hamming编译码能够检测一比特错误并且纠正两比特错误。如果所有行校验结果都为检测到至多一比特错误,则表示行校验已经纠正了数据中的所有错误。在这种情况下,无需进行列校验,直接用行校验结果对行数据进行错误纠正。如果存在行校验结果为检测到等于或大于二比特的错误的情况,则表示存在行校验无法纠正的错误。在这种情况下,需要进行列校验。
如果所有列校验结果为检测到至多一比特错误,则表示列校验已经纠正了数据中的所有错误。此时,可以将列数据转换成行数据进行输出。
如果列校验结果为检测到等于或大于二比特的错误,则表示存在列校验无法纠正的错误。此时,使用列校验结果为检测到一比特错误且纠正一比特错误的列(即,错误已经完全纠正的列)对行数据进行错误纠正,得到部分错误纠正的M×N比特数数据。在部分错误纠正的M×N比特数数据中,那些列校验结果为检测到一比特错误且纠正一比特错误的列中的错误已经得以纠正。
在这种情况下,需要进行二次译码。二次译码重新使用M个行ECC编码数据对部分错误纠正的M×N比特数据进行行校验。
如果二次译码中所有行校验结果为检测到至多一比特,则代表二次译码中的行校验已经纠正了数据中的所有错误。此时,使用二次译码中行校验结果纠正行数据中的错误,代表纠错成功,则输出纠错成功标志。如果纠错失败,则输出纠错失败标志。
根据本发明的基于能够检测两比特错误且纠正一比特错误的编码方法针对M×N的矩阵,能够检测最少4比特错误以及最多min(M,N)+1比特错误,并且纠正最少3比特错误以及最多min(M,N)比特错误。实践中,已经得出,经过二次译码的行校验结果,已经基本上能够纠正M×N比特数据中的所有错误。
图2是根据本发明的用于纠正NAND Flash中多比特错误的ECC装置的整体结构图,其中将待处理数据从一维空间变换到二维空间。
如图2中所示,ECC装置包括:ECC编码模块和ECC译码模块。
ECC编码模块包括:行变换模块,通过所述行变换模块对输入数据进行行变换,得到行数据;列变换模块,通过所述列变换模块对所述输入数据进行列变换,得到列数据;行ECC编码模块,通过所述行ECC编码模块对行数据进行行ECC编码,得到行ECC编码数据;列ECC编码模块,通过所述列ECC编码模块对列数据进行列ECC编码,得到列ECC编码数据;ECC合并模块,通过所述ECC合并模块将所述数据以及所述行ECC编码数据和所述列ECC编码数据依据一存储规则保存在所述NAND Flash中。
ECC译码模块包括:ECC分离模块,通过所述ECC分离模块将存储在所述NAND Flash中的所述输入数据以及所述行ECC编码数据和所述列ECC编码数据依据与所述存储规则对应的读出规则读出,且通过ECC分离模块将所述数据变换回到二维空间且进行对应的ECC变换;行ECC校验模块,通过所述行ECC校验模块利用所述行ECC编码数据对所读出的行数据进行行ECC校验,得出行校验结果;列ECC校验模块,通过所述列ECC校验模块利用所述列ECC编码数据对所读出的列数据进行列ECC校验,得出列校验结果;行错误纠正模块,通过行错误纠正模块根据所述行校验结果对所读出的行数据进行错误纠正,得出经错误纠正的行数据;列错误纠正模块,通过列错误纠正模块根据所述列校验结果对所读出的列数据进行错误纠正,得出经错误纠正的列数据;数据融合模块,通过所述数据融合模块依据一融合规则对经错误纠正的行数据和列数据进行融合,得出经融合的行数据和列数据。
如果所述列校验结果为检测到等于或大于两比特错误,则所述ECC装置还包括二次ECC译码模块,该二次ECC译码模块位于所述数据融合模块和所述输出模块之间,该二次ECC译码模块包括:二次行ECC校验模块,所述二次行ECC校验模块接收所述经融合的行数据和列数据且对所述经融合的行数据和列数据进行二次行ECC校验,得到二次行ECC校验结果;二次行错误纠正模块,所述二次行错误纠正模块对所述经融合的行数据和列数据进行二次行错误纠正,得到经二次行错误纠正的行数据。
ECC装置还包括译码状态机模块,所述译码状态机模块标志ECC译码模块中的状态。如果所有所述行校验结果或者所述列校验结果都为检测到至多一比特错误,则所述译码状态机模块标志纠错成功;如果存在所述行校验结果或者所述列校验结果为检测到等于或大于两比特错误的情况,则所述译码状态机模块标志纠错失败。或者,如果所有所述二次行ECC校验结果都为检测到至多一比特错误,则所述译码状态机模块标志纠错成功;如果存在所述二次行ECC校验结果为检测到等于或大于两比特错误的情况,则所述译码状态机模块标志纠错失败。
图3是根据本发明的用于纠正NAND Flash中多比特错误的ECC装置的整体结构图,其中将待处理数据从一维空间变换到多维空间。
该装置包括ECC编码模块和ECC译码模块,包括:
该ECC编码模块包括:各维度变换模块,通过所述各维度变换模块对输入数据进行各维度变换,得到各维度数据;各维度ECC编码模块,通过对应的所述各维度ECC编码模块对所述各维度数据进行ECC编码,得到各维度ECC编码数据;ECC合并模块,通过所述ECC合并模块将所述输入数据和所述各维度ECC编码数据依据一存储规则存储在所述NAND Flash中;
该ECC译码模块,包括:ECC分离模块,通过所述ECC分离模块将存储在所述NANDFlash中的所述输入数据和所述各维度ECC编码数据依据与所述存储规则对应的读出规则读出,且通过ECC分离模块将所述数据变换回到多维空间以及进行对应的ECC变换;各维度ECC校验模块,通过所述各维度ECC校验模块利用对应的所述各维度ECC编码数据对所读出的各维度数据进行校验,得出各维度校验结果;各维度错误纠正模块,通过各维度错误纠正模块根据所述各维度校验结果对所读出的各维度数据进行错误纠正,得出经错误纠正的各维度数据;数据融合模块,通过所述数据融合模块依据一融合规则对经错误纠正的各维度数据进行融合,得出经融合的各维度数据。
本发明图3中示出的是将待处理数据从一维空间变换到多维空间时的一个总体框架图。在阅读本发明之后,本领域技术人员能够知晓其中的具体实施细节。
本发明不限于实施在NAND控制器或者NAND Flash中,不限于使用硬件或者软件来实现。
应理解,本文中的实施方案和实施例仅出于示例目的,本领域技术人员可以在不背离本发明的范围的前提下做出许多变体。
Claims (10)
1.纠正NAND Flash中数据的多比特错误的ECC装置,其特征在于,所述ECC装置包括:
ECC编码模块,包括:
各维度变换模块,通过所述各维度变换模块对输入数据进行各维度变换,得到各维度数据;
各维度ECC编码模块,通过对应的所述各维度ECC编码模块对所述各维度数据进行ECC编码,得到各维度ECC编码数据;
ECC合并模块,通过所述ECC合并模块将所述输入数据和所述各维度ECC编码数据依据一存储规则存储在所述NAND Flash中;
ECC译码模块,包括:
ECC分离模块,通过所述ECC分离模块将存储在所述NAND Flash中的所述输入数据和所述各维度ECC编码数据依据与所述存储规则对应的读出规则读出,且通过ECC分离模块将所述数据变换回到多维空间以及进行对应的ECC变换;
各维度ECC校验模块,通过所述各维度ECC校验模块利用对应的所述各维度ECC编码数据对所读出的各维度数据进行校验,得出各维度校验结果;
各维度错误纠正模块,通过各维度错误纠正模块根据所述各维度校验结果对所读出的各维度数据进行错误纠正,得出经错误纠正的各维度数据;
数据融合模块,通过所述数据融合模块依据一融合规则对经错误纠正的各维度数据进行融合,得出经融合的各维度数据。
2.根据权利要求1所述的纠正NAND Flash中数据的多比特错误的ECC装置,其特征在于,所述多维空间为二维空间,其中所述ECC装置包括:
ECC编码模块,包括:
行变换模块,通过所述行变换模块对输入数据进行行变换,得到行数据;
列变换模块,通过所述列变换模块对所述输入数据进行列变换,得到列数据;
行ECC编码模块,通过所述行ECC编码模块对行数据进行行ECC编码,得到行ECC编码数据;
列ECC编码模块,通过所述列ECC编码模块对列数据进行列ECC编码,得到列ECC编码数据;
ECC合并模块,通过所述ECC合并模块将所述输入数据以及所述行ECC编码数据和所述列ECC编码数据依据一存储规则保存在所述NAND Flash中;
ECC译码模块,包括:
ECC分离模块,通过所述ECC分离模块将存储在所述NAND Flash中的所述输入数据以及所述行ECC编码数据和所述列ECC编码数据依据与所述存储规则对应的读出规则读出,且通过ECC分离模块将所述数据变换回到二维空间以及进行对应的ECC变换;
行ECC校验模块,通过所述行ECC校验模块利用所述行ECC编码数据对所读出的行数据进行行ECC校验,得出行校验结果;
列ECC校验模块,通过所述列ECC校验模块利用所述列ECC编码数据对所读出的列数据进行列ECC校验,得出列校验结果;
行错误纠正模块,通过行错误纠正模块根据所述行校验结果对所读出的行数据进行错误纠正,得出经错误纠正的行数据;
列错误纠正模块,通过列错误纠正模块根据所述列校验结果对所读出的列数据进行错误纠正,得出经错误纠正的列数据;
数据融合模块,通过所述数据融合模块依据一融合规则对经错误纠正的行数据和列数据进行融合,得出经融合的行数据和列数据。
3.根据权利要求2所述的纠正NAND Flash中数据的多比特错误的ECC装置,其特征在于,所述ECC编码为能够检测到两比特错误且纠正一比特错误的编码方法。
4.根据权利要求3所述的纠正NAND Flash中数据的多比特错误的ECC装置,其特征在于,所述ECC编码为Hamming编码。
5.根据权利要求4所述的纠正NAND Flash中数据的多比特错误的ECC装置,其特征在于,所述输入数据以页为基本存储单位,每页中具有M×N×K比特数据,其中K、M和N均为正整数,且M=2i和N=2j,其中i≥0且j≥0且i和j均为整数,
其中,在所述ECC编码模块中,
所述行变换模块将每页数据变换成M×K个N比特数据;
所述行ECC编码模块对所述M×K个N比特数据进行编码,得到M×K个行ECC编码数据;
所述列变换模块将每页数据变换成N×K个M比特数据;
所述列ECC编码模块对所述N×K个M比特数据进行编码,得到N×K个列ECC编码数据;
所述ECC合并模块将每页M×N×K比特数据以及所得到的M×K个行ECC编码数据和N×K个列ECC编码数据依据所述存储规则存储在NAND Flash中;
其中,在所述ECC译码模块中,
所述ECC分离模块将存储在所述NAND Flash中的M×N×K比特数据以及所得到的M×K个行ECC编码数据和N×K个列ECC编码数据依据与所述存储规则对应的读出规则的读出,且通过ECC分离模块将所述数据变换回到二维空间以及进行对应的ECC变换,得到所读出的K个M×N矩阵数据以及对应的M×K个行ECC编码数据和N×K个列ECC编码数据;
通过所述行ECC校验模块利用所述M×K个行ECC编码数据对应地对所读出的K个M×N矩阵数据中的行数据进行行ECC校验,得出行校验结果;
通过所述列ECC校验模块利用所述N×K个列ECC编码数据对应地对所读出的K个M×N矩阵数据中的列数据进行列ECC校验,得出列校验结果;
通过行错误纠正模块根据所述行校验结果对所读出的K个M×N矩阵数据中的行数据进行错误纠正,得出经错误纠正的行数据;
通过列错误纠正模块根据所述列校验结果对所读出的K个M×N矩阵数据中列数据进行错误纠正,得出经错误纠正的列数据;
数据融合模块,通过所述数据融合模块依据一融合规则对经错误纠正的行数据和列数据进行融合,得出经融合的行数据和列数据。
6.根据权利要求5所述的纠正NAND Flash中数据的多比特错误的ECC装置,其特征在于,所述融合规则为:
如果所有所述行校验结果都为检测到至多一比特错误,则融合时不考虑经错误纠正的列数据,将经错误纠正的行数据通过数据输出模块输出;
如果存在所述行校验结果为检测到等于或大于两比特错误且如果所有列校验结果都为检测到至多一比特错误的情况,则融合时不考虑经错误纠正的行数据,将经错误纠正的列数据变换为行数据且通过数据输出模块输出。
7.根据权利要求2-6中任一项所述的纠正NAND Flash中数据的多比特错误的ECC装置,其特征在于,如果所述列校验结果为检测到等于或大于两比特错误,则所述ECC装置还包括二次ECC译码模块,该二次ECC译码模块位于所述数据融合模块和所述输出模块之间,该二次ECC译码模块包括:
二次行ECC校验模块,所述二次行ECC校验模块接收所述经融合的行数据和列数据且对所述经融合的行数据和列数据进行二次行ECC校验,得到二次行ECC校验结果;
二次行错误纠正模块,所述二次行错误纠正模块对所述经融合的行数据和列数据进行二次行错误纠正,得到经二次行错误纠正的行数据。
8.根据权利要求2-6中任一项所述的纠正NAND Flash中数据的多比特错误的ECC装置,其特征在于,所述ECC装置还包括译码状态机模块,所述译码状态机模块标志ECC译码模块中的状态。
9.根据权利要求8所述的纠正NAND Flash中数据的多比特错误的ECC装置,其特征在于,如果所有所述行校验结果或者所述列校验结果都为检测到至多一比特错误,则所述译码状态机模块标志纠错成功;如果存在所述行校验结果或者所述列校验结果为检测到等于或大于两比特错误的情况,则所述译码状态机模块标志纠错失败。
10.根据权利要求7所述的纠正NAND Flash中数据的多比特错误的ECC装置,其特征在于,所述ECC装置还包括译码状态机模块,所述译码状态机模块标志二次ECC译码模块中的状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910080160.4A CN109785895B (zh) | 2019-01-28 | 2019-01-28 | 纠正NAND Flash中多比特错误的ECC装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910080160.4A CN109785895B (zh) | 2019-01-28 | 2019-01-28 | 纠正NAND Flash中多比特错误的ECC装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109785895A true CN109785895A (zh) | 2019-05-21 |
CN109785895B CN109785895B (zh) | 2024-03-01 |
Family
ID=66502727
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910080160.4A Active CN109785895B (zh) | 2019-01-28 | 2019-01-28 | 纠正NAND Flash中多比特错误的ECC装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109785895B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750381A (zh) * | 2019-09-12 | 2020-02-04 | 百富计算机技术(深圳)有限公司 | 基于nand flash存储器的纠错方法及装置 |
CN111240597A (zh) * | 2020-01-15 | 2020-06-05 | 书生星际(北京)科技有限公司 | 存储数据的方法、装置、设备和计算机可读存储介质 |
CN113571121A (zh) * | 2021-07-26 | 2021-10-29 | 杭州国芯科技股份有限公司 | 嵌入式设备NAND Flash的ECC码存储方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183565A (zh) * | 2007-12-12 | 2008-05-21 | 深圳市硅格半导体有限公司 | 存储介质中数据校验方法 |
CN102742164A (zh) * | 2012-02-14 | 2012-10-17 | 华为技术有限公司 | 一种译码方法和译码装置 |
-
2019
- 2019-01-28 CN CN201910080160.4A patent/CN109785895B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101183565A (zh) * | 2007-12-12 | 2008-05-21 | 深圳市硅格半导体有限公司 | 存储介质中数据校验方法 |
CN102742164A (zh) * | 2012-02-14 | 2012-10-17 | 华为技术有限公司 | 一种译码方法和译码装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110750381A (zh) * | 2019-09-12 | 2020-02-04 | 百富计算机技术(深圳)有限公司 | 基于nand flash存储器的纠错方法及装置 |
CN111240597A (zh) * | 2020-01-15 | 2020-06-05 | 书生星际(北京)科技有限公司 | 存储数据的方法、装置、设备和计算机可读存储介质 |
CN111240597B (zh) * | 2020-01-15 | 2024-05-17 | 书生星际(北京)科技有限公司 | 存储数据的方法、装置、设备和计算机可读存储介质 |
CN113571121A (zh) * | 2021-07-26 | 2021-10-29 | 杭州国芯科技股份有限公司 | 嵌入式设备NAND Flash的ECC码存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109785895B (zh) | 2024-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9910772B2 (en) | Flash memory apparatus and storage management method for flash memory | |
CN103392172B (zh) | 纠正存储阵列中的擦除 | |
JP2021047690A (ja) | メモリシステム | |
US20170317693A1 (en) | Flash memory apparatus and storage management method for flash memory | |
KR101428891B1 (ko) | 아날로그 메모리 셀들에서의 최적화된 임계치 검색 | |
US20140310571A1 (en) | Local Erasure Codes for Data Storage | |
CN109785895A (zh) | 纠正NAND Flash中多比特错误的ECC装置和方法 | |
TWI568197B (zh) | 使用低密度同位校驗碼之編碼與解碼技術 | |
CN102110481A (zh) | 具有ecc电路的半导体存储系统及其控制方法 | |
US8635508B2 (en) | Systems and methods for performing concatenated error correction | |
US10447301B2 (en) | Optimal LDPC bit flip decision | |
CN103577274A (zh) | 管理存储器阵列的方法和装置 | |
KR101550762B1 (ko) | 연접 오류 정정 장치 | |
CN101944067A (zh) | 存储数据的方法和存储器系统 | |
CN104572334B (zh) | 解码方法、存储器存储装置与存储器控制电路单元 | |
CN104636780B (zh) | 矩阵式二维码及其编码方法和译码方法 | |
CN103155421A (zh) | Ldpc多解码器架构 | |
CN108463807A (zh) | 温度相关的多模式错误校正 | |
CN106533615B (zh) | 译码的方法与电路、存储器控制器、储存装置、控制器 | |
JPS6349245B2 (zh) | ||
CN101281788A (zh) | 闪存系统及其控制方法 | |
US20150222291A1 (en) | Memory controller, storage device and memory control method | |
CN210110352U (zh) | 纠正NAND Flash中多比特错误的ECC装置 | |
CN109427401A (zh) | 编码方法和使用此方法的存储器存储装置 | |
CN103198869B (zh) | 一种空间ccd图像存储器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 | ||
CB02 | Change of applicant information |
Address after: 710000, floor 4, block a, No. 38, Gaoxin 6th Road, Zhangba street, high tech Zone, Xi'an, Shaanxi Applicant after: Xi'an Ziguang Guoxin Semiconductor Co.,Ltd. Address before: No.606, West District, national e-commerce demonstration base, No.528, tianguba Road, software new town, Xi'an hi tech Zone, Shaanxi 710003 Applicant before: XI''AN UNIIC SEMICONDUCTORS Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |