CN101183565B - 存储介质中数据校验方法 - Google Patents

存储介质中数据校验方法 Download PDF

Info

Publication number
CN101183565B
CN101183565B CN2007101249774A CN200710124977A CN101183565B CN 101183565 B CN101183565 B CN 101183565B CN 2007101249774 A CN2007101249774 A CN 2007101249774A CN 200710124977 A CN200710124977 A CN 200710124977A CN 101183565 B CN101183565 B CN 101183565B
Authority
CN
China
Prior art keywords
data
row
check code
data matrix
storage medium
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
Application number
CN2007101249774A
Other languages
English (en)
Other versions
CN101183565A (zh
Inventor
罗挺
谭四方
成晓华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen SiliconGo Semiconductor Co., Ltd.
Original Assignee
SHENZHEN SILICONGO SEMICONDUCTOR CO Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SHENZHEN SILICONGO SEMICONDUCTOR CO Ltd filed Critical SHENZHEN SILICONGO SEMICONDUCTOR CO Ltd
Priority to CN2007101249774A priority Critical patent/CN101183565B/zh
Publication of CN101183565A publication Critical patent/CN101183565A/zh
Application granted granted Critical
Publication of CN101183565B publication Critical patent/CN101183565B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明提供存储介质中数据校验方法,包括:对数据编码,产生行校验码和列校验码;组织ECC数据矩阵;所述组织ECC数据矩阵是将所述存储介质的一个扇区分别作为一行,多个扇区分别取一个字节组成一列,多行与多列组成所述ECC数据矩阵;在对ECC数据矩阵进行数据操作时,使用行校验码和列校验码对数据进行校验。本发明比单独的行校验具有更强的纠错能力,能纠正更多字节的错误,可提高校验数据的位数,容许存储介质出现较多的错误位数,并能很好地纠正这些错误。本发明能更好的支持MLC和4LC类的存储介质,达到延长存储介质的寿命,提高存储介质利用率,降低系统成本的目的。

Description

存储介质中数据校验方法 
技术领域
本发明涉及静态存储器领域,特别涉及存储介质中数据校验方法。 
背景技术
现有闪存介质(Flash)的生产及使用过程会产生坏位(Bit)或坏块(Block)。为确保闪存介质存储数据的可靠性,一般需要在应用闪存介质的系统或芯片中检测出坏位或坏块的位置,然后把坏位或坏块中的数据纠正过来,这一做法简称为校验(ECC,Error Checking and Correcting)。对闪存介质中数据的校验常用比较专用和较复杂的校验技术,例如RS(Reed-Solomon)校验或BCH校验等技术,能纠正多比特的错误,而且用硬件实现时,寻找错误的位置和纠正错误的速度很快。 
以NAND闪存介质为例,对每一页(page)进行校验码编码常用两种做法: 
1、将数据存放在页的前面部分,页后面部分的冗余区则存放校验码; 
2、每一段数据后面跟着存放一段校验码,一个页里通常有至少两组这样排列的数据和校验码,而且大部分情况是512byte的数据+16byte的校验码的重复模式。 
上述做法具有冗余区的限制,目前闪存介质的设计是每一个扇区即512个字节后跟有16个字节的冗余。根据目前的RS ECC算法,16个字节的冗余区只能适合在512字节里校验4个位的错误。而根据目前的BCH ECC算法,16个字节的冗余区只能适合在512字节里校验9个位的错误。并且ECC的算法相当复杂,想校验更多的错误位(Bit),一般需要更多的冗余区或增加算法的复杂度,从而增加芯片/系统的成本,也可能降低编码、检测和纠错的速度。 
一般情况下,如果操作时序和电路稳定性不存在问题,NAND闪存介质不会产生整个块或页全部出错的情况,通常包含512Bytes的一个页中只有一个或几个位(Bit)出错。 
发明内容
本发明目的在于提供一种存储介质中数据校验方法,以提高数据校验效率。 
本发明提供存储介质中数据校验方法,包括:对数据编码,产生行校验码和列校验码;组织ECC数据矩阵;所述组织ECC数据矩阵是将所述存储介质的一个扇区分别作为一行,多个扇区分别取一个字节组成一列,多行与多列组成所述ECC数据矩阵;在对ECC数据矩阵进行数据操作时,使用行校验码和列校验码对数据进行校验。 
优选地,上述ECC数据矩阵的每行分为多字节的行数据区和多字节的行校验区,各行校验区用于存放该行的行校验码;根据各行数据区中的数据分别编码得到各行的行校验码,行校验区的每一列分别存放行校验码的一个字节。 
优选地,ECC数据矩阵的每列分为多字节的列数据区和多字节的列校验区,各列校验区用于存放该列的列校验码;根据各列数据区中的数据分别编码得到各列的列校验码,列校验区的每一行分别存放列校验码的一个字节。 
优选地,所述组织ECC数据矩阵的步骤还包括步骤: 
判断需要写入的数据是否够填满一个数据矩阵,若不够填满一个数据矩阵则等待下次需要写入的数据或用随机数填充,使数据足够填满一个数据矩阵。 
优选地,所述对数据编码,产生行校验码和列校验码的步骤还包括步骤: 
判断是否完成编码,若未完成继续对数据进行编码; 
将数据矩阵与所有行校验码和列校验码组成的ECC数据矩阵写入存储介质。 
优选地,所述在对所述ECC数据矩阵进行数据操作时,使用所述行校验码和列校验码对数据进行校验的步骤还包括步骤: 
对数据进行纠错,修改数据,产生新的ECC数据矩阵; 
将新的ECC数据矩阵写入存储介质的步骤。 
本发明比单独的行校验具有更强的纠错能力,能纠正更多字节的错误,可提高校验数据的位数,容许存储介质出现较多的错误位数,并能很好地纠正这些错误。本发明能更好的支持MLC和4LC类的存储介质,达到延长存储介质的寿命,提高存储介质利用率,降低系统成本的目的。 
附图说明
图1是本发明存储介质的扇区结构示意图; 
图2是本发明第一实施例的ECC数据矩阵示意图; 
图3是本发明第一实施例的写数据流程示意图; 
图4是本发明第一实施例的读数据流程示意图; 
图5是本发明第一实施例的修改数据流程示意图; 
图6是本发明第一实施例对ECC数据矩阵校验过程示意图; 
图7是本发明第三实施例对ECC数据矩阵校验过程示意图。 
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。 
具体实施方式
本发明提出第一实施例。参照图1,存储介质在逻辑上分为多个扇区,一个扇区包括A字节的数据和B字节的冗余,其中变量A、B为自然数,A字节通常为512字节,B字节通常为16字节或者26字节。 
本实施例提出ECC数据矩阵,将存储介质中一个扇区作为一行,多个扇区分别取一个字节组成一列,形成一个矩阵称为ECC数据矩阵。参照图2,将该ECC数据矩阵的每行分为N字节的行数据区和M字节的行校验区,每列也分为J字节的列数据区和K字节的列校验区。J个行数据区和N个列数据区形成的矩阵均用于存放数据,为便于说明,将这些数据称为数据矩阵;各行校验区用于存放该行的行校验码,按照列从小到大的顺序,行校验区的每一列分别存放行校验码的一个字节;各列校验区用于存放该列的列校验码,按照行从小到大的顺序,列校验区的每一行分别存放列校验码的一个字节。 
本实施例根据各行数据区中的数据,分别用BCH或RS算法进行编码得到各行的行校验码,根据各列数据区中的数据,分别用BCH或RS算法进行编码得到各列的列校验码。 
上述变量N、M、J、K为自然数,根据存储介质条件选择合适的取值。 
本实施例在写入数据过程中,根据数据矩阵中的数据,编码得到各行的行校验码和各列的列校验码,分别存入ECC数据矩阵的各行校验区和各列校验区中。当读取或修改该数据矩阵中的数据时,分别使用各行校验码对各行数据进行校验和/或分别使用各列校验码对各列数据进行校验。 
参照图3所示的写数据流程,本实施例对ECC数据矩阵写数据流程包括: 
步骤S100,缓冲系统要写入存储介质的数据,将数据暂存在RAM中; 
步骤S102,判断数据是否够组成一个数据矩阵,如果不够组成数据矩阵则返回步骤S100,否则将数据组成数据矩阵,进行步骤S104; 
步骤S104,对数据矩阵编码产生行校验码和列校验码; 
步骤S106,判断是否完成编码,产生所有行的行校验码和所有列的列校验码,如果没有完成则返回步骤S104的编码过程,否则进行步骤S108; 
步骤S108,将数据矩阵与所有行校验码和列校验码组成ECC数据矩阵,将ECC数据矩阵写入存储介质,写数据流程结束。 
参照图4所示的读数据流程,本实施例从ECC数据矩阵读数据流程包括: 
步骤S200,从存储介质中读取ECC数据矩阵,暂存在RAM中; 
步骤S202,对ECC数据矩阵中的数据进行行校验和/或列校验; 
步骤S204,判断是否已完成对ECC数据矩阵中所有数据的校验,如果末完成对所有数据的校验则返回步骤S202的校验过程,否则进行步骤S206; 
步骤S206,向系统返回数据或校验结果,读数据流程结束。 
参照图5所示的修改数据流程,本实施例修改ECC数据矩阵的流程包括: 
步骤S300,从存储介质中读取ECC数据矩阵,暂存在RAM中; 
步骤S302,对ECC数据矩阵中的数据进行行校验和/或列校验; 
步骤S304,判断是否已完成ECC数据矩阵中所有数据的校验,如果未完成对所有数据的校验,则返回步骤S302的校验过程,否则进行步骤S306; 
步骤S306,在RAM中修改数据,产生新数据; 
步骤S308,调用上述写数据流程,将修改后的新数据写入存储介质中,修改数据流程结束。 
上述读数据和修改数据流程中对数据矩阵中的数据进行行校验和/或列校验的过程如图6所示,包括: 
步骤S400,使用列校验码逐列校验数据矩阵; 
步骤S402,判断是否完成对数据矩阵所有列的校验,若未完成则返回步骤S400,否则进行步骤S404; 
步骤S404,判断是否已纠正数据矩阵中的所有错误,若已纠正所有错误则进行步骤S412,否则进行步骤S406; 
步骤S406,使用行校验码逐行校验数据矩阵; 
步骤S408,判断是否完成对数据矩阵所有行的校验,若未完成则返回步 骤S406,否则进行步骤S410; 
步骤S410,判断是否已纠正数据矩阵中的所有错误,若已纠正所有错误则进行步骤S412,否则进行步骤S414; 
步骤S412,报告纠错成功的结果,流程结束; 
步骤S414,报告纠错失败的结果,流程结束。 
上述校验过程中,步骤S400至步骤S404是从数据矩阵的第一列开始,读取第一列的列校验码,再根据其列数据区中的数据编码产生列校验码,将这两个列校验码比较,若发现两个列校验码不同则说明第一列的数据有错,用列校验码对其进行纠正;然后对第二列进行同样的校验,直到完成对数据矩阵的最后一列的校验。如果有某些列中数据的错误个数少于列校验码能纠正的错误个数,则将这些错误都纠正过来,校验结果为成功;如果有某列数据的错误个数超出了列校验码的纠错能力,则保持这一列数据不变。 
上述校验过程中,步骤S406至步骤S410,参照上文的列校验做法,从数据矩阵的第一行进行校验,依次校验完所有行。如果有某些行中数据的错误个数少于行校验码能纠正的错误个数,则将这些错误都纠正过来,校验结果为成功;如果有某行数据的错误个数超出了行校验码的纠错能力,则这些错误无法被校验,校验结果为失败。 
上文提供了存储介质中数据校验的一种实施例,本发明基于第一实施例提出第二实施例。本实施例ECC数据矩阵的结构、行校验码、列校验码、数据操作流程与第一实施例类似,故不赘述。 
本实施例将ECC数据矩阵应用到NAND闪存介质中。在物理上NAND闪存介质的组织方式一般为多个字节(byte)构成一个页(page),多个页(page)构成一个块(block)。一个块通常包含32、64或128个页,一个页至少包含一个逻辑上的扇区,即包括一组、两组、四组或更多组的A字节和B字节的组合。在典型应用中,NAND闪存介质的一个页包含1024字节+32字节,即两组512字节+16字节的组合,一个块包含128个页。 
本实施例设一520列、255行的ECC数据矩阵,N取值为512,M取值为8,J取值为223,K取值为22。该ECC数据矩阵块的1~233行、1~512列形成数据矩阵存放数据,各行的513~520列为行校验区,存放该行的行校验码;各列的233~255行为列校验区,存放该列的列校验码。 
当本实施例的ECC数据矩阵应用在此NAND闪存介质中的时候,具体的存储方式是每一页存储ECC数据矩阵的两行,即将1024字节+32字节分为两组 512字节+16字节的组合,每一组放ECC数据矩阵的一行,每行的基本数据放在该组的1~512字节中,行校验码放在该组的513~528字节中,上述ECC数据矩阵块的行校验区占其中8个字节,剩余字节可以空置。一个块包含128个页,可以存放256行,其中第1页~第116页存放ECC数据矩阵的1~233行,第117页~第128页存放ECC数据矩阵的233~255行,这部分是列校验区,存放列校验码。由于ECC数据矩阵块的列校验区共22行,余下的一页可以空置,实现每个块存放一个ECC数据矩阵。 
本实施例也可以根据不同的NAND闪存介质芯片和ECC数据矩阵的大小改变存储方式,例如多个块放一个ECC数据矩阵,也可能一个块放多个ECC数据矩阵。ECC数据矩阵的一行可以对应闪存介质的一页、一页的部分或多个页的组合。当ECC数据矩阵的大小是NAND闪存介质一个页的倍数或者约数的时候,可以充分使用NAND闪存介质的数据操作特性,应用会比较方便。 
另外,通常情况下根据NAND闪存介质的特点,N选择为512的倍数或者约数,并且当A为N的P倍时,M应满足小于等于B的P分之一,以保证NAND闪存介质的冗余区能放下ECC数据矩阵的行校验码。 
参照图3所示的写数据流程,本实施例对上述ECC数据矩阵写数据流程与第一实施例类似,其中步骤S104中对数据矩阵编码产生行校验码的具体做法为:对ECC数据矩阵1行的行数据区数据编码产生22字节的行校验码,将这22个字节分别依次存储在1行的513列~520列中;同理依次处理2行、3行直到223行,对所有行数据区都产生行校验码并存储在相应行校验区中。 
对数据矩阵编码产生列校验码的具体做法为:对ECC数据矩阵1列的列数据区数据编码产生8字节的列校验码,将这8个字节分别依次存储在1列的224行~255行中;同理依次处理2列、3列直到512列,对所有列数据区都产生列校验码并存储在相应列校验区中。 
参照图5所示的修改数据流程,本实施例修改ECC数据矩阵的流程与第一实施例类似,参照上述读取数据的校验过程完成对所有行以及所有列的校验后,根据校验的结果返回校验失败信息或返回数据矩阵中的数据,由使用本实施例的系统在其RAM中修改数据矩阵中的数据,然后将修改后的新数据写入数据矩阵中,并参照上述写数据的过程对数据矩阵产生各行校验码和各列校验码,分别记录在各行校验区和各列校验区中。 
根据NAND闪存介质的特性,本实施例提出两种修改数据的做法,第一种 是将ECC数据矩阵所在的块中的原有数据全部读出保存在RAM中,将该块全部擦除,然后将修改得到的新ECC数据矩阵以及该块中的其他原有数据重新组成一个块,写入另取的一个空块中。 
第二种做法是取一空块,将修改得到的新ECC数据矩阵及其所在的块中原有数据复制到该空块中,将ECC数据矩阵所在的原块标记为数据无用,等待系统后续擦除。上述两种修改数据的做法可以相互替换使用。第一种写入方式模型简单,控制方便;第二种做法更常用、速度更高,更利于对NAND闪存介质坏块的管理。 
参照图6所示的对ECC数据矩阵进行行校验和/或列校验的过程中,步骤S400,使用列校验码逐列校验数据矩阵的具体做法为:依次读取该ECC数据矩阵1列的224行~255行,将读出的8个字节组合得到1列的列校验码,再根据1列的列数据区数据编码产生列校验码,将两个列校验码比较,若发现两个列校验码不同则说明1列的列数据区数据有错,用列校验码对其进行纠正;同理依次处理2列、3列直到223列,对所有列数据区都进行校验。 
同理,步骤S406,使用行校验码逐行校验数据矩阵的具体做法为:依次读取该ECC数据矩阵1行的513列~520列,将读出的22字节组合得到1行的行校验码,再根据1行的行数据区数据编码产生行校验码,将两个行校验码比较,若发现两个行校验码不同则说明1行的行数据区数据有错,用行校验码对其进行纠正;同理依次处理2行、3行直到223行,对所有行数据区都进行校验。 
本发明还提出第三实施例,采用二维ECC引擎对数据矩阵编码形成ECC数据矩阵,并对ECC数据矩阵进行校验。二维ECC引擎是一种数字逻辑电路,能够读取RAM中的数据矩阵,根据数据矩阵中的数据计算出行校验码和列校验码;读取RAM中的ECC数据矩阵,根据数据矩阵中的数据计算出新行校验码和新列校验码,通过对比新校验码和原来ECC数据矩阵中存储的校验码,可以检测出坏位或坏块的位置,把坏位或坏块中的数据纠正过来。 
本实施例提出根据ECC数据矩阵设计相应的二维ECC引擎,二维ECC引擎对输入的数据矩阵进行ECC编码,得到相应的ECC数据矩阵。参照第二实施例中ECC数据矩阵的典型设计,本实施例设计二维ECC引擎,对存储在RAM中的数据矩阵每一行的512字节数据进行RS(520,512)编码,得到8字节的行校验码;对512列+8列,每一列223字节的数据进行RS(255,223)编码,得到22字节的列校验码;从而得到一个520列,255行的ECC数据矩阵, 保存在RAM中。 
二维ECC引擎对读入RAM中的ECC数据矩阵进行校验,如图6所示,第一实施例提出了一种对数据矩阵进行行校验和/或列校验的过程。 
本实施例提出改进的循环校验过程以提高校验的能力,如图7所示,具体包括: 
步骤S500,使用列校验码逐列校验; 
步骤S502,判断是否完成对数据矩阵的所有列的校验,若未完成则进行步骤S500,否则进行步骤S504; 
步骤S504,使用行校验码逐行校验; 
步骤S506,判断是否完成对数据矩阵所有行的校验,若未完成则返回步骤S504,否则进行步骤S508; 
步骤S508,判断是否在本次S500到S506的步骤中纠正了任何错误,若有纠正至少一个错误则返回步骤S500进行循环纠错,若没有纠正任何错误进行步骤S510; 
步骤S510,判断是否已纠正所有错误,若已纠正所有错误则进行步骤S512,否则进行步骤S514; 
步骤S512,报告纠错成功的结果,流程结束; 
步骤S514,报告纠错失败的结果,流程结束。 
使用二维ECC引擎将数据矩阵写入NAND闪存介质中,是将需要写入的数据暂存在RAM中;如果需要写入的数据不够填满一个数据矩阵,必须等待下次需要写入的数据,与本次需要写入的数据共同填满一个数据矩阵;或者用随机数填充,使数据足够填满一个数据矩阵;然后启动二维ECC引擎,对该数据矩阵的每一行和每一列都进行BCH或者RS编码,得到校验码,与数据矩阵组成ECC数据矩阵;然后启动闪存介质控制器,将ECC数据矩阵写入NAND闪存介质中。 
使用二维ECC引擎从数据矩阵中读取数据,无论要读取的数据等于还是少于ECC数据矩阵,为了保证数据的完整无误,都需要一次把整个ECC数据矩阵读到RAM中,然后启动二维ECC引擎对ECC数据矩阵进行校验,将校验后的数据保存在RAM中。如果二维ECC引擎无法完成纠错,则报告错误无法纠正,读取数据失败。 
使用二维ECC引擎对数据矩阵作修改,当需要修改的数据不超过一个ECC 数据矩阵的时候,先将整个ECC数据矩阵用上述读取数据的做法读出来放在RAM完成纠错;在RAM中修改数据得到新的数据矩阵;然后启动二维ECC引擎,重新计算出数据矩阵的行校验码和列校验码,与新的数据矩阵组成新的ECC数据矩阵,写入NAND闪存介质中。 
以上述二维ECC引擎及ECC数据矩阵为例,行校验码最多能纠正每行随机4个字节的错误,列校验码最多能校验每行11个字节的错误。设某数据矩阵只有第一行有5个字节错误,因为5个字节已超出行校验码4个字节的纠错能力,只作行检验就无法对这5个字节进行纠错。但是本实施例结合列校验,第一行的5个字节分布在不同的5列中,每一列都只有一个字节错误,小于11个字节,故可用列校验码将这5列中的错误全部纠正过来,说明本实施例比单独的行校验有更强的纠错能力,能纠正更多字节的错误。 
上述BCH、RS编码方式是对编码方式的统称,每一种具体的编码方式对512字节的数据编码产生的校验码的字节数也不一样,校验码能纠正的错误字节数也和具体的编码方式有关。本实施例还可以采用代数几何码,卷积码等编码方式及其结合实现校验码的编码和校验。 
本发明除适用于NAND闪存介质外,还适用于AG-AND等多种闪存介质,支持MLC和4LC类的存储介质,以及多种文件系统和存储介质组织形式,数据校验方法与前述实施例类似,故不赘述。 
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。 

Claims (14)

1.一种存储介质中数据校验方法,包括:
对数据编码,产生行校验码和列校验码;组织ECC数据矩阵;所述组织ECC数据矩阵是将所述存储介质的一个扇区分别作为一行,多个扇区分别取一个字节组成一列,多行与多列组成所述ECC数据矩阵;
在对所述ECC数据矩阵进行数据操作时,使用所述行校验码和列校验码对数据进行校验。
2.根据权利要求1所述的存储介质中数据校验方法,其特征在于,所述ECC数据矩阵的每行分为多字节的行数据区和多字节的行校验区,各行校验区用于存放该行的行校验码;根据各行数据区中的数据分别编码得到各行的行校验码,行校验区的每一列分别存放行校验码的一个字节。
3.根据权利要求1所述的存储介质中数据校验方法,其特征在于:
ECC数据矩阵的每列分为多字节的列数据区和多字节的列校验区,各列校验区用于存放该列的列校验码;根据各列数据区中的数据分别编码得到各列的列校验码,列校验区的每一行分别存放列校验码的一个字节。
4.根据权利要求1至3任意一项所述的存储介质中数据校验方法,其特征在于,所述组织ECC数据矩阵的步骤还包括步骤:
判断需要写入的数据是否够填满一个数据矩阵,若不够填满一个数据矩阵则等待下次需要写入的数据或用随机数填充,使数据足够填满一个数据矩阵。
5.根据权利要求4所述的存储介质中数据校验方法,其特征在于,所述对数据编码,产生行校验码和列校验码的步骤还包括步骤:
判断是否完成编码,若未完成继续对数据进行编码。
6.根据权利要求5所述的存储介质中数据校验方法,其特征在于,所述判断是否完成编码,若未完成继续对数据进行编码的步骤还包括步骤:
将数据矩阵与所有行校验码和列校验码组成的ECC数据矩阵写入存储介质。
7.根据权利要求1至3任意一项所述的存储介质中数据校验方法,其特征在于,所述在对所述ECC数据矩阵进行数据操作时,使用所述行校验码和列校验码对数据进行校验的步骤后还包括步骤:
对数据进行纠错,修改数据,产生新的ECC数据矩阵。
8.根据权利要求7所述的存储介质中数据校验方法,其特征在于,所述对数据进行纠错,修改数据,产生新的ECC数据矩阵的步骤后还包括步骤:
将新的ECC数据矩阵写入存储介质的步骤。
9.根据权利要求8所述的存储介质中数据校验方法,其特征在于,所述在对所述ECC数据矩阵进行数据操作时,使用所述行校验码和列校验码对数据进行校验的步骤还包括步骤:
使用列校验码逐列校验数据矩阵;
判断是否完成对数据矩阵所有列的校验,若未完成则继续校验。
10.根据权利要求9所述的存储介质中数据校验方法,其特征在于,所述在对所述ECC数据矩阵进行数据操作时,使用所述行校验码和列校验码对数据进行校验的步骤还包括步骤:
使用行校验码逐行校验数据矩阵;
判断是否完成对数据矩阵所有行的校验,若未完成则继续校验。
11.根据权利要求10所述的存储介质中数据校验方法,其特征在于,所述对数据进行纠错,修改数据,产生新的ECC数据矩阵的步骤还包括步骤:
判断上述校验步骤是否纠正了错误,若纠正至少一错误则循环进行上述列校验和行校验过程,直到无法纠正任何错误。
12.根据权利要求11所述的存储介质中数据校验方法,其特征在于,所述判断上述校验步骤是否纠正了错误,若纠正至少一错误则循环进行上述列校验和行校验过程,直到无法纠正任何错误的步骤还包括步骤:
判断是否已纠正数据矩阵中的所有错误,报告纠错的结果。
13.根据权利要求1至3任意一项所述的存储介质中数据校验方法,其特征在于,所述编码方式包括:
使用BCH或RS算法进行编码。
14.根据权利要求1至3任意一项所述的存储介质中数据校验方法,其特征在于,所述存储介质为Nand Flash闪存介质,所述ECC数据矩阵的一行对应闪存介质的一页、一页的部分或多个页的组合。
CN2007101249774A 2007-12-12 2007-12-12 存储介质中数据校验方法 Active CN101183565B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007101249774A CN101183565B (zh) 2007-12-12 2007-12-12 存储介质中数据校验方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007101249774A CN101183565B (zh) 2007-12-12 2007-12-12 存储介质中数据校验方法

Publications (2)

Publication Number Publication Date
CN101183565A CN101183565A (zh) 2008-05-21
CN101183565B true CN101183565B (zh) 2011-02-16

Family

ID=39448786

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101249774A Active CN101183565B (zh) 2007-12-12 2007-12-12 存储介质中数据校验方法

Country Status (1)

Country Link
CN (1) CN101183565B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105095014A (zh) * 2015-07-01 2015-11-25 清华大学 基于错误纠正编码数据结构的数据隐藏方法
CN105740088A (zh) * 2016-01-22 2016-07-06 深圳市硅格半导体股份有限公司 闪存数据纠错方法及装置

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102110028A (zh) * 2009-12-25 2011-06-29 康佳集团股份有限公司 一种nand闪存及其数据的校验方法和装置
CN101901115B (zh) * 2010-07-23 2011-12-14 华中科技大学 一种磁盘阵列raid6级别的构建方法
CN102142282B (zh) * 2011-02-21 2012-10-24 北京理工大学 一种NANDFlash存储芯片ECC校验算法的识别方法
CN103578565B (zh) * 2012-07-19 2017-06-20 百富计算机技术(深圳)有限公司 一种NAND Flash存储芯片的校验方法及装置
CN102981924B (zh) * 2012-11-08 2015-04-29 杭州士兰微电子股份有限公司 适用于动态编码的数据存储方法及装置
CN103077095B (zh) * 2012-12-28 2015-05-27 华为技术有限公司 内存数据的纠错方法及装置及计算机系统
CN103645965A (zh) * 2013-11-28 2014-03-19 陕西千山航空电子有限责任公司 基于ecc纠错码的nand-flash坏块恢复方法
CN103916139B (zh) * 2014-04-22 2016-12-21 淮安固泰存储科技有限公司 一种基于里德所罗门码的加强型编码方法、解码方法及解码器
CN106802837B (zh) * 2015-11-26 2020-02-21 华为技术有限公司 一种更新错误检测和纠正ecc码的方法及装置
CN105575439B (zh) * 2015-12-15 2020-04-28 山西长河科技股份有限公司 一种存储单元失效纠错的方法及存储器
CN107203407B (zh) * 2016-03-18 2020-06-23 龙芯中科技术有限公司 Java虚拟机中的数据校验方法及装置
CN106201767B (zh) * 2016-08-10 2019-11-26 深圳市蜂联科技有限公司 一种基于ECC校验的防止SD使用过程中flash被意外篡改的方法
TWI643201B (zh) * 2017-11-27 2018-12-01 慧榮科技股份有限公司 編碼器及相關的編碼方法與快閃記憶體控制器
CN108984340B (zh) * 2018-06-06 2021-07-23 深圳先进技术研究院 存储器数据的容错保护方法、装置、设备及存储介质
WO2019232727A1 (zh) * 2018-06-06 2019-12-12 深圳先进技术研究院 多位错误数据的纠正方法、装置、设备及存储介质
CN109358981B (zh) * 2018-09-25 2022-07-05 珠海市杰理科技股份有限公司 存储器读取错误纠正方法、系统、计算机设备和存储介质
CN109785895B (zh) * 2019-01-28 2024-03-01 西安紫光国芯半导体股份有限公司 纠正NAND Flash中多比特错误的ECC装置和方法
CN110704236B (zh) * 2019-10-11 2020-09-01 南京元晨微电子科技有限公司 芯片flash数据的在线校验方法及计算机存储介质
CN111858135B (zh) * 2020-06-17 2023-12-19 百富计算机技术(深圳)有限公司 数据存储、校验方法、装置、终端设备及存储介质
CN112486419A (zh) * 2020-12-14 2021-03-12 深圳安捷丽新技术有限公司 基于raid5的数据存储方法、装置、恢复方法及固态硬盘
CN112688693B (zh) * 2020-12-14 2023-12-05 海光信息技术股份有限公司 一种内存多矩阵编码方法、纠错方法及相关装置
US11599417B2 (en) 2021-01-14 2023-03-07 Changxin Memory Technologies, Inc. Error correction system
CN114765052A (zh) * 2021-01-14 2022-07-19 长鑫存储技术有限公司 存储系统
CN114765056A (zh) 2021-01-14 2022-07-19 长鑫存储技术有限公司 存储系统
JP7343709B2 (ja) 2021-01-14 2023-09-12 チャンシン メモリー テクノロジーズ インコーポレイテッド 誤り訂正システム
JP2023512892A (ja) 2021-01-14 2023-03-30 チャンシン メモリー テクノロジーズ インコーポレイテッド 比較システム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1559033A (zh) * 2001-09-25 2004-12-29 ض� 双重误差校验码系统
US20050028067A1 (en) * 2003-07-31 2005-02-03 Weirauch Charles R. Data with multiple sets of error correction codes
CN1612119A (zh) * 2003-10-29 2005-05-04 鸿富锦精密工业(深圳)有限公司 固态存储器的安全存储系统及方法
CN1290012C (zh) * 2003-04-17 2006-12-13 国际商业机器公司 计算机系统中的纠错方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1559033A (zh) * 2001-09-25 2004-12-29 ض� 双重误差校验码系统
CN1290012C (zh) * 2003-04-17 2006-12-13 国际商业机器公司 计算机系统中的纠错方法和装置
US20050028067A1 (en) * 2003-07-31 2005-02-03 Weirauch Charles R. Data with multiple sets of error correction codes
CN1612119A (zh) * 2003-10-29 2005-05-04 鸿富锦精密工业(深圳)有限公司 固态存储器的安全存储系统及方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105095014A (zh) * 2015-07-01 2015-11-25 清华大学 基于错误纠正编码数据结构的数据隐藏方法
CN105740088A (zh) * 2016-01-22 2016-07-06 深圳市硅格半导体股份有限公司 闪存数据纠错方法及装置
CN105740088B (zh) * 2016-01-22 2021-06-22 深圳市硅格半导体有限公司 闪存数据纠错方法及装置

Also Published As

Publication number Publication date
CN101183565A (zh) 2008-05-21

Similar Documents

Publication Publication Date Title
CN101183565B (zh) 存储介质中数据校验方法
US10771091B2 (en) Flash memory apparatus and storage management method for flash memory
CN101999116B (zh) 通过交叉页面扇区、多页面编码以及每一页面编码将数据存储在多级单元闪速存储器装置中的方法和设备
CN107403646B (zh) 闪存装置及闪存存储管理方法
CN103119569B (zh) 基于存储条的非易失性多级存储器操作
US7900118B2 (en) Flash memory system and method for controlling the same
CN103544073B (zh) 读取闪存中区块的数据的方法及相关的记忆装置
US20120110419A1 (en) Data Structure for Flash Memory and Data Reading/Writing Method Thereof
KR20070054659A (ko) 에러율을 최적화하기 위한 멀티-비트 플래시 셀의 상태인코딩
CN104871249A (zh) 数据存储系统的自适应错误纠正码
CN1653554A (zh) 通过使用关于所存储数据的质量的信息来增加错误校正码的效率和操作多电平存储系统
CN101281788A (zh) 闪存系统及其控制方法
CN111710358B (zh) 闪存装置、闪存控制器及闪存存储管理方法
CN106158040A (zh) 读取电压准位估测方法、存储器存储装置及控制电路单元
CN107870744A (zh) 一种非同步镜像的混合硬盘阵列存储系统及方法
CN106297883A (zh) 解码方法、存储器存储装置及存储器控制电路单元
US8463982B2 (en) Method of storing and accessing error correcting code in NAND flash
CN101587744B (zh) 一种大规模flash存储阵列的多层次数据冗余方法
CN110309014A (zh) 一种全行编解码sram编码器数据读写结构及数据读写方法
CN103151078A (zh) 一种存储器检错纠错码生成方法
US20220182074A1 (en) Flash memory apparatus and storage management method for flash memory
CN113254257B (zh) 数据存储媒体的损坏数据列的筛选方法
CN113094213B (zh) GPyramid-Code布局及该布局单盘故障的数据恢复与存储方法
US20200264810A1 (en) High density fractional bit solid state drives using coded set partitions
CN105740090A (zh) 一种优化的相变存储器体系结构

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: The southern city of Shenzhen province Guangdong 518057 Keyuan Road, Nanshan District high tech Zone students Pioneering Building No. 2208

Patentee after: SILICONGO MICROELECTRONICS CO., LTD.

Address before: The southern city of Shenzhen province Guangdong 518057 Keyuan Road, Nanshan District high tech Zone students Pioneering Building No. 2208

Patentee before: Shenzhen SiliconGo Semiconductor Co., Ltd.

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 518057 05-2, 06-08 unit, 6 floor, Changhong science and technology building, 18 Nanshan District science and technology south twelve Road, Shenzhen, Guangdong.

Patentee after: Shenzhen SiliconGo Semiconductor Co., Ltd.

Address before: 518057 international business building 2208, South Yuan Road, Nanshan District high tech Zone, Shenzhen, Guangdong.

Patentee before: SILICONGO MICROELECTRONICS CO., LTD.