CN101950586A - 存储控制器及控制数据读取的方法 - Google Patents

存储控制器及控制数据读取的方法 Download PDF

Info

Publication number
CN101950586A
CN101950586A CN2010101176629A CN201010117662A CN101950586A CN 101950586 A CN101950586 A CN 101950586A CN 2010101176629 A CN2010101176629 A CN 2010101176629A CN 201010117662 A CN201010117662 A CN 201010117662A CN 101950586 A CN101950586 A CN 101950586A
Authority
CN
China
Prior art keywords
data
circuit
scalable
memory controller
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.)
Granted
Application number
CN2010101176629A
Other languages
English (en)
Other versions
CN101950586B (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.)
MediaTek Inc
Original Assignee
MediaTek 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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=42785823&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN101950586(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by MediaTek Inc filed Critical MediaTek Inc
Publication of CN101950586A publication Critical patent/CN101950586A/zh
Application granted granted Critical
Publication of CN101950586B publication Critical patent/CN101950586B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • 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
    • 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/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields

Landscapes

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

Abstract

本发明提供了一种存储控制器及控制数据读取的方法。其中,存储控制器包含:编码电路,可编程以支持多个不同有限域,编码电路根据可调节有限域设置,产生已编码输入数据;以及控制电路,耦接于编码电路,用于控制可调节有限域设置,以及根据已编码输入数据,将此输入数据记录到存储装置中。本发明提供的存储控制器及控制数据读取的方法可以通过动态的调节误差校正能力,来满足不同应用的需求。

Description

存储控制器及控制数据读取的方法
技术领域
本发明是关于一种存储控制器以及控制数据读取的方法,用于控制将数据记录到存储装置及/或从存储装置中读取数据,且特别是关于一种具有可编程的编码电路/解码电路的存储控制器以及控制数据读取的方法,来支持多个有限域、多个码字长度及/或多个误差校正能力。
背景技术
误差检测以及校正技术是用来有效的校正由不同因素所造成的误差,以获得无误差数据。以闪存为例,闪存的价格/性能上的持续改进使闪存成为了许多应用中存储的长期选择。然而,在制造期间,闪存可能存在缺陷(defect)(例如,有缺陷的内存单元(memory cell)),并且在此装置的使用期间,还可能出现更多的缺陷,因此其应用受到了限制。为了处理这些缺陷以及实现有效、可靠的操作,内存系统一般使用误差检测以及校正技术,来保证可靠的数据复制(data reproduction)。
在传统的闪存装置中,通常使用博斯-查德胡里-霍昆格母(Bose-Chaudhuri-Hocquenghem,以下简称为BCH)编码,来检测以及校正数据误差。码字长度以及BCH编码的误差校正能力由公式n-k≤m·t来决定,其中,n表示BCH码字长度(例如,用户数据以及奇偶校验(parity)的总长度),k表示用户数据的长度,m表示有限域(亦可称为高氏场),且t表示误差校正能力。
对于单层单元(single-level-cell,以下简称为SLC)闪存装置,由不同制造商所制造的SLC闪存装置的错误校正码(error correction code,以下简称为ECC)需求是相似的。由于所要求的ECC需求相似,因此,在有限域GF(2^13)中提供BCH码的同一个控制芯片,可以用来满足由不同制造商所制造的SLC闪存装置的ECC需求。
然而,对于多层单元(multi-level-cell,以下简称为MLC)闪存装置,由不同制造商所制造的MLC闪存装置具有不同的页面长度以及ECC需求。此外,不同的ECC码字长度需要不同的有限域。举例而言,512字节(byte)的用户数据长度通常要求使用有限域GF(2^13),1K字节的用户数据长度通常要求使用有限域GF(2^14);以及2K字节的用户数据长度通常要求使用有限域GF(2^15)。因此,MLC闪存装置的传统控制芯片只支持MLC闪存装置所需求的单一有限域以及单一误差校正能力。也就是,支持单一有限域以及单一误差校正能力的同一个控制芯片,不能应用在具有不同页面长度以及ECC需求的不同MLC闪存装置中。
支持单一有限域以及单一误差校正能力的传统控制芯片缺乏弹性。举例而言,使用单一及固定有限域的控制芯片无法支持较长的码字长度,而且当其支持较短的码字长度时,使用了更多的奇偶校验位,这样就浪费了闪存装置的备用区。另外,使用单一及固定有限域的控制芯片不能动态调节误差校正能力,以作为对不同应用需求的响应。
因此,需要一种可以满足不同ECC需求的可编程存储控制器,以达到最大化的数据保护。
发明内容
为解决以上技术问题,本发明提供了一种存储控制器及控制数据读取的方法。
本发明提供了一种存储控制器,控制存储装置的数据读取。所述存储控制器包含:编码电路,可编程以支持多个不同有限域,所述编码电路根据可调节有限域设置,产生已编码输入数据;以及控制电路,耦接于编码电路,用于控制可调节有限域设置,以及根据已编码输入数据,将输入数据记录到存储装置中。
本发明另提供一种存储控制器,控制存储装置的数据读取。所述存储控制器包含:编码电路,可编程以支持多个不同误差校正能力,所述编码电路根据可调节误差校正能力设置,产生已编码输入数据;以及控制电路,耦接于编码电路,用于调节可调节误差校正能力设置,以及根据已编码输入数据,将输入数据记录到存储装置中。
本发明另提供一种存储控制器,控制存储装置的数据读取。所述存储控制器包含:编码电路,可编程以支持多个不同码字长度,所述编码电路根据可调节码字长度设置,产生已编码输入数据;以及控制电路,耦接于编码电路,用于调节可调节码字长度设置,以及根据已编码输入数据,将输入数据记录到存储装置中。
本发明另提供一种存储控制器,控制存储装置的数据读取。所述存储控制器包含:解码电路,可编程以支持多个不同有限域,所述解码电路根据可调节有限域设置,产生已解码读出数据;以及控制电路,耦接于解码电路,用于从存储装置中读取数据,来获得读出数据,以及控制可调节有限域设置。
本发明另提供一种存储控制器,控制存储装置的数据读取。所述存储控制器包含:解码电路,可编程以支持多个不同误差校正能力,所述解码电路根据可调节误差校正能力设置,产生已解码读出数据;以及控制电路,耦接于解码电路,用于从存储装置中读取数据,来获得读出数据,以及调节可调节误差校正能力设置。
本发明另提供一种存储控制器,控制存储装置的数据读取。所述存储控制器包含:解码电路,可编程以支持多个不同码字长度,所述解码电路根据可调节码字长度设置,产生已解码读出数据;以及控制电路,耦接于解码电路,用于从存储装置中读取数据,来获得读出数据,以及调节可调节码字长度设置。
本发明另提供一种控制数据读取的方法,控制存储装置的数据读取。所述控制数据读取的方法包含:控制可调节有限域设置,其中,可调节有限域设置是可编程的,来支持多个不同有限域;至少根据可调节有限域设置,来产生已编码输入数据;以及根据已编码输入数据,将输入数据记录到存储装置中。
本发明另提供一种控制数据读取的方法,控制存储装置的数据读取。所述控制数据读取的方法包含:从存储装置中读取数据,来获得读出数据;控制可调节有限域设置,其中,可调节有限域设置是可编程的,来支持多个不同有限域;以及通过至少根据该可调节有限域设置将读出数据解码,来产生已解码读出数据。
本发明提供的存储控制器及控制数据读取的方法可以通过动态的调节误差校正能力,来满足不同应用的需求。其中,存储控制器具有可编程的编码电路/解码电路,来支持多个有限域、多个码字长度及/或多个误差校正能力。
附图说明
图1是根据本发明第一实施方式的存储控制器的方块图。
图2是根据本发明第二实施方式的存储控制器的方块图。
图3是根据本发明第三实施方式的存储控制器的方块图。
图4是根据本发明另一实施方式的实现编码电路的示意图。
图5是根据本发明另一实施方式的实现解码电路的示意图。
图6是根据本发明另一实施方式的实现图5所示的校正子发生器的示意图。
图7是根据本发明另一实施方式的实现用于图5所示的BMA求解器中的通用可变乘法器的示意图。
图8是根据本发明另一实施方式的实现图5所示的陈氏寻根电路的示意图。
图9是编码电路/解码电路的操作的流程图,其中,与编码电路/解码电路对应的误差校正能力设置由输入数据/读出数据的有效值或属性来配置。
图10是编码电路/解码电路的操作的流程图,其中,与编码电路/解码电路对应的误差校正能力设置由解码误差率来配置。
图11是编码电路/解码电路的操作的流程图,其中,与编码电路/解码电路对应的误差校正能力设置由存储装置的硬件规格来配置。
图12是编码电路/解码电路的操作的流程图,其中,与编码电路/解码电路对应的码字长度设置由输入数据/读出数据的数据格式来配置。
图13是编码电路/解码电路的操作的流程图,其中,与编码电路/解码电路对应的码字长度设置由存储装置的硬件规格来配置。
图14是解码电路使用的重解码功能的操作的流程图。
具体实施方式
在本说明书以及权利要求书当中使用了某些词汇来指代特定的元件。本领域的技术人员应可理解,硬件制造商可能会用不同的名词来称呼同样的元件。本说明书及权利要求并不以名称的差异作为区分元件的方式,而是以元件在功能上的差异作为区分的准则。在通篇说明书及权利要求当中所提及的“包含”是一个开放式的用语,因此应解释成“包含但不限定于”。另外,“耦接”一词在此包含任何直接及间接的电气连接手段。因此,若文中描述第一装置耦接于第二装置,则代表第一装置可以直接电气连接于第二装置,或通过其它装置或连接手段间接地电气连接到第二装置。
本发明的原理是提供可以支持不同有限域的可编程存储控制器,其中,不同有限域可例如,有限域GF(2^13)、GF(2^14)以及GF(2^15)。更为可取的是,可编程存储控制器进一步支持不同误差校正能力(例如,可编程误差校正能力处于范围0-48之间)及/或不同码字长度(例如,包含512字节、1K字节以及2K字节用户数据的码字)。这样,可编程存储控制器可以被编程,来满足由不同制造商所制造的存储装置(例如,闪存装置或其他数据存储应用)的不同ECC需求。需注意,将后文实施方式中的存储控制器应用在闪存装置中只是用于说明,而并非用于限制本发明的保护范围。为了清楚的阐述本发明的精神,以下给出本发明的较佳实施方式。
图1是根据本发明第一实施方式的存储控制器的方块图。此实施方式中的存储控制器100包含编码电路102、控制电路104以及解码电路106,但本发明并不仅限于此。需注意,为使简明清楚,图1只显示了和本发明相关的元件。存储控制器100用来控制存储装置(例如,非易失性内存)101的数据读取,以及和主机(图中未显示)通讯。举例说明,使用非易失性内存实现的存储装置101可以是闪存装置,例如,MLC闪存应用,此例并非作为本发明的限定。编码电路102是可编程的,且可以至少支持多个不同有限域,例如,有限域GF(2^13)、GF(2^14)以及GF(2^15)。因此,当控制电路104接收来自主机的输入数据D1时,编码电路102将传输自控制电路104的输入数据D1编码,以至少根据与编码电路102对应的可调节有限域设置,产生已编码数据D1’,以及控制电路104根据产生自编码电路102的已编码数据D1’,来将数据记录到存储装置101中。
在一个实施方式中,控制电路104可以用微处理器(图中未显示)以及编码器/解码器控制器(图中未显示)来实现,其中,微处理器从存储器(例如,只读存储器)中读取脚本,以控制编码电路102以及解码电路106来选择特定有限域,以及编码器/解码器控制器控制存储装置101与编码电路102之间的数据传输,且控制存储装置101与解码电路106之间的数据传输。然而,这只是用于说明,而并非用于限制本发明的保护范围。也就是,控制电路104可以包含附加电路区块,来支持其他的功能。
在这个实施方式中,编码电路102包含寄存器112以及编码引擎114,其中,寄存器112用来存储编码系数P1,以及编码引擎114耦接于寄存器112,以根据存储在寄存器112中的编码系数P1将输入数据D1编码,来产生已编码数据D1’。应注意,当控制电路104接收用来对编码电路102的配置进行程序设计的指令码CODE_1时,控制电路104将编码系数P1写入寄存器112,作为对指令码CODE_1的响应。这样,编码电路102所对应的可调节有限域设置可以由编码系数P1来适当的配置。因此,编码电路102可被编程,来支持不同ECC需求。
在图1所示的实施方式中,解码电路106也是可编程的,且可以至少支持多个不同有限域,例如,有限域GF(2^13)、GF(2^14)以及GF(2^15)。因此,当控制电路104从存储装置101中读取数据,来获得读出数据D2时,解码电路106将传输自控制电路104的读出数据D2解码,来至少根据与解码电路106对应的可调节有限域设置,产生已解码数据D2’。然后,控制电路104将已解码数据D2’输出到主机(图中未显示)。在这个实施方式中,解码电路106包含寄存器122以及解码引擎124,其中,寄存器122用来存储解码参数P2,以及解码引擎124耦接于寄存器122,以根据存储在寄存器122中的解码参数P2将读出数据D2解码,来产生已解码数据D2’。应注意,当控制电路104接收用来对解码电路106的配置进行程序设计的指令码CODE_1时,控制电路104将解码参数P2写入寄存器122,作为对指令码CODE_1的响应。这样,解码电路106所对应的可调节有限域设置可以由解码参数P2来适当的配置。因此,解码电路106可被编程,来支持不同ECC需求。
综上所述,在图1所示的实施方式中,通过调节分别存储在寄存器112以及寄存器122中的编码系数P1以及解码参数P2,编码电路102以及解码电路106可以支持不同有限域。
请参照图2,图2是根据本发明第二实施方式的存储控制器的方块图。此实施方式中的存储控制器200包含编码电路202、控制电路204以及解码电路206,但本发明并不仅限于此。需注意,为使简明清楚,图2只显示了和本发明相关的元件。存储控制器200用来控制存储装置101的数据读取,以及和主机(图中未显示)通讯。类似的,编码电路202以及解码电路206中的每一个是可编程的,且可以至少支持多个不同有限域,例如,有限域GF(2^13)、GF(2^14)以及GF(2^15)。
对于编码电路202,其包含查找表(look-up table,以下简称为LUT)212以及编码引擎214,其中,LUT 212存储多个编码系数集CS_1到CS_N,每个编码系数集有多个编码系数,且将从预先存储的编码系数集CS_1到CS_N中所选择的特定编码系数集CS输出,作为对选择信号S1的响应,以及编码引擎214耦接于LUT 212,用来根据LUT 212提供的特定编码系数集CS将输入数据D1编码,来产生已编码数据D1’。应注意,当控制电路204接收用来对编码电路202的配置进行程序设计的指令码CODE_2时,控制电路204产生以上所述的选择信号S1到LUT 212,作为对指令码CODE_2的响应。这样,编码电路202所对应的可调节有限域设置可以由选择信号S1所选择的特定编码系数集CS来适当的配置。
对于解码电路206,其包含LUT 222以及解码引擎224,其中,LUT 222存储多个解码参数集PS_1到PS_M,每个解码参数集有多个解码参数,且将从解码参数集PS_1到PS_M中所选择的特定解码参数集PS输出,作为对选择信号S2的响应,以及解码引擎224耦接于LUT 222,用来根据LUT 222提供的特定解码参数集PS将读出数据D2解码,来产生已解码数据D2’。应注意,当控制电路204接收用来对解码电路206的配置进行程序设计的指令码CODE_2时,控制电路204产生以上所述的选择信号S2到LUT 222,作为对指令码CODE_2的响应。这样,解码电路206所对应的可调节有限域设置可以由选择信号S2所选择的特定解码参数集PS来适当的配置。
综上所述,在图2所示的实施方式中,通过从预先存储的编码系数集中选择期望编码系数集,以及从预先存储的解码参数集中选择期望解码参数集,编码电路202以及解码电路206可以支持不同有限域。
在以上所述的图1以及图2所示的实施方式中,编码电路102/202以及解码电路106/206是可编程的,通过简单的设定由编码电路102/202所使用的编码系数,以及设定由解码电路106/206所使用的解码参数,来支持期望的有限域。换句话说,因为使用了同样的编码引擎114/214以及解码引擎124/224,通过存储控制器100/200所采用的硬件共享技术,可以降低硬件成本。然而,使用单独硬件编码器以及解码器,而不实施此处的硬件共享来支持不同有限域,也是同样可行的。
请参照图3,图3是根据本发明第三实施方式的存储控制器的方块图。此实施方式中的存储控制器300包含编码电路302、控制电路304以及解码电路306。需注意,为使简明清楚,图3只显示了和本发明相关的元件。存储控制器300用来控制存储装置101的数据读取,以及和主机(图中未显示)通讯。类似的,编码电路302以及解码电路306中的每一个是可编程的,且可以至少支持多个不同有限域,例如,有限域GF(2^13)、GF(2^14)以及GF(2^15)。
对于编码电路302,其包含分别对应不同有限域的多个编码器(例如,图3所示的编码器312、314以及316),其中,不同有限域可例如,有限域GF(2^13)、GF(2^14)以及GF(2^15)。请注意,包含在编码电路302中的硬件编码器互不相同,且在编码电路302中实现的硬件编码器的数目可以基于设计需求来调节。当控制电路304接收用来对编码电路302的配置进行程序设计的指令码CODE_3时,控制电路304产生使能信号EN1到编码电路302,作为对指令码CODE_3的响应,来启动编码器312、314以及316中的一个,从而设定编码电路302的可调节有限域。换句话说,已启动的编码器用来根据其所指定的有限域设置将输入数据D1编码,来产生已编码数据D1’。这样,编码电路302所对应的可调节有限域设置可以由已选择的编码器来适当的配置,其中,已选择的编码器由使能信号EN1启动。
对于解码电路306,其包含分别对应不同有限域的多个解码器(例如,图3所示的解码器322、324以及326),其中,不同有限域可例如,有限域GF(2^13)、GF(2^14)以及GF(2^15)。请注意,包含在解码电路306中的硬件解码器互不相同,且在解码电路306中实现的硬件解码器的数目可以基于设计需求来调节。当控制电路304接收用来对解码电路306的配置进行程序设计的指令码CODE_3时,控制电路304产生使能信号EN2到解码电路306,作为对指令码CODE_3的响应,来启动解码器322、324以及326中的一个,从而设定解码电路306的可调节有限域。换句话说,已启动的解码器用来根据其所指定的有限域设置将读出数据D2解码,来产生已解码数据D2’。这样,解码电路306所对应的可调节有限域设置可通过已选择的解码器来适当的配置,其中,已选择的解码器由使能信号EN2启动。
综上所述,在图3所示的实施方式中,编码电路302以及解码电路306可以通过启动从预先建立的硬件编码器中所选择的期望编码器,以及启动从预先建立的硬件解码器中选择的期望解码器,来支持不同有限域。
需注意,图1到图3所示的实施方式只是用来说明,并非用来限定本发明的保护范围。举例说明,在一个替代设计中,图1所示的解码电路106可以由图2所示的解码电路206替换或由图3所示的解码电路306替换;在另一个替代设计中,图2所示的解码电路206可以由图1所示的解码电路106替换或由图3所示的解码电路306替换;又在另一个替代设计中,图3所示的解码电路306可以由图1所示的解码电路106替换或由图2所示的解码电路206替换。以上所述都应该涵盖在本发明的保护范围内。
为了表述清楚,以下将简要描述可编程编码电路以及可编程解码电路的实施方式中的电路实现。请参照图4,图4是根据本发明另一实施方式的实现编码电路的示意图。此实施方式中的编码电路400包含系数寄存器402、多个移位及按位(shift and bitwise)异或(exclusive-OR,以下简称为XOR)逻辑电路404、具有多个寄存器407的位移控制器406、以及复用器(multiplexer,以下简称为MUX)408。每个寄存器407存储对应存储装置(例如,闪存装置)中信道的部分编码奇偶校验结果(partial encoding parity result)。也就是,寄存器407的数目取决于存储装置的信道数目。当特定信道的数据通过数据总线(data bus)(例如,此实施方式中的8位数据总线)输入时,MUX 408在信道选择控制信号Ch_sel的控制下,输出特定通道已存储的部分编码奇偶校验结果,其中,信道选择控制信号Ch_sel产生自以上所述的控制电路。
移位及按位XOR逻辑电路404根据通过数据总线所传输的特定信道的数据,以及根据由MUX 408所提供的部分编码奇偶校验结果而操作,来产生下一部分编码奇偶校验结果,且随后位移控制器406存储这个特定通道的所述下一部分编码奇偶校验结果,其中,位移控制器406通过编码电路400与控制电路(例如,图1所示的控制电路104)之间的控制协议来控制。由于本领域技术人员熟知产生部分编码奇偶校验结果的细节,因此为了简洁,此处省略进一步的描述。应注意,生成多项式(generator polynomial)的系数是可编程的,且通过编码电路400与控制电路(例如,图1所示的控制电路104)之间的寄存器RW协议,被存储在系数寄存器402中。如图4所示,生成多项式的系数由移位及按位XOR逻辑电路404使用,来取得用于每个信道的期望部分编码奇偶校验结果。应注意,生成多项式用来在编码过程中产生ECC代码;此外,生成多项式也用来在解码过程中校验码字的正确度。然而,图4所示的实施方式的电路也可以用在可编程以支持多个有限域的解码电路中。
图5是根据本发明另一实施方式的实现解码电路的示意图。此实施方式中的解码电路500包含校正子发生器(syndrome generator)502、梅西算法(Berlekamp-Massey algorithm,以下简称为BMA)求解器(solver)504、陈氏寻根(Chien-search)电路506以及误差锁存器508,其中,校正子发生器502用于计算校正子的值。BMA求解器504解决关键方程式(key equation),且根据校正子的值来寻找误差位置多项式(error locator),陈氏寻根电路506根据误差位置多项式寻找实际误差位置,以及误差锁存器508存储实际误差位置的信息,来校正存储装置(例如,闪存装置)中的误差位。由于本领域技术人员熟知解码程序的流程,因此为了简洁,此处省略进一步的描述。本发明实施方式中的解码电路500与传统解码器(例如,BCH解码器)之间的区别在于:校正子发生器502、BMA求解器504以及陈氏寻根电路506可被编程,以支持不同有限域。举例说明,产生自控制电路(例如,控制电路104、204以及304)的控制信号Field_sel指示校正子发生器502、BMA求解器504以及陈氏寻根电路506,通过图1到图3所示的有限域配置方案中的一种,来支持已选择的有限域。举例说明,控制信号Field_sel可以是承载解码参数P2、选择信号S2或使能信号EN2的信号,此例并非作为本发明的限定。
图6是根据本发明另一实施方式的实现图5所示的校正子发生器502的示意图。在图5所示的解码电路500支持多个信道Ch_1到Ch_N的情形下,校正子发生器502具有分别对应通道Ch_1到Ch_N的多个寄存器602_1到602_N。通过复用器604以及606的适当控制,已选择的部分校正子数据P1_1,…,P1_N由校正子组合逻辑608来处理,对应的计算结果P2_1,…,P2_N回馈到寄存器602_1,…,602_N,且最终结果P3_1,…,P3_N回馈到以上所述的控制电路(例如,控制电路104、204以及304)。校正子组合逻辑608能够支持多个有限域,例如,有限域GF(2^13)、GF(2^14)以及GF(2^15),且由产生自控制电路的控制信号Field_sel来配置,以在已选择的有限域下执行校正子发生(syndromegeneration)。此外,控制信号Field_sel通过可编程的方式得到,且因此校正子组合逻辑608支持多个有限域。换句话说,校正子组合逻辑608是可编程的,以在控制信号Field_sel的控制下支持不同有限域。需注意,图6所示的实施方式中的电路也可以用在编码过程中。
图7是根据本发明另一实施方式的实现用在图5所示的BMA求解器504中的通用可变乘法器700的示意图。通用可变乘法器700能够支持多个不同有限域,例如,有限域GF(2^13)、GF(2^14)以及GF(2^15)。基元产生器(primitivegenerator)702从以上所述的控制电路(例如,控制电路104、204以及304)接收控制信号Field_sel,且随后设定用于已选择的有限域的需求系数。除此之外,根据已选择的有限域,加法器模块704、706以及708的输出中的一个有复用器710输出。举例说明,当已选择的有限域是有限域GF(2^13)时,复用器710选择加法器模块704的输出作为其输出;当已选择的有限域是有限域GF(2^14)时,复用器710选择加法器模块706的输出作为其输出;以及当已选择的有限域是有限域GF(2^15)时,复用器710选择加法器模块708的输出作为其输出。
图8是根据本发明另一实施方式的实现图5所示的陈氏寻根电路506的示意图。图5所示的陈氏寻根电路506包含多个高氏场(Galois field)乘法器802、804以及806,分别对应于不同有限域,例如,有限域GF(2^13)、GF(2^14)以及GF(2^15)。产生自以上所述的控制电路(例如,控制电路104、204以及304)的控制信号Field_sel决定使用高氏场乘法器802、804以及806中的哪一个,来运作在已选择的有限域下。更具体的,控制信号Field_sel控制高氏场乘法器802、804以及806的输出中的哪一个,由多任务器808输出到寄存器810。另外,另一个控制信号Seek_sel用来控制多任务器808,来将BMA求解器504的输出seek_dat[14:0]或已选择的高氏场乘法器的输出,传输到寄存器810。除此之外,在这个实施方式中,陈氏寻根电路506具有多个电源切断模式,分别用于不同有限域。
更为可取的,可编程编码电路(例如,BCH编码器)102、202、302以及解码电路(例如,BCH解码器)106、206、306也可以支持不同误差校正能力及/或不同码字长度。更具体的,编码电路/解码电路的一般化设计可以支持多个有限域、多个误差校正能力、多个码字长度或其组合。为了详细说明,后文提供了编码电路/解码电路设计的优选实施方式。
在编码电路102/202/302以及解码电路106/206/306也是可编程的,以支持不同误差校正能力的情形下,控制电路104/204/304进一步控制与编码电路102/202/302对应的可调节误差校正能力设置以及与解码电路106/206/306对应的可调节误差校正能力设置。因此,编码电路102/202/302根据对应的可调节有限域设置以及可调节误差校正能力设置,将输入数据D1编码,来产生已编码数据D1’,以及解码电路106/206/306根据对应的可调节有限域设置以及可调节误差校正能力设置,将读出数据D2解码,来产生已解码数据D2’。举例说明,控制电路104/204/304根据输入数据D1/读出数据D2的有效值或者属性,调节可调节误差校正能力设置。
图9是编码电路/解码电路的操作的流程图,其中,与编码电路/解码电路对应的误差校正能力设置由输入数据/读出数据的有效值或者属性来配置。在步骤902中,控制电路104/204/304检查输入数据D1的数据类型。如果数据类型显示了输入数据D1是控制数据或控制表(control data or table),控制电路104/204/304通过由误差校正能力T1来设定与编码电路102/202/302对应的可调节误差校正能力设置(步骤904)。另一方面,如果数据类型显示了输入数据D1是普通用户数据,控制电路104/204/304由第二误差校正能力T2来设定与编码电路102/202/302对应的可调节误差校正能力设置(步骤906)。在这个实施方式中,由于控制数据或控制表比普通用户数据更重要,因此第一误差校正能力T1大于第二误差校正能力T2是更为可取的。然后,编码电路102/202/302至少根据已配置的误差校正能力设置或由以上所述的有限域配置方案所设定的有限域设置,来执行数据编码操作(步骤908)。
对于数据解码,控制电路104/204/304检查读出数据D2的数据类型(步骤902)。如果数据类型显示了读出数据D2是控制数据或控制表,控制电路104/204/304由第一误差校正能力T1来设定与解码电路106/206/306对应的可调节误差校正能力设置(步骤904)。另一方面,如果数据类型显示了读出数据D2是普通用户数据,控制电路104/204/304由第二误差校正能力T2来设定与解码电路106/206/306对应的可调节误差校正能力设置(步骤906)。然后,解码电路106/206/306至少根据已配置的误差校正能力设置,来执行数据解码操作(步骤908)。
在一个替代设计中,控制电路104/204/304根据将读出数据D2解码的误差率,来调节与编码电路102/202/302以及解码电路106/206/306对应的可调节误差校正能力设置。
图10是编码电路/解码电路的操作的流程图,其中,与编码电路/解码电路对应的误差校正能力设置由解码误差率来配置。标志Pba_flag用来指示应该使用误差校正能力中的哪一个。在这个实施方式中,当标志Pba_flag没有被设置(asserted)(也就是,Pba_flag=0)时,采用误差校正能力T1;然而,当标志Pba_flag已被设置(也就是,Pba_flag=1)时,采用另一个误差校正能力T2。例如,误差校正能力T2大于误差校正能力T1。开始时,由于Pba_flag=0(步骤1002),因此编码电路102/202/302至少使用误差校正能力T1(步骤1003)或通过以上所述的有限域配置方案所设定的有限域,来执行数据编码操作(步骤1004),以将已编码数据写入存储装置(步骤1006)。除此之外,从存储装置中读取已存储的数据(步骤1008),由于Pba_flag=0(在步骤1010中决定),解码电路106/206/306至少使用误差校正能力T1或通过以上所述的有限域配置方案所设定的有限域,来执行数据解码操作(步骤1014)。
当控制电路104/204/304侦测出误差计数超出了预定阈值TH(在步骤1016中决定),这意味着误差率高于可接受水平,设置Pba_flag(步骤1018)。因此,由于Pba_flag=1,在数据编码操作中,编码电路102/202/302将使用大于误差校正能力T1的另一个误差校正能力T2(步骤1020),来将已编码数据写入存储装置(步骤1022),以及在数据解码操作中,解码电路106/206/306将使用大于误差校正能力T1的另一个误差校正能力T2(步骤1012)。
在另一个替代设计中,控制电路104/204/304根据存储装置101的硬件规格,来调节与编码电路102/202/302以及解码电路106/206/306对应的可调节误差校正能力设置。
图11是编码电路/解码电路的操作的流程图,其中,与编码电路/解码电路对应的误差校正能力设置由存储装置的硬件规格来配置。在步骤1102中,控制电路104/204/304检查存储装置101的硬件规格。举例说明,可以基于存储装置101的备用区大小来设定误差校正能力,其中,备用区被定义为用来存储奇偶校验数据。具体的,在存储装置101的备用区足够大的条件下,误差校正能力可以设定为高于存储装置101的制造商所定义的标称设置。
如果装置类型是类型A,控制电路104/204/304由第一误差校正能力T1来设定与编码电路102/202/302以及解码电路106/206/306对应的可调节误差校正能力设置(步骤1106)。另一方面,如果装置类型是类型B,控制电路104/204/304由第二误差校正能力T2来设定与编码电路102/202/302以及解码电路106/206/306对应的可调节误差校正能力设置(步骤1104)。然后,编码电路102/202/302至少根据其已配置的误差校正能力设置,来执行数据编码操作,以及解码电路106/206/306至少根据其已配置的误差校正能力设置,执行数据解码操作(步骤1108)。
在另一种情形下,编码电路102/202/302以及解码电路106/206/306也是可编程的,以支持不同码字长度,控制电路104/204/304进一步控制与编码电路102/202/302对应的可调节码字长度设置以及与解码电路106/206/306对应的可调节码字长度设置。因此,编码电路102/202/302至少根据对应的可调节有限域设置或可调节码字长度设置,将输入数据D1编码,来产生已编码数据D1’,以及解码电路106/206/306至少根据对应的可调节有限域设置或可调节码字长度设置,将读出数据D2编码,来产生已解码数据D2’。举例说明,控制电路104/204/304根据输入数据D1/读出数据D2的数据格式来调节可调节码字长度设置。
图12是编码电路/解码电路的操作的流程图,其中,与编码电路/解码电路对应的码字长度设置由输入数据/读出数据的数据格式来配置。在步骤1202中,控制电路104/204/304检查输入数据D1的数据格式。举例说明,定制(customized)的控制或信息数据的数据量通常较小。因此,如果数据格式显示了输入数据D1是定制的控制或信息数据,当将定制的控制或信息数据编码时,控制电路104/204/304可以使用较短的码字长度,从而增加从存储装置中读取已编码的控制或信息数据的数据读出速率。作为选择的,控制电路104/204/304可以通过较长的码字长度,将定制的控制或信息数据以及其他数据段一起编码。
因此,如果输入数据D1的数据格式对应于格式A,控制电路104/204/304用第一码字长度L1,来设定与编码电路102/202/302对应的可调节码字长度设置(步骤1206)。另一方面,如果输入数据D1的数据格式对应于格式B,控制电路104/204/304用第二码字长度L2,来设定与编码电路102/202/302对应的可调节码字长度设置(步骤1204)。然后,编码电路102/202/302至少根据已配置的码字长度设置或由以上所述的有限域配置方案所设置的有限域设置,来执行数据编码操作(步骤1208)。对于数据解码,控制电路104/204/304检查读出数据D2的数据格式(步骤1202)。如果读出数据D2的数据格式对应于格式A,控制电路104/204/304用第一码字长度L1,来设定与解码电路106/206/306对应的可调节码字长度设置(步骤1206)。另一方面,如果读出数据D2的数据格式对应于格式B,控制电路104/204/304用第二码字长度L2,来设定与解码电路106/206/306对应的可调节码字长度设置(步骤1204)。然后,解码电路106/206/306至少根据已配置的码字长度设置或由以上所述的有限域配置方案所设置的有限域设置,来执行数据解码操作(步骤1208)。
在一个替代设计中,控制电路104/204/304根据存储装置101的硬件规格,来调节与编码电路102/202/302以及解码电路106/206/306对应的可调节码字长度设置。
图13是编码电路/解码电路的操作的流程图,其中,与编码电路/解码电路对应的码字长度设置由存储装置的硬件规格来配置。在步骤1302中,控制电路104/204/304检查存储装置101的硬件规格。举例说明,可以基于存储装置101的备用区大小来设定码字长度,其中,此备用区被定义为用来存储奇偶校验数据。如果装置类型是类型A,控制电路104/204/304用第一码字长度L1来设定与编码电路102/202/302以及解码电路106/206/306对应的可调节码字长度设置(步骤1306)。另一方面,如果装置类型是类型B,控制电路104/204/304用第二码字长度L2来设定与编码电路102/202/302以及解码电路106/206/306对应的可调节码字长度设置(步骤1304)。然后,编码电路102/202/302至少根据已配置的码字长度设置或由以上所述的有限域配置方案所设置的有限域,来执行数据编码操作,以及解码电路106/206/306至少根据已配置的码字长度设置或由以上所述的有限域配置方案所设置的有限域,来执行数据解码操作(步骤1308)。
对于解码电路106/206/306,也可以使用附加的重解码功能。图14是解码电路106/206/306使用的重解码功能的操作的流程图。编码电路102/202/302通过使用较大的误差校正能力将数据编码。举例说明,使用第一误差校正能力T1(步骤1402),其中,第一误差校正能力T1是由编码电路102/202/302所支持的最大的误差校正能力,此例并非作为本发明的限定。编码电路102/202/302将已编码数据写入存储装置101中,其中,已编码数据包含数据以及T1奇偶校验符号(步骤1404)。当启动数据解码操作时,从存储装置101中读取已存储的数据,且解码电路106/206/306只使用了T1奇偶校验符号的一部分,例如T2奇偶校验符号(T2<T1),来将读出数据解码(步骤1406)。
也就是,控制电路104/204/304配置解码电路106/206/306,通过使用第二误差校正能力T2,来将读出数据解码。当误差位的数目较小时,T2奇偶校验符号可能足以校正误差位。由于在解码操作中,实际只使用了T1奇偶校验符号的一部分,因此为了完成解码操作,并没有启动所有的解码硬件。这样可以有效降低总功率消耗。如果用T2奇偶校验符号可以成功的校正读出数据中所发现的误差位(在步骤1408中决定),则输出无误差已解码数据(步骤1412)。然而,如果出现了将读出数据解码的解码误差,这意味着读出数据中所出现的误差并不是全部都能通过T2奇偶校验符号被成功的校正(在步骤1408中决定),控制电路104/204/304控制解码电路106/206/306,来使用更多从T1奇偶校验符号中选择的奇偶校验符号(步骤1410)。举例说明,控制电路104/204/304指示解码电路106/206/306,通过使用第三误差校正能力T3,来重解码同一个读出数据,其中,T1≥T3>T2。当没有侦测出解码误差时,才会停止重解码操作。换句话说,当使用特定误差校正能力可以成功的将读出数据解码时(在步骤1408中决定),输出对应的已解码数据(步骤1412)。请注意,步骤1408可以被配置,以通过检查将已编码数据解码的误差率是否超过阈值,来判断已编码数据的正确度。这里同样遵守了本发明的发明精神。
以上所述的存储装置101可以是基于闪存的与非(以下称为NAND)装置,例如,固态硬盘(solid state drive,以下简称为SSD)。以SSD为例,由于SSD是闭环(closed-loop)系统,因此只要满足NAND闪存的最小ECC需求,SSD使用的编码以及解码格式就可以通过SSD的存储控制器来任意的定义。为了满足主机的高带宽需求,SSD的NAND快闪应用了多信道结构,来使用多个用于数据传输的物理信道。另外,由于SSD的多场(multi-field)特性,只允许调节一个场,这里与基于半字节(nibble-based)或基于字节(byte-based)的装置(例如,光学磁盘驱动器(optical disc drive,可简称为ODD))有所区别。
虽然本发明已以具体实施方式揭露如上,然其并非用以限定本发明,任何本领域中的技术人员,在不脱离本发明的范围内,可以做一些改动,因此本发明的保护范围应以权利要求所界定的范围为准。

Claims (18)

1.一种存储控制器,控制存储装置的数据读取,该存储控制器包含:
编码电路,可编程以支持多个不同有限域,该编码电路根据可调节有限域设置,产生已编码输入数据;以及
控制电路,耦接于该编码电路,用于控制该可调节有限域设置,以及根据该已编码输入数据,将输入数据记录到该存储装置中。
2.根据权利要求1所述的存储控制器,其特征在于,该编码电路包含:
寄存器,用于存储多个编码系数,其中,该控制电路将该多个编码系数写入该寄存器,来设定该可调节有限域设置;以及
编码引擎,耦接于该寄存器,用于根据该多个编码系数将该输入数据编码,来产生该已编码输入数据。
3.根据权利要求1所述的存储控制器,其特征在于,该编码电路包含:
查找表,存储多个编码系数集,每个编码系数集具有多个编码系数,以及输出从该多个编码系数集中所选择的特定编码系数集,以作为对选择信号的响应,其中,该控制电路产生该选择信号,来设定该可调节有限域设置;以及
编码引擎,耦接于该查找表,用于根据该特定编码系数集将该输入数据编码,来产生该已编码输入数据。
4.根据权利要求1所述的存储控制器,其特征在于,该编码电路包含分别对应该不同有限域的多个编码器,且根据使能信号来启动该多个编码器中的一个;以及该控制电路产生该使能信号,来设定该可调节有限域设置。
5.根据权利要求1所述的存储控制器,其特征在于,该存储装置是非易失性内存。
6.根据权利要求1所述的存储控制器,其特征在于,该存储装置具有利用多个物理信道来进行数据传输的多信道结构。
7.一种存储控制器,控制存储装置的数据读取,该存储控制器包含:
编码电路,可编程以支持多个不同误差校正能力,该编码电路根据可调节误差校正能力设置,产生已编码输入数据;以及
控制电路,耦接于该编码电路,用于调节该可调节误差校正能力设置,以及根据该已编码输入数据,将输入数据记录到该存储装置中。
8.一种存储控制器,控制存储装置的数据读取,该存储控制器包含:
编码电路,可编程以支持多个不同码字长度,该编码电路根据可调节码字长度设置,产生已编码输入数据;以及
控制电路,耦接于该编码电路,用于调节该可调节码字长度设置,以及根据该已编码输入数据,将该输入数据记录到该存储装置中。
9.一种存储控制器,控制存储装置的数据读取,该存储控制器包含:
解码电路,可编程以支持多个不同有限域,该解码电路根据可调节有限域设置,产生已解码读出数据;以及
控制电路,耦接于该解码电路,用于从该存储装置中读取数据,来获得该读出数据,以及控制该可调节有限域设置。
10.根据权利要求9所述的存储控制器,其特征在于,该解码电路包含:
寄存器,用于存储多个解码参数,其中,该控制电路将该多个解码参数写入该寄存器,来设定该可调节有限域设置;以及
解码引擎,耦接于该寄存器,用于根据该多个解码参数将该读出数据解码,来产生该已解码读出数据。
11.根据权利要求9所述的存储控制器,其特征在于,该解码电路包含:
查找表,存储多个解码参数集,每个解码参数集具有多个解码参数,以及输出从该多个解码参数集中所选择的特定解码参数集,以作为对选择信号的响应,其中,该控制电路产生该选择信号,来设定该可调节有限域设置;以及
解码引擎,耦接于该查找表,用于根据该特定解码参数集将该读出数据解码,来产生该已解码读出数据。
12.根据权利要求9所述的存储控制器,其特征在于,该解码电路包含分别对应该不同有限域的多个解码器,且根据使能信号来启动该多个解码器中的一个;以及该控制电路产生该使能信号,来设定该可调节有限域设置。
13.根据权利要求9所述的存储控制器,其特征在于,该存储装置是非易失性内存。
14.根据权利要求9所述的存储控制器,其特征在于,该存储装置具有利用多个物理信道来进行数据传输的多信道结构。
15.一种存储控制器,控制存储装置的数据读取,该存储控制器包含:
解码电路,可编程以支持多个不同误差校正能力,该解码电路根据可调节误差校正能力设置,产生已解码读出数据;以及
控制电路,耦接于该解码电路,用于从该存储装置中读取数据,来获得该读出数据,以及调节该可调节误差校正能力设置。
16.一种存储控制器,控制存储装置的数据读取,该存储控制器包含:
解码电路,可编程以支持多个不同码字长度,该解码电路根据可调节码字长度设置,产生已解码读出数据;以及
控制电路,耦接于该解码电路,用于从该存储装置中读取数据,来获得该读出数据,以及调节该可调节码字长度设置。
17.一种控制数据读取的方法,控制存储装置的数据读取,该控制数据读取的方法包含:
控制可调节有限域设置,其中,该可调节有限域设置是可编程的,来支持多个不同有限域;
至少根据该可调节有限域设置,来产生已编码输入数据;以及
根据该已编码输入数据,将该输入数据记录到该存储装置中。
18.一种控制数据读取的方法,控制存储装置的数据读取,该控制数据读取的方法包含:
从该存储装置中读取数据,来获得读出数据;
控制可调节有限域设置,其中,该可调节有限域设置是可编程的,来支持多个不同有限域;以及
通过至少根据该可调节有限域设置将该读出数据解码,来产生已解码读出数据。
CN201010117662.9A 2009-03-27 2010-03-04 存储控制器及控制数据读取的方法 Active CN101950586B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16395109P 2009-03-27 2009-03-27
US61/163,951 2009-03-27
US12/645,490 US8418021B2 (en) 2009-03-27 2009-12-23 Storage controller with encoding/decoding circuit programmable to support different ECC requirements and related method thereof
US12/645,490 2009-12-23

Publications (2)

Publication Number Publication Date
CN101950586A true CN101950586A (zh) 2011-01-19
CN101950586B CN101950586B (zh) 2014-04-09

Family

ID=42785823

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010117662.9A Active CN101950586B (zh) 2009-03-27 2010-03-04 存储控制器及控制数据读取的方法

Country Status (3)

Country Link
US (2) US8418021B2 (zh)
CN (1) CN101950586B (zh)
TW (2) TWI464744B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870411A (zh) * 2012-12-11 2014-06-18 三星电子株式会社 存储控制器以及包括存储控制器的存储系统
CN104571940A (zh) * 2013-10-17 2015-04-29 财团法人交大思源基金会 储存装置及其相关系统
CN104871249A (zh) * 2012-10-24 2015-08-26 西部数据技术公司 数据存储系统的自适应错误纠正码
CN105051700A (zh) * 2013-03-14 2015-11-11 苹果公司 基于可用存储器空间选择冗余存储配置
CN105302659A (zh) * 2014-07-22 2016-02-03 Hgst荷兰公司 固态器件中的多纠错码代码字尺寸
CN106935271A (zh) * 2016-01-21 2017-07-07 威盛电子股份有限公司 三维架构非依电性存储器的控制器装置与操作方法
WO2019136976A1 (zh) * 2018-01-12 2019-07-18 江苏华存电子科技有限公司 一种编译码系统使用多种错误纠正码组合的方法
CN111611101A (zh) * 2020-04-22 2020-09-01 珠海妙存科技有限公司 调整闪存读取数据吞吐率的方法及装置

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010512584A (ja) 2006-12-06 2010-04-22 フュージョン マルチシステムズ,インク.(ディービイエイ フュージョン−アイオー) 空データトークン指令を有する要求デバイスからのデータを管理する装置、システムおよび方法
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
WO2011159806A2 (en) * 2010-06-15 2011-12-22 Fusion-Io, Inc. Apparatus, system, and method for providing error correction
US20120240007A1 (en) * 2010-10-20 2012-09-20 Stec, Inc. Ldpc decoding for solid state storage devices
US8446786B2 (en) * 2011-01-20 2013-05-21 Micron Technology, Inc. Outputting a particular data quantization from memory
US8607129B2 (en) * 2011-07-01 2013-12-10 Intel Corporation Efficient and scalable cyclic redundancy check circuit using Galois-field arithmetic
US9032269B2 (en) 2011-07-22 2015-05-12 Sandisk Technologies Inc. Systems and methods of storing data
US8683296B2 (en) 2011-12-30 2014-03-25 Streamscale, Inc. Accelerated erasure coding system and method
US8914706B2 (en) 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
US8954825B2 (en) 2012-03-06 2015-02-10 Micron Technology, Inc. Apparatuses and methods including error correction code organization
US8856615B1 (en) 2012-06-11 2014-10-07 Western Digital Technologies, Inc. Data storage device tracking log-likelihood ratio for a decoder based on past performance
CN103839594A (zh) * 2012-11-27 2014-06-04 建兴电子科技股份有限公司 固态储存装置及其联合编解码方法
US9201727B2 (en) 2013-01-15 2015-12-01 International Business Machines Corporation Error protection for a data bus
US9021328B2 (en) 2013-01-15 2015-04-28 International Business Machines Corporation Shared error protection for register banks
US9041428B2 (en) 2013-01-15 2015-05-26 International Business Machines Corporation Placement of storage cells on an integrated circuit
US8869008B2 (en) 2013-01-17 2014-10-21 Apple Inc. Adaptation of analog memory cell read thresholds using partial ECC syndromes
EP2949047B1 (en) * 2013-01-22 2021-03-31 Altera Corporation Data compression and decompression using simd instructions
US9274802B2 (en) 2013-01-22 2016-03-01 Altera Corporation Data compression and decompression using SIMD instructions
US9298457B2 (en) 2013-01-22 2016-03-29 Altera Corporation SIMD instructions for data compression and decompression
US9043683B2 (en) 2013-01-23 2015-05-26 International Business Machines Corporation Error protection for integrated circuits
US8990668B2 (en) 2013-03-14 2015-03-24 Western Digital Technologies, Inc. Decoding data stored in solid-state memory
US9553608B2 (en) * 2013-12-20 2017-01-24 Sandisk Technologies Llc Data storage device decoder and method of operation
KR102149668B1 (ko) 2014-04-22 2020-08-31 삼성전자주식회사 비휘발성 메모리 장치의 데이터 디코딩 방법
US9460783B2 (en) 2014-06-03 2016-10-04 Micron Technology, Inc. Determining soft data
US9985653B2 (en) 2015-04-10 2018-05-29 Samsung Electronics Co., Ltd. Methods and systems for soft-decision decoding
US20170271030A1 (en) * 2016-03-18 2017-09-21 Alibaba Group Holding Limited Method and system for using downgraded flash die for cache applications
CN110089035B (zh) 2016-12-24 2021-01-29 华为技术有限公司 存储控制器、数据处理芯片及数据处理方法
KR20180082926A (ko) * 2017-01-11 2018-07-19 에스케이하이닉스 주식회사 로직 연산을 공유하는 에러정정코드 디코더 및 이를 포함하는 메모리 컨트롤러와, 로직 연산을 공유할 수 있는 에러정정코드 디코딩 방법
US10469103B1 (en) 2017-04-19 2019-11-05 Seagate Technology Llc Adaptive read retry optimization
US10915464B2 (en) * 2017-09-12 2021-02-09 Ememory Technology Inc. Security system using random number bit string
US10897273B2 (en) * 2018-06-27 2021-01-19 Western Digital Technologies, Inc. System-level error correction coding allocation based on device population data integrity sharing
US10802908B2 (en) 2018-07-31 2020-10-13 Western Digital Technologies, Inc. Data dependent allocation of error correction resources
US11853607B2 (en) 2021-12-22 2023-12-26 Western Digital Technologies, Inc. Optimizing flash memory utilization for NVMe KV pair storage
US11817883B2 (en) 2021-12-27 2023-11-14 Western Digital Technologies, Inc. Variable length ECC code according to value length in NVMe key value pair devices
US11716097B2 (en) * 2021-12-29 2023-08-01 Western Digital Technologies, Inc. Signal correction using soft information in a data channel
US11733876B2 (en) 2022-01-05 2023-08-22 Western Digital Technologies, Inc. Content aware decoding in KV devices
TWI837829B (zh) * 2022-09-19 2024-04-01 慧榮科技股份有限公司 存取快閃記憶體模組的方法與相關的快閃記憶體控制器及記憶裝置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030135530A1 (en) * 2001-09-20 2003-07-17 Stmicroelectronics, Inc. Flexible galois field multiplier
CN101067972A (zh) * 2007-04-23 2007-11-07 北京芯技佳易微电子科技有限公司 一种存储器检错纠错编码电路及利用其读写数据的方法
US20080028274A1 (en) * 2006-07-25 2008-01-31 Communications Coding Corporation Universal error control coding scheme for digital communication and data storage systems
US20090063934A1 (en) * 2007-08-28 2009-03-05 Samsung Electronics Co., Ltd. Multi-channel memory system including error correction decoder architecture with efficient area utilization

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4562577A (en) * 1983-09-19 1985-12-31 Storage Technology Partners Ii Shared encoder/decoder circuits for use with error correction codes of an optical disk system
JP3824701B2 (ja) * 1996-04-01 2006-09-20 パイオニア株式会社 情報記録方法及び装置
US7304990B2 (en) * 2000-02-03 2007-12-04 Bandwiz Inc. Method of encoding and transmitting data over a communication medium through division and segmentation
US7016279B2 (en) 2000-02-10 2006-03-21 Sony Corporation Method for recording and/or reproducing data on/from recording/recorded medium, reproducing apparatus, recording medium, method for recogizing recording/recorded medium, and method for recording and/or reproducing data for apparatus using recording/recorded medium
US20040015771A1 (en) * 2002-07-16 2004-01-22 Menahem Lasser Error correction for non-volatile memory
JP4329364B2 (ja) 2003-03-07 2009-09-09 ソニー株式会社 光学ヘッド、記録及び/又は再生装置
US7543215B2 (en) 2005-02-14 2009-06-02 Mediatek Inc. Integrated apparatus for multi-standard optical storage media
US7844879B2 (en) * 2006-01-20 2010-11-30 Marvell World Trade Ltd. Method and system for error correction in flash memory
US8055979B2 (en) * 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
US8046660B2 (en) 2006-08-07 2011-10-25 Marvell World Trade Ltd. System and method for correcting errors in non-volatile memory using product codes
US7739576B2 (en) * 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US7904783B2 (en) 2006-09-28 2011-03-08 Sandisk Corporation Soft-input soft-output decoder for nonvolatile memory
KR100766042B1 (ko) 2006-12-06 2007-10-12 삼성전자주식회사 연접 부호화를 이용한 멀티 레벨 셀 메모리 장치
US8065583B2 (en) 2007-07-06 2011-11-22 Micron Technology, Inc. Data storage with an outer block code and a stream-based inner code
US8335977B2 (en) 2007-12-05 2012-12-18 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated BCH codes and/or designation of “first below” cells
US8671327B2 (en) * 2008-09-28 2014-03-11 Sandisk Technologies Inc. Method and system for adaptive coding in flash memories

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030135530A1 (en) * 2001-09-20 2003-07-17 Stmicroelectronics, Inc. Flexible galois field multiplier
US20080028274A1 (en) * 2006-07-25 2008-01-31 Communications Coding Corporation Universal error control coding scheme for digital communication and data storage systems
CN101067972A (zh) * 2007-04-23 2007-11-07 北京芯技佳易微电子科技有限公司 一种存储器检错纠错编码电路及利用其读写数据的方法
US20090063934A1 (en) * 2007-08-28 2009-03-05 Samsung Electronics Co., Ltd. Multi-channel memory system including error correction decoder architecture with efficient area utilization

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10216574B2 (en) 2012-10-24 2019-02-26 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
CN104871249A (zh) * 2012-10-24 2015-08-26 西部数据技术公司 数据存储系统的自适应错误纠正码
CN104871249B (zh) * 2012-10-24 2018-09-07 西部数据技术公司 数据存储系统的自适应错误纠正码
CN103870411A (zh) * 2012-12-11 2014-06-18 三星电子株式会社 存储控制器以及包括存储控制器的存储系统
CN103870411B (zh) * 2012-12-11 2018-05-01 三星电子株式会社 存储控制器以及包括存储控制器的存储系统
CN105051700B (zh) * 2013-03-14 2017-10-20 苹果公司 基于可用存储器空间选择冗余存储配置
CN105051700A (zh) * 2013-03-14 2015-11-11 苹果公司 基于可用存储器空间选择冗余存储配置
CN104571940A (zh) * 2013-10-17 2015-04-29 财团法人交大思源基金会 储存装置及其相关系统
CN105302659A (zh) * 2014-07-22 2016-02-03 Hgst荷兰公司 固态器件中的多纠错码代码字尺寸
CN105302659B (zh) * 2014-07-22 2018-10-26 Hgst荷兰公司 固态器件中的多纠错码代码字尺寸
CN106935271A (zh) * 2016-01-21 2017-07-07 威盛电子股份有限公司 三维架构非依电性存储器的控制器装置与操作方法
CN106935271B (zh) * 2016-01-21 2020-09-15 威盛电子股份有限公司 三维架构非依电性存储器的控制器装置与操作方法
WO2019136976A1 (zh) * 2018-01-12 2019-07-18 江苏华存电子科技有限公司 一种编译码系统使用多种错误纠正码组合的方法
CN111611101A (zh) * 2020-04-22 2020-09-01 珠海妙存科技有限公司 调整闪存读取数据吞吐率的方法及装置
CN111611101B (zh) * 2020-04-22 2023-09-29 珠海妙存科技有限公司 调整闪存读取数据吞吐率的方法及装置

Also Published As

Publication number Publication date
TWI464744B (zh) 2014-12-11
US20100251076A1 (en) 2010-09-30
TW201035991A (en) 2010-10-01
CN101950586B (zh) 2014-04-09
US8418021B2 (en) 2013-04-09
TW201035988A (en) 2010-10-01
US20100251068A1 (en) 2010-09-30

Similar Documents

Publication Publication Date Title
CN101950586B (zh) 存储控制器及控制数据读取的方法
US8307261B2 (en) Non-volatile memory management method
KR101588605B1 (ko) 레이트 호환성 펑처링된 코드를 지원하는 메모리 컨트롤러
US9037951B2 (en) Data management in solid state storage systems
US8281217B2 (en) Memory devices and encoding and/or decoding methods
US8065583B2 (en) Data storage with an outer block code and a stream-based inner code
KR100842680B1 (ko) 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
KR102108386B1 (ko) 저장 장치 및 그것의 데이터 엔코딩 및 디코딩 방법들
US20090241009A1 (en) Encoding and/or decoding memory devices and methods thereof
CN102394114B (zh) 具有自适应纠错能力的bch码纠错方法
KR20160090054A (ko) 플래시 메모리 시스템 및 그의 동작 방법
US8762814B2 (en) Method for enhancing error correction capability, and associated memory device and controller thereof
CN107710163B (zh) 一次写入型存储器码的纠错码管理的电路、系统和方法
CN111869111B (zh) 生成和使用可逆的缩短博斯-查德胡里-霍昆格姆码字
US20160283325A1 (en) Errors and erasures decoding from multiple memory devices
US20090164711A1 (en) Semiconductor memory controller, semiconductor memory, and method of controlling semiconductor memory controller
CN110795271A (zh) 对用户数据执行纠错的纠错电路和使用其的纠错方法
KR101355988B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
US20190294497A1 (en) Method of implementing error correction code used by memory storage apparatus and memory storage apparatus using the same
TW201013691A (en) Error correcting code circuit
US10114569B2 (en) Computing system with shift expandable coding mechanism and method of operation thereof
TWI392239B (zh) Encoders, Decoders and Access Systems with Reed Solomon Error Correction Mechanism

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant