CN113138948A - 存储控制器、存储系统及操作存储控制器的方法 - Google Patents

存储控制器、存储系统及操作存储控制器的方法 Download PDF

Info

Publication number
CN113138948A
CN113138948A CN202011343822.1A CN202011343822A CN113138948A CN 113138948 A CN113138948 A CN 113138948A CN 202011343822 A CN202011343822 A CN 202011343822A CN 113138948 A CN113138948 A CN 113138948A
Authority
CN
China
Prior art keywords
data
error
value
logical
hard decision
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
CN202011343822.1A
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 CN113138948A publication Critical patent/CN113138948A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • 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/1024Identification of the type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/104Adding 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 using arithmetic codes, i.e. codes which are preserved during operation, e.g. modulo 9 or 11 check
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/183Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

提供了存储控制器、存储系统及操作存储控制器的方法。所述存储控制器包括并行输入通道、错误估计单元、判决单元、纠错单元和选择单元,所述并行输入通道被配置为用于同时从基本冗余存储器接收多个数据。所述错误估计单元通过估计所述多个数据的错误水平来生成错误信息。所述判决单元对所述多个数据执行逻辑运算以生成运算数据。所述纠错单元通过纠正所述运算数据的错误来生成纠错数据。所述选择单元基于所述错误信息选择所述运算数据和所述纠错数据之一。

Description

存储控制器、存储系统及操作存储控制器的方法
相关申请的交叉引用
本申请要求于2020年1月17日在韩国知识产权局(KIPO)提交的韩国专利申请No.10-2020-0006573的优先权,其全部公开内容通过引用合并于此。
技术领域
本公开总体上涉及半导体集成电路,并且更具体地涉及存储控制器、存储系统及操作存储控制器的方法。
背景技术
人工智能(AI)技术是指使用计算机系统模拟人类能力的技术,例如感知、学习、推理和/或自然语言处理。AI技术广泛应用于各个行业领域。诸如安全、运输、防护、医疗保健等领域的AI应用可能受益于高速和/或可靠性,这些AI应用中涵盖的数据可能对时间特别敏感。
发明内容
本公开的实施例可以提供能够具有高工作速度和/或高可靠性的存储控制器、存储系统和/或操作存储控制器的方法。
根据示例性实施例,一种存储控制器包括多个并行输入通道、错误估计单元、判决单元、纠错单元和选择单元,所述多个并行输入通道被配置为用于同时分别从多个存储器接收多个数据。所述错误估计单元通过估计所述多个数据的错误水平来生成错误信息。所述判决单元对所述多个数据执行逻辑运算,以生成运算数据。所述纠错单元通过纠正所述运算数据的错误来生成纠错数据。所述选择单元基于所述错误信息选择所述运算数据和所述纠错数据之一。
根据示例性实施例,一种存储系统包括存储存储器和存储控制器,所述存储存储器被配置为分别在多个基本冗余存储器中存储多个数据。所述存储控制器包括:错误估计单元,所述错误估计单元被配置为通过估计所述多个数据的错误水平来生成错误信息;判决单元,所述判决单元被配置为对所述多个数据进行逻辑运算以生成运算数据;纠错单元,所述纠错单元被配置为通过纠正所述运算数据的错误来生成纠错数据;以及选择单元,所述选择单元被配置为基于所述错误信息选择所述运算数据和所述纠错数据之一。
根据示例性实施例,一种操作存储控制器的方法包括:同时分别从基本冗余存储器通道接收多个数据;通过估计所述多个数据的错误水平来生成错误信息;对所述多个数据执行逻辑运算以生成运算数据;通过纠正所述运算数据的错误来生成纠错数据;以及基于所述错误信息选择所述运算数据和所述纠错数据之一。
所述方法可以包括执行多数表决运算、NAND运算或OR运算的逻辑运算。
所述方法可以包括对多个数据执行逻辑运算以生成硬判决错误数据,其中,执行逻辑运算包括执行多数表决运算,其中,基于所述硬判决错误数据生成所述纠错数据。
所述方法可以包括:对所述多个数据执行第二逻辑运算以生成软判决错误数据,其中,执行第二逻辑运算包括执行XOR运算,其中,基于所述软判决错误数据生成所述纠错数据。
根据示例性实施例的存储控制器、存储系统和操作该存储控制器的方法可以高效地接收与多个存储器中的每个存储器相对应的多个数据。另外,示例性实施例的存储控制器、存储系统和操作该存储控制器的方法可以通过各种路径高效地接收多个数据,从而优化可靠性或接收速度中的至少一者。
附图说明
通过以下结合附图的详细描述,将更清楚地理解本公开的示例性实施例,在附图中:
图1是示出根据本公开的示例性实施例的存储控制器的示意性框图;
图2是示出根据本公开的示例性实施例的存储控制器的示意性框图;
图3是示出图2的硬判决单元中包括的示例性实施例的门电路的示意性电路图;
图4是用于说明由图3的门电路执行的逻辑运算的数据图;
图5是示出图2的硬判决单元中包括的示例性实施例的门电路的示意性电路图;
图6A是用于描述由图5的门电路中包括的逻辑OR电路执行的逻辑运算的曲线图;
图6B是用于描述由图5的门电路中包括的逻辑OR电路执行的逻辑运算的数据图;
图7A是用于说明由图5的逻辑AND电路执行的逻辑运算的曲线图;
图7B是用于说明由图5的逻辑AND电路执行的逻辑运算的数据图;
图8是示出根据本公开的示例性实施例的存储控制器的示意性框图;
图9是用于描述图8的软判决单元执行的逻辑运算的数据图;
图10是示出根据本公开的示例性实施例的存储控制器的示意性框图;
图11是示出根据本公开的示例性实施例的存储控制器的示意性框图;
图12是示出根据本公开的示例性实施例的操作存储控制器的方法的流程图;
图13是示出根据本公开的示例性实施例的存储器系统的示意性框图;
图14是示出图13的存储器系统中包括的存储器件的示例性实施例的示意性框图;
图15A是示出图14中的存储单元阵列的透视图;
图15B是示出图15A中的存储块的等效电路的电路图;
图16是示出根据本公开的示例性实施例的存储器系统的示意性框图;以及
图17是示出根据本公开的示例性实施例的固态磁盘或固态硬盘(SSD)的示意性框图。
具体实施方式
在下文中,将参照附图对示例性实施例进行更全面的描述,但示例性实施例不限于此。在附图中,相同的附图标记始终可以指相同的元件。可以省略重复描述。
图1示出了根据示例性实施例的存储控制器。
参照图1,存储系统(storage system)可以包括存储控制器1000、主机2000和存储存储器(storage memory)500。
该存储系统可以构成人工智能(AI)系统的一部分,该人工智能系统可以应用于诸如安全、运输、防护、医疗保健的领域或具有相似速度和/或可靠性规范的领域。存储控制器1000可以响应于从主机2000发送的写入命令将AI系统使用的数据存储在存储存储器500中,并且可以响应于从主机2000发送的读取命令从存储存储器500接收数据。
这里,存储存储器500可以包括多个存储器,并且可以以分布式、冗余和/或重复(duplicate)的形式将相同内容的数据存储在多个存储器中的每个存储器中。例如,存储存储器500可以包括独立磁盘冗余阵列(RAID),诸如由上行闪存通道(up flash memorychannel)构成的RAID,但不限于此。
当读取所存储的数据时,存储控制器1000可以同时从多个存储器接收并利用数据。这样,尽管一些重复数据可能包括错误,但是其他重复数据可以用于纠正错误,并且因此维持用于AI系统的数据的可靠性。该存储系统可以被称为应用了硬件复用技术的系统。应用了存储系统的AI领域例如可以与人类生活紧密相关,并且维持存储在存储系统中的以及由存储系统提供的数据的高可靠性。
在具有高速和/或高数据可靠性的存储系统中,存储控制器1000可以包括错误估计单元(EEU)100、判决单元(DU)120、纠错单元(ECU)140和选择单元(SU)160。
错误估计单元100和判决单元120可以通过多个通道(CH[0:M];其中M是自然数)以比特流的形式同时从多个存储器中的每个存储器接收冗余存储的数据。在下文中,以比特流的形式从多个存储器之一接收到的数据可以被称为“一个数据”,以比特流的形式同时从所有多个存储器接收到的数据可以被称为“多个数据”。多个数据中的每个数据通常包括位于相同的比特位置的相应比特。当多个数据中没有错误时,相应比特的值具有相同的值。然而,当多个数据中存在错误时,相应比特的值可能彼此不同。
错误估计单元100可以基于多个数据来估计多个数据的错误水平,并生成错误信息ERRI作为估计的结果。多个数据中的错误可以随着以下情况的发生而增加:存储单元(例如,闪存单元)的重复编程/擦除(P/E)循环次数增加,处于编程状态的存储单元反复被读取,或者存储单元在被编程之后的很长时间内被忽略。
当多个数据的错误水平被估计为高于预设水平时,错误信息ERRI被设置成具有第一逻辑值;而当多个数据的错误水平被估计为低于预设水平时,错误信息ERRI被设置成具有第二逻辑值,但不限于此。
错误估计单元100可以向纠错单元140和选择单元160发送错误信息ERRI。下面可以参照图2和图8对错误信息ERRI做进一步描述。
判决单元120可以通过对多个数据执行逻辑运算来生成运算数据DTR。可以基于多个数据中的每个数据的相应比特来执行逻辑运算。当多个数据的错误水平相对低时,可以执行逻辑运算以快速纠正多个数据中存在的错误,因此纠错单元140不需要执行更高水平的纠正。
此外,判决单元120可以基于多个数据生成判决错误数据ILE。判决错误数据ILE可以指示在执行逻辑运算之后或尽管执行了逻辑运算,运算数据中相对更可能存在未纠正错误的位置。下面可以进一步描述判决单元120的配置的示例性实施例。
纠错单元140可以从判决单元120接收运算数据DTR。纠错单元140可以纠正运算数据DTR中存在的未纠正错误以生成纠错数据CDTR。纠错单元140可以在纠错时使用各种纠错码(ECC)或类似方案。
纠错单元140可以从判决单元120接收判决错误数据ILE。纠错单元140基于判决错误数据ILE,根据可能存在未纠正错误的位置,来纠正运算数据DTR中存在的错误,以生成纠错数据CDTR。
纠错单元140可以从错误估计单元100接收错误信息ERRI。纠错单元140可以基于纠错信息ERRI而被启用或停用。根据实施例,当错误信息ERRI具有第一逻辑值时,纠错单元140可以被启用以生成纠错数据CDTR,并且当错误信息ERRI具有第二逻辑值时,纠错单元140可以被停用以免生成纠错数据CDTR。然而,本公开的范围不限于此。
在另外的实施例中,错误信息ERRI可以是数字信号而不是逻辑值信号,和/或可以具有两个以上的可能值。例如,ERRI的第一值可以指示无条件使用DTR,ERRI的第二值可以指示无条件使用CDTR,ERRI的第三值可以指示基于ILE的值使用DTR或CDTR。在这样的实施例中,ECU 140可以基于ERRI和ILE将DTR输出为CDTR,或者以其他方式输出CDTR。
选择单元160可以从判决单元120接收运算数据DTR,从纠错单元140接收纠错数据CDTR,以及从错误估计单元100接收错误信息ERRI。
选择单元160可以基于错误信息ERRI选择运算数据DTR和纠错数据CDRR之一,并且将所选择的数据输出到主机2000。根据实施例,当错误信息ERRI具有第一逻辑值时,选择单元160选择纠错数据CDTR,而当错误信息ERRI具有第二逻辑值时,选择单元160选择运算数据DTR。然而,本公开的范围不限于此。
图2示出根据本公开的实施例的存储控制器。
参照图1和图2,存储控制器1000-1包括错误估计单元100-1、硬判决单元(HDU)120-1、纠错单元140和选择单元160-1。在图1和图2中具有相同附图标记的组件执行类似的功能,并且可以省略重复描述。
错误估计单元100-1和硬判决单元120-1可以通过多个通道CH[0]、CH[1]和CH[2]以数据流的形式同时接收表示相同信息的多个数据DTR0、DTR1和DTR2。在此,数据DTR0是通过通道CH[0]接收的数据,数据DTR1是通过通道CH[1]接收的数据,数据DTR2是通过通道CH[2]接收的数据。尽管在图2中仅示出了三个通道CH[0]、CH[1]和CH[2],但是为了便于描述,通道的数目是示例性的,并且本公开的范围不限于此。
错误估计单元100-1基于多个数据DTR0、DTR1和DTR2来估计多个数据DTR0、DTR1和DTR2的错误水平,并且提供错误信息ERRI作为估计结果。
当多个数据DTR0、DTR1和DTR2的错误水平被估计为等于或高于预设水平时,错误信息ERRI被设置为具有第一逻辑值;当错误水平被估计为小于预设水平时,错误信息ERRI被设置为具有第二逻辑值。根据实施例,可以通过以一个比特为单位检查数据DTR0、DTR1和DTR2的相应比特,来执行错误水平的估计。然而,根据另外的实施例,可以通过以多个比特为单位进行检查来执行错误水平的估计。
错误估计单元100-1还可以包括用于估计错误水平的其他组件。根据实施例,错误估计单元100-1还可以包括校验子运算单元(SOU)102。在这种情况下,错误估计单元100-1可以基于校验子运算单元102生成的校验子数据来估计错误水平。
硬判决单元120-1可以对多个数据DTR0、DTR1和DTR2执行逻辑运算以生成硬判决运算数据HDTR。可以基于多个数据DTR0、DTR1和DTR2中的每个数据的相应比特来执行逻辑运算。逻辑运算可以被执行以快速纠正多个数据DTR0、DTR1和DTR2中存在的错误,然而该逻辑运算不必达到纠错单元140能够执行的纠正水平。
硬判决单元120-1可以包括门电路,该门电路包括用于执行逻辑运算的多个逻辑门。在下文中,可以更详细地描述由图2的硬判决单元120-1的实施例执行逻辑运算的过程。
图3示出了可以包括在图2的硬判决单元中的门电路的示例性实施例;并且图4用于说明由图3的门电路执行的逻辑运算。
参照图3,门电路120-1a可以包括实现布尔逻辑多数(Boolean logic majority)功能或中值运算子的多数表决电路。根据实施例,多数表决电路可以包括逻辑AND(与)门120-11、120-12和120-13以及逻辑OR(或)门120-14。在另外的实施例中,这些门均可以被NAND(与非)门代替。
门120-11接收数据DTR0和DTR1以执行逻辑AND运算,门120-12接收数据DTR1和DTR2以执行逻辑AND运算,门120-13接收数据DTR2和DTR0以执行逻辑AND操作。门120-14可以通过接收执行门120-11、门120-12和门120-13中的每一者的逻辑AND运算的结果,来执行逻辑OR运算。根据实施例,门电路120-1a可以基于多个数据DTR0、DTR1和DTR2的相应比特(例如,DTR0[k]、DTR1[k]和DTR2[k],其中k为大于或等于0的整数),执行多数表决逻辑运算。多数表决逻辑运算基于以下经验事实:在比特DTR0[k]、DTR1[k]和DTR2[k]中多数比特发生错误的可能性很小。
比特DTR0[k]、DTR1[k]和DTR2[k]可以具有第一值或第二值。根据实施例,第一值是“1”,第二值是“0”。根据另外的实施例,第一值可以是“0”,并且第二值可以是“1”。
图4示出了由门电路120-1基于多个数据的相应比特执行的多数表决逻辑运算MJR的结果。
参照图3和图4,当相应比特DTR0[k]、DTR1[k]和DTR2[k]当中具有第一值的比特的数目超过相应比特DTR0[k]、DTR1[k]和DTR2[k]当中具有第二值的比特的数目时,门电路120-1a将硬判决运算数据HDTR的比特值设置为第一值。当相应比特DTR0[k]、DTR1[k]和DTR2[k]当中具有第二值的比特的数目超过相应比特DTR0[k]、DTR1[k]和DTR2[k]当中具有第一值的比特的数目时,门电路120-1a将硬判决运算数据HDTR的比特值设置为第二值。即,作为对相应比特DTR0[k]、DTR1[k]和DTR2[k]执行多数表决逻辑运算的结果,门电路120-1a可以部分地纠正多个数据DTR0、DTR1和DTR2中存在的错误。
图5示出了图2的硬判决单元中可以包括的门电路的示例性实施例。
参照图5,门电路120-1b可以包括逻辑OR电路、逻辑AND电路和多数表决电路。根据实施例,逻辑OR电路包括逻辑OR门120-16;逻辑AND电路包括逻辑AND门120-15;多数表决电路包括逻辑AND门120-11、120-12和120-13,以及逻辑OR门120-14。在此,门120-16接收多个数据DTR0、DTR1和DTR2以执行逻辑“OR”运算,门12-15接收多个数据DTR0、DTR1和DTR2以执行逻辑“AND”运算。上面已经参照图3和图4描述了多数表决逻辑运算,因此可以省略重复描述。根据实施例,门电路120-1b还可以包括复用器120-17。复用器120-17可以被配置为选择门120-16执行的逻辑OR运算的结果、门12-15执行的逻辑AND运算的结果和多数表决电路执行的多数表决逻辑运算的结果之一,并将所选择的结果生成为硬判决运算数据HDTR。
门电路120-1b可以基于多个数据DTR0、DTR1和DTR2中的相应比特(例如,DTR0[k]、DTR1[k]和DTR2[k]),执行逻辑OR运算、逻辑AND运算和多数表决逻辑运算中的任何一种或更多种;其中,k是大于或等于0的整数。
当估计出可能因为超过了可重复编程/擦除P/E的数目或者处于编程状态的存储单元被连续读取而发生存在于多个数据DTR0、DTR1和DTR2中的错误(在下文中称为“第一错误”)时,可以执行逻辑OR运算。
当估计出可能因为超出了存储单元在很久以前被编程之后可靠地保存数据的能力极限而发生存在于多个数据DTR0、DTR1和DTR2中的错误(在下文中称为“第二错误”)时,可以执行逻辑AND运算。在下文中,可以更详细地描述逻辑OR运算和逻辑AND运算。
图6A和图6B用于描述由图5的门电路中包括的逻辑OR电路执行的逻辑运算。图7A和图7B用于说明由图5的逻辑AND电路执行的逻辑运算。
参照图6A,当多个数据DTR0、DTR1和DTR2存储在NAND单元中时,NAND单元的原始擦除状态ERS0的分布可能变为向右偏移的劣化状态ERS的分布。在此,横轴表示NAND单元的阈值电压VTH,纵轴表示具有阈值电压VTH的NAND单元的数目。当重复P/E循环时,或者当由于对处于编程状态的存储单元执行反复读取操作而发生读取干扰时,可能发生NAND单元的分布的这种变化。
图6B示出了当门电路120-1b基于多个数据DTR0、DTR1和DTR2中的相应比特(例如,DTR0[k]、DTR1[k]和DTR2[k])执行逻辑OR运算时的逻辑OR运算的结果;其中,k是大于或等于0的整数。作为对相应比特DTR0[k]、DTR1[k]和DTR2[k]执行逻辑OR运算的结果,门电路120-1b可以部分地检测或纠正多个数据DTR0、DTR1和DTR2中存在的第一错误。
参照图7A,当多个数据DTR0、DTR1和DTR2存储在NAND单元中时,NAND单元的原始编程状态PGM0的分布可能变为向左偏移的劣化状态PGM的分布。在此,横轴表示NAND单元的阈值电压VTH,纵轴表示具有阈值电压VTH的NAND单元的数目。当存储单元由于编程操作之后的长延迟而超出可靠数据保留的时间极限时,可能发生NAND单元的分布的这种变化。
图7B示出了当门电路120-1b基于多个数据DTR0、DTR1和DTR2中的相应比特DTR0[k]、DTR1[k]和DTR2[k]执行逻辑AND运算时的逻辑AND运算的结果;其中,k是大于或等于0的整数。即,作为对相应比特DTR0[k]、DTR1[k]和DTR2[k]执行逻辑AND运算的结果,门电路120-1b可以部分地检测或纠正多个数据DTR0、DTR1和DTR2中存在的第二错误。
返回参照图2,硬判决单元120-1可以基于多个数据DTR0、DTR1和DTR2生成硬判决错误数据HILE。
硬判决错误数据HILE可以包括作为与硬判决运算数据HDTR的比特相对应的比特的数据,该数据指示尽管执行了逻辑运算但硬判决运算数据HDTR中仍可能存在未纠正错误的位置。根据实施例,当相应比特DTR0[k]、DTR1[k]和DTR2[k]既具有第一值也具有第二值时并且当相应比特DTR0[k]、DTR1[k]和DTR2[k]当中具有第一值的比特的数目与相应比特DTR0[k]、DTR1[k]和DTR2[k]当中具有第二值的比特的数目之间的差等于或小于预定值时,硬判决单元120-1可以将硬判决错误数据HILE的比特值设置为第一逻辑值。例如,在图4的示例性实施例中,假设第一值是“1”,第二值是“0”,预定值是“1”,并且第一逻辑值是“1”,则硬判决错误数据HILE的比特值可以被设置为HILE[0:13]=(1,1,1,0,1,1,0,0,1,0,1,1,1,1)。即,在三个示例性通道之间,14个比特中的10个比特不是一致的。
纠错单元140可以从硬判决单元120接收硬判决运算数据HDTR和硬判决错误数据HILE。纠错单元140可以基于硬判决错误数据HILE,使用可能存在未纠正错误的位置,来纠正硬判决运算数据HDTR中存在的错误,并生成纠错数据CDTR。
纠错单元140可以从错误估计单元100-1接收错误信息ERRI。纠错单元140可以基于错误信息ERRI而被启用或被停用。根据实施例,当错误信息ERRI具有第一逻辑值时,纠错单元140被启用以生成纠错数据CDTR;当错误信息ERRI具有第二逻辑值时,纠错单元140被停用以免生成纠错数据CDTR。然而,本公开的范围不限于此。在另外的实施例中,SU 160可以基于作为选择信号SEL的错误信息ERRI来使用或忽略纠错单元140的输出CDTR。
图8示出根据本公开的实施例的存储控制器。
参照图1、图2和图8,存储控制器1000-2包括错误估计单元100-1、硬判决单元120-1、软判决单元(SDU)120-2、纠错单元140-1和选择单元160-1。与图2所示的存储控制器1000-1不同,图8所示的存储控制器1000-2还可以包括软判决单元120-2。图2和图8中具有相同附图标记的组件执行类似的功能,因此可以省略重复描述。
软判决单元120-2可以通过多个通道CH[0]、CH[1]和CH[2]且均以比特流的形式同时接收表示相同信息的多个数据DTR0、DTR1和DTR2。
软判决单元120-2可以通过对多个数据DTR0、DTR1和DTR2执行逻辑运算来生成软判决错误数据SILE。
即使不需要达到纠错单元140-1能够执行的纠正水平,也可以执行逻辑运算以快速纠正多个数据DTR0、DTR1和DTR2中存在的错误。
软判决单元120-2可以包括门电路,该门电路包括用于执行逻辑运算的多个门。在下文中,可以更详细地描述软判决单元120-2执行逻辑运算的过程。
图9用于描述由图8的软判决单元执行的逻辑运算。
在图9中,示出了软判决单元120-2基于多个数据DTR0、DTR1和DTR2中的相应比特执行逻辑运算的结果。根据实施例,当相应比特DTR0[k]、DTR1[k]和DTR2[k]既具有第一值也具有第二值时,软判决单元120-2可以将软判决错误数据SILE的比特值设置为第一逻辑值。例如,在图9的示例性实施例中,假设第一值是“1”,第二值是“0”,第一逻辑值是“1”,则软判决错误数据SILE的比特值可以被设置为SILE[0:13]=(1,1,1,0,0,1,0,0,1,0,1,1,1,1)。即,软判决(SD)单元120-2可以基于与多个数据相对应的比特来执行逻辑XOR(异或)运算,但是不限于此。
返回参照图8,纠错单元140-1可以从硬判决单元120-1接收硬判决运算数据HDTR和硬判决错误数据HILE。纠错单元140-1还可以从软判决单元120-2接收软判决错误数据SILE。
纠错单元140-1可以基于硬判决错误数据HILE和软判决错误数据SILE对可能存在未纠正错误的位置纠正硬判决运算数据HDTR中存在的错误,以生成纠错数据CDTR。
图10示出根据本公开的实施例的存储控制器。
参照图1、图8和图10,存储控制器1000-3包括错误估计单元100-2、硬判决单元120-1、软判决单元120-2、纠错单元140-1和选择单元160-1。与图8所示的错误估计单元100-1不同,错误估计单元100-2还可以从主机接收用于估计多个数据DTR0、DTR1和DTR2的错误水平的信息ELEI。这里,信息ELEI可以是这样的信息:该信息与存储存储器有关,并且可以在存储控制器和存储存储器被建立在存储系统中之后在存储存储器运行时被累积。
图11示出根据本公开的实施例的存储控制器。
参照图10和图11,存储控制器1000-4包括错误估计单元100-2、硬判决单元120-1、软判决单元120-2、纠错单元140-1、选择单元160-1和逻辑OR门160-2。与图10所示的存储控制器1000-3不同,图11所示的存储控制器1000-4还可以包括逻辑OR门160-2。在图10和图11中具有相同附图标记的组件执行类似的功能,因此可以省略重复描述。
逻辑OR门160-2可以从错误估计单元100-2接收错误信息ERRI,并从主机接收注意信息ATTI。当包括主机2000、存储控制器1000-4和存储存储器500的存储系统在需要高速度或及时性的紧急情况下操作时,注意信息ATTI可以是由主机2000感测并被发送到存储控制器1000-4的信息。根据实施例,当注意信息指示多个数据的错误水平或错误率低于参考值时,逻辑OR门160-2可以允许选择单元160-1选择硬判决运算数据HDTR而不管错误信息ERRI如何。
图12示出了根据示例性实施例的操作存储控制器的方法。
参照图1和图12,在功能块S1000,错误估计单元100可以通过估计多个数据的错误水平来生成错误信息ERRI。在功能块S2000,判决单元120可以对多个数据执行逻辑运算以生成运算数据DTR。在功能块S3000,纠错单元140可以通过基于判决错误数据ILE纠正运算数据DTR的错误来生成纠错数据CDTR。在功能块S4000,选择单元160可以基于错误信息ERRI选择运算数据DTR或纠错数据CDTR之一。
图13示出了根据示例性实施例的存储器系统(memory system)。
参照图13,存储器系统2000可以包括存储器控制器300和至少一个存储器件500。
存储器件500可以在存储器控制器300的控制下执行读取、写入和擦除操作。存储器件500可以从存储器控制器300接收控制信号CTRL、命令CMD、地址ADDR和写入数据DATA,以及向存储器控制器300发送读取数据DATA。
存储器控制器300可以包括ECC引擎310。ECC引擎310可以包括ECC编码器320和ECC解码器330,例如但不限于图4所示,用于检查并纠正错误位或失败位。ECC引擎310可以以ECC扇区(sector)的数据单位(data unit)执行ECC运算。例如,页面的数据单位可以是8KB至64KB,而ECC扇区的数据单元可以是1KB至4KB。
ECC编码器320可以对要提供给存储器件500的数据执行纠错编码,以生成包括奇偶校验位的码字。该码字可以被传送到并且被存储在存储器件500的多个存储区域中。ECC编码器320可以按照ECC扇区的数据单位来执行编码。ECC解码器330可以对从存储器件500读出的数据执行纠错解码,并确定纠错解码的失败或成功。ECC解码器330可以使用码字中的奇偶校验位来纠正数据的错误位。如果错误位数目超过阈值数目或可纠正位数目,则ECC解码器330不纠正错误位,并且纠错未完成。根据示例性实施例,ECC解码器330可以通过对从多个存储区域读出的多个读取数据执行逻辑运算来提供逻辑运算数据,并且基于该逻辑运算数据执行组合的ECC解码。
作为非限制性示例,ECC编码器320和ECC解码器330可以使用诸如低密度奇偶校验(LDPC)码、BCH(Bose,Chaudhuri,Hocquenghem)码、turbo码、Reed-Solomon(RSC)码、卷积码、递归系统码、网格编码调制(TCM)、块编码调制(BCM)等的编码调制来检查和纠正位错误。
图14示出了图1的存储存储器或包括在图13的存储器系统中的存储器件的示例性实施例。
参照图14,存储器件500包括存储单元阵列510、地址译码器520、读写电路530、数据输入/输出(I/O)电路540、电压发生电路550以及控制逻辑或控制逻辑电路560。存储器件500包括非易失性存储存储器。
存储单元阵列510通过字线WL和选择线连接到地址译码器520。例如,选择线可以包括串选择线SSL和接地选择线GSL。存储单元阵列510通过位线BL连接到读写电路530。
存储单元阵列510可以包括多个存储单元。例如,存储单元阵列510可以包括沿行和列方向设置的存储单元。例如,存储单元阵列510可以包括多个存储单元,每个单元存储一个或更多个数据位。存储单元阵列还可以具有垂直NAND(VNAND)闪存结构。
地址译码器520被配置为响应于控制逻辑560的控制信号进行操作。地址译码器520可以从诸如存储器控制器的外部设备接收地址ADDR。
地址译码器520被配置为对接收到的地址ADDR当中的行地址进行译码。地址译码器520被配置为在字线WL当中选择与译码的行地址相对应的字线。地址译码器520被配置为在包括串选择线SSL和接地选择线GSL的选择线当中选择与译码的行地址相对应的选择线。
地址译码器520被配置为向选定字线、未选字线、选定选择线和未选选择线传递从电压发生电路550接收到的各种电压。
地址译码器520被配置为对来自接收到的地址ADDR的列地址进行译码。地址译码器520向读写电路530传递译码的列地址DCA。
在示例性实施例中,地址译码器520可以包括:对行地址进行译码的行译码器;对列地址进行译码的列译码器;以及存储接收到的地址ADDR的地址缓冲器。
读写电路530通过位线BL连接到存储单元阵列510,并且通过数据线DL连接到数据I/O电路540。读写电路530响应于控制逻辑560的控制进行操作。读写电路530从地址译码器520接收译码的列地址DCA。使用译码的列地址DCA,读写电路530选择位线BL。
读写电路530通过数据线DL从数据I/O电路540接收数据,并将接收到的数据通过位线BL写入存储单元阵列510。读写电路530通过位线BL从存储单元阵列510读取数据,并通过数据线DL向数据I/O电路540传递读取到的数据。
在示例性实施例中,读写电路530可以包括页面缓冲器或页面寄存器以及列选择电路。在示例性实施例中,读写电路530还可以包括读出放大器、写入驱动器和列选择电路。
数据I/O电路540通过数据线DL连接到读写电路530。数据I/O电路540响应于控制逻辑560的控制信号进行操作。数据I/O电路540被配置为与外部设备或网络交换数据DATA。数据I/O电路540被配置为通过数据线DL将数据DATA从外部设备或网络传递到读写电路530。数据I/O电路540被配置为通过数据线DL将从读写电路530传递的数据DATA输出到外部设备或网络。在示例性实施例中,数据I/O电路540可以包括数据缓冲器。
电压发生电路550连接到存储单元阵列510、地址译码器520和控制逻辑或控制逻辑电路560。电压发生电路550从外部电源接收电力。在示例性实施例中,电压发生电路550从外部电源接收电源电压Vcc以及负电压或接地电压Vss。电压发生电路550被配置为响应于控制逻辑或控制逻辑电路560的控制信号,从电源电压Vcc以及负电压或接地电压Vss产生具有各种电压电平的电压。在示例性实施例中,电压发生电路550被配置为产生诸如高电压VPP、编程电压Vpgm、通过电压Vpass、读取电压Vread和擦除电压Vers的各种电压。
在控制逻辑或控制逻辑电路560的控制下,由电压发生电路550产生的电压被供应给地址译码器520和存储单元阵列510。例如,在编程操作期间,编程电压Vpgm和通过电压Vpass可以被供应给地址译码器520。在读取操作期间,读取电压Vread可以被供应给地址译码器520。在擦除存储单元阵列510的操作期间,擦除电压Vers可以被供应给存储单元阵列510。电压发生电路550产生的电压不限于上述电压。
控制逻辑或控制逻辑电路560连接到地址译码器520、读写电路530和数据I/O电路540。控制逻辑或控制逻辑电路560还可以连接到或包括通过/失败检查电路。控制逻辑或控制逻辑电路560被配置为控制非易失性存储器件500的总体操作。控制逻辑或控制逻辑电路560响应于从外部设备或网络传递的控制信号CTRL进行操作。
图15A示出了图14中的存储单元阵列,并且图15B示出了图15A中的存储块(memoryblock)的等效电路。
参照图15A,存储单元阵列510可以包括多个存储块BLK1至BLKz。在示例性实施例中,可以由地址译码器520选择存储块BLK1至BLKz。例如,地址译码器520可以在存储块BLK1至BLKz当中选择与块地址相对应的特定存储块BLKi。
在诸如垂直NAND(VNAND)结构的三维结构中,图15B的存储块BLKi可以形成在衬底上。例如,可以在垂直于衬底的方向上形成包括在存储块BLKi中的多个存储单元串。
参照图15B,存储块BLKi可以包括耦接在位线BL1、BL2和BL3与公共源极线CSL之间的存储单元串NS11至NS33。存储单元串NS11至NS33均可以包括:串选择晶体管SST,其栅极连接到对应的串选择线;以及接地选择晶体管GST,其栅极连接到对应的接地选择线;以及多个存储单元MC1至MC8,其连接在串选择晶体管SST与接地选择晶体管GST之间。在图15B中,存储单元串NS11至NS33均被示出为包括八个存储单元MC1至MC8。然而,实施例不限于此。在另外的实施例中,存储单元串NS11至NS33均可以包括任何数目的存储单元。
串选择晶体管SST可以连接到对应的串选择线SSL1至SSL3,并且每个串选择晶体管SST限定垂直布置的存储单元的单元串。多个存储单元MC1至MC8可以分别连接到对应的字线WL1至WL8。接地选择晶体管GST可以连接到对应的接地选择线GSL1至GSL3。串选择晶体管SST可以连接到对应的位线BL1、BL2和BL3,并且接地选择晶体管GST可以连接到公共源极线CSL。
具有相同高度的字线(例如,WL1)可以被共同地连接,并且接地选择线GSL1至GSL3和串选择线SSL1至SSL3可以分隔开。接地选择线GSL1至GSL3也可以共同地彼此连接,但不限于此。在另外的实施例中,存储单元阵列510可以耦接到任何数目的字线和位线。
图16示出了根据示例性实施例的存储器系统。
参照图16,存储器系统可以包括存储器控制器301和至少一个存储器件501。
存储器件501可以在存储器控制器301的控制下执行读取、写入和擦除操作。存储器件501可以从存储器控制器301接收控制信号CTRL、命令CMD、地址ADDR和写入数据DATA,以及向存储器控制器301发送读取数据DATA。
存储器件501可以包括片上ECC电路580。当将数据写入存储单元阵列时,片上ECC电路580可以对数据进行编码以生成奇偶校验位。例如,奇偶校验位可以存储在存储单元阵列中的奇偶校验数据区域中。当从存储单元阵列读出数据时,片上ECC电路580可以对读取到的数据和奇偶校验位进行解码以检查和纠正任何位错误。片上ECC电路580可以包括用于执行这种编码和解码的编码器和解码器。根据示例性实施例,类似于图13的ECC解码器,片上ECC电路580中的解码器可以通过对从多个存储区域读出的多个读取数据执行逻辑运算来提供逻辑运算数据,并且基于该逻辑运算数据执行组合的ECC解码。
图17示出了根据示例性实施例的固态磁盘或固态硬盘(SSD)。
参照图17,SSD包括非易失性存储器阵列1100,该非易失性存储器阵列1100具有非易失性存储器件NVM的连接到SSD控制器1200的多个通道。
SSD控制器1200分别通过多个通道CH1至CHi连接到阵列1100的非易失性存储器件NVM。SSD控制器1200包括一个或更多个处理器1210、缓冲存储器1220、ECC块1230、主机接口1250和非易失性存储器接口1260。缓冲存储器1220存储用于驱动SSD控制器1200的数据。缓冲存储器1220包括多条存储器线,每条存储器线接收数据或命令。ECC块1230在写入操作时计算要编程的数据的纠错码值,以及在读取操作时使用纠错码值来纠正读取数据中的任何错误。在数据恢复操作中,ECC块1230纠正从非易失性存储器件NVM恢复的数据中的错误。
如上所述,存储控制器、存储系统和/或操作存储控制器的方法可以高效地接收与多个存储器中的每个存储器相对应的多个数据。另外,存储控制器、存储系统和操作该存储控制器的方法可以通过各种路径高效地接收多个数据,从而优化可靠性和/或接收速度。
本发明构思可以应用于包括具有错误检查和纠正功能的存储器件的任何设备和系统。例如,本发明构思可以应用于诸如移动电话、智能电话、个人数字助理(PDA)、便携式多媒体播放器(PMP)、数字照相机、便携式摄像机、个人计算机(PC)、服务器计算机、工作站、膝上型计算机、数字电视(TV)、机顶盒、便携式游戏机,导航系统等的系统。
前述内容是对示例性实施例的说明,并且不应解释为对其的限制。尽管已经描述了示例性实施例,但是相关领域的普通技术人员可以容易地理解,在实质上不脱离本发明构思的情况下,可以进行许多修改。

