CN105206306A - 在非易失性存储器处理纠错码的方法及非易失性存储装置 - Google Patents

在非易失性存储器处理纠错码的方法及非易失性存储装置 Download PDF

Info

Publication number
CN105206306A
CN105206306A CN201410571642.7A CN201410571642A CN105206306A CN 105206306 A CN105206306 A CN 105206306A CN 201410571642 A CN201410571642 A CN 201410571642A CN 105206306 A CN105206306 A CN 105206306A
Authority
CN
China
Prior art keywords
code
check code
error
nonvolatile memory
correction operation
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.)
Pending
Application number
CN201410571642.7A
Other languages
English (en)
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.)
Skymedi Corp
Original Assignee
Skymedi Corp
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 Skymedi Corp filed Critical Skymedi Corp
Publication of CN105206306A publication Critical patent/CN105206306A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2942Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks of information bits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/6312Error control coding in combination with data compression

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明公开了一种在非易失性存储器中处理纠错码(Error?Correcting?Code,ECC)的方法及非易失性存储装置,所述方法包括对一数据码执行一第一纠错操作,以产生一第一校验码;压缩所述第一校验码,以产生一压缩校验码;对所述压缩校验码执行一第二纠错操作,以产生一额外校验码;以及将所述数据码、所述压缩校验码及所述额外校验码写入所述非易失性存储器的一存储单元。通过上述方法,可提升非易失性存储器的寿命。

Description

