CN117631962A - 存储器控制器及快闪存储器的存取方法 - Google Patents

存储器控制器及快闪存储器的存取方法 Download PDF

Info

Publication number
CN117631962A
CN117631962A CN202211097215.0A CN202211097215A CN117631962A CN 117631962 A CN117631962 A CN 117631962A CN 202211097215 A CN202211097215 A CN 202211097215A CN 117631962 A CN117631962 A CN 117631962A
Authority
CN
China
Prior art keywords
codeword
variable node
value
memory
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
CN202211097215.0A
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 CN117631962A publication Critical patent/CN117631962A/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/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • 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/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/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

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明涉及一种存储器控制器及快闪存储器的存取方法。其中该存储器控制器所执行的低密度同位元查核(LDPC)解码流程系依序包括初始阶段、解码阶段及输出阶段。该存储器控制器包括:一变数节点单元以及一检查节点单元。在初始阶段,变数节点单元执行:从一通道值存储器取得从一快闪存储器所读取的通道值;将通道值传送至检查节点单元以计算出征状值;以及因应于征状值不为0,将变数节点存储器中的多个项目之每一者对应的暂存器的数值设定为0,并进入解码阶段。

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 decision codeword),且S为征状(syndrome)。当S等于零时,表示解码程序已完成,且不需要更进一步的资讯。一般来说,硬判定以及征状检查会在迭代期间执行,其中一非零(non-zero)征状表示有奇性(odd parity)存在,并且需要再执行新的解码迭代。
传统的位元翻转LDPC解码器在解码阶段时,因为码字数据中的1的数量比例很高,故在存储器的数据线的切换率(toggle rate)也很高,故传统的位元翻转LDPC解码器的功耗也会相当高。
发明内容
因此,本发明提出一种存储器控制器及快闪存储器的存取方法,其可改变在解码器中在解码阶段的变数节点单元及检查节点单元的数据控制流程,并可对误差样式进行迭代计算,故可让在变数节点单元中所存取的码字数据中的1的比例大幅下降,进而大幅降低数据线的切换率并降低解码器的功耗。本发明的存储器控制器除了在解码阶段中可不存取通道值存储器的通道值,且可进一步依据变数节点存储器的各项目相应的暂存器数值以决定是否要从变数节点存储器读取相应项目的数据、以及依据更新旗标的数值以决定是否将更新码字中的一或多个码字位元写入至变数节点存储器,故可降低对变数节点存储器的读取操作数量及写入操作数量以进一步降低存储器控制器的解码器在进行LDPC解码时的功耗。
本发明提供一种存储器控制器,其中该存储器控制器所执行的低密度同位元查核(low density parity-check,LDPC)解码流程依序包括一初始阶段、一解码阶段及一输出阶段,该存储器控制器包括:一变数节点单元以及一检查节点单元。在该初始阶段,该变数节点单元执行:从一通道值存储器取得从一快闪存储器所读取的该通道值;将该通道值传送至该检查节点单元以计算出一征状值;以及因应于该征状值不为0,将一变数节点存储器中的多个项目之每一者对应的暂存器的数值设定为0,并进入该解码阶段。
在一些实施例中,在该解码阶段,该变数节点单元不从该通道值存储器取得从该快闪存储器所读取的该通道值。
在一些实施例中,在该解码阶段,于每次LDPC解码迭代的期间,该变数节点单元执行:依据该征状值以计算一征状权重;从变数节点存储器取得先前码字中具有该暂存器的数值为1的一或多个第一码字位元,并将该先前码字中的其他第二码字位元视为0;依据该征状权重执行位元翻转(bit-flipping)演算法以翻动该先前码字中的该等第一码字位元及该等第二码字位元中的一或多个码字字元以产生一更新码字;将该更新码字减去该先前码字以产生该码字差值;以及将该码字差值传送至该检查节点单元以更新该征状值。
在一些实施例中,在将该码字差值传送至该检查节点单元以更新该征状值之前,该变数节点单元更将该更新码字中不为0的一或多个码字位元相应的更新旗标设定为1、将该更新码字中具有该更新旗标为1的该一或多个码字位元写入该变数节点存储器、并将写入至该变数节点存储器的各码字位元相应的该暂存器的数值设定为1。
在一些实施例中,在该解码阶段,因应于该变数节点单元判断该征状值等于0或迭代次数已达到一上限值,该变数节点单元结束该解码阶段并进入该输出阶段。
在一些实施例中,在该输出阶段,该存储器控制器将该变数节点存储器所储存的该更新码字输出为一变数节点符号值,并将该变数节点符号值设定为一误差值,其中该存储器控制器依据该通道值及该变数节点存储器的各项目相应的该暂存器的数值以计算解码结果的各位元。
在一些实施例中,因应于该解码结果的特定位元在该变数节点存储器中相应的该暂存器的数值为0,该存储器控制器将该通道值设定为该特定位元。因应于该解码结果的特定位元在该变数节点存储器中相应的该暂存器的数值为1,该存储器控制器将该特定位元相应的该变数节点符号值与该通道值进行互斥或(XOR)运算以得到该特定位元。
本发明更提供一种快闪存储器的存取方法,应用于一数据储存装置中的一存储器控制器,其中该快闪存储器的数据读取过程包括一低密度同位元查核(low-densityparity-check,LDPC)解码过程,且该LDPC解码过程包括一初始阶段、一解码阶段及一输出阶段,该快闪存储器的存取方法包括:经由一储存程序将数据储存至该数据储存装置的一快闪存储器;在该初始阶段,该方法包括:从一通道值存储器取得从该快闪存储器所读取的该通道值;依据该通道值以计算出一征状值;以及因应于该征状值不为0,将一变数节点存储器中的多个项目之每一者对应的暂存器的数值设定为0,并进入该解码阶段。
在一些实施例中,在该解码阶段,该存储器控制器不从该通道值存储器取得从该快闪存储器所读取的该通道值。
在一些实施例中,在该解码阶段,于每次LDPC解码迭代的期间,该方法还包括:依据该征状值以计算一征状权重;从变数节点存储器取得先前码字中具有该暂存器的数值为1的一或多个第一码字位元,并将该先前码字中的其他第二码字位元视为0;依据该征状权重执行位元翻转(bit-flipping)演算法以翻动该先前码字中的该等第一码字位元及该等第二码字位元中的一或多个码字字元以产生一更新码字;将该更新码字减去该先前码字以产生该码字差值;以及将该码字差值传送至该检查节点单元以更新该征状值。
在一些实施例中,在将该码字差值传送至该检查节点单元以更新该征状值之前,该方法还包括:将该更新码字中不为0的一或多个码字位元相应的更新旗标设定为1;将该更新码字中具有该更新旗标为1的该一或多个码字位元写入该变数节点存储器;以及将写入至该变数节点存储器的各码字位元相应的该暂存器的数值设定为1。
在一些实施例中,在该解码阶段,该方法还包括:因应于该征状值等于0或迭代次数已达到一上限值,结束该解码阶段并进入该输出阶段。
在一些实施例中,在该输出阶段,该方法还包括:将该变数节点存储器所储存的该更新码字输出为一变数节点符号值;将该变数节点符号值设定为一误差值;以及依据该通道值及该变数节点存储器的各项目相应的该暂存器的数值以计算解码结果的各位元。
在一些实施例中,该方法还包括:因应于该解码结果的特定位元在该变数节点存储器中相应的该暂存器的数值为0,将该通道值设定为该特定位元;以及因应于该解码结果的特定位元在该变数节点存储器中相应的该暂存器的数值为1,将该特定位元相应的该变数节点符号值与该通道值进行互斥或(XOR)运算以得到该特定位元。
附图说明
图1A为同位元检查矩阵的示意图。
图1B为坦纳图(Tanner Graph)的示意图。
图2为依据本发明一实施例的数据储存装置的方块图。
图3为查核码检查矩阵及查核码产生矩阵的示意图。
图4为依据本发明第一实施例中的解码器215的方块图。
图5为依据本发明第二实施例中的解码器215的方块图。
图6为依据本发明第三实施例中的解码器215的方块图。
图7A-7C为依据本发明一实施例中的快闪存储器的存取方法的流程图。
【符号说明】
200:数据储存装置
210:存储器控制器
211:处理单元
212:储存单元
213:启动程序
214:编码器
215:解码器
216:控制逻辑
218:缓冲存储器
2181:通道值存储器
2182:变数节点存储器
2183:暂存器
220:快闪存储器
230:主机
240:实体区块
241:实体页面
250、252:存取接口
261:乱数编译器
262:乱数解译器
410:变数节点单元
420:检查节点单元
430、530、630:互斥或闸
4101:更新旗标
S705、S712-S716、S721-S726、S732-S734:步骤
S710:初始阶段
S720:解码阶段
S730:输出阶段
H:同位元检查矩阵
c:列数
t:行数
M、K、P:矩阵
K-1:反矩阵
syndrome:征状值
CH_sgn:通道值
Diff:码字差值;
VN_prev:先前码字
VN_new:更新码字
C1-C4:检查节点
V1-V7:变数节点
具体实施方式
以下说明为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求范围。
必须了解的是,使用于本说明书中的"包含"、"包括"等词,用以表示存在特定的技术特征、数值、方法步骤、作业处理、元件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、元件、组件,或以上的任意组合。
于申请专利范围中使用如"第一"、"第二"、"第三"等词用来修饰申请专利范围中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。
图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中的变数节点单元410及检查节点单元420的电路功能与图4相同,但图5的数据控制流程与图4不同。
举例来说,在初始阶段,解码器215开始进行LDPC解码,且变数节点单元410会将变数节点存储器2182中所暂存的先前码字重置为0。初始阶段即为第一次迭代运算,变数节点单元410同样会由通道值存储器2181取得通道值CH_sgn,并将通道值CH_sgn直接旁路传送(bypass)至检查节点单元420。
检查节点单元420依据初始的通道值计算出第一次迭代运算的征状值(syndrome),并将所计算出的征状值传送至变数节点单元410。变数节点单元410可依据来自检查节点单元420的征状值以判断是否需要继续进行后续变数节点的运算。若征状值为0,变数节点单元410判断不需要继续进行后续变数节点的运算,并结束初始阶段,并进入输出阶段。若征状值不为0,则变数节点单元410则直接将更新码字VN_new设定为0并将更新码字VN_new写入变数节点存储器2182,并结束初始阶段,并进入解码阶段。
在解码阶段中,解码器215中的变数节点单元410及检查节点单元420会持续进行迭代(iteration),直到检查节点单元420所产生的征状值为止或是已达到迭代次数的上限值为止。然而,图5的实施例与图4实施例不同之处,在于解码阶段的每次迭代运算的期间,变数节点单元410由变数节点存储器2182取得先前码字VN_prev,但并不从通道值存储器2181取得通道值CH_sgn。故在解码阶段中,可关闭通道值存储器2181以节省功耗。
变数节点单元410并依据来自检查节点单元420的征状值syndrome以计算出一征状权重(syndrome weight),并依据征状权重执行上述位元翻转演算法以决定在先前码字VN_prev中一或多个码字位元需要进行位元翻转。接着,变数节点单元410将通道值进行位元翻转后产生的更新码字VN_new储存至变数节点存储器2182以供后续的迭代运算使用。变数节点单元410并计算上述更新码字VN_new与先前码字VN_prev之间的差值Diff,并将差值Diff传送至检查节点单元420以进行征状(syndrome)值的相关运算。当在解码阶段中的一特定迭代运算所产生的征状值为0或是迭代次数已达到一上限值,则解码阶段结束,并进入输出阶段。
在输出阶段,解码器215将储存于变数节点存储器2182中的更新码字VN_new输出为变数节点符号值VN_sgn,并将变数节点符号值VN_sgn与通道值CH_sgn经过互斥或闸430以得到解码结果。因为变数节点存储器2182所储存的更新码字VN_new即为杂讯e经过迭代运算后得到的结果,故可将变数节点存储器2182所输出的变数节点符号值VN_sgn做为误差值,其中利用上述误差值可得知通道值中有几个位元产生错误,故可用于判断快闪存储器220目前的健康状况(health status)。
详细而言,在图5的实施例中的解码阶段,变数节点单元410例如仅对码字差值进行相关运算,但最后仍然可得到与图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实施例中的初始阶段,变数节点单元410则直接将更新码字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%以下,故可大幅节省进行解码器215的功耗。此外,在图5实施例中的解码阶段并不用存取通道值存储器2181,故通道值存储器2181的数据线的切换率为0,可进一步降低解码器215的功耗。
式(5)的运算过程例如可对应至图5实施例中的解码阶段,意即在每次LDPC的迭代中均是对杂讯e进行运算,且当解码阶段结束时,储存于变数节点存储器2182中的码字结果(例如称为变数节点符号值VN_sgn)即为误差值,且将变数节点符号值VN_sgn与通道值CH_sgn经过互斥或闸530即可得到解码结果。
图6为依据本发明第三实施例中的解码器215的方块图。在第三实施例中,在图6中的变数节点单元410及检查节点单元420的电路功能与图5相同,但图6的数据控制流程与图5略有不同。
举例来说,在图6中的变数节点存储器2182包括多个暂存器2183(例如称为暂存器VNMem_vld),用以记录在变数节点存储器2182中的各项目(entry)的有效性。当在变数节点存储器2182中的特定项目所对应的暂存器的数值=0,表示该特定项目的数据是无效的,且变数节点单元410在该特定项目的后续运算均以0进行处理。在初始阶段中,变数节点单元410并不写入数据至变数节点存储器2182,而是将各个暂存器2183的数值均设定为0,意即变数节点单元410已在初始阶段先将变数节点存储器2182中的各项目的数据视为无效数据或未更动的数据。因此,在初始阶段中,可以省略变数节点存储器2182的数据存取操作,故可进一步节省存储器控制器210的功耗。
在解码阶段中,变数节点单元410会判断在变数节点存储器2182中的各个暂存器2183的数值,并从变数节点存储器2182读取暂存器数值=1所相应的项目的数据。举例来说,若在变数节点存储器2182中的特定项目相应的暂存器2183的数值为1,表示该特定项目所储存的数据为有效数据,且变数节点单元410在解码过程中会从变数节点存储器2182读取该特定项目的数据以进行迭代运算。若在变数节点存储器2182中的特定项目相应的暂存器2183的数值为0,则变数节点单元410在解码过程中不会从变数节点存储器2182读取该特定项目的数据,而是将该特定项目对应的数据直接视为0。
接着,变数节点单元410依据征状值以计算征状权重,并依据征状权重以执行位元翻转演算法以翻转先前码字中之一或多个码字位元以产生更新码字。变数节点单元410中所设置的多个更新旗标4101则是对应在更新码字的各位元的汇流排,且变数节点单元410会依据更新码字的结果以设定更新码字的各位元相应的更新旗标4101。举例来说,若更新码字中的特定位元不为0(意即等于1),则变数节点单元410会将该特定位元相应的更新旗标设定为1,并将在更新码字中更新旗标为1的一或多个码字位元写入至变数节点存储器2182,再将写入至变数节点存储器2182的各码字位元相应的暂存器2183的数值设定为1。
详细而言,变数节点单元410依据各个暂存器2183的数值以决定是否要从变数节点存储器2183读取相应项目的数据。若变数节点存储器2182中的特定项目相应的暂存器数值为0,则变数节点单元410在解码阶段中并不会从变数节点存储器2182读取该特定项目的数据,而是将该特定项目的数据视为0以进行后续迭代运算,故可降低对变数节点存储器2182的读取操作数量以降低功耗。
此外,变数节点单元410在解码阶段中亦不会将整个更新码字写入至变数节点存储器2182,而是依据各个更新旗标4101的数值以将更新码字中的一或多个码字位元写入至变数节点存储器2182,故可降低对变数节点存储器2182的写入操作数量以降低功耗。
当上述一或多个码字位元写入至变数节点存储器2182后,表示该一或多个码字位元所在的项目所储存的数据为有效数据,故变数节点单元410将该一或多个码字位元所在的项目相应的暂存器2183的数值设定为1。因此,变数节点单元410在下一次迭代运算时,则可从变数节点存储器2182读取暂存器数值为1的项目的有效数据。
在输出阶段中,变数节点存储器2182所储存的更新码字即可输出为变数节点符号值VN_sgn,且解码器215可将变数节点符号值VN_sgn设定为误差值。此外,关于LDPC的解码结果的各位元则需视各暂存器2183的数值以进行按位运算(bitwise operation)。举例来说,当解码结果中的特定位元相应的暂存器2183的数值为1,解码器215将变数节点符号值VN_sgn与通道值CH_sgn进行互斥或(XOR)运算以得到该特定位元。当解码结果中的特定位元相应的暂存器2183的数值为0,解码器215将通道值CH_sgn设定为该特定位元。换句话说,解码结果的各位元前面均设置一多工器,其选择信号即为解码结果的各位元相应的暂存器2183的数值(例如VNMem_vld)。若解码结果有n个位元,则上述选择操作可用式(6)表示:
图7A-7C为依据本发明一实施例中快闪存储器的存取方法的流程图。请同时参考第2、6、7A-7C图,快闪存储器的数据读取过程包括LDPC解码过程,且LDPC解码过程包括初始阶段S710、解码阶段S720及输出阶段S730。在步骤S705,经由一储存程序将数据储存至数据储存装置200的快闪存储器220。举例来说,上述储存程序例如可将主机欲储存至数据储存装置200的数据经过编码流程(例如为LDPC编码),并将编码后的数据写入至快闪存储器220。
初始阶段S710:
在步骤S712,变数节点单元410从通道值存储器2181取得从快闪存储器220所读取的一通道值,并将通道值传送至检查节点单元420以计算出征状值。因为是在LDPC解码过程中的第一次迭代运算,故变数节点单元410需先将通道值旁通传送至检查节点单元420以计算征状值。
在步骤S714,变数节点单元410判断征状值是否等于0?若征状值等于0,则直接进入输出阶段S730中的步骤S732。若征状值不等于0,则执行步骤S716。举例来说,征状值等于0表示通道值没有错误,故可直接结束初始阶段S710,并进入输出阶段S730。征状值不等于0表示通道值有错误,故需进行后续的解码阶段S720。
在步骤S716,变数节点单元410将更新码字设定为0并写入至变数节点存储器2182。将更新码字设定为0的用义可参考前述实施例中关于式(4)及式(5)的说明。
解码阶段S720:
在步骤S721,变数节点单元410依据征状值计算征状权重(syndrome weight)。
在步骤S722,变数节点单元410由变数节点存储器2182取得先前码字中具有暂存器数值为1的一或多个有效码字位元,并将该先前码字中的其他码字位元视为0。举例来说,变数节点单元410依据各个暂存器2183的数值以决定是否要从变数节点存储器2182读取相应项目的数据。若变数节点存储器2182中的特定项目相应的暂存器数值为0,则变数节点单元410在解码阶段中并不会从变数节点存储器2182读取该特定项目的数据,而是将该特定项目的数据视为0以进行后续迭代运算,故可降低对变数节点存储器2182的读取操作数量以降低功耗。因为在初始阶段中已将一开始的更新码字设定0,故在此步骤中的先前码字可视为误差码字,且是针对误差样式进行迭代运算。需注意的是,在此步骤中,变数节点单元410并不需再从通道值存储器2181读取通道值。
在步骤S723,变数节点单元410依据征状权重执行位元翻转演算法以翻转先前码字中之一或多个码字位元以产生更新码字。
在步骤S724,变数节点单元410将更新码字中不为0的位元相应的更新旗标设定为1,将更新码字中更新旗标为1的一或多个码字位元写入变数节点存储器2182,并将写入至变数节点存储器的各码字位元相应的暂存器数值设定为1。举例来说,变数节点单元410在解码阶段中不会将整个更新码字写入至变数节点存储器2182,而是依据各个更新旗标4101的数值以将更新码字中的一或多个码字位元写入至变数节点存储器2182,故可降低对变数节点存储器2182的写入操作数量以降低功耗。当上述一或多个码字位元写入至变数节点存储器2182后,表示该一或多个码字位元所在的项目所储存的数据为有效数据,故变数节点单元410将该一或多个码字位元所在的项目相应的暂存器2183的数值设定为1。因此,变数节点单元410在下一次迭代运算时,则可从变数节点存储器2182读取暂存器数值为1的项目的有效数据。
在步骤S725,变数节点单元410将更新码字及先前码字的差值Diff传送至检查节点单元420以计算出征状值。类似地,此步骤中的更新码字同样可视为更新的误差码字,且是针对误差样式进行迭代运算。
在步骤S726,变数节点单元410判断征状值是否等于0。若征状值等于0,则结束解码阶段S720并进入输出阶段S730的步骤S732。若征状值不等于0,表示仍然需要继续进行迭代运算,故需回到步骤S721。此外,变数节点单元410于此步骤可再判断是否已达到迭代次数的上限值。若是,则同样结束解码阶段S720并进入输出阶段S730的步骤S732。若否且征状值不等于0,则回到步骤S721。
输出阶段S730:
在步骤S732,解码器215将变数节点存储器2182所储存的更新码字输出为变数节点符号值VN_sgn,并将变数节点符号值VN_sgn设定为误差值。
在步骤S734,解码器215依据通道值CH_sgn及变数节点存储器2182的各项目相应的暂存器数值以计算解码结果的各位元。举例来说,关于LDPC的解码结果的各位元则需视各暂存器2183的数值以进行按位运算(bitwise operation)。当解码结果中的特定位元相应的暂存器2183的数值为1,解码器215将该特定位元相应的变数节点符号值VN_sgn与通道值CH_sgn进行互斥或(XOR)运算以得到该特定位元。当解码结果中的特定位元相应的暂存器2183的数值为0,解码器215将通道值CH_sgn设定为该特定位元。换句话说,解码结果的各位元前面均设置一多工器,其选择信号即为解码结果的各位元相应的暂存器2183的数值(例如VNMem_vld),其中上述选择操作可参考式(6)。
综上所述,本发明提出一种存储器控制器及快闪存储器的存取方法,其可改变在解码器中在解码阶段的变数节点单元及检查节点单元的数据控制流程,并可对误差样式进行迭代计算,故可让在变数节点单元中所存取的码字数据中的1的比例大幅下降,进而大幅降低数据线的切换率并降低解码器的功耗。本发明的存储器控制器除了在解码阶段中可不存取通道值存储器的通道值,且可进一步依据变数节点存储器的各项目相应的暂存器数值以决定是否要从变数节点存储器读取相应项目的数据、以及依据更新旗标的数值以决定是否将更新码字中的一或多个码字位元写入至变数节点存储器,故可降低对变数节点存储器的读取操作数量及写入操作数量以进一步降低存储器控制器的解码器在进行LDPC解码时的功耗。
本发明虽以较佳实施例揭露如上,然其并非用以限定本发明的范围,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当由权利要求书界定为准。

Claims (14)

1.一种存储器控制器,其中该存储器控制器所执行的低密度同位元查核(low densityparity-check,LDPC)解码流程依序包括一初始阶段、一解码阶段及一输出阶段,该存储器控制器包括:
一变数节点单元;以及
一检查节点单元,
其中,在该初始阶段,该变数节点单元执行:
从一通道值存储器取得从一快闪存储器所读取的该通道值;
将该通道值传送至该检查节点单元以计算出一征状值;以及
因应于该征状值不为0,将一变数节点存储器中的多个项目之每一者对应的暂存器的数值设定为0,并进入该解码阶段。
2.如权利要求1所述的存储器控制器,其特征在于,在该解码阶段,该变数节点单元不从该通道值存储器取得从该快闪存储器所读取的该通道值。
3.如权利要求1所述的存储器控制器,其特征在于,在该解码阶段,于每次LDPC解码迭代的期间,该变数节点单元执行:
依据该征状值以计算一征状权重;
从变数节点存储器取得先前码字中具有该暂存器的数值为1的一或多个第一码字位元,并将该先前码字中的其他第二码字位元视为0;
依据该征状权重执行位元翻转(bit-flipping)演算法以翻动该先前码字中的该等第一码字位元及该等第二码字位元中的一或多个码字字元以产生一更新码字;
将该更新码字减去该先前码字以产生该码字差值;以及
将该码字差值传送至该检查节点单元以更新该征状值。
4.如权利要求3所述的存储器控制器,其特征在于,在该解码阶段,于每次LDPC解码迭代的期间:
在将该码字差值传送至该检查节点单元以更新该征状值之前,该变数节点单元更将该更新码字中不为0的一或多个码字位元相应的更新旗标设定为1、将该更新码字中具有该更新旗标为1的该一或多个码字位元写入该变数节点存储器、并将写入至该变数节点存储器的各码字位元相应的该暂存器的数值设定为1。
5.如权利要求1所述的存储器控制器,其特征在于,在该解码阶段,因应于该变数节点单元判断该征状值等于0或迭代次数已达到一上限值,该变数节点单元结束该解码阶段并进入该输出阶段。
6.如权利要求1所述的存储器控制器,其特征在于,在该输出阶段,该存储器控制器将该变数节点存储器所储存的该更新码字输出为一变数节点符号值,并将该变数节点符号值设定为一误差值,
其中该存储器控制器依据该通道值及该变数节点存储器的各项目相应的该暂存器的数值以计算解码结果的各位元。
7.如权利要求6所述的存储器控制器,其特征在于,因应于该解码结果的特定位元在该变数节点存储器中相应的该暂存器的数值为0,该存储器控制器将该通道值设定为该特定位元,
其中,因应于该解码结果的特定位元在该变数节点存储器中相应的该暂存器的数值为1,该存储器控制器将该特定位元相应的该变数节点符号值与该通道值进行互斥或(XOR)运算以得到该特定位元。
8.一种快闪存储器的存取方法,应用于一数据储存装置中的一存储器控制器,其中该快闪存储器的数据读取过程包括一低密度同位元查核(low-density parity-check,LDPC)解码过程,且该LDPC解码过程包括一初始阶段、一解码阶段及一输出阶段,该快闪存储器的存取方法包括:
经由一储存程序将数据储存至该数据储存装置的一快闪存储器;
在该初始阶段,该方法包括:
从一通道值存储器取得从该快闪存储器所读取的该通道值;
依据该通道值以计算出一征状值;以及
因应于该征状值不为0,将一变数节点存储器中的多个项目之每一者对应的暂存器的数值设定为0,并进入该解码阶段。
9.如权利要求8所述的快闪存储器的存取方法,其特征在于,在该解码阶段,该存储器控制器不从该通道值存储器取得从该快闪存储器所读取的该通道值。
10.如权利要求8所述的快闪存储器的存取方法,其特征在于,在该解码阶段,于每次LDPC解码迭代的期间,该方法还包括:
依据该征状值以计算一征状权重;
从变数节点存储器取得先前码字中具有该暂存器的数值为1的一或多个第一码字位元,并将该先前码字中的其他第二码字位元视为0;
依据该征状权重执行位元翻转(bit-flipping)演算法以翻动该先前码字中的该等第一码字位元及该等第二码字位元中的一或多个码字字元以产生一更新码字;
将该更新码字减去该先前码字以产生该码字差值;以及
将该码字差值传送至该检查节点单元以更新该征状值。
11.如权利要求10所述的快闪存储器的存取方法,其特征在于在将该码字差值传送至该检查节点单元以更新该征状值之前,该方法还包括:
将该更新码字中不为0的一或多个码字位元相应的更新旗标设定为1;
将该更新码字中具有该更新旗标为1的该一或多个码字位元写入该变数节点存储器;以及
将写入至该变数节点存储器的各码字位元相应的该暂存器的数值设定为1。
12.如权利要求8所述的快闪存储器的存取方法,其特征在于,在该解码阶段,该方法还包括:
因应于该征状值等于0或迭代次数已达到一上限值,结束该解码阶段并进入该输出阶段。
13.如权利要求8所述的快闪存储器的存取方法,其特征在于,在该输出阶段,该方法还包括:
将该变数节点存储器所储存的该更新码字输出为一变数节点符号值;
将该变数节点符号值设定为一误差值;以及
依据该通道值及该变数节点存储器的各项目相应的该暂存器的数值以计算解码结果的各位元。
14.如权利要求13所述的快闪存储器的存取方法,其持征在于,还包括:
因应于该解码结果的特定位元在该变数节点存储器中相应的该暂存器的数值为0,将该通道值设定为该特定位元;以及
因应于该解码结果的特定位元在该变数节点存储器中相应的该暂存器的数值为1,将该特定位元相应的该变数节点符号值与该通道值进行互斥或(XOR)运算以得到该特定位元。
CN202211097215.0A 2022-08-18 2022-09-08 存储器控制器及快闪存储器的存取方法 Pending CN117631962A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
TW111131088 2022-08-18
TW111131088A TWI831333B (zh) 2022-08-18 2022-08-18 記憶體控制器及快閃記憶體的存取方法

Publications (1)

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

Family

ID=89848003

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211097215.0A Pending CN117631962A (zh) 2022-08-18 2022-09-08 存储器控制器及快闪存储器的存取方法

Country Status (3)

Country Link
US (1) US11901912B1 (zh)
CN (1) CN117631962A (zh)
TW (1) TWI831333B (zh)

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2122778B (en) * 1982-06-29 1985-09-11 Sony Corp Digital audio signal processing
US4928280A (en) * 1988-04-29 1990-05-22 International Business Machines Corporation Fast processor for multi-bit error correction codes
US8464142B2 (en) * 2010-04-23 2013-06-11 Lsi Corporation Error-correction decoder employing extrinsic message averaging
US8458555B2 (en) * 2010-06-30 2013-06-04 Lsi Corporation Breaking trapping sets using targeted bit adjustment
US9459956B2 (en) * 2013-07-19 2016-10-04 Seagate Technology Llc Data decoder with trapping set flip bit mapper
CN104518801A (zh) * 2013-09-29 2015-04-15 Lsi公司 非二进制的分层低密度奇偶校验解码器
TWI537966B (zh) * 2014-10-03 2016-06-11 群聯電子股份有限公司 錯誤處理方法、記憶體儲存裝置及記憶體控制電路單元
US10367526B2 (en) * 2015-11-23 2019-07-30 Avago Technologies International Sales Pte. Limited Irregular low density parity check processing system with non-uniform scaling
TWI592937B (zh) * 2016-07-05 2017-07-21 大心電子(英屬維京群島)股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US10110249B2 (en) * 2016-08-23 2018-10-23 Sandisk Technologies Llc Column-layered message-passing LDPC decoder
US10530392B2 (en) * 2017-07-31 2020-01-07 Codelucida, Inc. Vertical layered finite alphabet iterative decoding
KR102588969B1 (ko) * 2019-03-19 2023-10-16 에스케이하이닉스 주식회사 오류 정정 디코더 및 이를 포함하는 메모리 시스템
TWI739157B (zh) * 2019-09-18 2021-09-11 慧榮科技股份有限公司 快閃記憶體控制器、儲存裝置及讀取方法
TWI718060B (zh) * 2019-12-09 2021-02-01 慧榮科技股份有限公司 記憶體控制器及快閃記憶體的存取方法
TWI697000B (zh) * 2019-12-09 2020-06-21 慧榮科技股份有限公司 記憶體控制器及快閃記憶體的存取方法
TWI697907B (zh) * 2020-01-14 2020-07-01 慧榮科技股份有限公司 記憶體控制器及快閃記憶體的存取方法
US11496155B2 (en) * 2020-04-09 2022-11-08 Codelucida, Inc. Method and apparatus for vertical layered decoding of quasi-cyclic low-density parity check codes using predictive magnitude maps
TW202205815A (zh) * 2020-06-10 2022-02-01 美商科得魯西達股份有限公司 用於自循環置換矩陣之叢集建構之準循環低密度奇偶檢查碼之垂直分層解碼之方法及裝置