Claims (20)

1.一种存储控制器,包括:
多个并行输入通道,所述多个并行输入通道被配置为用于同时分别从多个冗余存储器接收多个数据;
错误估计单元,所述错误估计单元被配置为通过估计所述多个数据的错误水平来生成错误信息;
判决单元,所述判决单元被配置为对所述多个数据执行逻辑运算以生成运算数据;
纠错单元,所述纠错单元被配置为通过纠正所述运算数据的错误来生成纠错数据;以及
选择单元,所述选择单元被配置为基于所述错误信息选择所述运算数据和所述纠错数据之一。
2.根据权利要求1所述的存储控制器,其中,所述判决单元包括:
硬判决单元,所述硬判决单元被配置为通过对所述多个数据的相应比特执行多数表决逻辑运算来生成硬判决运算数据。
3.根据权利要求2所述的存储控制器,其中,每个所述相应比特具有第一值或第二值,并且
其中,当所述相应比特当中具有所述第一值的比特的数目多于所述相应比特当中具有所述第二值的比特的数目时,所述硬判决单元将所述硬判决运算数据的比特值设置为所述第一值。
4.根据权利要求3所述的存储控制器,其中,所述硬判决单元基于所述多个数据生成硬判决错误数据,并且
其中,当所述相应比特既具有所述第一值也具有所述第二值时,并且当所述相应比特当中具有所述第一值的比特的数目与所述相应比特当中具有所述第二值的比特的数目之间的差等于或小于预定值时,所述硬判决单元将所述硬判决错误数据的比特值设置为第一逻辑值。
5.根据权利要求4所述的存储控制器,其中,所述硬判决错误数据指示所述硬判决运算数据中可能存在未纠正错误的位置。
6.根据权利要求1所述的存储控制器,其中,所述判决单元包括:
逻辑OR电路,所述逻辑OR电路被配置为对所述多个数据的相应比特执行逻辑OR运算;
逻辑AND电路,所述逻辑AND电路被配置为对所述相应比特执行逻辑AND运算;
多数表决电路,所述多数表决电路被配置为对所述相应比特执行多数表决逻辑运算;以及
复用器,所述复用器被配置为选择所述逻辑OR运算的结果、所述逻辑AND运算的结果和所述多数表决逻辑运算的结果之一,并将所选择的结果生成为硬判决运算数据。
7.根据权利要求1所述的存储控制器,其中,所述判决单元包括:
硬判决单元,所述硬判决单元被配置为通过对所述多个数据的相应比特执行第一逻辑运算来生成硬判决运算数据;以及
软判决单元,所述软判决单元被配置为通过对所述多个数据的所述相应比特执行第二逻辑运算来生成软判决错误数据。
8.根据权利要求7所述的存储控制器,其中,每个所述相应比特具有第一值或第二值,并且
其中,所述软判决单元基于所述多个数据生成所述软判决错误数据,并且当所述相应比特既具有所述第一值也具有所述第二值时,所述软判决单元将所述软判决错误数据的比特值设置为第一逻辑值。
9.根据权利要求8所述的存储控制器,其中,所述软判决错误数据指示所述硬判决运算数据中可能存在未纠正错误的位置。
10.根据权利要求7所述的存储控制器,其中,所述存储控制器还包括:
逻辑OR门,所述逻辑OR门被配置为对来自所述错误估计单元的所述错误信息与来自主机的注意信息执行逻辑OR运算,使得所述选择单元基于所述逻辑OR门的输出选择所述硬判决运算数据和所述软判决错误数据之一。
11.根据权利要求10所述的存储控制器,其中,当所述注意信息指示所述多个数据的所述错误水平低于参考值时,所述选择单元选择所述硬判决运算数据而不管所述错误信息如何。
12.根据权利要求1所述的存储控制器,其中,所述错误估计单元从主机接收指示所述多个数据的所述错误水平的信息,并且从所述主机接收到的所述信息是这样的信息:该信息与存储存储器有关,并且在所述存储控制器和所述存储存储器被建立在存储系统中之后在所述存储存储器运行时被累积。
13.一种存储系统,包括:
存储存储器,所述存储存储器被配置为分别在多个冗余存储器中存储多个数据;以及
存储控制器,所述存储控制器包括:
错误估计单元,所述错误估计单元被配置为通过估计所述多个数据的错误水平来生成错误信息;
判决单元,所述判决单元被配置为对所述多个数据进行逻辑运算以生成运算数据;
纠错单元,所述纠错单元被配置为通过纠正所述运算数据的错误来生成纠错数据;以及
选择单元,所述选择单元被配置为基于所述错误信息选择所述运算数据和所述纠错数据之一。
14.根据权利要求13所述的存储系统,其中,所述判决单元包括:
硬判决单元,所述硬判决单元被配置为通过对所述多个数据的相应比特执行多数表决逻辑运算来生成硬判决运算数据。
15.根据权利要求14所述的存储系统,其中,每个所述相应比特具有第一值或第二值,并且
其中,当所述相应比特当中具有所述第一值的比特的数目多于所述相应比特当中具有所述第二值的比特的数目时,所述硬判决单元将所述硬判决运算数据的比特值设置为所述第一值。
16.根据权利要求15所述的存储系统,其中,所述硬判决单元基于所述多个数据来生成硬判决错误数据,并且
其中,当所述相应比特既具有所述第一值也具有所述第二值时,并且当所述相应比特当中具有所述第一值的比特的数目与所述相应比特当中具有所述第二值的比特的数目之间的差等于或小于预定值时,所述硬判决单元将所述硬判决错误数据的比特值设置为第一逻辑值。
17.根据权利要求13所述的存储系统,其中,所述判决单元包括:
硬判决单元,所述硬判决单元被配置为通过对所述多个数据的相应比特执行第一逻辑运算来生成硬判决运算数据;以及
软判决单元,所述软判决单元被配置为通过对所述多个数据的所述相应比特执行第二逻辑运算来生成软判决错误数据。
18.根据权利要求17所述的存储系统,其中,每个所述相应比特具有第一值或第二值,并且
其中,所述软判决单元基于所述多个数据生成所述软判决错误数据,并且当所述相应比特既具有所述第一值也具有所述第二值时,所述软判决单元将所述软判决错误数据的比特值设置为第一逻辑值。
19.根据权利要求18所述的存储系统,其中,所述软判决错误数据指示所述硬判决运算数据中可能存在未纠正错误的位置。
20.一种存储控制器,包括:
多个并行输入通道,所述多个并行输入通道被配置为用于同时分别从多个冗余存储器接收多个数据;
错误估计单元,所述错误估计单元被配置为通过估计所述多个数据的错误水平来生成错误信息;
判决单元,所述判决单元被配置为对所述多个数据执行逻辑运算以生成运算数据,所述判决单元包括硬判决单元和软判决单元,所述硬判决单元被配置为通过对所述多个数据的相应比特执行多数表决逻辑运算来生成硬判决运算数据,所述软判决单元被配置为通过对所述多个数据的所述相应比特执行第二逻辑运算来生成软判决错误数据;
纠错单元,所述纠错单元被配置为通过纠正所述运算数据的错误来生成纠错数据;以及
选择单元,所述选择单元被配置为基于所述错误信息选择所述运算数据和所述纠错数据之一。
CN202011343822.1A 2020-01-17 2020-11-25 存储控制器、存储系统及操作存储控制器的方法 Pending CN113138948A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2020-0006573 2020-01-17
KR1020200006573A KR20210092986A (ko) 2020-01-17 2020-01-17 스토리지 컨트롤러, 이를 포함하는 스토리지 시스템 및 스토리지 컨트롤러의 동작 방법

