CN115083505A - 用于闪存错误码纠正的方法和设备 - Google Patents
用于闪存错误码纠正的方法和设备 Download PDFInfo
- Publication number
- CN115083505A CN115083505A CN202111576357.0A CN202111576357A CN115083505A CN 115083505 A CN115083505 A CN 115083505A CN 202111576357 A CN202111576357 A CN 202111576357A CN 115083505 A CN115083505 A CN 115083505A
- Authority
- CN
- China
- Prior art keywords
- codeword
- data
- memory
- decoding process
- decoder
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 158
- 238000012937 correction Methods 0.000 title claims abstract description 46
- 230000008569 process Effects 0.000 claims description 103
- 238000003860 storage Methods 0.000 claims description 16
- 230000010287 polarization Effects 0.000 claims description 7
- 208000011580 syndromic disease Diseases 0.000 claims description 4
- 230000015654 memory Effects 0.000 description 265
- 238000012545 processing Methods 0.000 description 16
- 230000004044 response Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 7
- 101100524346 Xenopus laevis req-a gene Proteins 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 101100524347 Xenopus laevis req-b gene Proteins 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 238000005259 measurement Methods 0.000 description 5
- 239000007787 solid Substances 0.000 description 5
- 241000169170 Boreogadus saida Species 0.000 description 4
- 239000000654 additive Substances 0.000 description 3
- 230000000996 additive effect Effects 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100058970 Arabidopsis thaliana CALS11 gene Proteins 0.000 description 1
- 101100058967 Arabidopsis thaliana CALS8 gene Proteins 0.000 description 1
- 101100366714 Caenorhabditis elegans ssl-1 gene Proteins 0.000 description 1
- 101000823089 Equus caballus Alpha-1-antiproteinase 1 Proteins 0.000 description 1
- 101000823106 Equus caballus Alpha-1-antiproteinase 2 Proteins 0.000 description 1
- 101000651211 Homo sapiens Transcription factor PU.1 Proteins 0.000 description 1
- 101100049574 Human herpesvirus 6A (strain Uganda-1102) U5 gene Proteins 0.000 description 1
- 101100482995 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) gsl-3 gene Proteins 0.000 description 1
- 101100341076 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) IPK1 gene Proteins 0.000 description 1
- 102100027654 Transcription factor PU.1 Human genes 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005779 cell damage Effects 0.000 description 1
- 208000037887 cell injury Diseases 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 238000007654 immersion Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 101150064834 ssl1 gene Proteins 0.000 description 1
- 101150011582 ssl4 gene Proteins 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block 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/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
-
- 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/1048—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 using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- 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/1012—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 using codes or arrangements adapted for a specific type of error
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
-
- 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2909—Product 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Read Only Memory (AREA)
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
Abstract
本公开的实施例提供了用于闪存错误码纠正的方法和设备。本公开的实施例提供了一种控制器分级解码架构。例如,多个解码器层级可随着具有局部性的码的层级(例如,层级的较大码长度可由来自较低层级的局部码组成)的使用而被实施。分级纠错码(ECC)解码包括多个层级,诸如第一层级、第二层级和根据需要的附加层级。第一层级可包括低复杂度ECC引擎,每个低复杂度ECC引擎连接到NAND通道以计算低码长度的局部码。第二层级可包括较高复杂度ECC引擎,较高复杂度ECC引擎可共享若干NAND通道以使用相对较大的码长度来纠正纰误数据(例如,并且第二层级的较高复杂度ECC引擎可使用更复杂的解码算法来执行解码操作)。较大的码长度可由来自先前层级的局部码组成。
Description
技术领域
下文总体上涉及存储器装置,更具体地,涉及闪存错误码纠正。
背景技术
存储器装置是用于存储数据的常用电子组件。NAND(与非)闪存装置允许在每个存储器单元中存储若干位的数据,从而提供制造成本和性能的改善。存储多个位的数据的存储器单元可称为多层存储器单元。多层存储器单元将存储器单元的阈值电压范围划分成若干电压状态,写入到存储器单元的数据值使用存储器单元电压电平被提取。
在一些情况下,数据可在编程到存储器装置之前被编码,以提供纠正读取错误的能力。然而,许多解码器假设加性白高斯噪声(additive white Gaussian noise,AWGN)模型,但由闪存存储器单元引入的噪声可与AWGN模型不一致。此外,基于极化解码方案进行解码可是计算密集的。例如,VNAND装置(例如,经由NAND装置的竖直堆叠)增加层数并增加NAND上的按单元的位调制(bits per-cells modulation)。这可导致NAND信噪比(SNR)的降低并且需要较强的纠错机制。因此,在本领域中需要用于对存储在存储器装置中的信息进行解码的改善的系统和方法。
发明内容
描述了一种用于分级错误码纠正的方法、设备、非暂时性计算机可读介质和系统。所述方法、设备、非暂时性计算机可读介质和系统的实施例被配置为:从存储器装置的第一位置读取第一码字;使用第一解码器对第一码字执行第一解码处理;确定第一码字不能进行第一解码处理;基于确定第一码字不能进行第一解码处理,将第一码字和第二码字组合以形成第一组合码字;以及使用第二解码器对第一组合码字执行第二解码处理。
描述了一种用于分级错误码纠正的方法、设备、非暂时性计算机可读介质和系统。所述方法、设备、非暂时性计算机可读介质和系统的实施例被配置为:接收用于存储在存储器装置中的数据;基于内编码方案和外编码方案生成组合码字,其中,组合码字的第一部分和组合码字的第二部分使用内编码方案被单独编码并且使用外编码方案被联合编码;以及将组合码字的第一部分存储在存储器装置的第一位置处,并且将组合码字的第二部分存储在存储器装置的第二位置处。
描述了一种用于分级错误码纠正的设备、系统和方法。所述设备、系统和方法的实施例被配置为:存储器装置;第一解码器,被配置为对从存储器装置读取的第一码字执行第一解码处理;以及第二解码器,被配置为当第一码字不能进行第一解码处理时对第一组合码字执行第二解码处理,第一组合码字包括从存储器装置读取的第一码字和第二码字。
附图说明
通过参照附图详细描述本发明构思的实施例,本发明构思的特征将变得更加清楚。
图1是示出根据发明构思的实施例的包括存储器系统的数据处理系统的实施方式的框图。
图2是示出根据发明构思的实施例的图1的存储器系统的框图。
图3是根据发明构思的实施例的图1的非易失性存储器装置的详细框图。
图4是根据发明构思的实施例的图2的存储器单元阵列的框图。
图5是根据发明构思的实施例的图4的存储器单元阵列的存储器块的电路图。
图6示出根据发明构思的实施例的编码器的示例。
图7示出根据本公开的方面的纠错码(ECC)编码方案的示例。
图8示出根据本公开的方面的用于分级错误码纠正的处理的示例。
图9示出根据本公开的方面的存储器系统的示例。
图10示出根据本公开的方面的解码器的示例。
图11和图12示出根据本公开的方面的用于分级错误码纠正的处理的示例。
图13示出根据本公开的方面的第一解码层级的示例。
图14示出根据本公开的方面的第二解码层级的示例。
图15示出根据本公开的方面的第三解码层级的示例。
具体实施方式
本公开描述了用于纠错的系统和方法,更具体地,描述了用于使用分级编码技术(hierarchical coding technique)在存储器装置中对码字进行编码和解码的系统和方法。
NAND编程是基于将电压施加到存储器单元的复杂处理。然而,单元电压可受到诸如当前电压电平、脉冲功率和单元间干扰的变量的影响。单元电压也可受到抑制的单元破坏(inhibited cell disruption)、字线(WL)间耦合和单元保留时间的影响。另外,写入NAND装置的结果是随机的。例如,数据也可是有噪声的,导致观察上的问题。
解码器是用于将二进制信息从编码的输入转换成唯一的输出的逻辑电路。可使用多个输入和多个输出。通道编码(channel coding)对数据流执行编码操作和解码操作,以纠正诸如干扰或噪声的通信错误。在发送装置处使用第一组操作对第一数据流执行通道编码,并且在接收装置处使用第二组操作对第二数据流执行通道编码。通道编码可以基于块码或卷积码。
极化编码(polar coding)是通道编码的子集。极化编码是一种块码方法,其中,数据和位的块具有设定大小。在发送器和接收器处执行对块的操纵。称为通道组合(ChannelCombining)和通道分离(Channel Splitting)的操作被执行。首先,通道组合将符号的组合分配和/或映射到通道。然后,通道分离执行转换操作,将符号组合转换成解码器中使用的时域向量。解码操作与编码操作一起估计时域位流。这在接收器处将位的块和通道转换成极化的位流。极化码已被证明实现了用于加性白高斯噪声(AWGN)通道的能力,并且使用具有循环冗余校验(CRC)的连续消除列表(Successive Cancelation List,SCL)解码器实现了与用于有限长度码(finite length code)的低密度奇偶校验码(LDPC)相当的性能。因为每个位被连续解码,所以SCL解码器具有高延迟。
在固态驱动器(SSD)装置中,闪存控制器并联连接到若干NAND通道以实现高数据吞吐量。存储器控制器包括信号处理和纠错码(ECC)引擎,信号处理和纠错码(ECC)引擎对来自NAND的数据进行解码并可靠地取得存储的数据。一些硬件架构可通过应用从NAND的快速读取以及快速解码技术来最大化存储器系统的吞吐量。另外,硬件架构可在例如数据保留时间和数据纰误(corruption)中执行纠正方法。VNAND(例如,经由NAND装置的竖直堆叠)增加了NAND上的层数和较高的每单元的位调制。这可导致NAND信噪比(SNR)的降低并且需要较强的纠错机制。可使用诸如解码算法的一些方法来改善可纠正性,以增加码字长度。然而,一些方法降低SSD性能(例如,降低每秒输入/输出操作(IOPS)),并且可使用更复杂的硬件。
本公开的实施例提供了一种控制器分级解码架构。例如,多个解码器层级(hierarchy)可随着具有局部性(locality)的码的层级(例如,其中后续层级的较大码长度可由来自较低层级的局部码组成)的使用而被实施。分级ECC解码包括多个层级,诸如,第一层级、第二层级和根据需要的附加层级。第一层级可包括低复杂度ECC引擎,每个低复杂度ECC引擎连接到NAND通道以计算低码长度的局部码。下一层级(例如,第二层级)可包括较高复杂度ECC引擎,较高复杂度ECC引擎可共享若干NAND通道以使用相对较大的码长度来纠正纰误数据(例如,第二层级的较高复杂度ECC引擎可使用更复杂的解码算法来执行解码操作)。较大的码长度可由来自先前层级的局部码组成。
可添加附加层级,其中,每个附加层级可共享更多NAND通道。附加层级可包括更长的码(由更多的局部码(诸如,组合的局部码)组成的更长的码)和更强的解码算法。因此,提供的控制器分级解码器实施例包括不同层级的解码器实施方式。每个层级比先前(例如,较低)层级包括更强的解码能力。较强的解码能力的一个方面是较长的码长度,用具有局部性的码的分级结构来实现。较强的解码能力的另一方面是在ECC引擎的每个后续层级处使用更复杂的解码算法。因此,较高的层级可实施更复杂的解码算法和更复杂的EEC引擎硬件。较高的层级还可不太频繁地被使用,因此可较慢并且具有较少的实例,其中,每个实例服务于更多的NAND通道。
分级码被规划为使得每个层级实现吞吐量和可纠正性能。例如,较低层级可针对应用从NAND的快速读取和快速解码技术而被实施,同时较高层级可(例如,针对更复杂的解码操作、在更强大的解码方案被期望时、在较低层级解码方案不能进行时等)不太频繁地被实施。这可使得能够使用长码和具有可接受的硬件复杂度的复杂硬件(例如,经由用于复杂的解码操作的较高层级的实施),同时保持SSD的性能(例如,IOPS阈值)(例如,经由用于相对较不复杂的解码操作的较低层级的实施)。
在下文中将参照附图更全面地描述本发明构思的实施例。贯穿附图,相同的参考标号可表示相同的元件。
将理解,术语“第一”、“第二”、“第三”等在此用于将一个元件与另一个元件区分开,并且元件不受这些术语的限制。因此,一个实施例中的“第一”元件可在另一实施例中被描述为“第二”元件。
应理解,除非上下文另有清楚指示,否则每个实施例内的特征或方面的描述通常应被认为可用于其它实施例中的其它类似特征或方面。
如在此使用的,除非上下文另有清楚指示,否则单数形式也意在包括复数形式。
在此,当一个值被描述为约等于另一值或者与另一值基本上相同或基本上等于另一值时,将理解,这些值在测量误差内彼此相等,或者如果可测量地不相等,则这些值在值上足够接近以如本领域普通技术人员将理解的在功能上彼此相等。例如,在此使用的术语“约”包括所述值,并且表示在本领域普通技术人员考虑到所讨论的测量和与特定量的测量相关的误差(即,测量系统的局限性)而确定的特定值的可接受偏差范围内。例如,“约”可表示在如本领域普通技术人员理解的一个或多个标准偏差内。此外,将理解,虽然在此可将参数描述为“约”具有特定值,但是根据实施例,参数可以精确地为特定值或者如本领域普通技术人员将理解的在测量误差内近似为特定值。
示例存储器装置
图1至图5示出根据本公开的方面的示例存储器系统。在存储器系统(例如,诸如SSD系统)中,存储器控制器并联连接到若干NAND通道以实现高数据吞吐量。存储器控制器包括信号处理和ECC引擎,信号处理和ECC引擎对来自NAND的数据进行解码并可靠地取得存储的数据。如在此所述,图1至图5的示例存储器系统可包括具有分级解码架构(例如,具有多个解码器层级)的存储器控制器,分级解码架构可随着具有局部性的码的层级的使用而被实施。
图1是示出根据发明构思的实施例的包括存储器系统的数据处理系统的实施方式的框图。
参照图1,数据处理系统10可包括主机100和存储器系统200。图1中示出的存储器系统200可用于包括数据处理功能的各种系统中。各种系统可以是包括例如移动装置(诸如,智能电话或平板计算机)的各种装置。然而,各种装置不限于此。
存储器系统200可包括各种类型的存储器装置。在此,发明构思的实施例将被描述为包括作为非易失性存储器的存储器装置。然而,实施例不限于此。例如,存储器系统200可包括作为易失性存储器的存储器装置。
根据实施例,存储器系统200可包括非易失性存储器装置(诸如,以只读存储器(ROM)、磁盘、光盘、闪存等为例)。闪存可以是根据金属氧化物半导体场效应晶体管(MOSFET)的阈值电压的改变而存储数据的存储器,并且可包括例如NAND闪存和NOR(或非)闪存。存储器系统200可使用包括非易失性存储器装置的存储卡(诸如,以嵌入式多介质卡(eMMC)、安全数字(SD)卡、微型SD卡或通用闪存(UFS)为例)来实施,或者存储器系统200可使用例如包括非易失性存储器装置的SSD来实施。在此,将假设存储器系统200是非易失性存储器系统来描述存储器系统200的配置和操作。然而,存储器系统200不限于此。主机100可包括例如安装在例如移动装置上的片上系统(SoC)应用处理器(AP),或者包含在计算机系统中的中央处理器(CPU)。
处理器是智能硬件装置(例如,通用处理组件、数字信号处理器(DSP)、CPU、图形处理器(GPU)、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件、分立门或晶体管逻辑组件、分立硬件组件或它们的任何组合)。在一些情况下,处理器被配置为使用存储器控制器来操作存储器阵列。在其它情况下,存储器控制器集成到处理器中。在一些情况下,处理器被配置为执行存储在存储器中的计算机可读指令以执行各种功能。在一些实施例中,处理器包括用于调制解调处理、基带处理、数字信号处理或传输处理的专用组件。
如上所述,主机100可包括AP 110。AP 110可包括各种知识产权(IP)块。例如,AP110可包括控制存储器系统200的存储器装置驱动器111。主机100可与存储器系统200通信,以发送与存储器操作有关的命令并且响应于发送的命令而接收确认命令。主机100还可关于与存储器操作有关的信息表而与存储器系统200通信。
存储器系统200可包括例如存储器控制器210和存储器装置220。存储器控制器210可从主机100接收与存储器操作有关的命令,使用接收的命令生成内部命令和内部时钟信号,并且将内部命令和内部时钟信号提供给存储器装置220。存储器装置220可响应于内部命令而将写入数据存储在存储器单元阵列中,或者可响应于内部命令而将读取数据提供给存储器控制器210。
如在此所述,存储器控制器210可包括分级解码架构。例如,存储器控制器210可包括低复杂度ECC引擎(例如,其中每个ECC引擎连接到NAND通道以计算低码长度的局部码)的第一层级。存储器控制器210还可包括较高复杂度的ECC引擎的附加层级(例如,ECC引擎的第二层级、ECC引擎的第三层级等),其中,较高复杂度的ECC引擎可共享若干NAND通道以使用相对较大的码长度(例如,其中每个层级的码长度可由来自先前层级的组合的局部码组成)来纠正纰误数据。存储器控制器210是在此(例如,参照图8)描述的对应元件的示例,或者存储器控制器210包括在此(例如,参照图8)描述的对应元件的方面。
存储器装置220包括存储器单元阵列,存储器单元阵列即使在存储器装置220未上电时也保留存储在其中的数据。存储器单元阵列可包括例如NAND闪存或NOR闪存、磁阻随机存取存储器(MRAM)、电阻随机存取存储器(RRAM)、铁电随机存取存储器(FRAM)或相变存储器(PCM)作为存储器单元。例如,当存储器单元阵列包括NAND闪存时,存储器单元阵列可包括多个块和多个页。数据可以以页为单位被编程和读取,并且数据可以以块为单位被擦除。图4中示出包括在存储器单元阵列中的存储器块的示例。
图2是示出根据发明构思的实施例的图1的存储器系统200的框图。
参照图2,存储器系统200包括存储器装置220和存储器控制器210。存储器控制器210在此也可被称为控制器电路。存储器装置220可在存储器控制器210的控制下执行写入操作、读取操作或擦除操作。
存储器控制器210可根据从主机(例如,外部主机装置)100接收的请求或内部指定的调度而控制存储器装置220。存储器控制器210可包括控制器核211、内部存储器214、主机接口块215以及存储器接口块216。存储器控制器210还可包括装置信息存储设备217,装置信息存储设备217被配置为将第一装置信息DI1提供给主机接口块215并且将第二装置信息DI2提供给控制器核211。
控制器核211可包括编码器212和解码器213。编码器212是参照图6描述的对应元件的示例,或者编码器212包括参照图6描述的对应元件的方面。解码器213是参照图8至图10描述的对应元件的示例,或者解码器213包括参照图8至图10描述的对应元件的方面。存储器控制核可根据从主机100接收的请求或内部指定的调度而控制和访问存储器装置220。存储器控制核可管理和执行用于管理或操作存储器系统200的各种元数据和代码。在一些实施例中,控制器核211可包括存储器控制核和机器学习核,并且这些核中的每个可由一个或多个处理器实施。
在一些示例中,存储器控制器210可包括机器学习核。机器学习核可用于执行神经网络(例如,被设计为对存储器装置220执行噪声消除的神经网络)的训练和推断。
内部存储器214可用作例如由控制器核211使用的系统存储器、存储存储器装置220的数据的高速缓冲存储器或临时存储主机100与存储器装置220之间的数据的缓冲存储器。内部存储器214可存储指示分配到存储器系统200的逻辑地址与存储器装置220的物理地址之间的关系的映射表MT。内部存储器214可包括例如DRAM或SRAM。
主机接口块215可包括用于与主机100通信的组件(诸如,以物理块为例)。存储器接口块216可包括用于与存储器装置220通信的组件(诸如,以物理块为例)。
下面,将描述存储器系统200随时间的操作。当电力被供应给存储器系统200时,存储器系统200可用主机100执行初始化。
主机接口块215可将从主机100接收的第一请求REQ1提供给存储器控制核。第一请求REQ1可包括命令(例如,读取命令或写入命令)和逻辑地址。存储器控制核可将第一请求REQ1转换成适合于存储器装置220的第二请求REQ2。
例如,存储器控制核可转换命令的格式。存储器控制核可参照存储在内部存储器214中的映射表MT来获得地址信息AI。存储器控制核可通过使用地址信息AI,将逻辑地址转换成存储器装置220的物理地址。存储器控制核可将适合于存储器装置220的第二请求REQ2提供给存储器接口块216。
存储器接口块216可在队列处注册来自存储器控制核的第二请求REQ2。存储器接口块216可将首先注册在队列处的请求作为第三请求REQ3发送到存储器装置220。
当第一请求REQ1是写入请求时,主机接口块215可将从主机100接收的数据(DATA)写入到内部存储器214。当第三请求REQ3是写入请求时,存储器接口块216可将存储在内部存储器214中的数据发送到存储器装置220。
当数据被完全写入时,存储器装置220可将第三响应RESP3发送到存储器接口块216。响应于第三响应RESP3,存储器接口块216可将指示数据被完全写入的第二响应RESP2提供给存储器控制核。
在数据被存储在内部存储器214中之后或者在第二响应RESP2被接收到之后,存储器控制核可通过主机接口块215将指示请求被完成的第一响应RESP1发送到主机100。
当第一请求REQ1是读取请求时,读取请求可通过第二请求REQ2和第三请求REQ3被发送到存储器装置220。存储器接口块216可将从存储器装置220接收的数据存储在内部存储器214中。当数据被完全发送时,存储器装置220可将第三响应RESP3发送到存储器接口块216。
当第三响应RESP3被接收到时,存储器接口块216可将指示数据被完全存储的第二响应RESP2提供给存储器控制核。当第二响应RESP2被接收到时,存储器控制核可通过主机接口块215将第一响应RESP1发送到主机100。
主机接口块215可将存储在内部存储器214中的数据发送到主机100。在一个实施例中,在与第一请求REQ1对应的数据被存储在内部存储器214中的情况下,第二请求REQ2和第三请求REQ3的发送可被省略。
存储器装置220还可将第一串行外围接口信息SPI1发送到存储器接口块216。存储器接口块216可将第二串行外围接口信息SPI2发送到控制器核211。
图3是根据发明构思的实施例的图1的非易失性存储器装置220的详细框图。参照图3,存储器装置220可包括例如存储器单元阵列221、控制逻辑222、电压生成单元223、行解码器224以及页缓冲器225。
存储器单元阵列221可连接到一条或多条串选择线SSL、多条字线WL、一条或多条地选择线GSL以及多条位线BL。存储器单元阵列221可包括设置在多条字线WL与多条位线BL之间的交叉点处的多个存储器单元。
控制逻辑222可从存储器控制器210接收命令CMD(例如,内部命令)和地址ADD,并且从存储器控制器210接收用于控制存储器装置220内的各种功能块的控制信号CTRL。控制逻辑222可基于命令CMD、地址ADD和控制信号CTRL,输出用于将数据(DATA)写入到存储器单元阵列221或者从存储器单元阵列221读取数据的各种控制信号。以这种方式,控制逻辑222可控制存储器装置220的整体操作。
由控制逻辑222输出的各种控制信号可被提供给电压生成单元223、行解码器224和页缓冲器225。例如,控制逻辑222可将电压控制信号CTRL_vol提供给电压生成单元223,将行地址X-ADD提供给行解码器224,并且将列地址Y-ADD提供给页缓冲器225。
电压生成单元223可基于电压控制信号CTRL_vol生成用于对存储器单元阵列221执行编程操作、读取操作和擦除操作的各种电压。例如,电压生成单元223可生成用于驱动多条字线WL的第一驱动电压VWL、用于驱动多条串选择线SSL的第二驱动电压VSSL以及用于驱动多条地选择线GSL的第三驱动电压VGSL。在这种情况下,第一驱动电压VWL可以是编程电压(例如,写入电压)、读取电压、擦除电压、通过电压或编程验证电压。另外,第二驱动电压VSSL可以是串选择电压(例如,导通电压或截止电压)。此外,第三驱动电压VGSL可以是地选择电压(例如,导通电压或截止电压)。
行解码器224可通过多条字线WL连接到存储器单元阵列221,并且可响应于从控制逻辑222接收的行地址X-ADD而激活多条字线WL的一部分。例如,在读取操作中,行解码器224可将读取电压施加到选择的字线,并且将通过电压施加到未选择的字线。
在编程操作中,行解码器224可将编程电压施加到选择的字线,并且将通过电压施加到未选择的字线。在一个实施例中,在多个编程循环中的至少一个中,行解码器224可将编程电压施加到选择的字线和附加选择的字线。
页缓冲器225可通过多条位线BL连接到存储器单元阵列221。例如,在读取操作中,页缓冲器225可作为输出存储在存储器单元阵列221中的数据的感测放大器进行操作。可选地,在编程操作中,页缓冲器225可作为将期望的数据写入到存储器单元阵列221的写入驱动器进行操作。
图4和图5示出使用三维闪存来实施存储器系统200的示例。三维闪存可包括三维(例如,垂直)NAND(例如,VNAND)存储器单元。下面描述包括三维存储器单元的存储器单元阵列221的实施方式。下面描述的存储器单元中的每个可以是NAND存储器单元。
图4是根据发明构思的实施例的图2的存储器单元阵列221的框图。
参照图4,根据实施例的存储器单元阵列221包括多个存储器块BLK1至BLKz。存储器块BLK1至BLKz中的每个具有三维结构(例如,垂直结构)。例如,存储器块BLK1至BLKz中的每个可包括在第一方向、第二方向和第三方向上延伸的结构。例如,存储器块BLK1至BLKz中的每个可包括在第二方向上延伸的多个NAND串。例如,可在第一方向、第二方向和第三方向上设置多个NAND串。
每个NAND串连接到位线BL、串选择线SSL、地选择线GSL、字线WL以及共源极线CSL。也就是说,存储器块BLK1至BLKz中的每个可连接到多条位线BL、多条串选择线SSL、多条地选择线GSL、多条字线WL以及共源极线CSL。下面将参照图5更详细地描述存储器块BLK1至BLKz。
图5是根据发明构思的实施例的存储器块BLKi的电路图。图5示出图4的存储器单元阵列221中的存储器块BLK1至BLKz中的一个的示例。尽管图5示出具有6条字线以及存储器单元的示例,但这仅是说明,并且任何数量的字线和存储器单元可被使用。
存储器块BLKi可包括多个单元串CS11至CS41和CS12至CS42。多个单元串CS11至CS41和CS12至CS42可在列方向和行方向上布置,以形成列和行。单元串CS11至CS41和CS12至CS42中的每个可包括地选择晶体管GST、存储器单元MC1至MC6和串选择晶体管SST。包括在单元串CS11至CS41和CS12至CS42中的每个中的地选择晶体管GST、存储器单元MC1至MC6和串选择晶体管SST可在基本上垂直于基底的高度方向上被堆叠。
多个单元串CS11至CS41和CS12至CS42的列可分别连接到不同的串选择线SSL1至SSL4。例如,单元串CS11和CS12的串选择晶体管SST可共同连接到串选择线SSL1。单元串CS21和CS22的串选择晶体管SST可共同连接到串选择线SSL2。单元串CS31和CS32的串选择晶体管SST可共同连接到串选择线SSL3。单元串CS41和CS42的串选择晶体管SST可共同连接到串选择线SSL4。
多个单元串CS11至CS41和CS12至CS42的行可分别连接到不同的位线BL1和BL2。例如,单元串CS11至CS41的串选择晶体管SST可共同连接到位线BL1。单元串CS12至CS42的串选择晶体管SST可共同连接到位线BL2。
多个单元串CS11至CS41和CS12至CS42的列可分别连接到不同的地选择线GSL1至GSL4。例如,单元串CS11和CS12的地选择晶体管GST可共同连接到地选择线GSL1。单元串CS21和CS22的地选择晶体管GST可共同连接到地选择线GSL2。单元串CS31和CS32的地选择晶体管GST可共同连接到地选择线GSL3。单元串CS41和CS42的地选择晶体管GST可共同连接到地选择线GSL4。
设置在距基底相同高度处的存储器单元可共同连接到单条字线,并且设置在距基底不同高度处的存储器单元可分别连接到不同的字线WL1至WL6。例如,存储器单元MC1可共同连接到字线WL1。存储器单元MC2可共同连接到字线WL2。存储器单元MC3可共同连接到字线WL3。存储器单元MC4可共同连接到字线WL4。存储器单元MC5可共同连接到字线WL5。存储器单元MC6可共同连接到字线WL6。单元串CS11至CS41和CS12至CS42的地选择晶体管GST可共同连接到共源极线CSL。
纠错编码
图6至图8示出可根据在此描述的技术的方面实施的示例纠错编码(例如,ECC方案)。如描述的,存储器系统可包括存储器控制器,其中,存储器控制器可包括对来自NAND通道的数据进行解码以可靠地取得由存储器系统存储的数据的信号处理和ECC引擎。
图6示出根据本公开的方面的编码方案600的示例。编码方案600可由编码器(例如,字编码器)605实施,以对用于编程到存储器装置的数据进行编码。可对数据流执行ECC和解码操作以纠正通信错误(诸如,干扰或噪声)。例如,可使用S极化(S-Polar)编码方案来对用于编程到存储器装置的数据进行编码。S极化编码方案可包含里德所罗门(ReedSolomon,RS)编码编码方案的方面和极化编码方案的方面。
在一些实施例中,编码方案600可实施(例如,将编码器605建模为)广义级联码(Generalized Concatenated code,GCC)。GCC基于一组外码和一组嵌套的内码。在这种情况下,编码方案600可包括用外码对数据进行编码以获得码字,其中,线性二进制码可随后基于使用一组嵌套的内码对获得的码字进行编码而被生成。对于具有极化码的GCC,反馈数据包括冻结位或RS多项式评估。
在一些实施例中,编码方案600可实施(例如,将编码器605建模为)广义张量积(Generalized Tensor Product,GTP)码或广义格码(generalized trellis code,GTC)。GTP码可表示通过将扩展字段上的码与较短的二进制码组合来构造的一类二进制ECC。对于GTC的实施方式,编码方案600的状态图类似于网格。Bose-Chaudhuri-Hocquenghem(BCH)的实施方式提供了对可由代码纠正的符号错误的数量的更准确的控制。例如,二进制BCH码可被设计为纠正多个位错误。对于具有BCH码的GTC,反馈数据包括δ校验子(delta-syndrome)位或RS多项式评估。
在一些示例中,编码器605可包括或表示第一编码器、第二编码器和第三编码器。在一些实施例中,如在此所述,第一编码器被配置为将第一数据和第二数据单独进行编码,第二编码器被配置为将第一数据和第二数据一起进行编码,第三编码器被配置为将第一数据和第二数据与第三数据和第四数据一起进行编码,其中第三数据和第四数据由第一编码器单独进行编码,并且其中第三数据和第四数据由第二编码器一起进行编码。
图7示出根据本公开的方面的ECC编码方案的示例。S极化编码方案可用于对用于编程到存储器装置的数据进行编码。S极化编码方案可包含RS编码方案的方面和极化编码方案的方面。具体地,数据块700被示出,数据块700包括信息位705、冻结位710(例如,基于极化编码方案)、极化码字(例如,极化码)715和RS码字(例如,RS码)720。
如在此所述,可对数据流执行ECC和解码操作以纠正通信错误(诸如,干扰或噪声)。极化码是基于将物理通道转换为多个虚拟外通道的短内核码的多递归级联的线性块纠错码。虚拟通道倾向于具有高可靠性或低可靠性(即,它们极化)。数据位被分配给最可靠的通道,不可靠的通道被“冻结”或设置为0。
RS码也对数据块进行操作,数据块被视为称为符号的有限域元素(finite fieldelement)的集合。RS编码方案涉及将校验符号添加到数据。使用校验符号,RS码可检测错误的符号。
S极化码基于极化码和RS码级联。S极化码的特征包括高性能以及开销和码大小调整上的易可扩缩性。S极化码可使用多级编码处理。多个RS码可逐符号地被并行编码。
极化编码是基于块码方法的通道编码的一种形式。在极化编码中,将被编码的每个数据块具有设定数量的位。在发送器和接收器处执行对块的操纵。例如,对每个数据块执行通道组合和通道分离。首先,通道组合将符号的组合分配和/或映射到通道。然后,通道分离执行转换操作,将符号组合转换成解码器中使用的时域向量。解码操作与编码操作一起估计时域位流。这在接收器处将位的块和通道转换成极化的位流。极化码已被证明实现了用于加性白高斯噪声(AWGN)通道的能力,并且使用具有循环冗余校验(CRC)的连续消除列表(SCL)解码器实现了与用于有限长度码的低密度奇偶校验码(LDPC)相当的性能。因为每个位被连续解码,所以SCL解码器具有高延迟。可在极化码中使用神经网络(NN)解码器。在一些示例中,神经网络解码器代替SCL解码器(例如,用于相对短的码)。因为所有位可被并行解码,所以神经网络解码器的解码可以以非常低的延迟来执行。
图8示出根据本公开的方面的用于分级错误码纠正的处理的示例。在一些示例中,这些操作由包括执行一组码以控制设备的功能元件的处理器的系统来执行。附加地或可选地,使用专用硬件来执行特定处理。通常,这些操作根据依照本公开的方面描述的方法和处理来执行。在一些情况下,在此描述的操作由各种子步骤组成,或者结合其它操作来执行。
在操作800,系统接收用于存储在存储器装置中的数据。在一些情况下,这个步骤的操作涉及如参照图1、图2和图9描述的存储器控制器,或者这个步骤的操作可由如参照图1、图2和图9描述的存储器控制器执行。
在操作805,系统基于内编码方案和外编码方案来生成组合码字,其中,组合码字的第一部分和组合码字的第二部分使用内编码方案被单独(separately)编码并且使用外编码方案被联合(jointly)编码。在一些情况下,这个步骤的操作涉及如参照图1、图2和图9描述的存储器控制器,或者这个步骤的操作可由如参照图1、图2和图9描述的存储器控制器执行。
在操作810,系统将组合码字的第一部分存储在存储器装置的第一位置处,并且将组合码字的第二部分存储在存储器装置的第二位置处。在一些情况下,这个步骤的操作涉及如参照图9描述的存储器系统,或者这个步骤的操作可由如参照图9描述的存储器系统执行。
分级解码方案
图9至图12示出可根据本公开的方面来实施的示例分级解码方案。如所描述的,存储器系统可包括存储器控制器,其中,存储器控制器可包括对来自NAND通道的数据进行解码以可靠地取得由存储器系统存储的数据的信号处理和ECC引擎。根据在此描述的技术,可根据分级解码架构来实施这样的存储器控制器。例如,可随着具有局部性的码的层级(例如,其中后续层级的较大码长度可由来自较低层级的局部码组成)的使用而实施多个解码器层级。例如,分级解码方案(例如,分级ECC解码方案)可包括(例如,如下面参照图9至图12描述的)诸如第一层级、第二层级和第三层级的多个层级。
图9示出根据本公开的方面的存储器系统(例如,SSD)900的示例。存储器系统900是参照图9描述的对应元件的示例,或者存储器系统900包括参照图9描述的对应元件的方面。在一个实施例中,存储器系统900包括存储器控制器905、第一解码器910(例如,ECC0)、第二解码器915(例如,ECC1)、第三解码器920(例如,ECC2)和NAND单元(或简称为NAND)925。在一些情况下,第一解码器910、第二解码器915和第三解码器920可分别被称为第一ECC引擎、第二ECC引擎和第三ECC引擎。
存储器控制器905可包括分级解码架构。例如,存储器控制器905可包括第一解码器910(例如,当在一些情况下时可在此被称为低复杂度ECC引擎)的第一层级。每个第一解码器910可连接到NAND通道,以计算低码长度的局部码(例如,对应的第一层级或最低层级的码)。存储器控制器905还可包括附加层级。在图9的示例中,存储器控制器905还包括第二解码器915的第二层级和第三解码器920的第三层级。第二解码器915可共享若干NAND通道,以使用相对较大的码长度来纠正纰误数据(例如,其中每个层级的码长度可由来自先前层级的组合的局部码组成)。例如,第二解码器915可共享第一NAND通道NAND Ch.0和第二NAND通道NAND Ch.1,而另一第二解码器915可共享第三NAND通道NAND Ch.2和第四NAND通道NAND Ch.3。此外,第三解码器920可共享若干NAND通道,以使用相对更大的码长度来纠正纰误数据。例如,第三解码器920可共享第一NAND通道NAND Ch.0、第二NAND通道NAND Ch.1、第三NAND通道NAND Ch.2和第四NAND通道NAND Ch.3。
控制器分级解码器(例如,存储器控制器905的架构)包括不同层级的解码器实施方式。每个层级比先前层级包括更强的解码能力。更强的解码能力的一个方面是用具有局部性的码的结构实现的较长的码长度。更强的解码能力的另一方面是使用更复杂的解码算法。高的层级具有更复杂的解码算法和硬件,但是不太频繁地被使用,因此可较慢并且具有较少的实例,其中,每个实例服务于更多的NAND通道。
在具有局部性的码结构的示例场景中(例如,并且如参照图9进一步描述的),图9示出其中4个NAND通道被使用的控制器。在一些实施例中,可在GCC中使用S极化码,其中极化码作为内码并且RS作为外码。在图9的示例中,可存在三个局部性的层级(例如,4KB、16KB和64KB)。在此例如参照图10至图12进一步描述第一层级、第二层级和第三层级中的每个。如在此所述,可纠正性随着层级而改善。解码延迟随着层级而增加,但是因为每个层级(例如,较高的层级)具有较低的被使用概率,所以总IOPS不受影响。硅面积可随着层级而增加,但是实例的数量可随着层级而减少,因此总硅面积可不一定增加。
图9、图10和图13至图15作为示例被示出,并且不意图在本公开的方位的方面成为限制。在不脱离本公开的范围的情况下,可通过类比(类推)来修改在此描述的示例分级解码器架构的方面。可根据控制器设置来选择确切的架构。层级的数量、解码器操作模式和复杂度可取决于控制器目标,并且可针对移动控制器、客户端SSD控制器、数据中心控制器等而是不同的。可针对低成本或高成本控制器选择架构参数权衡(architecture parameterstrade-off)。另外,可针对当前的控制器和未来的控制器选择架构参数。
在一个示例场景中,本公开的实施例可对完整的SSD/UFS进行写入,然后从目标SSD/UFS读取QD1中的扇区数据。数据可被检查,使得控制器使用通道总线对NAND进行输出。在一些实施例中,可增加从NAND读取的错误的数量(P/E循环、保留时间、从外部注入)。在一些实施例中,如果在访问控制器时读取来自相同的字线的数据的较大部分,则可使用基于局部性的解码。在一些实施例中,可测量控制器的功耗(例如,功率),并且如果功率恒定或者功率按近似整数(例如,x1、x2、x3)帧增加或减少,则解码可在GCC内部(由于相同的内码解码器的复制)。
存储器系统900的示例包括随机存取存储器(RAM)、只读存储器(ROM)或硬盘。存储器系统900的示例包括固态存储器和硬盘驱动器。在一些示例中,存储器用于存储包括指令的计算机可读、计算机可执行软件,指令在被执行时使得处理器执行在此描述的各种功能。在一些情况下,存储器除其它方面外还包含控制基本硬件或软件操作(诸如,与外围组件或装置的交互)的基本输入/输出系统(BIOS)。在一些情况下,存储器控制器905操作存储器单元。例如,存储器控制器905可包括行解码器、列解码器或两者。在一些情况下,存储器内的存储器单元以逻辑状态的形式存储信息。
在一些实施例中,存储器系统900的示例包括闪存。闪存是可被电擦除和重新编程的电子(固态)非易失性计算机存储介质。闪存的两种主要类型以NAND逻辑门和NOR逻辑门命名。独立的闪存存储器单元展现出与对应的门的内部特性类似的内部特性。在EPROM(可擦除可编程只读存储器)被重新写入之前必须被完全擦除的情况下,NAND型闪存可以以块(或页)被写入和读取,块(或页)通常比整个装置小得多。NOR型闪存允许单个机器字(字节)被写入(到擦除的位置)或独立地读取。NAND类型主要在用于数据的一般存储和传送的存储卡、USB闪存驱动器、固态驱动器(在2009年或更晚生产的固态驱动器)和类似产品中进行操作。NAND闪存或NOR闪存也经常在许多数字产品中用于存储配置数据(先前由EEPROM或电池供电的静态RAM所实现的任务)。闪存的一个关键缺点是它只能在特定块中承受相对少的数量的写入循环。两种类型的闪存的示例应用包括个人计算机、PDA(个人数字助理)、数字音频播放器、数码相机、移动电话、合成器、视频游戏机、科学仪器、工业机器人和医疗电子产品。
除了为非易失性的之外,闪存提供快速的读取访问时间,尽管不如静态RAM或ROM快。闪存的抗机械冲击性有助于解释它在便携式装置中优于硬盘的普及性,它的高耐久性、承受高压、温度和浸入水中的能力等也是如此。尽管闪存在技术上是EEPROM的一种类型,但是术语“EEPROM”通常用于具体表示可以以小块(通常是字节)擦除的非闪存EEPROM。因为擦除循环慢,所以当写入大量数据时,闪存擦除中使用的大的块大小给予其超过非闪存EEPROM的显著速度优势。闪存的成本比字节可编程(byte-programmable)EEPROM低得多,并且在系统需要大量非易失性固态存储设备的任何情况下,闪存已成为主要存储器类型。闪存将信息存储在由浮栅晶体管制成的存储器单元的阵列中。在单层单元(SLC)装置中,每个单元仅存储一位的信息。在包括三层单元(TLC)器件的多层单元(MLC)装置中,每个单元可存储多于一个位。浮栅可以是导电的或不导电的。
在NOR闪存中,每个单元具有直接接地的一端以及直接连接到位线的另一端。这种布置被称为“NOR闪存”,因为它像NOR门一样起作用:当字线之一被拉高时,对应的存储晶体管起到将输出位线拉低的作用。NAND闪存也使用浮栅晶体管,但是它们以类似于NAND门的方式连接:若干晶体管串联连接,并且仅在所有字线被拉高的情况下,位线才被拉低。然后,以与在NOR闪存中链接单个晶体管相同的方式,经由一些附加晶体管将这些组连接到NOR型位线阵列。与NOR闪存相比,用串联链接的组代替单个晶体管增加了额外的寻址层级。
根据一些实施例,存储器系统900确定第一码字不能进行第一解码处理。在一些示例中,存储器系统900基于确定第一码字不能进行第一解码处理,将第一码字和第二码字组合以形成第一组合码字。在一些示例中,存储器系统900确定第一组合码字不能进行第二解码处理。在一些示例中,存储器系统900将第三码字和第四码字组合以形成第二组合码字。在一些示例中,存储器系统900将第一组合码字和第二组合码字组合以形成第三组合码字。在一些示例中,从存储器装置的相同的字线读取第一码字和第二码字。在一些示例中,从存储器装置的相同的页读取第一码字和第二码字。在一些示例中,存储器系统900将第一码字和第二码字与第三码字和第四码字组合以形成第三组合码字。
根据一些实施例,存储器系统900将组合码字的第一部分存储在存储器装置的第一位置处,并且将组合码字的第二部分存储在存储器装置的第二位置处。在一些示例中,第一位置和第二位置在存储器装置的相同的逻辑页内对应于不同的位线。在一些示例中,存储器装置是NAND存储器装置。
根据一些实施例,存储器控制器905接收用于存储在存储器装置中的数据。在一些示例中,存储器控制器905基于内编码方案和外编码方案来生成组合码字,其中,组合码字的第一部分和组合码字的第二部分使用内编码方案被单独编码并且使用外编码方案被联合编码。在一些示例中,内编码方案包括极化编码方案。在一些示例中,外编码方案包括RS编码方案。在一些示例中,组合码字基于包括冻结位的反馈而被生成。在一些示例中,内编码方案包括BCH编码方案。在一些示例中,外编码方案包括RS编码方案。在一些示例中,组合码字基于包括δ校验子位的反馈而被生成。
根据一些实施例,第一解码器910从存储器装置的第一位置读取第一码字。在一些示例中,第一解码器910使用第一解码器910对第一码字执行第一解码处理。在一些示例中,第一解码算法基于包括内极化码和外RS码的GCC。在一些示例中,第一解码算法基于包括内BCH码和外RS码的GTP码。
根据一些实施例,第一解码器910可被配置为对从存储器装置读取的第一码字执行第一解码处理。第一解码器910是参照图9和图13描述的对应元件的示例,或者第一解码器910包括参照图9和图13描述的对应元件的方面。
根据一些实施例,第二解码器915使用第二解码器915对第一组合码字执行第二解码处理。在一些示例中,第一解码处理基于第一算法而被执行,第二解码处理基于具有比第一算法的复杂度高的复杂度的第二算法而被执行。在一些示例中,第一码字包括用于第一解码处理的第一纠错位和用于第二解码处理的第二纠错位。在一些示例中,第二码字包括用于第二解码处理的第三纠错位。
根据一些实施例,第二解码器915可被配置为:当第一码字不能进行第一解码处理时,对包括从存储器装置读取的第一码字和第二码字的第一组合码字执行第二解码处理。第二解码器915是参照图10和图14描述的对应元件的示例,或者第二解码器915包括参照图10和图14描述的对应元件的方面。
根据一些实施例,第三解码器920对第三组合码字执行第三解码处理。根据一些实施例,第三解码器920可被配置为:当第一组合码字不能进行第二解码处理时,对包括第一组合码字和第二组合码字的第三组合码字执行第三解码处理,其中,第二组合码字包括从存储器装置读取的第三码字和第四码字。第三解码器920是参照图10和图15描述的对应元件的示例,或者第三解码器920包括参照图10和图15描述的对应元件的方面。
图10示出根据本公开的方面的解码器1000的示例。解码器1000是参照图2描述的对应元件的示例,或者解码器1000包括参照图2描述的对应元件的方面。在一个实施例中,解码器1000包括第一解码器1005、第二解码器1010和第三解码器1015。第一解码器1005是参照图9和图13描述的对应元件的示例,或者第一解码器1005包括参照图9和图13描述的对应元件的方面。第二解码器1010是参照图9和图14描述的对应元件的示例,或者第二解码器1010包括参照图9和图14描述的对应元件的方面。第三解码器1015是参照图9和图15描述的对应元件的示例,或者第三解码器1015包括参照图9和图15描述的对应元件的方面。
如在此所述,存储器控制器可包括分级解码架构。例如,存储器控制器可包括第一解码器1005(例如,当在一些情况下时可在此被称为低复杂度ECC引擎或ECC0)的第一层级。存储器控制器还可包括第二解码器1010(例如,ECC1)的第二层级和第三解码器1015(例如,ECC2)的第三层级。在此例如参照图13至图15进一步描述第一层级、第二层级和第三层级中的每个。
在具有局部性的码结构的示例场景中(例如,并且如参照图9进一步描述的),图10示出其中4个NAND通道被使用的控制器。在一些实施例中,可在GCC中使用S极化码,其中极化码作为内码并且RS作为外码。在图10的示例中,可存在三个局部性的层级(例如,4KB、16KB和64KB)。例如,如图10中所示,每个层级的码字可包括数据和开销(OH)。此外,每个较高级别的层级可包括前一层级的组合码字。例如,第二层级的组合码字(例如,其可经由第二解码器1010被解码)可包括第一层级的两个码字的组合。
图11示出根据本公开的方面的用于分级错误码纠正的处理的示例。在一些示例中,这些操作由包括执行一组码以控制设备的功能元件的处理器的系统来执行。附加地或可选地,使用专用硬件来执行特定处理。通常,这些操作根据依照本公开的方面描述的方法和处理来执行。在一些情况下,在此描述的操作由各种子步骤组成,或者结合其它操作来执行。
在操作1100,系统从存储器装置的第一位置读取第一码字。在一些情况下,这个步骤的操作涉及如参照图9、图10和图13描述的第一解码器,或者这个步骤的操作可由如参照图9、图10和图13描述的第一解码器执行。
在操作1105,系统使用第一解码器对第一码字执行第一解码处理。在一些情况下,这个步骤的操作涉及如参照图9、图10和图13描述的第一解码器,或者这个步骤的操作可由如参照图9、图10和图13描述的第一解码器执行。
在操作1110,系统确定第一码字不能进行第一解码处理。在一些情况下,这个步骤的操作涉及如参照图9描述的存储器系统、如参照图10描述的解码器或两者,或者这个步骤的操作可由如参照图9描述的存储器系统、如参照图10描述的解码器或两者执行。
在操作1115,系统基于确定第一码字不能进行第一解码处理,将第一码字和第二码字组合以形成第一组合码字。在一些情况下,这个步骤的操作涉及如参照图9描述的存储器系统、如参照图10描述的解码器或两者,或者这个步骤的操作可由如参照图9描述的存储器系统、如参照图10描述的解码器或两者执行。
在操作1120,系统使用第二解码器对第一组合码字执行第二解码处理。在一些情况下,这个步骤的操作涉及如参照图9、图10和图14描述的第二解码器,或者这个步骤的操作可由如参照图9、图10和图14描述的第二解码器执行。
图12示出了根据本公开的方面的用于分级错误码纠正的处理的示例。在一些示例中,这些操作由包括执行一组码以控制装置的功能元件的处理器的系统来执行。附加地或可选地,使用专用硬件来执行特定处理。通常,这些操作根据依照本公开的方面描述的方法和处理来执行。在一些情况下,在此描述的操作由各种子步骤组成,或者结合其它操作来执行。
在操作1200,系统从存储器装置的第一位置读取第一码字,并且使用第一解码器对第一码字执行第一解码处理。在一些情况下,这个步骤的操作涉及如参照图9、图10和图13描述的第一解码器,或者这个步骤的操作可由如参照图9、图10和图13描述的第一解码器执行。
在操作1205,系统确定第一码字不能进行第一解码处理。在一些情况下,这个步骤的操作涉及如参照图9描述的存储器系统、如参照图10描述的解码器或两者,或者这个步骤的操作可由如参照图9描述的存储器系统、如参照图10描述的解码器或两者执行。
在操作1210,系统基于确定第一码字不能进行第一解码处理,将第一码字和第二码字组合以形成第一组合码字。在一些情况下,这个步骤的操作涉及如参照图9描述的存储器系统、如参照图10描述的解码器或两者,或者这个步骤的操作可由如参照图9描述的存储器系统、如参照图10描述的解码器或两者执行。
在操作1215,系统使用第二解码器对第一组合码字执行第二解码处理。在一些情况下,这个步骤的操作涉及如参照图9、图10和图14描述的第二解码器,或者这个步骤的操作可由如参照图9、图10和图14描述的第二解码器执行。
在操作1220,系统确定第一组合码字不能进行第二解码处理。在一些情况下,这个步骤的操作涉及如参照图9描述的存储器系统、如参照图10描述的解码器或两者,或者这个步骤的操作可由如参照图9描述的存储器系统、如参照图10描述的解码器或两者执行。
在操作1225,系统将第三码字和第四码字组合以形成第二组合码字,并且将第一组合码字和第二组合码字组合以形成第三组合码字。在一些情况下,这个步骤的操作涉及如参照图9描述的存储器系统、如参照图10描述的解码器或两者,或者这个步骤的操作可由如参照图9描述的存储器系统、如参照图10描述的解码器或两者执行。
在操作1230,系统对第三组合码字执行第三解码处理。在一些情况下,这个步骤的操作涉及如参照图9、图10和图15描述的第三解码器,或者这个步骤的操作可由如参照图9、图10和图15描述的第三解码器执行。
分级数据结构
图13至图15示出可根据本公开的方面来实施的示例分级解码结构。如所描述的,可根据分级解码架构来实施存储器控制器。如下(例如,参照图13至图15)所述,分级码被规划为使得每个层级实现吞吐量和可纠正性能。例如,可针对应用从NAND的快速读取和快速解码技术而实施较低层级,同时可(例如,针对更复杂的解码操作、在更强大的解码方案被期望时、在较低层级解码方案不能进行时等)不太频繁地实施较高层级。这可使得能够使用长码和具有可接受的硬件复杂度的复杂硬件。
图13示出根据本公开的方面的第一解码层级的示例。示出的示例包括编码的数据1300、第一解码器(或ECC0)1305、数据位1310以及开销位1315。编码的数据1300是参照图14和图15描述的对应元素的示例,或者编码的数据1300包括参照图14和图15描述的对应元素的方面。第一解码器1305是参照图9和图10描述的对应元件的示例,或者第一解码器1305包括参照图9和图10描述的对应元件的方面。数据位1310是参照图14和图15描述的对应元素的示例,或者数据位1310包括参照图14和图15描述的对应元素的方面。开销位1315是参照图14和图15描述的对应元素的示例,或者开销位1315包括参照图14和图15描述的对应元素的方面。
可使用S极性编码器来在字线页位线(Word-Line page Bit-Line)上使用三层单元(TLC)平衡灰度映射(Balanced Gray-Mapping)对第一层级进行编码。例如,可在字线页位线的1/4上使用TLC平衡灰度映射(例如,编码的数据1300可表示在位线的1/4上和在单个逻辑页上编码的数据)。S极化码长度可占用特定量的存储器,并且S极化结构针对硬决策(Hard Decision,HD)数据(每单元一位)被优化,其中解码可导致例如1e-5的帧错误率(frame error rate,FER)。例如,码长度可以是4KB加上开销,其中开销是任何过多或间接的计算时间。第一层级使用快速置信传播(Believe-Propagation,BP)极性解码器和快速HDRS解码器对HD数据进行解码。因此,错误和擦除(erasure)可被纠正。
图14示出根据本公开的方面的第二解码层级的示例。示出的示例包括编码的数据1400、第二解码器(或ECC1)1405、数据位1410、开销位1415以及开销位1420。编码的数据1400是参照图13和图15描述的对应元素的示例,或者编码的数据1400包括参照图13和图15描述的对应元素的方面。第二解码器1405是参照图9和图10描述的对应元件的示例,或者第二解码器1405包括参照图9和图10描述的对应元件的方面。数据位1410是参照图13和图15描述的对应元素的示例,或者数据位1410包括参照图13和图15描述的对应元素的方面。开销位1415和1420是参照图13和图15描述的对应元素的示例,或者开销位1415和1420包括参照图13和图15描述的对应元素的方面。
第二层级是来自第一层级的4个S极化码的广义级联,并且包括来自相同的字线和页以及一些或所有位线的数据(例如,编码的数据1400可包括在所有位线上和在单个逻辑页上编码的数据)。解码器基于极化列表解码器和HD RS解码器,支持软Chase解码。在一个示例场景中,极化列表解码器可具有16的列表长度。码长度可以是16KB加上开销,并且附加开销针对3SD解码(每单元3位)被优化,导致1e-10的FER。可通过在GCC结构中添加附加开销来执行优化,使得层级可实现吞吐量和可纠正性能。
图15示出根据本公开的方面的第三解码层级的示例。示出的示例包括编码的数据1500、第三解码器(或ECC2)1505、数据位1510、开销位1515、开销位1520以及开销位1525。编码的数据1500是参照图13和图14描述的对应元素的示例,或者编码的数据1500包括参照图13和图14描述的对应元素的方面。第三解码器1505是参照图9和图10描述的对应元件的示例,或者第三解码器1505包括参照图9和图10描述的对应元件的方面。数据位1510是参照图13和图14描述的对应元素的示例,或者数据位1510包括参照图13和图14描述的对应元素的方面。开销位1515、1520和1525可以是参照图13和图14描述的对应元素的示例,或者开销位1515、1520和1525包括参照图13和图14图描述的对应元素的方面。
第三层级是来自第一层级的S极化码的广义级联,并且可包括来自字线的一些或所有数据。编码的数据1500可包括例如在所有位线上和在所有逻辑页上编码的数据。例如,可使用16个S极化码。作为参照,通道均衡化考虑来自相邻位线的干扰。解码器包括通道均衡化组件、具有列表长度的极化列表解码器和软判决(Soft-Decision,SD)RS解码器。极化列表解码器可具有64的列表长度,但是本公开不限于此。码长度可以是64KB加上开销,并且附加开销在通道均衡化之后针对4SD解码被优化。可通过在GCC结构中添加附加开销来执行优化,使得层级可实现吞吐量和可纠正性能。
因此,本公开包括下面的实施例。
描述了一种用于分级错误码纠正的方法。所述方法的实施例被配置为:从存储器装置的第一位置读取第一码字;使用第一解码器对第一码字执行第一解码处理;确定第一码字不能进行第一解码处理;基于确定第一码字不能进行第一解码处理,将第一码字和第二码字组合以形成第一组合码字;以及使用第二解码器对第一组合码字执行第二解码处理。
描述了一种用于分级错误码纠正的设备。所述设备包括:处理器;存储器,与处理器进行电子通信;以及指令,存储在存储器中。所述指令可操作以使处理器:从存储器装置的第一位置读取第一码字;使用第一解码器对第一码字执行第一解码处理;确定第一码字不能进行第一解码处理;基于确定第一码字不能进行第一解码处理,将第一码字和第二码字组合以形成第一组合码字;以及使用第二解码器对第一组合码字执行第二解码处理。
描述了一种存储用于分级错误码纠正的代码的非暂时性计算机可读介质。在一些示例中,所述代码包括可由处理器执行以进行以下操作的指令:从存储器装置的第一位置读取第一码字;使用第一解码器对第一码字执行第一解码处理;确定第一码字不能进行第一解码处理;基于确定第一码字不能进行第一解码处理,将第一码字和第二码字组合以形成第一组合码字;以及使用第二解码器对第一组合码字执行第二解码处理。
描述了一种用于分级错误码纠正的系统。所述系统的实施例被配置为:从存储器装置的第一位置读取第一码字;使用第一解码器对第一码字执行第一解码处理;确定第一码字不能进行第一解码处理;基于确定第一码字不能进行第一解码处理,将第一码字和第二码字组合以形成第一组合码字;以及使用第二解码器对第一组合码字执行第二解码处理。
上述方法、设备、非暂时性计算机可读介质和系统的一些示例还包括:确定第一组合码字不能进行第二解码处理。一些示例还包括:将第三码字和第四码字组合以形成第二组合码字。一些示例还包括:将第一组合码字和第二组合码字组合以形成第三组合码字。一些示例还包括:使用第三解码器对第三组合码字执行第三解码处理。
在一些示例中,存储器装置包括NAND存储器装置。在一些示例中,从存储器装置的相同的字线读取第一码字和第二码字。在一些示例中,从存储器装置的相同的页读取第一码字和第二码字。在一些示例中,第一解码处理基于第一算法而被执行,第二解码处理基于具有比第一算法的复杂度高的复杂度的第二算法而被执行。
在一些示例中,第一解码算法基于包括内极化码和外RS码的GCC。在一些示例中,第一解码算法基于包括内BCH码和外RS码的GTP码。在一些示例中,第一码字包括用于第一解码处理的第一纠错位和用于第二解码处理的第二纠错位。在一些示例中,第二码字包括用于第二解码处理的第三纠错位。
上述方法、设备、非暂时性计算机可读介质和系统的一些示例还包括:使用第一编码处理将第一数据和第二数据单独进行编码。一些示例还包括:使用第二编码处理将第一数据和第二数据一起进行编码,其中第一码字对应于第一数据并且第二码字对应于第二数据。
上述方法、设备、非暂时性计算机可读介质和系统的一些示例还包括:将第一码字和第二码字与第三码字和第四码字组合以形成第三组合码字。一些示例还包括:使用第三解码器对第三组合码字执行第三解码处理。
描述了一种用于分级错误码纠正的方法。所述方法的实施例被配置为:接收用于存储在存储器装置中的数据;基于内编码方案和外编码方案生成组合码字,其中,组合码字的第一部分和组合码字的第二部分使用内编码方案被单独编码并且使用外编码方案被联合编码;以及将组合码字的第一部分存储在存储器装置的第一位置处,并且将组合码字的第二部分存储在存储器装置的第二位置处。
描述了一种用于分级错误码纠正的设备。所述设备包括:处理器;存储器,与处理器进行电子通信;以及指令,存储在存储器中。所述指令可操作以使处理器:接收用于存储在存储器装置中的数据;基于内编码方案和外编码方案生成组合码字,其中,组合码字的第一部分和组合码字的第二部分使用内编码方案被单独编码并且使用外编码方案被联合编码;以及将组合码字的第一部分存储在存储器装置的第一位置处,并且将组合码字的第二部分存储在存储器装置的第二位置处。
描述了一种存储用于分级错误码纠正的代码的非暂时性计算机可读介质。在一些示例中,所述代码包括可由处理器执行以进行以下操作的指令:接收用于存储在存储器装置中的数据;基于内编码方案和外编码方案生成组合码字,其中,组合码字的第一部分和组合码字的第二部分使用内编码方案被单独编码并且使用外编码方案被联合编码;以及将组合码字的第一部分存储在存储器装置的第一位置处,并且将组合码字的第二部分存储在存储器装置的第二位置处。
描述了一种用于分级错误码纠正的系统。所述系统的实施例被配置为:接收用于存储在存储器装置中的数据;基于内编码方案和外编码方案生成组合码字,其中,组合码字的第一部分和组合码字的第二部分使用内编码方案被单独编码并且使用外编码方案被联合编码;以及将组合码字的第一部分存储在存储器装置的第一位置处,并且将组合码字的第二部分存储在存储器装置的第二位置处。
在一些示例中,第一位置和第二位置在存储器装置的相同的逻辑页内对应于不同的位线。在一些示例中,内编码方案包括极化编码方案。在一些示例中,外编码方案包括RS编码方案。在一些示例中,组合码字基于包括冻结位的反馈而被生成。在一些示例中,内编码方案包括BCH编码方案。在一些示例中,外编码方案包括RS编码方案。在一些示例中,组合码字基于包括δ校验子位的反馈而被生成。
描述了一种用于分级错误码纠正的设备。所述设备的实施例包括:存储器装置;第一解码器,被配置为对从存储器装置读取的第一码字执行第一解码处理;以及第二解码器,被配置为当第一码字不能进行第一解码处理时对包括从存储器装置读取的第一码字和第二码字的第一组合码字执行第二解码处理。
一种用于分级纠错码的系统,包括:存储器装置;第一解码器,被配置为对从存储器装置读取的第一码字执行第一解码处理;以及第二解码器,被配置为当第一码字不能进行第一解码处理时对包括从存储器装置读取的第一码字和第二码字的第一组合码字执行第二解码处理。
描述了一种制造用于分级错误码纠正的设备的方法。所述方法包括制造存储器装置、第一解码器以及第二解码器,第一解码器被配置为对从存储器装置读取的第一码字执行第一解码处理,第二解码器被配置为当第一码字不能进行第一解码处理时对包括从存储器装置读取的第一码字和第二码字的第一组合码字执行第二解码处理。
描述了一种使用用于分级错误码纠正的设备的方法。所述方法包括使用存储器装置、第一解码器以及第二解码器,第一解码器被配置为对从存储器装置读取的第一码字执行第一解码处理,第二解码器被配置为当第一码字不能进行第一解码处理时对包括从存储器装置读取的第一码字和第二码字的第一组合码字执行第二解码处理。
上述设备、系统和方法的一些示例还包括第三解码器,第三解码器被配置为:当第一组合码字不能进行第二解码处理时,对包括第一组合码字和第二组合码字的第三组合码字执行第三解码处理,其中,第二组合码字包括从存储器装置读取的第三码字和第四码字。
上述的设备、系统和方法的一些示例还包括:第一编码器,被配置为将第一数据和第二数据单独进行编码。一些示例还包括:第二编码器,被配置为将第一数据和第二数据一起进行编码。
上述的设备、系统和方法的一些示例还包括:第三编码器,被配置为将第一数据和第二数据与第三数据和第四数据一起进行编码,其中第三数据和第四数据由第一编码器单独进行编码,并且其中第三数据和第四数据由第二编码器一起进行编码。
在此描述的描述和附图表示示例配置,而不表示在权利要求的范围内的所有实施方式。例如,可重新排列、组合或另外修改操作和步骤。此外,可以以框图的形式来表示结构和装置,以表示组件之间的关系并且避免模糊描述的构思。类似的组件或特征可具有相同的名称,但是可具有与不同的附图对应的不同的参考标号。
对公开的一些修改对于本领域技术人员来说是容易清楚的,并且在不脱离公开的范围的情况下,在此定义的原理可应用于其它变型。因此,公开不限于在此描述的示例和设计,而是将符合与在此公开的原理和新颖特征一致的最宽范围。
描述的方法可由包括通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分离门或晶体管逻辑、分立硬件组件或者它们的任何组合的装置实施或执行。通用处理器可以是微处理器、传统的处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合(例如,DSP和微处理器的组合、多个微处理器、与DSP内核结合的一个或多个微处理器,或者任何其它这样的配置)。因此,在此描述的功能可以硬件或软件来实施,并且可由处理器、固件或它们的任何组合来执行。如果在由处理器执行的软件中实施,则功能可以以指令或代码的形式被存储在计算机可读介质上。
计算机可读介质包括非暂时性计算机存储介质和通信介质两者,通信介质包括促成代码或数据的传送的任何介质。非暂时性存储介质可以是可由计算机访问的任何可用介质。例如,非暂时性计算机可读介质可包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、光盘(compact disk,CD)或其它光学盘存储设备、磁盘存储设备或用于携载或存储数据或代码的任何其它非暂时性介质。
此外,连接组件可被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或无线技术(诸如,红外信号、无线电信号或微波信号)从网站、服务器或其它远程源发送代码或数据,则同轴电缆、光纤电缆、双绞线、DSL或无线技术被包括在介质的定义中。介质的组合也被包括在计算机可读介质的范围内。
在本公开和所附权利要求中,词语“或”指示包含性列表,使得例如X、Y或Z的列表表示X或Y或Z或XY或XZ或YZ或XYZ。此外,短语“基于”不用于表示条件的封闭集合。例如,被描述为“基于条件A”的步骤可基于条件A和条件B两者。换句话说,短语“基于”应被解释为表示“至少部分地基于”。此外,词语“一个”指示“至少一个”。
Claims (20)
1.一种用于闪存错误码纠正的方法,包括:
从存储器装置的第一位置读取第一码字;
使用第一解码器对第一码字执行第一解码处理;
确定第一码字不能进行第一解码处理;
基于确定第一码字不能进行第一解码处理,将第一码字和第二码字组合以形成第一组合码字;以及
使用第二解码器对第一组合码字执行第二解码处理。
2.根据权利要求1所述的方法,还包括:
确定第一组合码字不能进行第二解码处理;
将第三码字和第四码字组合以形成第二组合码字;
将第一组合码字和第二组合码字组合以形成第三组合码字;以及
使用第三解码器对第三组合码字执行第三解码处理。
3.根据权利要求1所述的方法,其中,
存储器装置包括NAND存储器装置。
4.根据权利要求1所述的方法,其中,
第一码字和第二码字从存储器装置的相同的字线被读取。
5.根据权利要求4所述的方法,其中,
第一码字和第二码字从存储器装置的相同的页被读取。
6.根据权利要求1所述的方法,其中,
第一解码处理基于第一算法被执行,第二解码处理基于第二算法被执行,第二解码处理具有比第一算法的复杂度高的复杂度。
7.根据权利要求1所述的方法,其中,
第一解码处理基于包括内极化码和外里德-所罗门码的广义级联码。
8.根据权利要求1所述的方法,其中,
第一解码处理基于包括内Bose–Chaudhuri–Hocquenghem码和外里德-所罗门码的广义张量积码。
9.根据权利要求1所述的方法,其中,
第一码字包括用于第一解码处理的第一纠错位和用于第二解码处理的第二纠错位。
10.根据权利要求9所述的方法,其中,
第二码字包括用于第二解码处理的第三纠错位。
11.根据权利要求1至权利要求10中的任意一项所述的方法,还包括:
使用第一编码处理将第一数据和第二数据单独进行编码;以及
使用第二编码处理将第一数据和第二数据一起进行编码,其中,第一码字对应于第一数据,并且第二码字对应于第二数据。
12.根据权利要求1所述的方法,还包括:
将第一码字和第二码字与第三码字和第四码字组合以形成第三组合码字;以及
使用第三解码器对第三组合码字执行第三解码处理。
13.一种用于闪存错误码纠正的方法,包括:
接收用于存储在存储器装置中的数据;
基于内编码方案和外编码方案生成组合码字,其中,组合码字的第一部分和组合码字的第二部分使用内编码方案被单独编码并且使用外编码方案被联合编码;以及
将组合码字的第一部分存储在存储器装置的第一位置处,并且将组合码字的第二部分存储在存储器装置的第二位置处。
14.根据权利要求13所述的方法,其中,
第一位置和第二位置在存储器装置的相同的逻辑页内对应于不同的位线。
15.根据权利要求13或权利要求14所述的方法,其中,
内编码方案包括极化编码方案;
外编码方案包括里德-所罗门编码方案;并且
组合码字基于包括冻结位的反馈被生成。
16.根据权利要求13或权利要求14所述的方法,其中,
内编码方案包括Bose–Chaudhuri–Hocquenghem编码方案;
外编码方案包括里德-所罗门编码方案;并且
组合码字基于包括δ校验子位的反馈被生成。
17.一种用于闪存错误码纠正的设备,包括:
存储器装置;
第一解码器,被配置为:对从存储器装置读取的第一码字执行第一解码处理;以及
第二解码器,被配置为:当第一码字不能进行第一解码处理时,对第一组合码字执行第二解码处理,第一组合码字包括从存储器装置读取的第一码字和第二码字。
18.根据权利要求17所述的设备,还包括:
第三解码器,被配置为:当第一组合码字不能进行第二解码处理时,对包括第一组合码字和第二组合码字的第三组合码字执行第三解码处理,其中,第二组合码字包括从存储器装置读取的第三码字和第四码字。
19.根据权利要求17或权利要求18所述的设备,还包括:
第一编码器,被配置为将第一数据和第二数据单独进行编码;以及
第二编码器,被配置为将第一数据和第二数据一起进行编码。
20.根据权利要求19所述的设备,还包括:
第三编码器,被配置为:将第一数据和第二数据与第三数据和第四数据一起进行编码,其中,第三数据和第四数据由第一编码器单独进行编码,并且其中,第三数据和第四数据由第二编码器一起进行编码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/198,528 | 2021-03-11 | ||
US17/198,528 US11387848B1 (en) | 2021-03-11 | 2021-03-11 | Hierarchical error correction code |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115083505A true CN115083505A (zh) | 2022-09-20 |
Family
ID=82323897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111576357.0A Pending CN115083505A (zh) | 2021-03-11 | 2021-12-22 | 用于闪存错误码纠正的方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11387848B1 (zh) |
KR (1) | KR20220127773A (zh) |
CN (1) | CN115083505A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116682482A (zh) * | 2023-05-24 | 2023-09-01 | 珠海妙存科技有限公司 | Nand闪存质量分级方法、nand闪存质量分级装置和存储介质 |
WO2024220238A1 (en) * | 2023-04-18 | 2024-10-24 | Micron Technology, Inc. | Error code correction coherency checks for ternary cell-based memory devices |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11848687B1 (en) * | 2022-06-16 | 2023-12-19 | Samsung Electronics Co., Ltd. | Acceleration of S-polar ECC throughput by scheduler |
LU502737B1 (en) * | 2022-08-31 | 2024-02-29 | Univ Siegen | Methods and systems for data transfer via a communication channel |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101398212B1 (ko) * | 2008-03-18 | 2014-05-26 | 삼성전자주식회사 | 메모리 장치 및 인코딩/디코딩 방법 |
KR101398200B1 (ko) * | 2008-03-18 | 2014-05-26 | 삼성전자주식회사 | 메모리 장치 및 인코딩/디코딩 방법 |
US8458574B2 (en) * | 2009-04-06 | 2013-06-04 | Densbits Technologies Ltd. | Compact chien-search based decoding apparatus and method |
KR20120137354A (ko) * | 2010-01-28 | 2012-12-20 | 샌디스크 아이엘 엘티디 | 슬라이딩-윈도우 에러 정정 |
US8631309B2 (en) * | 2011-05-04 | 2014-01-14 | Pmc-Sierra, Inc. | Forward error correction with extended effective block size |
US10797728B1 (en) * | 2012-07-25 | 2020-10-06 | Marvell Asia Pte, Ltd. | Systems and methods for diversity bit-flipping decoding of low-density parity-check codes |
US9577673B2 (en) * | 2012-11-08 | 2017-02-21 | Micron Technology, Inc. | Error correction methods and apparatuses using first and second decoders |
US10389389B2 (en) * | 2016-03-04 | 2019-08-20 | Western Digital Technologies, Inc. | Method and data storage device using convolutional low-density parity-check coding with a long page write and a short page read granularity |
US10536172B2 (en) * | 2016-03-04 | 2020-01-14 | Western Digital Technologies, Inc. | ECC and raid-type decoding |
DE102017110389B4 (de) * | 2016-05-13 | 2020-02-13 | Hyperstone Gmbh | Verfahren und Decoder zur Softinput Decodierung von verallgemeinerten verketteten Codes |
US11031956B2 (en) * | 2019-06-25 | 2021-06-08 | Samsung Electronics Co., Ltd. | Generalized concatenated error correction coding scheme with locality |
-
2021
- 2021-03-11 US US17/198,528 patent/US11387848B1/en active Active
- 2021-12-22 CN CN202111576357.0A patent/CN115083505A/zh active Pending
-
2022
- 2022-03-11 KR KR1020220031013A patent/KR20220127773A/ko unknown
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024220238A1 (en) * | 2023-04-18 | 2024-10-24 | Micron Technology, Inc. | Error code correction coherency checks for ternary cell-based memory devices |
CN116682482A (zh) * | 2023-05-24 | 2023-09-01 | 珠海妙存科技有限公司 | Nand闪存质量分级方法、nand闪存质量分级装置和存储介质 |
CN116682482B (zh) * | 2023-05-24 | 2024-02-23 | 珠海妙存科技有限公司 | Nand闪存质量分级方法、nand闪存质量分级装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11387848B1 (en) | 2022-07-12 |
KR20220127773A (ko) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11387848B1 (en) | Hierarchical error correction code | |
US9136872B2 (en) | Memory, memory system, and error checking and correcting method for memory | |
CN110444246B (zh) | 用于存储器系统的相邻辅助校正错误恢复及其方法 | |
US9281068B2 (en) | Nonvolatile memory and related reprogramming method | |
CN109428606B (zh) | 具有ldpc解码器的存储器系统及其操作方法 | |
CN110275796B (zh) | 具有混合解码方案的存储器系统及其操作方法 | |
CN111538619B (zh) | 利用断电处置的多页奇偶校验保护 | |
CN110444242B (zh) | 有基于深度学习的干扰校正能力的存储器系统及操作方法 | |
US11581906B1 (en) | Hierarchical error correction code decoding using multistage concatenated codes | |
US10846172B2 (en) | Encoding method and system for memory device including QLC cells | |
CN112424865A (zh) | Nand温度感知操作 | |
CN113129978B (zh) | 使用奇偶校验增加存储器存取并行性 | |
CN111540393A (zh) | 用于基于字线分组的读取操作的存储器系统和方法 | |
CN113611350A (zh) | 移动数据存储 | |
CN113762457A (zh) | 解码的方法、训练神经网络的方法和存储器装置 | |
US10312944B2 (en) | Error correction code (ECC) operations in memory for providing redundant error correction | |
CN110277124B (zh) | 具有混合解码方案的存储器系统及其操作方法 | |
CN110569143B (zh) | 用于存储器系统的解码器及其方法 | |
CN112216328B (zh) | 具有低复杂度解码的存储器系统及其操作方法 | |
KR102349729B1 (ko) | 비휘발성 메모리 장치, 그것을 포함하는 저장 장치 및 그것의 동작 방법 | |
US12046299B2 (en) | De-noising using multiple threshold-expert machine learning models | |
US12105961B2 (en) | Copyback clear command for performing a scan and read in a memory device | |
CN112328508B (zh) | 多层存储器中的层交错 | |
CN116954984A (zh) | Crc终止时的准确ber报告 | |
KR20220138800A (ko) | 메모리 장치의 ecc 버퍼 감소 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |