CN113467986A - 用于修复存储器系统中数据错误的设备和方法 - Google Patents

用于修复存储器系统中数据错误的设备和方法 Download PDF

Info

Publication number
CN113467986A
CN113467986A CN202011145628.2A CN202011145628A CN113467986A CN 113467986 A CN113467986 A CN 113467986A CN 202011145628 A CN202011145628 A CN 202011145628A CN 113467986 A CN113467986 A CN 113467986A
Authority
CN
China
Prior art keywords
data
data segment
decoding
decision decoding
memory
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.)
Withdrawn
Application number
CN202011145628.2A
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.)
SK Hynix Inc
Original Assignee
SK Hynix 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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of CN113467986A publication Critical patent/CN113467986A/zh
Withdrawn legal-status Critical Current

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/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/1131Scheduling of bit node or check node processing
    • H03M13/1134Full parallel processing, i.e. all bit nodes or check nodes are processed in parallel
    • 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/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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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
    • H03M13/3715Adaptation to the number of estimated errors or to the channel state
    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3738Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • H03M13/451Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]

Landscapes

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

Abstract

本公开涉及一种存储器系统,该存储器系统包括存储器装置和控制器。该存储器装置包括分别存储多个数据段的多个非易失性存储器组,每个数据段对应于码字。该控制器被配置为:当多个数据段之中的第一数据段中包含错误时,执行硬判决解码以校正错误;当硬判决解码失败时,确定多个数据段之中的与第一数据段相关联的其他数据段是否可读;并且当其他数据段可读时,基于第一数据段和其他数据段来执行芯片猎杀解码。

Description

用于修复存储器系统中数据错误的设备和方法
相关申请的交叉引用
本专利申请要求于2020年3月31日提交的申请号为10-2020-0038757的韩国专利申请的优先权,其全部公开内容通过引用并入本文。
技术领域
本公开的实施例涉及一种存储器系统,并且更特别地,涉及一种用于校正存储器系统中发生的数据错误的设备和方法。
背景技术
近来,计算环境的范例已经转变为使得几乎可以随时随地访问计算机系统的普适计算。因此,诸如移动电话、数码相机、笔记本电脑等的便携式电子装置的使用正在迅速增加。这种便携式电子装置通常使用或包括使用或嵌入至少一个存储器装置的存储器系统。该存储器系统可以包括数据存储装置。数据存储装置可以用作便携式电子装置的主存储装置或辅助存储装置。
与硬盘不同,使用非易失性半导体存储器装置的数据存储装置的优点在于,由于其不具有机械驱动部件(例如,机械臂)而具有优异的稳定性和耐久性,并且具有高数据访问速度和低功耗。在具有这种优点的存储器系统的情况下,示例性数据存储装置包括USB(通用串行总线)存储器装置、具有各种接口的存储卡、固态驱动器(SSD)等。
发明内容
本公开的实施例可以提供一种数据处理系统和用于操作该数据处理系统的方法,该数据处理系统包括诸如存储器系统和主机的组件和资源,并且能够基于组件和资源的使用动态地分配用于组件之间的数据通信的多个数据路径。
本公开的实施例可以提供一种设备,该设备被配置为:当从存储器系统中的非易失性存储器装置输出的数据中包含错误时,在对包含错误的数据执行错误修复或恢复操作的同时,并行地读取相邻页面中存储的其他数据,以便准备或执行芯片猎杀解码以校正多位错误。该存储器系统及其操作方法可以减少由于错误修复或恢复操作而在数据输入/输出操作期间延迟的增加。
通过在存储器系统中执行的该操作,可以并行地执行用于修复错误的多种手段、算法或方法,从而与以预定顺序顺序地执行所有手段、算法或方法的情况相比,减少了资源消耗并且提高了错误修复效率。此外,实施例可以提供一种存储器系统的方法或设备,其可以提高存储器系统的错误修复效率以及存储器系统的数据输入/输出性能、操作可靠性或操作稳定性。
在实施例中,一种存储器系统可以包括:存储器装置,包括分别存储多个数据段的多个非易失性存储器组,每个数据段对应于码字;以及控制器,被配置为:当多个数据段之中的第一数据段中包含错误时,执行硬判决解码以校正错误;当硬判决解码失败时,确定多个数据段之中的与第一数据段相关联的其他数据段是否可读;并且当其他数据段可读时,基于第一数据段和其他数据段来执行芯片猎杀解码。
控制器可以被配置为:当其他数据段可读时,对第一数据段并行地执行芯片猎杀解码和附加的硬判决解码或软判决解码。
控制器可以被配置为:当其他数据段可读时,在执行芯片猎杀解码之前跳过对第一数据段执行软判决解码。
控制器可以被配置为:当其他数据段包含错误时,对其他数据段执行硬判决解码。对其他数据段执行的硬判决解码的最大次数可以小于对第一数据段执行的硬判决解码的次数。
控制器可以被配置为执行预设次数的硬判决解码。当执行了预设次数硬判决解码之后,错误无法被校正时,硬判决解码最终失败。
控制器可以被配置为:当在对第一数据段的第一硬判决解码失败之后开始对第一数据段的第二硬判决解码时,确定其他数据段是否可读。
控制器可以被配置为以交错方式执行用于读取其他数据段的读取操作。读取操作和对第一数据段的硬判决解码可以并行地执行。
控制器可以被配置为:当硬判决解码成功时,停止芯片猎杀解码。
控制器可以被配置为:存储硬判决解码的结果,并且在校正其他数据段中包含的错误的同时基于硬判决解码的结果来调整读取电压。
在另一实施例中,一种用于操作存储器系统的方法,该存储器系统包括:存储器装置,包括分别存储多个数据段的多个非易失性存储器组,每个数据段对应于码字;以及控制器,被配置为控制存储器装置,该方法可以包括:确定多个数据段之中的第一数据段是否包含错误;当第一数据段中包含错误时,执行硬判决解码以校正该错误;当硬判决解码失败时,确定多个数据段之中的与第一数据段相关联的其他数据段是否可读;并且当其他数据段可读时,基于第一数据段和其他数据段执行芯片猎杀解码。
该方法可以进一步包括:当其他数据段可读时,对第一数据段并行地执行芯片猎杀解码和附加的硬判决解码或软判决解码。
该方法可以进一步包括:当其他数据段可读时,在执行芯片猎杀解码之前跳过对第一数据段的软判决解码。
该方法可以进一步包括:当其他数据段包含错误时,对其他数据段执行硬判决解码。对其他数据段执行的硬判决解码的最大次数可以小于对第一数据段执行的硬判决解码的次数。
该方法可以进一步包括执行预设次数的硬判决解码。当在对第一数据段执行了预设次数的硬判决解码之后错误无法被校正时,硬判决解码最终失败。
确定其他数据段是否可读可以包括:当在对第一数据段的第一硬判决解码失败之后开始对第一数据段的第二硬判决解码时,确定其他数据段是否可读。
该方法可以进一步包括以交错方式执行用于读取其他数据段的读取操作,其中读取操作和对第一数据段的硬判决解码并行地执行。
该方法可以进一步包括:当硬判决解码成功时,停止芯片猎杀解码。
该方法可以进一步包括:存储硬判决解码的结果;并且在修复其他数据段中包含的错误的同时,基于硬判决解码的结果来调整读取电压。
在另一实施例中,一种计算机程序产品,该计算机程序产品有形地存储在非暂时性计算机可读介质上,该计算机程序产品包括使多核处理器装置执行以下操作的指令:读取多个数据段之中的第一数据段;确定第一数据段是否包含错误;当第一数据段中包含错误时,执行硬判决解码以校正错误;当硬判决解码失败时,确定多个数据段之中的与第一数据段相关联的其他数据段是否可读;并且当其他数据段可读时,基于第一数据段和其他数据段来执行芯片猎杀解码,其中该多核处理器装置包括多个处理器内核,该多个处理器内核中的若干个各自包括处理器和电路,该电路被配置为将该处理器联接到存储器装置,该存储器装置包括多个非易失性存储器组,该多个非易失性存储器组分别存储多个数据段。
当其他数据段可读时,可以对第一数据段并行地执行芯片猎杀解码和附加的硬判决解码或软判决解码。
附图说明
本文参照附图进行描述,其中在所有附图中,相同的附图标记指代相同的部件。
图1示出根据本公开的实施例的存储器系统。
图2示出根据本公开的实施例的数据处理系统。
图3示出根据本公开的实施例的存储器系统。
图4示出在存储器系统中执行的芯片猎杀(chipkill)解码。
图5示出根据本公开的实施例的在存储器系统中执行的错误校正操作。
图6示出根据本公开的另一实施例的在存储器系统中执行的错误校正操作。
图7示出根据本公开的实施例的操作存储器系统的方法。
图8示出根据本公开的另一实施例的操作存储器系统的方法。
在本公开中,对包括在“一个实施例”、“示例实施例”、“实施例”、“另一实施例”、“一些实施例”、“各个实施例”、“其他实施例”、“可选实施例”等中的各种特征(例如,元件、结构、模块、组件、步骤、操作、特征等)的参考旨在表示任何这种特征被包括在本公开的一个或多个实施例中,而在相同的实施例中可以组合或不一定组合。
具体实施方式
下面参照附图描述公开的各个实施例。然而,本公开的元件和特征可以不同地配置或布置以形成其他实施例,这些实施例可以是所公开的任何实施例的变型。
在本公开中,术语“包含”、“包含有”、“包括”和“包括有”是开放式的。如在所附权利要求书中所使用的,这些术语指定所陈述的元件的存在,并且不排除一个或多个其他元件的存在或添加。权利要求书中的术语不排除该设备包括附加组件(例如,接口单元、电路等)。
在本公开中,各种单元、电路或其他组件可以被描述或要求保护为“被配置为”执行一项或多项任务。在这种语境下,“被配置为”用于通过指示块/单元/电路/组件包括在操作期间执行一项或多项任务的结构(例如,电路),来表示结构。这样,即使在所指定的块/单元/电路/组件当前不操作(例如,未接通)时,也可以说该块/单元/电路/组件被配置为执行任务。与措辞“被配置为”一起使用的块/单元/电路/组件包括硬件,例如电路、存储可运行以实施操作的编程指令的存储器等。列举块/单元/电路/组件“被配置为”执行一项或多项任务,明确意为针对该块/单元/电路/组件。另外,“被配置为”可以包括由软件和/或固件(例如,FPGA或运行软件的通用处理器)操纵的通用结构(例如,通用电路),来以能够执行相关任务的方式进行操作。“被配置为”还可以包括使制造过程(例如,半导体制造设施)适于制造适于实施或执行一项或多项任务的装置(例如,集成电路)。
如本公开中所使用的,术语“电路”指以下的全部:(a)纯硬件电路实施方式(诸如仅在模拟和/或数字电路中的实施方式),以及(b)电路和软件(和/或固件)的组合,诸如(如适用):(i)处理器的组合,或(ii)处理器/软件(包括数字信号处理器)、软件和存储器的一部分,它们共同工作以使诸如移动电话或服务器的设备执行各种功能,以及(c)诸如微处理器或微处理器的一部分的电路,其需要软件或固件以进行操作,即使软件或固件物理上并不存在。“电路”的该定义适用于该术语在本申请中、包括在任何权利要求中的所有用法。作为另一示例,如在本申请中所使用的,术语“电路”还涵盖仅处理器(或多个处理器)或处理器的一部分及其(或它们的)所附软件和/或固件的实施方式。如果适用于特定的权利要求元素,术语“电路”还涵盖例如用于存储装置的集成电路。
如本文所使用的,这些术语“第一”、“第二”、“第三”等被用作它们之前的名词的标签,并且不暗示任何类型的排序(例如,空间的、时间的、逻辑的等)。术语“第一”和“第二”并不一定暗示必须在第二值之前写入第一值。此外,尽管本文可以使用这些术语来标识各个元件,但是这些元件不受这些术语的限制。这些术语用于将一个元件与另一元件区分开,否则一个元件与另一元件具有相同或相似的名称。例如,可以将第一电路与第二电路区分开。
此外,术语“基于”用于描述影响确定的一个或多个因素。该术语不排除可能影响确定的其他因素。也就是说,确定可以仅基于那些因素或者至少部分地基于那些因素。考虑短语“基于B确定A”。虽然在这种情况下,B是影响A的确定的因素,但这样的表述并不排除A的确定也基于C。在其他情况下,可以仅基于B确定A。
现在将参照附图描述本公开的实施例,其中相同的附图标记指代相同的元件。
图1示出根据本公开的实施例的存储器系统110。
参照图1,存储器系统110可以包括存储器装置150和控制器130。存储器装置150和控制器130可以在物理上彼此分开。存储器装置150和控制器130可以经由至少一条数据路径连接。例如,数据路径可以包括通道和/或通路。
根据实施例,存储器装置150和控制器130可以在功能上进行划分。进一步,根据实施例,存储器装置150和控制器130可以利用单个芯片或多个芯片来实施。
存储器装置150可以包括多个存储块60。多个存储块60中的每一个可以是一组非易失性存储器单元。可以通过单次擦除操作将存储在多个存储块60的每一个中的数据一起移除。尽管没有示出,但是多个存储块60中的每一个可以包括多个页面,多个页面中的每个页面是一组非易失性存储器单元,并且可以在单次编程操作期间将数据同时存储在每个页面的所有存储器单元中,或者可以在单次读取操作期间将存储在每个页面的所有存储器单元中的数据一起输出。
尽管在图1中未示出,但是存储器装置150可以包括多个存储器平面或多个存储器管芯。根据实施例,存储器平面可以是逻辑分区或物理分区,包括至少一个存储块60、能够控制包括多个非易失性存储器单元的阵列的驱动电路以及能够临时存储输入到多个非易失性存储器单元或从多个非易失性存储器单元输出的数据的缓冲器。
另外,根据实施例,存储器管芯可以包括至少一个存储器平面。存储器管芯可以是在物理上可区分的衬底上实施的一组组件。每个存储器管芯可以通过数据路径连接到控制器130。每个存储器管芯可以包括用于与控制器130交换数据和信号的接口。
根据实施例,存储器装置150可以包括至少一个存储块60、至少一个存储器平面或至少一个存储器管芯。根据存储器系统110的性能,存储器装置150的内部配置可以与图1所示的配置不同。也就是说,实施例不限于图1所示的配置。
参照图1,存储器装置150可以包括能够将至少一个电压供应到存储块60中的电压供应电路70。电压供应电路70可以将读取电压Vrd、编程电压Vprog、通过电压Vpass或擦除电压Vers供应到存储块60中包括的非易失性存储器单元中。例如,在用于读取存储块60中包括的所选择的非易失性存储器单元中存储的数据的读取操作中,电压供应电路70可以将读取电压Vrd供应到所选择的非易失性存储器单元中。在用于将数据存储在存储块60中包括的所选择的非易失性存储器单元中的编程操作中,电压供应电路70可以将编程电压Vprog供应到所选择的非易失性存储器单元中。另外,在对所选择的非易失性存储器单元执行的读取操作或编程操作期间,电压供应电路70可以将通过电压Vpass供应到未选择的非易失性存储器单元中。在用于擦除存储在存储块60中的数据的擦除操作中,电压供应电路70可以将擦除电压Vers供应到存储块60中。
在对存储器装置150中包括的非易失性存储器单元中的数据进行编程之后,控制器130可以读取该数据。在控制器130读取的数据中,可能偶尔检测到错误(至少1位错误)。在存储器装置150的初始使用阶段,例如,当存储器装置150是非常轻微磨损的存储器装置时,可能难以在读取数据中发现错误。然而,随着存储器装置150的写入和擦除周期(P/E周期)的数量增加,例如,随着非易失性存储器单元的磨损增加,读取数据中出现的错误的数量可能增加。除了存储器装置150的磨损之外,根据数据保留时间可能会发生错误,其中数据保留时间是数据被安全存储或在存储器装置150中的非易失性存储器单元中保持其值的时段。通常,数据保留时间可以用作用于操作存储器装置150的特征参数。当由于非易失性存储器单元的阈值电压随时间改变的特性而不能正确地识别存储在非易失性存储器单元中的数据的值时,可能会发生错误。
当控制器130执行读取操作时,存储器装置150中包括的多个非易失性存储器单元中存储的数据被传送到控制器130。例如,控制器130中的输入/输出(I/O)控制器192可以执行读取操作。输入/输出控制器192可以通过收发器198将读取命令传输到存储器装置150。收发器198可以将读取命令传递到存储器装置150,并且接收从存储器装置150输出的读取数据。收发器198可以将从存储器装置150传送的读取数据存储在存储器144中。
输入/输出控制器192允许解码/ECC电路196响应于读取命令来检查和校正在存储器144中存储的在读取数据中检测到的错误。例如,解码/ECC电路196可以通过错误校正码(ECC)来修复或校正存储器144中存储的读取数据中包含的错误。尽管解码/ECC电路196已经使用错误校正码(ECC)执行了错误校正操作,但是存储器144中存储的读取数据中的错误可能未被校正。当与读取命令相对应的读取数据中包含的错误未被校正时,即,当读取数据未被修复时,输入/输出控制器192可以确定与读取命令相对应的读取操作可能失败。
如上所述,从存储器装置150输出的读取数据中包含的错误可能是由非易失性存储器单元的阈值电压的变化引起的。当为读取存储器装置150中的多个非易失性存储器单元中存储的数据而供应的读取电压Vrd响应于多个非易失性存储器单元的阈值电压的改变的分布而改变时,可以减少读取数据的错误。当从存储器装置150输出的读取数据中包含的错误减少时,解码/ECC电路196可以容易地修复或校正读取数据中包含的错误。
关于存储器系统110,期望在保持数据准确性和输入/输出速度的同时增加数据存储容量。为此,存储器系统110可以使用错误校正码(ECC)技术和信号处理技术来有效地提高与数据准确性有关的数据可靠性。应用错误校正码(ECC)来检测和校正数据中发生的错误的数据单元称为码字。码字的长度为n个位。n个位包括k个位的用户数据和(n-k)个位的奇偶校验数据。码率计算为(k/n)。码率越高,每个码字中可以存储的用户数据越多。通常,码字越长并且码率越小,错误校正码(ECC)的错误校正能力越好。
解码/ECC电路196可以对从存储器装置150读取并且通过通道传输的数据或信息进行解码。解码/ECC电路196可以包括解码器,解码器根据数据或信息表示为多少位来执行硬判决解码或软判决解码。例如,解码器可以使用表示为1位的存储器单元输出信息来执行硬判决解码。在本文中,该1位信息可以被称为硬信息。同时,解码器可以使用表示为2位或更多位的更准确的存储器单元输出信息来执行软判决解码。2位或更多位的信息可以被称为软信息。软判决解码比硬判决解码具有更强的错误校正能力。但是,与硬判决解码相比,软判决解码可能需要较高的硬件实施复杂度和/或高存储器消耗。另外,生成软信息可能比生成硬信息需要更长的读取延迟。
通过字线执行读取存储在存储器装置150中的数据的操作。可以同时读取连接到单个字线的多个存储器单元中存储的数据。在读取操作中,参考电压被施加到字线。可以将参考电压与每个存储器单元的阈值电压进行比较,以基于比较结果来确定表示信息的数据。例如,存储在每个存储器单元中的数据是基于阈值电压低于还是高于参考电压来确定的。因此,可能需要对每个字线进行一次感测(即,读取一次)以生成硬信息。在生成表示4个电平的2位软信息的情况下,改变或调整参考电压的电平,并且可以使用不同参考电压的电平执行三次感测(即,读取三次)。
当在从存储器装置150读取的数据中检测到错误时,存储器系统110可以逐步执行错误校正操作。例如,当在从单个页面读取的数据中发现错误时,解码/ECC电路196可以对数据执行硬判决解码。如果相应的数据中的错误没有通过硬判决解码被校正,则解码/ECC电路196可以可选地执行读取偏置优化以调整读取电压Vrd和软判决解码的电平。然而,读取偏置优化和软判决解码可能需要对存储器单元的相对大量的感测(读取)操作,以修复从单个页面读取的数据,因此,读取延迟可能会增加并且数据质量(QoS)可能会下降。在本公开的实施例中,当硬判决解码失败至少一次时,存储器系统110可以利用芯片猎杀解码来更快速和有效地修复和恢复从单个页面读取的数据。
通过芯片猎杀解码,存储器系统110可以修复或恢复在从存储器装置150读取的数据中检测到的多位错误。当数据被错误地存储在存储器装置150的非易失性存储器单元中时,或者当由于各种原因而已经被正确地存储在非易失性存储器单元中的数据可以被错误地输出时,可能产生错误。在实施例中,可以以两种不同方式中的任意一种或以两种方式的组合来执行芯片猎杀解码。在实施例中,如何执行芯片猎杀解码可以根据存储器系统110的硬件配置来选择或确定,但是可能不能通过为由控制器130执行的操作而设计的软件进行改变。
为了应用芯片猎杀解码来校正错误,存储在存储器装置150中的数据可以构成码字。该码字可以是错误校正码(ECC)算法提供的用于错误检测和校正的一组数据位和错误校验位。数据位可以对应于用户数据,并且错误校验位可以对应于奇偶校验数据。例如,假设彼此相关联的256(=64x4)位数据存储在存储器装置150内的四个不同位置。当存储器装置150的用户数据区域被设计为以64位为单位时,码字的大小可以是72位,其包括64位用户数据和8位错误校正数据(或奇偶校验数据)。在这种情况下,存储器系统110可以在错误是单个位错误时自动校正错误并可靠地检测到2位错误,这被称为单错误校正/双错误检测(SEC/DED)。当在从存储256(=64x4)位的四个不同位置读取的多位数据中发生错误时,解码/ECC电路196可以执行芯片猎杀解码,以校正256(64x4)位数据中包含的错误。
在本公开的实施例中,当对每个码字执行的硬判决解码失败时,解码/ECC电路196可以在从四个不同位置并行地感测/读取码字之后执行芯片猎杀解码。因此,可以避免通过在硬判决解码之后执行软判决解码而可能产生的读取延迟的增加和服务质量(QoS)的降低。
为了提高芯片猎杀解码的性能,存储器系统110可以在每个码字中包含更多的错误校正位以校正一位以上的错误。可以基于支持对多位错误进行校正的各种数学算法来确定每个码字中包含的用户数据的位数和错误校正数据的位数。例如,通过使用由128位用户数据和16位错误校正数据组成的144位码字,可以校正特定数据位字段内的4位错误。然而,4位错误可以相邻分布,而不是随机分布。即使例如具有128位的码字和具有64位的码字的两个不同的码字的错误校正位与用户数据位(例如16/128和8/64)的比率相同,当码字的长度较长时也可以提高错误校正能力。也就是说,码字越长,可以校正或修复的错误位就越多。
在实施例中,芯片猎杀解码可以修复或恢复不能使用错误校正码(ECC)进行校正的错误。可以对4位半字节(1/2字节)执行芯片猎杀解码。4位半字节可以被称为符号。如果单个半字节是错误的,即当单个半字节包含错误时,芯片猎杀解码可以根据需要校正单个半字节中的所有4个位。然而,如果两个或更多个符号中有错误,则芯片猎杀解码可以检测到哪个符号包含错误。控制器130一次从支持芯片猎杀解码的存储器装置150读取128位用户数据以及16位错误校验数据,并配置144位数据。128位用户数据可被划分为32个4位半字节N0至N31,16位错误校验数据可被划分为4个4位半字节C0至C3。例如,控制器130可以使用伽罗瓦域。
基于下面表1中所述的伽罗瓦乘法表0至15(十六进制),可以确定通过划分16位错误校验数据而产生的4个4位校验半字节C0、C1、C2和C3,如以下等式1至4所示。
表1
Figure BDA0002739597200000131
等式1
CO=NO+2*N1+3*N2+4*N3+5*N4+6*N5+7*N6+8*N7+9*N8+a*N9+b*N10+c*N11+d*N12+e*N13+f*N14+N15+2*N16+3*N17+4*N18+5*N19+6*N20+7*N21+8*N22+9*N23+a*N24+b*N25+c*N26+d*N27+e*N28+f*N29+N31
等式2
C1=N0+N1+N2+N3+N4+N5+N6+N7+N8+N9+N10+N11+N12+N13+N14+N30+N31
等式3
C2=N15+N16+N17+N18+N19+N20+N21+N22+N23+N24+N25+N26+N27+N28+N29+N30+N31
等式4
C3=N0+9*N1+e*N2+d*N3+b*N4+7*N5+6*N6+f*N7+2*N8+c*N9+5*N10+a*N11+4*N12+3*N13+8*N14+N15+9*N16+e*N17+d*N18+b*N19+7*N20+6*N21+f*N22+2*N23+c*N24+5*N25+a*N26+4*N27+3*N28+8*N29+N30
在上述等式1至4中,“*”表示伽罗瓦乘法,“+”表示异或(XOR)运算。如上所述,当读取数据时,控制器130可以计算通过划分16位错误校验数据而产生的4个4位校验半字节C0至C3。另外,控制器130可以再次读取数据并且重复相同的计算以产生不同的4个4位校验半字节,即另一组C0′至C3′。此后,控制器130可以通过如下的等式5至8来生成被称为校正子S0、S1、S2和S3的半字节组。
等式5
SO=CO+CO′
等式6
S1=C1+C1′
等式7
S2=C2+C2′
等式8
S3=C3+C3′
如果从存储器装置150读取的数据中没有错误,则校验半字节组C0至C3与校验半字节组C0′至C03′相同,从而所有校正子S0至S3变为“0”。然而,如果存在错误并且因此校验半字节组C0至C3不同于校验半字节组C0'至C03',则校正子S0至S3中的至少一个不变为“0”。
例如,假设在32个4位半字节N0至N31的一个中(例如在第8半字节N7中)存在错误。因为在用于计算校验半字节C0、C1和C3的等式中包括第8半字节N7,所以校正子S0、S1和S3可不为“0”。然而,校正子S2变为“0”。首先,因为校正子S1不是“0”并且校正子S2是“0”,所以控制器130可以识别出在前15个半字节N0至N14的一个中发生了错误。当将校正子S0除以校正子S1并参考上式时,相除结果变为8,因此可以识别出在第8半字节N7中已经发生错误。
因此,从存储器装置150读取的第8半字节N7的当前值是不正确的,并且可以将校正子S1理解为原始正确值和第8半字节N7的不正确值的XOR(异或)结果。因此,可以通过校正子S1和不正确值的XOR运算来恢复原始正确值。
根据实施例,控制器130可以确定在从存储器装置150中的多个非易失性存储器单元输出的数据中是否包含错误,并且当发现错误时校正该错误。可以由工作负载检测器194监测控制器130中的解码/ECC电路196检测错误并校正错误的过程。例如,工作负载检测器194可以在硬判决解码失败之后检测到解码/ECC电路196执行读取偏置优化和软判决解码。当解码/ECC电路196无法通过对特定数据执行硬判决解码来校正特定数据中包含的错误时,工作负载检测器194可以确定与特定数据(例如,通过不同通道从位于不同管芯或平面中的其他页面传输的其他数据)相关联的至少另一页面是否可读。当可以从与特定数据相关联的其他位置读取其他数据时,在解码/ECC电路196对特定数据执行软判决解码的同时,工作负载检测器194可以从其他位置收集其他数据以独立地支持芯片猎杀解码。在工作负载检测器194收集其他数据之后,解码/ECC电路196可以基于特定数据和其他数据来执行芯片猎杀解码。通过根据本公开实施例的该过程,当硬判决解码失败时,控制器130可以执行芯片猎杀解码,以避免或减少由执行读取偏置优化和软判决解码而可能导致的数据输入和输出性能的劣化。这种操作可以减少存储器系统110校正错误所需的资源。
根据实施例,为了提高或增强错误校正效率,存储器系统110可以设置或建立关于芯片猎杀解码的详细操作。例如,为了在由存储器系统110中的解码/ECC电路196执行的错误校正操作中执行芯片猎杀解码,控制器130可以读取其他数据(附加数据),该其他数据位于与特定数据存储位置不同的位置并且与包括硬判决解码失败的错误的特定数据相关联。此时,如果甚至在附加数据中也发现错误,则解码/ECC电路196可以对附加数据执行硬判决解码。由于已经读取了附加数据来执行芯片猎杀解码,因此该附加数据未被输出到外部装置,工作负载检测器194可以将对附加数据执行硬判决解码的最大次数限制为小于对目标数据执行硬判决解码的最大次数的2至3倍。在执行芯片猎杀解码之前对包含错误的附加数据执行几次硬判决解码可能会降低错误校正操作的效率。
根据实施例,解码/ECC电路196可以将通过对第一数据执行芯片猎杀解码而获得的结果存储在存储器144中,以对第二数据执行芯片猎杀解码,对第二数据的芯片猎杀解码是在对第一数据执行芯片猎杀解码之后执行的。当第一数据中发生许多错误时,很有可能在与第一数据所处位置相邻的位置存储的第二数据中发生许多错误。
进一步,在将在芯片猎杀解码期间获得的中间结果存储在存储器144中之后,可以将存储在存储器144中的中间结果用于与芯片猎杀解码并行地执行的硬判决解码或软判决解码。另外,如果在芯片猎杀解码期间获得的结果,例如直到执行硬判决解码x次为止所获得的解码结果,被存储在存储器144中,则控制器130可以应用或利用所存储的结果来调整或优化用于读取其他数据并校正其他数据中的错误的读取电压Vrd。
在下文中,参照图2和图3,将详细描述图1的存储器系统110执行的一些操作。
图2示出根据本公开的实施例的数据处理系统100。参照图2,数据处理系统100可以包括与存储器系统110接合或互锁的主机102。
主机102可以包括例如:诸如移动电话、MP3播放器、膝上型计算机等的便携式电子装置,或者诸如台式计算机、游戏机、电视(TV)、投影仪等的非便携式电子装置。
主机102包括至少一个操作系统(OS),其通常可以管理和控制在主机102中执行的功能和操作。OS可以提供与存储器系统110接合的主机102和需要并使用存储器系统110的用户之间的互操作性。OS可以支持与用户的请求相对应的功能和操作。作为示例而非限制,根据主机102的移动性,OS可以包括通用操作系统或移动操作系统。根据系统要求或用户的环境,通用操作系统可以包括个人操作系统或企业操作系统。企业操作系统可以专门用于确保和支持高性能计算。移动操作系统可能需要支持诸如省电功能的针对移动性的服务或功能。
主机102可以包括多个操作系统。主机102可以运行与存储器系统110互锁的多个操作系统。主机102可以将与用户的请求相对应的多个命令传输到存储器系统110,从而在存储器系统110内执行与多个命令相对应的操作。
存储器系统110中的控制器130可以响应于从主机102输入的请求或命令来控制存储器装置150。例如,控制器130可以执行读取操作以将从存储器装置150读取的数据提供到主机102,并执行写入操作(或编程操作)以将从主机102输入的数据存储在存储器装置150中。为了执行数据输入/输出(I/O)操作,控制器130可以控制和管理用于数据读取、数据编程、数据擦除等的内部操作。
根据实施例,控制器130可以包括主机接口(I/F)132、处理器134、错误校正电路(ECC)138、电源管理单元(PMU)140、存储器接口(I/F)142和存储器144。控制器130中包括的组件可以根据关于存储器系统110的实施形式、操作性能等而变化。例如,根据主机接口的协议,存储器系统110可以利用可以与主机102电联接的各种类型的存储装置中的任意一种来实施。合适的存储装置的非限制性示例包括固态驱动器(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、尺寸减小的MMC(RS-MMC)、微型MMC、安全数字(SD)卡、迷你SD卡、微型SD卡、通用串行总线(USB)存储装置、通用闪存(UFS)装置、紧凑型闪存(CF)卡、智能媒体(SM)卡、记忆棒等。基于存储器系统110的实施方式,可以将组件添加到控制器130或从控制器130删除组件。
主机102和存储器系统110可以包括用于在预先确定的协议下传输和接收信号、数据等的控制器或接口。例如,存储器系统110中的主机接口132可以包括能够将信号、数据等传输到主机102或接收来自主机102的信号、数据等的设备。
控制器130中包括的主机接口132可以从主机102接收信号、命令(或请求)或数据。也就是说,主机102和存储器系统110可以使用预先确定的协议在它们之间传输和接收数据。由主机102和存储器系统110支持的用于在它们之间发送和接收数据的协议或接口可以包括:通用串行总线(USB)、多媒体卡(MMC)、并行高级技术附件(PATA)、小型计算机系统接口(SCSI)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、高速外围组件互连(PCIE)、串列SCSI(SAS)、串行高级技术附件(SATA)、移动工业处理器接口(MIPI)等。根据实施例,主机接口132是一种用于与主机102交换数据的层,并且由被称为主机接口层(HIL)的固件来实施或驱动。
用作在主机102和存储器系统110之间传输和接收数据的接口之一的电子集成驱动器(IDE)或高级技术附件(ATA)可以使用包括40条并行连接的导线的电缆,来支持主机102和存储器系统110之间的数据传输和接收。当多个存储器系统110连接到单个主机102时,可以通过使用多个存储器系统110所连接的拨码开关或基于多个存储器系统110的位置将多个存储器系统110划分为主设备和从设备。被设置为主设备的存储器系统110可以用作主存储器装置。IDE(ATA)已发展为Fast-ATA、ATAPI和增强型IDE(EIDE)。
串行高级技术附件(SATA)是一种串行数据通信接口,其与电子集成驱动器(IDE)装置所使用的各种ATA标准的并行数据通信接口兼容。IDE接口中的40条导线可以减少为SATA接口中的6条导线。例如,可以将用于IDE的40个并行信号转换为用于SATA的6个串行信号,以实施IDE和SATA之间的数据传输和接收。SATA在用于数据传输和接收的主机102中由于其更快的数据传输和接收速率以及其更少的资源消耗而被广泛使用。SATA可以支持多达30个外部装置到主机102中包括的单个收发器的连接。另外,SATA可以支持热插拔,即使在主机102和另一装置之间执行数据通信时,该热插拔也允许将外部装置附接到主机102或从主机102拆卸。因此,即使当主机102通电时,SATA也使存储器系统110像由通用串行总线(USB)支持的装置那样与主机102连接或断开。例如,在具有eSATA端口的主机102中,存储器系统110可以像外部硬盘一样自由地附接到主机102或从主机102拆卸。
小型计算机系统接口(SCSI)是一种串行数据通信接口,用于在计算机、服务器和/或其他外围装置之间进行连接。与诸如IDE和SATA的其他接口相比,SCSI可以提供较高的传输速度。在SCSI中,主机102和至少一个外围装置(例如,存储器系统110)串联连接,但是可以通过并行数据通信来执行主机102和每个外围装置之间的数据传输和接收。在SCSI中,容易将诸如存储器系统110的装置与主机102连接或从主机102断开。SCSI可以支持15个外部装置与主机102中包括的单个收发器的连接。
串列CSI(SAS)可以被理解为SCSI的串行数据通信版本。在SAS中,不仅主机102和多个外围装置串联连接,而且主机102和每个外围装置之间的数据传输和接收也可以以串行数据通信方案来执行。SAS可以支持通过串行电缆而不是并行电缆在主机102和外围装置之间的连接,从而容易地使用SAS管理设备并增强或提高操作可靠性和通信性能。SAS可以支持八个外部装置与主机102中包括的单个收发器的连接。
高速非易失性存储器(NVMe)是一种至少基于高速外围组件互连(PCIe)的接口,旨在增强配备有存储器系统110的主机102、服务器、计算装置等的性能和设计灵活性。此处,PCIe可以使用插槽或专用电缆来连接诸如计算装置的主机102和诸如外围装置的存储器系统110。例如,PCIe可以使用多个引脚(例如,18个引脚、32个引脚、49个引脚、82个引脚等)和至少一条导线(例如,x1、x4、x8、x16等)以实现每秒几百兆位(例如,250MB/s、500MB/s、985MB/s、1969MB/s等)的高速数据通信。根据实施例,PCIe方案可以实现每秒数十到数百千兆位的带宽。NVMe可以支持操作速度高于硬盘的存储器系统110(诸如SSD)的操作速度。
根据实施例,主机102和存储器系统110可以通过通用串行总线(USB)相互连接。USB是一种可扩展的、可热插拔的串行接口,其可以提供主机102和诸如键盘、鼠标、操纵杆、打印机、扫描仪、存储装置、调制解调器、摄像机等的外围装置之间成本效益的标准连接。诸如存储器系统110的多个外围装置可以联接到主机102中包括的单个收发器。
参照图2,错误校正电路138可以校正从存储器装置150读取的数据的错误位,并且可以包含错误校正码(ECC)编码器和ECC解码器。此处,ECC编码器可以对待在存储器装置150中编程的数据执行错误校正编码,从而生成添加了奇偶校验位的经编码的数据,并且将经编码的数据存储在存储器装置150中。当控制器130读取存储在存储器装置150中的数据时,ECC解码器可以检测并校正从存储器装置150读取的数据中包含的错误位。换言之,在对从存储器装置150读取的数据执行错误校正解码之后,错误校正电路138可以确定错误校正解码已经成功还是已经失败,并且输出指令信号(例如,错误校正成功信号或错误校正失败信号)。错误校正电路138可以使用在ECC编码过程期间所生成的奇偶校验位,以校正读取数据的错误位。当错误位的数量大于或等于可校正错误位的阈值数量时,错误校正电路138不能校正错误位,而是可以输出指示错误位校正失败的错误校正失败信号。在实施例中,错误校正电路138可以对应于图1所示的解码/ECC电路196。
根据实施例,错误校正电路138可以基于诸如以下的编码调制执行错误校正操作:低密度奇偶校验(LDPC)码、博斯-查德胡里-霍昆格姆(Bose-Chaudhri-Hocquenghem,BCH)码、涡轮码、里德-所罗门(RS)码、卷积码、递归系统码(RSC)、网格编码调制(TCM)、分组编码调制(BCM)等。错误校正电路138可以包括基于上述代码中的至少一种来执行错误校正操作的电路、模块、系统和/或装置。
例如,ECC解码器可以对从存储器装置150传输的数据执行硬判决解码或软判决解码。此处,硬判决解码可以被理解为针对错误校正而广义上分类的两种方法之一。硬判决解码可以包括通过从存储器装置150中的非易失性存储器单元读取数字数据“0”或“1”来校正错误的操作。因为硬判决解码是使用二进制逻辑信号来执行的,所以用于执行硬判决解码的电路或算法的设计或配置可能很简单,并且硬判决解码的处理速度可以比软判决解码更快。
同时,不同于硬判决解码的软判决解码可以包括基于存储器装置150中的非易失性存储器单元的阈值电压的错误校正操作,该阈值电压对应于两个或更多个量化值,例如多位数据、近似值、模拟值等。控制器130可以从存储器装置150中的多个非易失性存储器单元接收两个或更多个字母或量化值,然后基于通过将量化值表征为诸如条件概率或可能性的信息的组合而生成的信息,对所接收的值执行解码操作。
电源管理单元(PMU)140可以控制提供到控制器130的电力。PMU140可以监测供应到存储器系统110的电力,例如,供应到控制器130的电压,并且将电力提供到控制器130中包括的组件。PMU 140不仅可以检测通电或断电,而且还可以在供应到存储器系统110的电力不稳定时生成触发信号以使存储器系统110能够备份当前状态。根据实施例,PMU 140可以包括能够积累可以在紧急情况下使用的电力的装置或组件。
存储器接口142可以用作处理控制器130和存储器装置150之间传送的命令和数据的接口,以允许控制器130响应于从主机102输入的命令或请求来控制存储器装置150。当存储器装置150是闪速存储器时,存储器接口142可以生成针对存储器装置150的控制信号,并且可以在处理器134的控制下处理输入到存储器装置150或从存储器装置150输出的数据。例如,当存储器装置150包括NAND闪速存储器时,存储器接口142包括NAND闪存控制器(NFC)。存储器接口142可以提供用于处理控制器130和存储器装置150之间的命令和数据的接口。根据实施例,存储器接口142可以通过运行被称为闪存接口层(FIL)的固件来实施,该固件作为用于与存储器装置150交换数据的组件。
根据实施例,存储器接口142可以支持开放NAND闪存接口(ONFi)、切换模式等,用于与存储器装置150的数据输入/输出。例如,ONFi可以使用包括至少一条能够支持以8位或16位数据为单位的双向传输和接收的信号线的数据路径(例如,通道、通路等)。控制器130与存储器装置150之间的数据通信可以通过至少一个关于异步单数据速率(SDR)、同步双倍数据速率(DDR)、切换双倍数据速率(DDR)等的接口来实现。
存储器144可以通过将为操作而发生或传递的临时数据或事务数据存储在存储器系统110和控制器130中,来充当存储器系统110或控制器130的工作存储器。例如,在将读取数据输出到主机102之前,存储器144可以响应于来自主机102的请求而临时存储从存储器装置150输出的读取数据。另外,存储器144可以在将写入数据编程在存储器装置150中之前临时存储从主机102输入的写入数据。当控制器130控制存储器装置150的诸如数据读取操作、数据写入或编程操作、数据擦除操作等的操作时,可以将在存储器系统110的控制器130和存储器装置150之间传输或生成的数据存储在存储器144中。除了读取数据或写入数据之外,存储器144可以存储执行用于在主机102和存储器装置150之间输入或输出数据的操作所必需的信息,例如映射数据、读取请求、编程请求等。根据实施例,存储器144可以包括一个或多个命令队列、编程存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等。
在实施例中,存储器144可以利用易失性存储器来实施。例如,存储器144可以利用静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)或两者来实施。尽管图2示出了设置在控制器130内的存储器144,但是实施例不限于此。存储器144可以位于控制器130内部或外部。例如,存储器144可以由外部易失性存储器来实现,该外部易失性存储器具有在存储器144和控制器130之间传送数据和/或信号的存储器接口。
处理器134可以控制存储器系统110的全部操作。例如,处理器134可以响应于由主机102提供的写入请求或读取请求来控制存储器装置150的编程操作或读取操作。根据实施例,处理器134可以运行固件以控制存储器系统110中的编程操作或读取操作。在本文中,固件可以被称为闪存转换层(FTL)。将参照图3详细描述FTL的示例。根据实施例,处理器134可以利用微处理器或中央处理单元(CPU)来实施。
根据实施例,存储器系统110可以利用至少一个多核处理器来实施。多核处理器是一种集成了被认为是不同的处理区域的两个或更多个内核的电路或芯片。例如,当多核处理器中的多个内核独立地驱动或运行多个闪存转换层(FTL)时,可以提高存储器系统110的数据输入/输出速度(或性能)。根据实施例,可以通过多核处理器中的不同内核独立地执行存储器系统110中的数据输入/输出(I/O)操作。
控制器130中的处理器134可以执行与从主机102输入的请求或命令相对应的操作。此外,存储器系统110可以独立于从诸如主机102的外部装置输入的命令或请求。通常,控制器130响应于从主机102输入的请求或命令而执行的操作可以被认为是前台操作。不管从主机102输入的请求或命令如何,由控制器130独立执行的操作可以被认为是后台操作。控制器130可以执行前台操作或后台操作以读取、写入或擦除存储器装置150中的数据。另外,可以将与作为从主机102传输的设置命令的设置参数命令或设置特征命令相对应的参数设置操作视为前台操作。同时,作为不需要从主机102传输命令而执行的后台操作,控制器130可以执行关于存储器装置150中包括的多个存储块152、154和156的垃圾收集(GC)、损耗均衡(WL)、用于识别和处理坏块的坏块管理等。
根据实施例,可以执行基本相似的操作作为前台操作和后台操作。例如,如果存储器系统110响应于从主机102输入的请求或命令而执行垃圾收集(例如,手动GC),则该垃圾收集可以被认为是前台操作。然而,当存储器系统110独立于主机102而执行垃圾收集(例如,自动GC)时,该垃圾收集可以被认为是后台操作。
当存储器装置150包括含有非易失性存储器单元的多个管芯(或多个芯片)时,控制器130可以被配置为响应于从主机102输入的多个请求或命令,对存储器装置150执行并行处理,以提高存储器系统110的性能。例如,可以将所传输的请求或命令进行划分并同时提供到存储器装置150中的多个管芯或多个芯片。控制器130中的存储器接口142可以通过至少一个通道和至少一个通路连接到存储器装置150中的多个管芯或芯片。当控制器130响应于与包括非易失性存储器单元的多个页面相关联的请求或命令,通过每个通道或每个通路将数据分布和存储在多个管芯中时,可以同时或并行地执行与该请求或命令相对应的多个操作。这种处理方法或方案可以被认为是交错方法。因为以交错方法操作的存储器系统110的数据输入/输出速度可以比没有交错方法的快,所以可以提高存储器系统110的数据I/O性能。
作为示例而非限制,控制器130可以识别出关于与包括在存储器装置150中的多个存储器管芯相关联的多个通道(或通路)的状态。控制器130可以将每个通道或每个通路的状态确定为忙碌状态、就绪状态、活动状态、空闲状态、正常状态和异常状态中的一种。控制器可与物理块地址相关联地确定通过哪个通道或通路传递指令(和/或数据)。例如,指令(和/或数据)被传递到哪个(哪些)管芯中可与物理块地址相关联。控制器130可以参考从存储器装置150传递的描述符。描述符可以是具有预定格式或结构的数据,并且包括描述存储器装置150的特征的参数的块或页面。例如,描述符可以包括装置描述符、配置描述符、单元描述符等。控制器130可以参考或使用描述符来确定用于交换指令或数据的通道或通路。
参照图2,存储器系统110中的存储器装置150可以包括多个存储块152、154和156。多个存储块152、154和156中的每一个包括多个非易失性存储器单元。根据实施例,存储块152、154或156可以是被一起擦除的一组非易失性存储器单元。存储块152、154或156可以包括多个页面,多个页面中的每一个是被一起读取或编程的一组非易失性存储器单元。尽管在图2中未示出,但是每个存储块152、154或156可以具有用于高集成度的三维堆叠结构。此外,存储器装置150可以包括多个管芯,每个管芯包括多个平面,每个平面包括多个存储块152、154和156。存储器装置150可以不同地配置以提高存储器系统110的性能。
在图2所示的存储器装置150中,包括多个存储块152、154和156。根据可以存储在一个存储器单元中或由一个存储器单元表示的位数,多个存储块152、154和156可以是任何不同类型的存储块,诸如单层单元(SLC)存储块、多层单元(MLC)存储块等。
此处,SLC存储块包括由存储器单元实施的多个页面,每个存储器单元存储一位数据。SLC存储块可以具有高数据I/O操作性能和高耐久性。MLC存储块包括由存储器单元实施的多个页面,每个存储器单元存储多位数据(例如,两位或更多位的数据)。与SLC存储块相比,MLC存储块在相同的空间中可具有更大的存储容量。MLC存储块可以在存储容量方面高度集成。
在实施例中,存储器装置150可以利用诸如双层单元(DLC)存储块、三层单元(TLC)存储块、四层单元(QLC)存储块及其组合的MLC存储块来实施。双层单元(DLC)存储块可以包括由每个存储器单元能够存储2位数据的存储器单元实施的多个页面。三层单元(TLC)存储块可包括由每个存储器单元能够存储3位数据的存储器单元实施的多个页面。四层单元(QLC)存储块可包括由每个存储器单元能够存储4位数据的存储器单元实施的多个页面。在另一实施例中,存储器装置150可利用包括多个页面的块实施,该多个页面由每个存储器单元能够存储5位或更多位数据的存储器单元实施。
根据实施例,控制器130可以将存储器系统150中包括的多层单元(MLC)存储块用作在一个存储器单元中存储1位数据的SLC存储块。多层单元(MLC)存储块的数据输入/输出速度可比SLC存储块的数据输入/输出速度慢。因此,当将MLC存储块用作SLC存储块时,可以减少用于读取操作或编程操作的余量。控制器130可以利用多层单元(MLC)存储块的一部分作为SLC存储块来实现更快的数据输入/输出速度。例如,控制器130可以使用这种MLC存储块作为临时存储数据的缓冲器,因为该缓冲器可能需要较高的数据输入/输出速度以提高存储器系统110的性能。
进一步,根据实施例,控制器130可以将数据多次编程在多层单元(MLC)块中而无需对存储器装置150中包括的MLC存储块执行擦除操作。通常,非易失性存储器单元具有不支持数据重写的功能。然而,控制器130可以使用多层单元(MLC)可以存储多位数据的特性,以便通过多次执行用于将1位数据编程在MLC中的写入操作来将多个1位数据编程在MLC中。对于MLC重写操作,当将1位数据编程在非易失性存储器单元中时,控制器130可以将编程次数的数量存储为单独的操作信息。根据实施例,可以在将另一数据重写在相同的非易失性存储器单元中之前,执行用于均匀地调平非易失性存储器单元的阈值电压的操作。
在本公开的实施例中,存储器装置150被实现为诸如闪速存储器(例如,NAND闪速存储器、NOR闪速存储器等)的非易失性存储器。可选地,存储器装置150可以通过相变随机存取存储器(PCRAM)、铁电随机存取存储器(FRAM)、自旋转移力矩随机存取存储器(STT-RAM)、自旋转移力矩磁性随机存取存储器(STT-MRAM)等中的至少一个来实施。
参照图3,描述根据本公开的另一实施例的存储器系统中的控制器130。控制器130与主机102和存储器装置150协同工作。如图3所示,控制器130包括主机接口132、闪存转换层(FTL)240、存储器接口142和存储器144。
尽管未在图3中示出,但是根据实施例,图2中示出的ECC 138可以包括在闪存转换层(FTL)240中。在另一实施例中,ECC 138可以被实施为包括在控制器130中或与控制器130相关联的、与闪存转换层(FTL)240分开的模块、电路、固件等。
主机接口132用于处理从主机102传输的命令、数据等。作为示例而非限制,主机接口132可以包括命令队列56、缓冲管理器52和事件队列54。命令队列56可以顺序地存储从主机102接收到的命令、数据等,并且按照它们存储的顺序将它们输出到缓冲管理器52。缓冲管理器52可以对从命令队列56接收到的命令、数据等进行分类、管理或调整。事件队列54可以顺序地传输事件,用于处理从缓冲管理器52接收到的命令、数据等。
可以将例如读取命令或写入命令的、具有相同特性的多个命令或数据从主机102传输到存储器系统110,或者可以在将具有不同特性的命令和数据被主机102混合或混杂之后传输到存储器系统110。例如,可以将用于读取数据的多个命令(读取命令)传递到存储器系统110,或者可以将用于读取数据的命令(读取命令)和用于编程/写入数据的命令(写入命令)可选地传输到存储器系统110。主机接口132可以将从主机102传输的命令、数据等顺序地存储到命令队列56。此后,主机接口132可以根据命令、数据等的特性来估计或预测控制器130将执行哪种内部操作。主机接口132可以至少基于命令、数据等的特性来确定它们的处理顺序和优先级。根据从主机102传输的命令、数据等的特性,主机接口132中的缓冲管理器52确定缓冲管理器52是否应将命令、数据等存储在存储器144中,或者缓冲管理器52是否应将命令、数据等传递到闪存转换层(FTL)240中。事件队列54接收从缓冲管理器52输入的事件,并且将这些事件以从缓冲管理器52接收的顺序传递到闪存转换层(FTL)240,其中存储器系统110或控制器130响应于命令、数据等内部地执行和处理这些事件。
根据实施例,图3所示的闪存转换层(FTL)240可以以多线程方案工作以执行数据输入/输出(I/O)操作。可以使用控制器130中包括的多线程通过多核处理器来实施多线程FTL。
根据实施例,闪存转换层(FTL)240可以包括主机请求管理器(HRM)46、映射管理器(MM)44、状态管理器42和块管理器48。主机请求管理器(HRM)46可以管理从事件队列54输入的事件。映射管理器(MM)44可以处置或控制映射数据。状态管理器42可以执行垃圾收集(GC)或损耗均衡(WL)。块管理器48可以对存储器装置150中的块运行命令或指令。
作为示例而非限制,主机请求管理器(HRM)46可以根据从主机接口132传递的读取和编程命令以及事件,使用映射管理器(MM)44和块管理器48来处置或处理请求。主机请求管理器(HRM)46可以向映射管理器(MM)44发送查询请求,以确定与随事件输入的逻辑地址相对应的物理地址。主机请求管理器(HRM)46可以将具有物理地址的读取请求发送到存储器接口142,以处理读取请求(处置事件)。另一方面,主机请求管理器(HRM)46可以向块管理器48发送编程请求(或写入请求),以将数据编程到存储器装置150中未存储数据的特定空页面,然后向映射管理器(MM)44传输与编程请求相对应的映射更新请求,以在将逻辑地址和物理地址相互映射的信息中更新与所编程的数据有关的条目。
此处,块管理器48可以将从主机请求管理器(HRM)46、映射管理器(MM)44和/或状态管理器42传递的编程请求转换为用于存储器装置150的闪存编程请求,以管理存储器装置150中的闪存块。为了最大化或增强存储器系统110(参见图2)的编程或写入性能,块管理器48可以收集编程请求并将用于多平面和单触发编程操作的闪存编程请求发送到存储器接口142。在实施例中,块管理器48可以向存储器接口142发送若干闪存编程请求,以增强或最大化多通道和多方向闪存控制器的并行处理。
另一方面,块管理器48可以根据有效页面的数量来管理存储器装置150中的块,当需要空闲块时选择并擦除没有有效页面的块,并且当确定有必要进行垃圾收集时选择包括最小数量的有效页面的块。状态管理器42可以执行垃圾收集以将有效数据移动到空块,并擦除包含所移动的有效数据的块中存储的数据,使得块管理器48可以具有足够的空闲块,这些空闲块是没有数据的空块。如果块管理器48将关于待被擦除的块的信息提供到状态管理器42,则状态管理器42可以检查待被擦除的块的所有闪存页面以确定该块的每个页面是否有效。例如,为了确定每个页面的有效性,状态管理器42可以识别记录在每个页面的带外(OOB)区域中的逻辑地址。为了确定每个页面是否有效,状态管理器42可以将页面的物理地址与映射到从查询请求获得的逻辑地址的物理地址进行比较。状态管理器42针对每个有效页面向块管理器48发送编程请求。当编程操作完成时,可以通过更新映射管理器44来更新映射表。
映射管理器44可以管理逻辑-物理映射表。映射管理器44可以处理由主机请求管理器(HRM)46或状态管理器42生成的诸如查询、更新等的请求。映射管理器44可以将整个映射表存储在存储器装置150(例如,闪速存储器/非易失性存储器)中,并根据存储器144的存储容量来高速缓存映射条目。当在处理查询或更新请求时发生映射高速缓存命中时,映射管理器44可以向存储器接口142发送读取请求以加载存储在存储器装置150中的相关映射表。当映射管理器44中的脏高速缓存块的数量超过某个阈值时,可以将编程请求发送到块管理器48,以便生成干净高速缓存块,并且可以将脏映射表存储在存储器装置150中。
另一方面,当执行垃圾收集时,状态管理器42将有效页面复制到空闲块中,并且主机请求管理器(HRM)46针对该页面的相同逻辑地址对最新版本的数据进行编程,并且当前发布更新请求。当状态管理器42在未正常完成有效页面的复制的状态下请求映射更新时,映射管理器44可以不更新映射表。这是因为如果状态管理器42请求映射更新并且稍后完成有效页面复制,则映射请求与旧物理信息一起发布。仅当最新的映射表仍然指向旧物理地址时,映射管理器44可以执行映射更新操作以保证准确性。
图4示出在存储器系统中执行的芯片猎杀解码。将参照图1至图3所示的控制器130和存储器装置150来描述图4所示的芯片猎杀解码。
参照图4,存储器系统110中的控制器130可以基于包括多个非易失性存储器单元的存储器装置150的配置来存储数据。存储器装置150可以包括多个管芯,例如,Die#1和Die#2,并且多个管芯Die#1和Die#2中的每一个可以包括多个平面,例如,两个平面。在图4中,管芯Die#1包括两个平面Plane#1和Plane#2,管芯Die#2包括两个平面Plane#3和Plane#4。多个平面中的每一个平可以包括图1所示的多个存储块60。
根据实施例,控制器130和存储器装置150可以通过包括多个通道和多个通路的数据路径连接。控制器130以及多个管芯Die#1和Die#2可以连接到单个通道。连接到单个通道的多个通路中的每一个都可以连接到多个管芯Die#1和Die#2中的相应一个。控制器130可以通过包括至少一个通道和至少一个通路的数据路径连接到存储器装置150中包括的多个管芯Die#1和Die#2中的每一个。
另外,多个管芯Die#1和Die#2中的每一个可以包括多个平面。每个平面可以包括页面大小的缓冲器或寄存器。通过该配置,当在存储器装置150中并行地执行数据输入/输出操作或以交错方式执行数据输入/输出操作时,可以逐个平面地执行数据输入/输出操作。参照图4,可以对四个平面并行地执行四个数据输入/输出操作。
存储在存储器装置150中的数据DATA1和DATA2中的每一个可以包括多个数据段SEG#1、SEG#2、SEG#3和SEG#4。可以根据存储器装置150的配置来确定数据DATA1和DATA2的大小。例如,假定存储块60中包括的页面中存储的用户数据的大小是64位,并且除了用户数据之外包括8位错误校正数据的码字是72(=64+8)位。数据DATA1和DATA2的每一个中包括的多个数据段SEG#1、SEG#2、SEG#3和SEG#4中的每一个可以由单个码字组成。因此,多个数据段SEG#1、SEG#2、SEG#3和SEG#4中的每一个可以具有72位的长度。数据DATA1和DATA2中的每一个可以包括256(=64×4)位用户数据。
如图4所示,当在每个数据段中发现单个位错误时,可以自动校正每个具有72位的数据段SEG#1、SEG#2、SEG#3和SEG#4。当每个数据段都包括2位错误时,可以保证检测到2位错误。
例如,假设在第一管芯Die#1的第一平面Plane#1中存储的第一数据DATA1的第一数据段SEG#1中已经发生错误。控制器130可以对第一数据段SEG#1执行硬判决解码。当在第一数据段SEG#1中发生的错误是单个位错误时,硬判决解码可以成功地校正第一数据段SEG#1中包含的错误。然而,当在第一数据段SEG#1中发生的错误是2位错误时,用于校正第一数据段SEG#1中包含的错误的硬判决解码可能会失败。在这种情况下,控制器130使用其他数据段SEG#2、SEG#3和SEG#4执行芯片猎杀解码,以校正第一数据段SEG#1中包含的2位错误,因为其他数据段SEG#2、SEG#3和SEG#4与第一数据段SEG#1相关联。
参照图4,第一数据DATA1和第二数据DATA2中的每一个的数据段SEG#1、SEG#2、SEG#3和SEG#4可以分别存储在四个不同平面Plane#1、Plane#2、Plane#3和Plane#4中。
图5示出根据本公开的实施例的在存储器系统中执行的错误校正操作。具体地,图5示出当从图1至图3所示的存储器装置150的特定位置(例如,目标页面)输出的数据中包含错误时由图1至图3所示的控制器130执行的错误校正操作。
参照图5,当控制器130检测到从目标页面输出的数据中的错误时,可以对数据顺序地或连续地执行错误校正的过程。错误校正操作的过程可以包括执行硬判决解码的步骤和执行软判决解码的另一步骤。在硬判决解码的步骤中,执行感测(或读取)操作以收集用于硬判决解码的硬信息。在软判决解码的步骤中,可以执行用于收集软信息的感测(或读取)操作。在执行硬判决解码的步骤中,可以多次执行硬判决解码。同样,在执行软判决解码的步骤中,可以多次执行软判决解码。
当在执行硬判决解码的步骤中硬判决解码多次失败时,控制器130可以进入执行软判决解码的步骤。当在执行软判决解码的步骤中软判决解码多次失败时,控制器130可以执行芯片猎杀解码。芯片猎杀解码可以包括用于基于另一平面中存储的数据来校正从特定平面输出的数据中的错误的进程。芯片猎杀解码可以对应于应用了独立磁盘冗余阵列(RAID)的系统。
当从目标页面输出的数据包含多位错误时,顺序地执行硬判决解码、软判决解码和芯片猎杀解码的控制器130可能会消耗大量资源来校正多位错误。由于软信息的生成可能比硬信息的生成需要更长的感测/读取时间,即更长的读取延迟,因此在多次执行硬判决解码之后多次执行软判决解码时,数据输入/输出性能可能会劣化。
图6示出根据本公开的另一实施例的在存储器系统中执行的错误校正操作。具体地,图6示出当从图1至图3所示的存储器装置150的特定位置(例如,目标页面)输出的数据段中包含错误时,由图1至图3所示的控制器130执行的错误校正操作。
参照图6,当控制器130检测到从目标页面输出的数据段中包含错误时,用于错误校正的过程可以包括对数据段并行地执行的多个过程。用于错误校正的过程可以包括用于分阶段执行硬判决解码、软判决解码和芯片猎杀解码的第一过程,以及用于在不执行软判决解码的情况下执行芯片猎杀解码的第二过程。
在第一过程中,当执行用于错误校正的硬判决解码时,可以对从目标页面输出的数据段执行感测(或读取)操作,以收集用于硬判决解码的硬信息。当执行软判决解码时,可以执行感测(或读取)以收集软信息。在第一过程中,可以多次执行硬判决解码。同样,可以多次执行软判决解码。
根据实施例,如果在第一过程中对从目标页面输出的数据段执行至少一次的硬判决解码失败,则控制器130可以开始执行芯片猎杀解码的第二过程。根据实施例,控制器130可以并行地执行第一过程和第二过程。
在第二过程中,可以监测控制器130的工作负载。参照图1和图4,工作负载检测器194可以检查是否可以感测或读取另一数据段。在本文中,另一数据段可以是与从目标页面输出的数据段相关联的数据段,例如,通过另一通道传输的数据段、另一管芯或另一平面中包括的页面中存储的数据段等。
根据实施例,第二过程中包括的芯片猎杀解码可以包括用于错误校正的多个过程。例如,可以根据复杂度或计算水平来逐步地执行芯片猎杀解码。如果控制器130可以从另一管芯或另一平面读取与从目标页面输出的数据段相关联的另一数据段,则控制器130可以首先执行低复杂度的操作,即,低复杂度芯片猎杀解码,以实现芯片猎杀解码,用于校正从目标页面输出的数据段中包含的错误。在执行低复杂度芯片猎杀解码之后,控制器130可以将低复杂度芯片猎杀解码的结果存储在存储器144中(参见图1至图3)。因此,控制器130可以与硬判决解码和软判决解码并行地执行芯片猎杀解码。
根据实施例,控制器130首先对目标页面执行硬判决解码和软判决解码。此后,当用于错误校正的第一过程失败时,控制器130执行芯片猎杀解码。此时,控制器130可以利用所存储的低复杂度芯片猎杀解码的结果。由于在执行用于错误校正的第一过程的同时预先执行低复杂度芯片猎杀解码,因此控制器130可以减少用于执行将在用于错误校正的第一过程之后执行的芯片猎杀解码的剩余操作所需的资源(例如,时间或余量)。
根据实施例,控制器130可以在执行用于错误校正的第一过程的同时检测或监测工作负载以确定其是否可以执行芯片猎杀解码。
另外,根据实施例,当确定控制器130可以执行芯片猎杀解码时,控制器130可以在执行软判决解码之前,例如在硬判决解码已经失败至少一次之后执行硬判决解码的同时,并行地执行芯片猎杀解码,或在执行软判决解码的同时并行地执行芯片猎杀解码。当可以通过并行地执行的芯片猎杀解码来更快地校正数据段中包含的错误时,控制器130可以减少由于多次执行软判决解码而导致的存储器系统110的输入/输出性能劣化。
在与第一过程并行地执行包括低复杂度芯片猎杀解码的用于错误校正的第二过程的同时,控制器130可以将从低复杂度芯片猎杀解码获得的中间信息存储在存储器144中。即使当使用与从目标页面输出的数据段相关联的其他数据段执行低复杂度芯片猎杀解码时,如果其他数据段的一些数据段中包含的错误无法通过低复杂度芯片猎杀解码恢复,则对其他数据段的硬判决解码可能会失败。在这种情况下,当仅通过低复杂度芯片猎杀解码而修复的数据段的中间信息存储在存储器144中时,控制器130可以预先识别出错误尚未通过低复杂度芯片猎杀解码被校正的数据段。在另一实施例中,控制器130可以不将从低复杂度芯片猎杀解码获得的中间信息存储在存储器144中。
如上所述,虽然硬判决解码被执行多次和/或软判决解码被执行多次,但是控制器130可以执行至少一些用于芯片猎杀解码的操作。例如,控制器130可以从与从目标页面读取的数据段相关联的另一位置读取另一数据段,并检查该另一数据段是否包含错误。另外,当输出的另一数据段中包含错误时,控制器130可以对另一数据段执行硬判决解码以校正该错误。当控制器130可以预先执行用于芯片猎杀解码的这些过程或操作时,控制器130可以在对从目标页面读取的数据段执行的软判决解码多次失败之后,减少用于完成或实现基于多个数据段执行的芯片猎杀解码的资源。
图7示出根据本公开的实施例的用于操作存储器系统的方法。图7所示的操作存储器系统的方法用于检查从存储器装置150(参照图1至图3)输出的数据段中是否存在错误并对该错误进行校正。用于操作存储器系统的方法可以由控制器130(参照图1至图4)执行。
参照图7,当从存储器装置150输出的对象数据段中包含错误时,能够校正错误的存储器系统110可以响应于操作环境并行地执行多个过程。具体地,操作存储器系统110的方法可以包括确定从存储器装置150输出的第一数据段中是否存在错误(步骤342)。此处,第一数据段可以是与从外部装置(例如,图2和图3所示的主机102)输入的请求相对应的数据。控制器130可以感测或读取其中存储有第一数据段的位置(例如,特定页面),并且将第一数据段存储在存储器144中。控制器130可以检查在第一数据段中是否存在错误。尽管未示出,但是当第一数据段中不存在错误时,控制器130可以将第一数据段传输到外部装置。
尽管未示出,但是参照图4,第一数据段(例如SEG#1)可以与被编程在存储器装置150的不同位置(例如不同平面)的其他数据段(例如SEG#2、SEG#3和SEG#4)相关联。此处,第一数据段和其他数据段之间的关联是由存储器系统110的编程操作引起的,外部装置(例如,主机102)可能不识别该关联。也就是说,主机102可以向存储器系统110传输多个数据段和多个逻辑地址,多个逻辑地址中的每个逻辑地址对应于多个数据段中的每个数据段。例如,第一数据段和其他数据段之间的关联甚至可以与多个逻辑地址之间的相互关系不相关。
当控制器130将多个数据段编程到存储器装置150时,在存储器装置150中的多个区域(例如,图4中描述的平面)上并行地执行针对多个数据段的编程操作。通过对多个数据段并行地执行的编程操作,存储器系统110可以提高数据输入/输出操作的性能。例如,控制器130可以使用ECC编码器将错误校正位添加到从外部装置输入的用户数据的多个数据段中的每个数据段,以生成多个码字,每个码字包含错误校正位和数据段。在生成多个码字之后,控制器130可以将多个码字中的每一个存储在存储器装置150中的不同位置(例如不同平面)中(参见图4)。在这些过程中,可能会发生多个码字即第一数据段和其他数据段之间的关联。也就是说,第一数据段和其他数据段可以对应于用户数据的多个数据段,并且存储在存储器装置150中的不同位置(例如不同平面)中,如图4所示。
用于操作存储器系统110的方法可以包括:当在读取第一数据段之后在第一数据段中发现错误时,执行硬判决解码以校正错误(步骤344)。根据实施例,参照图5至图6,控制器130可以对发现错误的第一数据段多次执行硬判决解码。如果对第一数据段的硬判决解码成功,则存储器系统110可以停止错误校正操作(步骤348)。尽管未示出,但是当错误通过硬判决解码修复时,存储器系统110可以将错误被校正的第一数据段输出到外部装置。
用于操作存储器系统110的方法可以包括:当硬判决解码失败时,确定是否可以读取与第一数据段相关联的另一数据段(步骤346)。当硬判决解码失败至少一次时,控制器130可以检测存储器系统110的工作负载。例如,控制器130可以检查存储器装置150中的每个管芯或每个平面的操作状态。控制器130可以监测通过每个管芯或每个平面执行的数据输入/输出操作,并且确定每个管芯或每个平面是否可以输出用于对第一数据段的错误校正(例如,芯片猎杀解码)而不是对应于从外部装置输入的请求的数据输入/输出操作的数据段。
不管是否可以读取与第一数据段相关联的其他数据段,用于操作存储器系统110的方法可以包括:当硬判决解码失败时,对第一数据段执行软判决解码(步骤350)。此处,可以在对第一数据段执行的硬判决解码多次失败之后执行软判决解码。
参照图5至图6,控制器130可以对发现错误的第一数据段多次执行软判决解码。当对第一数据段执行的软判决解码成功时,存储器系统110可以停止错误校正(步骤348)。根据实施例,如果对第一数据段的软判决解码失败,则存储器系统可以基于包括第一数据段和与第一数据段相关联的其他数据段的多个数据段来执行芯片猎杀解码。
同时,当可以读取与第一数据段相关联的其他数据段时,用于操作存储器系统110的方法可以包括基于多个数据段执行芯片猎杀解码(步骤352)。控制器130可以与诸如硬判决解码和软判决解码的另一错误校正过程并行地执行用于芯片猎杀解码的全部或一些操作。例如,控制器130可以与硬判决解码或软判决解码并行地执行用于芯片猎杀解码的一些操作,并且可以保持用于芯片猎杀解码的剩余操作,直到对第一数据段的软判决解码失败为止。在另一示例中,当控制器130执行用于芯片猎杀解码的整个操作时,可以与芯片猎杀解码并行地执行对第一数据段的软判决解码,或者可以跳过软判决解码。
根据实施例,在对第一数据段执行多次硬判决解码的同时并且当与第一数据段相关联的其他数据段可读时,可以在硬判决解码失败至少一次之后执行用于芯片猎杀解码的一些操作。例如,可以在对第一数据段多次执行硬判决解码和/或软判决解码的同时并行地执行用于芯片猎杀解码的一些操作。
图8示出根据本公开的另一实施例的用于操作存储器系统的方法。根据实施例,用于操作存储器系统的方法检查从存储器装置150(参见图1至3)输出的数据段中是否存在错误,并且当数据段中包含错误时对该错误进行校正。用于操作存储器系统的方法可以由控制器130(参照图1至图4)执行。
参照图8,用于操作存储器系统的方法包括:读取存储在非易失性存储器装置中的第一数据段(步骤372),检查第一数据段中包含的错误(步骤374),在对第一数据段执行硬判决解码的同时,读取与第一数据段相关联的其他数据段(步骤376),以及当硬判决解码失败时,使用其他数据段来校正第一数据段中包含的错误(步骤378)。
尽管未示出,但是当在第一数据段中不存在错误时,可以不执行用于错误校正的过程。另外,可以理解的是,第一数据段和其他数据段之间的关联是通过用于将多个数据段编程在存储器装置150中的操作来建立的。
尽管未示出,但是根据实施例,当在第一数据段中发生错误时,可以对第一数据段顺序地执行硬判决解码和软判决解码。此外,当第一数据段中包含的错误没有通过硬判决解码被校正时,控制器130感测或读取与第一数据段相关联的其他数据段,以通过芯片猎杀解码来校正第一数据段中包含的错误。通过这些进程,控制器130可以并行地执行错误校正操作。
根据实施例,当用于校正第一数据段中的错误的硬判决解码失败时,可以对第一数据段执行软判决解码。在这种情况下,即使控制器130感测或读取与第一数据段相关联的其他数据段,控制器130也可以待机而无需直接利用其他数据段来校正第一数据段中的错误。控制器130可以检查其他数据段中是否还包含错误。当其他数据段中包含错误时,可以通过硬判决解码来校正该错误。根据实施例,当在其他数据段中发现错误时,对其他数据段执行硬判决解码的最大次数小于对第一数据段执行硬判决解码的次数。这是因为控制器130试图集中和使用资源来校正第一数据段中包含的错误,而不是校正其他数据段中包含的错误。
尽管未示出,但是控制器130可以顺序地或并行地执行硬判决解码、软判决解码和芯片猎杀解码,以校正第一数据段中包含的错误。当通过硬判决解码、软判决解码和芯片猎杀解码中的一种来校正第一数据段中包含的错误时,可以终止对第一数据段的错误校正操作。
根据本公开的实施例的存储器系统可以提高错误修复的效率。
另外,根据本公开的另一实施例的存储器系统可以减少用于错误修复的资源消耗。
进一步,根据本公开的另一实施例的存储器系统可以通过减少由错误修复操作而引起的延迟来提高数据输入/输出操作的性能。
虽然已经针对具体实施例说明和描述了本发明,但是根据本公开,对于本领域技术人员将显而易见的是,在不脱离所附权利要求中限定的本公开的精神和范围的情况下,可以进行各种改变和修改。

Claims (20)

1.一种存储器系统,包括:
存储器装置,包括分别存储多个数据段的多个非易失性存储器组,每个数据段对应于码字;以及
控制器,在所述多个数据段之中的第一数据段中包含错误时,执行硬判决解码以校正错误,当所述硬判决解码失败时,确定所述多个数据段之中的与所述第一数据段相关联的其他数据段是否可读,并且当所述其他数据段可读时,基于所述第一数据段和所述其他数据段来执行芯片猎杀解码。
2.根据权利要求1所述的存储器系统,其中所述控制器:当所述其他数据段可读时,对所述第一数据段并行地执行所述芯片猎杀解码和附加的硬判决解码或软判决解码。
3.根据权利要求1所述的存储器系统,其中所述控制器进一步:当所述其他数据段可读时,在执行所述芯片猎杀解码之前跳过对所述第一数据段执行软判决解码。
4.根据权利要求1所述的存储器系统,其中所述控制器:当所述其他数据段包含错误时,对所述其他数据段执行硬判决解码,
其中对所述其他数据段执行的硬判决解码的最大次数小于对所述第一数据段执行的硬判决解码的次数。
5.根据权利要求1所述的存储器系统,其中所述控制器执行预设次数的所述硬判决解码,
其中当执行了预设次数的所述硬判决解码之后,错误未被校正时,所述硬判决解码最终失败。
6.根据权利要求5所述的存储器系统,其中所述控制器:当在对所述第一数据段的第一硬判决解码失败之后开始对所述第一数据段的第二硬判决解码时,确定所述其他数据段是否可读。
7.根据权利要求6所述的存储器系统,其中所述控制器以交错方式执行读取所述其他数据段的读取操作,其中所述读取操作和对所述第一数据段的所述硬判决解码并行地执行。
8.根据权利要求1所述的存储器系统,其中所述控制器:当所述硬判决解码成功时,停止所述芯片猎杀解码。
9.根据权利要求1所述的存储器系统,其中所述控制器:存储所述硬判决解码的结果,并且在校正所述其他数据段中包含的错误的同时基于所述硬判决解码的结果来调整读取电压。
10.一种操作存储器系统的方法,所述存储器系统包括存储器装置以及控制器,所述存储器装置包括分别存储多个数据段的多个非易失性存储器组,每个数据段对应于码字,并且所述控制器控制所述存储器装置,所述方法包括:
确定所述多个数据段之中的第一数据段是否包含错误;
当所述第一数据段中包含错误时,执行硬判决解码以校正该错误;
当所述硬判决解码失败时,确定所述多个数据段之中的与所述第一数据段相关联的其他数据段是否可读;并且
当所述其他数据段可读时,基于所述第一数据段和所述其他数据段执行芯片猎杀解码。
11.根据权利要求10所述的方法,进一步包括:
当所述其他数据段可读时,对所述第一数据段并行地执行所述芯片猎杀解码和附加的硬判决解码或软判决解码。
12.根据权利要求10所述的方法,进一步包括:
当所述其他数据段可读时,在执行所述芯片猎杀解码之前跳过对所述第一数据段的软判决解码。
13.根据权利要求10所述的方法,进一步包括:
当所述其他数据段包含错误时,对所述其他数据段执行硬判决解码,
其中对所述其他数据段执行的硬判决解码的最大次数小于对所述第一数据段执行的硬判决解码的次数。
14.根据权利要求10所述的方法,进一步包括:
执行预设次数的所述硬判决解码,
其中当在对所述第一数据段执行了预设次数的所述硬判决解码之后错误未被校正时,所述硬判决解码最终失败。
15.根据权利要求14所述的方法,其中确定所述其他数据段是否可读包括:
当在对所述第一数据段的第一硬判决解码失败之后开始对所述第一数据段的第二硬判决解码时,确定所述其他数据段是否可读。
16.根据权利要求15所述的方法,进一步包括:
以交错方式执行读取所述其他数据段的读取操作,
其中所述读取操作和对所述第一数据段的所述硬判决解码并行地执行。
17.根据权利要求10所述的方法,进一步包括:
当所述硬判决解码成功时,停止所述芯片猎杀解码。
18.根据权利要求17所述的方法,进一步包括:
存储所述硬判决解码的结果;并且
在修复所述其他数据段中包含的错误的同时,基于所述硬判决解码的结果调整读取电压。
19.一种计算机程序产品,所述计算机程序产品有形地存储在非暂时性计算机可读介质上,所述计算机程序产品包括使多核处理器装置执行以下操作的指令,其中所述多核处理器装置包括多个处理器内核,所述多个处理器内核中的若干个各自包括处理器和电路,所述电路将所述处理器联接到存储器装置,所述存储器装置包括多个非易失性存储器组,所述多个非易失性存储器组分别存储多个数据段,所述操作包括:
读取所述多个数据段之中的第一数据段;
确定所述第一数据段是否包含错误;
当所述第一数据段中包括错误时,执行硬判决解码以校正该错误;
当所述硬判决解码失败时,确定所述多个数据段之中的与所述第一数据段相关联的其他数据段是否可读;并且
当所述其他数据段可读时,基于所述第一数据段和所述其他数据段来执行芯片猎杀解码。
20.根据权利要求19所述的计算机程序产品,其中当所述其他数据段可读时,对所述第一数据段并行地执行所述芯片猎杀解码和附加的硬判决解码或软判决解码。
CN202011145628.2A 2020-03-31 2020-10-23 用于修复存储器系统中数据错误的设备和方法 Withdrawn CN113467986A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200038757A KR20210121654A (ko) 2020-03-31 2020-03-31 메모리 시스템의 데이터 에러를 복구하는 장치 및 방법
KR10-2020-0038757 2020-03-31

Publications (1)

Publication Number Publication Date
CN113467986A true CN113467986A (zh) 2021-10-01

Family

ID=77857265

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011145628.2A Withdrawn CN113467986A (zh) 2020-03-31 2020-10-23 用于修复存储器系统中数据错误的设备和方法

Country Status (3)

Country Link
US (1) US11245420B2 (zh)
KR (1) KR20210121654A (zh)
CN (1) CN113467986A (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022146585A (ja) * 2021-03-22 2022-10-05 キオクシア株式会社 メモリシステム
KR102345067B1 (ko) * 2021-08-25 2021-12-29 삼성전자주식회사 스토리지 장치 및 스토리지 컨트롤러의 구동 방법
US11949428B2 (en) * 2022-01-19 2024-04-02 Micron Technology, Inc. Iterative error correction in memory systems
KR20240132675A (ko) * 2023-02-27 2024-09-04 에스케이하이닉스 주식회사 스토리지 장치 및 스토리지 장치의 리드 복구 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822251A (en) * 1997-08-25 1998-10-13 Bit Microsystems, Inc. Expandable flash-memory mass-storage using shared buddy lines and intermediate flash-bus between device-specific buffers and flash-intelligent DMA controllers
US8185801B2 (en) * 2008-01-31 2012-05-22 International Business Machines Corporation System to improve error code decoding using historical information and associated methods
US8176391B2 (en) * 2008-01-31 2012-05-08 International Business Machines Corporation System to improve miscorrection rates in error control code through buffering and associated methods
US20130318393A1 (en) 2011-11-15 2013-11-28 Ocz Technology Group Inc. Solid-state mass storage device and methods of operation
US9021332B2 (en) * 2012-12-11 2015-04-28 Seagate Technology Llc Flash memory read error recovery with soft-decision decode
KR102081588B1 (ko) * 2013-08-08 2020-02-26 삼성전자 주식회사 Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러
US9209835B2 (en) * 2013-11-27 2015-12-08 Seagate Technology Llc Read retry for non-volatile memories
US9354816B2 (en) * 2014-04-08 2016-05-31 Seagate Technology Llc Read policy for system data of solid state drives
US9979417B2 (en) 2015-06-16 2018-05-22 SK Hynix Inc. Enhanced chip-kill schemes by using ECC syndrome pattern
US11182243B2 (en) 2018-02-15 2021-11-23 SK Hynix Inc. Memory system with adaptive information propagation and method of operating such memory

Also Published As

Publication number Publication date
US20210306003A1 (en) 2021-09-30
KR20210121654A (ko) 2021-10-08
US11245420B2 (en) 2022-02-08

Similar Documents

Publication Publication Date Title
US9768808B2 (en) Method for modifying device-specific variable error correction settings
US10013179B2 (en) Reading logical groups of data from physical locations in memory using headers
CN113342705A (zh) 在存储器系统中执行垃圾收集的设备和方法
US20170160931A1 (en) Writing Logical Groups of Data to Physical Locations in Memory Using Headers
US20160299812A1 (en) Device-Specific Variable Error Correction
US11245420B2 (en) Apparatus and method for recovering a data error in a memory system
US11756643B2 (en) Apparatus and method for correcting an error in data transmission of a data processing system
KR20220001222A (ko) 베드 블록을 처리하는 메모리 시스템 및 동작 방법
US20160299844A1 (en) Mapping Logical Groups of Data to Physical Locations In Memory
US11526298B2 (en) Apparatus and method for controlling a read voltage in a memory system
CN112433879A (zh) 在存储器系统的操作中处置固件错误的设备和方法
US11373709B2 (en) Memory system for performing a read operation and an operating method thereof
US11762734B2 (en) Apparatus and method for handling a data error in a memory system
CN113010098A (zh) 用于提高存储器系统的输入/输出吞吐量的设备和方法
CN114968648A (zh) 在存储器系统中使用错误校正码的设备和方法
CN114764395A (zh) 处置存储器系统中存储的数据的设备和方法
CN115756298A (zh) 用于控制数据处理系统中的共享存储器的设备和方法
CN115145475A (zh) 用于调度在存储器系统中执行的操作的设备和方法
CN114661226A (zh) 用于传输由非易失性存储器系统生成的元数据的装置和方法
US20220171564A1 (en) Apparatus and method for maintaining data stored in a memory system
CN113553631A (zh) 用于在存储器系统中保护数据的设备和方法
US11941289B2 (en) Apparatus and method for checking an error of a non-volatile memory device in a memory system
TW202318211A (zh) 用於編程資料的記憶體裝置和記憶體系統
US20220075542A1 (en) Calibration apparatus and method for data communication in a memory system
CN114153372A (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
WW01 Invention patent application withdrawn after publication

Application publication date: 20211001

WW01 Invention patent application withdrawn after publication