Publications (1)

Publication Number Publication Date
CN113138948A true CN113138948A (zh) 2021-07-20

Family

ID=74186536

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011343822.1A Pending CN113138948A (zh) 2020-01-17 2020-11-25 存储控制器、存储系统及操作存储控制器的方法

Country Status (4)

Country Link
US (2) US11436081B2 (zh)
EP (1) EP3851965A1 (zh)
KR (1) KR20210092986A (zh)
CN (1) CN113138948A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210092986A (ko) * 2020-01-17 2021-07-27 삼성전자주식회사 스토리지 컨트롤러, 이를 포함하는 스토리지 시스템 및 스토리지 컨트롤러의 동작 방법

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7900125B1 (en) * 2004-05-24 2011-03-01 Seagate Technology Llc Majority detection in error recovery
US8694855B1 (en) * 2011-11-02 2014-04-08 Pmc-Sierra Us, Inc. Error correction code technique for improving read stress endurance
US20140153331A1 (en) * 2012-12-04 2014-06-05 Joonsuc Jang Multi-level cell memory device and operating method thereof
CN105097028A (zh) * 2014-05-13 2015-11-25 三星电子株式会社 包括非易失性存储器件的存储装置和该器件的读取方法
CN107393596A (zh) * 2016-04-26 2017-11-24 三星电子株式会社 半导体存储设备和操作其的方法
US20180205396A1 (en) * 2017-01-13 2018-07-19 Everspin Technologies Inc. Preprogrammed data recovery
CN109285582A (zh) * 2017-07-19 2019-01-29 三星电子株式会社 存储器系统、非暂时性计算机可读介质及错误校验与校正的方法
CN110377453A (zh) * 2018-04-12 2019-10-25 三星电子株式会社 半导体存储器装置和包括半导体存储器装置的存储器系统

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5907671A (en) 1996-09-23 1999-05-25 International Business Machines Corporation Fault tolerant system based on voting
JP2001267389A (ja) * 2000-03-21 2001-09-28 Hiroshima Nippon Denki Kk 半導体メモリ生産システム及び半導体メモリ生産方法
US6910173B2 (en) 2000-08-08 2005-06-21 The Board Of Trustees Of The Leland Stanford Junior University Word voter for redundant systems
US7092464B2 (en) 2002-01-23 2006-08-15 Bae Systems Information And Electronic Systems Integration Inc. Multiuser detection with targeted error correction coding
JP2004234770A (ja) * 2003-01-31 2004-08-19 Renesas Technology Corp 半導体記憶装置とテスト方法
US6963217B2 (en) 2003-02-21 2005-11-08 University Of South Florida Method and apparatus for creating circuit redundancy in programmable logic devices
WO2005096509A1 (en) 2004-03-31 2005-10-13 Intel Corporation Multi-threshold message passing decoding of low-density parity check codes
US7849381B2 (en) * 2004-12-21 2010-12-07 Sandisk Corporation Method for copying data in reprogrammable non-volatile memory
JP2006209900A (ja) * 2005-01-31 2006-08-10 Matsushita Electric Ind Co Ltd メモリ回路
US8122323B2 (en) 2007-03-08 2012-02-21 Intel Corporation Method, apparatus, and system for dynamic ECC code rate adjustment
JP2011123545A (ja) * 2009-12-08 2011-06-23 Toshiba Corp 比較冗長型情報処理装置
JP2011197957A (ja) * 2010-03-18 2011-10-06 Toshiba Corp 誤り訂正符号復号装置及び誤り訂正符号復号方法
US8739010B2 (en) 2010-11-19 2014-05-27 Altera Corporation Memory array with redundant bits and memory element voting circuits
JP2012137885A (ja) * 2010-12-24 2012-07-19 Toshiba Corp データ記憶装置、メモリ制御装置及びメモリ制御方法
JP2014035673A (ja) * 2012-08-09 2014-02-24 Renesas Electronics Corp 半導体記憶装置及び方法
CN103731130B (zh) 2013-12-27 2017-01-04 华为技术有限公司 通用的容错纠错电路及其应用的译码器和三模冗余电路
US9407294B2 (en) 2014-07-07 2016-08-02 Kabushi Kaisha Toshiba. Non-volatile memory controller with error correction (ECC) tuning via error statistics collection
US10078565B1 (en) 2016-06-16 2018-09-18 Xilinx, Inc. Error recovery for redundant processing circuits
US10158380B2 (en) 2016-12-06 2018-12-18 Sandisk Technologies Llc ECC and read adjustment based on dynamic memory error model estimation
KR102415867B1 (ko) * 2017-11-29 2022-07-04 에스케이하이닉스 주식회사 메모리 셀의 결함을 제거하기 위한 메모리 시스템 및 그의 동작 방법
KR20210092986A (ko) * 2020-01-17 2021-07-27 삼성전자주식회사 스토리지 컨트롤러, 이를 포함하는 스토리지 시스템 및 스토리지 컨트롤러의 동작 방법

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7900125B1 (en) * 2004-05-24 2011-03-01 Seagate Technology Llc Majority detection in error recovery
US8694855B1 (en) * 2011-11-02 2014-04-08 Pmc-Sierra Us, Inc. Error correction code technique for improving read stress endurance
US20140153331A1 (en) * 2012-12-04 2014-06-05 Joonsuc Jang Multi-level cell memory device and operating method thereof
CN105097028A (zh) * 2014-05-13 2015-11-25 三星电子株式会社 包括非易失性存储器件的存储装置和该器件的读取方法
CN107393596A (zh) * 2016-04-26 2017-11-24 三星电子株式会社 半导体存储设备和操作其的方法
US20180205396A1 (en) * 2017-01-13 2018-07-19 Everspin Technologies Inc. Preprogrammed data recovery
CN109285582A (zh) * 2017-07-19 2019-01-29 三星电子株式会社 存储器系统、非暂时性计算机可读介质及错误校验与校正的方法
CN110377453A (zh) * 2018-04-12 2019-10-25 三星电子株式会社 半导体存储器装置和包括半导体存储器装置的存储器系统

