CN110119328B - 为了容错改进以时分方式利用嵌入有本地码的全局码进行迭代消息传递解码 - Google Patents

为了容错改进以时分方式利用嵌入有本地码的全局码进行迭代消息传递解码 Download PDF

Info

Publication number
CN110119328B
CN110119328B CN201910012248.2A CN201910012248A CN110119328B CN 110119328 B CN110119328 B CN 110119328B CN 201910012248 A CN201910012248 A CN 201910012248A CN 110119328 B CN110119328 B CN 110119328B
Authority
CN
China
Prior art keywords
decoder
codeword
decoding
detector
symbols
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910012248.2A
Other languages
English (en)
Other versions
CN110119328A (zh
Inventor
李舒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of CN110119328A publication Critical patent/CN110119328A/zh
Application granted granted Critical
Publication of CN110119328B publication Critical patent/CN110119328B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2948Iterative decoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1125Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using different domains for check node and bit node processing, wherein the different domains include probabilities, likelihood ratios, likelihood differences, log-likelihood ratios or log-likelihood difference pairs
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, 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 using interleaving techniques
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2927Decoding strategies
    • H03M13/293Decoding strategies with erasure setting
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4138Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors soft-output Viterbi algorithm based decoding, i.e. Viterbi decoding with weighted decisions
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/6325Error control coding in combination with demodulation

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Error Detection And Correction (AREA)

Abstract

所公开的实施例致力于用于迭代消息传递解码的***、设备和方法。在一个实施例中,公开了一种方法,所述方法包括:在存储设备处使用检测器和解码器来对第一码字进行解码,所述第一码字包括来自第一组码字的一组符号;经由所述解码为所述第一码字中的每个符号指派一组置信度水平;由所述存储设备将所述置信度水平发送到迭代解码器;由所述迭代解码器基于该组置信度水平生成第二码字,所述第二码字排除该组符号中的至少一个符号;由所述迭代解码器使用擦除解码器来对所述第二码字进行迭代地解码;以及由所述迭代解码器将由所述擦除解码器生成的软信息发送到所述存储设备用以由所述存储设备进行后续解码。

Description

为了容错改进以时分方式利用嵌入有本地码的全局码进行迭 代消息传递解码
本申请要求于2018年2月6日提交美国专利商标局、申请号为15889458、发明名称为“ITERATIVE MESSAGE-PASSING DECODING WITH GLOBAL CODE EMBEDDED WITH LOCALCODE IN TIME-DIVISION MANNER FOR FAULT TOLERANCE IMPROVEMENT”的美国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
所公开的实施例涉及数字解码,并且具体地,涉及超大规模数据集群中的协作式解码。
背景技术
超大规模数据中心以存储集群的形式采用存储节点。存储集群可以包括被组织到存储池中的一个或多个存储设备。这些存储设备用于支持例如网络应用的存储要求。
为了支持高性能应用,需要一定水平的冗余以确保单个驱动器的故障不会负面地影响下游应用。一个方法是跨越驱动器复制数据。因此,单个数据项被存储在单独的非重叠存储设备中。此方法的不足之处是存储量随着存储的数据量而线性地增加。因为由网络应用使用的数据量以指数方式增长,所以支持此方案所需的存储设备量以指数方式增长,并且因此在所需能源、存储设备的成本和可扩展性方面是不切实际的。
另一方法是在纠删码池中组织存储设备。纠删码池具有仅一次存储数据的优点。为了支持这种减少的存储,需要附加计算复杂性。然而,折衷通常优于复制的***。在纠删码池中,数据被分段成单个符号。这些符号然后被分发到不同的存储设备。例如,数据字(ABCD)可以被分成单独的符号(A、B、C、D)并且存储在四个单独的驱动器中。
为了处理驱动器故障,需要一定水平的冗余以确保如果一个符号丢失了,则可恢复它。为了实现这个,许多***利用里德-所罗门(RS)编码来将附加奇偶校验字节添加到给定数据项(例如,ABCD12,其中1和2是奇偶校验符号)。奇偶校验比特的选择规定了可以恢复多少个符号。例如,利用两个奇偶校验比特,***可检测到两个错误并纠正一个错误。这些符号然后被分发到不同的存储设备,其中常常使用专用存储设备来存储奇偶校验符号。当前***一般地硬判决RS解码以便检测并在可能的情况下纠正擦除。
当前***附加地利用进一步编码来保护免于存储层次的各个级别处的错误。一种当前技术是使用低密度奇偶校验(LDPC)算法来在驱动器级对数据执行纠错。一般而言,这些算法不关心编码和解码的数据的形式。相反,LDPC码被简单地使用来纠正驱动器级错误或信道错误。数据然后被简单地返回到RS解码器并且RS解码器执行所返回的数据的硬解码。在一些***中,如果所有驱动器产生了无错数据则跳过RS解码。因此,RS解码器经常未被使用。这导致硬件消耗功率和时钟周期,但是不执行有用的工作。附加地,在当前***中,所采用的LDPC解码是硬判决解码。如已知的,硬判决编码是费时的并且对读取请求导致响应时间减少。
发明内容
所公开的实施例弥补现有解码***的以上和其他缺陷。具体地,所公开的实施例描述了一种用于在全局级擦除编码与驱动器级纠错之间分发解码工作的改进的解码架构。为了支持这个,所公开的实施例首先利用软判决擦除解码器(例如,软判决RS解码器)。所公开的实施例附加地利用LDPC解码器和MAP(最大后验)/SOVA(软输出维特比(Viterbi)算法)检测器来迭代地检测驱动器级处的错误并且为存储在给定驱动器上的符号指派关联的对数似然比(LLR)值。这些LLR被馈送到擦除解码器,所述擦除解码器然后可以主动地生成一系列试验以用软判决擦除解码器执行。具体地,LLR用于预测哪些符号应该被视为擦除并且经修改的码字被馈送到擦除解码器。以这种方式,***预测可能的擦除。擦除解码器然后可以将结果得到的解码码字反馈给每个驱动器,使得解码符号的置信度可以由其他驱动器用在将来的迭代驱动器级解码中。
在一个实施例中,公开了一种方法,所述方法包括:在存储设备处使用检测器和解码器来对第一码字进行解码,所述第一码字包括来自第一组码字的一组符号;经由所述解码为所述第一码字中的每个符号指派一组置信度水平;由所述存储设备将所述置信度水平发送到迭代解码器;由所述迭代解码器基于该组置信度水平生成第二码字,所述第二码字排除该组符号中的至少一个符号;由所述迭代解码器使用擦除解码器来对所述第二码字进行迭代地解码;以及由所述迭代解码器将由所述擦除解码器生成的软信息发送到所述存储设备用以由所述存储设备进行后续解码。
在另一实施例中,公开了一种***,所述***包括:包括检测器和解码器的存储设备,所述存储设备被配置为使用所述检测器和解码器来对第一码字进行解码,所述第一码字包括来自第一组码字的一组符号,并且经由所述解码为所述第一码字中的每个符号指派一组置信度水平;时分调度器,所述时分调度器被配置为将所述置信度水平发送到迭代解码器;以及迭代解码器,所述迭代解码器被配置为基于该组置信度水平生成第二码字,所述第二码字排除该组符号中的至少一个符号,使用擦除解码器来对所述第二码字进行迭代地解码,并且将由所述擦除解码器生成的软信息发送到所述存储设备用以由所述存储设备进行后续解码。
在另一实施例中,公开了一种存储设备,所述存储设备包括:检测器,所述检测器被配置为:标识通过维特比网格对接收到的码字进行解码的至少一条路径,并且沿着所述路径针对每个步骤计算软输出;以及解码器,所述解码器被配置为:从所述检测器接收所述软输出,使用所述码字和由所述检测器生成的所述软输出来执行迭代解码过程,生成与所述码字的每个符号相关联的一组置信度值,并且将该组置信度值发送到迭代解码器。
附图说明
根据如附图中所图示的实施例的以下描述,本公开的前述及其他目的、特征和优点将是显而易见的,在附图中附图标记在各个视图中自始至终指代相同的部分。附图不一定按比例绘制,重点替代地被放置在图示本公开的原理上。
图1是图示根据本公开的一些实施例的纠删码存储集群的框图。
图2A和图2B是图示由现有***利用的纠删码池的写入和读取操作的流程图。
图3是图示根据本公开的一些实施例的纠删码分割***的框图。
图4是图示根据本公开的一些实施例的用于利用嵌入有本地码的全局码进行迭代消息传递解码的方法的流程图。
图5是图示根据本公开的一些实施例的全局迭代解码***的框图。
图6是图示根据本公开的一些实施例的在驱动器级解码器与全局擦除解码器之间交换解码结果的图。
图7图示根据本公开的一些实施例的用于使用软信息解码输出来执行擦除解码的方法。
实施方式
现在将在下文中参考附图更全面地描述本公开,附图形成本公开的一部分,并且通过图示来示出某些示例实施例。然而,主题可以被以各种不同的形式具体实现,并且因此,涵盖或要求保护的主题旨在被解释为不限于本文中所阐述的任何示例实施例;示例实施例被仅仅提供为说明性的。同样地,要求保护或涵盖的主题的相当广泛的范围是有意的。除了别的之外,例如,主题可以作为方法、设备、组件或***被具体实现。因此,实施例可以例如采取硬件、软件、固件或其任何组合的形式(除软件本身以外)。以下详细描述因此不旨在在限制性意义上进行。
在整个说明书和权利要求书中,术语可以具有超出显式地陈述的含义的上下文中建议或者暗示的有细微差别的含义。同样地,如本文中所使用的短语“在一个实施例中”不一定指代相同的实施例,并且如本文中所使用的短语“在另一实施例中”不一定指代不同的实施例。例如,要求保护的主题旨在整个地或部分地包括示例实施例的组合。
一般而言,可以至少部分地从上下文中的使用理解术语。例如,如本文中所使用的术语(诸如“和”、“或”或“和/或”)可以包括各种含义,这些含义可以至少部分地取决于使用此类术语的上下文。通常,“或”在用于使列表(诸如A、B或C)相关联的情况下,旨在意指A、B和C(这里在包括意义上使用)以及A、B或C(这里在排他意义上使用)。此外,如本文中所使用的术语“一个或多个”至少部分地取决于上下文,可以用于在单数意义上描述任何特征、结构或特性或者可以用于在复数意义上描述特征、结构或特性的组合。类似地,至少部分地取决于上下文,诸如“一”、“一个”或“该”的术语再次可以被理解为传达单数用法或者传达复数用法。此外,术语“基于”可以被理解为不一定旨在传达一组排他因素,而再次至少部分地取决于上下文,可以替代地允许存在不一定明确地描述的附加因素。
在下面参考方法和设备的框图和操作图示描述本公开。应理解的是,框图或操作图示的每个块以及框图或操作图示中的块的组合可借助于模拟或数字硬件和计算机程序指令来实现。可将这些计算机程序指令提供给以下各项的处理器:用于像本文中所详述的那样更改其功能的通用计算机、专用计算机、ASIC或其他可编程数据处理装置,使得经由该计算机或其他可编程数据处理装置的处理器执行的指令实现框图或一个或多个操作块中所指定的功能/行为。在一些替代实施方式中,块中所指出的功能/行为可不按照操作图示中所指出的顺序发生。例如,取决于所涉及的功能/行为,实际上可基本上同时地执行相继示出的两个块,或者有时可按照相反顺序执行这些块。
可将这些计算机程序指令提供给以下各项的处理器:用于将其功能更改为特殊目的的通用计算机;专用计算机;ASIC;或其他可编程数字数据处理装置,使得经由该计算机或其他可编程数据处理装置的处理器执行的指令实现框图或一个或多个操作块中所指定的功能/行为,从而依照本文中的实施例变换其功能性。
出于本公开的目的,计算机可读介质(或计算机可读存储介质/媒体)存储计算机数据,该数据可以机器可读形式包括可由计算机执行的计算机程序代码(或计算机可执行指令)。作为示例而非限制,计算机可读介质可以包括用于数据的有形或固定存储的计算机可读存储介质,或用于对含代码信号进行瞬时解释的通信介质。如本文中所使用的计算机可读存储介质指代物理或有形存储装置(与信号相反),并且包括但不限于用任何方法或技术实现以用于诸如计算机可读指令、数据结构、程序模块或其他数据的信息的有形存储的易失性和非易失性、可移动和不可移动介质。计算机可读存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪速存储器或其他固态存储器技术、CD-ROM、DVD或其他光学存储装置、磁盒、磁带、磁盘存储装置或其他磁存储设备,或可用于有形地存储所期望的信息或数据或指令并且可由计算机或处理器访问的任何其他物理或材料介质。
图1是图示根据本公开的一些实施例的纠删码存储集群的框图。
在所图示的实施例中,存储集群(102)可以包括诸如池(104)的一个或多个纠删码存储池。在一些实施例中,集群(102)可以包括在地理上分布的多个池。在一些实施例中,这些池可以分布在宽区域上,分布在本地区域上,或者分布在本地区域和宽区域的组合上。一般而言,存储集群(102)可以由客户端设备访问(例如,通过网络)并且存储发送到集群的用户数据。
所图示的存储集群(102)将数据分发到一个或多个纠删码池中。尽管被图示为单个池(104),然而***可以包括多个池并且对池的数量没有限制。
池(104)包括多个存储设备。在一些实施例中,这些存储设备中的每一个包括固态设备(SSD)或类似的持久存储设备。在一些实施例中,存储设备可以包括对象存储设备(OSD)。特定类型的存储设备不旨在受限制。
如图所示,存储设备包括用户驱动器(106A-106F)和奇偶校验驱动器(108A-108B)。在一个实施例中,用户驱动器(106A-106F)被配置为存储由用户(或应用)提供的数据,然而奇偶校验驱动器(108A-108B)用于存储通过擦除编码算法生成的奇偶校验比特。在图1的下部图式地描绘该过程。在该部分中,接收一条用户数据并将其分段成部分(110A-110C)。附加地,使用例如里德-所罗门(“RS”)编码器来对包括部分(110A-110C)的用户数据进行编码以生成奇偶校验部分112。部分(110A-110C)分布在单独的用户驱动器( 106A-106C)中并且奇偶校验部分(112)被分发到奇偶校验驱动器(108A)。
对分割和编码的以上描述允许***从驱动器故障中恢复。例如,如果用户驱动器(106A)发生故障,则部分(110A)将丢失或损坏。然而,***可使用其他部分(110B-110C)和奇偶校验部分(112)来恢复部分(110A)。
除了RS编码之外,每个驱动器(106A-106F和108A-108B)可以采用独立纠错编码***。在一些实施例中,此***可以包括低密度奇偶校验(LDPC)编码和解码算法(及关联的硬件)。在此实施例中,每个单独的驱动器(106A-106F和108A-108B)分别使用单独的纠错例行程序(例如,LDPC例行程序)来对传入和传出数据进行编码和解码。在一些实施例中,设备使用软信息演化来对存储在给定驱动器上的数据进行解码并且确保无错操作。
图2A和图2B是图示由现有***利用的纠删码池的写入和读取操作的流程图。
在步骤202中,该方法接收用户数据。如上所述,用户数据可以包括被供应用于存储在纠删码池中的任何数据。
在步骤204中,该方法利用例如RS编码器来对用户数据进行编码以获得全局纠删码(GEC)奇偶校验部分。出于图示的目的,一条用户数据可以包括符号A1A2A3。在RS编码之后,该方法生成包含符号A1A2A3A4的码字,其中A4包括奇偶校验部分。
在步骤206中,该方法将码字分发到纠删码池以进行存储。如上所述,该方法可以将码字分成单独的符号(A1、A2、A3和A4)并且将每个符号发送到单独的驱动器。在一个实施例中,可以将符号A4发送到指定的奇偶校验驱动器。
在步骤208中,该方法使用LDPC编码器来对所接收到的码字进行编码。在一个实施例中,在每个驱动器处对所接收到的码字执行步骤208。如先前所描述的,接收到的码字可以包括各种码字的部分(例如,部分A1、B1、C1、D1,其中B1、C1、D1对应于其他RS编码的码字的部分)。在一个实施例中,步骤208的结果是包括RS编码的部分A1、B1、C1、D1和奇偶校验部分P1的LDPC码字。
在步骤210中,该方法通过从驱动器中检索码字开始对存储在给定驱动器上的码字进行解码。在一个实施例中,可以响应于文件***命令、网络请求或用于检索给定地址处的数据的其他指令而执行步骤210。
在步骤212中,该方法使用硬LPDC解码器来对码字进行解码。如本领域中已知的,“硬”解码器打开以产生二进制输出(例如,符号是正确的或不正确的)。一般而言,硬解码器对二进制值(一或零)操作。相比之下,软解码器(也称为软判决解码器)以对数似然比(LLR)的形式使用连续范围的值作为输入。虽然软判决解码提供改进的解码性能,但是由于设计硬解码器的复杂度降低,硬解码器的使用是常见的。
在步骤214中,该方法确定LPDC码字的解码是否成功。如果是这样的话,则该方法返回经解码的码字(步骤218)。可替换地,如果该方法在LPDC解码中检测到错误,则该方法继续执行RS解码(步骤216)以使用存储在其他设备上的奇偶校验部分(或用户数据部分)来纠正错误。
如先前所描述的,利用独立硬判决LPDC解码例行程序的每个驱动器的使用产生费时的解码过程。这种时间消耗必定影响驱动器的性能,并且当被组合时,影响整体纠删码池和存储群集。另一方面,纠删码解码器(例如,RS解码器)对大多数读取操作来说是空闲的。因此,纠删码解码器未充分利用且效率低。
图3是图示根据本公开的一些实施例的纠删码分割***的框图。
如图所示,用户数据(A1A2A3、B1B2B3、C1C2C3、D1D2D3)由RS编码器(302)接收并且被RS编码以生成包括原始用户数据加上由RS编码器生成的奇偶校验部分的码字A1A2A3A4、B1B2B3B4、C1C2C3C4、D1D2D3D4。这些码字被分割成单独的符号并且每个符号分布在驱动器(304A-304D)当中。因此,驱动器1(304A)接收部分A1B1C1D1,驱动器2(304B)接收部分A2B2C2D2,驱动器3(304C)接收部分A3B3C3D3,并且驱动器4(304D)接收部分A4B4C4D4。由每个驱动器接收到的部分被称为分割的码字。
每个分割的码字然后被输入到LDPC编码器中以生成要存储在驱动器上的最终码字。例如,驱动器1(304A)对经分割的码字A1B1C1D1进行编码以生成最终码字A1B1C1D1P1,其中P1表示最终码字的奇偶校验部分。
在一个实施例中,RS编码器(302)可以包括独立处理设备。RS编码器(302)可以包括与大容量存储器通信的处理单元(CPU)。大容量存储器可以包括RAM模块和其他存储装置。大容量存储器图示用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的计算机存储介质的另一示例。大容量存储器存储用于控制客户端设备的低级操作的基本输入/输出***(“BIOS”)。大容量存储器还可以存储用于控制RS编码器(302)的操作的操作***。应了解的是,此组件可以包括诸如UNIX或LINUXTM的版本的通用操作***,或诸如Windows ClientTM的专用客户端通信操作***,或Symbian®操作***。操作***可以包括Java虚拟机模块或者与Java虚拟机模块对接,所述Java虚拟机模块使得能够经由Java应用程序控制硬件组件和操作***操作。
类似地,每个存储设备/驱动器(304A-304D)可以包括控制对一个或多个底层磁盘的访问的一个或多个处理器或微控制器。例如,给定驱动器可以包括物理存储介质(例如,硬盘盘片、固态NAND闪存等)以及控制到和来自物理介质的访问的一个或多个组件(例如,微控制器、微处理器等)。在一些实施例中,可以将解码器和检测器实现在微控制器或微处理器中。在一些实施例中,可以将检测器和解码器实现为独立专用集成电路(ASIC)或现场可编程门阵列(FPGA)。在此实施例中,驱动器处的微控制器或处理器可以利用ASIC/FPGA来执行本文中所讨论的解码操作。
图4是图示根据本公开的一些实施例的用于利用嵌入有本地码的全局码进行迭代消息传递解码的方法的流程图。
在步骤402中,该方法从给定驱动器中检索码字。如上所述,码字可以包括使用一遍RS编码过程所编码的码字。在此过程中数据进入RS编码***并且由RS编码器顺序地逐阶段处理,直到被写入到驱动器为止。
和当前***对比,图4中的方法不使用硬判决解码方案而是相反利用在本文中更详细地描述的软信息迭代解码机制。
在步骤404中,该方法为解码过程初始化软信息。在一个实施例中,初始化软信息包括提取与在步骤402中读取的码字相关联的初始置信度水平。在一个实施例中,在步骤402中读取的码字可以包括与每个返回的符号相关联的LLR。也就是说,该方法接收所检索到的码字中的每个符号(例如,A1B1C1D1P1)的置信度水平(在0与1之间)。
在步骤406中,该方法运行本地解码过程以演化初始软信息。在一个实施例中,本地解码过程包括用于对初始软信息执行信任传播的迭代消息传递算法。如本领域中已知的,该方法可以利用Tanner图或其他结构来在比特节点之间传递消息并且检查与由方法使用的给定LDPC码相关联的奇偶校验消息的节点。
在一个实施例中,该方法可以执行步骤406直到每个符号的软信息超过预定义阈值为止。可替换地,该方法可以重新执行步骤406直到每个符号的软信息等于一为止。可替换地,或者与上文相结合地,该方法可以执行步骤406直到已经达到预定义时段或迭代次数为止。
这时,该方法已生成码字A1B1C1D1以及该码字中的每个符号的一组LLR。每个驱动器然后可以将码字和LLR发送到RS解码器以用于进一步处理。
在步骤408中,该方法级联每个码字的部分以重组原始RS编码的码字(例如,如图3中所图示的A1A2A3A4)。
如图所示,在给定驱动器处执行步骤402-406,并且可以在多个驱动器上并行执行步骤402-406。步骤402-406中的处理的结果被发送到执行步骤408-412的全局RS解码器。
在步骤410中,该方法通过所接收到的软信息来对经重新级联的码字的码字符号进行排序。如上所述,在一个实施例中,软信息包括介于零与一之间的一组LLR。因此,在步骤410中,该方法对十进制LLR值进行排序。
在步骤412中,该方法擦除具有低软信息值的符号。
如上所述,低软信息值(例如,低LLR)指示由单独的驱动器中的LDPC解码器执行的解码过程可以表示不正确的符号。因此,在步骤412中,该方法移除具有低软信息值的那些符号,从而仅保持具有高LLR值的那些符号。在所图示的实施例中,低软信息值的擦除与传统擦除解码方案中的值的擦除类似。因此,在一些实施例中,该方法可以试图使用RS解码器和码字的比特(包括奇偶校验比特)来重建已擦除的码字符号。
如图4中所图示的,该方法可以在多次迭代中重复步骤402-412。也就是说,在一个实施例中,可以将经RS解码的码字发送回到每个驱动器中的LDPC解码器。在一个实施例中,该方法可以再次对码字的符号进行分段。在本文中进一步描述图4中所图示的方法的迭代性质的细节。
图5是图示根据本公开的一些实施例的全局迭代解码***的框图。该***包括多个驱动器(502A-502D)、时分调度器(506)和迭代解码器(508)。
在一个实施例中,给定驱动器(例如,502A)包括如先前所描述的存储设备。除了支持数据的存储的硬件之外,驱动器还包括用于以支持对存储在驱动器上的编码数据进行本地解码的硬件和/或软件。在所图示的实施例中,给定驱动器(502A)包括LDPC解码器(504A)和MAP或SOVA检测器(504B)。如本文中所使用的,“MAP”检测器指代最大后验检测器并且“SOVA”检测器指代软输出维特比算法检测器。
在一些实施例中,每个驱动器可以仅使用SOVA检测器。如本领域中已知的,SOVA检测器利用软信息维特比算法来标识通过维特比网格对码字进行解码的路径。SOVA检测器计算具有最大正确性概率的路径。沿着路径针对每个步骤计算软输出。在替代实施例中,可以使用MAP检测器。一般而言,MAP检测器与SOVA检测器类似,而主要差异是MAP检测器利用后向状态处理器。一般而言,MAP处理器选择使接收到的码字是正确的后验概率最大化的索引。
在一些实施例中,可以一起使用SOVA和MAP检测器。在此实施例中,首先由SOVA检测器在多次迭代中处理码字。在处理之后,具有错误的帧被转发到MAP检测器以用于进一步处理。在一些实施例中,SOVA检测器的软输出被用作MAP检测器的先验输入。
如图所示,MAP/SOVA检测器(504B)和LDPC解码器(504A)以环形连接。在一个实施例中,MAP/SOVA检测器(504B)的输出被作为输入馈送到LDPC解码器(504A),并且反之亦然。作为一个示例,在迭代的前半部分期间,MAP/SOVA检测器(504B)接收码字并且试图计算该码字中的每个符号的LLR。在第一次迭代中,这些LLR可以是基于信道观察结果的。在迭代的后半部分期间,MAP/SOVA检测器(504B)将码字和LLR转发到LDPC解码器(504A),所述LDPC解码器(504A)执行许多子迭代以对码字进行解码。如果解码成功,则驱动器可以结束解码过程。可替换地,在第二次迭代中,LDPC解码器(504A)将部分地解码的码字转发回到MAP/SOVA检测器(504B)以用于进一步处理。由LDPC解码器(504A)所计算出的LLR可以被用作第二检测阶段期间的信道观察结果。
如图所示,可以利用MAP/SOVA检测器(504B)和LDPC解码器(504A)来使***的吞吐量加倍。具体地,MAP/SOVA检测器(504B)和LDPC解码器(504A)中的每一个均可以在给定迭代期间对唯一处理对象操作。因此,每次迭代涉及同时地处理两个处理对象。
时分调度器(506)协调解码的码字从驱动器(502A-502D)到迭代解码器(508)的数据转移。转移的精确定时的细节在本文中被更全面地讨论并且通过引用整体地并入在本文中。一般而言,如上所述,每个驱动器中的解码***的输入是具有潜在错误的接收到的码字。驱动器级解码子***的输出是具有针对每个符号的LLR的解码的码字。
在一个实施例中,图5中所图示的***可以进一步包括被配置为对多个用户数据项进行编码以获得表示这些用户数据项的一组编码符号的一遍里德-所罗门编码器。在此实施例中,时分调度器(506)可以被进一步配置为将用户数据项的编码符号交织以生成多个交织码字,所述多个交织码字包括第一码字。时分调度器(506)可以进一步被配置为在对第一码字进行解码之前将第一码字发送到存储装置。
在一个实施例中,时分调度器(506)被配置为监视驱动器(502A-502D)和迭代解码器(508)的解码过程。在一个实施例中,一旦时分调度器(506)检测到驱动器(502A-502D)或迭代解码器(508)中的一个已完成解码(或者预定义解码窗口已期满),则时分调度器(506)交换正在由每个相应的组件处理的数据组。也就是说,时分调度器(506)将由迭代解码器(508)处理的数据组与由驱动器(502A-502D)处理的数据组交换。
附加地,时分调度器(506)经由饱和器(506A)可以被配置为更新在驱动器(502A-502D)与迭代解码器(508)之间的消息中传递的符号的置信饱和度。在所图示的实施例中,存储集群知道哪些数据组与每个驱动器(502A-502D)相关联,并且因此在对应的驱动器发生故障或者码字被确定为包括解码失败的情况下知道任何错误的位置。当失败的码字散布到多个其他伙伴码字中(例如,一个LDPC码字散布到多个RS码字中,或者一个RS码字还散布到多个LDPC码字中)时,根据码字的散布部分的起源和最后解码步骤的结果,可将某些符号标识为正确的或不正确的。如在上面且在此所描述的,正确的符号被指派给最大置信度以使下一个解码迭代加速。对于不正确的符号,已知的是位置,但是该位置处的正确值仍然是未知的。在这种情况下,表示当前符号的置信度的LLR被设置为零,这意味着此符号对其范围内的所有值而言具有相等的可能性。通过对LLR做这种重置,它还可使迭代解码加速以移除来自不正确的符号的负面影响。当在驱动器(502A-502D)与迭代解码器(508)之间传递软信息时,在消息传递期间基于前者解码结果调整符号。
迭代解码器(508)从驱动器(502A-502D)接收符号和LLR。迭代解码器(508)包括排序改组器(510A)和软信息解码器(510B)。在所图示的实施例中,软信息解码器(510B)可以包括软信息RS解码器或类似的解码器。一般而言,软信息解码器(510B)从时分调度器(506)接收符号并且使用由驱动器(502A-502D)生成的软信息来对这些符号进行解码。软解码的结果被发送到排序改组器(510A),所述排序改组器(510A)基于软信息对符号进行重新排序并且基于通过软信息表示的低置信度水平(即,LLR)标识应该被擦除的符号。
一般而言,软信息解码器(510B)和改组器(510A)的布置允许具有比硬解码器更高的置信度的解码过程。当要擦除的符号的数量超过由迭代解码器(508)使用的码(例如,RS码)的最小距离时,置信度是特别高的。具体地,来自驱动器(502A-502D)的软信息帮助那些最可能被删除然后解码的候选者的排序。例如,如果存在潜在不正确的m 1 个符号,但是擦除解码容量将纠正m 2 (其中m 2 < m 1 )个错误符号,则改组器(510A)被配置为挑选具有最低置信度的m 2 个符号,擦除它们,并且仅然后经由解码器(510B)执行软信息解码。
在一些实施例中,可能存在多个擦除候选者。在此实施例中,***被配置为对擦除的多个排列进行标识和擦除并且尝试每个排列以便解码。在一些实施例中,***可以设置预定义时间窗口以尝试排列。
图6是图示根据本公开的一些实施例的在驱动器级解码器与全局擦除解码器之间交换解码结果的图。
如图所示,迭代解码器(602)和驱动器解码器(604)并行操作。所图示的实施例图示每个解码器在时间1和时间2的处理。在操作中,所图示的过程继续直到解码成功或者码字不能被解码为止。
迭代解码器侧码字用字母下标(A、B、C、D)来表示,然而驱动器侧码字用数字下标(1、2、3和4)来表示。如先前所描述的,由迭代解码器(602)处理的码字包括用户数据的纠删码版本。相比之下,解码器侧码字包括从纠删码版本合成的交织码字。交织的细节被图示在图3中并且伴随图3的公开内容通过引用整体地并入在本文中。
在所图示的实施例中,“X”和“Y”被利用来图示由***处理的数据的分组。因此,迭代解码器侧码字X_A、X_B、X_C、X_D是驱动器侧码字X_1、X_2、X_3、X_4的非交织版本。类似地,驱动器侧码字Y_1、Y_2、Y_3和Y_4是迭代解码器侧码字Y_A、Y_B、Y_C和Y_D的交织版本。如图所示,由迭代解码器(602)进行解码与驱动器侧解码器(604)并行发生,然而每侧对数据的不同分组进行操作。
在每个驱动器1-4内,LDPC turbo解码例行程序(在上文更详细地讨论)使用例如先前所讨论的MAP/SOVA解码器和LDPC本地解码器子***来对两个码字(被表示为Y_1_p1和Y_1_p2)起作用。如上所述,此子***像序列(606)中所图示的那样迭代地操作。在此序列(606)中,图示了仅对六次迭代进行解码,然而可以在实际的实践中利用更多或更少的迭代。一般而言,序列(606)的迭代次数可以被配置为与序列(608)的迭代次数匹配。值得注意的是,序列(606)包括两行操作。顶行可以对应于由MAP/SOVA检测器进行处理,然而底行对应于由LDPC解码器进行处理。如图所示,码字(Y_1_p1、Y_1_p2)重复地交替以便像图5中所描述的那样处理。
该图附加地图示表示与序列(606)并行执行的迭代解码试验的序列(608)。在一个实施方案中,序列(608)包括许多试验。每个试验表示码字(X_A),其中码字中的一个或多个符号被擦除(例如,经由改组器)并且基于软信息解码器(例如,软信息RS解码器)。解码的结果被存储并且跨越符号具有最高置信度的试验被用作迭代解码器(602)的输出。如图所示,可以串行执行在迭代解码器侧的处理,然而在驱动器侧的处理被并行执行。在处理在时间1中完成之后,***像在时间2中所图示的那样交换数据组X和Y。
图7图示根据本公开的一些实施例的用于使用软信息解码输出来执行擦除解码的方法。
在步骤702中,该方法接收给定码字中的多个码符号的LLR数据。在步骤702中,该方法还可以连同LLR一起接收码字符号。例如,该方法可以接收具有符号S1至S8的码字和通过LLR1至LLR8所表示的一组LLR。如上所述,这些符号先前通过单独的驱动器处的本地LDPC解码来解码。因为符号是交织的,所以该方法可以从第一驱动器接收符号S1和S2(以及LLRLLR1和LLR2),从第二驱动器接收S3和S4(以及LLR LLR3和LLR4)从第三驱动器接收S5和S6(以及LLR LLR5和LLR6),并且从第四驱动器接收S7和S8(以及LLR LLR7和LLR8)。
在一个实施例中,在步骤702中该方法从自每个驱动器接收到的单独的符号重建码字。在一个实施例中,操作该方法的存储集群包括存储在每个驱动器上的符号的索引并且使用此索引来重新级联符号。
在步骤704中,该方法基于LLR对所接收到的符号进行排序。如本领域中已知的,给定LLR包括连续值。因此,在步骤704中该方法通过LLR以升序或降序对符号进行排序。
在步骤706中,该方法识别具有高LLR的许多比特并且将LLR的符号暂时地授予给所识别的符号。在一个实施例中,授予LLR的符号的步骤包括识别出符号不包括错误。因此,在步骤706中该方法将具有高LLR的符号暂时地设置为被适当地解码,从而具有最大置信度。
在步骤708中,该方法擦除具有低LLR值的那些符号。在一个实施例中,擦除符号的步骤包括将低LLR符号的置信度水平设置为最小置信度水平。在其他实施例中,该方法可以简单地丢弃用于解码的符号。在所图示的实施例中,符号的擦除可以是暂时的。
在步骤710中,该方法对码字进行解码。如上所述,该方法可以利用迭代RS解码器来对包含一个或多个擦除的符号的码字进行解码。在一个实施例中,解码可以成功。在那种情况下方法可以直接地进行到步骤714。
在步骤712中,该方法确定是否仍有一个或多个试验要执行。在一些实施例中,试验次数可以仅被成功解码限制。在其他实施例中,该方法可以利用固定数量的试验来执行。一般而言,试验指代具有在步骤706中授予的符号的符号以及在步骤708中擦除的符号的排列。以这种方式,该方法试图对包含擦除的符号的码字的各种排列进行解码。如本领域中已知的,LLR值表示可能的置信度。因此,取决于解码的状态,给定高或低LLR可以是错误的。因此,该方法试图在给定时间窗内尝试尽可能多的低和高LLR的排列。以这种方式,该方法可补偿驱动器级处的部分解码,从而减少每个驱动器处的迭代次数。
一旦方法确定解码是成功的,或者不再有迭代,则该方法进行到步骤714。
在步骤714中,该方法为在步骤710中解码的符号设置最大置信度值。在一些实施例中,如果该方法不能对给定码字的所有符号进行解码,则该方法可以用在步骤710中的迭代解码期间生成的LLR更新所接收到的LLR。
在步骤716中,该方法将经解码的符号和LLR发送到驱动器侧解码器。如先前所描述的,驱动器侧解码器可以利用在步骤710中解码的符号并且使用经更新的LLR来重新执行先前所讨论的MAP/SOVA检测器和LDPC解码过程。
如先前图中所图示的,在迭代解码器侧的码字与驱动器侧码字正交。因此,在任何一侧的任何收敛改进另一侧的性能。例如,如果驱动器侧解码***不能可靠地对符号A1进行解码(作为码字A1B1C1D1的一部分),则迭代解码器侧解码***可以能够对码字A1A2A3A4进行解码。在这种情况下,可以将符号A1的置信度设置为最大值。因此,当驱动侧解码***试图再次对A1B1C1D1进行解码时,驱动侧解码***可以将A1的置信度设置为最大值。相反地,如果驱动器侧解码***收敛于驱动器侧码字,则可以在由迭代解码器进行处理期间将那些符号设置为最大置信度水平。
出于本公开的目的,模块是软件、硬件或固件(或其组合)***、过程或功能性,或(在有或没有人类互动或增强的情况下)执行或者方便本文中所描述的过程、特征和/或功能的其组件。模块可包括子模块。模块的软件组件可以被存储在计算机可读介质上用以由处理器执行。模块可以与一个或多个服务器成一体,或者由一个或多个服务器加载并执行。可以将一个或多个模块分组到引擎或应用中。
本领域的技术人员将认识到,本公开的方法和***可以被以许多方式实现并且因此将不受前述示例性实施例和示例限制。换句话说,由单个或多个组件在硬件和软件或固件的各种组合中执行的功能元件以及单独的功能可以分布在客户端级或服务器级或两者下的软件应用当中。在这方面,可以将本文中所描述的不同的实施例的任何数量的特征组合成单个或多个实施例,并且具有少于或多于本文中所描述的所有特征的替代实施例是可能的。
功能性也可以整个地或部分地以现在已知的或将变得已知的方式分布在多个组件当中。因此,无数的软件/硬件/固件组合可以实现本文中所描述的功能、特征、接口和偏好。此外,本公开的范围涵盖用于执行所描述的特征和功能和接口的常规已知的方式,以及可以像现在和此后由本领域的技术人员会理解的那样对本文中所描述的硬件或软件或固件组件做出的那些变化和修改。
此外,作为示例提供了在本公开中作为流程图所呈现和描述的方法的实施例,以便提供对本技术的更完整的理解。所公开的方法不限于本文中所呈现的操作和逻辑流程。设想了各种操作的顺序被更改并且被描述为较大操作的一部分的子操作被独立地执行的替代实施例。
虽然已经出于本公开的目的描述了各种实施例,但是此类实施例不应该被视为将本公开的教导限于那些实施例。可以对上述的元件和操作做出各种改变和修改以获得保持在本公开中所描述的***和过程的范围内的结果。

Claims (20)

1.一种用于数字解码的方法,所述方法包括以下步骤:
在存储设备处使用检测器和解码器对第一码字进行解码,所述第一码字包括来自第一组码字的一组符号;
经由所述解码为所述第一码字中的每个符号指派一组置信度水平;
由所述存储设备将所述置信度水平发送到迭代解码器;
由所述迭代解码器基于该组置信度水平生成第二码字,所述第二码字排除该组符号中的至少一个符号;
由所述迭代解码器使用擦除解码器来对所述第二码字进行迭代地解码;以及
由所述迭代解码器将由所述擦除解码器生成的软信息发送到所述存储设备用以由所述存储设备进行后续解码。
2.根据权利要求1所述的方法,该方法进一步包括以下步骤:使用一遍里德-所罗门解码器来对多个用户数据项进行编码,以获得表示所述用户数据项的一组编码符号。
3.根据权利要求2所述的方法,该方法进一步包括以下步骤:
对该组编码符号进行交织以生成多个交织码字,所述多个交织码字包括所述第一码字;以及
在对所述第一码字进行解码之前将所述第一码字发送到所述存储设备。
4.根据权利要求1所述的方法,所述在存储设备处使用检测器和解码器对第一码字进行解码的步骤包括由所述检测器和所述解码器执行解码的多次迭代,所述解码器的输出向所述检测器提供输入并且所述检测器的输出向所述解码器提供输入。
5.根据权利要求4所述的方法,所述检测器包括最大后验检测器或软输出维特比算法检测器,所述解码器包括低密度奇偶校验解码器。
6.根据权利要求5所述的方法,所述检测器和解码器并行操作。
7.根据权利要求1所述的方法,所述基于该组置信度水平生成第二码字包括以下步骤:
对该组符号进行交织以形成所述第二码字;以及
基于该组置信度水平对该组符号进行排序,该组置信度水平包括由所述检测器和解码器生成的对数似然比值。
8.根据权利要求1所述的方法,该方法进一步包括以下步骤:
在对所述第二码字进行迭代地解码之后更新与所述第二码字的符号相关联的所述置信度水平;
将经更新的置信度水平发送到所述检测器和解码器;以及
在由所述检测器和解码器执行的后续解码过程期间使用经更新的置信度水平。
9.根据权利要求1所述的方法,所述使用擦除解码器来对所述第二码字进行迭代地解码的步骤包括执行解码的多个试验,每个试验对应于所述第二码字中的擦除的符号的排列。
10.一种用于数字解码的***,所述***包括:
包括检测器和解码器的存储设备,所述存储设备被配置为使用所述检测器和解码器对第一码字进行解码,所述第一码字包括来自第一组码字的一组符号,并且经由所述解码为所述第一码字中的每个符号指派一组置信度水平;
时分调度器,所述时分调度器被配置为将所述置信度水平发送到迭代解码器;以及
迭代解码器,所述迭代解码器被配置为:
基于该组置信度水平生成第二码字,所述第二码字排除该组符号中的至少一个符号,
使用擦除解码器来对所述第二码字进行迭代地解码,并且
将由所述擦除解码器生成的软信息发送到所述存储设备用以由所述存储设备进行后续解码。
11.根据权利要求10所述的***,该***进一步包括:一遍里德-所罗门编码器,所述一遍里德-所罗门编码器被配置为对多个用户数据项进行编码,以获得表示所述用户数据项的一组编码符号。
12.根据权利要求11所述的***,所述时分调度器被进一步配置为:
对该组编码符号进行交织以生成多个交织码字,所述多个交织码字包括所述第一码字;以及
在对所述第一码字进行解码之前将所述第一码字发送到所述存储设备。
13.根据权利要求10所述的***,所述存储设备被进一步配置为由所述检测器和所述解码器执行解码的多次迭代,所述解码器的输出向所述检测器提供输入并且所述检测器的输出向所述解码器提供输入。
14.根据权利要求13所述的***,所述检测器包括最大后验检测器或软输出维特比算法检测器,并且所述解码器包括低密度奇偶校验解码器。
15.根据权利要求14所述的***,所述检测器和解码器并行操作。
16.根据权利要求10所述的***,所述迭代解码器被进一步配置为:
对该组符号进行交织以形成所述第二码字;并且
基于该组置信度水平对该组符号进行排序,该组置信度水平包括由所述检测器和解码器生成的对数似然比值。
17.根据权利要求10所述的***,所述时分调度器被进一步配置为:
在对所述第二码字进行迭代地解码之后更新与所述第二码字的符号相关联的所述置信度水平;
将经更新的置信度水平发送到所述检测器和解码器,经更新的置信度水平在由所述检测器和解码器执行的后续解码过程期间使用。
18.根据权利要求10所述的***,所述迭代解码器被进一步配置为执行解码的多个试验,每个试验对应于所述第二码字中的擦除的符号的排列。
19.一种存储设备,所述存储设备包括:
检测器,所述检测器被配置为:
标识通过维特比网格对接收到的第一码字进行解码的至少一条路径,所述第一码字包括来自第一组码字的一组符号;并且
沿着所述路径针对每个步骤计算软输出;以及
解码器,所述解码器被配置为:
从所述检测器接收所述软输出,
使用所述第一码字和由所述检测器生成的所述软输出来执行迭代解码过程,
生成与所述第一码字的每个符号相关联的一组置信度值,并且
将该组置信度值发送到迭代解码器;
所述存储设备接收所述迭代解码器发送的软信息用以进行后续解码,所述软信息通过以下步骤获得:
由所述迭代解码器基于该组置信度值生成第二码字,所述第二码字排除该组符号中的至少一个符号;
由所述迭代解码器使用擦除解码器来对所述第二码字进行迭代地解码;以及
由所述擦除解码器生成所述软信息。
20.根据权利要求19所述的存储设备,所述检测器包括最大后验检测器或软输出维特比算法检测器,所述解码器包括低密度奇偶校验解码器。
CN201910012248.2A 2018-02-06 2019-01-07 为了容错改进以时分方式利用嵌入有本地码的全局码进行迭代消息传递解码 Active CN110119328B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/889,458 US10530395B2 (en) 2018-02-06 2018-02-06 Iterative message-passing decoding with global code embedded with local code in time-division manner for fault tolerance improvement
US15/889,458 2018-02-06

Publications (2)

Publication Number Publication Date
CN110119328A CN110119328A (zh) 2019-08-13
CN110119328B true CN110119328B (zh) 2024-02-09

Family

ID=67475753

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910012248.2A Active CN110119328B (zh) 2018-02-06 2019-01-07 为了容错改进以时分方式利用嵌入有本地码的全局码进行迭代消息传递解码

Country Status (2)

Country Link
US (1) US10530395B2 (zh)
CN (1) CN110119328B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10872013B2 (en) * 2019-03-15 2020-12-22 Toshiba Memory Corporation Non volatile memory controller device and method for adjustment

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080235561A1 (en) * 2007-03-23 2008-09-25 Quantum Corporation Methodology and apparatus for soft-information detection and LDPC decoding on an ISI channel
CN102708862A (zh) * 2012-04-27 2012-10-03 苏州思必驰信息科技有限公司 触控辅助的实时语音识别***及其同步解码方法
CN103188035A (zh) * 2011-12-30 2013-07-03 清华大学 迭代解映射解码方法和***
CN105095178A (zh) * 2014-05-09 2015-11-25 安徽科大讯飞信息科技股份有限公司 实现文本语义容错理解的方法及***

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1954501B (zh) 2003-10-06 2010-06-16 数字方敦股份有限公司 通过通信信道接收从源发射的数据的方法
US7549105B2 (en) 2005-01-10 2009-06-16 Broadcom Corporation Construction of irregular LDPC (low density parity check) codes using RS (Reed-Solomon) codes or GRS (generalized Reed-Solomon) code
US7536629B2 (en) 2005-01-10 2009-05-19 Broadcom Corporation Construction of LDPC (Low Density Parity Check) codes using GRS (Generalized Reed-Solomon) code
US7447981B2 (en) 2005-04-01 2008-11-04 Broadcom Corporation System correcting random and/or burst errors using RS (Reed-Solomon) code, turbo/LDPC (Low Density Parity Check) code and convolutional interleave
US7716553B2 (en) 2005-07-13 2010-05-11 Leanics Corporation System and method for designing RS-based LDPC code decoder
WO2007089165A1 (en) 2006-01-31 2007-08-09 Intel Corporation Iterative decoding of concatenated low-density parity-check codes
US8418023B2 (en) 2007-05-01 2013-04-09 The Texas A&M University System Low density parity check decoder for irregular LDPC codes
US8166364B2 (en) 2008-08-04 2012-04-24 Seagate Technology Llc Low density parity check decoder using multiple variable node degree distribution codes
US20100241923A1 (en) 2009-03-17 2010-09-23 Broadcom Corporation Communication device employing LDPC (Low Density Parity Check) coding with Reed-Solomon (RS) and/or binary product coding
US8707144B2 (en) 2011-10-17 2014-04-22 Lsi Corporation LDPC decoder with targeted symbol flipping
US8775896B2 (en) 2012-02-09 2014-07-08 Lsi Corporation Non-binary LDPC decoder with low latency scheduling
US9048870B2 (en) 2012-11-19 2015-06-02 Lsi Corporation Low density parity check decoder with flexible saturation
US9130589B2 (en) 2012-12-19 2015-09-08 Avago Technologies General Ip (Singapore) Pte. Ltd. Low density parity check decoder with dynamic scaling
US9077378B2 (en) 2013-01-31 2015-07-07 Lsi Corporation Integrated-interleaved low density parity check (LDPC) codes
US9048867B2 (en) 2013-05-21 2015-06-02 Lsi Corporation Shift register-based layered low density parity check decoder
US20160197703A1 (en) 2013-09-10 2016-07-07 Electronics And Telecommunications Research Institute Ldpc-rs two-dimensional code for ground wave cloud broadcasting
US9559725B1 (en) 2013-10-23 2017-01-31 Seagate Technology Llc Multi-strength reed-solomon outer code protection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080235561A1 (en) * 2007-03-23 2008-09-25 Quantum Corporation Methodology and apparatus for soft-information detection and LDPC decoding on an ISI channel
CN103188035A (zh) * 2011-12-30 2013-07-03 清华大学 迭代解映射解码方法和***
CN102708862A (zh) * 2012-04-27 2012-10-03 苏州思必驰信息科技有限公司 触控辅助的实时语音识别***及其同步解码方法
CN105095178A (zh) * 2014-05-09 2015-11-25 安徽科大讯飞信息科技股份有限公司 实现文本语义容错理解的方法及***

Also Published As

Publication number Publication date
US20190245563A1 (en) 2019-08-08
CN110119328A (zh) 2019-08-13
US10530395B2 (en) 2020-01-07

Similar Documents

Publication Publication Date Title
TWI594583B (zh) 硬決定輸入之一般化低密度同位檢查軟解碼
US10146618B2 (en) Distributed data storage with reduced storage overhead using reduced-dependency erasure codes
KR101422050B1 (ko) 셀 당 멀티­비트인 플래시 메모리에서의 오류 보정 방법
US8924815B2 (en) Systems, methods and devices for decoding codewords having multiple parity segments
US9048876B2 (en) Systems, methods and devices for multi-tiered error correction
CN109873645B (zh) 用于多个字线失败的软芯片猎杀恢复
US9755665B1 (en) Systems and methods for an iterative decoding scheme
US20140223255A1 (en) Decoder having early decoding termination detection
WO2016112857A1 (zh) Ldpc码编码器和译码器
US11108407B1 (en) Performance of a bit flipping (BF) decoder of an error correction system
CN108932177B (zh) 具有可变长度分量的广义低密度奇偶校验码
JP2010205328A (ja) 半導体メモリ装置
US10205469B2 (en) Low latency soft decoder architecture for generalized product codes
US10090862B2 (en) Hybrid soft decoding algorithm for multiple-dimension TPC codes
US10157097B2 (en) Redundant bytes utilization in error correction code
US20190089384A1 (en) Memory system
CN113748414A (zh) 错误校正码结构
JP2019160014A (ja) メモリシステム
US9250994B1 (en) Non-binary low-density parity check (LDPC) decoding using trellis maximization
KR102355082B1 (ko) 채널 편파 코드의 연속 제거 리스트 디코딩을 위한 효율적인 생존 메모리 아키텍처
JP2022124682A (ja) メモリシステム
JP2020046871A (ja) メモリシステム
KR101913900B1 (ko) 조기 디코딩 종료 검출을 갖는 디코더
CN110119328B (zh) 为了容错改进以时分方式利用嵌入有本地码的全局码进行迭代消息传递解码
US11664821B1 (en) Error floor performance of a bit flipping decoder through identifying unreliable check nodes

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
GR01 Patent grant
GR01 Patent grant