CN105164646A - 具有早期解码终止检测的解码器 - Google Patents
具有早期解码终止检测的解码器 Download PDFInfo
- Publication number
- CN105164646A CN105164646A CN201480024512.XA CN201480024512A CN105164646A CN 105164646 A CN105164646 A CN 105164646A CN 201480024512 A CN201480024512 A CN 201480024512A CN 105164646 A CN105164646 A CN 105164646A
- Authority
- CN
- China
- Prior art keywords
- decoding
- layer
- data cell
- data
- parity check
- 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.)
- Granted
Links
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/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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/116—Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
-
- 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1128—Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
-
- 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
- H03M13/1137—Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
-
- 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
- H03M13/114—Shuffled, staggered, layered or turbo decoding schedules
-
- 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/65—Purpose and implementation aspects
- H03M13/6508—Flexibility, adaptability, parametrability and configurability of the implementation
- H03M13/6516—Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
-
- 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/65—Purpose and implementation aspects
- H03M13/6561—Parallelized implementations
-
- 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1191—Codes on graphs other than LDPC codes
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Error Detection And Correction (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
Abstract
本申请公开了具有早期解码终止检测的解码器的实施例。所述解码器能够提供灵活且可扩展的解码和早期终止检测,特别是在使用准循环低密度奇偶校验码(QC?LDPC)解码时。在一个实施例中,控制器使用包括多个层的编码矩阵来迭代地解码数据单元。响应于确定来自多于一个层解码操作的解码的数据单元满足奇偶校验方程并且来自多于一个层解码操作的解码的数据单元相同,控制器终止对数据单元的解码。有利地,终止对数据单元的解码能够减小解码该数据单元所执行的迭代的数量。
Description
技术领域
本公开涉及计算机系统的数据存储系统。更具体地,本公开涉及具有早期解码终止检测的解码器。
背景技术
非易失性存储器阵列经常具有有限的耐久性。存储器阵列的耐久性典型地取决于使用模式和磨损。另外,该耐久性取决于所使用的非易失性存储器阵列的类型。例如,具有多层单元(MLC)NAND介质的存储器阵列典型地比具有单层单元(SLC)NAND介质的存储器阵列具有更短的耐久性。为了保护存储在存储器阵列的用户数据不受可能由缩小的耐久性导致的讹误,能够与用户数据一起生成并存储奇偶校验数据,以便于错误检测和/或校正。奇偶校验数据的解码可能费时且是资源密集的。因此,期望提供用于解码奇偶校验数据的更高效的机制。
附图说明
现在将参考下面的附图描述实施本发明的各种特征的系统和方法,在附图中:
图1示出了根据本发明的一个实施例的实现具有早期解码终止检测的解码器的主机系统和数据存储系统的组合。
图2示出了根据本发明的一个实施例的用于解码数据的解码矩阵。
图3示出了根据本发明的一个实施例的解码器的框图。
图4示出了根据本发明的一个实施例的早期检测模块的框图。
图5是示出了根据本发明的一个实施例的早期终止检测的过程的状态图。
图6是示出了根据本发明的一个实施例的解码过程和早期终止检测过程的时序的时序图。
图7是示出了根据本发明的一个实施例的具有早期终止检测的解码过程的流程图。
图8-10是示出了根据本发明的各种实施例的早期检测模块的框图。
具体实施方式
尽管描述了特定实施例,但这些实施例仅以示例的方式呈现,并且不是想要限制保护的范围。实际上,本文所描述的新颖的方法和系统可以以各种其他形式实施。此外,可以以本文所描述的方法和系统的形式进行各种省略、替换、和改变,而没有脱离保护的范围。
概述
数据存储系统(诸如固态驱动器)典型地包括与一个或多个的非易失性存储器阵列耦接的一个或多个的控制器。取决于所使用的非易失性存储器阵列的类型,作为例如读/写干扰、数据保留的丢失和/或耐久性的丧失的结果,存储的数据可能遭受讹误。数据存储系统能够利用一个或多个的纠错或者错误编码机制来检测和/或校正存储数据中的错误。一种这样的机制能够在写用户数据时确定奇偶校验数据(诸如奇偶校验数据)。奇偶校验数据能够被存储在例如存储器阵列中。当存储的用户数据被取回时,奇偶校验数据能够用作解码过程的一部分,以确定所取回的用户数据的完整性。如果检测到一个或多个的错误,那么可以校正这样的错误。
数据的迭代解码能够涉及相当大的系统开销,诸如处理时间开销、系统资源开销和/或系统部件开销(例如,需要使用附加的硬件、固件等)。因此,早期终止迭代解码能够为数据存储系统提供显著的功率和/或处理时间节省。此外,存储奇偶校验数据(例如,在存储器阵列中)可能减小可用于存储用户数据的存储器空间。因此,也对于数据存储系统有利的是,支持不同的错误码率、码长和/或不同的编码吞吐速度。例如,当非易失性存储器处于生命周期的早期并因此具有相对较高的保持力和/或耐久性时,数据存储系统能够对具有相对较高的编码率的存储数据进行解码,以便于使用较少的奇偶校验数据。随着非易失性存储器随着时间磨损,数据存储系统能够切换至解码较低的编码率,以使得生成更多奇偶校验数据来保护用户数据免受错误。然而,支持多个码率、长度、和/或吞吐速度可能要求增加和/或复制系统部件(硬件、固件等),这可能增加功耗和处理时间。
本发明的实施例针对具有早期解码终止检测的解码器。在一个实施例中,解码器能够通过使用标称或者非冗余性的系统部件,执行早期解码终止检测,同时支持多个错误码率和/或错误码长。例如,能够配置解码器的早期检测模块,以使得现有检测部件能够被使用和/或再使用以支持各种码率和/或码长。早期检测模块能够通过例如利用并行计算技术,进一步支持多个错误编码吞吐速度。换言之,早期检测模块的架构能够是可扩展的和/或灵活的。因此,能够增加解码效率进而增加数据存储系统性能,而数据解码中的系统部件的数量和/或尺寸没有实质的增加。此外,通过减少用于解码数据的迭代数,能够减少功耗和数据处理时间。
系统概述
图1示出了根据本发明的一个实施例的实现具有早期解码终止检测的解码器的主机系统110和数据存储系统120的组合100。如所示出,数据存储系统120(例如,混合硬盘驱动器、固态驱动器等)包括控制器130和存储介质140。存储介质140可以包括非易失性存储器的阵列,诸如闪速集成电路、硫系RAM(C-RAM)、相变存储器(PC-RAM或者PRAM)、可编程金属化单元RAM(PMC-RAM或者PMCm)、双向通用存储器(OUM)、阻变RAM(RRAM)、NAND存储器(例如,单层单元(SLC)存储器、多层单元(MLC)存储器、或者其任何组合)、NOR存储器、EEPROM、铁电存储器(FeRAM)、磁阻RAM(MRAM)、其他离散的NVM(非易失性存储器)芯片、或者其任何组合。在一些实施例中,数据存储系统120还能够包括其他类型的存储,诸如一个或多个磁介质存储模块或者其他类型的存储模块。
控制器130能够被配置为从主机系统110的存储接口模块112(例如,设备驱动器)接收数据和/或存储访问命令。由存储接口模块112传送的存储访问命令能够包括由主机系统110发出的写数据和读数据命令。读写命令能够指明被用于访问数据存储系统120的逻辑地址(例如,逻辑块地址或者LBA)。控制器130能够在存储介质140中执行所接收的命令。
数据存储系统120能够存储由主机系统110传送的数据。换言之,数据存储系统120能够充当主机系统110的存储器存储设备。为了便于该功能,控制器130能够实现逻辑接口。逻辑接口能够将数据存储系统存储器作为用户数据能够存储于其中的逻辑地址(例如,连续的地址)的集合,呈现给主机系统110。内部地,控制器130能够将逻辑地址映射到存储介质140和/或其他存储模块中的各种物理位置或者地址。
控制器130包括分别被配置为对存储在存储介质140中并从存储介质140中取回的数据进行解码和编码的解码器模块132和编码器模块134。解码器模块132能够进一步确定从存储介质140取回的数据的完整性,并且如果需要,对取回的数据执行纠错。在一些实施例中,当存储介质140处于生命周期的早期,并且因此具有相对较高的保持力和/或耐久性时,控制器130能够指示编码器模块134使用相对较高的编码率对数据进行编码,以使得使用较少的奇偶校验数据。随着存储介质140随着时间磨损,控制器130能够指示编码器模块134切换至较低编码率,以使得生成更多奇偶校验数据来保护用户数据免受错误。控制器130能够将用于编码的数据的编码率存储在存储介质140或者另一个存储模块(未示出)中,以便于解码器模块132之后能够访问该信息来对编码的数据进行解码。
对低密度奇偶校验(LDPC)编码的概述
在一个实施例中,解码器模块132和编码器模块134能够分别利用低密度奇偶校验(LDPC)码来解码和/或生成奇偶校验数据。能够使用解码矩阵H来解码LDPC码,以及使用相应的生成矩阵G来生成LDPC码。
图2示出了根据本发明的一个实施例的用于解码数据的解码矩阵200。解码矩阵200代表示例解码矩阵H,其具有列重(columnweight)为四,这是因为H是准循环(QC)LDPC矩阵(即,四个层,其可以被称为层H1、H2、H3和H4),并且包括多个子矩阵,诸如子矩阵202、204、206和208,其可以被称为P子矩阵。如果使用其他类型的H矩阵,列重可以变化。多个子矩阵的每个可以具有P位xP位的尺寸。P可以是整数值,例如,128、256、350、512、1024等。多个子矩阵能够是旋转了数值的单位矩阵,其中一个子矩阵的每行移位或旋转了相同数量的列(例如,每个子矩阵能够是循环矩阵)。解码矩阵200还具有行重(rowweight)。在QC-LDPC矩阵的情况下,行重能够等于每个层的子矩阵的数量。取决于所使用的矩阵的类型,其他情况可以具有不同的行重。在一些实施例中,解码矩阵200可以不包括NULL子矩阵。尽管解码矩阵200被示出为具有等于四的列重,但在一些实施例中,解码矩阵200能够具有小于或大于四的列重,例如,列重等于三或者五。每个不同的解码矩阵尺寸能够对应于具有不同奇偶校验量的数据单元,并且使能够解码具有不同奇偶校验量的数据单元。
解码矩阵200能够被用于分层、迭代的准循环LDPC解码中,其中分层的方法或者层解码操作被用于对从存储介质取回的数据进行解码。能够将取回的数据按照具有长度等于多个码字长中的一个的部分输入到解码器,诸如解码器模块132。在解码矩阵中的多个子矩阵方面,解码矩阵的行重能够等于编码的数据的码字长。通过改变用于对数据进行解码的P子矩阵尺寸或者解码矩阵的列重,能够解码具有不同码率的数据。通过改变用于对数据进行解码的解码矩阵的行重,能够编码用于不同存储器页面格式的数据。在一些实施例中,用于对数据进行解码的码字长能够取决于E页尺寸(例如,非易失性存储器阵列的存储器的纠错码页尺寸、或者定义的群组)、或者数据存储系统(诸如数据存储系统120)的存储器的NAND闪速页尺寸。
解码矩阵200能够被用于求解最小和算法。作为最小和算法的部分,可以定义Rmj来指示从校验节点m发送至变量节点j的校验节点对数似然比(LLR)消息。可以定义L(qmj)来指示从变量节点j发送至校验节点m的变量节点LLR消息。可以定义L(qj)(j=1……N)来表示针对变量节点的后验概率比(APP消息)。该APP消息能够利用相对应的编码位j的先验(通道)可靠性值来初始化。针对解码矩阵200的当前水平层的每个变量节点j,对应于特定校验方程m的消息L(qmj)根据方程1来计算。
L(qmj)=L(qj)-Rmj(1)
对于每个校验节点m,消息Rmj能够对应于参与奇偶校验方程的所有变量节点j,消息Rmj能够根据方程2来计算。
Rmj≈Πj'∈N(m)\{j}sign(L(qmj'))×(minj'∈N(m)\{j}|L(qmj')|)(2)
当前水平层中的后验概率APP消息能够根据方程3来更新。
L(qj)=L(qmj)+Rmj(3)
能够基于L(qj)(j=1……N)的符号在来处理解码矩阵200的每个水平层之后做出决定。如果满足了所有的奇偶校验方程,那么解码算法可以停止。否则,能够针对下一水平层重复方程1、2和3的最小和算法。
在一些实施例中,用于使用解码矩阵200的一个水平层来确定数据是否被成功解码的奇偶校验方程能够是方程4。
C·Hn T=0(4)
方程4包括数据部分或者码字C与解码矩阵200的一个水平层Hn的转置的矩阵乘法。当矩阵修改的结果是零时能够满足方程4的奇偶校验,并因此,当结果是零时已经使用一个水平层Hn而成功地对数据部分C进行了解码。
能够进一步使用解码矩阵200来迭代地求解最小和算法。能够针对解码矩阵200的所有层执行一次解码算法(例如,能够执行对解码算法的一次迭代)。如果针对至少一个层不满足一个或多个的奇偶校验方程,那么能够再次执行解码算法(例如,能够执行对解码算法的另一次迭代)。另外地或可替代地,能够针对解码矩阵200的连续处理的层(例如,一次迭代的一些层和另一次迭代的一些层、或者一次迭代的所有层)执行解码算法。如果(1)针对至少一个连续处理的层不满足一个或多个的奇偶校验方程;或者(2)在对相对应的连续处理的层的处理期间码字C改变,那么能够再次执行解码算法。此外,能够另外地或可替代地执行解码算法,直到达到预定的迭代的最大数为止。例如,可以基于历史地用于成功解码数据的迭代数、期望的吞吐量、或者功率约束,来确定迭代的最大数。
具有早期解码终止检测的解码器
图3示出了根据本发明的一个实施例的解码器300的框图。解码器300能够是准循环解码器,诸如准循环低密度奇偶校验(LDPC)解码器。解码器300可以对应于图1的解码器模块132。解码器300包括能够管理解码器300的部件的操作、以及数据交换和迭代控制的解码器控制器360。在一些实施例中,解码器控制器360可以是与图1的控制器130分离的下级控制器。在其他实施例中,解码器控制器360能够是控制器130的一部分。
解码器300包括软值生成模块310和多个解码单元,多个解码单元包括解码单元A320a、解码单元B320b、解码单元C320c、以及解码单元D320d(统称为解码单元320)。软值生成模块310能够接收从存储介质取回的编码的数据,并生成软值(例如,对数似然值或者定标值)作为解码单元320的输入。在一些实施例中,软值生成模块310通过在不同条件(例如,调节的电压读阈值)下多次读取相同的存储页面来组成软值。能够以这样的方式组合多个读取结果:最终固定点代表1或者0的概率。此外,在一些实施例中,软值生成模块310能够另外地或可替代地向解码单元320提供二进制输入。软值生成模块310可以向解码单元320输入具有多个码字长中一个的数据单元以供处理。每个解码单元可以包括一个或多个存储器(未示出)以用于存储从软值生成模块310接收整个数据单元或其一部分。
解码单元320能够被配置为根据最小和算法(诸如基于方程1、2和3)迭代地对数据单元进行解码。解码单元320能够对使用多个码字长或者处理单元长度中的一个来编码的数据单元进行解码。解码单元320能够结合左/右旋转移位器330和移位控制模块340来操作,以使用多个解码矩阵中的一个(诸如解码矩阵200)来执行层解码操作。在使用每个层进行解码或者执行每个层解码操作之后,解码单元320能够根据最小和算法确定针对每个层的最小计算值,以确定针对每个层的全局最小值(例如,最小值中的最小值)。然后能够比较针对层的全局最小值,以确定针对所有层的最低或者全局最小值。解码单元320能够包括一个或多个工作存储器(未示出),以用于例如在解码过程期间存储最小计算值或者数据。
解码单元320能够被配置为使用相对应的解码矩阵的子集,并行地或者实质上并行地对数据单元的子集进行解码。在一些实施例中,解码单元320的每个能够具有与解码器300所支持的解码矩阵的最小P子矩阵尺寸的尺寸相对应的每个时钟周期的软值或者位的处理容量。例如,当所支持的最小P子矩阵尺寸的尺寸分别是256位x256位、512位x512位、或者1024位x1024位时,解码单元320的每个能够在每个时钟周期处理256个软值、512个软值、或者1024个软值的数据单元的子集。解码单元320可以共享被确定为层解码操作的一部分的值,诸如根据数据单元的一个层的解码子集本地确定的最小值,以便于并行解码并确定每个层的最小的计算值。在一些实施例中,当处理具有一个长度而非另一个长度的数据单元时,一个或多个的解码单元320共享值。
左/右旋转移位器330能够被配置为根据来自移位控制模块340的指令,移位或旋转(例如向左或者右)数据单元的部分的软值或位。移位控制模块340能够从存储器(未示出)确定或者查找相对应的解码矩阵以解码特定数据单元。基于相对应的解码矩阵,移位控制模块340能够指示左/右旋转移位器330来使用特定粒度对数据单元处理,并基于用于解码数据单元的解码矩阵的子矩阵的尺寸和内容(例如,P子矩阵尺寸和单位矩阵的旋转)来将数据单元的部分移位一定量。在一些实施例中,左/右旋转移位器330能够是可配置的贝奈斯网络(Benesnetwork)或者移位寄存器的群组,并且左/右旋转移位器330可以支持例如至少256个软值、512个软值和1024个软值的输入数据尺寸。在这样的实施例中,贝奈斯网络还能够包括一个或多个彼此连接的较小的贝奈斯网络,以便用作较大的贝奈斯网络。在左/右旋转移位器330的一些示例性操作中,左/右旋转移位器330能够对尺寸为256个软值、512个软值、或者1024个软值的数据单元部分进行移位。在下文所示的左/右旋转移位器330的简单示例性示例操作中,左/右旋转移位器330能够基于解码矩阵的子矩阵的内容,将由1位x6位的矩阵的每行向右移动一列。
左/右旋转移位器330能够对具有与解码矩阵子矩阵尺寸相对应的不同尺寸或者粒度的数据单元部分进行移位,尽管左/右旋转移位器330可以在每个时钟周期具有固定的容量。移位控制模块340可以指示左/右旋转移位器330将由左/右旋转移位器330所处理的数据的不同部分看作不同的旋转单元。因而,移位控制模块340能够指示对数据的不同部分进行独立地移位。在下文所示的左/右旋转移位器330的另一个简单示例性示例操作中,左/右旋转移位器330能够基于解码矩阵的2个子矩阵的内容,独立地将两个1位x3位的矩阵向右移动一列。
解码单元320能够将来自一个或多个层解码操作的结果(诸如解码的数据)输出到早期检测模块350。早期检测模块350能够至少部分地基于解码矩阵的结果和一个或多个层是否满足奇偶校验方程(诸如方程4的奇偶校验),确定是否终止对数据单元进行解码的进一步的迭代。早期检测模块350能够与解码单元320并行地或者实质上并行地操作,由解码单元320停止解码。可以评价奇偶校验方程,而解码的数据是旋转后的顺序而非数据在其被编码之前的原始顺序。另外,早期检测模块350能够被用于将解码的数据旋转回到数据在其被编码之前的原始顺序。在一些实施例中,早期检测模块350能够包括一个或多个早期检测子模块,其中每个子模块能够并行地或者实质上并行地处理结果和解码矩阵的一个层。
在一些实施例中,能够根据期望的吞吐量,选择多个解码单元和/或早期检测子模块。例如,解码器单元的数量能够是1、2、3、或者4(如图3所示)等。类似地,早期检测子模块的数量能够是1(如图3所示)、2、3、或者4等。在一个实施例中,解码器单元和/或早期检测子模块的数量上的上限能够被选择为解码单元320、左/右旋转移位器330、或者早期检测模块350中的一个或多个所支持的一个或多个解码矩阵中的子矩阵的数量。此外,在一些实施例中,左/右旋转移位器330能够将移位的数据单元部分输出到早期检测模块350,以便于由早期检测模块350较早终止检测。
图4示出了根据本发明的一个实施例的图3的早期检测模块350的框图。早期检测模块350能够包括奇偶校验模块410、旋转模块420、数据比较模块430和输出缓冲模块440。早期检测模块350能够基于使用解码矩阵的一个或多个层解码操作或者每个层解码操作的结果,执行早期终止检测。作为结果,早期检测模块350能够在一个或多个层解码操作之后停止对数据单元进行解码,并且一旦数据单元已被成功解码或被解码具有置信度阈值(例如,50%、75%、90%、99%、或者99.99%的置信度等),可以有利地使能早期终止对数据的解码。对解码的终止能够减小层解码操作的数量和被执行以用于对数据进行解码的迭代的数量。
奇偶校验模块410能够从图3的解码单元320接收解码的数据,并对该解码的数据执行异或操作。基于异或操作的结果,奇偶校验模块410能够例如设定旗标,该旗标被配置为提供对解码的数据和解码矩阵的层是否满足奇偶校验方程(诸如方程4)的指示。该旗标能够由早期检测模块350的一个或多个其他部件使用,以确定解码的数据是否可以被成功解码或被解码具有某种程度的置信度,以及是否终止对数据单元的解码。
在一个示例中,当处理包括尺寸为256位x256位的子矩阵的解码矩阵时,奇偶校验模块410可以具有1位x1024位的容量,并使用下面的伪代码来进行操作。在该示例中,奇偶校验模块410在每个时钟周期能够处理解码的数据的四个1位x256位的部分。
Flag=0;
For(i=0;i<256;i++)
{Flag=FlagOR(Bit[i]^Bit[i+256]^Bit[i+512]^Bit[i+768]);}
在另一个示例中,当处理包括尺寸为512位x512位的子矩阵的解码矩阵时,奇偶校验模块410可以具有1位x1024位的容量,并使用下面的伪代码来进行操作。在该示例中,奇偶校验模块410在每个时钟周期能够处理解码的数据的两个1位x512位的部分。
Flag=0;
For(i=0;i<512;i++)
{Flag=FlagOR(Bit[i]^Bit[i+512]);}
在又一个示例中,当处理包括尺寸为1024位x1024位的子矩阵的解码矩阵时,奇偶校验模块410可以具有1位x1024位的容量,并使用下面的伪代码来进行操作。在该示例中,奇偶校验模块410在每个时钟周期能够处理解码的数据的一个1位x1024位的部分。
Flag=0;
For(i=0;i<1024;i++)
{Flag=FlagOR(Bit[i]);}
旋转模块420能够从图3的解码单元320接收解码的数据。由于所接收的解码的数据可以以基于利用解码矩阵解码的特定层的顺序被旋转,在移位控制模块340的控制下,旋转模块420能够旋转或对齐所接收的数据部分以供由数据比较模块430评价。旋转模块420能够类似于图3的左/右旋转移位器330运行。旋转模块420能够被配置为根据来自移位控制模块340的指令来移位或旋转所述部分。移位控制模块340能够从存储器(未示出)确定或者查找用于解码数据的相对应的解码矩阵。基于相对应的解码矩阵,移位控制模块340能够指示旋转模块420使用特定粒度处理数据,并基于用于解码数据的解码矩阵的子矩阵的尺寸和内容来将数据的部分移位一定量。在一些实施例中,旋转模块420能够是可配置的贝奈斯网络或者移位寄存器的群组,并且旋转模块420可以支持例如至少1位x256位、1位x512位、和1位x1024位的输入矩阵尺寸。在这样的实施例中,贝奈斯网络还能够包括一个或多个彼此连接的较小的贝奈斯网络,以便用作较大的贝奈斯网络。此外,旋转模块420能够将数据的部分旋转基于当前层的旋转相对于先前层之间的比较的量。在旋转模块420的一个示例性操作中,旋转模块420能够对尺寸为1位x256位、1位x512位、或者1位x1024位的数据部分进行移位。
旋转模块420能够对具有与解码矩阵子矩阵尺寸相对应的不同尺寸或者粒度的数据部分进行移位,尽管旋转模块420可以在每个时钟周期具有固定的容量。移位控制模块340可以指示旋转模块420将由旋转模块420所处理的数据的不同部分看作不同的旋转单元。因而,移位控制模块340能够指示对数据的不同部分进行独立移位,如关于左/右旋转移位器330所讨论的那样。在一些实施例中,图4的早期检测模块350的由移位控制模块340所执行的移位控制功能是由移位控制器、而非图3的解码器300中的移位控制模块340所执行的。
数据比较模块430能够接收、存储、并比较来自两个或更多个不同层解码操作的移位的解码的数据。通过比较移位的解码的数据,数据比较模块430能够确定来自两个或更多个层解码操作的解码的数据是彼此相同还是彼此不同。当来自层解码操作的解码的数据相同时,数据比较模块430能够设置可用于确定解码的数据是否可以被成功解码或被解码具有某种程度的置信度的一个或多个旗标。因而,早期检测模块350能够至少部分地基于数据比较模块430的比较的结果,确定早期终止对数据的解码。
数据比较模块430能够将移位的解码的数据输出到输出缓冲模块440。进而输出缓冲模块440能够存储并输出解码的数据以供处理,诸如以供缩短、重新对齐、或者存储到其他存储器。
在一些实施例中,数据比较模块430能够对早期检测模块350做出早期终止决定,并选择性地将解码的数据输出到输出缓冲模块440。例如,当(1)奇偶校验模块410确定解码的数据和解码矩阵的一个或多个的层满足奇偶校验方程,并且(2)数据比较模块430确定来自两个或更多个层解码操作的解码的数据相同时,数据比较模块430能够确定终止解码并将解码的数据输出到输出缓冲模块440。在这样的情况下,数据比较模块430能够通过设置一个或多个旗标向解码单元320指示终止对数据单元的解码并开始对下一数据单元的解码。此外,奇偶校验模块410或者数据比较模块430能够维持一个或多个确定被满足的连续次数的运行计数,以便于确定何时终止对数据单元的解码。
尽管在图4中未示出,但一个或多个的附加的奇偶校验模块(诸如奇偶校验模块410),或者一个或多个的附加的旋转模块(诸如旋转模块420)能够包括在早期检测模块350中。附加的模块能够以附加的软件和/或硬件为代价,便于早期检测模块350对解码的数据的并行处理。关于图8-10更详细地讨论包括一个或多个附加的模块的早期检测模块的一些示例。
早期解码终止检测过程
图5是示出了根据本发明的一个实施例的早期终止检测的过程500的状态图。过程500示出了针对具有四个层的解码矩阵(诸如图2的解码矩阵200)的早期终止检测过程和早期终止检测条件的一个示例性集合,早期终止检测条件包括(1)对于x个数量的连续层解码操作是否满足奇偶校验,以及(2)对于x-1个连续层解码操作解码的数据单元或者码字是否保持不变,其中x是解码矩阵的层的总数。在一些实施例中,图1的控制器130和/或解码器模块132被配置为执行过程500。更具体地,图4的早期检测模块350能够被配置为执行过程500。
在状态505处,过程500确定来自一个层解码操作的解码的数据单元和解码矩阵的相对应的层是否满足奇偶校验方程(诸如方程4)。解码矩阵的相对应的层能够是在一个层解码操作期间被用于解码该数据单元的解码矩阵的层。当不满足奇偶校验方程(在图5中指示为FAILPARITY)时,过程500返回状态505。另一方面,当满足奇偶校验方程(在图5中指示为PASSPARITY)时,过程500移动至状态510。
在状态510处,过程500确定来自下一层解码操作的解码的数据单元和解码矩阵的相对应的层是否满足奇偶校验方程(诸如方程4),以及解码的数据单元是否与来自先前的层解码操作的解码的数据单元相同。下一层解码操作可以或者可以不来自使用解码矩阵对数据单元进行解码的相同的迭代。当不满足奇偶校验方程时,过程500移动至状态505。当满足奇偶校验方程并且解码的数据单元与来自先前的层解码操作的解码的数据单元不同(在图5中指示为PASSPARITY和FAILCODEWORD)时,过程500返回到状态510。当满足奇偶校验方程并且解码的数据单元与来自先前的层解码操作的解码的数据单元相同(在图5中指示为PASSPARITY和PASSCODEWORD)时,过程500移动至状态515。
在状态515处,过程500确定来自另一个下一层解码操作的解码的数据单元和解码矩阵的相对应的另一个下一层是否满足奇偶校验方程(诸如方程4),以及解码数据单元是否与来自先前的层解码操作的解码数据单元相同。另一个下一层解码操作可以或者可以不来自与一个或多个先前的层解码操作相同的、使用解码矩阵对数据单元进行解码的迭代。当不满足奇偶校验方程时,过程500移动到状态505。当满足奇偶校验方程并且解码的数据单元与来自先前的层解码操作的解码的数据单元不同时,过程500移动到状态510。当满足奇偶校验方程并且解码的数据单元与来自先前的层解码操作的解码的数据单元不同时,过程500移动到状态520。
在状态520处,过程500确定来自下面的下一层解码操作的解码的数据单元和解码矩阵的相对应的下面的下一层是否满足奇偶校验方程(诸如方程4),以及解码的数据单元是否与来自先前的层解码操作的解码的数据单元相同。下面的下一层解码操作可以或者可以不来自与一个或多个的先前的层解码操作相同的、使用解码矩阵对数据单元进行解码的迭代。当不满足奇偶校验方程时,过程500移动到状态505。当满足奇偶校验方程并且解码的数据单元与来自先前的层解码操作的解码的数据单元不同时,过程500移动到状态510。当满足奇偶校验方程并且解码的数据单元与来自先前的层解码操作的解码的数据单元相同时,过程500终止,并能够终止对数据单元的解码。
图6是示出了根据本发明的一个实施例的解码过程和早期终止检测过程的时序的时序图600。时序图600示出了使用具有四个层的解码矩阵H的解码和早期终止检测。标记为解码D1-4的时序图600的部分对应于由解码单元(诸如图3的解码单元320)所执行的解码操作。标记为EDU(早期检测单元)P的时序图600的部分对应于由奇偶校验模块(诸如图4的奇偶校验模块410)执行的早期解码终止检测。标记为EDU状态的时序图600的部分对应于针对奇偶校验方程的早期解码终止检测结果、以及针对特定层解码操作的解码的数据单元的改变。在一些实施例中,图1的控制器130和/或解码器模块132被配置为根据时序图600来执行过程。更具体地,图4的早期检测模块350能够被配置为根据时序图600来执行过程。
早期检测单元能够被配置为针对每个层解码操作,确定(1)对于层解码操作是否满足奇偶校验方程(诸如方程4),以及(2)解码的数据单元没有从先前的层解码操作的解码的数据单元改变。在一些实施例中,当条件(1)和(2)二者均被满足时,早期检测单元能够将计数器递增来追踪条件(1)和(2)的满足。当一个条件不被满足或两个条件均不被满足时,早期检测单元能够将计数器设置为一或者零。如果计数器达到阈值计数值,那么计数器从而能够指示该数据被成功解码或被解码具有置信度阈值,并且能够停止对该数据单元的解码且能够开始对另一个数据单元的解码。尽管关于图5的讨论示出了使用计数器,但在其他实施例中能够使用一个或多个其他方法来追踪满足确定。
时序图600示出了对数据单元解码的至少迭代i和迭代i+1。解码迭代i开始于通过使用解码矩阵H的层1来执行对数据单元解码的一个层解码操作以生成解码的数据单元C(i,1)。随后,迭代i继续,使用层2、层3和层4对数据单元进行单独地、连续地解码。在完成迭代i之后,开始对数据单元解码的下一迭代i+1。
实质上与在迭代i期间使用层2对数据单元进行解码来生成解码的数据单元C(i,2)并行,早期解码终止检测开始评价解码的数据单元C(i,1)和层1。然而,对于层1在所示出的情况下不满足奇偶校验方程(例如,C(i,1)·H1 T≠0),而早期解码终止检测过程继续并且计数器能够被设置为零。实质上与在迭代i期间使用层3对数据单元进行解码来生成解码的数据单元C(i,3)并行,早期解码终止检测继续评价解码的数据单元C(i,2)和层2。对于层2在这样的情况下也不满足奇偶校验方程(例如,C(i,2)·H2 T≠0),所以早期解码终止检测过程继续,并且计数器能够保持设置为零。
继续先前段落的示例,实质上与在迭代i期间使用层4对数据单元进行解码来生成解码的数据单元C(i,4)并行,早期解码终止检测继续评价解码的数据单元C(i,3)和层3。对于层3对于早期解码终止检测在这种情况下满足奇偶校验方程(例如,C(i,3)·H3 T=0),所以早期解码终止检测过程继续,并且计数器能够递增至一。实质上与在迭代i+1期间使用层1对数据单元进行解码来生成解码的数据单元C(i+1,1)并行,早期解码终止检测继续评价解码的数据单元C(i,4)和层4。对于层4对于早期解码终止检测在这种情况下满足奇偶校验方程(例如,C(i,4)·H4 T=0),并且解码的数据单元没有从先前的层解码操作的解码的数据单元改变(例如,C(i,3)=C(i,4)),所以早期解码终止检测过程继续,并且计数器能够递增至二。实质上与在迭代i+1期间使用层2对数据单元进行解码来生成解码的数据单元C(i+1,2)并行,早期解码终止检测继续评价解码的数据单元C(i+1,1)和层1。对于层1对于早期解码终止检测在这种情况下满足奇偶校验方程(例如,C(i+1,1)·H1 T=0),并且解码的数据单元没有从先前的层解码操作的解码的数据单元改变(例如,C(i,4)=C(i+1,1)),所以早期解码终止检测过程继续,并且计数器能够递增至三。实质上与在迭代i+1期间使用层3对数据单元进行解码来生成解码的数据单元C(i+1,3)并行,早期解码终止检测继续评价解码的数据单元C(i+1,2)和层2。对于层2对于早期解码终止检测在这种情况下满足奇偶校验方程(例如,C(i+1,2)·H2 T=0),并且解码的数据单元没有从先前的层解码操作的解码的数据单元改变(例如,C(i+1,1)=C(i+1,2)),所以计数器能够递增至四。在一些实施例中,因为计数器存储的值为四,并且解码编码H矩阵具有四个层,所以解码的数据单元能够被确定为在时间TOK被成功解码。因此,接下来能够使用相同或者不同的解码矩阵的层1来解码另一个数据单元。
图7是示出了根据本发明的一个实施例的具有早期终止检测的解码过程700的流程图。在一些实施例中,图1的控制器130和/或解码器模块132被配置为执行过程700。更具体地,图4和图8-10的早期检测模块350能够被配置为执行过程700。
在框705处,过程700执行对数据单元进行解码的一个层解码操作,并将计数器设置为零。例如,图3的解码单元320能够使用解码矩阵(诸如图2的解码矩阵200)的一个或多个的层来对数据单元进行解码。在框710处,过程700执行对数据单元进行解码的另一个层解码操作。例如,解码单元320能够再次使用解码矩阵200的一个或多个的下一连续层对数据单元进行解码。
实质上与框710处的动作并行,在框715处过程700确定是否满足奇偶校验方程。例如,奇偶校验模块410能够确定解码的数据单元和解码矩阵的一个或多个的层是否满足奇偶校验方程。如果不满足奇偶校验方程,那么在框720处过程700将计数器设置为零并且继续对数据单元进行解码。另一方面,如果满足了奇偶校验方程,过程700移动至框725并且确定计数器是否等于零。如果计数器等于零,那么过程700移动至框740,并将计数器递增。如果计数器不等于零,那么过程700在框730处确定解码的数据单元是否从先前的层解码操作改变。例如,数据比较模块430能够将解码的数据单元与来自先前的层解码操作的解码的数据单元进行比较。如果解码的数据单元确实改变,那么过程700移动至框735,并且将计数器设置为一,并且继续对数据单元进行解码。如果解码的数据单元没有改变,那么过程700移动至框740,并将计数器递增。
在框745处,过程700确定计数器是否超过阈值。例如,数据比较模块430能够比较计数器与阈值,来确定计数器是否超过阈值。阈值能够取决于解码矩阵的层数、或者在终止对数据单元的解码之前的期望的确定性程度、以及其他要素。例如,如果解码矩阵具有五个层,那么阈值能够被设置为解码矩阵层减去一的数量(即,在该示例中为四),以使得在早期终止检测期间,对于解码矩阵的五个层连续满足奇偶校验和解码数据单元改变的条件。作为另一个示例,如果解码矩阵具有四个层,那么阈值能够被设置为解码矩阵层减二的数量(即,在该示例中为二),以使得解码已成功完成具有某种程度的确定性(例如,50%、75%、90%、99%、或者99.99%置信度等)。如果计数器未超过阈值,那么过程700移动至框750,并继续对该数据单元进行解码。如果计数器超过了阈值,那么过程700移动至框755,并终止对该数据单元进行解码。
在框760处,过程700确定是否已达到迭代的最大数,诸如层解码操作的最大数、或者对于数据单元的解码迭代的最大数。如果在框755处已达到迭代的最大数,那么过程700终止对数据单元进行解码。另一方面,如果没有达到解码迭代的最大数,那么过程700移动至框710和框715,并实质上并行地执行框710和框715的动作。在框710处,过程700再次执行对数据单元进行解码的另一个层解码操作。在框715处,过程700再次确定是否满足奇偶校验方程;然而,过程700现在基于来自在框710处对数据单元进行解码的先前的另一个层解码操作的解码的数据单元,确定是否满足奇偶校验方程。
其他早期解码终止检测实施例
图8示出了根据本发明的一个实施例的早期检测模块350的框图。图8的早期检测模块350能够包括与图4的早期检测模块350相同的部件(其中奇偶校验模块410是奇偶校验模块410A),只是图8的早期检测模块350还包括奇偶校验模块Z410z。奇偶校验模块Z410z能够有利地在图4的早期检测模块350之前一个层解码操作启用对数据单元的解码的终止。
奇偶校验模块Z410z能够经由在图3中的左/右旋转移位器330与早期检测模块350之间示出的可选的连接,从左/右旋转移位器330接收解码的数据。由于来自左/右旋转移位器330的解码的数据能够对于解码矩阵的下层子矩阵对角对齐(diagonal-aligned),奇偶校验模块Z410z能够使用奇偶校验方程(诸如方程4),对于解码矩阵的下一连续层执行奇偶校验。
例如,对于当前层解码操作实质上并行地,奇偶校验模块A410a能够确定是否C(i,1)·H1 T=0,而奇偶校验模块Z410z能够确定是否C(i,1)·H2 T=0,其中C(i,1)是指来自当前层解码操作的解码的数据单元,而Hn是指解码矩阵的第n层。对于下一连续层解码操作实质上并行地,奇偶校验模块A410a能够确定是否C(i,2)·H2 T=0,奇偶校验模块Z410z能够确定是否C(i,2)·H3 T=0,并且数据比较模块430能够确定是否C(i,1)=C(i,2),其中C(i,2)是指来自下一连续层解码操作的解码的数据单元。对于下面的连续层解码操作实质上并行地,奇偶校验模块A410a能够确定是否C(i,3)·H3 T=0,奇偶校验模块Z410z能够确定是否C(i,3)·H4 T=0,并且数据比较模块430能够确定是否C(i,2)=C(i,3),其中C(i,3)是指来自下面的连续层解码操作的解码的数据单元。
该过程能够继续,直至满足了早期终止检测条件,例如(1)对于x数量的层,满足了奇偶校验,以及(2)对于x-2个连续层解码操作,解码的数据单元保持不变,其中x是解码矩阵的层的总数。在先前段落的示例中,如果所有由奇偶校验模块A410a、奇偶校验模块Z410z、和数据比较模块430规定的确定性被满足,那么早期检测模块350能够对于具有四个层的解码矩阵终止对数据单元的解码。此外,尽管先前段落的示例示出了针对对数据单元进行解码的相同迭代执行奇偶校验,但图8的早期检测模块350可以进一步针对来自对数据单元进行解码的不同迭代的层解码操作执行确定性。
图9示出了根据本发明的一个实施例的早期检测模块350的框图。图9的早期检测模块350能够包括与图8的早期检测模块350相同的部件(其中旋转模块420是旋转模块420A),只是图9的早期检测模块350还包括旋转模块B420b和奇偶校验模块B410b。旋转模块B420b和奇偶校验模块B410b能够有利地在图8的早期检测模块350之前一个层解码操作启用对数据单元解码的终止。
旋转模块420b能够类似于旋转模块420a运行。旋转模块420b能够从图3的解码单元320接收解码的数据。由于由旋转模块420所接收的解码的数据的部分可以以基于用解码矩阵解码的特定层的顺序旋转,在移位控制模块340的控制下,旋转模块420能够旋转或对齐所接收的数据部分,以供由奇偶校验模块B410b评价。
奇偶校验模块B410b能够类似于奇偶校验模块A410a和奇偶校验模块Z410z运行。奇偶校验模块B410b能够使用奇偶校验方程(诸如方程4)对于解码矩阵的下面的连续层执行奇偶校验方程。
例如,对于当前层解码操作实质上并行地,奇偶校验模块A410a能够确定是否C(i,1)·H1 T=0,奇偶校验模块Z410z能够确定是否C(i,1)·H2 T=0,并且奇偶校验模块B410b能够确定是否C(i,1)·H3 T=0,其中C(i,1)是指来自当前层解码操作的解码的数据单元,而Hn是指解码矩阵的第n层。对于下一连续层解码操作实质上并行地,奇偶校验模块A410a能够确定是否C(i,2)·H2 T=0,奇偶校验模块Z410z能够确定是否C(i,2)·H3 T=0,奇偶校验模块B410a能够确定是否C(i,2)·H4 T=0,并且数据比较模块430能够确定是否C(i,1)=C(i,2),其中C(i,2)是指来自下一连续层解码操作的解码的数据单元。
该过程能够继续,直至满足了早期终止检测条件,例如(1)对于x数量的层,满足了奇偶校验,以及(2)对于x-3个连续层解码操作,解码的数据单元保持不变,其中x是解码矩阵的层的总数。在先前段落的示例中,如果由奇偶校验模块A410a、奇偶校验模块Z410z、奇偶校验模块B410b、和数据比较模块430的所有规定的确定性被满足,那么早期检测模块350能够对于具有四个层的解码矩阵终止对数据单元的解码。此外,尽管先前段落的示例示出了针对对数据单元进行解码的相同迭代执行奇偶校验,但图9的早期检测模块350可以进一步针对来自对数据单元进行解码的不同迭代的层解码操作执行确定性。
图10示出了根据本发明的一个实施例的早期检测模块350的框图。图10的早期检测模块350能够包括与图9的早期检测模块350相同的部件,只是图10的早期检测模块350还包括一个或多个的旋转模块和奇偶校验模块,诸如旋转模块N420n和奇偶校验模块N410n。一个或多个的附加的旋转模块和奇偶校验模块能够分别地类似于旋转模块B420b和奇偶校验模块B410b运行,并且有利地在图9的早期检测模块350之前一个或多个层解码操作启用对数据单元解码的终止。
其他变化
那些本领域技术人员将会意识到,在一些实施例中,其他适当的纠错机制能够被用于附加至和/或代替LDPC编码。例如,能够使用汉明编码(Hammingcoding)、turbo编码、BCH编码等。此外,数据的任何适当的单元或者群组(诸如八位字节、四位字节、字、字节等)能够被用于附加至或者代替用户数据的位。此外,在所公开的过程中采取的实际的步骤(诸如图5和7中所示出的过程)可以不同于在图中所示出的那些。能够利用附加的系统部件,并且能够组合或省略所公开的系统部件。取决于实施例,上文所描述的某些步骤可以被移除,可以增加其他步骤。
尽管已描述了特定实施例,但这些实施例仅是以示例的方式提出,并且不想要限制保护的范围。实际上,本文所描述的新颖的方法和系统可以以各种其他形式来实施。此外,可以以本文所描述的方法和系统的形式进行各种省略、替换、和改变,而不脱离保护的精神。所附权利要求及其等同物旨在涵盖这样的形式或者修改,其将落入保护的范围和精神内。例如,在图中示出的各种部件可以被实施为处理器上的软件和/或固件、ASIC/FPGA、或者专用的硬件。同样,上述公开的具体实施例的特征和属性可以以不同方式组合以形成另外的实施例,其全部落入本公开的范围内。尽管本公开提供特定优选的实施例和应用,但其他实施例对本领域普通技术人员来说是显而易见的,包括未提供本文所阐述的所有特征和优点的实施例,也落入本公开的范围。因此,本公开的范围旨在仅参考所附的权利要求来定义。
Claims (21)
1.一种固态存储系统,包括:
非易失性固态存储器阵列,其被配置为存储多个数据单元;以及
控制器,其被配置为:
使用包括多个层的编码矩阵来迭代地对数据单元进行解码,所述多个层包括第一层和第二层,解码的迭代包括多个层解码操作,所述数据单元从所述存储器阵列读取,以及
响应于确定以下项来终止对所述数据单元的解码:
来自第一层解码操作的所解码的数据单元和所述第一层满足奇偶校验方程,
来自第二层解码操作的所解码的数据单元和所述第二层满足所述奇偶校验方程,以及
来自所述第一层解码操作的所解码的数据单元与来自所述第二层解码操作的所解码的数据单元相同,
其中,对所述数据单元的解码的所述终止减少被执行以用于对所述数据单元进行解码的层解码操作的数量。
2.根据权利要求1所述的固态存储系统,其中,所述第一层解码操作和所述第二层解码操作是连续执行的层解码操作。
3.根据权利要求2所述的固态存储系统,其中,所述第一层解码操作和所述第二层解码操作是来自对所述数据单元进行解码的不同迭代的层解码操作。
4.根据权利要求1所述的固态存储系统,其中,所述第一层解码操作对应于使用所述第一层来对所述数据单元进行解码,而所述第二层解码操作对应于使用所述第二层来对所述数据单元进行解码。
5.根据权利要求1所述的固态存储系统,其中,所述控制器还被配置为确定来自所述第一层解码操作的所解码的数据单元和所述多个层中的第三层是否满足所述奇偶校验方程。
6.根据权利要求1所述的固态存储系统,其中,所述控制器还被配置为:
确定来自第三层解码操作的所解码的数据单元和所述多个层中的第三层是否满足所述奇偶校验方程,以及
确定来自所述第二层解码操作的所解码的数据单元和来自所述第三层解码操作的所解码的数据单元是否相同。
7.根据权利要求1所述的固态存储系统,其中,所述控制器还被配置为对以下两项均成立的连续次数的计数进行维持:
来自层解码操作的所解码的数据单元和所述多个层中的一个或多个层满足所述奇偶校验方程,以及
来自所述层解码操作的所解码的数据单元与来自先前连续的层解码操作的所解码的数据单元相同。
8.根据权利要求7所述的固态存储系统,其中,在所述控制器终止对所述数据单元进行解码之前,所述控制器还被配置为将所述计数与阈值进行比较。
9.根据权利要求1所述的固态存储系统,其中,所述奇偶校验方程包括来自一个层解码操作的所解码的数据单元与所述多个层中的一个层的转置的矩阵乘法,当所述矩阵乘法的结果是零时,来自所述一个层解码操作的所解码的数据单元和所述一个层的所述转置满足所述奇偶校验方程。
10.根据权利要求1所述的固态存储系统,其中,所述数据单元包括低密度奇偶校验(LDPC)数据单元,并且所述编码矩阵包括多个子矩阵,所述多个子矩阵包括旋转了数值的单位矩阵。
11.一种在数据存储系统中对数据进行解码的方法,所述方法包括:
使用包括多个层的编码矩阵来迭代地对数据单元进行解码,所述多个层包括第一层和第二层,解码的迭代包括多个层解码操作,所述数据单元从非易失性固态存储器阵列读取;以及
响应于确定以下项来终止对所述数据单元的解码:
来自第一层解码操作的所解码的数据单元和所述第一层满足奇偶校验方程,
来自第二层解码操作的所解码的数据单元和所述第二层满足所述奇偶校验方程,以及
来自所述第一层解码操作的所解码的数据单元与来自所述第二层解码操作的所解码的数据单元相同。
12.根据权利要求11所述的方法,其中,所述第一层解码操作和所述第二层解码操作是连续执行的层解码操作。
13.根据权利要求12所述的方法,其中,所述第一层解码操作和所述第二层解码操作是来自对所述数据单元进行解码的不同迭代的层解码操作。
14.根据权利要求11所述的方法,其中,所述第一层解码操作对应于使用所述第一层来对所述数据单元进行解码,而所述第二层解码操作对应于使用所述第二层来对所述数据单元进行解码。
15.根据权利要求11所述的方法,还包括确定来自所述第一层解码操作的所解码的数据单元和所述多个层中的第三层是否满足所述奇偶校验方程。
16.根据权利要求11所述的方法,还包括:
确定来自第三层解码操作的所解码的数据单元和所述多个层中的第三层是否满足所述奇偶校验方程,以及
确定来自所述第二层解码操作的所解码的数据单元和来自所述第三层解码操作的所解码的数据单元是否相同。
17.根据权利要求11所述的方法,还包括对以下两项均成立的连续次数的计数进行维持:
来自层解码操作的所解码的数据单元和所述多个层中的一个或多个层满足所述奇偶校验方程,以及
来自所述层解码操作的所解码的数据单元与来自先前连续的层解码操作的所解码的数据单元相同。
18.根据权利要求17所述的方法,还包括在终止对所述数据单元进行解码之前,将所述计数与阈值进行比较。
19.根据权利要求11所述的方法,其中,所述奇偶校验方程包括来自一个层解码操作的所解码的数据单元与所述多个层中的一个层的转置的矩阵乘法,当所述矩阵乘法的结果是零时,来自所述一个层解码操作的所解码的数据单元和所述一个层的所述转置满足所述奇偶校验方程。
20.根据权利要求11所述的方法,其中,所述数据单元包括低密度奇偶校验(LDPC)数据单元,并且所述编码矩阵包括多个子矩阵,所述多个子矩阵包括旋转了数值的单位矩阵。
21.根据权利要求11所述的方法,其中,所述数据存储系统包括控制器,并且其中,所述方法是由所述控制器执行的。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361817421P | 2013-04-30 | 2013-04-30 | |
US61/817,421 | 2013-04-30 | ||
US13/918,400 | 2013-06-14 | ||
US13/918,400 US20140223255A1 (en) | 2012-12-18 | 2013-06-14 | Decoder having early decoding termination detection |
PCT/US2014/036255 WO2014179502A1 (en) | 2013-04-30 | 2014-04-30 | Decoder having early decoding termination detection |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105164646A true CN105164646A (zh) | 2015-12-16 |
CN105164646B CN105164646B (zh) | 2019-06-07 |
Family
ID=51843935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480024512.XA Active CN105164646B (zh) | 2013-04-30 | 2014-04-30 | 具有早期解码终止检测的解码器 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP2992429B1 (zh) |
KR (1) | KR101913900B1 (zh) |
CN (1) | CN105164646B (zh) |
HK (1) | HK1216200A1 (zh) |
WO (1) | WO2014179502A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108683426A (zh) * | 2018-05-18 | 2018-10-19 | 中国科学院微电子研究所 | 一种基于bch码的ecc系统及存储器 |
CN111989746A (zh) * | 2018-04-20 | 2020-11-24 | 美光科技公司 | 使用阶层式解码器的误差校正 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9595977B2 (en) | 2014-09-29 | 2017-03-14 | Apple Inc. | LDPC decoder with efficient circular shifters |
US10128869B2 (en) | 2016-05-17 | 2018-11-13 | Apple Inc. | Efficient convergence in iterative decoding |
WO2018042597A1 (ja) * | 2016-09-01 | 2018-03-08 | 三菱電機株式会社 | 誤り訂正復号装置及び光送受信装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090113256A1 (en) * | 2007-10-24 | 2009-04-30 | Nokia Corporation | Method, computer program product, apparatus and device providing scalable structured high throughput LDPC decoding |
US20110161770A1 (en) * | 2009-12-31 | 2011-06-30 | Yeong-Luh Ueng | Low density parity check codec and method of the same |
US8392789B2 (en) * | 2009-07-28 | 2013-03-05 | Texas Instruments Incorporated | Method and system for decoding low density parity check codes |
US8661326B1 (en) * | 2010-08-04 | 2014-02-25 | Marvell International Ltd. | Non-binary LDPC code decoding early termination |
US8775896B2 (en) * | 2012-02-09 | 2014-07-08 | Lsi Corporation | Non-binary LDPC decoder with low latency scheduling |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7904793B2 (en) * | 2007-03-29 | 2011-03-08 | Sandisk Corporation | Method for decoding data in non-volatile storage using reliability metrics based on multiple reads |
US8127209B1 (en) * | 2007-07-30 | 2012-02-28 | Marvell International Ltd. | QC-LDPC decoder with list-syndrome decoding |
US8464129B2 (en) | 2008-08-15 | 2013-06-11 | Lsi Corporation | ROM list-decoding of near codewords |
US8578256B2 (en) * | 2009-04-22 | 2013-11-05 | Agere Systems Llc | Low-latency decoder |
US8572463B2 (en) * | 2010-02-01 | 2013-10-29 | Sk Hynix Memory Solutions Inc. | Quasi-cyclic LDPC encoding and decoding for non-integer multiples of circulant size |
US8499226B2 (en) * | 2010-06-29 | 2013-07-30 | Lsi Corporation | Multi-mode layered decoding |
EP2737630A2 (en) * | 2011-07-29 | 2014-06-04 | SanDisk Technologies Inc. | Checksum using sums of permutation sub-matrices |
-
2014
- 2014-04-30 KR KR1020157033536A patent/KR101913900B1/ko active IP Right Grant
- 2014-04-30 CN CN201480024512.XA patent/CN105164646B/zh active Active
- 2014-04-30 WO PCT/US2014/036255 patent/WO2014179502A1/en active Application Filing
- 2014-04-30 EP EP14792025.0A patent/EP2992429B1/en active Active
-
2016
- 2016-04-13 HK HK16104181.3A patent/HK1216200A1/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090113256A1 (en) * | 2007-10-24 | 2009-04-30 | Nokia Corporation | Method, computer program product, apparatus and device providing scalable structured high throughput LDPC decoding |
US8392789B2 (en) * | 2009-07-28 | 2013-03-05 | Texas Instruments Incorporated | Method and system for decoding low density parity check codes |
US20110161770A1 (en) * | 2009-12-31 | 2011-06-30 | Yeong-Luh Ueng | Low density parity check codec and method of the same |
US8661326B1 (en) * | 2010-08-04 | 2014-02-25 | Marvell International Ltd. | Non-binary LDPC code decoding early termination |
US8775896B2 (en) * | 2012-02-09 | 2014-07-08 | Lsi Corporation | Non-binary LDPC decoder with low latency scheduling |
Non-Patent Citations (2)
Title |
---|
D.E. HOCEVAR: "A Reduced Complexity Decoder Architecture via", 《PROC., IEEE WORKSHOP ON SIGNAL PROCESSING SYSTEMS, SIPS》 * |
JIANGPENG LI等: "Memory efficient layered decoder design with early termination for LDPC codes", 《2011 IEEE INTERNATIONAL SYMPOSIUM OF CIRCUITS AND SYSTEMS (ISCAS)》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111989746A (zh) * | 2018-04-20 | 2020-11-24 | 美光科技公司 | 使用阶层式解码器的误差校正 |
CN108683426A (zh) * | 2018-05-18 | 2018-10-19 | 中国科学院微电子研究所 | 一种基于bch码的ecc系统及存储器 |
CN108683426B (zh) * | 2018-05-18 | 2022-08-26 | 中国科学院微电子研究所 | 一种基于bch码的ecc系统及存储器 |
Also Published As
Publication number | Publication date |
---|---|
KR20160004338A (ko) | 2016-01-12 |
CN105164646B (zh) | 2019-06-07 |
EP2992429A1 (en) | 2016-03-09 |
EP2992429B1 (en) | 2022-03-09 |
HK1216200A1 (zh) | 2016-10-21 |
KR101913900B1 (ko) | 2018-10-31 |
EP2992429A4 (en) | 2016-12-14 |
WO2014179502A1 (en) | 2014-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106997777B (zh) | 具有改进的硬解码吞吐量的vss ldpc解码器 | |
US9673840B2 (en) | Turbo product codes for NAND flash | |
US9495243B2 (en) | Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems | |
US8966339B1 (en) | Decoder supporting multiple code rates and code lengths for data storage systems | |
US9471421B2 (en) | Data accessing method, memory storage device and memory controlling circuit unit | |
US10693496B2 (en) | Memory system with LDPC decoder and method of operating such memory system and LDPC decoder | |
KR20160090054A (ko) | 플래시 메모리 시스템 및 그의 동작 방법 | |
CN105164646A (zh) | 具有早期解码终止检测的解码器 | |
US9553608B2 (en) | Data storage device decoder and method of operation | |
CN110673979A (zh) | 存储器控制器及其操作方法 | |
CN108268338B (zh) | 逐渐缩减大小的可变节点存储器 | |
CN111726121A (zh) | 错误校正解码器和具有该错误校正解码器的存储器系统 | |
US10884858B2 (en) | LDPC decoding device, memory system including the same and method thereof | |
CN106158046B (zh) | 用于turbo乘积码的误校正避免 | |
CN108270449B (zh) | 支持多种编码率和编码长度的编码器 | |
US9619317B1 (en) | Decoder having early decoding termination detection | |
CN106708649B (zh) | 解码方法、存储器储存装置及存储器控制电路单元 | |
CN114968648A (zh) | 在存储器系统中使用错误校正码的设备和方法 | |
KR102513782B1 (ko) | 컨트롤러 및 그것의 동작 방법 | |
CN105938728B (zh) | 用于近似平衡码的编码器和解码器设计 | |
CN110971240A (zh) | 解码器设计方法与存储控制器 | |
US20240185898A1 (en) | Syndrome decoding system | |
US11973515B2 (en) | Hybrid precision MS decoder to reduce gate-count for long codes | |
US20230195358A1 (en) | Separation of Parity Columns in Bit-Flip Decoding of Low-Density Parity-Check Codes with Pipelining and Column Parallelism | |
CN117707833A (zh) | 不规则ldpc码的动态缩放因子更改 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1216200 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1216200 Country of ref document: HK |