Also Published As

Publication number Publication date
TW202409837A (zh) 2024-03-01
TWI831333B (zh) 2024-02-01
US11901912B1 (en) 2024-02-13
US20240063822A1 (en) 2024-02-22

Similar Documents

Publication Publication Date Title
CN113032178B (zh) 存储器控制器及快闪存储器的存取方法
CN113190375B (zh) 存储器控制器及快闪存储器的存取方法
US11996865B2 (en) Data storage device
KR102559925B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
KR20160090054A (ko) 플래시 메모리 시스템 및 그의 동작 방법
CN111726121B (zh) 错误校正解码器和具有该错误校正解码器的存储器系统
US20170134049A1 (en) Decoding method, memory storage device and memory control circuit unit
US10200063B2 (en) Memory controller, semiconductor memory system and operating method thereof
CN110673979A (zh) 存储器控制器及其操作方法
CN111756385A (zh) 错误校正解码器
KR102606829B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
KR102582326B1 (ko) 에러 정정 회로 및 이의 동작 방법
TWI718060B (zh) 記憶體控制器及快閃記憶體的存取方法
US10826531B2 (en) Error correction circuit and operating method thereof
KR102668208B1 (ko) Ldpc 디코더, ldpc 디코더의 동작 방법 및 반도체 메모리 시스템
CN117631962A (zh) 存储器控制器及快闪存储器的存取方法
US11876535B1 (en) Memory controller and method for controlling data in decoding pipeline
US20240061586A1 (en) Memory controller and method for bit flipping of low-density parity-check codes
CN116743188A (zh) 存储系统和控制存储系统的方法
CN117335814A (zh) 低密度奇偶校检码的译码方法和装置
CN117472643A (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