CN101329916B - 闪存装置纠错码控制器以及相关方法和存储系统 - Google Patents
闪存装置纠错码控制器以及相关方法和存储系统 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/19—Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/23—Error 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/35—Unequal 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
- H03M13/3715—Adaptation to the number of estimated errors or to the channel state
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/152—Bose-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位数据。
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)
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)
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)
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 | 株式会社東芝 | メモリシステム |
-
2007
- 2007-01-08 KR KR1020070002090A patent/KR100842680B1/ko active IP Right Grant
- 2007-03-29 US US11/692,992 patent/US7904790B2/en active Active
-
2008
- 2008-01-08 CN CN2008101446283A patent/CN101329916B/zh active Active
-
2011
- 2011-01-25 US US13/012,984 patent/US8112692B2/en active Active
- 2011-01-25 US US13/012,955 patent/US8788905B2/en active Active
Patent Citations (2)
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 |