在非易失性存储器处理纠错码的方法及非易失性存储装置
技术领域
本发明涉及一种在非易失性存储器中处理纠错码(ErrorCorrectingCode,ECC)的方法及其非易失性存储装置,尤其涉及一种可提升非易失性存储器寿命的处理纠错码的方法及其非易失性存储装置。
背景技术
存储器控制器常用于存储器系统(特别是非易失性存储器系统)中,用来进行工作管理。一般来说,当非易失性存储器系统的电源关闭时,存储在非易失性存储器系统的数据不会遗失,因此非易失性存储器系统可作为一种用来存储系统数据的重要装置。在各类非易失性存储器系统中,由于与非门型闪速存储器(NANDFlashMemory)具有低功耗及速度快的优点,因此,伴随近年来便携设备的普及化,与非门型闪速存储器已被广为采用。
然而,由于与非门型闪速存储器可写入/清除的次数有限,因此具有一定的寿命。目前业界主要采用两种方法来提高与非门型闪速存储器的寿命。一种方法是在闪速转换层(FlashTranslationLayer,FTL)采用较小存储单元进行映射,以降低写入放大率(writeamplification);另一种方法则是使用纠错码(ErrorCorrectingCode,ECC)技术,以修正闪速存储器所存储的数据中的误码。在与非门型闪速存储器执行多次写入/清除以后,位错误率往往会随之而上升,因此需采用具有更高纠错能力的纠错码。在此情况下,需要数量更多的校验码来进行纠错,然而,与非门型闪速存储器内部用来存储校验码的空间有限。因此,实有必要有效地进行校验码的配置,并使用适当的纠错码来提升与非门型闪速存储器的纠错能力。
发明内容
因此,本发明的主要目的即在于提供一种在非易失性存储器中处理纠错码(ErrorCorrectingCode,ECC)的方法,其可通过适当地使用纠错码,同时使校验码有效地存储在非易失性存储器的有限存储空间中,进而提升非易失性存储器的寿命。
本发明公开一种在非易失性存储器处理纠错码的方法,包括对一数据码执行一第一纠错操作,以产生一第一校验码;压缩所述第一校验码,以产生一压缩校验码;对所述压缩校验码执行一第二纠错操作,以产生一额外校验码;以及将所述数据码、所述压缩校验码及所述额外校验码写入所述非易失性存储器的一存储单元。
本发明还公开一种非易失性存储装置,包括一非易失性存储器;以及一存储器控制器。所述存储器控制器耦接至所述非易失性存储器,用来在所述非易失性存储器中处理纠错码。所述存储器控制器包括一存储器缓冲区;一纠错码模块,用来对存储在所述存储器缓冲区的一数据码执行一第一纠错操作,以产生一第一校验码;一压缩模块,用来压缩所述第一校验码,以产生一压缩校验码,其中,所述纠错码模块还对所述压缩校验码执行一第二纠错操作,以产生一额外校验码;以及一处理器,用来将所述数据码、所述压缩校验码及所述额外校验码写入所述非易失性存储器的一存储单元。
本发明还公开一种在非易失性存储器处理纠错码的方法,包括将所述非易失性存储器的一存储单元分割为一数据区及一备用区;将一第一数据码分割为N个字码(codeword);对所述N个字码执行一第一纠错操作,以分别产生N组第一校验码;以及分配所述数据区中N个部分来存储所述N个字码,并分配所述备用区中N个部分来存储所述N组第一校验码;其中,所述备用区的所述N个部分中每一部分的大小不小于一数值,所述数值是根据对所述N个字码中任一字码执行一第二纠错操作所产生的一第二校验码的大小而决定。
本发明还公开一种非易失性存储装置,包括一非易失性存储器以及一存储器控制器。所述非易失性存储器包括一存储单元,所述存储单元被分割为一数据区及一备用区。所述存储器控制器耦接至所述非易失性存储器,通过执行以下步骤以在所述非易失性存储器中处理纠错码:将一第一数据码分割为N个字码;对所述N个字码执行一第一纠错操作,以分别产生N组第一校验码;以及分配所述数据区中N个部分来存储所述N个字码,并分配所述备用区中N个部分来存储所述N组第一校验码;其中,所述备用区的所述N个部分中每一部分的大小不小于一数值,所述数值是根据对所述N个字码中任一字码执行一第二纠错操作所产生的一第二校验码的大小而决定。
附图说明
图1为本发明实施例一非易失性存储装置的示意图。
图2为本发明实施例一纠错流程的示意图。
图3A为本发明实施例数据码及校验码写入非易失性存储器的一存储单元的流程图。
图3B为本发明实施例数据码及校验码写入非易失性存储器的另一存储单元的流程图。
图4为本发明实施例一纠错流程的示意图。
图5为本发明实施例在一存储单元中根据具有较高纠错能力的纠错操作所对应的校验码来保留存储空间的流程图。
图6为图5的存储单元与一般采用等级较低的纠错操作的存储单元的比较的示意图。
图7为本发明实施例一存储单元中一数据区及一备用区的配置的示意图。
其中,附图标记说明如下:
10非易失性存储装置
100非易失性存储器
102存储器控制器
110存储器缓冲区
112纠错码模块
114压缩模块
116处理器
20纠错流程
200~210步骤
302~310、312~320步骤
C1、C1’高速缓存
M1、M1’、M2、M3存储单元
CW_1~CW_N、CW_1’~字码
CW_N’、CW_x、CW_y
ECC_1~ECC_N、ECC_1’~校验码
ECC_N’、
ECC_x、ECC_y、ECC_x’、ECC_y’
C_ECC、C_ECC_1~C_ECC_N压缩校验码
A_ECC、A_ECC_1~A_ECC_N额外校验码
40纠错流程
400~410步骤
502~508步骤
D1、D2数据区
S1、S2备用区
具体实施方式
请参考图1,图1为本发明实施例一非易失性存储装置10的示意图。如图1所示,非易失性存储装置10包括一非易失性存储器100及一存储器控制器102。非易失性存储器100包括多个存储单元,其中每一存储单元可为一存储页或一部分写入页(如1kB或2kB),其可根据存储器控制器102所定义的映射单位以及非易失性存储器100的特性而定。部分写入页为存储页的一部分,而每一存储页可包括多个部分写入页。存储器控制器102耦接至非易失性存储器100,其可在非易失性存储器100写入数据,并管理非易失性存储器100的各项运作。存储器控制器102包括一存储器缓冲区110、一纠错码模块112、一压缩模块114及一处理器116。存储器控制器102包括一闪速转换层(FlashTranslationLayer,FTL),用来管理非易失性存储器100中对应于每一存储单元的映射信息。存储器控制器102也可用来管理每一存储单元的数据写入策略,如各类型的纠错码(ErrorCorrectingCode,ECC)或不同写入方法等。非易失性存储装置10耦接至一主机接口,其可根据用户需求,与主机进行通信或存储主机的数据。主机接口可为一嵌入式多媒体卡(embeddedmultimediacard,eMMC)、一安全数字卡(securedigitalmemorycard,SDmemorycard)、一通用串行总线(universalserialbus,USB)接口、一快速周边组件互连(peripheralcomponentinterconnectexpress,PCIe)接口或一序列先进技术附件(serialadvancedtechnologyattachment,SATA)接口等,主机接口所链接的主机可以是平板计算机、计算器、移动电话及车用装置等。
详细来说,存储器缓冲区110可用来暂存欲写入非易失性存储器100的数据或从非易失性存储器100读取的数据。纠错码模块112可对欲存储在非易失性存储器100的数据码执行纠错操作,并产生相对应的校验码,以用于数据码的纠错。在一实施例中,纠错码模块112可包括多个错误校正电路,其中每一错误校正电路可实现一种纠错码引擎(ECCengine),并可对数据码执行一特定纠错操作。在另一实施例中,纠错码模块112可包括一错误校正电路,此错误校正电路可实现多种纠错码引擎,并可对数据码执行多种纠错操作,处理器116可在多种纠错操作中选择其中一种纠错操作来进行。上述纠错码引擎可为任何类型的纠错码引擎,如博斯-乔赫里-霍克文黑姆代码(BCHcode)或低密度奇偶校验码(low-densityparity-checkcode,LDPCcode)。压缩模块114可对校验码执行压缩或解压缩操作。压缩校验码可使校验码以较小的尺寸进行存储。处理器116可管理存储器控制器102的各项操作,如读取/写入操作以及上述纠错操作及压缩/解压缩操作,或是其它闪速转换层所指示的基本操作。在本发明部分实施例中,处理器116也可用来选择执行欲使用的纠错码。
请参考图2,图2为本发明实施例一纠错流程20的示意图。如图2所示,纠错流程20可实现在非易失性存储装置10的存储器控制器102中,其包括以下步骤:
步骤200:开始。
步骤202:纠错码模块112对一数据码执行一第一纠错操作,以产生一第一校验码。
步骤204:压缩模块114压缩所述第一校验码,以产生一压缩校验码。
步骤206:纠错码模块112对所述压缩校验码执行一第二纠错操作,以产生一额外校验码。
步骤208:处理器116将所述数据码、所述压缩校验码及所述额外校验码写入非易失性存储器100的一存储单元。
步骤210:结束。
根据纠错流程20,在数据码写入非易失性存储器100的存储单元以前,数据码会先由纠错码模块112执行一第一纠错操作,以产生第一校验码。接着,压缩模块114压缩第一校验码,以产生压缩校验码。纠错码模块112还针对压缩校验码执行一第二纠错操作,以产生额外校验码。最后,处理器116可执行一写入操作,以将数据码、压缩校验码及额外校验码同时写入存储单元,其中,此存储单元可以是具有一写入单位大小的一存储页或一部分写入页。值得注意的是,第一纠错操作及第二纠错操作属于相同类型但具有不同纠错能力,或属于不同类型。第一纠错操作及第二纠错操作都可为纠错码模块112可实现的任何类型的纠错码引擎。
请参考图3A,图3A为本发明实施例数据码及校验码写入非易失性存储器100的一存储单元M1的流程图。如图3A所示,欲写入存储单元M1的数据码及校验码可先存储在一高速缓存C1,其中,高速缓存C1可为存储器缓冲区110所包括的存储空间、纠错码模块112中其它存储器缓冲区、其它分配予存储器控制器102的静态随机存取存储器(staticrandomaccessmemory,SRAM)或上述各种存储空间的组合。数据码可分割为字码(codeword)CW_1~CW_N(步骤302)。在进行第一纠错操作以后,可产生对应于字码CW_1~CW_N的校验码ECC_1~ECC_N,校验码ECC_1~ECC_N并接续在字码CW_1~CW_N之后存储在高速缓存C1(步骤304)。用来记录逻辑地址、纠错码信息(如使用的纠错码类型、所使用的纠错码的纠错能力以及所使用的纠错码的数据保护方法)及其它相关于数据码的管理信息的标头也存储在高速缓存C1。接着,压缩模块114可压缩校验码ECC_1~ECC_N,以产生压缩校验码C_ECC,压缩校验码C_ECC可取代校验码ECC_1~ECC_N存储在高速缓存C1(步骤306)。纠错码模块112可对压缩校验码C_ECC执行第二纠错操作,以产生额外校验码A_ECC,额外校验码A_ECC并接续在压缩校验码C_ECC之后存储在高速缓存C1(步骤308)。若字码CW_1~CW_N、压缩校验码C_ECC、额外校验码A_ECC及标头的大小的加总够小并可填入存储单元M1时,上述所有编码可同时写入存储单元M1(步骤310)。
在一实施例中,存储单元M1包括9k字节大小的存储空间,此存储空间可区分为8k字节的数据区及1k字节的备用区,其中,数据区可用来存储数据码而备用区可用来存储校验码。针对一般用于数据码的纠错操作而言,执行纠错码引擎BCH70可产生976字节大小的校验码,此校验码占用空间较小且足以存储在备用区。若执行纠错码引擎BCH90时,会产生1264字节大小的校验码,此校验码需占用较大空间因而无法写入备用区。
为提升纠错码的保护能力,并使得对应于等级较高的纠错码引擎的校验码可存储在备用区,可对校验码执行压缩。在此实施例中,对应于BCH90的1264字节大小的校验码可通过一特定压缩率(如68%)压缩为具有873字节大小的压缩校验码。此压缩校验码还通过纠错码引擎BCH70进行保护并产生122字节大小的额外校验码。在此情况下,压缩校验码及额外校验码的大小的加总为995字节,其占用空间较小并足以存储在备用区。数据码可通过BCH90以90位/1k字节的纠错能力进行保护,且校验码可通过BCH70进行保护。相较于一般纠错操作仅使用BCH70来保护原来的数据码(无法使用BCH90,因其相对应的校验码较大),本发明的实施例可在原来的数据码上拥有较高的纠错能力,同时针对校验码进行另一层纠错码保护,上述两阶段保护可大幅提升数据码的可靠度,存储单元M1的寿命可因此获得改善。
值得注意的是,处理器116可根据由校验码ECC_1~ECC_N及压缩校验码C_ECC所推算出的压缩率,判断存储单元M1的存储空间是否足够用来存储字码CW_1~CW_N、压缩校验码C_ECC及额外校验码A_ECC。字码CW_1~CW_N、压缩校验码C_ECC、额外校验码A_ECC及标头只有在字码CW_1~CW_N的大小、压缩校验码C_ECC的大小、额外校验码A_ECC的大小及标头的大小的加总小于存储单元M1的存储空间时,才会被写入存储单元M1。由于标头的大小往往极小且可忽略,因此字码CW_1~CW_N、压缩校验码C_ECC及额外校验码A_ECC的大小须通过较高的压缩率控制在一定的范围内,否则针对数据码及校验码所执行的纠错操作的纠错能力会因此而受限。另一方面,若字码CW_1~CW_N的大小、压缩校验码C_ECC的大小、额外校验码A_ECC的大小及标头的大小的加总大于一存储单元的存储空间时,上述编码无法被写入所述存储单元。在此情况下,纠错码模块112可采用等级较低的另一纠错码(如BCH70)来取代等级较高的纠错码(如BCH90)重新编码,以对数据码执行另一纠错操作,由等级较低的纠错码所产生的校验码即可写入所述存储单元,以取代上述两阶段纠错码保护策略。
在一实施例中,数据码及相对应校验码的配置也可通过其它方式来安排。举例来说,请参考图3B,图3B为本发明实施例数据码及校验码写入非易失性存储器100的一存储单元M1’的流程图。如图3B所示,欲写入存储单元M1’的数据码及校验码可先存储在一高速缓存C1’。数据码可分割为字码CW_1’~CW_N’(步骤312),在进行第一纠错操作以后,可产生对应于字码CW_1’~CW_N’的校验码ECC_1’~ECC_N’,校验码ECC_1’~ECC_N’并存储在高速缓存C1’。不同于图3中所有校验码ECC_1~ECC_N都集中在一起并接续在所有字码CW_1~CW_N之后的配置方式,在高速缓存C1’中,每一组校验码ECC_1’~ECC_N’分别配置在相邻于其相对应字码CW_1’~CW_N’的位置(步骤314),标头则配置在接续在第N个字码CW_N’及第N组校验码之后的位置。接着,压缩模块114对每一组校验码ECC_1’~ECC_N’进行压缩,以分别产生相对应的压缩校验码C_ECC_1~C_ECC_N,压缩校验码C_ECC_1~C_ECC_N并取代每一组校验码ECC_1’~ECC_N’存储在高速缓存C1’(步骤316)。接着,纠错码模块112分别对每一组压缩校验码C_ECC_1~C_ECC_N执行第二纠错操作,以产生相对应的额外校验码A_ECC_1~A_ECC_N。每一组额外校验码A_ECC_1~A_ECC_N存储在高速缓存C1’中相邻于其相对应压缩校验码C_ECC_1~C_ECC_N的位置(步骤318)。若字码CW_1’~CW_N’、压缩校验码C_ECC_1~C_ECC_N、额外校验码A_ECC_1~A_ECC_N及标头的大小的加总较小并足以填入存储单元M1’时,上述所有编码可同时写入存储单元M1’(步骤320)。
如上所述,字码、压缩校验码及额外校验码可通过任何方式在存储单元中进行配置,而不限于此。更进一步地,欲存储在非易失性存储器100的数据码在进行纠错及压缩等操作以前,也可能不先分割为多个字码。换句话说,存储单元(例如一部分写入页)可能仅包括一字码,因此仅产生一组压缩校验码及一组额外校验码。
值得注意的是,在纠错流程20的步骤204中,压缩操作只针对第一校验码进行,而并未对数据码进行。这是因为用户存储在非易失性存储器100的数据通常是已压缩过的数据,特别是在用户数据包括多媒体内容(例如音乐档案、图片或图像文件案)的情况下。由于这些档案已经历过压缩,再进行另一次压缩的话往往无法产生良好的压缩效果。若压缩操作是针对已经历过压缩的数据码及第一校验码的结合进行,同样会使压缩效果不佳,进而造成压缩校验码及额外校验码的编码量大幅增加,造成无法写入存储单元的可能性提高。
请参考图4,图4为本发明实施例一纠错流程40的示意图。如图4所示,纠错流程40可实现在非易失性存储装置10的存储器控制器102中,其包括以下步骤:
步骤400:开始。
步骤402:将非易失性存储器100的一存储单元分割为一数据区及一备用区。
步骤404:将一第一数据码分割为N个字码。
步骤406:对所述N个字码执行一第一纠错操作,以分别产生N组第一校验码。
步骤408:分配所述数据区中N个部分来存储所述N个字码,并分配所述备用区中N个部分来存储所述N组第一校验码,其中,所述备用区的所述N个部分中每一部分的大小不小于一数值,所述数值是根据对所述N个字码中任一字码执行一第二纠错操作所产生的一第二校验码的大小而决定。
步骤410:结束。
根据纠错流程40,非易失性存储器100的存储单元先被分割为一数据区及一备用区,且存储在数据区的数据码被分割为N个字码。接着,纠错码模块112对N个字码执行第一纠错操作,以产生N组分别对应于N个字码的第一校验码。最后,数据区被分割为N个部分,以存储N个字码,而备用区被分割为N个部分,以存储N组第一校验码。
值得注意的是,备用区的N个部分中每一部分的大小都不小于一数值,此数值可根据对N个字码中任一字码执行第二纠错操作所产生的第二校验码而决定。更具体而言,此数值可能等于或大于对N个字码中任一字码执行第二纠错操作所产生的第二校验码的大小,其中,第二纠错操作被预期在未来执行。一般来说,当新的非易失性存储器开始使用时,一存储单元中存在较少误码,因此,使用具有较低纠错能力的纠错码即足以保护存储单元。在经历多次读取/写入操作以后,存储单元的位错误率会高于刚开始使用的状态,因而需要较高纠错能力的纠错码来进行保护。因此,在非易失性存储器开始使用时,尽可能先使用等级较低的纠错码(如BCH40),并且在误码数量超过一临界值以后,改采用等级较高的纠错码(如BCH70)。在此情况下,即使开始使用时仅采用等级较低的纠错码并产生数量较少的校验码,非易失性存储器100可针对N个字码中每一字码保留更多存储空间,此存储空间可用于预期在未来使用的等级较高的纠错码所产生的校验码。换句话说,每一组第二校验码的大小应大于每一组第一校验码的大小,且第二错误操作的纠错能力应高于第一纠错操作的纠错能力。
请参考图5,图5为本发明实施例在一存储单元M2中根据具有较高纠错能力的纠错操作所对应的校验码来保留存储空间的流程图。如图5所示,存储单元(步骤502)被分割为一数据区D1及一备用区S1(步骤504)。数据区D1可存储字码CW_x及CW_y,通过纠错码引擎BCH40,字码CW_x及CW_y分别通过存储在备用区S1的校验码ECC_x及ECC_y进行保护。每一组校验码ECC_x及ECC_y各需要70字节的存储空间。存储单元M2也具有一标头,但由于标头极小,在不影响本实施例的说明之下略而未示。
为因应等级较高的纠错码,可针对每一字码保留更多存储空间。举例来说,当存储单元M2中误码的数量超过一临界值以后,可预期存储单元M2将采用纠错码引擎BCH70来进行保护。纠错码引擎BCH70需要使用122字节大小的校验码ECC_x’及ECC_y’来分别修正每一组字码CW_x及CW_y,因此,接续在70字节大小的校验码ECC_x及ECC_y之后都预留额外52字节大小的存储空间(步骤506)。当存储单元M2中误码的数量超过临界值以后,存储单元M2改采用纠错码BCH70取代BCH40。因此,对应于BCH70的校验码ECC_x’及ECC_y’可分别取代校验码ECC_x及ECC_y存储在所预留的122字节大小的存储空间(步骤508)。
请参考图6,图6为上述实施例的存储单元M2与一般采用等级较低的纠错操作(如BCH40)的存储单元M4的比较的示意图。如图6所示,在使用BCH40的情况下,存储单元M4会依序填入字码CW_x、CW_y及校验码ECC_x、ECC_y,而多余的存储空间会保留在校验码ECC_y之后,以用于其它等级较高的纠错操作(如BCH70)。在此情况下,每一次在存储单元M4上执行写入操作时,用来存储字码CW_x、CW_y及校验码ECC_x、ECC_y的存储空间中的记忆胞(memorycell)都会经历某种程度的损耗,而位于多余存储空间中的记忆胞所经历的损耗较小。因此,在存储单元M4中,相较于的其它区域,所述多余存储空间往往较为健康。当误码的数量超过一预定值而改用BCH70取代BCH40以后,存储单元M4改为依序填入字码CW_x、CW_y及校验码ECC_x’、ECC_y’。在此情况下,较健康的存储空间往往被用来存储校验码ECC_y’。因此,相较于存储校验码ECC_y’的记忆胞而言,存储校验码ECC_x’的记忆胞通常具有较差的健康状态,使得用于字码CW_x的纠错码具有较差的纠错能力。
相较之下,在上述实施例的存储单元M2中,在使用等级较低的纠错操作(如BCH40)时,接续在每一组校验码ECC_x及ECC_y之后都预留一存储空间,以用于等级较高的纠错操作(如BCH70)。未存储对应于BCH40的校验码ECC_x及ECC_y的预留存储空间可填入对存储单元造成最小伤害的数据码(例如0xFF)。在此情况下,每一次在存储单元M2上执行写入操作时,用来存储字码CW_x、CW_y及校验码ECC_x、ECC_y的存储空间中的记忆胞都会经历某种程度的损耗,而位于预留存储空间中的记忆胞所经历的损耗较小。因此,相较于存储单元M2中其它存储区域,此预留存储空间往往较为健康。当误码的数量超过一预定值而改用BCH70取代BCH40以后,存储单元M2改为依序填入字码CW_x、CW_y及校验码ECC_x’、ECC_y’。在此情况下,较健康的存储空间可平均分配至校验码ECC_x’及ECC_y’。因此,存储校验码ECC_x’的记忆胞的健康状态通常会等于或接近于存储校验码ECC_y’的记忆胞的健康状态,使得用于字码CW_x及CW_y的纠错码具有一致的错误修正能力。此错误修正能力会高于前述一般存储单元M4中用于字码CW_x的错误修正能力(因存储单元M4中字码CW_x是由健康状态较差的校验码所保护),进而改善存储单元M2的寿命。
值得注意的是,本发明提供了一种在非易失性存储器中处理纠错码的方法,其可通过适当地安排纠错码来提升非易失性存储器的寿命。本领域的技术人员当可据以进行修饰或变化,而不限于此。举例来说,在图5及图6所绘示的实施例中,存储单元M2存储两个字码。在另一实施例中,一存储单元可存储任何数量的字码,且较健康的存储空间可平均分配至每一字码所对应的校验码。若字码的数量较大时,健康存储空间可达到更均匀的分配,使得非易失性存储器的寿命获得更大的改善。除此之外,也可针对图3A中的额外校验码A_ECC及图3B中的额外校验码A_ECC_1~A_ECC_N预留存储空间,以提供压缩校验码C_ECC执行具有较高纠错能力的纠错操作时所需的更多额外校验码A_ECC来使用。除此之外,本发明实施例中的存储单元可适应于任何类型的纠错码引擎,并可使用任何类型的压缩技术,而不限于此。
需注意,在本发明的实施例中,数据区及备用区可能不分配至两单独区间。请参考图7,图7为本发明实施例一存储单元M3中一数据区D2及一备用区S2的配置的示意图。如图7所示,数据区D2及备用区S2都可分割为N个部分,并以交替方式配置。数据区D2的N个部分分别用来存储字码CW_1~CW_N,而备用区S2的N个部分分别用来存储相对应于字码CW_1~CW_N的校验码ECC_1~ECC_N。备用区S2的N个部分中每一部分还包括一保留存储空间,此保留存储空间是针对预期被使用的具有较高纠错能力的另一纠错操作所需的校验码而预留。此配置方式也可结合图5所绘示的纠错码处理方法。关于存储单元M3中处理纠错码的详细运作方式可参考上述说明,在此不赘述。
综上所述,在非易失性存储器执行多次写入/清除以后,位错误率往往会随之而上升,因此需采用具有更高纠错能力的纠错码。在此情况下,需要数量更多的校验码来进行纠错,但非易失性存储器内部用来存储校验码的空间有限。因此,本发明提供了一种在非易失性存储器中处理纠错码的方法,其可通过适当地使用纠错码,同时使校验码有效地存储在非易失性存储器的有限存储空间中,进而提升非易失性存储器的寿命。在一实施例中,一种两阶段纠错码保护方法提供了用于数据码的较高纠错能力,同时针对压缩过后的校验码提供了另一层纠错码保护。在另一实施例中,针对预期在未来执行具有较高纠错能力的纠错操作时所需的校验码,每一字码都预留一存储空间,使得较健康的存储空间可平均分配至每一组校验码。非易失性存储器的寿命可因此获得改善。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (20)

1.一种在非易失性存储器处理纠错码的方法,包括:
对一数据码执行一第一纠错操作,以产生一第一校验码;
压缩所述第一校验码,以产生一压缩校验码;
对所述压缩校验码执行一第二纠错操作,以产生一额外校验码;以及
将所述数据码、所述压缩校验码及所述额外校验码写入所述非易失性存储器的一存储单元。
2.如权利要求1所述的方法,其特征在于,还包括:
当所述数据码的大小、所述压缩校验码的大小及所述额外校验码的大小的加总过大以至于无法写入所述存储单元时,将所述数据码及一第二校验码写入所述存储单元;
其中,所述第二校验码是通过一第三纠错操作所产生,所述第三纠错操作的纠错能力低于所述第一纠错操作的纠错能力。
3.如权利要求1所述的方法,其特征在于,所述存储单元为一存储页或所述非易失性存储器的部分写入页。
4.如权利要求1所述的方法,其特征在于,所述第一纠错操作与所述第二纠错操作属于相同类型但具有不同纠错能力,或所述第一纠错操作与所述第二纠错操作属于不同类型。
5.如权利要求1所述的方法,其特征在于,还包括:
根据所述压缩校验码的一压缩率,判断所述存储单元是否足以存储所述数据码、所述压缩校验码及所述额外校验码。
6.一种非易失性存储装置,包括:
一非易失性存储器;以及
一存储器控制器,耦接至所述非易失性存储器,用来在所述非易失性存储器中处理纠错码,所述存储器控制器包括:
一存储器缓冲区;
一纠错码模块,用来对存储在所述存储器缓冲区的一数据码执行一第一纠错操作,以产生一第一校验码;
一压缩模块,用来压缩所述第一校验码,以产生一压缩校验码,其中,所述纠错码模块还对所述压缩校验码执行一第二纠错操作,以产生一额外校验码;以及
一处理器,用来将所述数据码、所述压缩校验码及所述额外校验码写入所述非易失性存储器的一存储单元。
7.如权利要求6所述的非易失性存储装置,其特征在于,当所述数据码的大小、所述压缩校验码的大小及所述额外校验码的大小的加总过大以至于无法写入所述存储单元时,所述处理器将所述数据码及一第二校验码写入所述存储单元;
其中,所述第二校验码是通过一第三纠错操作所产生,所述第三纠错操作的纠错能力低于所述第一纠错操作的纠错能力。
8.如权利要求6所述的非易失性存储装置,其特征在于,所述存储单元为一存储页或所述非易失性存储器的部分写入页。
9.如权利要求6所述的非易失性存储装置,其特征在于,所述第一纠错操作与所述第二纠错操作属于相同类型但具有不同纠错能力,或所述第一纠错操作与所述第二纠错操作属于不同类型。
10.如权利要求6所述的非易失性存储装置,其特征在于,所述处理器还根据所述压缩校验码的一压缩率,判断所述存储单元是否足以存储所述数据码、所述压缩校验码及所述额外校验码。
11.一种在非易失性存储器处理纠错码的方法,包括:
将所述非易失性存储器的一存储单元分割为一数据区及一备用区;
将一第一数据码分割为N个字码;
对所述N个字码执行一第一纠错操作,以分别产生N组第一校验码;以及
分配所述数据区中N个部分来存储所述N个字码,并分配所述备用区中N个部分来存储所述N组第一校验码;
其中,所述备用区的所述N个部分中每一部分的大小不小于一数值,所述数值是根据对所述N个字码中任一字码执行一第二纠错操作所产生的一第二校验码的大小而决定。
12.如权利要求11所述的方法,其特征在于,所述数值大于所述N组第一校验码中每一组第一校验码的大小,且所述方法还包括:
将对所述存储单元造成最小伤害的一第二数据码写入所述备用区的所述N个部分中每一部分的一剩余存储空间。
13.如权利要求12所述的方法,其特征在于,所述剩余存储空间为未存储所述N组第一校验码中任一第一校验码的一存储空间。
14.如权利要求11所述的方法,其特征在于,所述数值等于所述第二校验码的大小。
15.如权利要求11所述的方法,其特征在于,所述第二纠错操作的纠错能力高于所述第一纠错操作的纠错能力。
16.一种非易失性存储装置,包括:
一非易失性存储器,包括一存储单元,所述存储单元被分割为一数据区及一备用区;以及
一存储器控制器,耦接至所述非易失性存储器,通过执行以下步骤以在所述非易失性存储器中处理纠错码:
将一第一数据码分割为N个字码;
对所述N个字码执行一第一纠错操作,以分别产生N组第一校验码;以及
分配所述数据区中N个部分来存储所述N个字码,并分配所述备用区中N个部分来存储所述N组第一校验码;
其中,所述备用区的所述N个部分中每一部分的大小不小于一数值,所述数值是根据对所述N个字码中任一字码执行一第二纠错操作所产生的一第二校验码的大小而决定。
17.如权利要求16所述的非易失性存储装置,其特征在于,所述数值大于所述N组第一校验码中每一组第一校验码的大小,且所述存储器控制器还执行以下步骤,以在所述非易失性存储器中处理纠错码:
将对所述存储单元造成最小伤害的一第二数据码写入所述备用区的所述N个部分中每一部分的一剩余存储空间。
18.如权利要求17所述的非易失性存储装置,其特征在于,所述剩余存储空间为未存储所述N组第一校验码中任一第一校验码的一存储空间。
19.如权利要求16所述的非易失性存储装置,其特征在于,所述数值等于所述第二校验码的大小。
20.如权利要求16所述的非易失性存储装置,其特征在于,所述第二纠错操作的纠错能力高于所述第一纠错操作的纠错能力。
CN201410571642.7A 2014-05-28 2014-10-23 在非易失性存储器处理纠错码的方法及非易失性存储装置 Pending CN105206306A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/289,627 US20150349805A1 (en) 2014-05-28 2014-05-28 Method of Handling Error Correcting Code in Non-volatile Memory and Non-volatile Storage Device Using the Same
US14/289,627 2014-05-28

