CN111566738A - 存储器系统中的有效和选择性的备用位 - Google Patents

存储器系统中的有效和选择性的备用位 Download PDF

Info

Publication number
CN111566738A
CN111566738A CN201980008000.7A CN201980008000A CN111566738A CN 111566738 A CN111566738 A CN 111566738A CN 201980008000 A CN201980008000 A CN 201980008000A CN 111566738 A CN111566738 A CN 111566738A
Authority
CN
China
Prior art keywords
memory
bit
data
bits
spare
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201980008000.7A
Other languages
English (en)
Other versions
CN111566738B (zh
Inventor
K.麦基尔文
S.格兰西
W.毛勒
金圭贤
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN111566738A publication Critical patent/CN111566738A/zh
Application granted granted Critical
Publication of CN111566738B publication Critical patent/CN111566738B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • 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/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/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/1204Bit line control

Abstract

公开了一种用于存储数据的存储器系统,该存储器系统包括:被配置为存储数据的多个存储器设备,每个存储器设备具有多个位,这些存储器设备被配置并被关联为作为列组来共同工作以响应请求;存储器控制电路,其与多个存储器设备相关联并且被配置为向多个存储器设备输出命令和控制信号;检测器,用于检测操作中的位错误;控制器,用于响应于检测器检测到位错误,将位错误重新映射到备用位通道。

Description

存储器系统中的有效和选择性的备用位
背景技术
本发明涉及计算机体系结构、处理和存储器系统,并且更具体地涉及可恢复性、可用性和可维护性(RAS)的需求,包括存储器系统/子系统中的有效和选择性的备用位。
随着信息技术的最新发展以及互联网广泛地用于存储和处理信息,提出了通过计算系统对信息的获取、处理、存储和传播的越来越多的要求。正在开发计算系统,以提高计算机能够执行用于商业、个人使用、和娱乐的日益复杂的应用程序的速度。计算机系统的总体性能受计算机结构的每个关键要素的影响,包括处理器的性能/结构、任何存储器高速缓存器、输入/输出(I/O)子系统、存储器控制功能的效率、存储器设备和系统的性能、以及任何关联的存储器接口元素以及存储器互连接口的类型和结构。
执行越来越复杂的应用程序的处理器的不断提高的速度对计算机中的所有其他子系统提出了更严格的性能要求,其他子系统包括存储器子系统,在应用程序运行期间,在存储器子系统中存储、访问和更新数据的很多次。存储器读/写操作所消耗的时间是计算机系统最终速度和效率的主要因素。大多数计算机的存储器子系统通常由存储器控制器操作。存储器控制器的任务是在计算机的存储器子系统及其一个或多个处理器之间尽可能快而有效地移动数据。在许多存储器子系统中,存储器控制器可以控制多个存储器设备。可以按列组(rank)和/或信道(channel)来布置存储器设备。计算机的存储器子系统通常包括存储器模块,通常是一个或多个双列直插式存储器模块(DIMM),其包括多个存储器设备,例如动态随机存取存储器(DRAM)设备。DIMM可以具有一个或多个列组和信道的存储器设备。
计算需求要求能够以越来越快的访问速度访问越来越多的更高密度的存储器设备。工业界投入了大量的研究和开发努力来创建改进的和/或创新的解决方案,以通过改善存储器系统/子系统的设计和/或结构以及存储器系统/子系统的操作方法来最大化整体系统性能。这些努力导致了分布式存储器系统、分布式缓冲存储器系统、注册DIMM(RDIMM)和减载DIMM(LRDIMM)以及其他系统,规范和标准(例如DDR4和DDR5)的发展,其用于提高存储器性能。
在一个示例中,分布式存储器系统可以包括多个存储器设备、一个或多个地址芯片(AC)(也称为存储器控制电路)以及多个数据电路(也称为数据缓冲电路或DC芯片(DC))。在主机处理器与存储器控制电路和数据缓冲电路之间存在通信链路或总线。从存储器控制电路到数据缓冲电路还有一条通信链路或总线。在例如DRAMS的存储装置与存储器控制电路和数据缓冲电路之间也存在通信链路。通信链路上的带宽限制可能会影响存储器系统的性能。
随着存储器系统的性能(例如,速度和容量)的提高,可恢复性、可用性和可维护性(RAS)也是重要的考虑因素。高端服务器或大型计算机的RAS需求与低端个人计算机有很大不同。为了提高可靠性并防止或至少降低计算机故障的风险,已经开发了不同形式的错误检测和纠正过程。一种通常用于错误检测的系统是使用奇偶校验位来检测错误。尽管奇偶校验位检查可以确定单个位错误,但它并不总是可以确定多位错误,并且奇偶校验系统没有纠正数据错误的机制。
发明内容
给出本公开的发明内容以帮助理解存储器系统、架构结构以及存储和获取数据的方法,而无意于限制本公开或本发明。本公开针对本领域普通技术人员。应当理解,在某些情况下可以有利地单独使用本公开的各个方面和特征,或者在其他情况下可以有利地与本公开的其他方面和特征结合使用。因此,可以对存储器系统、架构结构和操作方法进行变型和修改以实现不同的效果。
在一个实施例中,公开了一种用于存储数据的存储器系统,该存储器系统包括被配置为存储数据的多个存储器设备,每个存储器设备具有多个位,这些存储器设备被配置并被关联优选地作为列组共同工作,以响应请求;存储器控制电路,其与所述多个存储器设备相关联并且被配置为向所述多个存储器设备输出命令和控制信号;检测器,用于检测操作中的位错误;控制器,用于响应于检测器检测到位错误,将位错误重新映射到备用位通道。
在另一个实施例中,公开了一种用于存储数据的存储器系统,该存储器系统包括被配置为存储数据的多个存储器设备,每个存储器设备具有多个位,该存储器设备被配置并且相关联以共同工作以执行操作;存储器控制电路,其与所述多个存储器设备相关联,并且被配置为向所述多个存储器设备输出信号,所述存储器控制电路包括逻辑电路,所述逻辑电路被配置为(i)在操作期间检测故障位;(ii)在一个实施例中,将数据从故障位重写到单个备用位通道;(iii)读取重写到故障位的备用位通道的数据。在一方面,存储器控制电路包括存储器控制器,该存储器控制器被配置为将故障位的位置写入备用位通道,并且在另一方面,用于数据和位置信息的ECC可以被写入备用位通道。
还公开了一种用于管理存储子系统中的位错误的方法,该方法包括在第一操作中检测多个存储器设备中的第一存储器位位置中的错误;将要存储在检测到第一错误的存储位位置的数据重新映射到备用位通道。一方面,将要存储在检测到第一错误的存储位位置中的数据重新映射到备用位通道中的备用位。重新映射可以包括在备用位通道中存储标识所检测到的位错误的位置的信息和用于备用位的纠错码。在一个方面中,第一操作是读取操作,并且如果在读取操作期间检测到错误,则该方法还包括执行写入操作,其中系统(优选地,存储器控制器)将信息/数据从检测到错误的位位置写入到备用位通道中。在另一方面,该方法包括读取操作,并且从备用位通道读取有效数据,该备用位通道包括一个数据位,用于该数据位的位置信息的一个或多个位,以及用于保护数据位和位置位的纠错码的保护位的一个或多个位。在另一方面,该方法包括读取操作,并且从备用位通道读取包括一个备用位的有效数据,其中该位由系统(优选地,存储器控制器)使用存储在备用位通道中的位置信息重新映射到读取数据以重建原始的非稀疏数据。在另一方面,在将故障位重新映射到备用位通道之后,并且在系统或过程读出备用位之后,系统可以适当地修复数据。
附图说明
当结合所提供的附图阅读时,将更好地理解存储器系统、架构结构及其操作方法的各个方面、特征和实施例。在附图中提供了实施例以说明存储器系统、架构结构和操作方法的各个方面、特征和/或各种实施例,但是权利要求不应限于所示的精确的布置、结构、特征、方面、实施例、或设备,所示的布置、结构、子组件、特征、方面、实施例、方法和设备可以单独或结合其他布置、结构、子组件、特征、方面、实施例、方法和设备来使用。
图1描绘了一般的计算或数据处理系统。
图2描绘了根据实施例的包括存储器子系统的计算或处理系统。
图3描绘了根据实施例的包括缓冲的DIMM的存储器子系统。
图4描绘了根据另一个实施例的双信道DIMM。
图5描绘了根据实施例的在重写到备用位通道的操作中的位故障的示意图。
图6描绘了根据实施例的在不同的后续操作中被重写到备用位通道的不同位故障的示意图。
图7是在存储器操作中管理故障位的方法的流程图。
具体实施方式
进行以下描述是为了说明本发明的一般原理,并不意味着限制本文所要求的发明构思。在下面的详细描述中,阐述了许多细节以便提供对存储器系统、架构结构和操作方法的理解,但是,本领域技术人员将理解,存储器系统、架构结构和操作方法的不同且众多的实施例可以在没有那些具体细节的情况下实践,并且权利要求和发明不应限于本文具体描述和示出的实施例、子组件、特征、过程、方法、方面、特征或细节。此外,本文描述的特定特征可以在各种可能的组合和排列的每一个中与其他描述的特征结合使用。
除非本文另外明确定义,否则应给所有术语最广泛的解释,包括从说明书中隐含的含义以及本领域技术人员理解的含义和/或如字典,论文等所定义。还应注意,除非另有说明,在说明书和所附权利要求书中使用的单数形式“一个”,“一种”和“该”包括复数指示物。
适用于存储和/或执行程序代码的计算或数据处理系统100可以采用多种形式,并且在一个实施例中,可以包括至少一个处理器102,其可以是控制器或可以是控制器的一部分,如图1所示,通过系统总线106,直接或间接耦合至存储器设备或元件。图1中的计算系统100具有处理器102、随机存取存储器(RAM)103、非易失性存储器104、设备专用电路101和I/O接口105。可选地,RAM 103和/或非易失性存储器104可以被包含在处理器102中,设备专用电路101和I/O接口105也可以被包含在处理器102中。处理器102可以包括例如现成的微处理器、定制处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、离散逻辑等。RAM 103通常用于保存变量数据、堆栈数据、可执行指令等,并且可能包括动态随机访问存储器或DRAM。在一实施例中,RAM 103可包括双倍数据速率(DDR)同步DRAM或SDRAM。RAM可以包括布置在例如双列直插式存储器模块(也称为DIMM)的模块上的存储器设备。
根据各种方法,非易失性存储器104可以包括任何类型的非易失性存储器,例如但不限于电可擦可编程只读存储器(EEPROM)、闪存可编程只读存储器(PROM)、电池备用RAM、硬盘驱动器等。非易失性存储器104通常用于保存可执行固件和包含编程指令的任何非易失性数据,该编程指令可以被执行以使处理器102执行某些功能。
在一些实施例中,I/O接口105可以包括允许处理器102与控制器外部的设备进行通信的通信接口。通信接口的示例可以包括但不限于诸如RS-232、USB(通用串行总线)、小型计算机系统接口(SCSI)、RS-422的串行接口或诸如Wi-Fi、蓝牙、近场通信(NFC)的无线通信接口或其他无线接口。计算系统100可以以诸如自动化/驱动接口(ADI)的任何通信协议经由通信接口105与外部设备通信。
图2描绘了示例性处理系统200,其可以是较大的计算机系统结构或网络的一部分。处理系统200包括控制处理器系统或处理器202,其是包括至少一个处理器单元(CPU)或微处理器206的处理子系统,该处理器单元(CPU)或微处理器206可以被配置为与存储器控制单元(MCU)210对接。处理器或CPU 206可以是处理来自系统控制器(未示出)的读取、写入和配置请求的模块。处理器206可以是多核处理器。MCU 210可包括存储器控制器同步(MCS)208,也称为存储器控制器,其控制与存储器子系统220中的一个或多个存储器设备250(图1中未示出)的通信。MCU 210和MCS 208可以包括一个或多个处理电路,或者处理可以由处理器206执行或与处理器206结合执行。控制处理器系统202通过通信总线215与存储器子系统220通信。控制处理器系统202、处理器或CPU 206、存储器控制单元210,以及MCS 208在本文中可以单独地和共同地称为主机。如本文所使用的主机被广泛地用来指代向存储器系统或子系统发送和接收命令和/或控制信号的处理器、控制器或设备。主机还可以从存储器系统或子系统发送和接收数据信号。
公开了管理存储器系统或子系统中的错误的系统、体系结构和/或方法。在一个实施例中,公开了一种在存储器信道或列组中使用未使用或备用位的系统、体系结构和/或方法,该系统、体系结构和/或方法包括用于RAS能力的存储器设备(例如,纠错码(ECC))。一方面,该系统、体系结构和/或方法允许将事务或操作(例如,读或写操作)中的任何位的重映射映射到备用位通道。在一个实施例中,每个事务中的位,例如读或写操作,可以被映射或重写到备用位通道,并且位选择可以保持相同或随每个事务或操作而改变。例如由于位错误或故障而选择重新映射到备用位的位可以独立于突发事务或操作。并且,在一个实施例中,重新映射信息,例如,数据和不良位或故障位的位置,可以由纠错码(ECC)覆盖。在存储信道具有跨多个存储器设备的各种位故障的情况下,将位映射到备用位通道的系统、体系结构和方法是有利的,通常可能是这种情况。将位重新映射到备用位通道的系统、体系结构和方法也比当前的备用技术更有效,后者将整个数据线(DQ)重新映射到备用数据线(DQ)。
根据一个实施例的将备用位分配到未使用的位通道的系统、体系结构和方法可以由具有简单逻辑的存储器控制器控制和执行。可以在一个方面中实现该过程和系统,而对存储信道没有任何改变或只有很少的改变。该方法、系统和体系结构将在存储器操作(例如,读或写操作)期间工作,并且可能不需要任何后封装修复(PPR)模式。另外,由于实施例中的DDR5双信道DIMM在每个信道上已经具有额外的位,因此该方法、系统和体系结构可以允许具有纠错码(ECC)的标准DDR5DIMM具有更高级别的RAS。对于本领域技术人员显而易见的是,该设计的优点可以应用于总线上具有额外位的任何系统,并且该技术和公开内容不限于DDR5。从本文的公开和教导中显而易见的是,该方法、系统和体系结构可以在其他配置和实施例中实现和采用。
计算机的存储器子系统通常包括存储器模块,通常是一个或多个双列直插式存储器模块(DIMM),其通常包括多个存储器设备,例如,动态随机存取存储器(DRAM)设备。在一个实施例中的存储器系统可以包括多个存储器设备,一个或多个存储器控制电路以及一个或多个数据缓冲电路,它们均优选地布置在作为DIMM的模块上。在一实施例中,存储器控制电路从主机处理器接收信号并输出命令和控制信号。在一个实施例中,存储器系统可以包括存储控制器,以控制去往和来自存储器设备的数据流。存储器控制器还可以管理对存储器设备的访问。对于由主机(例如,处理器)产生的访问请求,存储器控制器产生一个或多个访问命令,以发送到存储器设备以服务于请求。存储器控制器还可结合管理对存储器资源的访问来管理存储器设备的配置和状态。存储控制器优选地以最大化存储器设备的带宽利用的方式生成命令并管理对例如存储器设备的数据资源的访问。在一个实施例中,存储器控制电路可以包括一个或多个注册时钟驱动器或RCD。在一个实施例中,存储器控制电路可以包括调度器,该调度器可以是电路的形式。
存储器控制电路,例如调度器,可以优化操作和指令的顺序,并且向数据缓冲电路和/或存储器设备发送命令信号(例如,指令)。在一个实施例中,存储器控制器、调度器和/或电路调度取回(读取)操作,存储(写入)操作以及存储器设备(例如DRAM)的周期性操作,例如刷新操作,以优化系统性能。在主机(处理器)、存储器设备、数据缓冲电路和/或存储器控制电路之间可能存在用于传输数据、命令、响应和/或信号的通信链路或总线。在一个实施例中,存在从存储器控制电路到数据缓冲电路的通信总线或链路。在一实施例中,在主机与存储器控制电路之间还可以有通信总线和链路,并且在主机与数据缓冲电路之间可以有单独的通信总线或链路。在另一个实施例中,在可以是处理器和/或存储器控制电路的一部分的存储器控制器与存储器设备之间可以存在通信总线和链路。存储器系统和/或架构结构可以进一步包括存储器设备与存储器控制电路和/或数据缓冲电路之间的通信链路或总线。为了便于说明,图中已取消了许多通信链接。
图3和图4描绘了具有存储器子系统320的处理器存储器系统300的示例。图3示出了具有多个存储器模块325a-c(例如,双列直插式存储器模块或DIMM)的存储器系统320,但是应当理解,存储器子系统320可以包含更多或更少的DIMM 325(例如,参见图4)。图3的示例示出了三个存储器模块325,而图4的示例示出了一个存储器模块325。图3示出了与DDR4一致的系统和体系结构,图4示出了与DDR5一致的系统和体系结构。图4显示了具有两个RCD的双信道DIMM,但是,所示两个RCD的功能可以包含在一个RCD或多个设备中。DIMM 325上的多个存储器设备可以按信道和列组排列,在DIMM 325或多个DIMM 325上具有一个或多个列组或信道。例如,图4显示了DIMM 325上的两个信道。每个DIMM 325可以包含一个或多个易失性存储器设备,例如DRAM350。DRAM优选地是双倍数据速率(DDR)同步DRAM。
存储器设备350可以是集成电路或芯片,并形成保持信息位的基本存储单元。通常将诸如DRAM之类的存储器设备中的存储单元(位)布置在存储体中,其中每个存储体是行和列的阵列。在例如DRAM的存储装置中通常存在多个存储体。存储器设备的位宽通常为4、8或16,用x4、x8或x16表示。例如,在x4存储器设备中,在对x4存储器设备的操作(例如,读取或写入)期间的一个节拍(beat)或周期(cycle)将访问四(4)位。对于x8存储器设备,在x8存储器设备操作期间一个节拍或一个周期将访问八(8)位。并且,对于x16存储器设备,在x16存储器设备的操作(例如读取或写入)期间的一个节拍或周期将访问十六(16)位。
通常,将存储器设备排列在列组(rank)中,以便一个周期期间该周期中读取或写入多个存储器设备。列组通常是一组存储器设备,它们使用不同的请求数据同时响应相同的命令和相同的地址。例如,如果将四(4)个x8存储器设备排成一列组,一个节拍或周期将从存储器设备中读取或写入三十二(32)位。另外,例如读或写的操作可以包含多个节拍。例如,操作(例如读或写)可具有十六(BL 16)的突发长度(BL),指示该操作(事务)中的十六(16)个节拍或周期。在一个实例中,布置和配置成十六(BL 16)的突发长度的四(4)×8个存储器设备的读取操作将具有十六(16)个节拍,每次读取操作读取每个节拍中的三十二(32)位。在另一个示例中,在DDR4配置中进行的操作(读取或写入)具有八(8)个x8存储器设备,这些存储器设备配置具有八(BL 8)个突发长度,将具有八(8)个节拍,在每个节拍中访问六十四(64)位。
存储子系统还可以包括一个或多个存储器控制电路330(也称为地址芯片(AC)),以及一个或多个数据缓冲器或数据电路(DC)340(也称为DC芯片)。在其他示例中,AC和DC芯片可以被组合为一个芯片。可选地,在一个实施例中,该存储器系统可以仅包括一个或多个AC芯片,而没有任何DC芯片,或者仅包括一个或多个DC芯片,而没有任何AC芯片。存储器控制电路330管理去往和到达存储器设备350的数据流。存储器控制电路通常从主机(例如,处理器)接收诸如命令和控制信号之类的信号。控制信号可以包括在存储器设备和/或数据缓冲电路中的存储数据的地址位置或标签。存储器控制电路330可以将命令和控制信号输出到存储器设备。为了易于参考,存储器控制电路330也可以称为地址和命令电路、AC电路或AC芯片。存储器控制电路330可以具有或可以不具有注册时钟驱动器(RCD)332。每个存储器模块325可以具有如图3所示的一个RCD 332,或者如图4所示的多个RCD 332。在一个实施例中,存储器控制电路33可以具有存储器控制器。
存储器控制电路330或存储器控制器可具有调度器338。存储器控制电路330、存储器控制器和/或调度器338可优化操作和指令的顺序,并将信号发送到数据缓冲电路和存储器设备。存储器控制电路330/存储器控制器/存储器调度器338可以重新排序操作序列。存储器控制电路330可以与存储器设备一起位于或可以不位于例如DIMM的板或模块上。在实施例中,如图3和图4所示,存储器控制电路330形成为集成电路或芯片,并且位于具有存储器设备350的模块325上。在图3的实施例中,一个存储器控制电路330在每个DIMM 325上,并且控制和管理该DIMM 325上的存储器设备350。在图4的实施例中,具有两个RCD 332的两个存储器控制电路330被示出在模块325上。可以理解,一个存储器控制电路330和一个或多个RCD 332可以被包括在存储器模块325上。具体地,图4中的存储器模块325可以被配置为具有一个RCD 332。
数据缓冲电路340在例如处理器302的主机与存储器设备350之间缓冲、接收、发送和/或传输数据。数据缓冲电路也可以称为数据电路、DC电路、和/或DC芯片。数据缓冲电路340可以与或可以不与存储器设备和/或存储器控制电路位于相同的板或模块(例如,DIMM)上。在一个实施例中,数据缓冲电路340也被形成为集成电路或芯片,并且如图3所示与存储器设备350一起位于模块325上。虽然在图4中未示出,但是数据缓冲电路可以位于存储器模块上,并且对于模块中的每个存储器设备,可能有一个数据缓冲电路,和/或一个列组中的每个存储器设备可能有一个数据缓冲电路,和/或一个信道中的每个存储器设备有一个数据缓冲电路。也可以考虑其他配置。
存储器或数据存储器系统320可以被配置为存储数据并向一个或多个主机(例如处理器)提供存储服务,这些主机可以直接或通过网络(例如通过互联网)连接到存储器系统320。该存储器系统可以包括用于支持与主机的通信的接口。为了便于在图3和图4中图示,消除了存储器设备、存储器控制电路和数据缓冲电路之间的通信总线。
在图3的存储器系统320中,每个存储器模块325被配置为DIMM,并具有一个存储器控制电路或AC芯片330、九(9)个数据缓冲电路或DC芯片340、以及三十六(36)个存储器设备350(例如DRAM(每侧十八(18)个存储器设备350)。存储器控制电路330被配置和编程为向数据缓冲电路340和存储器设备350发送命令和控制信号。在该示例中,每个存储器控制芯片或AC芯片330管理去往和来自模块325上的存储器设备350的数据流。在该示例中,每个数据缓冲电路或DC芯片340与四个存储器设备350交互并在四个存储器设备350之间缓冲数据。DIMM可以包括多个存储器设备(例如DRAM),其可选地可以成组或按9列组排列,例如9、18、27、36等,但是可以考虑其他配置。
对于存储器模块325和存储器子系统320可以设想其他配置。可以对存储器系统体系结构进行格式化和构造以支持DDR4和DDR5标准,并且可以包括RDIMM和LRDIMM,尽管公开的方法、系统和方法有所不同,教导将适用于其他配置,包括将来的标准。
图3与DDR4标准一致,包括用于存储数据的八(8)个x8存储器设备和用于ECC的一个x8存储器设备,每个节拍或周期传输六十四(64)位数据。即,在一列组中有八(8)个x8存储器设备用于数据传输,每个存储器设备每个周期或节拍访问八(8)位,每个周期总共访问六十四(64)位数据。如果存储器设备的宽度为四个位(x4存储器设备),则每个周期需要十六(16)个x4存储器设备访问六十四(64)个数据位,两个x4存储器设备提供ECC的八(8)个位以覆盖六十四(64)位数据。将认识到,尽管为了便于描述,本公开涉及为ECC指定了存储器设备,但是ECC可以分布在多个存储器设备上。
图4与DDR5标准一致,并且DIMM或存储器模块包括十(10)个存储器设备,该存储器设备以两个列组/信道排列,具有四(4)个x8存储器设备用于存储数据,一个x8存储器设备用于在第一列组(或信道)中配置的ECC以及四(4)个x8存储器设备用于存储数据,一个x8存储器设备用于在第二列组(或信道)中配置的ECC。如图4所示,每个列组(和信道)中的五(5)个存储器设备(例如DDR DRAM)中的每一个都具有八(8)位宽的接口(x8)。每个列组和信道的宽度支持四十(40)位,每个周期或节拍传输的数据为三十二(32)位。如果在存储器模块上使用了4位或16位宽的存储器设备(例如x4或x16DRAM),则每个列组和信道的存储器设备的数量将发生变化,从而满足每个周期三十二位(32)位的数据传输,以及每个周期或突发的相应ECC。例如,如果使用四(4)个位宽的存储器设备(例如,x4存储器设备),则八(8)个x4存储器设备将被用于数据,而两(2)个x4存储器设备将被用于ECC。而且,如果使用十六(16)位宽的存储器设备,则将两(2)个x16存储器设备用于数据,并将一个x16存储器设备用于ECC。在一个示例中,可替代地,两(2)个x4存储器设备或一个x8存储器设备可用于ECC,因为仅需要七(7)位ECC来覆盖三十二(32)位数据。
在图3-6中的存储器配置,包括每个存储信道和/或列组包括一个x8ECC存储器设备。ECC存储器设备的数量取决于多种因素,包括但不限于所使用的错误检查和纠正码(ECC)的类型以及要检查的数据量以及数据错误的数量。存储器控制器包括ECC逻辑,可为存储器错误提供数据校正。ECC逻辑使用常规技术。通常,ECC需要七(7)位才能覆盖三十二(32)位数据,而ECC需要八(8)位才能覆盖节拍中的六十四(64)位数据。
图5示出了如图4所示配置的存储器设备的列组,其中不良或有故障的数据位121被映射到备用位通道。图5中的列标题b00-b31标识在一个周期或节拍中读取的三十二(32)位数据,而列标题e00-e06标识在一个周期或节拍中用于ECC的七(7)位。由于每个周期或节拍访问的数据是三十二(32)位,因此在列组(此图中的信道)中需要七(7)位来处理ECC,因此ECC需要一个额外的x8存储器设备。因此,列组和/或信道是四十(40)位宽。更具体地,图5示出了五(5)个存储器设备的列组中的操作(例如,读或写)中的位的表示,每个存储器设备具有八(8)位宽的数据路径,例如,x8存储器设备,其中四(4)个存储器设备关联在一起并排列为列组(和信道)以存储数据,其中一个x8存储器设备用于ECC,其中系统被配置为突发长度十六(BL 16)。本领域技术人员应该认识到,为了便于描述,将ECC称为并描述为在一个存储器设备或芯片上,但是ECC不限于在一个存储器设备或芯片上,并且ECC可以分布在多个存储器设备或芯片上。
由于在每个周期或节拍中传送了三十二(32)位数据,并且需要七(7)位来覆盖ECC,因此四十(40)位宽的列组/信道中只剩下一位。就是说,该信道还有额外的剩余位,在节拍或周期中没有用于数据或ECC。图5中的列标题s00将多余的位说明为备用位通道。图5中标题为“节拍”的列标识了突发操作中的节拍(节拍数),并且在此示例中示出在操作(例如读或写)中,十六次的突发长度(BL 16)与十六次以十六进制标记的节拍(0-9和AF)。在图5中,检测到位121有故障,并将其重新映射到备用位通道s00。突发(在节拍3中显示为b25)中用于b121的值、信息或数据被写入或重新映射到备用位通道s00中的位S。那就是应该被写入突发(例如,节拍3中的位b25)中的位121的值,信息或数据现在被重写或映射到位S(节拍0中的位s00)。标识不良位或错误的位置被写入备用位通道s00的位L0-L8中。有许多种方法来确定故障或错误位的位置,包括参考突发(例如,位121)中的位数或通过指定位和节拍编号(例如,节拍3中的位b25)。在图5的示例中,在备用位通道s00中将位121(例如,节拍3中的位b25)的位置写入位L8:L0(L8:L0=0,0111,1001S=b121好的值)。
此外,在备用位通道s00中也处理了覆盖故障位的数据和位置的ECC,如图5中的E0:E5所示。因此,节拍A:F中的备用位通道s00中的位为节拍0中的数据位S和节拍1-9中的位L8:L0中的位置信息提供ECC覆盖。六(6)个ECC位可以覆盖备用位通道s00中的十六(16)位数据/信息。因此,如果检测到不良或故障位,则将其值和位置信息写入备用位通道s00。在随后的操作中,存储控制器将备用位S中的信息/数据用于损坏位或故障位。存储控制器使用位L8:L0(例如,节拍1-9中的位s00)的备用位通道s00中的信息来识别不良位的位置以及何时/何地使用备用位S中的值。在图5的示例中,当读取位121时,存储器控制器使用位S中的值。存储器控制器使用备用位通道s00中的位L8:L0中的位置信息来知道何时/何处使用该值,位于位S(0拍中的位s00)的数据或信息。换句话说,当存储控制器访问由备用位通道s00中的位L8:L0标识的存储器设备地址时,存储控制器使用备用位通道s00中的位S中的数据。
图6示出了十六(16)次节拍事务中的另一种操作,例如读取操作。图6用于与图5相同排列的列组/信道中的后续操作,其中b00-b31表示数据位,e00-e06表示用于数据的三十二(32)位的ECC,而s00表示在具有五(5)个x8存储器设备的列组/信道中剩下的备用位通道(例如,用于数据的四个x8存储器设备,以及用于满足ECC要求的七(7)位的一个x8存储器设备)。操作中的每个节拍或周期都有一个备用位,用于从错误(例如,不良或错误的位)中重写信息。图6表示在随后的操作中检测到的不良位511,该不良位被重写到备用位通道s00,其中用于位511的数据、信息或值被重写到备用位通道中的位S,该不良位的位置信息511被写入位L0:L8(L8:L0=1,111、1111,S=b511好的值),并且位S和位置位L8:L0的ECC覆盖由备用位通道S00中的E0-E5提供。
应当理解,重写到备用位通道s00的不良或错误位,例如错误,在不同的操作中可以是相同的位(位置),或者在不同的操作中可以是不同的位(位置)。即,每次操作在存储器设备中发生错误的位可以是相同的位,即每次操作在存储器设备中的相同位置,也可以是不同的位,即不同的位置。无论位置如何,该不良位都可以在后续操作中重写并映射到备用位通道。还将意识到,图5和图6是可应用于具有三十二(32)位宽数据路径(接口)且具有三十二(32)位数据的ECC覆盖范围的的DDR5BL 16(突发长度16)操作的示例。
可以提供一个或多个备用位通道的其他配置可以用于此处公开的位备用系统、体系结构和技术。作为一个示例,在系统或配置中,图4的两个信道被锁定或配对,以使十(10)个x8存储器设备用于每个节拍或周期具有六十四(位)的数据的操作,十六个(16)位可用于ECC存储器,以覆盖六十四(64)个数据位。在该示例中,仅需要八(8)位的ECC来覆盖六十四(64)位的数据,剩下多个备用位通道用于重新映射或重写不良、有缺陷的或错误的位。其他示例可以包括添加额外的设备。还应该理解的是,尽管图5和图6示出了x8存储器设备,该方法和公开内容可应用于x4或x16存储器设备。
图7是根据一个实施例的示例性流程图,其示出和描述了根据本公开的一个实施例的管理包括存储器设备和/或诸如DIMM的存储器模块的存储器系统中的位错误的方法。尽管为了方便而不是将本公开限制为包括一系列和/或多个步骤来描述方法700,但是应当理解,该过程不需要作为一系列的步骤被执行,和/或多个步骤不必按照关于图7所示和所述的顺序执行,但是该过程可以被集成和/或一个或多个步骤可以一起同时被执行,或者这些步骤可以以披露的顺序或替代的顺序被执行。
管理存储器系统中的位错误的方法700包括在710中检测多个存储器设备中的操作(例如,读或写操作)中的第一位存储器位置中的错误,所述多个存储器设备最好是关联、分组或布置成列组。多个存储器件也可以如图4所示布置为信道。在一个示例中,可以使用检测器电路来检测位错误。检测器电路可以是存储器控制电路或存储器控制器的一部分。备选地,检测器电路可以在系统中的其他位置或其他电路的一部分中。检测错误的一个实施例将是针对该节拍的数据检查节拍的ECC码。ECC码可允许单错误纠正和双错误检测(SECDED)。如果使用ECC码将某个位作为错误位删除,则该位将被更正并重新映射到备用通道。通过备用不良位,该算法可以更好地覆盖SECDED ECC码,其中在备用通道上复制了已知的不良位,因此SECDED ECC码不需要纠正该不良位,可以用于纠正其他失败的位。
在720,在第一操作中可以将要存储在位存储位置(在该位置检测到第一错误)处的数据写入或重新映射到备用位通道中的备用位。在存储器控制电路或存储器控制器中可以包含管理错误响应的逻辑。检测器或检测器电路中可能包含管理错误响应的逻辑。在730处,标识检测到的第一位错误的位置的地址位置信息也可以存储在备用位通道中。包含在备用位中的信息的纠错码,优选地,在740处,用于标识故障或检测到的位错误的位置信息的纠错码,也可以被写入(存储在)备用位通道中。在随后的操作中,存储控制器在访问不良位时将访问(例如读取)备用位的值,并将使用写入位L8:L0中的备用位通道的位置信息来识别不良位的位置。一个实施例中的方法提供了一种备用技术或过程,其中将数据从存储器的故障区域(例如,故障位)移出,并存储在新的存储器位置或区域(例如,备用位)中,随后对数据的后续访问将从新位置而不是失败位置中检索。
在第二不同的操作中,接在第一操作之后,可以在750处检测存储器位位置中的第二错误。第二错误可以与第一错误在相同的存储位位置处发生或在不同的存储器位位置处发生。在760处可以在那个操作中将要存储在发生第二位错误的存储器位位置处的数据写入或重新映射到备用位通道中的备用位。
在770处,在第二不同操作期间,第二位错误的位置可以存储在备用位通道中。在780处,在第二不同的操作中,在备用位通道中重新映射的备用位的纠错码,最好是用于标识故障或检测到的错误位的位置的纠错码,也可以存储在备用位通道中。在后续操作中,存储控制器将在去读取不良位时访问(例如,读取)备用位的值,并将使用以位L8:L0写入备用位通道的位置信息来标识不良位的位置。
应当理解,可以在给定的节拍中(在示例图中示出的行)存在多个位故障的情况下,使用所公开的系统、架构和过程,因为备用位通道可以用于处理一个或多个节拍中的位故障。
公开了一种用于存储数据的存储器系统,该存储器系统包括被配置为存储数据的多个存储器设备,每个存储器设备具有多个位,该多个存储器设备被配置并且被关联作为列组来共同工作以响应请求;存储器控制电路,其与所述多个存储器设备相关联并且被配置为向所述多个存储器设备输出命令和控制信号;检测器,用于检测操作中的位错误;控制器,用于响应于检测器检测到位错误,将位错误重新映射到备用位通道。在一个方面,检测器、控制器和存储器控制电路在同一芯片上。多个存储器设备可以在双列直插式存储器模块(DIMM)上,并且存储器控制电路在DIMM上。在一个实施例中,DIMM可以进一步包括数据缓冲电路。
一方面,系统可以包括至少一个DIMM,该至少一个DIMM包括多个存储器设备,例如,至少十(10)个存储器设备,其中五(5)个存储器设备形成第一列组,五(5)个存储器设备设备形成第二列组,并且其中每个列组使用三十二(32)位以存储数据。在一个实施例中,每个列组使用七(7)位用于纠错码,并且至少一位用于重新映射错误。根据一个实施例,第一列组的五个存储设备形成一个四十位宽的信道。重写到备用位(和/或备用位通道)的信息可以包括检测到错误的位的数据、位的位置(例如,突发中的位编号或节拍中的位编号和节拍编号)、以及备用位和检测到错误的位的位置的错误校正码。
一方面,多个存储器设备提供多个备用位通道以重新映射位错误。一个实施例中的存储器控制电路可以被配置为读取备用位通道中的备用位中的数据,以及备用位通道中的位置信息,以及识别该位以使用在备用位通道中的备用位中保持的数据。
在另一个实施例中,公开了一种用于存储数据的存储器系统,该存储器系统包括多个存储器设备,该多个存储器设备配置为存储数据,每个存储器设备具有多个位,该存储器设备被配置并且相关联以作为列组来共同工作以执行操作并且与被配置为列组的多个存储器设备相关联的存储器控制电路,并且被配置为向多个存储器设备输出信号,该存储器控制电路包含逻辑电路,其被配置为(i)检测操作中的故障位;(ii)将数据从操作中的故障位重写到单个备用位通道;以及(iii)读取重写到故障位的备用位通道的数据。存储器控制电路可以包括被配置为将故障位的位置地址写入备用位通道的存储器控制器,并且在另一方面,可以进一步包括用于写入备用位通道的数据和位置信息的ECC。
在又一个实施例中,公开了一种用于管理存储子系统中的位错误的方法,该方法包括在第一操作中检测多个存储器设备中的第一存储器位位置中的错误;将要存储在检测到第一错误的存储位位置的数据重新映射到备用位通道。在该方法的一个方面,将要存储在检测到第一错误的存储位位置中的数据重新映射到备用位通道中的备用位。重新映射可以包括在备用位通道中存储标识所检测到的位错误的位置的位置信息和用于备用位的纠错码。可以将第一操作中的单个错误写入单个位通道。在一个方面中,第一操作是读取操作,并且如果在读取操作期间检测到错误,则该方法还包括执行写入操作,其中系统(优选地,存储器控制器)将信息/数据从检测到错误的该位位置写入到备用位通道。在另一方面,该方法包括读取操作,并且从备用位通道读取有效数据,该有效数据包括一个数据位,用于该数据的位的位置信息一个或多个位,以及用于保护数据位和位置位的纠错码的一个或多个位。在另一方面,该方法包括读取操作,并且从备用位通道读取包括一个备用位,其中,系统(优选地,存储器控制器)使用存储在备用位通道中的位置信息将读取数据重新映射到该位以重建原始的非稀疏数据。
在实施例中,该方法可以进一步包括在不同的操作中检测位存储位置中的第二错误,该第二错误发生在与第一位错误相同的存储器位位置和与第一位错误不同的存储器位位置组成的组中的至少一个中;在该不同的操作中,将要存储在检测到第二错误的存储位位置的数据重新映射到单个备用位通道。一方面,该方法可以包括具有多个存储器设备(例如五(5)个存储器设备)的存储列组,其中三十二(32)个位被配置为存储数据,并且七(7)个位用于纠错码,一个位负责管理和/或重新映射错误。
在又一个实施例中,公开了一种用于管理存储器系统中的错误的计算机程序产品,该计算机程序产品包括计算机可读存储介质,该计算机可读存储介质具有包含在其中的程序指令,该程序指令可由存储器系统执行以引起存储器系统执行方法,该存储器系统包括存储器控制电路和多个存储器设备,该方法包括检测多个存储器设备中的第一存储器位中的错误,并将数据从该存储器位中重新映射到第一错误被检测到的备用位通道。
尽管上述说明性实施例优选地以硬件实现,例如以处理器的功能单元来实现,但是说明性实施例的各个方面也可以以软件来实现。例如,将理解,图7中的流程图的每个框以及流程图中的框的组合可以由计算机程序指令来实现。可以将这些计算机程序指令提供给处理器或其他可编程数据处理设备以产生机器,使得在处理器或其他可编程数据处理设备上执行的指令创建用于实现在一个或多个流程图框中指定的功能的装置。这些计算机程序指令还可以存储在计算机可读存储器或存储介质中,该计算机可读存储器或存储介质可以指导处理器或其他可编程数据处理装置以特定方式起作用,从而使得存储在计算机可读存储器或存储介质中的指令产生一种包括指令装置的产品,该指令装置实现一个或多个流程图框中指定的功能。因此,流程图的框支持用于执行指定功能的装置的组合,用于执行指定功能的步骤的组合以及用于执行指定功能的程序指令装置。还应当理解,流程图的每个方框以及流程图中的方框的组合可以通过执行指定功能或步骤的基于专用硬件的计算机系统来实现,或者可以通过专用硬件和计算机指令的组合来实现。
在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储器设备、磁存储器设备、光存储器设备、电磁存储器设备、半导体存储器设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储器设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
此外,根据各种实施例的系统可包括处理器和与处理器集成和/或可由处理器执行的逻辑,该逻辑被配置为执行本文所述的一个或多个处理步骤。所谓“集成”是指处理器具有作为硬件逻辑嵌入的逻辑,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)等。处理器可执行的含义是逻辑是硬件逻辑、软件逻辑(例如固件、操作系统的一部分、应用程序的一部分等等)、或者处理器可访问并被配置为在处理器执行时使处理器执行某些功能的硬件和软件逻辑的某种组合。如本领域中已知的,软件逻辑可以存储在任何存储器类型的本地和/或远程存储器上。可以使用本领域已知的任何处理器,例如软件处理器模块和/或硬件处理器(例如ASIC、FPGA、中央处理单元(CPU),集成电路(IC)、图形处理单元(GPU)等)。
将清楚的是,可以以任何方式组合前述系统和/或方法的各种特征,从而从以上呈现的描述中创建多个组合。
将进一步理解,可以以代表客户部署的服务的形式提供本发明的实施例以按需提供服务。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (20)

1.一种用于存储数据的存储器系统,该存储器系统包括:
被配置为存储数据的多个存储器设备,每个存储器设备具有多个位,所述多个存储器设备被配置并且被关联为共同工作以响应请求;
存储器控制电路,其与所述多个存储器设备相关联并且被配置为向所述多个存储器设备输出命令和控制信号;
检测器,用于检测操作中的位错误;以及
控制器,用于响应于所述检测器检测到所述位错误,将所述位错误重新映射到备用位通道。
2.如权利要求1所述的系统,其中,所述检测器、控制器和存储器控制电路在同一芯片上。
3.如权利要求1所述的系统,其中,所述多个存储器设备在双列直插式存储器模块(DIMM)上,所述存储器控制电路在所述DIMM上,并且所述DIMM还包括多个数据缓冲电路。
4.如权利要求3所述的系统,其中,所述DIMM包括多个存储器设备,其中,所述存储器设备的第一子集形成第一列组,并且所述存储器设备的第二子集形成第二列组,并且其中每个列组使用三十二位以存储数据。
5.如权利要求4所述的系统,其中至少一个位通道用于重新映射所述位错误。
6.如权利要求4所述的系统,其中,重写到备用位的信息包括检测到错误的位的数据、检测到错误的位的位置,以及所述备用位和检测到错误的位的位置的错误校正码。
7.如权利要求1所述的系统,其中,所述多个存储器设备提供多个备用位通道以重新映射位错误。
8.如权利要求1所述的系统,其中,所述存储器控制电路被配置为读取所述备用位通道中的所述备用位中的数据,以及所述备用位通道中的所述位置信息,以识别使用所述备用位通道中的所述备用位中的所述数据的位置。
9.一种用于存储数据的存储器系统,该存储器系统包括:
被配置为存储数据的多个存储器设备,每个存储器设备具有多个位,所述存储器设备被配置并且相关联以共同工作以执行操作;
存储器控制电路,其与所述多个存储器设备相关联,并且被配置为向所述多个存储器设备输出信号,所述存储器控制电路包括逻辑电路,所述逻辑电路被配置为(i)在操作期间检测故障位;(ii)将数据从所述故障位重写到单个备用位通道;(iii)读取重写到所述故障位的所述备用位通道的所述数据。
10.如权利要求9所述的存储器系统,其中,所述存储控制器被配置为将所述故障位的位置地址写入所述备用位通道。
11.如权利要求9所述的存储器系统,其进一步包括用于写入所述备用位通道的所述数据和位置信息的ECC。
12.一种用于管理存储器子系统中的位错误的方法,该方法包括:
在第一操作中检测多个存储器设备中的第一存储器位位置中的错误;以及
将要存储在检测到第一错误的存储器位位置的数据重新映射到备用位通道。
13.如权利要求12所述的方法,其中将要存储在检测到所述第一错误的所述存储位位置中的数据重新映射到所述备用位通道中的备用位。
14.如权利要求12所述的方法,其中,所述重新映射包括在所述备用位通道中存储标识所述检测到的位错误的所述位置的位置信息和所述备用位的纠错码。
15.如权利要求12所述的方法,其中将第一操作中的单个错误写入单个位通道。
16.如权利要求12所述的方法,其中,所述第一操作是读取操作,并且在所述读取操作期间检测到错误,所述方法还包括执行写入操作,其中,所述存储控制器将所述备用位通道中的信息写入由所述备用位通道中包含的所述位置信息标识的所述存储器位位置。
17.如权利要求12所述的方法,其中,在读取操作期间,从所述备用位通道读取有效数据,其中,所述有效数据包括数据位,用于所述数据位的位置信息的一个或多个位,以及用于保护所述数据位和所述位置位的纠错码的一个或多个位。
18.如权利要求12所述的方法,其中在读取操作期间,从所述备用位通道读取有效数据,其中,所述有效数据包括一个备用位,其中所述存储控制器使用存储在所述备用位通道中的位置信息将所述读取数据重新映射到所述备用位中以重建原始的非稀疏数据。
19.如权利要求12所述的方法,还包括:
在不同的操作中检测位存储器位置中的第二错误,所述第二错误发生在与所述第一位错误相同的存储位位置和不同的存储位位置组成的组中的至少一个中;以及
在该不同操作中,将要存储在检测到所述第二错误的存储位位置的数据重新映射到单个备用位通道。
20.如权利要求12所述的方法,其进一步包含提供多个存储器设备,其中多个位被配置以存储数据,多个位用于纠错码且至少一个位用于管理纠错。
CN201980008000.7A 2018-01-19 2019-01-15 存储器系统中的有效和选择性的备用位 Active CN111566738B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/875,136 US10671497B2 (en) 2018-01-19 2018-01-19 Efficient and selective sparing of bits in memory systems
US15/875,136 2018-01-19
PCT/IB2019/050299 WO2019142093A1 (en) 2018-01-19 2019-01-15 Efficient and selective sparing of bits in memory systems

Publications (2)

Publication Number Publication Date
CN111566738A true CN111566738A (zh) 2020-08-21
CN111566738B CN111566738B (zh) 2023-12-22

Family

ID=67298203

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980008000.7A Active CN111566738B (zh) 2018-01-19 2019-01-15 存储器系统中的有效和选择性的备用位

Country Status (6)

Country Link
US (3) US10671497B2 (zh)
JP (1) JP7267285B2 (zh)
CN (1) CN111566738B (zh)
DE (1) DE112019000211B4 (zh)
GB (1) GB2585514B (zh)
WO (1) WO2019142093A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10657002B2 (en) * 2017-11-10 2020-05-19 International Business Machines Corporation Method and apparatus to rollback memory DIMM lane sparing
US11216333B2 (en) * 2018-10-16 2022-01-04 Micron Technology, Inc. Methods and devices for error correction
US11437114B1 (en) * 2020-05-04 2022-09-06 Meta Platforms, Inc. Reduced error correction code for dual channel DDR dynamic random-access memory
US11803444B1 (en) * 2022-06-15 2023-10-31 Micron Technology, Inc. Cooperative memory subsystem data recovery
US20230409426A1 (en) * 2022-06-16 2023-12-21 Advanced Micro Devices, Inc. Host-level error detection and fault correction

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4460998A (en) * 1981-03-11 1984-07-17 Nippon Telegraph & Telephone Public Corporation Semiconductor memory devices
US5617365A (en) * 1988-10-07 1997-04-01 Hitachi, Ltd. Semiconductor device having redundancy circuit
US7184916B2 (en) * 2003-05-20 2007-02-27 Cray Inc. Apparatus and method for testing memory cards
CN104572517A (zh) * 2013-10-24 2015-04-29 国际商业机器公司 提供被请求数据的方法、控制器以及计算机系统
US20160062860A1 (en) * 2014-08-28 2016-03-03 Research & Business Foundation Sungkyunkwan University Method of improving error checking and correction performance of memory

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4594660A (en) 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Collector
US6237076B1 (en) 1998-08-19 2001-05-22 International Business Machines Corporation Method for register renaming by copying a 32 bits instruction directly or indirectly to a 64 bits instruction
US6366998B1 (en) 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6711602B1 (en) 2000-02-18 2004-03-23 Texas Instruments Incorporated Data processor with flexible multiply unit
US6760856B1 (en) 2000-07-17 2004-07-06 International Business Machines Corporation Programmable compensated delay for DDR SDRAM interface using programmable delay loop for reference calibration
US6418068B1 (en) 2001-01-19 2002-07-09 Hewlett-Packard Co. Self-healing memory
US7334201B1 (en) 2004-07-02 2008-02-19 Tensilica, Inc. Method and apparatus to measure hardware cost of adding complex instruction extensions to a processor
US7539800B2 (en) * 2004-07-30 2009-05-26 International Business Machines Corporation System, method and storage medium for providing segment level sparing
US8060774B2 (en) 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
US7379330B2 (en) * 2005-11-08 2008-05-27 Sandisk Corporation Retargetable memory cell redundancy methods
US7465185B2 (en) 2006-03-30 2008-12-16 Fci Americas Technology, Inc Electrical connector assembly with mate-assist and a wire dress cover
US20070239970A1 (en) 2006-04-06 2007-10-11 I-Tao Liao Apparatus For Cooperative Sharing Of Operand Access Port Of A Banked Register File
US7712010B2 (en) * 2006-06-15 2010-05-04 International Business Machines Corporation Systems, methods and computer program products for utilizing a spare lane for additional checkbits
GB0612892D0 (en) 2006-06-29 2006-08-09 Ibm Error correction for digital systems
US9250899B2 (en) 2007-06-13 2016-02-02 International Business Machines Corporation Method and apparatus for spatial register partitioning with a multi-bit cell register file
KR100882841B1 (ko) 2007-06-19 2009-02-10 삼성전자주식회사 읽기 디스터번스로 인한 비트 에러를 검출할 수 있는메모리 시스템 및 그것의 읽기 방법
US7877582B2 (en) 2008-01-31 2011-01-25 International Business Machines Corporation Multi-addressable register file
JP5309636B2 (ja) 2008-03-21 2013-10-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法
KR20100115970A (ko) * 2009-04-21 2010-10-29 삼성전자주식회사 배드 셀 관리 방법과 그 장치
GB2478731B (en) 2010-03-15 2013-08-21 Advanced Risc Mach Ltd Operand size control
US8635487B2 (en) 2010-03-15 2014-01-21 International Business Machines Corporation Memory interface having extended strobe burst for write timing calibration
US8677211B2 (en) * 2010-12-23 2014-03-18 International Business Machines Corporation Data bus inversion using spare error correction bits
DE112012005617T5 (de) * 2012-01-31 2014-10-09 Hewlett-Packard Development Company, L.P. Speicherung von Daten in Speichermodulpuffern
US20130246761A1 (en) 2012-03-13 2013-09-19 International Business Machines Corporation Register sharing in an extended processor architecture
US9430324B2 (en) * 2013-05-24 2016-08-30 Rambus Inc. Memory repair method and apparatus based on error code tracking
US9619230B2 (en) 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
US9715424B1 (en) * 2013-08-23 2017-07-25 Rambus Inc. Memory device and repair method with column-based error code tracking
US10318299B2 (en) 2013-10-31 2019-06-11 International Business Machines Corporation Reading a register pair by writing a wide register
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9697094B2 (en) 2015-02-06 2017-07-04 Intel Corporation Dynamically changing lockstep configuration
US20170109093A1 (en) 2015-10-14 2017-04-20 International Business Machines Corporation Method and apparatus for writing a portion of a register in a microprocessor
US10261856B2 (en) * 2016-11-04 2019-04-16 International Business Machines Corporation Bitwise sparing in a memory system
US10606713B2 (en) * 2018-01-03 2020-03-31 International Business Machines Corporation Using dual channel memory as single channel memory with command address recovery

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4460998A (en) * 1981-03-11 1984-07-17 Nippon Telegraph & Telephone Public Corporation Semiconductor memory devices
US5617365A (en) * 1988-10-07 1997-04-01 Hitachi, Ltd. Semiconductor device having redundancy circuit
US7184916B2 (en) * 2003-05-20 2007-02-27 Cray Inc. Apparatus and method for testing memory cards
CN104572517A (zh) * 2013-10-24 2015-04-29 国际商业机器公司 提供被请求数据的方法、控制器以及计算机系统
US20160062860A1 (en) * 2014-08-28 2016-03-03 Research & Business Foundation Sungkyunkwan University Method of improving error checking and correction performance of memory

Also Published As

Publication number Publication date
US10671497B2 (en) 2020-06-02
DE112019000211T5 (de) 2020-08-13
CN111566738B (zh) 2023-12-22
WO2019142093A1 (en) 2019-07-25
JP7267285B2 (ja) 2023-05-01
GB2585514B (en) 2021-05-19
DE112019000211B4 (de) 2021-08-26
US20190227886A1 (en) 2019-07-25
US20220027243A1 (en) 2022-01-27
GB2585514A (en) 2021-01-13
US20200226040A1 (en) 2020-07-16
GB202012499D0 (en) 2020-09-23
US11182262B2 (en) 2021-11-23
US11698842B2 (en) 2023-07-11
JP2021510897A (ja) 2021-04-30

Similar Documents

Publication Publication Date Title
US10705908B2 (en) Semiconductor memory devices, memory systems including the same and methods of operating memory systems
CN111566738B (zh) 存储器系统中的有效和选择性的备用位
US20190034270A1 (en) Memory system having an error correction function and operating method of memory module and memory controller
US8392796B2 (en) Reliability, availability, and serviceability solution for memory technology
US8626995B1 (en) Flexible sequence design architecture for solid state memory controller
US11928025B2 (en) Memory device protection
EP3770764B1 (en) Method of controlling repair of volatile memory device and storage device performing the same
US11775179B2 (en) Enabling stripe-based operations for error recovery at a memory sub-system
US11126379B2 (en) Memory system
US11593196B2 (en) Method and apparatus to reduce bandwidth overhead of CRC protection on a memory channel
US11625298B2 (en) Memory block defect detection and management
US11119676B2 (en) Using spare bits in memory systems
US20230214119A1 (en) Data stripe protection
US20230137339A1 (en) Memory device, memory module including the memory device, and operating method of memory controller
CN117795466A (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
GR01 Patent grant
GR01 Patent grant