CN117632574A - 存储器控制器及解码管线的数据控制方法 - Google Patents

存储器控制器及解码管线的数据控制方法 Download PDF

Info

Publication number
CN117632574A
CN117632574A CN202211096700.6A CN202211096700A CN117632574A CN 117632574 A CN117632574 A CN 117632574A CN 202211096700 A CN202211096700 A CN 202211096700A CN 117632574 A CN117632574 A CN 117632574A
Authority
CN
China
Prior art keywords
memory
stage
variable node
node unit
decoding
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
Application number
CN202211096700.6A
Other languages
English (en)
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.)
Silicon Motion Inc
Original Assignee
Silicon Motion Inc
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 Silicon Motion Inc filed Critical Silicon Motion Inc
Publication of CN117632574A publication Critical patent/CN117632574A/zh
Pending legal-status Critical Current

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/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/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/1128Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
    • 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/1145Pipelined decoding at code word level, e.g. multiple code words being decoded simultaneously
    • 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/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code

Landscapes

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

Abstract

本发明涉及一种存储器控制器及解码管线的数据控制方法。其中,存储器控制器用于一数据储存装置,存储器控制器包括:一存储器索引控制电路,用以控制一变数节点存储器的数据存取;一解码器,包括一解码管线以执行LDPC解码流程中的解码阶段。在数据储存装置开机后,解码器系经由存储器索引控制电路先以第一顺序从变数节点存储器读取多笔第一码字以进行LDPC解码。因应于解码器判断第一码字中的特定码字解码失败,解码器重置并经由存储器索引控制电路以第二顺序从变数节点存储器读取多笔第二码字以进行LDPC解码,其中第一顺序与第二顺序不同。

Description