Also Published As

Publication number Publication date
KR20210092986A (ko) 2021-07-27
US11797381B2 (en) 2023-10-24
US11436081B2 (en) 2022-09-06
US20220365847A1 (en) 2022-11-17
EP3851965A1 (en) 2021-07-21
US20210224152A1 (en) 2021-07-22

Similar Documents

Publication Publication Date Title
CN109285582B (zh) 存储器系统、非暂时性计算机可读介质及错误校验与校正的方法
CN107643958B (zh) 恢复数据的方法和使用该方法的存储器系统和raid存储系统
KR101312146B1 (ko) Nand 메모리들을 위한 관리 데이터의 프로그래밍
US9262261B2 (en) Memory devices facilitating differing depths of error detection and/or error correction coverage
US8725944B2 (en) Implementing raid in solid state memory
KR101979734B1 (ko) 메모리 장치의 독출 전압 제어 방법 및 이를 이용한 데이터 독출 방법
US10725863B2 (en) Memory system and method for operating the same
KR20100113135A (ko) 반도체 기억 장치, 그 제어 방법, 및 에러 정정 시스템
US20130061113A1 (en) Method of correcting errors and memory device using the same
CN113053441A (zh) 存储装置和存储装置的操作方法
CN113051098A (zh) 使用机器学习控制非易失性存储器设备的操作的方法和存储系统
CN109215713B (zh) 存储器系统和操作半导体存储器装置的方法
KR20170090177A (ko) 메모리 시스템, 반도체 메모리 장치 및 그의 동작 방법
US11797381B2 (en) Storage controller, storage system and method of operating the same
KR20200079811A (ko) 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템
CN111161781A (zh) 用于处理编程错误的存储器系统及其方法
US11630588B2 (en) Controller and memory system including the same
US20240103968A1 (en) Memory system and control method
KR102248207B1 (ko) 저장 장치 및 그것의 동작 방법
KR20230020744A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
CN114090330A (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