CN101329916B - 闪存装置纠错码控制器以及相关方法和存储系统 - Google Patents

闪存装置纠错码控制器以及相关方法和存储系统 Download PDF

Info

Publication number
CN101329916B
CN101329916B CN2008101446283A CN200810144628A CN101329916B CN 101329916 B CN101329916 B CN 101329916B CN 2008101446283 A CN2008101446283 A CN 2008101446283A CN 200810144628 A CN200810144628 A CN 200810144628A CN 101329916 B CN101329916 B CN 101329916B
Authority
CN
China
Prior art keywords
data
error correction
mistake
correction code
memory device
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
CN2008101446283A
Other languages
English (en)
Other versions
CN101329916A (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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN101329916A publication Critical patent/CN101329916A/zh
Application granted granted Critical
Publication of CN101329916B publication Critical patent/CN101329916B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • 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/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/23Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory 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/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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • H03M13/3715Adaptation to the number of estimated errors or to the channel state
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes

Abstract

闪存装置纠错代码控制器以及相关方法和存储系统。用于存储了M位(M等于或大于2的正整数)数据的闪存装置的纠错码控制器包括编码器和解码器。编码器利用第一纠错方案产生用于存储到闪存装置中的输入数据的第一纠错码数据,利用第二纠错方案产生用于输入数据的第二纠错码数据。将输入数据、第一纠错码数据和第二纠错码数据存储在闪存装置中。解码器计算在从闪存装置读取的数据中的错误的数目,基于错误的数目,选择性地利用第一纠错码数据和第二纠错码数据中的一个来纠正读取数据中的错误。

Description

闪存装置纠错码控制器以及相关方法和存储系统
技术领域
本发明涉及闪存装置以及,尤其涉及用于检测和纠正存储在闪存装置中的多位数据中的错误的方法和系统。
背景技术
非易失性存储装置是即使不供电给装置也能保留数据的存储装置。闪存装置是一种非易失性存储装置。虽然闪存往往要比通常用作个人计算机(PC)的主存的动态随机存取存储装置(DRAM)慢,但是闪存装置要比硬盘存储器存储装置更快和对抗冲击更稳健。由于这些特点,因此闪存装置广泛用作电池操作的存储装置中的存储单元。
闪存装置是电可擦除且可编程的。因而,和电可擦除可编程的只读存储装置(EEPROM)不同,可以以逐块方式擦除和编程闪存装置。由于闪存装置比EEPROM装置便宜,因此例如闪存装置广泛用于诸如数字音乐播放器、数字相机和蜂窝式电话之类的产品中的高容量固态非易失性存储。闪存装置还用于通用串行总线(USB)驱动中,这些通用串行总线驱动广泛用于存储数据以及在计算机之间传输数据。
闪存装置将数据存储在一个或多个单元阵列中。阵列中的每个单元包括存储一位数据的浮置栅晶体管。在现有技术中已公知多级单元(MLC)闪存装置,该闪存装置可以在每个单元存储不止1位数据。通过控制累积在每个单元的浮置栅上的电荷数量,MLC闪存装置在每个单元中存储不止1位数据。这里,每个存储单元存储了1位数据的闪存装置称作单级单元或“SLC”闪存装置,每个存储单元存储了M(M是大于或等于2的正整数)位数据的闪存装置称作MLC闪存装置。
对于SLC闪存装置,利用位于数据“1”的阈值电压分布和数据“0”的阈值电压分布之间的参考电压(参见图1A),可以确定存储单元中存储的数据。例如,基于当参考电压施加到存储单元的控制栅时电流是否流经存储单元,可以确定数据“1”或“0”。类似地,这种方案可以应用于MLC闪存装置。如图1A所示,使用两个阈值电压分布来将1位数据存储到存储单元中。相反,如图1B和1C所示,使用2M阈值电压分布来将M位数据存储到MLC闪存装置的存储单元中。例如,使用4个阈值电压分布来将2位数据存储到存储单元中(图1B),使用8个阈值电压分布来将3位数据存储到存储单元中(图1C),以及使用16个阈值电压分布来将4位数据存储到存储单元中(图中未示出)。这样,随着存储在存储单元中的数据的位数增大,使用的阈值电压分布的数目也随之增大。
然而,存储单元的阈值电压必须分布在一预定的电压范围内,而不考虑存储在存储单元中的数据的位数。因此,随着使用的阈值电压分布的数目的增大,邻近的阈值电压分布可能如图1B和1C所示彼此重叠。重叠量一般随着存储在存储单元中的数据的位数的增大而增大。重叠量也可能受许多因素影响,诸如电荷损失、耗去的时间、温度增高、对邻近单元编程时产生的耦合、邻近单元的读操作和/或单元故障。当邻近阈值电压分布重叠时,读数据可能包含许多错误。
发明内容
本发明的一些实施例可以提供用于增强从闪存装置读取多位数据的可靠性的纠错方案。
依照本发明的一些实施例,提供用于存储了M位数据的闪存装置的ECC控制器,M是等于或大于2的正整数。这些ECC控制器可以包括编码器,该编码器配置成利用第一纠错方案,响应存储在闪存装置中的输入数据来产生第一ECC数据,利用第二纠错方案,响应输入数据来产生第二ECC数据。输入数据、第一ECC数据和第二ECC数据存储在闪存装置中。ECC控制器可以进一步包括解码器,该解码器配置成计算从闪存装置读取的错误的数目,并根据错误的数目,选择利用第一ECC数据或第二ECC数据中的一个来纠正读取数据中的错误。
在一些实施例中,编码器包括第一编码器和第二编码器,第一编码器配置成利用第一纠错方案来产生第一ECC数据,第二编码器配置成利用第二纠错方案来产生第二ECC数据。在一些实施例中,解码器包括:第一解码器配置成利用包含在读取数据中的第一ECC数据来纠正读取数据中的错误;第二解码器配置成利用包含在读取数据中的第二ECC数据来纠正读取数据中的错误;以及解码控制器,其配置成计算在读取数据中的错误数目,并进一步配置成基于错误数目,选择性地控制第一解码器和第二解码器中的一个来纠正读取数据中的错误。
在其它实施例中,如果读取数据中的错误数目是3或小于3,则解码控制器控制第一解码器来纠正读取数据中的错误;以及如果读取数据中的错误数目是4或大于4,则解码控制器控制第二解码器来纠正读取数据中的错误。在另外的实施例中,第一纠错方案以比第二纠错方案更快的速度操作,以及第二纠错方案可以纠正比第一纠错方案更多的错误。在一些实施例中,第一纠错方案可以是利用BCH编码的纠错方案,并且第二纠错方案可以是利用RS编码的纠错方案。
在其它实施例中,闪存装置包括数据区和备用区,输入数据存储在数据区中,而第一ECC数据和第二ECC数据存储在备用区中。在这些实施例中,数据区中的每个存储单元都可以存储M位数据,而备用区中的每个存储单元都可以存储1位数据。例如,闪存装置可以包括NAND闪存装置、NOR闪存装置、PRAM装置或MRAM装置。
在本发明的其它实施例中,存储系统包括用于存储M位数据的闪存装置,M是等于或大于2的正整数,以及配置成控制闪存装置的存储控制器。存储控制器包括编码器,其配置成利用第一纠错方案来产生用于存储在闪存装置中的输入数据的第一ECC数据,以及利用第二纠错方案来产生用于输入数据的第二ECC数据,输入数据、第一ECC数据和第二ECC数据存储在闪存装置中。可以提供解码器,其配置成计算从闪存装置中读取的数据中的错误的数目,并根据错误的数目,选择性地利用第一ECC数据和第二ECC数据中的一个来纠正读取数据中的错误。
在一些实施例中,编码器包括第一编码器和第二编码器,第一编码器配置成利用第一纠错方案来产生第一ECC数据,第二编码器配置成利用第二纠错方案来产生第二ECC数据。
在其它实施例中,解码器包括第一解码器、第二解码器和解码控制器,第一解码器配置成利用包含在读取数据中的第一ECC数据来纠正读取数据中的错误,第二解码器配置成利用包含在读取数据中的第二ECC数据来纠正读取数据中的错误,解码控制器配置成计算读取数据中的错误的数目,并根据错误的数目,选择性地控制第一解码器和第二解码器中的一个来纠正读取数据中的错误。
在本发明的其它实施例中,提供了用于纠正M位数据中的错误的方法,M是等于或大于2的正整数。这些方法可以包括通过利用第一纠错方案来产生用于存储在闪存装置中的输入数据的第一ECC数据;通过利用第二纠错方案来产生用于输入数据的第二ECC数据;将输入数据、第一ECC数据和第二ECC数据存储到闪存装置中;计算从闪存装置中读取的数据中的错误的数目;以及根据错误的数目,选择性地利用第一ECC数据和第二ECC数据中的一个来纠正读取数据中的错误。
在一些实施例中,纠正读取数据中的错误包括:如果读取数据中的错误的数目是3或小于3,则通过利用第一ECC数据来纠正读取数据中的错误;以及如果读取数据中的错误的数目是4或大于4,则通过利用第二ECC数据来纠正读取数据中的错误。
在本发明的其它实施例中,提供了用于纠正数据错误的方法,其中接收要存储在闪存装置中的第一数据。利用第一纠错方案为第一数据产生第一纠错码(ECC)数据,以及利用第二纠错方案为第一数据产生第二纠错码(ECC)数据。第一数据、第一ECC数据和第二ECC存储在闪存装置中,以及其后从闪存装置中读取第一数据。然后确定读取的第一数据中的错误的数目,以及基于确定的错误数目,选择性地利用第一ECC数据或第二ECC数据中的一个来纠正第一数据中的错误。
附图说明
包含附图以更好地理解本发明,引用并构成本说明书的一部分。附图说明本发明的实施例并,结合说明书一起解释本发明的原理。在图中:
图1A是说明存储了1位数据的闪存装置的阈值电压分布的图;
图1B是说明存储了2位数据的闪存装置的阈值电压分布的图;
图1C是说明存储了3位数据的闪存装置的阈值电压分布的图;
图2是根据本发明的实施例的存储系统的方框图;
图3是图2中描述的ECC控制器的实施例的方框图;
图4是说明根据本发明的实施例写入闪存装置和/或从闪存装置读取的数据的格式的图;
图5是说明根据本发明的实施例的图3中所描述的ECC编码器的编码操作的流程图;以及
图6是说明根据本发明的实施例的图3中所描述的ECC解码器的解码操作的流程图。
具体实施方式
后面将参考附图更完整地描述本发明的实施例,其中附图中示出了本发明的实施例。然而,可以不同形式实施本发明,但不应解释为局限于本文提出的实施例。此外,提供这些实施例,从而使本公开完全且完整,并使本领域技术人员完全理解本发明的范围。全文中相同的编号指示相同的元件。
应理解,虽然这里术语第一、第二等可以用于描述不同的元件,但是这些元件不应受限于这些术语。这些术语仅用于区分元件。例如,在不脱离本发明的范围,第一元件可以叫第二元件,以及类似地,第二元件可以叫第一元件。如本文所使用,术语“和/或”包括一个或多个相关联的列出术语的任意和全部组合。
这里使用的术语仅是出于描述特定实施例的目的,并不限制本发明。如这里所使用,单数形式“一”、“一个”和“该”也包括复数形式,除非上下文清楚指示其它形式。更应理解,本文使用时术语“包括”、“包括了”、“包含”和/或“包含了”详细说明出现了设定特征、整数、步骤、操作、元件和/或组件,但不排除其中出现或增加了一个或多个其它特征、整数、步骤、操作、元件、组件和/或组。
应理解,当元件称作“连接”或“耦合”到另一个元件时,其可以直接连接或耦合到其它元件,或者可以出现介入元件。相比而言,当元件称作“直接连接”或“直接耦合”到另一个元件时,不会出现介入元件。可以类似方式来解释用于描述元件之间关系的其它词语(即,“之间”对“直接之间”,“邻近”对“直接邻近”等等)。
除非以不同方式定义,否则这里使用的所有术语(包括技术和科技术语)具有和本发明所属领域技术人员通常理解的意义相同的意义。更应理解,这里使用的术语应解释成具有和本发明及相关领域中意义一致的意义,不应以理想化或极度正式的意义来解释,除非这里这样清楚地定义。
图2是相据本发明的实施例的存储系统的方框图。如图2所示,存储系统包括存储控制器200和闪存装置300。闪存装置300在存储控制器200的控制下操作。闪存装置300配置成将M位数据(例如,2位数据,3位数据,4位数据,等)存储在存储单元阵列中的每个单元中。闪存装置300可以实施成例如NAND闪存装置、NOR闪存装置、相变随机存取存储装置(PRAM)、磁随机存取存储装置(MRAM)或另一种非易失性存储装置。
存储控制器200在主机100的控制下控制闪存装置300。存储控制器200包括主机接口210、存储器接口220、控制器230和纠错码(ECC)控制器240。主机接口210提供具有主机100的接口,以及存储器接口220提供具有闪存装置300的接口。控制器230可以实施成例如控制存储控制器200的全部操作的处理器。主机100和存储控制器200可以通过诸如外围部件互连(PCI)总线和/或通用串行总线(USB)之类的多种通信接口彼此通信。
存储控制器200和闪存装置300可以通过公知的NAND/NOR接口方案彼此通信。包括存储控制器200和闪存装置300的存储系统可以例如是诸如闪存卡或智能卡之类的存储卡。
ECC控制器240配置成产生用于要存储在闪存装置300中的数据的ECC数据。ECC数据用于错误检测和/或纠错。ECC控制器240对从闪存装置300读取的数据执行错误检测/纠错操作。根据本发明的实施例,ECC控制器240利用第一纠错方案来产生第一ECC数据,并利用第二纠错方案来产生第二ECC数据。此外,ECC控制器240检测从闪存装置300中读取的数据中的错误,并根据检测到的错误的数目,选择性地利用第一ECC数据和第二ECC数据中的一个来纠正检测到的错误。
在本发明的特定实施例中,ECC控制器240可以包括ECC编码器242和ECC解码器244。ECC编码器242利用第一纠错方案来产生第一ECC数据,利用第二纠错方案来产生第二ECC数据。ECC解码器244检测从闪存装置300中读取的数据中的错误,并基于检测到的错误的数目,选择性地利用第一ECC数据和第二ECC数据中的一个来纠正检测到的错误。第一纠错方案可以例如是能支持飞击式(on-the-fly)功能的高速纠错方案。第二纠错方案可以例如是能纠正所读取数据中的大量错误的高性能纠错方案。
例如,在一些实施例中,如果检测到的错误的数目是3或小于3,则ECC控制器240利用第一ECC数据来快速纠正检测到的错误,以及如果检测到的错误的数目是4或大于4,则ECC控制器240利用第二ECC数据来精确纠正检测到的错误。也就是说,如果检测到的错误的数目小,则ECC控制器240进行快速纠错,并且如果检测到的错误的数目大,则ECC控制器240进行精确纠错,虽然相当慢。
如上所述,ECC控制器240配置成根据检测到的错误的数目,利用高速纠错或高性能纠错来纠正所读取数据中的错误。这就能更精确地读取多位数据。
图3是根据本发明的实施例的图2中所描述的ECC控制器240的方框图。如图3所示,ECC控制器240可以包括ECC编码器242和ECC解码器244。ECC编码器242可以包括第一编码器410和第二编码器412,第一编码器执行适合于高速纠错方案的编码操作,第二编码器执行适合于高性能纠错方案的编码操作。第一编码器410从主机100接收程序数据IN_DATA(即,写入闪存装置的数据),并产生符合Bose-Chaudhuri-Hocquenghem(BCH)码的第一ECC数据ECC1,该BCH码适合于高速纠错方案。第二编码器412接收程序数据IN_DATA,并产生符合Reed-Solomon(RS)码的第二ECC数据ECC2,该RS码适合于高性能纠错方案。BCH码和RS码仅是说明性的,其它诸如例如汉明码和/或卷积码之类的适宜的码,也可以用作编码。
第一ECC数据ECC1和第二ECC数据ECC2和程序数据IN_DATA相关联,接着通过存储器接口220存储在闪存装置300中。
图4是说明根据本发明的实施例的写/读数据W_DATA/R_DATA的格式的图,该数据是存储在图3所描述的闪存装置300中的数据/从图3所描述的闪存装置300中读取的数据。
虽然未在附图中描述,但是闪存装置300包括可以具有至少两个存储区的存储单元阵列。参照图4,自主机100接收的数据(DATA)存储在存储单元阵列的第一存储区中,其称作主存储区。涉及存储在主存储区中的数据的ECC数据(ECC1和ECC2)存储在主存储阵列的第二存储区中。该第二存储区称作备用区。在本发明的一些实施例中,主存储区中的每个存储单元都存储多位数据,而备用区中的每个存储单元都存储单个位数据。在其它实施例中,主存储区可以多位状态既存储数据又存储ECC数据。
一般而言,多位数据中的错误可以逐位方式出现。也就是说,由于邻近阈值电压分布之间的重叠,出现数据错误。这意味着所读取数据中的错误是不蔓延的。
图5是说明图3中所描述的ECC编码器242的编码操作的流程图。
参照图3和5,在操作510中,将程序数据IN_DATA输入到ECC编码器242的第一编码器410和第二编码器412中。在操作520中,第一编码器410和第二编码器412分别产生第一ECC数据ECC1和第二ECC数据ECC2。在操作530中,ECC编码器242输出包含程序数据IN_DATA的写数据W_DATA、第一ECC数据ECC1和第二ECC数据ECC2。
再参照图3,ECC解码器244包括第一解码器420、解码控制器422和第二解码器424。将从闪存装置300读取的读取数据R_DATA提供给ECC解码器244。ECC解码器244检测读取数据R_DATA中的错误,并根据检测到的错误的数目,选择性地利用第一解码器420和第二解码器424中的一个来进行纠错。例如,在一些实施例中,如果检测到的错误的数目是3或小于3,则解码控制器422控制第一解码器420来利用包含在读取数据R_DATA中的第一ECC数据ECC1进行纠错。如果检测到的错误的数目是4或大于4,则解码控制器422控制第二解码器424来利用包含在读取数据R_DATA中的第二ECC数据ECC2进行纠错。
第一解码器420可以利用包含在读取数据R_DATA中的第一ECC数据ECC1进行高速纠错。如果读取数据R_DATA中的错误的数目是3或小于3,则由于错误位置多项式(ELP)的简化可以快速进行纠错。第一解码器420支持“飞击式”功能,用于在将从闪存装置300读取的下一数据输入到其中之前,纠正当前读取R_DATA中的错误。于是,即使当将多个读取数据R_DATA成功输入到ECC解码器244中时,也不需要额外的时间来进行纠错。在本发明的一些实施例中,对于高速操作,用于第一解码器420的纠错方案可以通过硬件实施。
第二解码器424可以利用包含在读取数据R_DATA中的第二ECC数据ECC1进行高性能纠错。如果读取数据R_DATA中的错误的数目是4或大于4,则由于ELP的复杂性,纠错方案更难于在硬件中实施。于是,第二解码器424可以采用更强大的纠错方案,即使要花费更多的时间来进行纠错。采用RS码的高性能纠错方案足以克服最大纠正长度内的区间错误,并以逐符号(symbol by symbol)的方式在操作中纠正错误。于是,这种高性能纠错方案可以适用于当错误的数目较大时的纠错。在另一种实施例中,第二解码器424可以利用存储在图2中所描述的存储控制器200中的缓冲存储器(未示出)中的纠错软件来执行解码操作。
当花在第二解码器424的纠错操作上的时间大于读取数据R_DATA的输入周期时,解码控制器424可以执行控制操作,从而使在第二解码器424的解码操作期间,不从闪存装置300中接收额外的读取数据R_DATA。
图6是描述根据本发明的特定实施例的图3中所描述的ECC解码器244的解码操作的流程图。如图6所示,在操作610中,解码控制器422从闪存装置300中接收读取R_DATA。在操作620中,通过例如校正子(syndrome)计算,解码控制器422计算读取数据R_DATA中的错误的数目。如果没有检测出错误(操作630),则解码控制器422通过主机接口210将相应的数据传输到主机100(操作670)中。
如果检测到的错误的数目例如是3或小于3(在操作640中),则解码控制器422利用第一ECC数据ECC1来控制第一解码器420进行纠错(在操作650中)。如果检测到的错误的数目是例如4或大于4,则解码控制器422利用第二ECC数据ECC2来控制第二解码器424进行纠错(在操作660中)。将从第一解码器420和第二解码器424中的一个输出的被纠正了错误的数据通过主机接口210传递到主机100中(操作670)。
如上所述,包括例如高速纠错方案和高性能纠错方案的双重纠错方案可以用于存储和读取多位数据,从而可以精确读取初始多位数据。
上面公开的主题被视为是说明性的,而不是限制性的,所附权利要求将涵盖其落在本发明的真实精神和范围内的所有这样的修改、增强以及其它实施例。因而,在法律允许的最大程度内,由下列权利要求及其等价物的最宽许可解释来确定本发明的范围,不应局限或受限于前面的详细描述。
本美国非临时性专利申请按照35 U.S.C§119要求在2007年1月8日提交的编号为10-2007-0002090的韩国专利申请的优先权,因此本申请全文引用该优先权申请。

Claims (28)

1.一种用于闪存装置的纠错码控制器,该闪存装置在该闪存装置的存储单元阵列中所包括的数据区中的每个存储单元中存储M位数据,M是等于或大于2的正整数,该纠错码控制器包括:
编码器,其配置成利用第一纠错方案,响应存储在闪存装置中的输入数据来产生第一纠错码数据,以及配置成利用第二纠错方案,响应该输入数据来产生第二纠错码数据;以及
解码器,其配置成计算从闪存装置中读取的数据中的错误的数目,并根据错误的数目,选择性地利用第一纠错码数据或第二纠错码数据中的一个来纠正读取数据中的错误。
2.如权利要求1的纠错码控制器,其中编码器包括:
第一编码器,其配置成利用第一纠错方案来产生第一纠错码数据;以及
第二编码器,其配置成利用第二纠错方案来产生第二纠错码数据。
3.如权利要求1的纠错码控制器,其中从闪存装置读取的数据包括所读取的输入数据,所读取的第一纠错码数据和所读取的第二纠错码数据,以及其中解码器包括:
第一解码器,其配置成利用包含在读取数据中的第一纠错码数据来纠正读取数据中的错误;
第二解码器,其配置成利用包含在读取数据中的第二纠错码数据来纠正读取数据中的错误;以及
解码控制器,其配置成计算读取数据中的错误的数目,并进一步配置成基于错误的数目,选择性地控制第一解码器或第二解码器中的一个来纠正读取数据中的错误。
4.如权利要求3的纠错码控制器,其中如果读取数据中的错误的数目是3或小于3,则解码控制器控制第一解码器来纠正读取数据中的错误;以及如果读取数据中的错误的数目是4或大于4,则解码控制器控制第二解码器来纠正读取数据中的错误。
5.如权利要求1的纠错码控制器,其中第一纠错方案以比第二纠错方案更高的速度操作,以及其中第二纠错方案可以纠正比第一纠错方案更多的错误。
6.如权利要求1的纠错码控制器,其中第一纠错方案是采用了Bose-Chaudhuri-Hocquenghem(BCH)码的纠错方案,以及第二纠错方案是采用了Reed Solomon(RS)码的纠错方案。
7.如权利要求1的纠错码控制器,其中所述闪存装置的存储单元阵列包括所述数据区和备用区,和其中输入数据存储在所述数据区中,以及其中第一纠错码数据和第二纠错码数据存储在所述备用区中。
8.如权利要求7的纠错码控制器,其中备用区中的每个存储单元存储1位数据。
9.如权利要求1的纠错码控制器,其中闪存装置是NAND闪存装置、NOR闪存装置、相变随机存取存储装置(PRAM)或磁随机存取存储装置(MRAM)中的一种。
10.如权利要求1的纠错码控制器,组合闪存装置来形成存储系统。
11.一种用于纠正数据错误的方法,该方法包括:
接收要存储在闪存装置中的第一数据;
利用第一纠错方案,产生第一数据的第一纠错码数据;
利用第二纠错方案,产生第一数据的第二纠错码数据;
将第一数据、第一纠错码数据和第二纠错码数据存储到闪存装置中;
从闪存装置读取第一数据;
确定在读取的第一数据中的错误数目;以及
基于确定的错误数目,选择性地利用第一纠错码数据或第二纠错码数据来纠正第一数据中的错误。
12.如权利要求11的方法,其中将第一数据存储到闪存装置中包括将第一数据存储到闪存装置的多个存储单元中,其中将第一数据的多个位存储到多个存储单元中的至少一些存储单元中。
13.如权利要求12的方法,其中纠正第一数据中的错误包括:
如果读取的第一数据中的错误的数目是3或小于3,则利用第一纠错码数据来纠正第一数据中的错误;以及
如果读取的第一数据中的错误的数目是4或大于4,则利用第二纠错码数据来纠正第一数据中的错误。
14.如权利要求12的方法,其中第一纠错方案以比第二纠错方案更高的速度操作,以及其中第二纠错方案可以纠正比第一纠错方案更多的错误。
15.如权利要求12的方法,其中第一纠错方案是采用了Bose-Chaudhuri-Hocquenghem(BCH)码的纠错方案,以及其中第二纠错方案是采用了Reed Solomon(RS)码的纠错方案。
16.如权利要求12的方法,其中闪存装置的存储单元阵列包括数据区和备用区,其中第一数据存储在数据区中,以及其中第一纠错码数据和第二纠错码数据存储在备用区中。
17.如权利要求16的方法,其中数据区中的每个存储单元存储M位数据,M是等于或大于2的正整数,以及其中备用区中的每个存储单元存储1位数据。
18.如权利要求12的方法,其中闪存装置是NAND闪存装置、NOR闪存装置、相变随机存取存储装置(PRAM)或磁随机存取存储装置(MRAM)中的一种。
19.一种用于纠正存储在闪存装置中的数据中的错误的方法,该方法包括:
从闪存装置读取数据以及第一纠错码数据和第二纠错码数据;
确定读取数据中的多全错误;以及
基于所确定的错误的数目,选择第一纠错码数据或第二纠错码数据中的一个用于纠正读取数据中的错误。
20.如权利要求19的方法,其中利用第一纠错方案来产生第一纠错码数据,以及其中利用第二纠错方案来产生第二纠错码数据。
21.如权利要求19的方法,其中如果读取数据中的错误的数目是3或小于3,则选择第一纠错码数据来用于纠正读取数据中的错误。
22.一种存储系统,其包括:
闪存装置,其配置成在该闪存装置的存储单元阵列中所包括的数据区中的每个存储单元中存储M位数据,M是等于或大于2的正整数;以及
存储控制器,其配置成控制闪存装置,该存储控制器包括:
编码器,其配置成通过利用第一纠错方案,响应存储在闪存装置中的输入数据来产生第一纠错码数据,以及配置成通过利用第二纠错方案,响应该输入数据来产生第二纠错码数据,第一纠错码数据和第二纠错码数据存储在闪存装置中;以及
解码器,其配置成计算从闪存装置中读取的数据中的错误的数目,并根据错误的数目,选择性地利用第一纠错码数据或第二纠错码数据中的一个来纠正读取数据中的错误。
23.如权利要求22的存储系统,其中编码器包括:
第一编码器,其配置成通过利用第一纠错方案,响应输入数据来产生第一纠错码数据;以及
第二编码器,其配置成通过利用第二纠错方案,响应输入数据来产生第二纠错码数据。
24.如权利要求22的存储系统,其中解码器包括:
第一解码器,其配置成利用包含在读取数据中的第一纠错码数据来纠正读取数据中的错误;
第二解码器,其配置成利用包含在读取数据中的第二纠错码数据来纠正读取数据中的错误;以及
解码控制器,其配置成计算读取数据中的错误的数目,并进一步配置成根据错误的数目,选择性地控制第一解码器或第二解码器中的一个来纠正读取数据中的错误。
25.如权利要求22的存储系统,其中第一纠错方案是支持飞击式功能的高速纠错方案,以及第二纠错方案是不支持飞击式功能的高性能纠错方案。
26.如权利要求22的存储系统,其中第一纠错方案是采用了Bose-Chaudhuri-Hocquenghem(BCH)码的纠错方案,以及第二纠错方案是采用了Reed Solomon(RS)码的纠错方案。
27.如权利要求22的存储系统,其中所述闪存装置的存储单元阵列包括所述数据区和备用区,以及其中输入数据存储在所述数据区中,以及其中第一纠错码数据和第二纠错码数据存储在所述备用区中。
28.如权利要求27的存储系统,其中备用区中的每个存储单元存储1位数据。
CN2008101446283A 2007-01-08 2008-01-08 闪存装置纠错码控制器以及相关方法和存储系统 Active CN101329916B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020070002090A KR100842680B1 (ko) 2007-01-08 2007-01-08 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
KR2090/07 2007-01-08

Publications (2)

Publication Number Publication Date
CN101329916A CN101329916A (zh) 2008-12-24
CN101329916B true CN101329916B (zh) 2013-01-02

Family

ID=39595310

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101446283A Active CN101329916B (zh) 2007-01-08 2008-01-08 闪存装置纠错码控制器以及相关方法和存储系统

Country Status (3)

Country Link
US (3) US7904790B2 (zh)
KR (1) KR100842680B1 (zh)
CN (1) CN101329916B (zh)

Families Citing this family (165)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100856129B1 (ko) * 2006-12-29 2008-09-03 삼성전자주식회사 오정정 확률을 줄이는 에러 정정 회로, 그 방법 및 상기회로를 구비하는 반도체 메모리 장치
KR100845529B1 (ko) * 2007-01-03 2008-07-10 삼성전자주식회사 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템
US8051358B2 (en) * 2007-07-06 2011-11-01 Micron Technology, Inc. Error recovery storage along a nand-flash string
US8065583B2 (en) 2007-07-06 2011-11-22 Micron Technology, Inc. Data storage with an outer block code and a stream-based inner code
US8122322B2 (en) * 2007-07-31 2012-02-21 Seagate Technology Llc System and method of storing reliability data
JP4564520B2 (ja) 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
US8327245B2 (en) 2007-11-21 2012-12-04 Micron Technology, Inc. Memory controller supporting rate-compatible punctured codes
US8046542B2 (en) * 2007-11-21 2011-10-25 Micron Technology, Inc. Fault-tolerant non-volatile integrated circuit memory
US8499229B2 (en) * 2007-11-21 2013-07-30 Micro Technology, Inc. Method and apparatus for reading data from flash memory
US8533384B2 (en) 2007-12-27 2013-09-10 Sandisk Enterprise Ip Llc Flash memory controller garbage collection operations performed independently in multiple flash memory groups
US9477587B2 (en) 2008-04-11 2016-10-25 Micron Technology, Inc. Method and apparatus for a volume management system in a non-volatile memory device
KR101483190B1 (ko) * 2008-09-05 2015-01-19 삼성전자주식회사 메모리 시스템 및 그것의 데이터 처리 방법
US20100100797A1 (en) * 2008-10-16 2010-04-22 Genesys Logic, Inc. Dual mode error correction code (ecc) apparatus for flash memory and method thereof
US8583986B2 (en) * 2008-12-17 2013-11-12 Seagate Technology Llc Solid-state memory with error correction coding
US8880970B2 (en) * 2008-12-23 2014-11-04 Conversant Intellectual Property Management Inc. Error detection method and a system including one or more memory devices
US8555143B2 (en) * 2008-12-22 2013-10-08 Industrial Technology Research Institute Flash memory controller and the method thereof
US8473815B2 (en) 2008-12-22 2013-06-25 Industrial Technology Research Institute Methods and systems of a flash memory controller and an error correction code (ECC) controller using variable-length segmented ECC data
KR100955157B1 (ko) * 2008-12-24 2010-04-28 서울대학교산학협력단 메모리 장치 및 메모리 장치의 관리 방법
US8438452B2 (en) * 2008-12-29 2013-05-07 Intel Corporation Poison bit error checking code scheme
US8438455B2 (en) * 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
US8924819B2 (en) * 2009-01-23 2014-12-30 Macronix International Co., Ltd. Memory device and operation method thereof
JP2010198209A (ja) * 2009-02-24 2010-09-09 Toshiba Corp 半導体記憶装置
TWI404067B (zh) * 2009-02-27 2013-08-01 Macronix Int Co Ltd 記憶體裝置及其操作方法
JP2010237822A (ja) * 2009-03-30 2010-10-21 Toshiba Corp メモリコントローラおよび半導体記憶装置
US8874825B2 (en) 2009-06-30 2014-10-28 Sandisk Technologies Inc. Storage device and method using parameters based on physical memory block location
US8996958B2 (en) 2010-01-28 2015-03-31 International Business Machines Corporation Method, device and computer program product for decoding a codeword
US8386895B2 (en) 2010-05-19 2013-02-26 Micron Technology, Inc. Enhanced multilevel memory
US8683295B1 (en) * 2010-08-31 2014-03-25 Western Digital Technologies, Inc. Hybrid drive writing extended error correction code symbols to disk for data sectors stored in non-volatile semiconductor memory
JP2012094132A (ja) * 2010-10-01 2012-05-17 Siglead Inc 不揮発性半導体メモリ装置とデータ誤り訂正方法
US8418026B2 (en) 2010-10-27 2013-04-09 Sandisk Technologies Inc. Hybrid error correction coding to address uncorrectable errors
US8484542B2 (en) 2011-02-08 2013-07-09 Sandisk Technologies Inc. Data recovery using additional error correction coding data
KR101739878B1 (ko) 2011-02-22 2017-05-26 삼성전자주식회사 컨트롤러, 이의 동작방법, 및 상기 컨트롤러를 포함한 메모리 시스템
US8788922B2 (en) * 2011-02-28 2014-07-22 Apple Inc Error correction codes for incremental redundancy
US8909982B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc System and method for detecting copyback programming problems
US8910020B2 (en) 2011-06-19 2014-12-09 Sandisk Enterprise Ip Llc Intelligent bit recovery for flash memory
KR101816642B1 (ko) 2011-07-28 2018-01-10 삼성전자주식회사 에러 정정 회로, 이를 포함하는 비휘발성 메모리 장치 및 이의 구동 방법
JP2013029882A (ja) * 2011-07-26 2013-02-07 Toshiba Corp メモリコントローラ、半導体記憶装置および復号方法
KR20130044694A (ko) * 2011-10-24 2013-05-03 삼성전자주식회사 메모리 시스템 및 그 데이터 기록 재생 방법
US8793543B2 (en) 2011-11-07 2014-07-29 Sandisk Enterprise Ip Llc Adaptive read comparison signal generation for memory systems
CN102394114B (zh) * 2011-11-14 2014-01-01 清华大学 具有自适应纠错能力的bch码纠错方法
US8924815B2 (en) * 2011-11-18 2014-12-30 Sandisk Enterprise Ip Llc Systems, methods and devices for decoding codewords having multiple parity segments
US9048876B2 (en) 2011-11-18 2015-06-02 Sandisk Enterprise Ip Llc Systems, methods and devices for multi-tiered error correction
US8954822B2 (en) 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
JP2013109567A (ja) * 2011-11-21 2013-06-06 Toshiba Corp ストレージデバイス及び誤り訂正方法
KR101308616B1 (ko) * 2011-12-14 2013-09-23 주식회사 디에이아이오 비휘발성 메모리 시스템
US9093154B2 (en) * 2012-01-16 2015-07-28 Silicon Motion, Inc. Method, memory controller and system for reading data stored in flash memory
KR101942275B1 (ko) 2012-04-18 2019-01-25 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US8996957B1 (en) 2012-05-22 2015-03-31 Pmc-Sierra, Inc. Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes
US20130318418A1 (en) * 2012-05-22 2013-11-28 Politecncio di Milano Adaptive error correction for phase change memory
US9021336B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages
US8972824B1 (en) 2012-05-22 2015-03-03 Pmc-Sierra, Inc. Systems and methods for transparently varying error correction code strength in a flash drive
US8793556B1 (en) 2012-05-22 2014-07-29 Pmc-Sierra, Inc. Systems and methods for reclaiming flash blocks of a flash drive
US8788910B1 (en) 2012-05-22 2014-07-22 Pmc-Sierra, Inc. Systems and methods for low latency, high reliability error correction in a flash drive
US9047214B1 (en) 2012-05-22 2015-06-02 Pmc-Sierra, Inc. System and method for tolerating a failed page in a flash device
US9176812B1 (en) 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
US9021337B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive
US9021333B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for recovering data from failed portions of a flash drive
US9183085B1 (en) 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency
US9110824B2 (en) 2012-06-08 2015-08-18 Silicon Motion Inc. Method, controller, and memory device for correcting data bit(s) of at least one cell of flash memory
TWI514405B (zh) * 2012-06-08 2015-12-21 Silicon Motion Inc 修正快閃記憶體之至少一儲存單元之資料位元的方法、控制器及記憶體裝置
US20140006897A1 (en) * 2012-06-29 2014-01-02 International Business Machines Corporation Correction of structured burst errors in data
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
JP2014092973A (ja) * 2012-11-05 2014-05-19 Toshiba Corp メモリシステム
US9577673B2 (en) 2012-11-08 2017-02-21 Micron Technology, Inc. Error correction methods and apparatuses using first and second decoders
KR102004928B1 (ko) 2012-12-04 2019-07-29 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 에러 정정 코드 처리 방법
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9003264B1 (en) 2012-12-31 2015-04-07 Sandisk Enterprise Ip Llc Systems, methods, and devices for multi-dimensional flash RAID data protection
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9043668B2 (en) 2013-02-08 2015-05-26 Seagate Technology Llc Using ECC data for write deduplication processing
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
KR102143517B1 (ko) 2013-02-26 2020-08-12 삼성전자 주식회사 에러 정정회로를 포함하는 반도체 메모리 장치 및 반도체 메모리 장치의 동작방법
CN104035832B (zh) * 2013-03-04 2018-07-03 联想(北京)有限公司 电子设备和数据校验方法
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9092350B1 (en) 2013-03-15 2015-07-28 Sandisk Enterprise Ip Llc Detection and handling of unbalanced errors in interleaved codewords
US9026867B1 (en) 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
US9136877B1 (en) 2013-03-15 2015-09-15 Sandisk Enterprise Ip Llc Syndrome layered decoding for LDPC codes
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
US9009576B1 (en) 2013-03-15 2015-04-14 Sandisk Enterprise Ip Llc Adaptive LLR based on syndrome weight
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
TWI502597B (zh) * 2013-05-13 2015-10-01 Univ Nat Taiwan Science Tech 非揮發性記憶體的資料反轉與回復方法
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9043517B1 (en) 2013-07-25 2015-05-26 Sandisk Enterprise Ip Llc Multipass programming in buffers implemented in non-volatile data storage systems
US9235509B1 (en) 2013-08-26 2016-01-12 Sandisk Enterprise Ip Llc Write amplification reduction by delaying read access to data written during garbage collection
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9442670B2 (en) 2013-09-03 2016-09-13 Sandisk Technologies Llc Method and system for rebalancing data stored in flash memory devices
US9158349B2 (en) 2013-10-04 2015-10-13 Sandisk Enterprise Ip Llc System and method for heat dissipation
US9323637B2 (en) 2013-10-07 2016-04-26 Sandisk Enterprise Ip Llc Power sequencing and data hardening architecture
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9280429B2 (en) 2013-11-27 2016-03-08 Sandisk Enterprise Ip Llc Power fail latching based on monitoring multiple power supply voltages in a storage device
US9122636B2 (en) 2013-11-27 2015-09-01 Sandisk Enterprise Ip Llc Hard power fail architecture
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
TWI527048B (zh) * 2013-11-29 2016-03-21 慧榮科技股份有限公司 應用於快閃記憶體裝置的錯誤更正碼單元、自我測試方法及相關的控制器
US9250676B2 (en) 2013-11-29 2016-02-02 Sandisk Enterprise Ip Llc Power failure architecture and verification
US9092370B2 (en) 2013-12-03 2015-07-28 Sandisk Enterprise Ip Llc Power failure tolerant cryptographic erase
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9129665B2 (en) 2013-12-17 2015-09-08 Sandisk Enterprise Ip Llc Dynamic brownout adjustment in a storage device
US9389956B2 (en) * 2014-01-10 2016-07-12 International Business Machines Corporation Implementing ECC control for enhanced endurance and data retention of flash memories
US9549457B2 (en) 2014-02-12 2017-01-17 Sandisk Technologies Llc System and method for redirecting airflow across an electronic assembly
US9497889B2 (en) 2014-02-27 2016-11-15 Sandisk Technologies Llc Heat dissipation for substrate assemblies
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9417945B2 (en) 2014-03-05 2016-08-16 International Business Machines Corporation Error checking and correction for NAND flash devices
US9519319B2 (en) 2014-03-14 2016-12-13 Sandisk Technologies Llc Self-supporting thermal tube structure for electronic assemblies
US9485851B2 (en) 2014-03-14 2016-11-01 Sandisk Technologies Llc Thermal tube assembly structures
US9348377B2 (en) 2014-03-14 2016-05-24 Sandisk Enterprise Ip Llc Thermal isolation techniques
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
CN103916139B (zh) * 2014-04-22 2016-12-21 淮安固泰存储科技有限公司 一种基于里德所罗门码的加强型编码方法、解码方法及解码器
US9070481B1 (en) 2014-05-30 2015-06-30 Sandisk Technologies Inc. Internal current measurement for age measurements
US9093160B1 (en) 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9645749B2 (en) 2014-05-30 2017-05-09 Sandisk Technologies Llc Method and system for recharacterizing the storage density of a memory device or a portion thereof
US8891303B1 (en) 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
KR101548875B1 (ko) * 2014-08-28 2015-09-01 성균관대학교산학협력단 메모리의 오류검사정정 성능 향상방법
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
WO2016051599A1 (ja) * 2014-10-03 2016-04-07 株式会社日立製作所 メモリコントローラ及びデータ制御方法
TWI556254B (zh) * 2014-10-14 2016-11-01 慧榮科技股份有限公司 資料儲存裝置及其資料存取方法
US9768808B2 (en) 2015-04-08 2017-09-19 Sandisk Technologies Llc Method for modifying device-specific variable error correction settings
US9606737B2 (en) 2015-05-20 2017-03-28 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning
US9639282B2 (en) 2015-05-20 2017-05-02 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices
JP6577302B2 (ja) * 2015-08-28 2019-09-18 東芝メモリ株式会社 メモリシステム
US10013179B2 (en) 2015-12-03 2018-07-03 Sandisk Technologies Llc Reading logical groups of data from physical locations in memory using headers
US9830084B2 (en) 2015-12-03 2017-11-28 Sandisk Technologies Llc Writing logical groups of data to physical locations in memory using headers
KR20170076350A (ko) * 2015-12-24 2017-07-04 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10348337B2 (en) * 2017-02-23 2019-07-09 Winbond Electronics Corp. Data read method and memory storage device using the same
US11521697B2 (en) 2019-01-30 2022-12-06 STMicroelectronics International, N.V. Circuit and method for at speed detection of a word line fault condition in a memory circuit
US11393532B2 (en) 2019-04-24 2022-07-19 Stmicroelectronics International N.V. Circuit and method for at speed detection of a word line fault condition in a memory circuit
US11475170B2 (en) 2019-05-28 2022-10-18 Nuvoton Technology Corporation System and method for correction of memory errors
US11342044B2 (en) 2019-05-28 2022-05-24 Nuvoton Technology Corporation System and method for prioritization of bit error correction attempts
US11611358B2 (en) 2019-12-24 2023-03-21 Kioxia Corporation Systems and methods for detecting or preventing false detection of three error bits by SEC
US11456757B2 (en) 2020-12-16 2022-09-27 SK Hynix Inc. Oscillation detection and mitigation in bit-flipping decoders
US11621727B2 (en) * 2021-06-04 2023-04-04 SK Hynix Inc. Decoding systems and methods for local reinforcement
CN113571121A (zh) * 2021-07-26 2021-10-29 杭州国芯科技股份有限公司 嵌入式设备NAND Flash的ECC码存储方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1427413A (zh) * 2001-12-19 2003-07-02 惠普公司 包含用于临时存储的非易失存储器的一次写入式存储设备
CN1529852A (zh) * 2001-04-24 2004-09-15 皇家菲利浦电子有限公司 用于闪速存储器允许可更改位的改进的错误修正模式

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5475693A (en) * 1994-12-27 1995-12-12 Intel Corporation Error management processes for flash EEPROM memory arrays
JPH10207726A (ja) * 1997-01-23 1998-08-07 Oki Electric Ind Co Ltd 半導体ディスク装置
JPH10312340A (ja) 1997-05-12 1998-11-24 Kofu Nippon Denki Kk 半導体記憶装置におけるエラー検出,訂正方式
US6034891A (en) * 1997-12-01 2000-03-07 Micron Technology, Inc. Multi-state flash memory defect management
US6041001A (en) * 1999-02-25 2000-03-21 Lexar Media, Inc. Method of increasing data reliability of a flash memory device without compromising compatibility
JP3975245B2 (ja) * 1999-12-16 2007-09-12 株式会社ルネサステクノロジ 記録再生装置および半導体メモリ
JP2001297038A (ja) 2000-04-11 2001-10-26 Toshiba Corp データ記憶装置および記録媒体並びに記録媒体制御方法
JP3562432B2 (ja) * 2000-04-12 2004-09-08 日産自動車株式会社 車両のエンジン自動停止再始動装置
FR2810152A1 (fr) * 2000-06-13 2001-12-14 St Microelectronics Sa Memoire eeprom securisee comprenant un circuit de correction d'erreur
US6684353B1 (en) 2000-12-07 2004-01-27 Advanced Micro Devices, Inc. Reliability monitor for a memory array
JP4059473B2 (ja) * 2001-08-09 2008-03-12 株式会社ルネサステクノロジ メモリカード及びメモリコントローラ
US6751766B2 (en) 2002-05-20 2004-06-15 Sandisk Corporation Increasing the effectiveness of error correction codes and operating multi-level memory systems by using information about the quality of the stored data
US8412879B2 (en) * 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
JP2004186856A (ja) * 2002-12-02 2004-07-02 Pioneer Electronic Corp 誤り訂正方法、装置及びプログラム
JP2004234545A (ja) * 2003-01-31 2004-08-19 Toshiba Corp 制御回路及びメモリコントローラ
KR20050020650A (ko) * 2003-08-18 2005-03-04 소니 가부시키가이샤 데이터 레코딩/재생 디바이스, 데이터 레코딩/재생 방법,프로그램, 및 레코딩 매체
US7325157B2 (en) * 2003-11-03 2008-01-29 Samsung Electronics Co., Ltd Magnetic memory devices having selective error encoding capability based on fault probabilities
US7366246B2 (en) * 2003-12-09 2008-04-29 Delphi Technologies, Inc. Method to maximize receiver performance in a multi-stream system
US7210077B2 (en) * 2004-01-29 2007-04-24 Hewlett-Packard Development Company, L.P. System and method for configuring a solid-state storage device with error correction coding
JP4056488B2 (ja) 2004-03-30 2008-03-05 エルピーダメモリ株式会社 半導体装置の試験方法及び製造方法
DE602004026707D1 (de) * 2004-06-30 2010-06-02 St Microelectronics Srl Verfahren und Vorrichtung für die Fehlerkorrektur in elektronischen Speichern
US7673222B2 (en) 2005-07-15 2010-03-02 Mediatek Incorporation Error-correcting apparatus including multiple error-correcting modules functioning in parallel and related method
US7747927B2 (en) * 2005-11-22 2010-06-29 Sandisk Corporation Method for adapting a memory system to operate with a legacy host originally designed to operate with a different memory system
US8055979B2 (en) * 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
US7809994B2 (en) * 2006-05-17 2010-10-05 Sandisk Corporation Error correction coding for multiple-sector pages in flash memory devices
US7904780B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of modulating error correction coding
US8001441B2 (en) * 2006-11-03 2011-08-16 Sandisk Technologies Inc. Nonvolatile memory with modulated error correction coding
US7904788B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of varying read threshold voltage in nonvolatile memory
US8015473B2 (en) * 2006-12-19 2011-09-06 Intel Corporation Method, system, and apparatus for ECC protection of small data structures
JP4498426B2 (ja) * 2008-03-01 2010-07-07 株式会社東芝 メモリシステム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1529852A (zh) * 2001-04-24 2004-09-15 皇家菲利浦电子有限公司 用于闪速存储器允许可更改位的改进的错误修正模式
CN1427413A (zh) * 2001-12-19 2003-07-02 惠普公司 包含用于临时存储的非易失存储器的一次写入式存储设备

Also Published As

Publication number Publication date
US7904790B2 (en) 2011-03-08
US20110119560A1 (en) 2011-05-19
US20110119561A1 (en) 2011-05-19
US8788905B2 (en) 2014-07-22
US8112692B2 (en) 2012-02-07
US20080168319A1 (en) 2008-07-10
CN101329916A (zh) 2008-12-24
KR100842680B1 (ko) 2008-07-01

Similar Documents

Publication Publication Date Title
CN101329916B (zh) 闪存装置纠错码控制器以及相关方法和存储系统
US8112689B2 (en) ECC controller for use in flash memory device and memory system including the same
US9197247B2 (en) Memory system and error correction method
KR101736792B1 (ko) 플래시 메모리 및 그것의 셀프 인터리빙 방법
US8830743B2 (en) Method of operating memory controller, memory controller, memory device and memory system
CN107967186B (zh) 用于控制存储器装置的方法和控制器及存储器系统
US10061641B2 (en) Memory controller, storage device including the same and data encoding and decoding methods thereof
US9471421B2 (en) Data accessing method, memory storage device and memory controlling circuit unit
US9639419B2 (en) Read voltage level estimating method, memory storage device and memory control circuit unit
US9621188B2 (en) Soft and hard decision message-passing decoding
CN102132354B (zh) 闪存中的数据的快速低功率读取
US9507658B2 (en) Data reading method, memory storage device and memory controlling circuit unit
US8347183B2 (en) Flash memory device using ECC algorithm and method of operating the same
KR20160090054A (ko) 플래시 메모리 시스템 및 그의 동작 방법
US9396064B2 (en) Error correction with secondary memory
US11190217B2 (en) Data writing method, memory controlling circuit unit and memory storage device
US9280412B2 (en) Memory with error correction configured to prevent overcorrection
US11146295B1 (en) Decoding method, memory storage device, and memory controlling circuit unit
US10528496B2 (en) Controller and operating method thereof
US10978163B2 (en) Voltage identifying method, memory controlling circuit unit and memory storage device
CN116743188A (zh) 存储系统和控制存储系统的方法
Park et al. HOST MFelnibSrh

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