Publications (1)

Publication Number Publication Date
CN105206306A true CN105206306A (zh) 2015-12-30

Family

ID=54702986

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410571642.7A Pending CN105206306A (zh) 2014-05-28 2014-10-23 在非易失性存储器处理纠错码的方法及非易失性存储装置

Country Status (3)

Country Link
US (1) US20150349805A1 (zh)
CN (1) CN105206306A (zh)
TW (1) TW201545167A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110888594A (zh) * 2018-09-11 2020-03-17 慧荣科技股份有限公司 数据存储装置及其校验码处理方法
CN111192622A (zh) * 2018-11-14 2020-05-22 慧荣科技股份有限公司 闪存控制器及其中的编码电路与解码电路
CN111597126A (zh) * 2019-02-20 2020-08-28 慧荣科技股份有限公司 存取方法
CN112542201A (zh) * 2019-09-20 2021-03-23 三星电子株式会社 存储设备及操作该存储设备的方法
WO2023104008A1 (zh) * 2021-12-09 2023-06-15 华为技术有限公司 一种数据纠错方法、装置、内存控制器及系统

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9602243B2 (en) * 2014-08-26 2017-03-21 Electronics And Telecommunications Research Institute Low density parity check encoder, and low density parity check encoding method using the same
US9378049B1 (en) 2015-02-12 2016-06-28 Amazon Technologies, Inc. Servicing I/O requests in an I/O adapter device
US10049001B1 (en) * 2015-03-27 2018-08-14 Amazon Technologies, Inc. Dynamic error correction configuration
US9886405B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Low latency write requests over a network using a pipelined I/O adapter device
US9940284B1 (en) 2015-03-30 2018-04-10 Amazon Technologies, Inc. Streaming interconnect architecture
US9864538B1 (en) 2015-06-25 2018-01-09 Amazon Technologies, Inc. Data size reduction
KR20170011645A (ko) * 2015-07-23 2017-02-02 에스케이하이닉스 주식회사 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
US10346074B2 (en) * 2015-11-22 2019-07-09 Synamedia Limited Method of compressing parity data upon writing
CN118444854A (zh) 2018-03-16 2024-08-06 美光科技公司 Nand数据放置模式
US11635894B2 (en) * 2018-03-16 2023-04-25 Micron Technology, Inc. Clustered parity for NAND data placement schema
US10990472B2 (en) 2018-07-24 2021-04-27 Micron Technology, Inc. Spare substitution in memory system
JP2023039212A (ja) * 2021-09-08 2023-03-20 キオクシア株式会社 メモリシステムおよび制御方法
US20240168844A1 (en) * 2022-11-22 2024-05-23 Silicon Storage Technology, Inc. Grouping and error correction for non-volatile memory cells

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102110481A (zh) * 2009-12-24 2011-06-29 海力士半导体有限公司 具有ecc电路的半导体存储系统及其控制方法
US8560918B1 (en) * 2009-04-21 2013-10-15 Marvell International Ltd. Method and apparatus for dynamically selecting an error correction code to be applied to data in a communication system
CN103546161A (zh) * 2013-10-31 2014-01-29 江苏引跑网络科技有限公司 基于二进制位处理的无损压缩方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8560918B1 (en) * 2009-04-21 2013-10-15 Marvell International Ltd. Method and apparatus for dynamically selecting an error correction code to be applied to data in a communication system
CN102110481A (zh) * 2009-12-24 2011-06-29 海力士半导体有限公司 具有ecc电路的半导体存储系统及其控制方法
CN103546161A (zh) * 2013-10-31 2014-01-29 江苏引跑网络科技有限公司 基于二进制位处理的无损压缩方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110888594A (zh) * 2018-09-11 2020-03-17 慧荣科技股份有限公司 数据存储装置及其校验码处理方法
CN110888594B (zh) * 2018-09-11 2023-04-14 慧荣科技股份有限公司 数据存储装置及其校验码处理方法
CN111192622A (zh) * 2018-11-14 2020-05-22 慧荣科技股份有限公司 闪存控制器及其中的编码电路与解码电路
CN111192622B (zh) * 2018-11-14 2022-03-25 慧荣科技股份有限公司 闪存控制器及其中的编码电路与解码电路
CN111597126A (zh) * 2019-02-20 2020-08-28 慧荣科技股份有限公司 存取方法
CN111597126B (zh) * 2019-02-20 2023-09-12 慧荣科技股份有限公司 存取方法
CN112542201A (zh) * 2019-09-20 2021-03-23 三星电子株式会社 存储设备及操作该存储设备的方法
WO2023104008A1 (zh) * 2021-12-09 2023-06-15 华为技术有限公司 一种数据纠错方法、装置、内存控制器及系统

Also Published As

Publication number Publication date
TW201545167A (zh) 2015-12-01
US20150349805A1 (en) 2015-12-03

Similar Documents

Publication Publication Date Title
CN105206306A (zh) 在非易失性存储器处理纠错码的方法及非易失性存储装置
CN103902403B (zh) 经由冗余阵列的非易失性存储器编程故障恢复
US10713178B2 (en) Mapping table updating method, memory controlling circuit unit and memory storage device
KR101636785B1 (ko) 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리
US8560926B2 (en) Data writing method, memory controller and memory storage apparatus
KR101564569B1 (ko) 상위-레벨 리던던시 정보 계산
CN107678695B (zh) 基于可用存储器空间选择冗余存储配置
US9336081B2 (en) Data writing and reading method, and memory controller and memory storage apparatus using the same for improving reliability of data access
CN102760099B (zh) 数据写入方法、存储器控制器与存储器储存装置
KR20110089728A (ko) 솔리드 스테이트 드라이브의 에러 제어 방법
KR20150041004A (ko) 비-휘발성 메모리에 대한 혼합된 입도 상위-레벨 리던던시
TWI540582B (zh) 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置
CN112486725B (zh) 一种对压缩数据进行纠错编码的方法和装置
US9304907B2 (en) Data management method, memory control circuit unit and memory storage apparatus
CN104866429A (zh) 存储器管理方法、存储器控制电路单元与存储器存储装置
US9430327B2 (en) Data access method, memory control circuit unit and memory storage apparatus
WO2015096496A1 (zh) 存储数据的方法及存储装置
US8966344B2 (en) Data protecting method, memory controller and memory storage device
CN101634938A (zh) 固态硬盘的数据迁移方法、数据迁移装置及固态硬盘
CN102591737B (zh) 数据写入与读取方法、存储器控制器与存储器储存装置
CN108664350B (zh) 数据保护方法、存储器存储装置及存储器控制电路单元
TWI738359B (zh) 資料儲存裝置與資料處理方法
US9436547B2 (en) Data storing method, memory control circuit unit and memory storage device
CN105426113A (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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20151230

WD01 Invention patent application deemed withdrawn after publication