CN112749040A - 存储器控制器以及包括该存储器控制器的存储器系统 - Google Patents
存储器控制器以及包括该存储器控制器的存储器系统 Download PDFInfo
- Publication number
- CN112749040A CN112749040A CN202010817449.2A CN202010817449A CN112749040A CN 112749040 A CN112749040 A CN 112749040A CN 202010817449 A CN202010817449 A CN 202010817449A CN 112749040 A CN112749040 A CN 112749040A
- Authority
- CN
- China
- Prior art keywords
- memory
- ecc
- data
- symbols
- parity
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1044—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/1575—Direct 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)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本公开公开了一种被配置为控制存储器模块的存储器控制器,所述存储器模块包括多个存储器设备,所述多个存储器设备构成第一通道和第二通道,存储器控制器包括纠错码(ECC)引擎以及被配置为控制所述ECC引擎的控制电路。所述ECC引擎被配置为通过基于包括映射信息的设备信息根据经由所述多个存储器设备中的每一个的多个输入/输出焊盘接收的预定数量的数据比特自适应地构造多个符号中的每一个来生成包括所述多个符号的码字,并且将所述码字发送到所述存储器模块。所述映射信息指示所述多个输入/输出焊盘中的每一个是被映射到所述多个符号中的同一符号还是所述多个符号中的不同符号。所述多个符号中的每一个对应于所述ECC引擎的纠错单位。
Description
相关申请的交叉引用
本申请要求2019年10月31日提交的韩国专利申请No.10-2019-0137223的优先权,其公开内容通过引用整体并入本文中。
技术领域
本公开的示例性实施例涉及存储器,更具体地,涉及存储器控制器、包括该存储器控制器的存储器系统、以及存储器模块。
背景技术
可以使用诸如硅(Si)、锗(Ge)、砷化镓(GaAs)、磷化铟(InP)等的半导体来实现存储器设备。存储器设备通常被划分为易失性存储器设备和非易失性存储器设备。
易失性存储器设备是指当电源关闭时所存储的数据丢失的存储器设备。另一方面,非易失性存储器设备是指当电源关闭时保留所存储的数据的存储器设备。因为作为一种易失性存储器设备的动态随机存取存储器(DRAM)具有较高的访问速度,所以DRAM被广泛地用作计算系统的工作存储器、缓冲存储器、主存储器等。
为了高性能和大容量,使用存储器模块来实现多个存储器芯片(例如,DRAM)。
发明内容
示例性实施例提供了一种能够提高纠错能力的存储器控制器。
示例性实施例提供了一种能够提高纠错能力的存储器系统。
示例性实施例提供了一种能够提高纠错能力的存储器模块。
根据本发明的示例性实施例,提供了一种被配置为控制存储器模块的存储器控制器,该存储器模块包括多个存储器设备,这些存储器设备构成第一通道和第二通道,并且存储器控制器包括纠错码(ECC)引擎以及被配置为控制该ECC引擎的控制电路。ECC引擎被配置为通过基于包括映射信息的设备信息根据经由所述多个存储器设备中的每一个的多个输入/输出焊盘接收的预定数量的数据比特自适应地构造多个符号中的每一个来生成包括所述多个符号的码字,并且将所述码字发送到所述存储器模块。映射信息指示多个输入/输出焊盘中的每一个是被映射到多个符号中的同一符号还是多个符号中的不同符号。多个符号中的每一个对应于ECC引擎的纠错单位。
根据本发明的示例性实施例,一种存储器系统包括:第一存储器模块,包括构成第一通道和第二通道的多个存储器设备;串行存在检测(SPD)设备,存储第一映射信息作为设备信息;以及存储器控制器,被配置为控制第一存储器模块。存储器控制器包括纠错码(ECC)引擎和被配置为控制该ECC引擎的控制电路。ECC引擎被配置为通过基于第一映射信息根据经由多个存储器设备中的每一个的多个输入/输出焊盘接收的预定数量的数据比特自适应地构造多个符号中的每一个来生成包括多个符号的码字,并且将该码字发送到第一存储器模块。第一映射信息指示多个输入/输出焊盘中的每一个是被映射到多个符号中的同一符号还是多个符号中的不同符号。多个符号中的每一个对应于ECC引擎的纠错单位。
根据本发明的示例性实施例,一种存储器系统包括:存储器模块,包括构成第一通道和第二通道的多个存储器设备;串行存在检测(SPD)设备,分别存储第一通道和第二通道的第一硬故障信息和第二硬故障信息作为设备信息;以及存储器控制器,被配置为控制存储器模块。存储器控制器包括:纠错码(ECC)引擎,被配置为根据要存储在多个存储器设备中的多个数据比特来生成包括多个符号的码字;以及控制电路,被配置为控制该ECC引擎。如果多个符号中的包括错误比特的符号的数量大于参考数量,则第一硬故障信息指示第一通道中的硬故障,否则第一硬故障信息指示软故障。如果多个符号中的包括错误比特的符号的数量大于参考数量,则第二硬故障信息指示第二通道中的硬故障,否则第二硬故障信息指示软故障。多个符号中的每一个包括经由多个存储器设备中的每一个的多个输入/输出焊盘接收的预定数量的数据比特。ECC引擎响应于第一硬故障信息和第二硬故障信息中的至少一个而增加码字中的错误检测/纠正比特的数量。第一硬故障信息和第二硬故障信息中的至少一个指示在多个存储器设备中的在第一通道和第二通道中的对应通道中的至少一个存储器设备中包括错误比特的符号的数量大于参考数量。
根据示例性实施例,存储器控制器中的ECC引擎基于安装在存储器模块上的存储器芯片的信息来构造码字,使得存储在存储器芯片中的用户数据集中包括错误比特的符号的数量等于或小于参考数量。因此,存储器系统可以通过增加ECC引擎的纠错能力来增加可靠性、可用性和适用性。
附图说明
通过参考附图详细地描述本公开的示例性实施例,本公开的以上和其他特征将变得更清楚明白。
图1是示出了根据示例性实施例的存储器系统的框图。
图2是示出了根据示例性实施例的图1的存储器系统中的存储器控制器的框图。
图3A示出了根据示例性实施例的图1的存储器模块中的信息表的示例。
图3B示出了图1的存储器系统中的设备信息的示例。
图4是示出了根据示例性实施例的图1的存储器系统的突发操作的示图。
图5是示出了根据示例性实施例的图2中的ECC引擎的示例的框图。
图6是根据示例性实施例的图5的ECC引擎中的ECC编码器的示例。
图7是根据示例性实施例的图5的ECC引擎中的ECC解码器的示例。
图8是示出了根据示例性实施例的图1中的存储器模块中的数据芯片之一的框图。
图9示出了根据示例性实施例的图8的数据芯片的第一存储体阵列。
图10是示出了根据示例性实施例的在其中执行纠错算法的数据结构的示图。
图11是示出了根据示例性实施例的执行纠错算法的方法的流程图。
图12示出了包括两个子字的数据集,这两个子字被输入到图4的存储器模块中的一个数据芯片/从该数据芯片输出。
图13示出了包括两个子字的数据集,当ECC引擎基于映射信息构造码字时,这两个子字被输入到图4的存储器模块中的一个数据芯片/从该数据芯片输出。
图14是示出了根据示例性实施例的图1的存储器系统中的存储器模块的示例的框图。
图15示出了根据示例性实施例的在图14的存储器模块中发生硬故障。
图16和图17分别示出了图6的ECC编码器中的奇偶校验生成器的操作。
图18示出了根据示例性实施例的图1的存储器系统中的存储器模块的示例。
图19示出了根据示例性实施例的图1的存储器系统中的存储器模块的示例。
图20是示出了根据示例性实施例的图1的存储器系统的突发操作的示图。
图21是示出了根据示例性实施例的存储器控制器的操作的流程图。
图22是示出了根据示例性实施例的存储器系统的操作的流程图。
图23是示出了根据示例性实施例的具有四级存储器模块的存储器系统的框图。
图24是示出了根据示例性实施例的包括存储器模块的移动系统的框图。
具体实施方式
以下将参考附图更全面地描述本公开的示例性实施例。贯穿附图,相似的附图标记可以指代相似的元件。
图1是示出了根据示例性实施例的存储器系统的框图。
参照图1,存储器系统20可以包括存储器控制器50和存储器模块180。存储器模块180包括多个存储器芯片200a~200k、200ta~200td。多个存储器芯片200a~200k、200ta~200td包括多个数据芯片200a~200k和多个纠错码(ECC)芯片200ta~200td。
存储器控制器50可以控制存储器系统20的整体操作。存储器控制器50可以控制主机与多个存储器芯片200a~200k、200ta和200tc之间的整体数据交换。例如,响应于来自主机的请求,存储器控制器50可以将数据写入多个存储器芯片200a~200k、200ta和200tc,或者从多个存储器芯片200a~200k、200ta和200tc读取数据。另外,存储器控制器50可以向多个存储器芯片200a~200k、200ta~200td下发操作命令,以控制多个存储器芯片200a~200k、200ta~200td。
在示例性实施例中,多个存储器芯片200a~200k、200ta~200td中的每一个可以包括具有易失性存储器单元的动态随机存取存储器(DRAM)。存储器芯片200a~200k可以被称为数据芯片,并且存储器芯片200ta~200td可以被称为ECC芯片。在示例性实施例中,存储器芯片200a~200k、200ta~200td中的每一个可以具有四个输入/输出焊盘(即,4比特宽度)。本发明不限于此。在示例性实施例中,存储器模块中的多个存储器芯片中的每一个可以是8比特宽。尽管将存储器设备200a~200k以及200ta~200td描述为芯片,但是它们可以是芯片形式或封装形式的存储器设备(该封装包括堆叠在封装衬底上并覆盖有密封剂的一个或多个芯片),或者它们可以是层叠封装设备。
在示例性实施例中,数据芯片200a~200k的数量可以为16,而ECC芯片的数量可以为4。然而,数据芯片200a~200k的数量和ECC芯片的数量不限于此。
存储器控制器50将地址ADDR和命令CMD发送到存储器模块180,并且可以与存储器模块180交换包括码字的消息MSG。在示例性实施例中,存储器控制器50可以使多个存储器芯片200a~200k、200ta~200td中的每一个同时以突发操作模式进行操作。在突发操作模式下,每个存储器芯片可以经由多个输入/输出焊盘中的每一个连续地输出或存储预定数量的比特。比特的预定数量对应于突发操作的突发长度。例如,在突发长度为8的突发写入操作模式下,存储器控制器50可以使每个存储器芯片经由每个存储器芯片的多个输入/输出焊盘中的每一个连续地存储8个比特;以及在突发长度为8的突发读取操作模式下,存储器控制器可以使每个存储器芯片经由多个输入/输出焊盘中的每一个连续地输出8个比特。在突发操作中,可以给多个存储器芯片200a~200k、200ta~200td中的每一个赋予行地址和起始列地址,并且例如在不改变行地址的情况下,每个存储器芯片的列地址可以使用计数器从起始列地址开始内部地增加一个列地址。对于等于8的突发长度,可以经由每个存储器芯片的多个输入/输出焊盘连续地发生八次数据传输。“拍(beat)”可以指突发操作中的单次数据传输。例如,在突发长度为8的情况下,突发操作可以具有8个拍。在存储器芯片中的每一个为四比特宽的情况下,每个存储器芯片的每个拍具有从具有相同的行地址和列地址的存储器单元输出的四个比特。
存储器控制器50可以包括ECC引擎100。在示例性实施例中,ECC引擎100可以基于诸如单符号纠正(SSC)RS码或单符号纠正和多符号检测(SSCMSD)RS码的基于符号的纠错码(ECC)来进行操作。例如,ECC引擎130可以构成包括多个符号的码字。例如,符号大小可以为8个比特。在示例性实施例中,ECC引擎可以基于来自存储器模块180的设备信息DI来构造码字,使得码字中的多个符号中的包括错误比特的符号的数量等于或小于参考数量,并且可以将该码字发送到存储器模块180。在ECC引擎100使用SSC RS码来进行操作的示例性实施例中,参考数量可以为1。多个符号中的每一个包括要存储在多个存储器芯片200a~200k中的用户数据集中包括的多个数据比特中的预定数量(例如,8个)的数据比特。在示例性实施例中,可以根据设备信息DI以各种方式根据用户数据集自适应地构造符号。例如,构造符号可以包括如图12中所示的第一构造模式和如图13中所示的第二构造模式。在第一构造模式下,可以针对每个输入/输出焊盘构造每个符号。例如,存储器芯片的每个输入/输出焊盘可以被映射到相应符号,使得每个符号由经由每个输入/输出焊盘连续存储或从每个输入/输出焊盘连续输出的数据比特形成。在具有四个输入/输出焊盘的存储器芯片在突发长度为8的突发操作中进行操作的情况下,通过具有四个输入/输出焊盘的每个存储器芯片来构造四个8比特符号。在第二构造模式下,可以使用存储器芯片的两个相邻拍来构造每个符号。例如,两个相邻拍中的第一拍可以具有经由四个输入/输出焊盘同时存储或从四个输入/输出焊盘同时输出的4个比特,并且两个相邻拍中的第二拍可以具有经由四个输入/输出焊盘同时存储或从四个输入/输出焊盘同时输出的另外4个比特。例如,存储器芯片的四个不同的输入/输出焊盘可以被映射到同一符号,使得符号由经由四个不同的输入/输出焊盘存储或从四个不同的输入/输出焊盘输出的数据比特形成。因此,存储器芯片的两个相邻拍可以形成8比特符号。为了便于描述,假设存储器芯片包括M个输入/输出焊盘且以等于N的突发长度在突发操作中进行操作。在这种情况下,响应于M个输入/输出焊盘中的每一个被映射到不同符号的第二构造模式,ECC引擎100构造多个符号,使得每个符号包括从M个输入/输出焊盘中的每一个输出的N/M个数据比特。N、M和N/M为整数,N大于或等于M,并且N/M表示N除以M。在示例性实施例中,存储器控制器50可以根据设备信息DI使用各种符号构造模式来构造码字。例如,存储器控制器50可以对使用第二构造模式根据用户数据集而生成的码字执行ECC操作,并且可以纠正用户数据集中的被确定为通过使用第一构造模式的ECC操作不可纠正的错误比特。在示例性实施例中,第一构造模式可以是默认模式,并且可以根据设备信息DI选择性地激活第二构造模式以纠正在使用第一构造模式的ECC操作下不可纠正的错误比特。
设备信息DI可以包括映射信息MPIN。映射信息MPIN可以指示经由多个存储器芯片200a~200k、200ta~200td中的每一个中的输入/输出焊盘输出或接收的用户数据集的数据比特与码字的多个符号之间的对应关系。在示例性实施例中,映射信息MPIN可以包括包含第一构造模式和第二构造模式在内的信息。例如,映射信息MPIN可以指示是在第一符号构造模式下每个8比特符号的八个数据比特由来自每个存储芯片的输入/输出焊盘中的相应输入/输出焊盘的数据比特在突发操作中形成还是在第二构造模式下每个8比特符号的八个数据比特由来自每个存储芯片的不同输入/输出焊盘的数据比特在突发操作中形成。对于x4存储器芯片,在第二符号构造模式下,每个输入/输出焊盘的两个连续的数据比特被映射到同一符号并且数据重排序(将参照图6进行描述)用于映射,并且在第一符号构造模式下,单个输入/输出焊盘的8个连续的数据比特被映射到同一符号并且数据重排序不是必须的。
设备信息DI还可以包括错误趋势信息ETIN。错误趋势信息ETIN可以指示在多个存储器芯片200a~200k、200ta~200td中的每一个的用户数据集中重复出现的错误趋势或错误模式。在示例性实施例中,错误趋势信息ETIN可以是映射信息MPIN的一部分。可以通过测试多个存储器芯片200a~200k、200ta~200td获得在多个存储器芯片200a~200k、200ta~200td中的每一个的用户数据集中重复出现的错误趋势或错误模式。ECC引擎100可以基于来自存储器模块180的错误趋势信息ETIN来构造码字,使得码字中的多个符号中的包括错误比特的符号的数量等于或小于参考数量,并且可以将该码字发送到存储器模块180。
存储器模块180还可以包括串行存在检测(SPD)芯片190,该SPD芯片190存储映射信息MPIN或者映射信息MPIN和错误趋势信息ETIN作为设备信息DI。SPD芯片190可以包括存储设备信息DI的信息表195。
当存储器模块180被封装时,映射信息MPIN可以作为设备信息DI存储在信息表195中。基于在存储器模块180的功能测试期间测试存储器芯片200a~200k、200ta和200tc的结果,错误趋势信息ETIN可以作为设备信息DI存储在信息表195中。
由于ECC引擎100基于映射信息MPIN或者映射信息MPIN和错误趋势信息ETIN来配置码字,因此ECC引擎100可以通过自适应地配置码字来提高纠错能力。
图2是示出了根据示例性实施例的图1的存储器系统中的存储器控制器的框图。
参照图2,存储器控制器50包括控制电路60、主机接口70、高速缓存80、ECC引擎100、缓冲器83、命令缓冲器85和地址缓冲器90。ECC引擎100包括ECC编码器110、ECC解码器140和存储器175。
主机接口70从诸如中央处理单元(CPU)等的主机接收请求REQ和用户数据集SDQ,并且将用户数据集SDQ提供给高速缓存80。高速缓存80将用户数据集SDQ提供给ECC引擎100。高速缓存80通过高速缓存线的一半将用户数据集SDQ提供给ECC引擎100。在示例性实施例中,用户数据集SDQ可以指从数据芯片200a~200k输出的数据比特。
控制电路60从缓冲器83接收包括映射信息MPIN和错误趋势信息ETIN在内的设备信息DI,并且基于映射信息MPIN或者映射信息MPIN和错误趋势信息FTIN将配置控制信号CNFC提供给ECC引擎100。
ECC编码器110基于配置控制信号CNFC对用户数据集SDQ执行编码操作,以生成包括第一码字和第二码字在内的第一消息MSG1。ECC编码器110可以构造码字,使得用户数据集SDQ中的包括错误比特的符号的数量等于或小于参考数量,该参考数量是码字中的具有可纠正的至少一个错误比特的符号的最大数量。ECC引擎100可以根据基于符号的纠错码(ECC)来确定参考数量。在示例性实施例中,在基于符号的纠错码为SSC RS码的情况下,参考数量为1。
ECC解码器140对包括第一码字和第二码字在内的第二消息MSG2执行ECC解码操作,以检测和/或纠正消息MSG2中的错误,并且向控制电路60提供存储在存储器模块180中的用户数据集SDQ或纠正后的用户数据集C_SDQ。
存储器175连接到ECC编码器110和ECC解码器140。存储器175包括具有不同纠错能力的多个ECC,并且响应于配置控制信号CNFC向ECC编码器110和ECC解码器140提供多个ECC中的选择的ECC。在示例性实施例中,多个ECC中的每一个可以代表奇偶校验生成矩阵。将参照图16和图17来描述多个ECC。
控制电路60接收用户数据集SDQ或纠正后的用户数据集C_SDQ,并且控制ECC引擎100、命令缓冲器85和地址缓冲器90。命令缓冲器85在控制电路60的控制下存储与请求REQ相对应的命令CMD,并且将命令CMD发送到存储器模块180。地址缓冲器90在控制电路60的控制下存储地址ADDR,并且将地址ADDR发送到存储器模块180。
缓冲器83在存储器模块180的上电序列期间从存储器模块180接收包括映射信息MPIN或者映射信息MPIN和错误趋势信息ETIN的设备信息DI,并且将映射信息MPIN或者映射信息MPIN和错误趋势信息ETIN提供给控制电路60。例如,控制电路60可以在上电序列时从存储器模块180的SPD芯片190接收设备信息DI并生成配置控制信号CNFC。
图3A示出了根据示例性实施例的图1的存储器模块中的信息表的示例。
参照图3A,信息表195可以包括第一表197、第二表198和第三表199。在示例性实施例中,信息表195可以存储在SPD 190中,如图1中所示。
第一表197可以存储映射信息MPIN,该映射信息MPIN指示经由多个存储器芯片200a~200k中的每一个中的输入/输出焊盘输出或接收的用户数据集的数据比特与码字的多个符号之间的对应关系。映射信息MPIN可以包括关于输入到一个字线(即,存储器单元行)/从一个字线输出的大量数据比特16b_WL和8b_WL的大量数据输入/输出焊盘1DQ、2DQ、4DQ和8DQ以及相关联的突发长度1BL、2BL、4BL和8BL。如上所述,映射信息MPIN可以包括这样的信息,该信息包括用于根据用户数据集来构造(即,映射)每个符号的第一构造模式和第二构造模式。
第二表198可以存储错误趋势信息ETIN,该错误趋势信息ETIN指示在针对多个存储器芯片200a~200k中的每一个的突发操作选择的存储器单元行中重复出现的错误趋势或错误模式。第二表198可以存储错误趋势信息ETIN1~ETINk作为错误趋势信息ETIN。错误趋势信息ETIN1~ETINk中的每一个与作为存储器标识符MD_ID的存储器芯片200a~200k的存储器标识符MD1~MDk中的相应存储器标识符相关联。在示例实施例中,可以将存储器芯片200a~200k中的出现最大错误的存储器芯片的错误趋势信息作为错误趋势信息ETIN提供给存储器控制器50。
第三表199可以存储与第一通道和第二通道中的每一个相关联的硬故障信息。将参照图14来描述第一通道和第二通道。例如,硬故障信息可以指示在对应通道中的存储器芯片中码字中的包括错误比特的符号(当在第一符号构造模式(即,默认模式)下构造的情况下)的数量是否大于参考数量。为了简化附图,图12示出了在使用第一符号构造模式的ECC操作中具有不可纠正的错误比特的通道上的存储器芯片。在图12中,可以在第一构造模式下基于每个输入/输出焊盘构造8比特符号。例如,在突发长度为8的突发操作中从四个输入/输出焊盘中的每一个输出的八个数据比特可以形成相应的8比特符号。因此,每个符号可以由从每个输入/输出焊盘输出的八个数据比特形成,并且存储器芯片具有4个符号错误,符号错误的数量大于SSC RS码中的参考数量(例如,1)。因此,如图12中所示的包括错误比特的用户数据集被转换为包括根据第一符号构造模式构造的符号的码字,并且该码字包括分配有错误比特的四个符号。因此,该码字可以被确定为不可纠正的。
图3B示出了图1的存储器系统中的设备信息的示例。
参照图3B,设备信息DI可以在分组中被格式化,并且该分组可以包括字段197a、198a和199a。字段197a可以存储映射信息MPIN,字段198a可以存储错误趋势信息ETIN,并且字段199a可以存储硬故障信息HFI。
图4是示出了根据示例性实施例的图1的存储器系统的突发操作的示图。
参照图4,存储器模块180a可以包括一个存储器级(memory rank),并且一个存储器级可以包括多个x4存储器芯片200a~200k以及200ta~200td。术语“x4”是指存储器芯片的输入/输出的宽度。为了避免附图的复杂性,没有使用相应参考来分开地标识图4中的每个个体块。取而代之的是,只有第一个体块和最后一个个体块才用它们的对应参考进行标识(例如200a和200k以及200ta和200td)。
存储器模块180a可以包括存储奇偶校验数据的存储器芯片200ta和200tc以及存储循环冗余校验(CRC)数据的存储器芯片200tb和200td。例如,当存储器模块180a是总总线宽度为80个比特的x4 DIIMM时,存储器模块180a的存储器芯片的总数量为20,并且存储器模块180a可以包括16个x4数据芯片200a~200k、第一奇偶校验芯片200ta、第一CRC芯片200tb、第二奇偶校验芯片200tc和第二CRC芯片200td。第一奇偶校验芯片200ta和第一CRC芯片200tb可以被称为第一ECC芯片,并且第二奇偶校验芯片200tc和第二CRC芯片200td可以被称为第二ECC芯片。术语x4 DIMM可以指代具有多个4比特宽度的存储器芯片的DIMM。
x4存储器芯片200a~200k以及200ta~200td中的每一个的输入/输出宽度为4个比特。当存储器芯片200a~200k以及200ta~200td中的每一个输出数据时,可以通过四个DQ(数据输入/输出)焊盘DQ0~DQ3同时输出4比特数据。可以分别从存储器芯片200a~200k以及200ta~200td中的每一个同时输出4比特数据。
存储器芯片200a~200k以及200ta~200td可以执行突发操作。突发操作可以指通过从自存储器控制器50接收的初始地址开始顺序地减少或增加地址来读取或写入大量数据的操作。用于执行突发操作的基本单位可以被称为突发长度(BL)。
图4示出了根据示例性实施例的与图1的存储器系统中的预定突发长度相对应的用户数据集。
参照图4,数据芯片200a~200k和奇偶校验芯片200ta~200td中的每一个可以执行突发操作。这里,突发操作是指通过顺序地增加或减少由存储器控制器50提供的初始地址来写入或读取大量数据的操作。突发操作的基本单位可以被称为突发长度BL。参照图4,BL可以为8。在突发操作中,数据芯片200a~200k中的每一个的DQ焊盘DQ0~DQ3可以输入和输出拍号BL0~BL7的八个数据比特。在突发长度为8的突发操作中,用拍号BL0来标识第一数据传输;用拍号BL1来标识下一个数据传输;并且用拍号BL7来标识最后一个数据传输。例如,在x4 DIMM的情况下,突发操作期间针对每个单位任务输入和输出的数据可以为8(BL)x4(数据总线宽度)x20(芯片的数量)个比特,总计为具有640个比特的数据集。例如,具有640个比特的数据集包括具有512个比特的用户数据集。
具有640个比特的数据集可以填充存储器控制器50的一个高速缓存线。可以将执行纠错的单位定义为一个码字。例如,在x4 DIMM的纠错模式下,可以针对高速缓存线的一半执行每个纠错。因此,用于填充一个高速缓存线的突发操作的基本单位可以包括两个码字。存储器控制器50的ECC引擎100可以针对第一码字CW1和第二码字CW2中的每一个的320比特数据执行纠错算法。
在图4中,向/从数据芯片200a输入/输出的数据对应于用户数据集DQ_BL,向/从数据芯片200a~200k输入/输出的总体数据对应于用户数据集SDQ,向/从第一奇偶校验芯片200ta输入/输出的数据对应于第一子奇偶校验数据PRT1,向/从第二奇偶校验芯片200tc输入/输出的数据对应于第二子奇偶校验数据,向/从第一CRC芯片200tb输入/输出的数据对应于第一子CRC数据,并且向/从第二CRC芯片200td输入/输出的数据对应于第二子CRC数据CRCd2。
图5是示出了根据示例性实施例的图2中的ECC引擎的示例的框图。
参照图5,ECC引擎100包括ECC编码器110、ECC解码器140和存储器175。
存储器175连接到ECC编码器110和ECC解码器140,并且可以存储多个ECC EEC1~ECCq。这里,q为大于1的整数。存储器175可以响应于配置控制信号CNFC而向ECC编码器110和ECC解码器140提供多个ECC EEC1~ECCq中的选择的ECC。
ECC编码器110可以通过使用选择的ECC对用户数据集SDQ执行编码(纠错算法编码)以生成CRC数据CRCd和奇偶校验数据PRT,并且可以提供包括用户数据集SDQ、CRC数据CRCd和奇偶校验数据PRT在内的第一消息MSG1。
ECC解码器140可以通过使用选择的ECC对包括用户数据集SDQ、CRC数据CRCd和奇偶校验数据PRT在内的第二消息MSG2执行纠错算法解码,以输出用户数据集SDQ或通过纠正用户数据集SDQ中的至少一个错误比特来输出纠正后的用户数据集C_SDQ。
图6是根据示例性实施例的图5的ECC引擎中的ECC编码器的示例。
参照图6,ECC编码器110可以包括CRC生成器120、奇偶校验生成器125和数据重排序逻辑电路130。
CRC生成器120基于用户数据集SDQ来生成CRC数据CRCd,并且将CRC数据CRCd提供给奇偶校验生成器125。奇偶校验生成器125连接到存储器175,并且通过使用选择的ECC对用户数据集SDQ和CRC数据CRCd执行ECC编码来生成奇偶校验数据PRT。奇偶校验生成器125可以响应于配置控制信号CNFC而增加奇偶校验数据PRT中的比特的数量。可以参照图16和图17详细地描述奇偶校验数据PRT中的比特的数量的增加。
响应于配置控制信号CNFC,数据重排序逻辑电路130重新布置用户数据集SDQ、CRC数据CRCd和奇偶校验数据PRT,使得减少包括错误比特的符号的数量以生成第一消息MSG,并且将第一消息MSG1提供给存储器模块180。在示例性实施例中,根据配置控制信号CNFC,数据重排序逻辑电路130可以在第一符号构造模式或第二符号构造模式下自适应地重新布置用户数据集SDQ、CRC数据CRCd和奇偶校验数据PRT。
如果配置控制信号CNFC指示软故障,即第一通道和第二通道中的存储器芯片中的至少一些中包括错误比特的符号的数量等于或小于参考数量,则奇偶校验生成器125可以通过使用多个ECC EEC1~ECCq中的第一ECC来生成第一奇偶校验数据。如果配置控制信号CNFC指示硬故障(即,第一通道和第二通道中的存储器芯片中的至少一些中包括错误比特的符号的数量大于参考数量),则奇偶校验生成器125可以通过使用多个ECC EEC1~ECCq中的第二ECC来生成第二奇偶校验数据。第二奇偶校验数据中的比特的数量大于第一奇偶校验数据中的比特的数量。
图7是根据示例性实施例的图5的ECC引擎中的ECC解码器的示例。
参照图7,ECC解码器140包括数据分离逻辑电路145、CRC生成器147、第一比较器150、检测器155、第二比较器160、校验比特生成器165和数据纠正器170。
数据分离逻辑电路145从存储器模块180接收第二消息MSG2,将第二消息MSG2分离为用户数据集SDQ、CRC数据CRCd和奇偶校验数据PRT,将CRC数据CRCd提供给第一比较器150,将用户数据集SDQ提供给CRC生成器147和校验比特生成器165,并且将奇偶校验数据PRT提供给第二比较器160。
CRC生成器147基于用户数据集SDQ来生成参考CRC数据CRCdr,以将参考CRC数据CRCdr提供给第一比较器150。第一比较器150将CRC数据CRCd与参考CRC数据CRCdr逐比特地进行比较以生成第一校验子(syndrome)SDR1。
检测器155基于第一校验子SDR1生成指示用户数据集是否包括至少一个错误比特的检测信号DS。
校验比特生成器165连接到图5的存储器175,并且通过使用选择的ECC对用户数据集SDQ和CRC数据CRCd执行ECC解码操作来生成校验比特CHB。第二比较器160将奇偶校验数据PRT与校验比特CHB逐比特地进行比较,以生成第二校验子SDR2,该第二校验子SDR2指示在用户数据集SDQ中是否出现错误比特以及错误比特的位置。
数据纠正器170接收用户数据集SDQ,并且通过基于第二校验子SDR2和检测信号DS将数据集的误差比特反转来基于第二校验子SDR2和检测信号DS对用户数据集SDQ中的至少一个误差比特进行纠正。数据纠正器170可以输出用户数据集SDQ或纠正后的用户数据集C_SDQ。
图8是示出了根据示例性实施例的图1中的存储器模块中的数据芯片之一的框图。
参照图8,数据芯片200a可以包括控制逻辑电路210、地址寄存器220、存储体控制逻辑电路230、行地址复用器240、列地址锁存器250、行解码器260、列解码器270、存储器单元阵列300、读出放大器单元285、输入/输出(I/O)选通电路290、数据输入/输出(I/O)缓冲器295和刷新计数器245。
存储器单元阵列300可以包括第一存储体阵列至第八存储体阵列310、320、330、340、350、360、370和380。
行解码器260可以包括分别耦接到第一存储体阵列310至第八存储体阵列380的第一存储体行解码器260a至第八存储体行解码器260h,列解码器270可以包括分别耦接到第一存储体阵列310至第八存储体阵列380的第一存储体列解码器270a至第八存储体列解码器270h,并且读出放大器单元285可以包括分别耦接到第一存储体阵列310至第八存储体阵列380的第一存储体读出放大器285a至第八存储体读出放大器285h。
第一存储体阵列310至第八存储体阵列380、第一存储体行解码器260a至第八存储体行解码器260h、第一存储体列解码器270a至第八存储体列解码器270h以及第一存储体读出放大器285a至第八存储体读出放大器285h可以形成第一存储体至第八存储体。第一存储体阵列310至第八存储体阵列380中的每一个可以包括多个字线WL、多个位线BTL以及形成在字线WL与位线BTL的相交处的多个存储器单元MC。
尽管数据芯片200a在图8中被示为包括八个存储体,但是数据芯片200a可以包括任何数量的存储体。
地址寄存器220可以从存储器控制器50接收包括存储体地址BANK_ADDR、行地址ROW_ADDR和列地址COL_ADDR的地址ADDR。地址寄存器220可以将接收到的存储体地址BANK_ADDR提供给存储体控制逻辑电路230,可以将接收到的行地址ROW_ADDR提供给行地址复用器240,并且可以将接收到的列地址COL_ADDR提供给列地址锁存器250。
存储体控制逻辑电路230可以响应于存储体地址BANK_ADDR而生成存储体控制信号。可以响应于存储体控制信号而激活第一存储体行解码器260a至第八存储体行解码器260h中与存储体地址BANK_ADDR相对应的存储体行解码器,并且可以响应于存储体控制信号而激活第一存储体列解码器270a至第八存储体列解码器270h中与存储体地址BANK_ADDR相对应的存储体列解码器。
行地址复用器240可以从地址寄存器220接收行地址ROW_ADDR,并且可以从刷新计数器245接收刷新行地址REF_ADDR。行地址复用器240可以选择性地输出行地址ROW_ADDR或刷新行地址REF_ADDR作为行地址RA。从行地址复用器240输出的行地址RA可以应用于第一存储体行解码器260a至第八存储体行解码器260h。
第一存储体行解码器260a至第八存储体行解码器260h中的被激活的存储体行解码器可以对从行地址复用器240输出的行地址RA进行解码,并且可以激活与该行地址RA相对应的字线WL。例如,被激活的存储体行解码器可以生成字线驱动电压,并且可以将字线驱动电压施加到与行地址RA相对应的字线WL。
列地址锁存器250可以从地址寄存器220接收列地址COL_ADDR,并且可以临时存储接收到的列地址COL_ADDR。在本发明构思的示例性实施例中,在突发模式下,列地址锁存器250可以生成从接收到的列地址COL_ADDR递增的列地址。列地址锁存器250可以将临时存储或生成的列地址应用于第一存储体列解码器270a至第八存储体列解码器270h。
第一存储体列解码器270a至第八存储体列解码器270h中的被激活的存储体列解码器可以对从列地址锁存器250输出的列地址COL_ADDR进行解码,并且可以控制I/O选通电路290输出与列地址COL_ADDR相对应的数据。
I/O选通电路290可以包括用于对输入/输出数据进行选通的电路。I/O选通电路290还可以包括用于存储从第一存储体阵列310至第八存储体阵列380输出的数据的读取数据锁存器、以及用于将数据写入到第一存储体阵列310至第八存储体阵列380的写入控制设备。
要从第一存储体阵列310至第八存储体阵列380之一读取的数据可以被耦接到要从其读取数据的一个存储体阵列的读出放大器感测,并且可以存储在读取数据锁存器中。
可以经由数据I/O缓冲器295将存储在读取数据锁存器中的数据提供给存储器控制器50。要写入第一存储体阵列310至第八存储体阵列380之一中的数据集DQ_BL可以从存储器控制器50提供给数据I/O缓冲器295。数据I/O缓冲器295可以将数据集DQ_BL提供给I/O选通电路290。
控制逻辑电路210可以控制存储器芯片200a的操作。例如,控制逻辑电路210可以生成用于使存储器芯片200a执行写入操作或读取操作的控制信号。控制逻辑电路210可以包括:命令解码器211以及模式寄存器212,其中命令解码器211对从存储器控制器50接收的命令CMD进行解码,并且模式寄存器212设置数据芯片200a的操作模式。在示例性实施例中,映射信息和错误趋势信息可以存储在模式寄存器212中,并且可以响应于来自存储器控制器50的模式寄存器读取命令将存储在模式寄存器212中的信息提供给存储器控制器50。
ECC芯片200ta~200td中的每一个可以具有与数据芯片200a基本相同的配置。
图9示出了根据示例性实施例的图8的数据芯片的第一存储体阵列。
参照图9,第一存储体阵列310包括多个字线WL1~WL2m(其中m为大于2的自然数)、多个位线BTL1~BTL2n(其中n为大于2的自然数)、以及设置在字线WL1~WL2m与位线BTL1~BTL2n之间的相交处附近的多个存储器单元MC。在本发明构思的示例性实施例中,多个存储器单元MC中的每一个可以包括DRAM单元结构。连接到多个存储器单元MC的多个字线WL1~WL2m可以被称为第一存储体阵列310的行,连接到多个存储器单元MC的多个位线BTL1~BTL2n可以被称为第一存储体阵列310的列。
图10是示出了根据示例性实施例的在其中执行纠错算法的数据结构的示图。
参照图4和图10,存储器模块180a可以包括一个存储器级,并且可以是包括20个x4存储器芯片的x4 DIMM。存储器模块180a可以包括用于存储奇偶校验数据的两个奇偶校验芯片PD1和PD2、以及用于存储CRC数据的两个CRC芯片CD1和CD2。
存储器模块180a可以包括用于存储数据的16个×4存储器芯片DD_1至DD_16。图10示出了针对每个单位突发操作从被配置为x4 ECCDIMM的存储器模块180a输出的数据。
BL可以为8。总共640比特的数据可以填充存储器控制器50的一个高速缓存线并构造两个码字CW1和CW2。存储器控制器50可以基于码字来执行纠错算法。
图11是示出了根据示例性实施例的执行纠错算法的方法的流程图。
可以参照图4和图10来描述图11。将在错误已出现在与图10的第一码字CW1相对应的第十一数据芯片DD_11中的假设下描述检测和纠正错误比特的方法。
可以首先针对码字单元执行CRC校验(S120)。当针对整个第一码字CW1执行CRC校验时,可以确定CRC校验的通过或失败(S122)。当CRC校验通过时,因为第一码字CW1中没有错误,所以可以终止纠错算法。
当CRC校验失败(S122)时,在第一码字CW1中存在错误,因此可以执行下一步以在存储器模块180a中定位错误比特。
因此,当CRC校验失败时,可以执行奇偶校验的校验(S130)。参照图10,为了便于描述,可以将第一码字CW1中的通过4比特数据总线宽度分组的16比特数据称为子字。
第一码字CW1可以包括总共20个子字。可以对包括在20个子字之一中的数据中的与同一位置相对应的数据执行一次奇偶校验的校验,并且可以执行总共16次奇偶校验的校验。尽管奇偶校验的校验可以是偶数奇偶校验的校验,但是本发明构思不限于此,并且奇偶校验的校验也可以是奇数奇偶校验的校验。通过执行奇偶校验的校验,可以确定错误比特在子字中的位置。参照图10,在一个子字内的位置(2、2)、(2、3)、(3、3)、(3、4)和(4、3)处存在的比特(阴影部分)处存在错误。对的第一元素表示输入/输出焊盘的I/O标识符,而对的第二元素表示拍号。例如,位置(2、2)表示第二I/O焊盘和第二拍的比特是错误比特。当在子字中定位错误比特之后,可以执行下一操作以找出具有错误比特的设备。
首先,可以针对与CRC芯片CD1和CD2相对应的子字尝试纠正(S132)。例如,可以基于CRC芯片CD1和CD2包括子字中的错误比特的假设对CRC芯片CD1和CD2执行纠正。接下来,可以执行CRC校验(S134)。可以确定CRC校验的通过或失败(S140)。当CRC校验通过时,可以确定CRC芯片CD1和CD2是具有错误的设备,并且可以对CRC芯片CD1和CD2执行纠错(S160)。当CRC校验失败时,可以确定CRC芯片CD1和CD2不是具有错误的设备,并且过程可以进行到下一操作。
接下来,可以针对与DD_1数据芯片相对应的子字尝试纠正(S142)。例如,可以基于DD_1数据芯片包括子字中的错误比特的假设来对DD_1数据芯片执行纠正。接下来,可以执行CRC校验(S144)。然后,可以确定CRC校验的通过和失败(S150)。当CRC校验通过时,可以确定DD_1数据芯片是具有错误的设备,并且可以对DD_1数据芯片执行纠错(S154)。
当CRC校验失败时,可以确定DD_1数据芯片不是具有子字中的错误比特的设备,并且过程可以进行到下一操作。接下来,由于期望针对与DD_2数据芯片相对应的子字尝试纠正,因此可以将1与序列因子i相加(S152)。接下来,可以针对与DD_2数据芯片相对应的子字尝试纠正(S142),并且此后可以以相同的方式重复操作,直到CRC校验通过为止。
结果是,可以确定在通过CRC的设备中存在错误,并且可以针对该设备执行最终纠错(S154)。因此,可以完成检测和纠正存在于设备中的错误的纠错算法。本发明构思不限于此。在示例实施例中,还可以在纠错模式下执行其他纠错算法。因此,纠错算法不限于图11中所描述的算法。在下文中,假设存储器控制器使用具有8比特符号的单符号纠正码对x4DRAM芯片提供Chipkill纠正。通过单符号纠正,可以纠正单符号错误。
图12示出了包括两个子字的数据集,这两个子字被输入到图4的存储器模块中的一个数据芯片/从该数据芯片输出。
参照图12,以子字(例如,在突发长度BL为8的突发操作中从x4 DRAM芯片获得的32个数据比特)为单位将数据集DQ_BLj输入到一个数据芯片/从一个数据芯片输出数据集DQ_BLj。在数据芯片的突发操作中,从存储器单元提供8比特符号。例如,x4芯片可以在突发长度为8的突发操作中经由输入/输出焊盘DQ0至DQ3在多个周期内逐比特地传输数据集DQ_BLj。在图12中,输入/输出焊盘DQ0至DQ3中的每一个可以被映射到四个符号SB11至SB14中的相应符号。假设输入/输出焊盘DQ0至DQ3中的每一个包括位于拍号BL6和BL7中的两个比特错误。
当沿第一映射方向MPD1构造8比特符号时(即,在第一符号构造模式下),符号SB11、SB12、SB13和SB14中的每一个被映射到输入/输出(I/O)焊盘DQ0~DQ3中的相应数据I/O焊盘,并且在符号SB11、SB12、SB13和SB14中的每一个中包括故障比特。因此,存储器控制器50中的ECC引擎100不能对数据集DQ_BLj中的错误进行纠正。第一映射方向MPD1是使符号SB11、SB12、SB13和SB14中的每一个对应于数据I/O焊盘DQ0~DQ3中的相应数据I/O焊盘的方向。
图13示出了包括子字(例如,32比特)的数据集,当ECC引擎基于映射信息来构造码字时,该子字输入到图4的存储器模块中的一个数据芯片/从该数据芯片输出。为了便于描述,图13的数据集具有与图12的数据集相同的错误模式。
参照图13,以子字(例如,在突发长度BL为8的突发操作中从x4 DRAM芯片获得的32个数据比特)为单位将数据集DQ_BLj输入到一个数据芯片/从一个数据芯片输出数据集DQ_BLj。在示例性实施例中,数据集DQ_BLj可以被映射到四个符号SB21至SB24。可以将针对四个数据I/O焊盘DQ0至DQ3中的每一个的两个连续的数据拍(例如,拍号BL6和BL7、拍号BL4和BL5、拍号BL2和BL3以及拍号BL0和BL1)分组在同一符号中。例如,第一符号SB21可以包括在突发操作中经由四个数据I/O焊盘DQ0至DQ3输出的与拍号BL6和BL7的数据相对应的两个连续的数据比特。第二符号SB22可以包括在突发操作中经由四个数据I/O焊盘DQ0至DQ3输出的与拍号BL4和BL5的数据相对应的两个连续的数据比特。第三符号SB23可以包括在突发操作中经由四个数据I/O焊盘DQ0至DQ3输出的与拍号BL2和BL3的数据相对应的两个连续的数据比特。第四符号SB24可以包括在突发操作中经由四个数据I/O焊盘DQ0至DQ3输出的与拍号BL0和BL2的数据相对应的两个连续的数据比特。根据本发明的映射,可以将错误比特(即,故障比特)分组在单个符号(例如,SB21)中,使得其他符号(例如,SB22至SB24)不具有错误比特。
如图13中所示,当数据集DQ_BLj沿第二映射方向MPD2(即,在第二符号映射模式下)被映射到四个符号SB21至SB24时,数据I/O焊盘DQ0~DQ3中的每一个的两个错误比特可以被映射到四个符号SB21、SB22、SB23和SB24中的同一符号SB21。因此,存储器控制器50中的ECC引擎100可以使用单符号纠正码来纠正数据集DQ_BLj中的8个比特错误。
因此,由于存储器控制器50的ECC引擎100基于映射信息MPIN或者映射信息MPIN和错误趋势信息ETIN来构造了码字,使得减少了包括错误比特的符号的数量(例如,从图12的四个符号错误减少到图13的一个符号错误),因此ECC引擎100可以提高纠错能力。在示例性实施例中,如果子字线(例如,x4芯片)的错误比特对应于从数据I/O焊盘DQ0至DQ3中的每一个获得的数据比特的一部分,则ECC引擎100基于映射信息MPIN来构造码字,使得减少了包括错误比特的符号的数量。
图14是示出了根据示例性实施例的图1的存储器系统中的存储器模块的示例的框图。
参照图14,存储器模块180a包括设置(或者,安装)在模块板181上的注册时钟驱动器(RCD)410、多个第一数据芯片201a~201h、第一奇偶校验芯片200ta、第一CRC芯片200tb、多个第二数据芯片202a~202h、第二奇偶校验芯片200tc、第二CRC芯片200td、多个数据缓冲器441~450和451~460、SPD芯片190和电源管理集成电路(PMIC)480。第一数据芯片201a~201h对应于第一数据芯片至第八数据芯片,并且第二数据芯片202a~202h对应于第九数据芯片至第十六数据芯片。
第一数据芯片201a~201h、第一奇偶校验芯片200ta、第一CRC芯片200tb、第二数据芯片202a~202h、第二奇偶校验芯片200tc和第二CRC芯片200td中的每一个可以被称为存储器设备。另外,第一奇偶校验芯片200ta和第一CRC芯片200tb可以被称为第一ECC芯片,并且第二奇偶校验芯片200tc和第二CRC芯片200td可以被称为第二ECC芯片。
作为印刷电路板的模块板181可以在沿第一方向D1延伸的第一边缘部分183和第二边缘部分185之间沿垂直于第一方向D1的第二方向D2延伸。
RCD 410可以将来自存储器控制器50的控制信号传递到存储器设备和PMIC 480。RCD 410可以从存储器控制器50接收命令CMD、地址ADDR和时钟信号CLK。
响应于接收到的信号,RCD 410可以缓冲控制信号并将控制信号传递到存储器设备,使得与数据选通信号DQS对准的数据信号DT的数据被写入到存储器设备,或者使得存储在存储器设备中的数据作为与数据选通信号DQS对准的数据信号DT输出。例如,RCD 410可以将来自存储器控制器50的地址ADDR、命令CMD和时钟信号CLK发送到存储器设备。
SPD芯片190可以是可编程只读存储器(例如,EEPROM)。SPD芯片190可以包括存储器模块180a的初始信息或设备信息DI。在示例实施例中,SPD芯片190可以包括存储器模块180a的诸如模块形式、模块配置、存储容量、模块类型、执行环境等的初始信息或设备信息DI。设备信息DI可以包括映射信息MPIN和错误趋势信息ETIN。
当包括存储器模块180a的存储器系统20被启动时,存储器控制器50可以从SPD芯片190读取设备信息DI,并且可以基于设备信息DI来识别存储器模块180a。存储器控制器50可以基于来自SPD芯片190的设备信息DI来控制存储器模块180a。例如,ECC引擎100可以基于包括在设备信息DI中的映射信息MPIN和错误趋势信息ETIN来构造码字,使得用户数据集中包括错误比特的符号的数量等于或小于参考数量,该参考数量是具有错误的可纠正符号的最大数量。
PMIC 480接收输入电压VIN,基于输入电压VIN来生成电源电压VDD,并且将电源电压VDD提供给存储器设备。存储器设备基于电源电压VDD进行操作。
RCD 410可以设置在模块板181的中央。第一数据芯片201a~201h、第一奇偶校验芯片200ta和第一CRC芯片200tb可以布置在RCD410与第一边缘部分183之间,并且第二数据芯片202a~202h、第二奇偶校验芯片200tc和第二CRC芯片200td可以布置在RCD 410与第二边缘部分185之间。
第一数据芯片201a~201h中的每一个可以通过数据传输线耦接到数据缓冲器441~448中的对应数据缓冲器,以接收/发送数据信号DT和数据选通信号DQS。第一奇偶校验芯片200ta可以耦接到数据缓冲器449,以接收/发送第一子奇偶校验数据PRT1。第一CRC芯片200tb可以耦接到数据缓冲器450,以接收/发送第一子CRC数据CRCd1。第二数据芯片202a~202h中的每一个可以通过数据传输线耦接到数据缓冲器451~458中的对应数据缓冲器,以接收/发送数据信号DT和数据选通信号DQS。第二奇偶校验芯片200tc可以耦接到数据缓冲器459,以接收/发送第二子奇偶校验数据PRT2。第二CRC芯片200td可以耦接到数据缓冲器460,以接收/发送第二子CRC数据CRCd2。
RCD 410可以通过命令/地址传输线431将命令/地址信号提供给第一数据芯片201a~201h、第一奇偶校验芯片200ta和第一CRC芯片200tb,并且可以通过命令/地址传输线433将命令/地址信号提供给第二数据芯片202a~202h、第二奇偶校验芯片200tc和第二CRC芯片200td。
SPD芯片190被设置为与RCD 410相邻,并且PMIC 480可以设置在第二CRC芯片200td与第二边缘部分185之间。
图15示出了根据示例性实施例的在图14的存储器模块中发生硬故障。
参照图14和图15,第一数据芯片201a~201h、第一奇偶校验芯片200ta和第一CRC芯片200tb可以构成存储器模块180a的第一通道CH_1,并且第二数据芯片202a~202h、第二奇偶校验芯片200tc和第二CRC芯片200td可以构成存储器模块180a的第二通道CH_2。
SPD芯片190连接到RCD 410,并且SPD芯片190在如参照图3A所描述的第三表199中存储硬故障信息HFI1和HFI2,并且向存储器控制器50提供硬故障信息HFI1和HFI2作为设备信息DI。硬故障信息HFI1指示第一通道CH_1是否包括发生了不可纠正的硬故障的存储器芯片,硬故障信息HFI2指示第二通道CH_2是否包括发生了不可纠正的硬故障的存储器芯片。在图14和图15中,假设在第一通道CH_1的数据芯片201b中发生了不可纠正的硬故障。
存储器控制器50中的ECC引擎100基于硬故障信息HFI1生成奇偶校验数据PRT2、PRT11和PRT12。例如,存储器控制器50中的ECC引擎100生成与第一通道CH_1的数据芯片201b相关联的奇偶校验数据,使得奇偶校验数据PRT11和奇偶校验数据PRT12中的奇偶校验比特的数量增加以纠正存储器设备201b中的错误,并且奇偶校验数据PRT11和奇偶校验数据PRT12被分别存储在第一奇偶校验芯片201ta和第二CRC芯片200td中。也就是说,第二CRC芯片200td存储与包括具有硬故障的存储器芯片的第一通道CH_1相关联的奇偶校验数据PRT12,而不是第二子CRC数据CRCd2。
存储器控制器50中的ECC引擎100可以使用硬故障信息HFI1和HFI2来纠正在其中发生软故障的数据芯片202b的数据。例如,在图15中,其中芯片202b具有软故障,并且硬故障信息HFI1指示第一通道包括具有软故障的存储器芯片,ECC引擎100针对在第二通道的芯片202b上发生的软故障生成奇偶校验数据PRT2并将奇偶校验数据PRT2存储在第二奇偶校验芯片200tc中。根据示例性实施例,在配置控制信号CNFC指示硬故障(即,在第一通道和第二通道中的存储器芯片中的至少一些中包括错误比特的符号的数量大于参考数量)的情况下,奇偶校验生成器125可以通过使用多个ECC EEC1~ECCq中的第二ECC来生成第二奇偶校验数据。否则,奇偶校验生成器125可以使用第一ECC来生成第一奇偶校验数据。(参见图5、图6以及图16和图17)。第二奇偶校验数据的比特的数量大于第一奇偶校验数据的比特的数量。
硬故障(错误)可以表示存储器单元损坏的情况。软故障(错误)可以表示存储器单元的硬件没有损坏、但是存储器单元的数据由于alpha粒子等而暂时转换(transition)的情况。可以通过备用存储器单元或纠错操作来纠正硬故障。可以通过纠错操作来纠正软故障。
图16和图17分别示出了图6的ECC编码器中的奇偶校验生成器的操作。
参照图16,奇偶校验生成器125响应于配置控制信号CNFC而使用被表示为第一生成矩阵H1的第一ECC ECC1对用户数据集SDQ和CRC数据CRCd执行ECC编码,以生成第一子奇偶校验数据PRT1。在图16中,假设第一通道的存储器芯片具有软故障。在第二通道的存储器芯片具有软故障的情况下,奇偶校验生成器125可以生成如图15中所示的第二子奇偶校验数据PRT2。
参照图17,奇偶校验生成器125响应于配置控制信号CNFC而使用被表示为第一生成矩阵H1和第二生成矩阵H2的第二ECC ECC2对用户数据集SDQ和CRC数据CRCd执行ECC编码,以生成奇偶校验数据PRT11和PRT12。奇偶校验数据PRT11对应于第一生成矩阵H1,并且奇偶校验数据PRT12对应于第二生成矩阵H2,因此奇偶校验数据PRT11和PRT12中的比特的数量大于第一子奇偶校验数据PRT1中的比特的数量。在图17中,假设第一通道的存储器芯片具有如图15中所示的硬故障。在第二通道的存储器芯片具有硬故障的情况下,奇偶校验生成器125可以生成奇偶校验数据PRT21和PRT22。
图18示出了根据示例性实施例的图1的存储器系统中的存储器模块的示例。
参照图18,存储器模块180b可以包括多个第一数据芯片201a~201h、包括第一奇偶校验芯片200ta的第一ECC芯片、第一CRC芯片200tb、多个第二数据芯片202a~202h、包括第二奇偶校验芯片200tc的第二ECC芯片、第三ECC芯片200td、SPD芯片190和RCD 410。
构成第一通道CH_1的第一数据芯片201a~201h、第一奇偶校验芯片200ta和第一CRC芯片200tb通过第一传输线TL11连接到RCD410,构成第二通道CH_2的第二数据芯片202a~202h和第二奇偶校验芯片200tc通过第二传输线TL12连接到RCD 410,并且第三ECC芯片200td通过第三传输线TL13连接到RCD 410。
SPD芯片190向存储器控制器50提供硬故障信息HFI1和HFI2。RCD 410基于存储在SPD芯片190中的设备信息DI选择性地将第三ECC芯片200td并入第一通道CH_1和第二通道CH_2之一中,并且控制第一通道CH_1和第二通道CH_2,使得第一通道CH_1和第二通道CH_2彼此独立地进行操作,其中该设备信息DI指示第一通道CH_1和第二通道CH_2中的每一个是否包括在其中发生了不可纠正的硬故障的存储器芯片。
图19示出了根据示例性实施例的图1的存储器系统中的存储器模块的示例。
参照图19,存储器模块180c可以包括多个第一数据芯片201a~201h、包括第一奇偶校验芯片200ta的第一ECC芯片、第一CRC芯片200tb、多个第二数据芯片202a~202h、包括第二奇偶校验芯片200tc的第二ECC芯片、第三ECC芯片200td、SPD芯片190和RCD 410。
构成第一通道CH_1的第一数据芯片201a~201h、第一奇偶校验芯片200ta和第一CRC芯片200tb通过第一传输线TL21连接到RCD410,构成第二通道CH_2的第二数据芯片202a~202h和第二奇偶校验芯片200tc通过第二传输线TL22连接到RCD 410,并且第三ECC芯片200td通过第一传输线TL21连接到RCD 410。
SPD芯片190向存储器控制器50提供硬故障信息HFI1和HFI2。由于在第一通道CH_1中的数据芯片201b中发生不可纠正的硬故障,因此RCD 410在存储器控制器50的控制下将第三ECC芯片200td并入第一通道CH_1中,并且控制第一通道CH_1和第二通道CH_2,使得第一通道CH_1和第二通道CH_2彼此独立地进行操作。
图20是示出了根据示例性实施例的图1的存储器系统的突发操作的示图。
参照图20,存储器模块180d可以包括一个存储器级,并且一个存储器级可以包括多个x8存储器芯片200a~200h、200ta和200tb。
存储器模块180d可以包括存储奇偶校验数据的存储器芯片200ta和存储CRC数据的存储器芯片200tb。例如,当存储器模块180d是总的总线宽度为80个比特的x8 DIIMM时,存储器模块180a的存储器芯片总数为10。例如,存储器模块180d可以包括8个x8数据芯片200a~200h、第一奇偶校验芯片200ta和第一CRC芯片200tb。
x8存储器芯片200a~200h、200ta和200tb中的每一个的数据总线宽度为8个比特。当存储器芯片200a~200h、200ta和200tb中的每一个输出数据时,可以通过八个DQ(数据输入/输出)焊盘DQ0~DQ7同时输出8比特数据。可以从存储器芯片200a~200h、200ta和200tb中的每一个同时输出8比特数据。
存储器芯片200a~200h、200ta和200tb中的每一个的DQ焊盘DQ0~DQ7可以输入和输出八条数据BL0~BL7作为突发操作的基本单位。例如,在x8 DIMM的情况下,突发操作期间针对每个单位任务输入和输出的数据可以为与8(BL)x8(数据总线宽度)x10(芯片的数量)的值相对应的640个比特。
640比特的数据可以填充存储器控制器50的一个高速缓存线。可以将执行纠错的单位定义为一个码字。例如,在x8 DIMM的纠错模式下,可以对高速缓存线的一半执行每个纠错。因此,用于填充一个高速缓存线的突发操作的基本单位可以包括两个码字。存储器控制器50的ECC引擎100可以针对第一码字CW1和第二码字CW2中的每一个的320比特数据执行纠错算法。
图21是示出了根据示例性实施例的存储器控制器的操作的流程图。
参照图1至图7以及图10至图21,提供了一种操作存储器控制器50的方法,该存储器控制器50控制其上安装有多个存储器芯片的存储器模块180。根据该方法,存储器控制器50从存储器模块180接收映射信息MPIN,该映射信息MPIN指示用户数据集的一部分与多个存储器芯片中的每一个中的输入/输出焊盘之间的对应关系(S310)。存储器控制器50还接收错误趋势信息ETIN。用户数据集的这一部分可以对应于在突发操作中从多个存储器芯片中的每一个输入或输出的数据量。
存储器控制器50的ECC引擎100基于映射信息MPIN或者映射信息MPIN和错误趋势信息ETIN来构造码字,使得存储在存储器芯片中的用户数据集中包括错误比特的符号的数量等于或小于参考数量(S320)。ECC引擎100将码字发送到存储器模块180(S330)。
图22是示出了根据示例性实施例的存储器系统的操作的流程图。
参照图1至图20以及图22,提供了一种操作存储器系统20的方法,该存储器系统20包括其上安装有多个存储器芯片的存储器模块180和用于控制该存储器模块180的存储器控制器50。
根据该方法,存储器模块180在存储器模块180的上电序列期间将映射信息MPIN或者映射信息MPIN和错误趋势信息ETIN发送到存储器控制器50(S410)。错误趋势信息ETIN指示在多个存储器芯片中的每一个中重复出现的错误趋势或错误模式。
存储器控制器50的ECC引擎100基于映射信息MPIN或者映射信息MPIN和错误趋势信息ETIN来构造码字,使得存储在存储器芯片中的用户数据集中包括错误比特的符号的数量等于或小于参考数量(S420)。
ECC引擎100将码字发送到存储器模块180,并且存储器芯片存储码字(S430)。
存储器控制器50从存储器芯片读取码字(S440)。ECC引擎100以存储器芯片为单位纠正读取的码字的错误(S450)。
图23是示出了根据示例性实施例的具有四级存储器模块的存储器系统的框图。
参照图23,存储器系统700可以包括存储器控制器710以及两个双级存储器模块720和730。
存储器控制器710可以控制存储器模块720和/或730以执行从处理器或主机提供的命令。存储器控制器710可以被实现在处理器或主机中,或者可以用应用处理器或片上系统(SoC)来实现。
为了信号完整性,可以用存储器控制器710的总线740上的电阻器RTT来实现源端。电阻器RTT可以耦接到电源电压VDDQ。存储器控制器710可以包括用于将信号发送到至少一个或多个存储器模块720和730的发射机711、以及用于从至少一个或多个存储器模块720和730接收信号的接收机713。存储器控制器710可以包括ECC引擎715,并且ECC引擎715可以采用图5的ECC引擎100。
因此,ECC引擎715可以基于映射信息来构造码字,使得存储在存储器芯片中的用户数据集中包括错误比特的符号的数量等于或小于参考数量。因此,ECC引擎715可以提高纠错能力。
两个双级存储器模块720和730可以被称为第一存储器模块720和第二存储器模块730。第一存储器模块720和第二存储器模块730可以通过总线740耦接到存储器控制器710。第一存储器模块720和第二存储器模块730中的每一个可以对应于图14的存储器模块180a。第一存储器模块720可以包括两个存储器级RK1和RK2以及SPD芯片721,并且第二存储器模块730可以包括两个存储器级RK3和RK4以及SPD芯片731。
SPD芯片721存储与安装在第一存储器模块720上的存储器芯片相关联的映射信息和错误趋势信息,而SPD芯片731存储与安装在第二存储器模块730上的存储器芯片相关联的映射信息和错误趋势信息。ECC引擎715可以基于存储在SPD芯片721和SPD芯片731中的信息来单独地构造码字,并且可以将对应的码字发送到第一存储器模块720和第二存储器模块730。
第一存储器模块720和第二存储器模块730中的每一个可以包括多个数据芯片、第一ECC芯片和第二ECC芯片。
图24是示出了根据示例性实施例的包括存储器模块的移动系统的框图。
参照图24,移动系统900可以包括应用处理器910、连接模块920、存储器模块950、非易失性存储器设备940、用户接口930和电源970。应用处理器910可以包括存储器控制器(MCT)911,并且存储器控制器911可以采用诸如图5的ECC引擎100的ECC引擎。
应用处理器910可以执行诸如网络浏览器、游戏应用、视频播放器等的应用。连接模块920可以与外部设备执行有线或无线通信。
存储器模块(MM)950可以存储由应用处理器910处理的数据或作为工作存储器操作。存储器模块950可以包括多个半导体存储器设备(MD)951至95r(其中r为大于3的正整数)以及SPD芯片961。SPD芯片961可以包括与半导体存储器设备951至95r相关联的映射信息和错误趋势信息。
半导体存储器设备951至95r可以包括多个数据芯片、至少一个第一ECC芯片和至少一个第二ECC芯片。因此,存储器控制器911可以基于映射信息或者映射信息和错误趋势信息来构造码字,使得存储在存储器芯片中的用户数据集中包括错误比特的符号的数量等于或小于参考数量。因此,存储器控制器911可以提高纠错能力。
非易失性存储器设备940可以存储用于引导移动系统900的引导图像。用户接口930可以包括至少一个输入设备(例如,键区、触摸屏等)和至少一个输出设备(例如,扬声器、显示设备等)。电源970可以向移动系统900提供操作电压。
可以使用各种类型的封装来安装移动系统900或移动系统900的组件。
示例性实施例可以应用于各种系统,所述系统包括存储器模块和包括ECC引擎在内的存储器控制器。
虽然已参考本公开的示例性实施例具体地示出和描述了本公开,但本领域普通技术人员将理解的是,在不脱离由所附权利要求限定的本公开的精神和范围的情况下,可以在本文中进行形式和细节上的各种改变。
Claims (20)
1.一种被配置为控制存储器模块的存储器控制器,所述存储器模块包括多个存储器设备,所述多个存储器设备构成第一通道和第二通道,所述存储器控制器包括:
纠错码ECC引擎;以及
控制电路,被配置为控制所述ECC引擎,
其中,所述ECC引擎被配置为:
通过基于包括映射信息的设备信息根据经由所述多个存储器设备中的每一个的多个输入/输出焊盘接收的预定数量的数据比特自适应地构造多个符号中的每一个来生成包括所述多个符号的码字,以及
将所述码字发送到所述存储器模块,
其中,所述映射信息指示所述多个输入/输出焊盘中的每一个是被映射到所述多个符号中的同一符号还是所述多个符号中的不同符号,并且
其中,所述多个符号中的每一个对应于所述ECC引擎的纠错单位。
2.根据权利要求1所述的存储器控制器,还包括:
控制电路,被配置为根据所述映射信息来生成配置控制信号,
其中,经由所述多个存储器设备中的每一个的所述多个输入/输出焊盘接收的数据比特的所述预定数量由突发操作的突发长度确定,
其中,所述多个存储器设备被配置为在所述突发操作中接收具有多个数据比特的用户数据集,以及
其中,所述ECC引擎包括:
ECC编码器,被配置为响应于所述配置控制信号对所述用户数据集执行ECC编码操作,以生成包括第一码字和第二码字在内的第一消息;
ECC解码器,被配置为对包括第一已存储码字和第二已存储码字在内的第二消息执行ECC解码操作,以检测并纠正所述第二消息中的错误,所述第二消息是从所述存储器模块发送的;以及
存储器,被配置为存储多个ECC,所述存储器被配置为响应于所述配置控制信号向所述ECC编码器和所述ECC解码器提供所述多个ECC中的选择的ECC。
3.根据权利要求2所述的存储器控制器,
其中,所述ECC解码器包括:
循环冗余校验CRC生成器,被配置为基于所述用户数据集来生成CRC数据;
奇偶校验生成器,被配置为对所述用户数据集和所述CRC数据执行所述ECC编码操作,以基于所述选择的ECC来生成奇偶校验数据;以及
数据重排序逻辑器件,被配置为响应于所述配置控制信号而重新布置所述用户数据集、所述CRC数据和所述奇偶校验数据,使得包括错误比特的符号的数量减少。
4.根据权利要求3所述的存储器控制器,
其中,所述设备信息还包括与所述多个存储器设备在所述第一通道中的第一部分相关联的第一硬故障信息和与所述多个存储器设备在所述第二通道中的第二部分相关联的第二硬故障信息,
其中,如果在所述多个存储器设备的所述第一部分中包括错误比特的符号的数量大于参考数量,则所述第一硬故障信息指示硬故障,否则所述第一硬故障信息指示软故障,并且如果在所述多个存储器设备的所述第二部分中包括错误比特的符号的数量大于所述参考数量,则所述第二硬故障信息指示硬故障,否则所述第二硬故障信息指示软故障,并且
其中,所述奇偶校验生成器响应于所述第一硬故障信息指示软故障,基于所述多个ECC中的第一ECC生成第一奇偶校验数据,并且响应于所述第一硬故障信息指示硬故障,基于所述多个ECC中的第二ECC生成第二奇偶校验数据。
5.根据权利要求4所述的存储器控制器,
其中,所述第二奇偶校验数据中的比特的数量大于所述第一奇偶校验数据中的比特的数量。
6.根据权利要求2所述的存储器控制器,
其中,所述ECC解码器包括:
数据分离逻辑电路,被配置为将所述第二消息分离为所述用户数据集、循环冗余校验CRC数据和奇偶校验数据;
第一比较器,被配置为将所述CRC数据与参考CRC数据进行比较以生成第一校验子数据,所述参考CRC数据是基于所述用户数据集而生成的;
检测器,被配置为基于所述第一校验子数据生成指示所述用户数据集是否包括至少一个错误比特的检测信号;
第二比较器,被配置为将所述奇偶校验数据与校验比特进行比较以生成第二校验子数据,所述校验比特是基于所述用户数据集而生成的;以及
数据纠正器,被配置为基于所述第二校验子数据和所述检测信号来纠正所述用户数据集中的所述至少一个错误比特。
7.根据权利要求6所述的存储器控制器,
其中,所述数据纠正器被配置为以存储器设备为单位纠正包括所述用户数据集中的所述错误比特的符号。
8.根据权利要求1所述的存储器控制器,
其中,所述设备信息还包括与存储器设备相关联的硬故障信息,
其中,所述ECC引擎响应于所述硬故障信息指示在所述多个存储器设备中的至少一个中包括至少一个错误比特的符号的数量大于参考数量,增加所述码字中的错误检测/纠正比特的数量。
9.一种存储器系统,包括:
第一存储器模块,包括构成第一通道和第二通道的多个存储器设备以及存储第一映射信息作为设备信息的串行存在检测SPD设备;以及
存储器控制器,被配置为控制所述第一存储器模块,
其中,所述存储器控制器包括:
纠错码ECC引擎;以及
控制电路,被配置为控制所述ECC引擎,
其中,所述ECC引擎被配置为:
通过基于所述第一映射信息根据经由所述多个存储器设备中的每一个的多个输入/输出焊盘接收的预定数量的数据比特自适应地构造多个符号中的每一个来生成包括所述多个符号的码字,以及
将所述码字发送到所述第一存储器模块,
其中,所述第一映射信息指示所述多个输入/输出焊盘中的每一个是映射到所述多个符号中的同一符号还是映射到所述多个符号中的不同符号,并且
其中,所述多个符号中的每一个对应于所述ECC引擎的纠错单位。
10.根据权利要求9所述的存储器系统,
其中,所述控制电路被配置为根据所述第一映射信息来生成配置控制信号,
其中,经由所述多个存储器设备中的每一个的所述多个输入/输出焊盘接收的数据比特的所述预定数量由突发操作的突发长度确定,
其中,所述多个存储器设备被配置为在所述突发操作中接收具有多个数据比特的用户数据集,并且
其中,所述ECC引擎包括:
FCC编码器,被配置为响应于所述配置控制信号对所述用户数据集执行ECC编码操作,以生成包括第一码字和第二码字在内的第一消息;
ECC解码器,被配置为对包括第一码字和第二码字在内的第二消息执行ECC解码操作,以检测并纠正所述第二消息中的错误,所述第二消息是从所述第一存储器模块发送的;以及
存储器,被配置为存储多个ECC,所述存储器被配置为响应于所述配置控制信号,向所述ECC编码器和所述ECC解码器提供所述多个ECC中的选择的ECC。
11.根据权利要求10所述的存储器系统,
其中,所述ECC解码器包括:
循环冗余校验CRC生成器,被配置为基于所述用户数据集来生成CRC数据;
奇偶校验生成器,被配置为对所述用户数据集和所述CRC数据执行ECC编码操作,以基于所述选择的ECC来生成奇偶校验数据;以及
重排序逻辑电路,被配置为响应于所述配置控制信号而重新布置所述用户数据集、所述CRC数据和所述奇偶校验数据,使得包括错误比特的符号的数量减少。
12.根据权利要求9所述的存储器系统,其中,
所述第一通道包括第一数据设备至第八数据设备以及第一ECC设备和第二ECC设备,
所述第二通道包括第九数据设备至第十六数据设备以及第二ECC设备和第三ECC设备,
所述第一通道和所述第二通道彼此独立地进行操作,并且
所述多个存储器设备中的每一个被配置为具有4比特输入/输出宽度。
13.根据权利要求12所述的存储器系统,
其中,所述ECC引擎被配置为在上电序列期间从所述第一存储器模块接收所述第一映射信息,并且
其中,所述多个存储器设备中的每一个是动态随机存取存储器DRAM。
14.根据权利要求9所述的存储器系统,还包括:
第二存储器模块,电连接到所述存储器控制器,
其中,所述第二存储器模块包括多个第二存储器设备和存储第二映射信息的第二SPD设备,并且
其中,所述ECC引擎被配置为基于存储在所述SPD设备中的信息和存储在所述第二SPD设备中的信息,独立地生成要发送到所述第一存储器模块和所述第二存储器模块的至少一个码字。
15.一种存储器系统,包括:
存储器模块,包括构成第一通道和第二通道的多个存储器设备以及分别存储所述第一通道和所述第二通道的第一硬故障信息和第二硬故障信息作为设备信息的串行存在检测SPD设备;以及
存储器控制器,被配置为控制所述存储器模块,
其中,所述存储器控制器包括:
纠错码ECC引擎,被配置为根据要存储在所述多个存储器设备中的多个数据比特来生成包括多个符号的码字;以及
控制电路,被配置为控制所述ECC引擎,
其中,如果所述多个符号中的包括错误比特的符号的数量大于参考数量,则所述第一硬故障信息指示所述第一通道中的硬故障,否则所述第一硬故障信息指示软故障,
其中,如果所述多个符号中的包括错误比特的符号的数量大于所述参考数量,则所述第二硬故障信息指示所述第二通道中的硬故障,否则所述第二硬故障信息指示软故障,
其中,所述多个符号中的每一个包括经由所述多个存储器设备中的每一个的多个输入/输出焊盘接收的预定数量的数据比特,
其中,所述ECC引擎响应于所述第一硬故障信息和所述第二硬故障信息中的至少一个而增加所述码字中的错误检测/纠正比特的数量,以及
其中,所述第一硬故障信息和所述第二硬故障信息中的所述至少一个指示在所述多个存储器设备中的在所述第一通道和所述第二通道中的对应通道中的至少一个存储器设备中包括所述错误比特的符号的数量大于所述参考数量。
16.根据权利要求15所述的存储器系统,其中,
所述多个存储器设备包括第一数据设备至第八数据设备、第一ECC设备、第九数据设备至第十六数据设备和第二ECC设备,
所述第一通道包括所述第一数据设备至所述第八数据设备和所述第一ECC设备,
所述第二通道包括所述第九数据设备至所述第十六数据设备和所述第二ECC设备,并且
所述第一通道和所述第二通道彼此独立地进行操作。
17.根据权利要求16所述的存储器系统,其中,
所述存储器模块还包括注册时钟驱动器RCD,所述RCD被配置为缓冲从所述存储器控制器接收的命令和地址并将所述命令和所述地址传递给所述多个存储器设备,
所述RCD连接到所述SPD设备,
所述第一通道和所述第二通道分别连接到所述RCD,
所述第一ECC设备包括第一循环冗余校验CRC设备和第一奇偶校验设备,
所述第二ECC设备包括第二奇偶校验设备,并且
所述存储器模块还包括连接到所述RCD的第三ECC设备。
18.根据权利要求17所述的存储器系统,
其中,所述RCD被配置为基于所述第一硬故障信息和所述第二硬故障信息将所述第三ECC设备选择性地并入所述第一通道和所述第二通道之一中。
19.根据权利要求16所述的存储器系统,其中,
所述存储器模块还包括注册时钟驱动器RCD,所述RCD被配置为缓冲从所述存储器控制器接收的命令和地址并将所述命令和所述地址传递给所述多个存储器设备,
所述RCD连接到所述SPD设备,
所述第一通道和所述第二通道分别连接到所述RCD,
所述第一ECC设备包括第一循环冗余校验CRC设备、第一奇偶校验设备和第三奇偶校验设备,并且
所述第二ECC设备包括第二奇偶校验设备。
20.根据权利要求15所述的存储器系统,
其中,所述ECC引擎被配置为在上电序列期间从所述存储器模块接收所述第一硬故障信息和所述第二硬故障信息,
其中,所述多个存储器设备中的每一个具有4比特输入/输出宽度,并且
其中,所述多个存储器设备中的每一个是动态随机存取存储器DRAM。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190137223A KR20210051668A (ko) | 2019-10-31 | 2019-10-31 | 메모리 컨트롤러, 메모리 시스템 및 메모리 모듈 |
KR10-2019-0137223 | 2019-10-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112749040A true CN112749040A (zh) | 2021-05-04 |
Family
ID=75645362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010817449.2A Pending CN112749040A (zh) | 2019-10-31 | 2020-08-14 | 存储器控制器以及包括该存储器控制器的存储器系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11068347B2 (zh) |
KR (1) | KR20210051668A (zh) |
CN (1) | CN112749040A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023108319A1 (en) * | 2021-12-13 | 2023-06-22 | Intel Corporation | In-system mitigation of uncorrectable errors based on confidence factors, based on fault-aware analysis |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210089804A (ko) | 2020-01-08 | 2021-07-19 | 삼성전자주식회사 | 메모리 모듈 및 이를 포함하는 메모리 시스템 |
US11157359B2 (en) * | 2020-09-24 | 2021-10-26 | Intel Corporation | Techniques to implement a hybrid error correction code scheme |
US11581906B1 (en) * | 2021-12-28 | 2023-02-14 | Samsung Electronics Co., Ltd. | Hierarchical error correction code decoding using multistage concatenated codes |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4794597A (en) | 1986-03-28 | 1988-12-27 | Mitsubishi Denki Kabushiki Kaisha | Memory device equipped with a RAS circuit |
US6567950B1 (en) | 1999-04-30 | 2003-05-20 | International Business Machines Corporation | Dynamically replacing a failed chip |
US7203886B2 (en) * | 2002-03-27 | 2007-04-10 | Intel Corporation | Detecting and correcting corrupted memory cells in a memory |
US8041989B2 (en) * | 2007-06-28 | 2011-10-18 | International Business Machines Corporation | System and method for providing a high fault tolerant memory system |
US8171377B2 (en) * | 2008-01-31 | 2012-05-01 | International Business Machines Corporation | System to improve memory reliability and associated methods |
US9087614B2 (en) | 2012-11-27 | 2015-07-21 | Samsung Electronics Co., Ltd. | Memory modules and memory systems |
KR20160056380A (ko) | 2014-11-10 | 2016-05-20 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US10678662B2 (en) * | 2016-01-04 | 2020-06-09 | Cnex Labs, Inc. | Computing system with data protection mechanism with soft information and method of operation thereof |
US20170262337A1 (en) | 2016-03-10 | 2017-09-14 | Smart Modular Technologies, Inc. | Memory module repair system with failing component detection and method of operation thereof |
US10268541B2 (en) | 2016-08-15 | 2019-04-23 | Samsung Electronics Co., Ltd. | DRAM assist error correction mechanism for DDR SDRAM interface |
US10055164B2 (en) * | 2016-09-07 | 2018-08-21 | Sandisk Technologies Llc | Data storage at an access device |
US10606696B2 (en) * | 2017-12-04 | 2020-03-31 | International Business Machines Corporation | Internally-generated data storage in spare memory locations |
US10606713B2 (en) * | 2018-01-03 | 2020-03-31 | International Business Machines Corporation | Using dual channel memory as single channel memory with command address recovery |
KR102511903B1 (ko) * | 2018-02-26 | 2023-03-21 | 에스케이하이닉스 주식회사 | 고정된 에러정정능력의 에러정정코드 엔진을 이용하여 재구성할 수 있는 에러정정동작을 수행하는 메모리 시스템 |
KR20200078830A (ko) * | 2018-12-24 | 2020-07-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 모듈 |
-
2019
- 2019-10-31 KR KR1020190137223A patent/KR20210051668A/ko active Search and Examination
-
2020
- 2020-05-20 US US16/878,793 patent/US11068347B2/en active Active
- 2020-08-14 CN CN202010817449.2A patent/CN112749040A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023108319A1 (en) * | 2021-12-13 | 2023-06-22 | Intel Corporation | In-system mitigation of uncorrectable errors based on confidence factors, based on fault-aware analysis |
Also Published As
Publication number | Publication date |
---|---|
US20210133028A1 (en) | 2021-05-06 |
US11068347B2 (en) | 2021-07-20 |
KR20210051668A (ko) | 2021-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110148434B (zh) | 半导体存储器件、存储系统和操作半导体存储器件的方法 | |
CN109785894B (zh) | 半导体存储器装置、存储器系统和操作方法 | |
US10922171B2 (en) | Error correction code circuits, semiconductor memory devices and memory systems | |
US11170868B2 (en) | Semiconductor memory devices and memory systems | |
US10867690B2 (en) | Memory modules and methods of operating memory systems including the same | |
US11068347B2 (en) | Memory controllers, memory systems including the same and memory modules | |
US11436079B2 (en) | Semiconductor memory devices having enhanced error correction circuits therein | |
CN112992257A (zh) | 半导体存储器装置和存储器系统 | |
CN112527549A (zh) | 存储器控制器和包括该存储器控制器的存储器系统 | |
US11463110B2 (en) | Memory controllers and memory systems including the same | |
US11762736B2 (en) | Semiconductor memory devices | |
US11860734B2 (en) | Semiconductor memory devices and memory systems | |
US11841763B2 (en) | Semiconductor memory devices with ECC engine defect determination based on test syndrome, test parity, expected decoding status and received decoding status | |
CN115547398A (zh) | 操作存储控制器的方法、执行该方法的存储控制器及包括该存储控制器的存储器系统 | |
US11947810B2 (en) | Semiconductor memory device and memory system including the same | |
US20240012712A1 (en) | Semiconductor memory devices | |
US11803501B2 (en) | Routing assignments based on error correction capabilities | |
US20240146335A1 (en) | Semiconductor memory device and method of operating semiconductor memory device | |
CN117437966A (zh) | 半导体存储器装置和包括半导体存储器装置的存储器系统 | |
TW202405817A (zh) | 半導體記憶體裝置和包括其的記憶體系統 | |
CN117667499A (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 |