CN114596910A - 执行ecc解码的纠错码引擎及其操作方法和包括其的存储设备 - Google Patents

执行ecc解码的纠错码引擎及其操作方法和包括其的存储设备 Download PDF

Info

Publication number
CN114596910A
CN114596910A CN202111344231.0A CN202111344231A CN114596910A CN 114596910 A CN114596910 A CN 114596910A CN 202111344231 A CN202111344231 A CN 202111344231A CN 114596910 A CN114596910 A CN 114596910A
Authority
CN
China
Prior art keywords
data
ecc
decoding
ecc decoder
decoder
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
CN202111344231.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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN114596910A publication Critical patent/CN114596910A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2948Iterative decoding
    • 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/6511Support of multiple decoding rules, e.g. combined MAP and Viterbi decoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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
    • 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/3746Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/095Error detection codes other than CRC and single parity bit codes
    • H03M13/096Checksums
    • 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/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

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

Abstract

一种响应来自主机的读取请求的方法包括:从存储器件获得读取数据;对读取数据执行第一迭代ECC解码以生成多条解码数据;选择多条解码数据中的一条解码数据作为中间数据;当第一迭代ECC解码失败时,基于读取数据和中间数据生成预处理数据,并对预处理数据执行第二迭代ECC解码;以及当第一迭代ECC解码成功时,向主机输出中间数据。

Description

执行ECC解码的纠错码引擎及其操作方法和包括其的存储 设备
相关申请的交叉引用
本申请要求2020年12月7日向韩国知识产权局递交的韩国专利申请No.10-2020-0169841的优先权,其公开内容通过引用全部合并于此。
技术领域
本发明构思涉及纠错码(ECC)引擎,并且更具体地涉及被配置为执行ECC解码的ECC引擎及其操作方法以及包括ECC引擎的存储设备。
背景技术
数据可以用ECC形式的冗余信息进行编码。冗余可以用于检测数据中有限数量的错误。可以对编码数据执行ECC解码,以检测错误并潜在地校正错误。
然而,传统的ECC解码并不总是能够校正所有错误。因此,有必要提高ECC解码的可靠性和校正能力。
发明内容
本发明构思的至少一个实施例提供了一种纠错码(ECC)引擎及其操作方法以及包括ECC引擎的存储设备,ECC引擎被配置为通过执行以下操作来执行ECC解码以提高纠错能力:在ECC解码失败时,通过使用在ECC解码过程中生成的多条解码数据来执行ECC解码。
根据本发明构思的示例性实施例,提供了一种响应来自主机的请求的方法。该方法包括从存储器件获得读取数据;对读取数据执行第一迭代ECC解码以生成多条解码数据;选择多条解码数据中的一条解码数据作为中间数据;当第一迭代ECC解码失败时,基于读取数据和中间数据生成预处理数据,并对预处理数据执行第二迭代ECC解码;以及当第一迭代ECC解码成功时,向主机输出中间数据。
根据本发明构思的示例性实施例,提供了一种包括ECC解码器和预处理器的ECC引擎。ECC解码器被配置为对从存储器件获得的读取数据执行第一迭代ECC解码以生成多条解码数据,并选择多条解码数据中的一条解码数据作为中间数据。预处理器被配置为当第一迭代ECC解码失败时,基于读取数据和中间数据生成预处理数据。当第一迭代ECC解码失败时,ECC解码器通过使用预处理数据来执行第二迭代ECC解码。
根据本发明构思的示例性实施例,提供了一种包括存储器控制器和存储器件的存储设备。存储器控制器包括纠错码(ECC)引擎,其被配置为对从存储器件获得的读取数据执行第一ECC解码以生成解码数据。当第一ECC解码失败时,ECC引擎通过使用解码数据和读取数据生成预处理数据,并通过使用预处理数据执行第二ECC解码。
附图说明
根据以下结合附图进行的详细描述,将更清楚地理解本发明构思的实施例,在附图中:
图1是根据本发明构思的示例实施例的存储设备的框图;
图2是根据本发明构思的示例实施例的存储器控制器的框图;
图3是根据本发明构思的示例实施例的纠错码(ECC)引擎的框图;
图4A和图4B是根据本发明构思的示例实施例的ECC解码器的框图;
图5是根据本发明构思的示例实施例的预处理器的框图;
图6是根据本发明构思的示例实施例的多条数据的示例;
图7是根据本发明构思的另一示例实施例的ECC引擎的框图;
图8是根据本发明构思的示例实施例的存储器控制器的操作方法的流程图;
图9是根据本发明构思的示例实施例的ECC解码器的操作方法的流程图;
图10是根据本发明构思的示例实施例的ECC解码器的操作方法的流程图;
图11是根据本发明构思的示例实施例的预处理器的操作方法的流程图;以及
图12是根据本发明构思的另一示例实施例的存储设备的框图。
具体实施方式
在下文中,将参考附图详细描述本发明构思的实施例。
图1是根据本发明构思的示例实施例的存储设备的框图。
参照图1,存储设备1000包括存储器控制器100(例如,控制电路)和存储器件200。
存储器控制器100可以响应于来自主机的写入/读取请求来控制存储器件200,以读取存储在存储器件200中的数据或者将数据写入存储器件200。详细地,存储器控制器100可以向存储器件200提供地址ADDR、命令(例如,读取命令R_CMD)和控制信号CTRL,从而控制关于存储器件200的编程(或写入)、读取和擦除操作。另外,可以在存储器控制器100和存储器件200之间发送和接收要写入的数据和读取数据(例如,读取数据R_DAT)。
存储器件200可以包括各种存储器。例如,存储器件200可以包括动态随机存取存储器,例如,双倍数据速率同步动态随机存取存储器(DDR SDRAM)、低功率双倍数据速率(LPDDR)SDRAM、图形双倍数据速率(GDDR)SDRAM和Rambus动态随机存取存储器(RDSAM)。然而,本发明构思的实施例不一定限于此。例如,存储器件200可以包括非易失性存储器,例如,闪存、磁RAM(MRAM)、铁电RAM(FeRAM)、相变RAM(PRAM)和电阻RAM(ReRAM)。
尽管未示出,存储器件200可以包括存储单元阵列、写入/读取电路和控制逻辑。当存储器件200是电阻存储器件时,存储单元阵列可以包括电阻存储单元。
存储器控制器100可以包括主机接口(例如,图2中的主机接口120)。存储设备1000和主机可以通过主机接口(例如,接口电路)彼此通信。
存储器控制器100包括纠错码(ECC)引擎110(例如,纠错电路),其对从存储器件200读取的读取数据R_DAT执行检错和纠错操作,并且可以向主机提供纠错后的读取数据。
根据本发明构思的实施例,ECC引擎110包括至少一个ECC解码器111(例如,解码电路)和至少一个预处理器112(例如,处理器)。ECC解码器111可以对读取数据R_DAT执行第一ECC解码操作以生成解码结果,基于该解码结果确定解码是成功还是失败,并且可以使用在执行第一ECC解码操作中生成的至少一条中间数据来提高第二ECC解码操作的性能。预处理器112可以通过使用读取数据R_DAT和中间数据中的至少一条数据来生成预处理数据,以提高稍后要执行的ECC解码中的纠错能力。通过将预处理数据用于ECC解码,可以提高ECC引擎110的校正能力。
图1所示的用于实现某些功能的组件仅表示一个实施例。本发明构思不限于此,因为可以对这些组件进行各种修改。例如,在另一实施例中,预处理器112可以是设置在ECC引擎110外部的组件。
图2是根据本发明构思的示例实施例的存储器控制器100的框图。
参照图1和图2,存储器控制器100包括主机接口(I/F)120、中央处理单元(CPU)130、闪存转换层(FTL)140、缓冲存储器150、ECC引擎110、高级加密标准(AES)引擎160(例如,加密和/或解密电路)和存储器接口(I/F)170。
另外,存储器控制器100还可以包括分组管理器和工作存储器,其中加载有FTL140,并且可以通过由CPU 130执行FTL 140来控制关于非易失性存储器(NVM)的数据写入和读取操作。
主机接口120可以向/从主机发送/接收分组。从主机向主机I/F 120发送的分组可以包括要写入NVM的命令或数据,并且从主机I/F 120向主机发送的分组可以包括对从NVM读取的命令或数据的响应。根据本发明构思的实施例,主机接口120向主机发送由ECC引擎110解码的解码数据。
存储器I/F 170可以向NVM发送要写入NVM的数据,或者可以接收从NVM读取的数据。存储器I/F 170可以根据诸如切换或开放式NAND闪存接口(ONFI)之类的标准协议来实现。
FTL 140可以执行各种功能,例如,地址映射、耗损均衡和垃圾收集。地址映射操作是将从主机接收到的逻辑地址转换为用于实际将数据存储在NVM中的物理地址的操作。耗损均衡是用于在NVM中均匀使用块并防止特定块过度恶化的技术。例如,可以通过固件技术实现耗损均衡以平衡物理块的擦除计数。垃圾收集是通过将块的有效数据复制到新块并擦除前一个块的方法来确保NVM中可用容量的技术。
缓冲存储器150可以临时存储要写入NVM的数据或要从NVM读取的数据。缓冲存储器150可以是设置在存储器控制器100中的组件,但也可以在存储器控制器100的外部。
根据本发明构思的实施例,当ECC引擎110重复执行ECC解码时,缓冲存储器150可以存储作为ECC解码结果生成的解码数据。另外,缓冲存储器150可以临时存储ECC引擎110成功获得的解码数据。图2中的缓冲存储器150被示出在ECC引擎110外部,但也可以是设置在ECC引擎110中的组件。
ECC引擎110可以对从NVM读取的读取数据执行检错和纠错操作。在示例性实施例中,ECC引擎110从要写入NVM的写入数据生成奇偶校验比特,并且所生成的奇偶校验比特与写入数据一起存储在NVM中。当从NVM读取数据时,ECC引擎110可以通过将从NVM读取的奇偶校验比特与读取数据一起使用来校正读取数据中的错误以生成纠错后的读取数据,并且可以输出纠错后的读取数据。
根据本发明构思的实施例的ECC引擎110包括至少一个ECC解码器111和至少一个预处理器112。尽管未示出,ECC引擎110还可以包括ECC编码器,其针对写入数据生成奇偶校验比特。
在示例性实施例中,ECC解码器111对读取数据执行迭代ECC解码。例如,第一迭代ECC解码可以包括至少一个解码。关于第一迭代ECC解码中包括的至少一个解码,可以修改用于每个解码的参数值。在本说明书中,迭代解码中包括的每个解码的性能可以被称为迭代性能。在实施例中,使用被设置为第一参数值的参数对读取数据执行第一ECC解码以生成结果,基于该结果将参数设置为其他第二参数值,并且使用被设置为第二参数值的参数对读取数据执行第二ECC解码。
ECC解码器111可以在迭代地执行解码操作的同时校正写入数据中包括的错误比特。
ECC解码器111可以对读取数据执行迭代ECC解码,并生成解码数据作为迭代ECC解码的每次迭代的结果。ECC解码器111可以基于针对迭代ECC解码的每次迭代生成的解码数据来确定解码是成功还是失败。当解码成功或满足迭代解码的结束条件(或多个结束条件)时,ECC解码器111可以结束迭代ECC解码。结束迭代ECC解码的条件可以预先设置。例如,当迭代次数达到最大迭代次数时,可以结束迭代ECC解码。
在执行迭代ECC解码时生成的多条解码数据中,ECC解码器111可以存储至少一条解码数据作为中间数据。作为中间数据存储的解码数据可以是多条解码数据中最接近解码成功的数据。例如,接近解码成功的数据可以是多条解码数据中具有低错误率的数据。可以使用各种技术来计算多条解码数据的错误率。例如,可以使用解码数据的校验子或校验和来计算错误率。
当使用校验子时,ECC解码器111可以通过将解码数据乘以奇偶校验阵列来生成校验子向量,并且可以确认校验子向量中包括的0或1的数量。例如,可以确定包括更多0的校验子向量更接近解码成功。
ECC解码器111可以计算在迭代ECC解码过程中生成的第一解码数据的校验子。第一解码数据可以被存储在缓冲存储器150或ECC引擎110中的分离缓冲器(未示出)中。之后,ECC解码器111可以执行下一个ECC解码以生成第二解码数据,计算第二解码数据的校验子,并且可以将第一解码数据的校验子与第二解码数据的校验子进行比较。
根据上述示例,ECC解码器111可以确定在第一解码数据的校验子向量和第二解码数据的校验子向量之间包括更多0的校验子向量。ECC解码器111可以基于确定的结果执行下一次迭代,或者将所存储的中间数据更新为第二解码数据。
当ECC引擎110包括多个ECC解码器111时,各个ECC解码器111可以顺序地执行ECC解码。例如,当由第一ECC解码器进行的解码失败时,第二ECC解码器可以执行解码。第一ECC解码器和第二ECC解码器可以各自执行迭代ECC解码直到满足迭代结束条件(或直到满足多个结束条件)。将参照图4和图9详细描述由ECC解码器111执行的迭代ECC解码、中间数据的存储和更新。
当由ECC解码器111进行的解码失败时,预处理器112可以执行稍后描述的各种操作。预处理器112可以通过使用ECC解码器111存储的作为中间数据的解码数据来执行预处理。当ECC引擎110包括多个预处理器112时,多个预处理器112中的每一个可以连接在多个ECC解码器111之间。
在实施例中,预处理器112通过使用通过存储器I/F 170提供的读取数据和中间数据中的至少一个来生成数据(在下文中,被称为预处理数据)。将参照图5至图10详细描述预处理器112的操作。
AES引擎160可以通过使用对称密钥算法对输入到存储器控制器100的数据执行加密操作和解密操作中的至少一个。
图3是根据本发明构思的示例实施例的ECC引擎的框图;图4A和图4B是根据本发明构思的示例实施例的ECC解码器的框图;图5是根据本发明构思的示例实施例的预处理器的框图;以及图6是根据本发明构思的示例实施例的多条数据的示例图。
参照图1至图3,ECC引擎300包括多个ECC解码器(即,第一ECC解码器310、第二ECC解码器320和第三ECC解码器330)和多个预处理器(即,第一预处理器340和第二预处理器350)。图2的ECC引擎110可以使用ECC引擎300来实现。
多个ECC解码器310至330以及多个预处理器340和350可以以交替连接的结构实现。例如,给定的一个预处理器可以连接在一对ECC解码器之间,并且给定的一个ECC解码器可以连接在一对预处理器之间。
ECC引擎300可以通过存储器I/F 170从存储器件200接收读取数据R_DAT。多个ECC解码器310至330中的每一个可以执行迭代解码。
ECC引擎300可以包括第一解码器310至第三ECC解码器330、第一预处理器340和第二预处理器350。
与第二ECC解码器320相比,第一ECC解码器310可以具有更低的成本、更小的面积、更低的功耗、更短的校正时间或更低的校正能力。与第三ECC解码器330相比,第二ECC解码器320可以具有更低的成本、更小的面积、更低的功耗、更短的校正时间或更低的校正能力。在示例性实施例中,第一ECC解码器310具有高于第二ECC解码器320的第二校正能力的第一校正能力,并且第三ECC解码器330具有低于第二校正能力的第三校正能力。
当第一ECC解码器310解码数据成功以生成解码数据时,第一ECC解码器310可以通过主机I/F 120向主机发送该解码数据。当第一ECC解码器310解码数据失败时,第二ECC解码器320对数据执行ECC解码。当第二ECC解码器320解码数据成功时,解码数据可以输出到主机,并且当第二ECC解码器320解码数据失败时,第三ECC解码器330可以执行解码。
参照图4A,第一ECC解码器310可以基于读取数据R_DAT通过使用解码逻辑311(例如,逻辑电路)来执行迭代ECC解码。可以基于在每次迭代中生成的解码数据生成中间数据。所生成的中间数据可以被存储在第一ECC解码器310中的缓冲器312中。与图4A所示不同,缓冲器312可以设置在第一ECC解码器310的外部。
每次解码逻辑311执行迭代时,存储在缓冲器312中的中间数据可以被更新,并且当迭代结束时,中间数据可以包括从第一ECC解码器310生成的多条解码数据中具有最低错误率的解码数据。
当第一ECC解码器310的迭代解码满足结束条件(或多个结束条件)时,可以确定解码是否成功。作为另一示例,即使在迭代解码不满足结束条件时,也可以确定解码是否成功。
当解码成功时,第一ECC解码器310可以向主机输出所存储的第一中间数据int_DAT1。当解码失败时,第一ECC解码器310可以向第一预处理器340输出所存储的第一中间数据int_DAT。
参照图5,在实施例中,第一预处理器340在第一ECC解码器310解码失败时进行操作。第一预处理器340可以从第一ECC解码器310接收第一中间数据int_DAT1,并且可以通过存储器I/F 170接收读取数据R_DAT。在实施例中,第一预处理器340通过使用第一中间数据int_DAT1和读取数据R_DAT来生成第一预处理数据pre_DAT1,并将第一预处理数据pre_DAT1提供给第二ECC解码器320。
在实施例中,第一预处理器340包括比较器341(例如,比较器电路)和生成器342(例如,逻辑电路)。比较器341可以比较读取数据R_DAT和第一中间数据int_DAT1的相同位置中的比特以确定比特是否彼此相同。生成器342可以基于比特是否彼此相同来生成包括每个比特的可靠性信息的第一预处理数据pre_DAT1。
参照图6,读取数据R_DAT可以是010,并且第一中间数据int_DAT1可以是110。比较器341可以将读取数据R_DAT中的比特与第一中间数据int_DAT1的相同位中的比特进行比较以确定比特是否彼此相同。在图6中,假设读取数据R_DAT是硬判决(HD)数据,但实施例不限于此,并且读取数据R_DAT可以是包括每个比特的可靠性的软判决(SD)数据。
第一中间数据int_DAT1指示第一ECC解码器310纠错后的数据,因此,读取数据R_DATA和第一中间数据int_DAT1中的相同比特可以指示比特具有强可靠性。另外,读取数据R_DAT的比特与第一中间数据int_DAT1的比特的差异可以指示比特具有弱可靠性。
由于读取数据R_DAT的第一比特为0,而第一中间数据int_DAT1的第一比特为1,因此第一预处理器340可以将对应位的比特确定为1,并且该比特1可以具有弱可靠性。由于读取数据R_DAT的第二比特为1,而第一中间数据int_DAT1的第二比特也为1,因此第一预处理器340可以将对应位的比特确定为1,并且该比特1具有强可靠性。
当读取数据R_DAT的比特与中间数据的比特不同时,可以跟随中间数据的比特,或者备选地,也可以跟随读取数据R_DAT的比特。另外,每个比特可能不与具有可靠性信息的比特相邻。
另外,预处理器可以生成SD类型的预处理数据,但不限于此。预处理器还可以生成仅包括构成数据的比特的HD类型的预处理数据。
参照图4B,第二ECC解码器320从预处理器340接收第一预处理数据pre_DAT1,并基于第一预处理数据pre_DAT1通过使用解码逻辑321执行迭代ECC解码。
第二ECC解码器320的解码逻辑321可以与第一ECC解码器310的解码逻辑311不同。例如,与第一ECC解码器310的解码逻辑311相比,第二ECC解码器320的解码逻辑321可以具有更高的校正能力和/或更长的校正时间。
在示例性实施例中,第二ECC解码器320的解码逻辑321通过使用包括在第一预处理数据pre_DAT1中的每个比特的可靠性信息来执行迭代ECC解码。类似于第一ECC解码器310的操作,第二ECC解码器320可以将在各个迭代中生成的解码数据中具有最低错误率的解码数据存储在缓冲器322中。存储在缓冲器322中的数据可以被称为第二中间数据int_DAT2。第二中间数据int_DAT2的比特率可以与读取数据R_DAT的比特率相同。
当满足迭代结束条件时,第二ECC解码器320可以确定解码是否成功。当解码成功时,第二ECC解码器320可以向主机输出第二中间数据int_DAT2,并且当解码失败时,第二ECC解码器320可以向第二预处理器350输出第二中间数据int_DAT2。
当解码失败时,第二预处理器350可以执行与第一预处理器340的操作类似的操作。即,第二预处理器350可以通过使用第二中间数据int_DAT2和读取数据R_DAT来生成第二预处理数据pre_DAT2,并且可以将第二预处理数据pre_DAT2提供给第三ECC解码器330。第三ECC解码器330的操作可以类似于上述第二ECC解码器320的操作。
与图4B所示不同,缓冲器322可以设置在第二ECC解码器320的外部。
图7是根据本发明构思的示例实施例的ECC引擎的框图。
参照图7,与图3不同,ECC引擎400包括ECC解码器410和预处理器430。在这种情况下,ECC解码器410可以通过第三ECC解码器330(参见图3)执行第一ECC解码器310的操作,并且预处理器430可以执行第一预处理器340和第二预处理器350的操作。图2的ECC引擎110可以由ECC引擎400实现。
ECC引擎400可以支持多种解码模式。ECC引擎400可以通过改变解码模式来执行图3中的各个ECC解码器的操作。例如,当ECC引擎400在第一解码模式下时,ECC引擎400可以执行第一ECC解码器310的操作。在第一解码模式下,ECC引擎400可以执行第一迭代ECC解码。各个解码模式中使用的解码参数可以彼此不同。例如,与第二ECC模式相比,第一解码模式可以具有更低的成本、更小的面积、更低的功耗、更短的校正时间或更低的校正能力。
ECC解码器410可以从存储器件接收读取数据R_DAT,并通过使用解码逻辑来执行第一迭代ECC解码。第一迭代ECC解码可以类似于例如图3所示的第一ECC解码器310的解码操作。
第一迭代ECC解码可以包括至少一次迭代。在每次迭代中,可以生成解码数据dec_DAT,并且可以计算解码数据dec_DAT的错误率。
ECC解码器410可以比较通过重复解码生成的解码数据dec_DAT和存储在缓冲器420中的中间数据int_DAT的错误率,并且可以将具有较低错误率的数据存储在缓冲器420中。通过这样做,可以将中间数据int_DAT迭代地更新为具有最低错误率的解码数据。
当第一迭代ECC解码结束时,ECC解码器410可以基于存储在缓冲器420中的中间数据int_DAT来确定解码是否成功。当解码成功时,ECC解码器410可以向主机输出存储在缓冲器420中的中间数据int_DAT。当解码失败时,ECC解码器410可以向预处理器430提供中间数据int_DAT。
当解码失败时,预处理器430可以基于读取数据R_DAT和中间数据int_DAT生成预处理数据pre_DAT,并且可以将预处理数据pre_DAT提供给ECC解码器410。在实施例中,预处理数据pre_DAT包括中间数据int_DAT和中间数据int_DAT的每个比特的可靠性信息。
ECC解码器410可以基于预处理数据pre_DATA通过使用与第一迭代解码中使用的解码逻辑不同的解码逻辑来执行第二迭代ECC解码。为了执行第二迭代ECC解码,ECC解码器410可以将解码模式从第一解码模式改变为第二解码模式。
用于第一迭代解码的参数可以与用于第二迭代解码的参数不同。当第一迭代ECC解码包括多个解码操作并且第二迭代ECC解码也包括多个解码操作时,用于第一迭代解码过程中执行的解码操作的参数可以与用于第二迭代ECC解码过程中执行的解码操作的参数不同。第二迭代ECC解码可以类似于例如图3所示的第二ECC解码器320的解码操作。
ECC解码器410可以执行多达第n迭代解码(其中,n是等于或大于1的自然数),并且n可以由主机或存储器控制器确定。
图8是根据本发明构思的示例实施例的存储器控制器的操作方法的流程图。
参照图1和图8,存储器控制器100从存储器件200接收读取数据R_DAT。
存储器控制器100对读取数据R_DAT执行解码(例如,ECC解码)(S120)。解码可以采用迭代解码的方法执行,并且用于解码的参数可以在每次迭代中改变。
存储器控制器100基于解码结果生成并存储中间数据(S130)。中间数据可以是通过迭代解码生成的多条解码数据中具有最低错误率的解码数据。可以使用各种方法来计算解码数据的错误率。例如,迭代解码可以包括使用配置有第一参数的ECC解码器对读取数据R_DAT执行第一ECC解码以生成第一解码数据,并且使用配置有其他第二参数的ECC解码器对读取数据R_DAT执行第二ECC解码以生成第二解码数据,并且中间数据可以是具有最低错误率的第一解码数据和第二解码数据之一。
存储器控制器100确定解码是否失败(S140)。例如,如果中间数据具有错误,则可以认为解码失败。例如,如果中间数据没有错误或错误率为0,则可以认为解码成功。
当解码失败时,存储器控制器100对读取数据R_DAT和中间数据进行预处理以生成预处理数据(S150),并对预处理数据再次执行解码(S120)。
当解码成功时,存储器控制器100将所存储的中间数据提供给主机。
图9是根据本发明构思的示例实施例的ECC解码器的操作方法的流程图。
在下文中,为了便于说明,使用ECC引擎400包括ECC解码器410和预处理器430的配置,但是ECC引擎400的结构不限于此。
参照图7和图9,ECC解码器410接收要解码的数据(S210)。这里,数据可以是从存储器件获得的读取数据R_DAT或从预处理器430获得的预处理数据pre_DAT。
ECC解码器410执行迭代解码(S220)。在每次迭代中,可以生成解码数据dec_DAT作为解码结果。ECC解码器410可以计算用于估计所生成的解码数据dec_DAT的度量。例如,度量可以是解码成功概率或错误率。
基于解码数据dec_DAT,ECC解码器410可以将解码数据dec_DAT作为中间数据int_DAT存储在缓冲器420中,或者可以将已经存储的中间数据int_DAT更新为解码数据dec_DAT(S230)。将参照图10给出其详细描述。
ECC解码器410确定是否满足迭代结束条件(S240)。例如,当达到最大迭代次数或解码成功时,可以满足迭代结束条件,并且因此可以结束迭代解码。
当不满足迭代结束条件时,ECC解码器410可以再次执行迭代解码。这里,在前一次迭代解码中使用的参数可以与在下一次迭代解码中使用的参数不同。
当满足迭代结束条件时,ECC解码器410确定解码是否失败(S250)。可以应用用于确定解码是否失败的各种方法之一。在解码成功且迭代结束的情况下,过程可以直接从操作S240进行到操作S260。
在图9中,首先确定是否满足迭代结束条件,然后再确定是否解码失败,但确定顺序可以改变。即,可以首先确定是否解码失败,然后确定是否满足迭代结束条件。
当解码失败时,ECC解码器410将所存储的中间数据int_DAT提供给预处理器430(S260)。
当解码成功时,ECC解码器410将所存储的中间数据int_DAT提供给主机(S270)。当ECC解码器410执行迭代解码时,可以将被估计为最接近解码成功的解码数据dec_DAT存储为中间数据int_DAT。因此,解码成功可以指示关于中间数据int_DAT的解码成功。
根据本实施例,ECC解码器410可以执行迭代ECC解码并将最接近解码成功的解码数据dec_DATA存储为中间数据int_DAT,并且可以在解码失败时提供中间数据int_DAT。通过这样做,与读取数据R_DAT相比,纠错后的数据可以用于下一次ECC解码。因此,可以提高ECC引擎400的校正能力。
图10是根据本发明构思的示例实施例的ECC解码器的操作方法的流程图。
参照图7和图10,ECC解码器410可以将中间数据int_DAT存储在缓冲器420中,或者可以更新已经存储在缓冲器420中的中间数据int_DAT。缓冲器420可以设置在ECC解码器410中。另外,ECC解码器410可以执行迭代解码。
ECC解码器410执行第i次解码以生成第i个解码数据d_DAT_i作为其结果(S310)。要解码的数据可以是读取数据R_DAT或预处理数据pre_DAT。
ECC解码器410计算第i个解码数据d_DAT_i的错误率(S320)。ECC解码器410可以计算指标,该指标可以用于确定第i个解码数据d_DAT_i的解码是否成功。可以计算错误率并将其用作指标。校验和或校验子可以用作错误率的示例或用于确定错误率。
ECC解码器410将第i个解码数据d_DAT_i存储在缓冲器420中(S330)。存储在缓冲器420中的数据可以被称为中间数据int_DAT。当中间数据int_DAT没有被存储在缓冲器420中时,可以执行操作S330。当中间数据int_DAT已经被存储在缓冲器420中时,可以执行类似于稍后描述的S360和S370的操作。例如,可以将所存储的中间数据int_DAT的错误率与第i个解码数据d_DAT_i的错误率进行比较,并且当第i个解码数据d_DAT_i的错误率低于所存储的中间数据int_DAT的错误率时,可以将中间数据int_DAT更新为第i个解码数据d_DAT_i。
除了第i个解码数据d_DAT_i之外,ECC解码器410还可以将第i个解码数据d_DAT_i的错误率存储在缓冲器420中。
ECC解码器410执行第i+1次解码以生成第i+1个解码数据d_DAT_i+1作为其结果(S340)。例如,ECC解码器410可以对读取数据R_DAT执行第i+1次解码。在实施例中,第i+1次解码的参数与第i次解码的参数不同。
ECC解码器410计算第i+1个解码数据d_DAT_i+1的错误率(S350)。
ECC解码器410将第i个解码数据d_DAT_i的错误率与第i+1个解码数据d_DAT_i+1的错误率进行比较(S360)。当第i个解码数据d_DAT_i的错误率超过(或等于或大于)第i+1个解码数据d_DAT_i+1的错误率时,将缓冲器420中的中间数据int_DAT更新为第i+1个解码数据d_DAT_i+1(S370)。
当第i个解码数据d_DAT_i的错误率不超过(或小于)第i+1个解码数据d_DAT_i+1的错误率时,ECC解码器410使用存储在缓冲器420中的第i个解码数据d_DAT_i执行下一次迭代(S380)。
通过上述操作,当ECC解码器410的迭代结束时,可以将具有最低错误率的解码数据存储在缓冲器420中。
图11是根据本发明构思的示例实施例的预处理器的操作方法的流程图。
参照图3、图5和图11,当连接到前端的第一ECC解码器310的解码失败时,预处理器340可以从第一ECC解码器310获得中间数据int_DAT1并执行一系列操作。因此,将在假设第一解码器310的解码失败的情况下描述以下操作。
预处理器340从存储器件获得读取数据R_DAT,并且从第一ECC解码器310获得中间数据int_DAT1(S410)。例如,读取数据R_DAT可以是010,并且中间数据int_DAT1可以是110。
预处理器340将读取数据R_DAT的各个比特与中间数据int_DAT1的各个比特进行比较(S420)。
预处理器340基于各个比特是否彼此匹配来确定各个比特的可靠性(S430)。例如,当读取数据R_DAT的最高比特为0并且中间数据int_DAT1的最高比特为1(两者彼此不同)时,读取数据R_DAT的最高比特和/或中间数据int_DAT的最高比特可以具有弱可靠性。当读取数据R_DAT的最低比特为1并且中间数据int_DAT1的最低比特也为1(两者彼此相同)时,读取数据R_DAT的最低比特和/或中间数据int_DAT1的最低比特可以具有强可靠性。
预处理器340基于各个比特的可靠性生成预处理数据pre_DAT1,并将预处理数据pre_DAT1提供给第二ECC解码器320(S440)。
所生成的预处理数据pre_DAT1可以具有包括各个比特和与其对应的可靠性的SD数据类型。备选地,预处理数据pre_DAT1可以具有仅包括数据而不包括可靠性的HD数据类型。在这种情况下,当读取数据R_DAT的比特与中间数据DAT_1的比特不同时,该比特可以根据读取数据R_DAT的比特和中间数据int_DAT1的比特中的任何一个进行翻转。当预处理数据pre_DAT1是HD数据时,预处理器340可以将单独的可靠性信息与HD数据一起提供给后端的第二ECC解码器320。
当ECC引擎(即,图7中的ECC引擎400)被实现为图7所示的配置时,被配置为向预处理器430提供中间数据int_DAT的ECC解码器410可以与被提供预处理数据pre_DAT的ECC解码器410相同。
图12是根据本发明构思的示例实施例的数据存储系统的框图。
上述ECC解码操作可以应用于数据存储系统2000。例如,廉价磁盘冗余阵列(RAID)技术可以应用于数据存储系统2000。
参照图12,数据存储系统2000包括RAID控制器500和多个固态驱动器(SSD)SSD_1至SSD_n。
响应于来自主机的请求,RAID控制器500可以通过第一通道Ch1至第n通道Chn访问多个SSD(即,SSD_1至SSD_n)。RAID控制器500可以被配置为控制每个SSD的读取、写入和擦除操作。
尽管未示出,RAID控制器500可以被配置为提供主机和多个SSD(SSD_1至SSD_n)之间的接口,并且还可以包括诸如中央处理单元(CPU)和缓冲器之类的其他组件。
SSD_1 600可以被配置为执行根据上述实施例的存储设备(即,图1所示的存储设备1000)的操作。例如,通过预处理器对从存储器件(例如,图1中的存储器件200)读取的读取数据执行ECC解码操作的操作以及在解码失败时使用中间数据,可以提高纠错操作的可靠性。
另外,根据示例实施例,RAID控制器500可以包括ECC引擎510。ECC引擎510的配置可以与上面参照图1至图11描述的ECC引擎400或ECC引擎610的配置类似,并且其操作也可以与之类似。例如,ECC引擎510可以包括至少一个ECC解码器和至少一个预处理器。
可以向RAID控制器500提供来自SSD_1 600的读取数据、中间数据或预处理数据。读取数据可以是响应于来自主机的读取请求而从NVM读取的数据。中间数据可以是在ECC引擎510中执行解码时生成的多条解码数据中具有低错误率的解码数据。预处理数据可以由ECC引擎510基于读取数据和中间数据生成。
ECC引擎510可以对读取数据或预处理数据执行解码,并且可以通过使用读取数据和中间数据生成预处理数据。
根据示例实施例,ECC解码由SSD_1 600中的ECC引擎610迭代地执行。在这种情况下,ECC解码可以由同一个ECC解码器迭代地执行,或者可以由同一级别的不同ECC解码器执行。
作为另一示例,ECC解码可以由不同级别的ECC引擎执行。例如,ECC解码可以由SSD_1 600中的ECC引擎610和RAID控制器500中的ECC引擎510来执行。
另外,在根据本发明构思的实施例的预处理器中,相同级别的ECC解码器可以连接到后端和前端,或者不同级别的ECC解码器可以连接到后端和前端。例如,ECC引擎610中包括的预处理器可以从ECC引擎610中包括的ECC解码器获得中间数据,并且可以生成预处理数据,并将预处理数据提供给ECC引擎510中包括的ECC解码器。
尽管已经参照本发明构思的实施例具体示出和描述了本发明构思,但是将理解,在不脱离所附权利要求的精神和范围的情况下,可以在其中进行形式和细节上的各种改变。

Claims (20)

1.一种响应来自主机的读取请求的方法,所述方法包括:
从存储器件获得读取数据;
对所述读取数据执行第一迭代ECC解码以生成多条解码数据;
选择所述多条解码数据中的一条解码数据作为中间数据;
当所述第一迭代ECC解码失败时,基于所述读取数据和所述中间数据生成预处理数据,并对所述预处理数据执行第二迭代ECC解码;以及
当所述第一迭代ECC解码成功时,向所述主机输出所述中间数据。
2.根据权利要求1所述的操作方法,其中,所述选择包括:将所述多条解码数据中具有最低错误率的一条解码数据确定为所述中间数据。
3.根据权利要求2所述的操作方法,其中,所述选择包括:
计算所述多条解码数据中的第一条解码数据的第一错误率;
计算所述多条解码数据中的第二条解码数据的第二错误率;以及
将所述第一错误率与所述第二错误率进行比较,以确定具有所述最低错误率的所述一条解码数据。
4.根据权利要求3所述的操作方法,其中,所述第一错误率基于所述第一条解码数据的校验和或校验子中的至少一个。
5.根据权利要求1所述的操作方法,其中,对所述预处理数据执行所述第二迭代解码包括:
将所述读取数据与所述中间数据进行比较;
基于所述比较的结果确定所述中间数据的可靠性;以及
基于所述中间数据的所述可靠性生成所述预处理数据。
6.根据权利要求5所述的操作方法,其中,将所述读取数据与所述中间数据进行比较包括:将所述读取数据的比特与所述中间数据的对应比特进行比较,以确定两者之间的匹配。
7.根据权利要求6所述的操作方法,其中,所述预处理数据包括软判决数据,并且
确定所述中间数据的所述可靠性包括:当所述读取数据的第一比特值与所述中间数据的第一比特值匹配时,将所述中间数据的第一比特值的可靠性确定为强级别,并且
否则,将所述中间数据的第一比特值的所述可靠性确定为弱级别。
8.根据权利要求6所述的操作方法,其中,所述预处理数据包括硬判决数据,并且
当所述读取数据的第一比特值与所述中间数据的第一比特值不匹配时,通过翻转所述读取数据的第一比特值来生成所述预处理数据的第一比特值。
9.一种纠错码ECC引擎,包括:
ECC解码器,被配置为对从存储器件获得的读取数据执行第一迭代ECC解码以生成多条解码数据,并选择所述多条解码数据中的一条解码数据作为中间数据;以及
预处理器,被配置为当所述第一迭代ECC解码失败时,基于所述读取数据和所述中间数据生成预处理数据,
其中,当所述第一迭代ECC解码失败时,所述ECC解码器通过使用所述预处理数据来执行第二迭代ECC解码。
10.根据权利要求9所述的ECC引擎,其中,所述ECC解码器通过确定所述多条解码数据中具有最低错误率的一条解码数据来选择所述一条解码数据。
11.根据权利要求9所述的ECC引擎,其中,所述预处理器根据所述读取数据是否与所述中间数据匹配来计算所述中间数据的可靠性,并生成所述预处理数据以包括所述中间数据和与所述可靠性相关的信息。
12.根据权利要求9所述的ECC引擎,其中,所述ECC解码器包括第一ECC解码器和第二ECC解码器,并且
当由所述第一ECC解码器进行的解码失败时,所述预处理器接收来自所述第一ECC解码器的所述中间数据,并向所述第二ECC解码器提供所述预处理数据。
13.根据权利要求12所述的ECC引擎,其中,所述第二ECC解码器的纠错能力高于所述第一ECC解码器的纠错能力。
14.根据权利要求9所述的ECC引擎,其中,所述ECC解码器支持多种解码模式,
根据所述多种解码模式中的第一解码模式执行第一ECC解码,并且
当所述第一ECC解码失败时,向所述预处理器提供所述中间数据,并以所述多种解码模式中的第二解码模式对从所述预处理器接收到的所述预处理数据执行第二ECC解码。
15.根据权利要求14所述的ECC引擎,其中,所述第二解码模式的纠错能力高于所述第一解码模式的纠错能力。
16.一种存储设备,包括:
存储器控制器;以及
存储器件,其中,所述存储器控制器包括:
纠错码ECC引擎,被配置为对从所述存储器件获得的读取数据执行第一ECC解码以生成解码数据,并且
当所述第一ECC解码失败时,所述ECC引擎通过使用所述解码数据和所述读取数据来生成预处理数据,并通过使用所述预处理数据来执行第二ECC解码。
17.根据权利要求16所述的存储设备,其中,所述ECC引擎包括:第一ECC解码器,被配置为执行所述第一ECC解码;
第二ECC解码器,被配置为执行所述第二ECC解码;以及
预处理器,被配置为从所述第一ECC解码器接收所述解码数据,生成所述预处理数据,并向所述第二ECC解码器提供所述预处理数据。
18.根据权利要求17所述的存储设备,其中,所述第一ECC解码器包括缓冲器,并且所述解码数据被存储在所述缓冲器中。
19.根据权利要求17所述的存储设备,其中,所述存储设备包括第一存储设备和连接到所述第一存储设备的廉价磁盘冗余阵列RAID控制器,
其中,所述第一ECC解码器包括在所述第一存储设备中,并且
所述第二ECC解码器包括在所述RAID控制器中。
20.根据权利要求19所述的存储设备,其中,所述预处理器包括在所述第一存储设备和所述RAID控制器中的至少一个中。
CN202111344231.0A 2020-12-07 2021-11-12 执行ecc解码的纠错码引擎及其操作方法和包括其的存储设备 Pending CN114596910A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200169841A KR20220080589A (ko) 2020-12-07 2020-12-07 Ecc 디코딩을 수행하는 ecc 엔진, 이의 동작 방법 및 ecc 엔진을 포함하는 스토리지 장치
KR10-2020-0169841 2020-12-07