存储器控制器及解码管线的数据控制方法
技术领域
本发明有关于数据存取,特别是有关于一种存储器控制器及解码管线的数据控制方法。
背景技术
随着半导体技术的进步,低密度同位元检查(low-density parity-check,LDPC)码在近年来已可用超大型积体(very-large-scale integration,VLSI)电路所实现,且广泛应用于数位通信领域(例如包括无线通信及光纤通信)以及数据传输领域(例如用于数据储存装置,如快闪存储器、固态硬碟)以做为错误更正码(error correction code,ECC)。
低密度同位元检查解码器使用具有同位元(parity bit)的线性错误校正码来进行解码,其中同位元会提供用以验证接收到的码字(codeword)的同位元方程序给LDPC解码器。举例来说,低密度同位元查核码可为一具有固定长度的二进位码,其中所有的符元(symbol)相加会等于零。
在数据的编码过程中,所有的数据位元会被重复执行并且被传送至对应的编码器,其中每个编码器会产生一同位符元(parity symbol)。码字由k个信息位元(information digit)以及r个检查位元(check digit)所组成。若码字总共有n位元,则表示k=n-r。上述码字可用一同位元检查矩阵来表示,其中该同位元检查矩阵具有r列(表示方程序的数量)以及n行(表示位元数),如图1所示。这些码之所以被称为“低密度”是因为相较于同位元检查矩阵中位元0的数量而言,位元1的数量相对的少。在解码过程中,每次的同位元检查皆可视为一同位元查核码,并随后与其他同位元查核码一起进行交互检查(cross-check),其中解码会在检查节点(check node)进行,而交互检查会在变数节点(variable node)进行。
低密度同位元检查解码器支持三种模式:硬判定硬解码(hard decision harddecoding)、软判定硬解码(soft decision soft decoding),以及软判定软解码(softdecision hard decoding)。图1A为同位元检查矩阵H的示意图。图1B为坦纳图(TannerGraph)的示意图。如图1A所示,在同位元检查矩阵H的每一列可形成一检查节点,例如分别为检查节点C1、C2、C3及C4。在同位元检查矩阵H的每一行可形成一变数节点,例如分别为变数节点V1、V2、V3、V4、V5、V6及V7。
坦纳图为另一种表示码字的方式,并且可用于解释当使用一位元翻转(bitflipping)演算法时,低密度同位元检查解码器的一些关于硬判定软解码的操作。
如图1B所示,在坦纳图中,方形节点C1~C4所表示的检查节点代表同位元(paritybit)的数量,且圆形节点V1~V7所表示的变数节点(variable node)为一码字中位元的数量。如果一特定方程序与码符元(code symbol)有关,则对应的检查节点与变数节点之间会以连线来表示。被估测的资讯会沿着这些连线来传递,并且于节点上以不同的方式组合。
当开始进行LDPC解码时,变数节点将发送一估测资讯(estimate)至所有连线上的检查节点,其中这些连线包含被认为是正确的位元。接着,每个检查节点会依据对所有其他的连接的估测(connected estimate)来针对每一变数节点进行新的估测,并且将新的估测资讯传回至变数节点。新的估测基于:同位元检查方程序迫使所有的变数节点连接至一特定检查节点,以使总和为零。
这些变数节点会接收新的估测资讯以及使用一多数规则(majority rule)(亦即硬判定),来判断所传送的原始位元的数值是否正确。若判断原始位元的数值不正确,该原始位元会被翻转(flipped)。该翻转后的位元接着会被传回至该些检查节点,且上述步骤会被迭代地执行一预定次数,直到符合这些检查节点的同位元检查方程序。若有符合这些同位元检查方程序(亦即检查节点所计算的数值符合接收自变数节点的数值),则可启用提前终止(early termination),这会使得系统在最大迭代次数达到之前就结束解码程序。
该些同位元检查限制由进行一征状检查(syndrome check)来实施。一个有效的码字将会符合方程序:H.CT=S=0,其中H为同位元检查矩阵、C为硬判定码字(hard decisioncodeword),且S为征状(syndrome)。当S等于零时,表示解码程序已完成,且不需要更进一步的资讯。一般来说,硬判定以及征状检查会在迭代期间执行,其中一非零(non-zero)征状表示有奇性(odd parity)存在,并且需要再执行新的解码迭代。
传统的位元翻转LDPC解码器具有一解码管线(decoding pipeline)以将目前所计算出的征状值更新至变数节点单元以进行转置及加总等运算。然而,变数节点单元容易因为解码管线的延迟而造成在执行位元翻转演算法的决策时常常非使用最新的征状值而造成错误判断,且可能导致解码器进入陷阱状态(trapping status)而造成解码器的错误底限(error floor)增加。
发明内容
因此,本发明提出一种存储器控制器及解码管线的数据控制方法以解决上述问题。
本发明提供一种存储器控制器,用于一数据储存装置,其中该存储器控制器所执行的低密度同位元查核(low density parity-check,LDPC)解码流程依序包括一初始阶段、一解码阶段及一输出阶段,该存储器控制器包括:一存储器索引控制电路,用以控制一变数节点存储器的数据存取;一解码器,包括一解码管线以执行该LDPC解码流程中的该解码阶段,其中,在该数据储存装置开机后,该解码器经由该存储器索引控制电路先以第一顺序从该变数节点存储器读取多笔第一码字以进行LDPC解码,其中,因应于该解码器判断该等第一码字中的特定码字解码失败,该解码器重置并经由该存储器索引控制电路以第二顺序从该变数节点存储器读取多笔第二码字以进行LDPC解码,其中该第一顺序与该第二顺序不同。
在一些实施例中,该解码器包括一检查节点单元及一变数节点单元,且该解码管线依序包括第一阶段、第二阶段、第三阶段及第四阶段,且该第一阶段为该变数节点单元透过该存储器索引控制电路从该变数节点存储器读取目前时脉周期所需的输入码字的读取操作,该第二阶段为该变数节点单元对已读取的一或多个输入码字的运算阶段,该第三阶段为该检查节点单元对已读取的该一或多个输入码字的运算阶段,且该第四阶段为该检查节点单元透过该存储器索引控制电路将该检查节点单元在该目前时脉周期所计算出的征状值写入至该变数节点存储器的写入操作。
在一些实施例中,该存储器索引控制电路更提供相应于该第一顺序或该第二顺序的LDPC参数以供该变数节点单元及该检查节点单元使用。
在一些实施例中,在该解码阶段,于每次LDPC解码迭代的期间:该检查节点单元由该变数节点单元取得一码字差值,并依据该码字差值计算该征状值;该变数节点单元执行:依据来自该检查节点单元的该征状值以决定一征状权重;从该变数节点存储器取得一先前LDPC解码迭代所产生的一先前码字,而不从一通道值存储器取得从一快闪存储器所读取的一通道值;依据该征状权重执行一位元翻转(bit-flipping)演算法以翻动该先前码字中之一或多个码字位元以产生一更新码字;以及将该更新码字减去该先前码字以产生该码字差值。
在一些实施例中,该第一顺序为递增顺序,且该第二顺序为先偶数再奇数。
在一些实施例中,在该初始阶段,该变数节点单元是从该通道值存储器取得从该快闪存储器所读取的该通道值,并将该通道值传送至该检查节点单元以计算出该征状值。
在一些实施例中,在该解码阶段,因应于该变数节点单元判断该征状值等于0或迭代次数已达到一上限值,该变数节点单元结束该解码阶段并进入该输出阶段。
本发明更提供一种解码管线的数据控制方法,应用于一数据储存装置,其中该数据储存装置包括一存储器控制器及一快闪存储器,且该快闪存储器的数据读取过程包括一低密度同位元查核(low-density parity-check,LDPC)解码过程,且该存储器控制器包括一存储器索引控制电路及一解码器,且该LDPC解码过程包括一初始阶段、一解码阶段及一输出阶段,该方法包括:在该数据储存装置开机后,利用该解码器经由该存储器索引控制电路先以第一顺序从该变数节点存储器读取多笔第一码字以进行LDPC解码;因应于该解码器判断该等第一码字中的特定码字解码失败,将该解码器重置并利用该解码器经由该存储器索引控制电路以第二顺序从该变数节点存储器读取多笔第二码字以进行LDPC解码,其中该第一顺序与该第二顺序不同。
在一些实施例中,该解码器包括一检查节点单元及一变数节点单元,且该解码管线依序包括第一阶段、第二阶段、第三阶段及第四阶段,且该第一阶段为该变数节点单元透过该存储器索引控制电路从该变数节点存储器读取目前时脉周期所需的输入码字的读取操作,该第二阶段为该变数节点单元对已读取的一或多个输入码字的运算阶段,该第三阶段为该检查节点单元对已读取的该一或多个输入码字的运算阶段,且该第四阶段为该检查节点单元透过该存储器索引控制电路将该检查节点单元在该目前时脉周期所计算出的征状值写入至该变数节点存储器的写入操作。
在一些实施例中,该存储器索引控制电路更提供相应于该第一顺序或该第二顺序的LDPC参数以供该变数节点单元及该检查节点单元使用。
在一些实施例中,该方法还包括:在该解码阶段,于每次LDPC解码迭代的期间:利用该检查节点单元由该变数节点单元取得一码字差值,并依据该码字差值计算该征状值;利用该变数节点单元执行:依据来自该检查节点单元的该征状值以决定一征状权重;从该变数节点存储器取得一先前LDPC解码迭代所产生的一先前码字,而不从一通道值存储器取得从一快闪存储器所读取的一通道值;依据该征状权重执行一位元翻转(bit-flipping)演算法以翻动该先前码字中之一或多个码字位元以产生一更新码字;以及将该更新码字减去该先前码字以产生该码字差值。
在一些实施例中,该第一顺序为递增顺序,且该第二顺序为先偶数再奇数。
在一些实施例中,该方法还包括:在该初始阶段,利用该变数节点单元从该通道值存储器取得从该快闪存储器所读取的该通道值,并将该通道值传送至该检查节点单元以计算出该征状值。
在一些实施例中,该方法还包括:在该解码阶段,因应于该变数节点单元判断该征状值等于0或迭代次数已达到一上限值,利用该变数节点单元结束该解码阶段并进入该输出阶段。
附图说明
图1A为同位元检查矩阵的示意图。
图1B为坦纳图(Tanner Graph)的示意图。
图2为依据本发明一实施例的数据储存装置的方块图。
图3为查核码检查矩阵及查核码产生矩阵的示意图。
图4为依据本发明第一实施例中的解码器215的方块图。
图5为依据本发明第二实施例中的解码器215的方块图。
图6A为依据本发明第二实施例中的解码管线的不同解码操作的示意图。
图6B为依据本发明第二实施例中解码管线所处理的数据随着时间变化的示意图。
图7A为依据本发明第二实施例中的解码管线的管线窗、数据及翻转的码字位元的示意图。
图7B为依据本发明图7A实施例中的码字位元产生振荡的示意图。
图8为依据本发明第三实施例中的解码器215的方块图。
图9为依据本发明第三实施例中解码管线所处理的数据随着时间变化的示意图。
图10为依据本发明不同实施例中的解码器的帧错误率与原始位元错误率的关系曲线的示意图。
图11为依据本发明一实施例中的解码管线的数据控制方法的流程图。
【符号说明】
200:数据储存装置
210:存储器控制器
211:处理单元
212:储存单元
213:启动程序
214:编码器
215:解码器
216:控制逻辑
218:缓冲存储器
2181:通道值存储器
2182:变数节点存储器
2183:暂存器
220:快闪存储器
230:主机
240:实体区块
241:实体页面
250、252:存取接口
261:乱数编译器
262:乱数解译器
410、510、810:变数节点单元
420、520、820:检查节点单元
430、530、830:互斥或闸
600:解码管线
601-604:阶段
611-613:区域
711-716:管线窗
840:存储器索引控制电路
S1110-S1140:步骤
H:同位元检查矩阵
c:列数
t:行数
M、K、P:矩阵
K-1:反矩阵
syndrome:征状值
CH_sgn:通道值
Diff:码字差值
VN_prev:先前码字
VN_new:更新码字
C1-C4:检查节点
V1-V7:变数节点
CNU:检查节点单元
VNU:变数节点单元
WR:写入操作
R:读取操作
c1-c4:码字位元
具体实施方式
以下说明为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求范围。
必须了解的是,使用于本说明书中的"包含"、"包括"等词,用以表示存在特定的技术特征、数值、方法步骤、作业处理、元件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、元件、组件,或以上的任意组合。
于申请专利范围中使用如"第一"、"第二"、"第三"等词用来修饰申请专利范围中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。
图2为依据本发明一实施例的数据储存装置的方块图。
在一实施例中,数据储存装置200可以是可携式记忆装置(例如:符合SD/MMC、CF、MS、XD标准的记忆卡)或是固态硬碟(solid-state drive,SSD),且主机230为一可与数据储存装置200连接的电子装置,例如手机、笔记型电脑、桌上型电脑…等等。在另一实施例中,数据储存装置200可以设置在一电子装置中,例如设置在手机、笔记型电脑、桌上型电脑之中,而此时主装置130可以是该电子装置的一处理器。
如图2所示,数据储存装置200包括一存储器控制器210及一快闪存储器220,其中存储器控制器210用以存取快闪存储器220。在一实施例中,存储器控制器210包括一处理单元211、一储存单元212、一控制逻辑216、一缓冲存储器218及存取接口250及252。处理单元211可由专用硬件电路或通用硬件所实现,具有多个处理核心的处理器或是具平行处理能力的多处理器,且上述实现方式例如可为通用处理器(General-Purpose Processor)、或微控制器(Microcontroller),但本发明并不限于此。
储存单元212可为非挥发性存储器,例如为唯读存储器(read-only memory,ROM)、可擦除式可程序化唯读存储器(erasable programmable read-only memory,EPROM)、电子可擦除式可程序化唯读存储器(electrically erasable programmable read-onlymemory,EEPROM)或电子熔丝(E-Fuse)。储存单元212储存启动程序213,其包括启动码(BootCode)或启动程序(Bootloader),且可由处理单元211执行,存储器控制器210基于启动程序213而完成开机,并开始控制该快闪存储器220的运作,例如,读取线上烧录(In SystemProgramming,ISP)码。
快闪存储器220例如为NAND快闪存储器,且快闪存储器220包括多个实体区块(physical block)240,且各实体区块包括多个实体页面(physical page)241。
处理单元211与快闪存储器220间的数据与操作命令传递透过数个电子信号进行协调,上述电子信号包括数据线(data line)、时脉讯号(clock signal)与控制讯号(control signal)。数据线可用以传递命令、地址、读出及写入的数据;控制讯号线可用以传递晶片致能(chip enable,CE)、地址提取致能(address latch enable,ALE)、命令提取致能(command latch enable,CLE)、写入致能(write enable,WE)等控制讯号。
存取接口250可采用双倍数据率(double data rate,DDR)通信协定与快闪存储器220沟通,例如,开放NAND快闪(open NAND flash interface,ONFI)、双倍数据率开关(DDRToggle)或其他接口。处理单元211另可使用存取接口252透过指定通信协定与主机230进行沟通,例如,通用序列总线(universal serial bus,USB)、先进技术附着(advancedtechnology attachment,ATA)、序列先进技术附着(serial advanced technologyattachment,SATA)、快速周边元件互联(peripheral component interconnect express,PCI-E)、非挥发性存储器的传输规范(Non-Volatile Memory Express,NVMe)或其他接口。
缓冲存储器218可为一挥发性存储器,例如包括一动态随机存取存储器(dynamicrandom access memory,DRAM)及/或一静态随机存取存储器(static random accessmemory,SRAM)。在此实施例,缓冲存储器218包括一通道值存储器(channel value memory,CHVMem)2181及变数节点存储器(variable node memory,VNMem)2182。通道值存储器2181用以暂存来自存取接口250所读取的快闪存储器220的原始页面数据(或称为码字)、或是用以暂存来自主机230的主机指令。变数节点存储器2182用以暂存在进行低密度同位元检查的解码过程中在各变数节点的变数节点数据。此外,通道值存储器2181所储存的码字例如可为硬判定或软判定的方式由快闪存储器220所读取的资讯,其中硬判定(hard decision)是采用单一读取电压阈值,故所得到的码字只有符号(sign)资讯。软判定(soft decision)则是利用多个读取电压阈值,故所得到的码字除了符号资讯之外,还带有可靠度资讯,例如每个码字位元可使用至少一位元的可靠度资讯来表示。若可靠度资讯用一位元表示,则可用0及1分别表示强(strong)及弱(weak)两种不同的可靠度,则码字位元搭配可靠度则可分为强”1”、弱”1”、弱”0”及强”0”。
控制逻辑216包括一编码器214、一解码器215、一乱数编译器(randomizer)261、及一乱数解译器(de-randomizer)262。在一些实施例中,编码器214、解码器215乱数编译器261、乱数解译器262及控制逻辑216例如可为硬件电路,且可由应用导向积体电路(application-specific integrated circuit,ASIC)、现场可程序化逻辑闸阵列(field-programmable gate array,FPGA)、复杂可程序化逻辑装置(complex programmable logicdevice,CPLD)、或具有相同功能的逻辑电路所实现,但本发明并不限于此。
在一实施例中,乱数编译器261在编码流程中例如可设置于编码器214之前(靠近主机端),意即来自主机230的数据会先经过乱数编译器261以产生乱数数据,其中在乱数数据中的位元0及位元1的比例约为50%:50%,意即为0跟1实质上(substantially)各半的乱数数据,藉以增进快闪存储器220的磨损平衡(wear leveling)。编码器214例如为一低密度同位元查核码(LDPC)编码器,且可以根据来自乱数编译器261的乱数数据来产生对应的查核码,且所产生的查核码符合一查核码检查矩阵。具体来说,参考图3,假设该查核码检查矩阵为一大小为c*t的矩阵(例如,列数c=5,行数t=48),而该查核码检查矩阵可以分为左侧的矩阵M(大小为c*(t-c))以及右侧的矩阵K(大小为c*c),为了找出与该查核码检查矩阵所对应的查核码产生矩阵,可以先找出矩阵K的反矩阵K-1(inverse matrix),之后再将反矩阵(K-1)与矩阵M相乘以得到矩阵P,而矩阵P的转置矩阵(transpose matrix)便可以作为查核码产生矩阵。换句话说,在找到矩阵P的转置矩阵之后,编码器214可以将来自乱数编译器261的乱数数据乘以矩阵P的转置矩阵来得到对应于该些数据的查核码,而编码器214之后再将数据与查核码一起乘上该查核码检查矩阵以判断查核码是否正确。举例来说,若是相乘结果等于“0”则判断编码正确;而若是相乘结果不等于“0”则判断编码错误。在判断编码正确之后,编码器214将乱数数据与对应的查核码写入至快闪存储器220的其中一个实体页面中。
在此实施例中,解码器215及乱数解译器262在解码流程中的顺序相对于在编码流程中乱数编译器261及编码器214的顺序,意即从快闪存储器220读取出来的通道值会先经过解码器215后再经过乱数解译器262。在一些实施例中,乱数编译器261及乱数解译器262亦可分别称为扰乱器(scrambler)及解扰器(descrambler)。
解码器215例如为低密度同位元查核码(LDPC)解码器。当主机230发送一读取指令至数据储存装置230,存储器控制器210由快闪存储器220取得储存的原始页面数据,例如又称为通道值。在此实施例中,因为从快闪存储器220所读取的通道值尚未经过乱数解译器262进行乱数解译,表示通道值中的位元1及位元0的数量也是实质上各占50%。通道值例如包括初始乱数数据及错误校正码数据。因为初始乱数数据及错误校正码数据在经过通道传输时可能产生错误,故解码器215可利用错误校正码数据以对初始乱数数据及/或错误校正码数据本身进行错误校正,例如可采用一位元翻转(bit flipping)演算法进行LDPC解码。因此,解码器215所产生的解码结果即为在编码器214所输入的正确乱数数据,乱数数据再经过乱数解译器262进行乱数解译以得到原本的页面数据。
在另一实施例中,在编码流程中的编码器214及乱数编译器261、以及在解码流程中的解码器215及乱数解译器262的设置方式与上述实施例略有不同。举例来说,乱数编译器215及乱数解译器262可设置于快闪存储器端。在编码流程中,来自主机230的数据会先经过编码器214进行编码以产生对应的查核码,且数据及对应的查核码会经过乱数编译器261以产生乱数数据并写入快闪存储器220。在解码流程中,由快闪存储器220所读取的通道值会先经过乱数解译器262进行乱数解译以还原为原始数据及对应的查核码。接着,解码器215再对乱数解译器262所产生的原始数据及对应的查核码进行LDPC解码,并输出校正后的正确数据。
需注意的是,无论乱数编译器261及乱数解译器262是设置于主机端或快闪存储器端,本发明的快闪存储器的存取方法方法均可实施。
图4为依据本发明第一实施例中的解码器215的方块图。如图4所示,解码器215包括一变数节点单元(variable node unit,VNU)410及一检查节点单元(check node unit,CNU)420。解码器215中的数据流程例如可分为三个阶段:初始阶段(initial phase)、解码阶段(decoding phase)及输出阶段(output phase)。
在第一实施例中,在初始阶段,解码器215开始进行LDPC解码,且变数节点单元410会将变数节点存储器2182中所暂存的先前码字重置为0。初始阶段即为第一次迭代运算,变数节点单元410会由通道值存储器2181取得通道值CH_sgn,并将通道值CH_sgn直接旁路传送(bypass)至检查节点单元420。其中,上述通道值例如可为使用硬决定(hard decision)或软决定(soft decision)的方式从快闪存储器220所读取的原始页面数据。
检查节点单元420依据初始的通道值计算出第一次迭代运算的征状值(syndrome),意即可先计算如图1A所示的水平列的检查节点C1~C4。检查节点单元420并将所计算出的征状值传送至变数节点单元410。变数节点单元410可依据来自检查节点单元420的征状值以判断是否需要继续进行后续变数节点的运算。若征状值为0,变数节点单元410判断不需要继续进行后续变数节点的运算,并结束初始阶段,并进入输出阶段。若征状值不为0,变数节点单元410并依据通道值CH_sgn及来自检查节点单元420的征状值syndrome以计算出征状权重(syndrome weight),并依据征状权重执行一位元翻转演算法以决定通道值CH_sgn中一或多个码字位元需要进行位元翻转,其中上述位元翻转演算法可利用本发明领域中的习知技术所实现,故其细节于此不再详述。
接着,变数节点单元410将通道值进行位元翻转后产生的更新码字VN_new储存至变数节点存储器2182以供后续的迭代运算使用。此时,LDPC解码的初始阶段结束,并进入解码阶段。
在解码阶段中,解码器215中的变数节点单元410及检查节点单元420会持续进行迭代(iteration),直到检查节点单元420所产生的征状值为止或是已达到迭代次数的上限值为止。举例来说,在每次迭代运算的期间,变数节点单元410均会先由通道值存储器2181及变数节点存储器2182分别取得通道值CH_sgn及先前码字VN_prev,其中先前码字VN_prev即为前次迭代运算中所产生并储存至变数节点存储器2182的更新码字VN_new。变数节点单元410并依据通道值CH_sgn及来自检查节点单元420的征状值syndrome以计算出一征状权重(syndrome weight),并依据征状权重执行上述位元翻转演算法以决定通道值CH_sgn中一或多个码字位元需要进行位元翻转。接着,变数节点单元410将通道值进行位元翻转后产生的更新码字VN_new储存至变数节点存储器2182以供后续的迭代运算使用。变数节点单元410并计算上述更新码字VN_new与先前码字VN_prev之间的差值Diff,并将差值Diff传送至检查节点单元420以进行征状(syndrome)值的相关运算。当在解码阶段中的一特定迭代运算所产生的征状值为0或是迭代次数已达到一上限值,则解码阶段结束,并进入输出阶段。
在输出阶段中,解码器215可将储存于变数节点单元410中的更新码字VN_new输出以做为解码结果。此外,更新码字VN_new及通道值会经过一互斥或闸430以得到解码结果及通道值之间的误差值,其中利用上述误差值可得知通道值中有几个位元产生错误,故可用于判断快闪存储器220目前的健康状况(health status)。
图5为依据本发明第二实施例中的解码器215的方块图。在第二实施例中,在图5中的变数节点单元510及检查节点单元520的电路功能与图4中的变数节点单元410及检查节点单元420相同,但图5的数据控制流程与图4不同。
举例来说,在初始阶段,解码器215开始进行LDPC解码,且变数节点单元510会将变数节点存储器2182中所暂存的先前码字重置为0。初始阶段即为第一次迭代运算,变数节点单元510同样会由通道值存储器2181取得通道值CH_sgn,并将通道值CH_sgn直接旁路传送(bypass)至检查节点单元520。
检查节点单元520依据初始的通道值计算出第一次迭代运算的征状值(syndrome),并将所计算出的征状值传送至变数节点单元510。变数节点单元510可依据来自检查节点单元520的征状值以判断是否需要继续进行后续变数节点的运算。若征状值为0,变数节点单元510判断不需要继续进行后续变数节点的运算,并结束初始阶段,并进入输出阶段。若征状值不为0,则变数节点单元510则直接将更新码字VN_new设定为0并将更新码字VN_new写入变数节点存储器2182,并结束初始阶段,并进入解码阶段。
在解码阶段中,解码器215中的变数节点单元510及检查节点单元520会持续进行迭代(iteration),直到检查节点单元520所产生的征状值为止或是已达到迭代次数的上限值为止。然而,图5的实施例与图4实施例不同之处,在于解码阶段的每次迭代运算的期间,变数节点单元510由变数节点存储器2182取得先前码字VN_prev,但并不从通道值存储器2181取得通道值CH_sgn。故在解码阶段中,可关闭通道值存储器2181以节省功耗。
变数节点单元510并依据来自检查节点单元520的征状值syndrome以计算出一征状权重(syndrome weight),并依据征状权重执行上述位元翻转演算法以决定在先前码字VN_prev中一或多个码字位元需要进行位元翻转。接着,变数节点单元510将通道值进行位元翻转后产生的更新码字VN_new储存至变数节点存储器2182以供后续的迭代运算使用。变数节点单元510并计算上述更新码字VN_new与先前码字VN_prev之间的差值Diff,并将差值Diff传送至检查节点单元520以进行征状(syndrome)值的相关运算。当在解码阶段中的一特定迭代运算所产生的征状值为0或是迭代次数已达到一上限值,则解码阶段结束,并进入输出阶段。
在输出阶段,解码器215将储存于变数节点存储器2182中的更新码字VN_new输出为变数节点符号值VN_sgn,并将变数节点符号值VN_sgn与通道值CH_sgn经过互斥或闸530以得到解码结果。因为变数节点存储器2182所储存的更新码字VN_new即为杂讯e经过迭代运算后得到的结果,故可将变数节点存储器2182所输出的变数节点符号值VN_sgn做为误差值,其中利用上述误差值可得知通道值中有几个位元产生错误,故可用于判断快闪存储器220目前的健康状况(health status)。
详细而言,在图5的实施例中的解码阶段,变数节点单元510例如仅对码字差值进行相关运算,但最后仍然可得到与图4的解码流程相同的解码结果。上述现象例如可从LDPC演算法的数学式进行推导。
举例来说,因为LDPC演算法为一线性分组码(linear block code),故两个不同码字相加的结果可得到另一个码字。因此,从快闪存储器220所读取而得的通道值y可视为正确码字c及杂讯e相加的结果,例如可用式(1)表示:
同位元检查矩阵H与通道值y的内积可得到征状值S,例如可用式(2)表示:
H·yT=ST (2)
将式(1)代入式(2),可得到式(3):
将式(3)展开后可得到式(4):
H·cT+H·eT=ST (4)
若将正确码字c设定为0,则同位元检查矩阵H与正确码字c的内积的结果必然为0,故式(4)可改写为式(5):
H·eT=ST (5)
意即,在正确码字c设定为0的情况下,每次LDPC解码迭代所得到的征状值S仅与杂讯e有关,其中杂讯e即可视为错误码字位元。
将式(4)中的正确码字c设定为0例如可对应至图5实施例中的初始阶段,变数节点单元510则直接将更新码字VN_new设定为0并将更新码字VN_new写入变数节点存储器2182。需注意的是,因为写入快闪存储器220的数据是先经过乱数编译器261产生的乱数数据再经过编码器214编码,故在解码过程序,解码器215所取得的码字同样可视为0与1实质上各占50%的高密度/高权重的数据。
在图4的实施例中的解码阶段,变数节点存储器2182所存取的内容即为0与1实质上各占50%的码字,故在变数节点存储器2182的数据线(data line)上的切换率(togglerate)也相当高,例如可视为50%。
当使用图5实施例中的数据控制流程时,变数节点存储器2182所存取的内容为误差样式(error pattern)。因为正常的快闪存储器220的原始位元错误率(raw bit errorrate,RBER)约小于1%,故上述误差样式中的”1”的比例约同样小于1%。因此,变数节点存储器2182可由图4实施例中的50%切换率大幅降低为1%以下,故可大幅节省进行解码器214的功耗。此外,在图5实施例中的解码阶段并不用存取通道值存储器2181,故通道值存储器2181的数据线的切换率为0,可进一步降低解码器214的功耗。
式(5)的运算过程例如可对应至图5实施例中的解码阶段,意即在每次LDPC的迭代中均是对杂讯e进行运算,且当解码阶段结束时,储存于变数节点存储器2182中的码字结果(例如称为变数节点符号值VN_sgn)即为误差值,且将变数节点符号值VN_sgn与通道值CH_sgn经过互斥或闸530即可得到解码结果。
图6A为依据本发明第二实施例中的解码管线的不同解码操作的示意图。图6B为依据本发明第二实施例中解码管线所处理的数据随着时间变化的示意图。请同时参考图5及第6A-6B图。
在一实施例中,如图6A所示,解码器215中的解码管线600的LDPC解码阶段可分为4个阶段601~604,其中阶段601表示对变数节点存储器2182的读取操作R,阶段602表示变数节点单元(VNU)510的运算阶段,阶段603表示检查节点单元(CNU)520的运算阶段,阶段604表示对变数节点存储器2182的写入操作WR。此外,数据索引的栏位则表示具有该索引的数据处于相应的该阶段。在图6A中,数据DATA6处于阶段601、数据DATA3~DATA5处于阶段602,数据DATA1及DATA2处于阶段603,且数据DATA0处于阶段604。
需注意的是,在图6A~6B的实施例中是假设阶段601的读取操作R及阶段604的写入操作WR的执行时间为一个时脉周期,且阶段602的变数节点单元(VNU)510的运算阶段的执行时间为三个时脉周期,且阶段603的检查节点单元(CNU)520的运算阶段的执行时间为二个时脉周期,但本发明并不限于此。本发明领域中具有通常知识者可视解码管线的硬件设计需求而调整在解码管线中的各个阶段的执行时间。
解码管线600的LDPC解码阶段会从阶段601开始,且数据会依照其索引顺序逐一进入解码管线600。举例来说,在第1个时脉周期,在阶段601中,数据DATA0(例如:码字)会被从变数节点存储器2182读取出来。在第2~4个时脉周期,在阶段601中,数据DATA1、DATA2及DATA3会被从变数节点存储器2182读取出来,且数据DATA0、DATA1及DATA2则在阶段602由变数节点单元510依序进行运算。在第5~6个时脉周期,在阶段601中,数据DATA4及DATA5会被从变数节点存储器2182读取出来,且数据DATA3及DATA4则在阶段602由变数节点单元510依序进行解码,且数据DATA0及DATA1则进入阶段603由检查节点单元520依序进行运算。
举例来说,当检查节点单元520完成两个时脉周期的运算后,即可得到该数据(例如:码字)相关的征状值(syndrome)。在第7个时脉周期,在阶段601中,数据DATA6会被从变数节点存储器2182读取出来,且数据DATA3、DATA4及DATA5则在阶段602由变数节点单元510依序进行运算,且数据DATA1及DATA2则进入阶段603由检查节点单元520依序进行运算。此时,因为检查节点单元520已计算出数据DATA0相关的征状值,故可进入阶段604以执行写入操作WR将数据DATA0相关的征状值写入至变数节点存储器2182。
请再参考图6B,在图6A中的解码管线600中的各阶段的数据会随着时间而改变,其中图6B的解码管线600已第6个时脉周期开始为例进行说明,意即,在阶段601中,数据DATA5会被从变数节点存储器2182读取出来,且数据DATA2~DATA4则在阶段602由变数节点单元510依序进行解码,且数据DATA0及DATA1则在阶段603由检查节点单元520依序进行运算。需注意的是,在第6个时脉周期,因为检查节点单元520尚未完成任何数据的检查运算,故在阶段604无任何数据需写入至变数节点存储器2182。
在下一个时脉周期(即第7个时脉周期),检查节点单元520已计算出数据DATA0相关的征状值(例如:区域611),并执行阶段604的写入操作以将上述征状值更新至变数节点存储器2182以进行旋转、加总的运算,此时,数据DATA5亦随着进入阶段602由变数节点单元510进行相关运算(例如:区域612)。当变数节点单元410欲对数据DATA5进行位元翻转时(例如:区域613),变数节点单元510所使用到的征状值已经是在数个时脉之前的征状值(例如对应于数据DATA0),而非数据DATA5所对应的征状值,上述延迟情况可称为管线延迟(pipeline delay)。此外,在第6A及图6B中的管线窗(pipeline window)的长度会因为实际的硬件设计不同而有变化,但在管线窗内若变数节点单元510有执行位元翻转,则会因为解码管线的设计因素而看不到相应的征状值。
图7A为依据本发明第二实施例中的解码管线的管线窗、数据及翻转的码字位元的示意图。图7B为依据本发明图7A实施例中的码字位元产生振荡的示意图。请参考图5及图7A~7B。
如图7A所示,0~9为数据DATA0~DATA9的数据索引,解码器215的解码管线的管线窗711~716的长度为6,且c1~c4表示翻转的码字位元。举例来说,在第1个时脉周期,管线窗711中包含了数据DATA0~DATA5,依此类推,在第6个时脉周期,管线窗716中包含了数据DATA5~DATA10。
在某些情况中,在部分管线窗内的小时脉周期(small cycle)可能会因为管线延迟而使数据更新来不及,进而造成两组错误位元产生振荡的现象。举例来说,在管线窗711中,在数据DATA1中的码字位元c4进行位元翻转后,因为管线延迟的关系,变数节点单元510在数据DATA4及DATA5的运算中还无法拿到数据DATA1在更新后的征状值,故会造成在数据DATA4及DATA5的位元翻转的错误判断。类似地,在管线窗716中,变数节点单元510在数据DATA9的运算中已可拿到数据DATA1在更新后的征状值,但因为管线延迟的关系,在数据DATA9的运算中尚无法拿到数据DATA4及DATA5在更新后的征状值,故会造成在数据DATA9的位元翻转的错误判断。当上述情况发生后,在数据DATA1的码字位元c4、数据DATA4的码字位元c1、数据DATA5的码字位元c3以及数据DATA9的码字位元c2可能会彼此之间有振荡(oscillation)的情况产生,如图7B所示,此即为因为管线延迟所产生的陷阱集合(trapping set),这也会造成解码器215的解码管线进入陷阱状态(trapping status)。
图8为依据本发明第三实施例中的解码器215的方块图。图9为依据本发明第三实施例中解码管线所处理的数据随着时间变化的示意图。请同时参考图5、图8及图9。
如图8所示,解码器215包括变数节点单元810、检查节点单元820及存储器索引控制电路840。图8中的变数节点单元810及检查节点单元820的电路功能类似于图5中的变数节点单元510及检查节点单元520,故其细节于此不再赘述。
存储器索引控制电路840用以控制提供至变数节点单元810的数据(例如:码字)的数据索引顺序,并提供所使用的数据索引顺序相应的正确LDPC参数。举例来说,存储器索引控制电路840包括多组数据索引顺序,例如顺序1~顺序N,其中该等数据索引顺序包括一预定数据索引顺序。
在一实施例中,顺序1例如可为递增顺序(ascending order),意即提供至变数节点单元810的数据索引顺序依序为0、1、2、3、依此类推。顺序2例如可为数据索引可先为偶数再为奇数,意即提供至变数节点单元810的数据索引顺序依序为0、2、4、6、…、1、3、5、7、…,依此类推。顺序3例如数据索引可先为奇数再为偶数,意即提供至变数节点单元810的数据索引顺序依序为1、3、5、7、…、0、2、4、6、…,依此类推。需注意的是,本发明的存储器索引控制电路840所使用的数据索引顺序并不限定于上述几种顺序,且本发明领域中具有通常知识者可视实际需求而设计所需的数据索引顺序。
举例来说,若存储器索引控制电路840选择顺序2(例如为:0、2、4、6、8、10、1、3、5、7、9、11)做为提供至变数节点单元810的数据(例如:码字)的数据索引顺序,则解码器215的解码管线所处理的数据随着时间变化则如图9所示。
此外,在一些实施例中,顺序1例如可做为解码器215的预设数据索引顺序,且在数据储存装置200开机后,解码器215中的存储器索引控制电路840会先以顺序1进行LDPC解码。当解码器215判断当前码字解码失败(例如发生无法校正的错误)、或是解码失败的码字数量达到一预设数量时,解码器215可重新启动并采用其他数据索引顺序(例如顺序2、顺序3或其他数据索引顺序)以进行LDPC解码。
图10为依据本发明不同实施例中的解码器的帧错误率与原始位元错误率的关系曲线的示意图。请同时参考图5、图8及图10。
如图10所示,曲线1010表示利用图5实施例中的解码器215进行LDPC解码的帧错误率(frame error rate,FER)与原始位元错误率(raw bit error rate,RBER)的关系曲线,曲线1020则表示利用图8实施例中的解码器215进行LDPC解码的帧错误率与原始位元错误率的关系曲线。
详细而言,在图5实施例中的解码器215使用固定的数据索引顺序(例如递增顺序)以进行LDPC解码。当发生解码失败后,在图5实施例中的解码器215仍然只能使用相同的数据索引顺序,故对于解码失败的类似码字,仍有较高机会因为管线延迟而使解码器215进入陷阱状态、或是造成两组错误码字位元产生振荡的情况。在图8实施例中的解码器215则配置了多组数据索引顺序(例如图8实施例中的顺序1~顺序3)。当发生解码失败后,在图8实施例中的解码器215可重置并使用不同的数据索引顺序,故对于先前解码失败的类似码字,则会因为使用与先前解码不同的数据索引顺序,故会大幅降低因为管线延迟而使解码器215进入陷阱状态或造成两组错误码字位元产生振荡情况的机率。上述差异可从图10看出对应于图8的解码器215的曲线1020在原始位元错误率(RBER)约为0.0065时,曲线1020的帧错误率(FER)远比曲线1010的帧错误率为低。相较于图5的解码器215,图8的解码器215的错误率明显下降,且可大幅增加其错误更正力。
图11为依据本发明一实施例中的解码管线的数据控制方法的流程图。请同时参考图2、图8及图11。
在步骤S1110,数据储存装置200开机。
在步骤S1120,解码器215经由该存储器索引控制电路840先以第一顺序从变数节点存储器2182读取多笔第一码字以进行LDPC解码。
在步骤S1130,解码器215判断是否有该等第一码字中的特定码字解码失败。若该等第一码字中有特定码字解码失败,执行步骤S1140。若该等第一码字均未解码失败,则回到步骤S1120以第一顺序对该等第一码字进行LDPC解码。举例来说,当解码器215判断当前码字解码失败(例如发生无法校正的错误)、或是解码失败的码字数量达到一预设数量时,解码器215可重新启动并采用其他数据索引顺序(例如顺序2、顺序3或其他数据索引顺序)以进行LDPC解码。
在步骤S1140,解码器215重置并经由存储器索引控制电路840以第二顺序从变数节点存储器2182读取多笔第二码字以进行LDPC解码,其中该第一顺序与该第二顺序不同。在一些实施例中,顺序1例如可为递增顺序(ascending order),意即提供至变数节点单元810的数据索引顺序依序为0、1、2、3、依此类推。顺序2例如可为数据索引可先为偶数再为奇数,意即提供至变数节点单元810的数据索引顺序依序为0、2、4、6、…、1、3、5、7、…,依此类推。
综上所述,本发明提出一种存储器控制器及解码管线的数据控制方法,其可在存储器控制器的解码器进行LDPC解码流程发生解码失败时,可重置解码器并采用不同的数据索引顺序以继续进行LDPC解码,故可大幅降低因为管线延迟而使解码器进入陷阱状态或造成两组错误码字位元产生振荡情况的机率,并可增加解码器的错误更正力。
本发明虽以较佳实施例揭露如上,然其并非用以限定本发明的范围,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当由权利要求书界定为准。

Claims (14)

1.一种存储器控制器,用于一数据储存装置,其中该存储器控制器所执行的低密度同位元查核(low density parity-check,LDPC)解码流程依序包括一初始阶段、一解码阶段及一输出阶段,该存储器控制器包括:
一存储器索引控制电路,用以控制一变数节点存储器的数据存取;
一解码器,包括一解码管线以执行该LDPC解码流程中的该解码阶段,
其中,在该数据储存装置开机后,该解码器经由该存储器索引控制电路先以第一顺序从该变数节点存储器读取多笔第一码字以进行LDPC解码,
其中,因应于该解码器判断该等第一码字中的特定码字解码失败,该解码器重置并经由该存储器索引控制电路以第二顺序从该变数节点存储器读取多笔第二码字以进行LDPC解码,
其中该第一顺序与该第二顺序不同。
2.如权利要求1所述的存储器控制器,其特征在于,该解码器包括一检查节点单元及一变数节点单元,且该解码管线依序包括第一阶段、第二阶段、第三阶段及第四阶段,且该第一阶段为该变数节点单元透过该存储器索引控制电路从该变数节点存储器读取目前时脉周期所需的输入码字的读取操作,该第二阶段为该变数节点单元对已读取的一或多个输入码字的运算阶段,该第三阶段为该检查节点单元对已读取的该一或多个输入码字的运算阶段,且该第四阶段为该检查节点单元透过该存储器索引控制电路将该检查节点单元在该目前时脉周期所计算出的征状值写入至该变数节点存储器的写入操作。
3.如权利要求2所述的存储器控制器,其特征在于,该存储器索引控制电路更提供相应于该第一顺序或该第二顺序的LDPC参数以供该变数节点单元及该检查节点单元使用。
4.如权利要求3所述的存储器控制器,其特征在于,在该解码阶段,于每次LDPC解码迭代的期间:
该检查节点单元由该变数节点单元取得一码字差值,并依据该码字差值计算该征状值;
该变数节点单元执行:
依据来自该检查节点单元的该征状值以决定一征状权重;
从该变数节点存储器取得一先前LDPC解码迭代所产生的一先前码字,而不从一通道值存储器取得从一快闪存储器所读取的一通道值;
依据该征状权重执行一位元翻转(bit-flipping)演算法以翻动该先前码字中之一或多个码字位元以产生一更新码字;以及
将该更新码字减去该先前码字以产生该码字差值。
5.如权利要求1所述的存储器控制器,其特征在于,该第一顺序为递增顺序,且该第二顺序为先偶数再奇数。
6.如权利要求3所述的存储器控制器,其特征在于,在该初始阶段,该变数节点单元从该通道值存储器取得从该快闪存储器所读取的该通道值,并将该通道值传送至该检查节点单元以计算出该征状值。
7.如权利要求3所述的存储器控制器,其特征在于,在该解码阶段,因应于该变数节点单元判断该征状值等于0或迭代次数已达到一上限值,该变数节点单元结束该解码阶段并进入该输出阶段。
8.一种解码管线的数据控制方法,应用于一数据储存装置,其中该数据储存装置包括一存储器控制器及一快闪存储器,且该快闪存储器的数据读取过程包括一低密度同位元查核(low-density parity-check,LDPC)解码过程,且该存储器控制器包括一存储器索引控制电路及一解码器,且该LDPC解码过程包括一初始阶段、一解码阶段及一输出阶段,该方法包括:
在该数据储存装置开机后,利用该解码器经由该存储器索引控制电路先以第一顺序从该变数节点存储器读取多笔第一码字以进行LDPC解码;
因应于该解码器判断该等第一码字中的特定码字解码失败,将该解码器重置并利用该解码器经由该存储器索引控制电路以第二顺序从该变数节点存储器读取多笔第二码字以进行LDPC解码,
其中该第一顺序与该第二顺序不同。
9.如权利要求8所述的解码管线的数据控制方法,其特征在于,该解码器包括一检查节点单元及一变数节点单元,且该解码管线依序包括第一阶段、第二阶段、第三阶段及第四阶段,且该第一阶段为该变数节点单元透过该存储器索引控制电路从该变数节点存储器读取目前时脉周期所需的输入码字的读取操作,该第二阶段为该变数节点单元对已读取的一或多个输入码字的运算阶段,该第三阶段为该检查节点单元对已读取的该一或多个输入码字的运算阶段,且该第四阶段为该检查节点单元透过该存储器索引控制电路将该检查节点单元在该目前时脉周期所计算出的征状值写入至该变数节点存储器的写入操作。
10.如权利要求9所述的解码管线的数据控制方法,其特征在于,该存储器索引控制电路更提供相应于该第一顺序或该第二顺序的LDPC参数以供该变数节点单元及该检查节点单元使用。
11.如权利要求10所述的解码管线的数据控制方法,其特征在于,在该解码阶段,于每次LDPC解码迭代的期间:
利用该检查节点单元由该变数节点单元取得一码字差值,并依据该码字差值计算该征状值;
利用该变数节点单元执行:
依据来自该检查节点单元的该征状值以决定一征状权重;
从该变数节点存储器取得一先前LDPC解码迭代所产生的一先前码字,而不从一通道值存储器取得从一快闪存储器所读取的一通道值;
依据该征状权重执行一位元翻转(bit-flipping)演算法以翻动该先前码字中之一或多个码字位元以产生一更新码字;以及
将该更新码字减去该先前码字以产生该码字差值。
12.如权利要求8所述的解码管线的数据控制方法,其特征在于,该第一顺序为递增顺序,且该第二顺序为先偶数再奇数。
13.如权利要求10所述的解码管线的数据控制方法,其特征在于,还包括:在该初始阶段,利用该变数节点单元从该通道值存储器取得从该快闪存储器所读取的该通道值,并将该通道值传送至该检查节点单元以计算出该征状值。
14.如权利要求10所述的解码管线的数据控制方法,其特征在于,在该解码阶段,因应于该变数节点单元判断该征状值等于0或迭代次数已达到一上限值,利用该变数节点单元结束该解码阶段并进入该输出阶段。
CN202211096700.6A 2022-08-18 2022-09-08 存储器控制器及解码管线的数据控制方法 Pending CN117632574A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
TW111131087 2022-08-18
TW111131087A TWI836558B (zh) 2022-08-18 2022-08-18 記憶體控制器及解碼管線之資料控制方法

Publications (1)

Publication Number Publication Date
CN117632574A true CN117632574A (zh) 2024-03-01

Family

ID=89511400

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211096700.6A Pending CN117632574A (zh) 2022-08-18 2022-09-08 存储器控制器及解码管线的数据控制方法

Country Status (3)

Country Link
US (1) US11876535B1 (zh)
CN (1) CN117632574A (zh)
TW (1) TWI836558B (zh)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8984365B1 (en) * 2013-03-14 2015-03-17 Pmc-Sierra Us, Inc. System and method for reduced memory storage in LDPC decoding
US9553608B2 (en) * 2013-12-20 2017-01-24 Sandisk Technologies Llc Data storage device decoder and method of operation
TWI705446B (zh) * 2015-09-18 2020-09-21 韓商愛思開海力士有限公司 具有改良硬解碼處理量的vss低密度同位檢驗解碼器
KR102589918B1 (ko) * 2016-07-19 2023-10-18 삼성전자주식회사 저밀도 패리티 체크 디코더 및 그것을 포함하는 저장 장치
US10116333B2 (en) * 2016-07-29 2018-10-30 Sandisk Technologies Llc Decoder with parallel decoding paths
US10110249B2 (en) * 2016-08-23 2018-10-23 Sandisk Technologies Llc Column-layered message-passing LDPC decoder
KR102643457B1 (ko) * 2018-11-19 2024-03-06 에스케이하이닉스 주식회사 Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
KR102606829B1 (ko) * 2019-01-09 2023-11-27 에스케이하이닉스 주식회사 Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
TWI697907B (zh) * 2020-01-14 2020-07-01 慧榮科技股份有限公司 記憶體控制器及快閃記憶體的存取方法
KR20210115961A (ko) * 2020-03-17 2021-09-27 에스케이하이닉스 주식회사 Ldpc 디코더 및 그것의 동작 방법
US11316532B1 (en) * 2020-12-17 2022-04-26 SK Hynix Inc. Decoding of low-density parity-check codes with high-degree variable nodes

Also Published As

Publication number Publication date
TWI836558B (zh) 2024-03-21
TW202410053A (zh) 2024-03-01
US11876535B1 (en) 2024-01-16

Similar Documents

Publication Publication Date Title
CN113190375B (zh) 存储器控制器及快闪存储器的存取方法
US10707899B2 (en) Bit-flipping decoder for G-LDPC codes with syndrome-decoding for component codes
US9792176B2 (en) Method and apparatus for encoding and decoding data in memory system
CN108053862B (zh) 使用来自多个存储单元和奇偶校验存储单元的可靠性信息为一个失效存储单元恢复数据
CN113032178B (zh) 存储器控制器及快闪存储器的存取方法
KR102559925B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
US20230231579A1 (en) Data storage device
US10484008B2 (en) Memory system with on-the-fly error detection and termination and operating method thereof
KR102257050B1 (ko) 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
KR102706994B1 (ko) 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US9553608B2 (en) Data storage device decoder and method of operation
KR102556479B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
US10200063B2 (en) Memory controller, semiconductor memory system and operating method thereof
KR20160090054A (ko) 플래시 메모리 시스템 및 그의 동작 방법
KR102606829B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
KR102582326B1 (ko) 에러 정정 회로 및 이의 동작 방법
TWI718060B (zh) 記憶體控制器及快閃記憶體的存取方法
CN116743188A (zh) 存储系统和控制存储系统的方法
CN117632574A (zh) 存储器控制器及解码管线的数据控制方法
TWI831333B (zh) 記憶體控制器及快閃記憶體的存取方法
TWI812411B (zh) 記憶體控制器及低密度同位元查核碼之位元翻轉方法

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