Publications (1)

Publication Number Publication Date
CN114596910A true CN114596910A (zh) 2022-06-07

Family

ID=81813785

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111344231.0A Pending CN114596910A (zh) 2020-12-07 2021-11-12 执行ecc解码的纠错码引擎及其操作方法和包括其的存储设备

Country Status (3)

Country Link
US (1) US11664826B2 (zh)
KR (1) KR20220080589A (zh)
CN (1) CN114596910A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102532038B1 (ko) * 2021-12-15 2023-05-12 삼성전자주식회사 에러 정정 코드(ecc) 디코딩 방법 및 이를 수행하는 메모리 시스템
US11990920B2 (en) * 2021-12-30 2024-05-21 Quantum Corporation Artificial intelligence augmented iterative product decoding

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974580A (en) * 1997-07-23 1999-10-26 Cirrus Logic, Inc. Concurrent row/column syndrome generator for a product code
US6668349B1 (en) * 2000-04-14 2003-12-23 Hitachi, Ltd. Data recording/readback method and data recording/readback device for the same
US6604220B1 (en) * 2000-09-28 2003-08-05 Western Digital Technologies, Inc. Disk drive comprising a multiple-input sequence detector selectively biased by bits of a decoded ECC codedword
JP2003203435A (ja) * 2002-01-09 2003-07-18 Fujitsu Ltd データ再生装置
US20050177679A1 (en) * 2004-02-06 2005-08-11 Alva Mauricio H. Semiconductor memory device
US7260762B2 (en) * 2004-07-26 2007-08-21 Motorola, Inc. Decoder performance for block product codes
US8281212B1 (en) * 2007-03-30 2012-10-02 Link—A—Media Devices Corporation Iterative ECC decoder with out of order completion
CN102203876B (zh) * 2008-09-30 2015-07-15 Lsi公司 用于存储器器件的软数据生成的方法和装置
KR101529880B1 (ko) 2008-10-31 2015-06-19 삼성전자주식회사 에러 추정 방법 및 정정 방법
US9086984B2 (en) * 2011-01-04 2015-07-21 Seagate Technology Llc Detection and decoding in flash memories with selective binary and non-binary decoding
US8843807B1 (en) * 2011-04-15 2014-09-23 Xilinx, Inc. Circular pipeline processing system
JP2013070289A (ja) 2011-09-23 2013-04-18 Nec Corp 誤り訂正方法、誤り訂正装置、送信機、受信機及び誤り訂正プログラム
JP2015032885A (ja) 2013-07-31 2015-02-16 三菱電機株式会社 符号化装置及び復号装置
US9798613B2 (en) * 2013-12-27 2017-10-24 Toshiba Memory Corporation Controller of nonvolatile semiconductor memory
US9509342B2 (en) 2014-06-02 2016-11-29 Sandisk Technologies Llc Error correcting code decoder
US10536172B2 (en) 2016-03-04 2020-01-14 Western Digital Technologies, Inc. ECC and raid-type decoding
DE102017110389B4 (de) * 2016-05-13 2020-02-13 Hyperstone Gmbh Verfahren und Decoder zur Softinput Decodierung von verallgemeinerten verketteten Codes
JP2018045387A (ja) * 2016-09-13 2018-03-22 東芝メモリ株式会社 メモリシステム
JP7066584B2 (ja) 2018-09-18 2022-05-13 キオクシア株式会社 メモリシステム

Also Published As

Publication number Publication date
KR20220080589A (ko) 2022-06-14
US20220182073A1 (en) 2022-06-09
US11664826B2 (en) 2023-05-30

Similar Documents

Publication Publication Date Title
US9858996B2 (en) Memory access module for performing sensing operations on storage cells of a storage device to obtain soft information and executing a program mode to control access to the storage device
CN108073466B (zh) 用于减少数据访问延迟的介质质量感知ecc解码方法选择
US8830743B2 (en) Method of operating memory controller, memory controller, memory device and memory system
US7613982B2 (en) Data processing apparatus and method for flash memory
CN111081308A (zh) 用于混合非易失性存储系统的系统和方法
US9898363B2 (en) Data storage device and operating method thereof
US8386868B2 (en) Using programming-time information to support error correction
US10102066B2 (en) Data processing device and operating method thereof
US11184033B2 (en) Data storage device
KR20140020041A (ko) 메모리 장치의 독출 전압 제어 방법 및 이를 이용한 데이터 독출 방법
US11632132B2 (en) Configuring iterative error correction parameters using criteria from previous iterations
KR102564441B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US11664826B2 (en) Error correction code engine performing ECC decoding, operation method thereof, and storage device including ECC engine
US11119697B2 (en) Read voltage management based on write-to-read time difference
US11740957B2 (en) Prioritization of error control operations at a memory sub-system
JP7177338B2 (ja) メモリコントローラ装置、メモリコントローラ装置を有するメモリ装置及びメモリコントロール方法
US20230197183A1 (en) Storage controller including parity management module, storage device including the same, and operating method of storage device
US11750218B2 (en) Iterative error correction with adjustable parameters after a threshold number of iterations
US20230396269A1 (en) Scaled bit flip thresholds across columns for irregular low density parity check decoding
US11663079B2 (en) Data recovery using a combination of error correction schemes
US20170018315A1 (en) Test system and test method
US11705925B2 (en) Dynamic bit flipping order for iterative error correction
US11740961B1 (en) Data recovery using dynamic segment ordering
CN113508365A (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