CN105589762B - 存储器装置、存储器模块和用于纠错的方法 - Google Patents
存储器装置、存储器模块和用于纠错的方法 Download PDFInfo
- Publication number
- CN105589762B CN105589762B CN201510511311.9A CN201510511311A CN105589762B CN 105589762 B CN105589762 B CN 105589762B CN 201510511311 A CN201510511311 A CN 201510511311A CN 105589762 B CN105589762 B CN 105589762B
- Authority
- CN
- China
- Prior art keywords
- error
- memory
- data
- interface
- memory device
- 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.)
- Active
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
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Debugging And Monitoring (AREA)
Abstract
提供了一种存储器装置、存储器模块和用于纠错的方法。实施例包括一种存储器装置,所述存储器装置包括:存储器,被配置为存储数据;数据接口;错误接口;控制器,结合到数据接口、错误接口和存储器。控制器被配置为通过数据接口发送存储在存储器中的数据,并且控制器被配置为通过错误接口发送响应于纠正在从存储器读取的数据中的错误而生成的错误信息。
Description
本申请要求于2014年8月19日提交的第62/039,396号美国临时专利申请、2014年9月29日提交的第62/057,199号美国临时专利申请和2014年11月4日提交的第62/075,231号美国临时专利申请以及于2015年1月9日提交的第14/594,049号美国专利申请以及与2015年4月4日提交的第14/678,968号美国临时专利申请的权益,上述每件专利申请的内容通过引用全部包含于此以用于所有目的。
技术领域
本公开涉及一种存储器系统架构,更具体地讲,涉及一种具有纠错的存储器系统架构。
背景技术
存储器控制器可以被配置为执行纠错。例如,存储器控制器可以从存储器模块读取72比特的数据,其中,64比特为数据而8比特为奇偶校验。存储器控制器可以执行其他纠错技术。利用这样的技术,可以识别和/或纠正从存储器模块读取的数据中的一些错误。另外,存储器控制器可以使与错误有关的信息可利用。包括存储器控制器的系统可以基于错误信息(诸如撤回存储页或停止系统等)做出操作上的决定。这样的存储器控制器可以与处理器集成在一起。例如,英特尔赛扬处理器可以包括被配置为执行纠错的集成存储器控制器。
但是,如果在数据被存储器控制器接收之前执行纠错,则与纠正相关的错误信息在存储器控制器中可能无法被使用,因此系统也无法使用所述与纠正相关的错误信息以进行系统管理决定。
发明内容
实施例包括一种存储器装置,所述存储器装置包括:被配置为存储数据的存储器、数据接口、错误接口以及结合到数据接口、错误接口和存储器的控制器。控制器被配置为通过数据接口发送存储在存储器中的数据;并且控制器被配置为通过错误接口发送响应于纠正从存储器读取的数据中的错误而生成的错误信息。
另一个实施例包括一种方法,所述方法包括以下步骤:响应于从数据接口接收的读取命令而在存储器装置处读取包括错误的数据;基于读取包括错误的数据来记录错误信息;通过错误接口从存储器模块发送错误信息。
另一个实施例包括一种存储器模块,所述存储器模块包括:数据接口;错误接口;多个存储器装置,每个存储器装置结合到数据接口和错误接口并且包括被配置为存储数据的存储器、被结合到数据接口、错误接口和存储器的控制器。控制器被配置为通过数据接口发送存储在存储器中的数据;并且控制器被配置为通过错误接口发送响应于纠正从存储器读取的数据中的错误而生成的错误信息。
附图说明
图1是根据实施例的具有存储器系统架构的系统的示意图。
图2是根据实施例的具有包括控制器的存储器系统架构的系统的示意图。
图3是根据实施例的具有包括基板(baseboard)管理控制器的存储器系统架构的系统的示意图。
图4是根据实施例的具有不含有基于处理器的纠错的存储器系统架构的系统的示意图。
图5是根据实施例的具有包含有毒(poisoned)数据选通信号的存储器系统架构的系统的示意图。
图6是根据实施例的具有包含单独的不可纠正错误信号的存储器系统架构的系统的示意图。
图7是根据实施例的具有包含软件模块的存储器系统架构的系统的示意图。
图8是根据实施例的具有包含错误检测和纠正模块的存储器系统架构的系统的示意图。
图9是根据实施例的具有包含聚合模块的存储器系统架构的系统的示意图。
图10是根据实施例的具有包含从存储控制架构模块聚合(aggregate)信息的纠错模块的存储器系统架构的系统的示意图。
图11是根据实施例的具有包含共享接口的多个模块的存储器系统架构的系统的示意图。
图12是根据实施例的具有包含共享接口的可纠正错误模块和串行存在检测/寄存时钟驱动器模块的存储器系统架构的系统的示意图。
图13是根据实施例的具有包含DRAM内纠错的存储器系统架构的系统的示意图。
图14A至图14D是根据一些实施例的具有包含模块内纠错的存储器系统架构的系统的示意图。
图15是根据实施例的存储器模块的示意图。
图16是根据实施例的具有SPD或RCD接口的存储器模块的示意图。
图17是根据实施例的具有单独的不可纠正的错误接口的存储器模块的示意图。
图18是根据实施例的存储器装置的示意图。
图19是根据另一个实施例的存储器装置的示意图。
图20是根据实施例的包括存储器装置的存储器模块的示意图。
图21是根据实施例的对错误信息进行通信的技术的流程图。
图22是根据实施例的处理错误的技术的流程图。
图23是根据另一个实施例的处理错误的技术的流程图。
图24A是根据实施例的对错误信息进行通信的技术的流程图。
图24B是根据另一个实施例的对错误信息进行通信的技术的流程图。
图25是根据另一个实施例的对错误信息进行通信的技术的流程图。
图26是根据另一个实施例的对错误信息进行通信的技术的流程图。
图27是根据实施例的具有存储器系统架构的系统的示意图。
图28是根据实施例的服务器的示意图。
图29是根据实施例的服务器系统的示意图。
图30是根据实施例的数据中心的示意图。
具体实施方式
实施例涉及存储器系统架构。给出下面的描述以使本领域普通技术人员能够制作和使用实施例,在专利申请的语境及其需求中提供下面的描述。对实施例的各种修改以及在此描述的普遍原理及特征将是容易理解的。主要以在具体实施方式中提供的具体方法和系统来描述实施例。
然而,方法和系统将以其他实施来有效地操作。诸如“实施例”、“一个实施例”和“另一个实施例”的短语可以指示相同或不同的实施例,也指示多个实施例。将针对具有特定组件的系统和/或装置来描述实施例。然而,系统和/或装置可以包括比示出的组件更多或更少的组件,可以在不脱离本公开的范围的情况下做出组件的布置和类型上的变化。还将在具有特定步骤的具体方法的语境中描述实施例。然而,方法和系统根据具有不同的和/或附加的步骤的其他方法来操作,并且以与实施例不一致的不同顺序分步。因此,实施例不意图受限于示出的具体实施例,而是将符合与在此描述的原理和特征相一致的最宽范围。
在具有特定组件的具体存储器系统架构的语境下描述实施例。本领域的普通技术人员将容易认识到,实施例与具有其他和/或附加组件和/或其他特征的存储器系统架构的用途相一致。然而,本领域的普通技术人员将容易认识到的是,方法和系统与其他结构一致。还可以在单个元件的语境下描述方法和系统。然而,本领域的普通技术人员将容易认识到的是,方法和系统与具有多个元件的存储器系统架构相一致。
本领域技术人员将理解的是,通常在这里特别是权利要求(例如,权利要求的正文)中使用的术语通常意图为“开放”式(例如,术语“包括”应该被解释为“包括但不限于”,术语“具有”应该被解释为“至少具有”,术语“包含”应该被解释为“包含但不限于”等)。本领域内的技术人员还将理解的是,如果意图特定数量的引导权利要求叙述,则这样的意图将明确记载在权利要求中,并且当不存在这样的叙述时,没有这样的意图。例如,为了有助于理解,权利要求可以包含使用引导性的短语“至少一个”和“一个或更多个”以引导权利要求的叙述。然而,使用这样的短语不应被理解为暗示通过不定冠词“一”或“一个”引导的权利要求叙述将含有这样的引导权利要求叙述的任何具体的权利要求限定为仅包含一个这样的叙述的示例,即使当同一项权利要求包括引导性的短语“一个或多个”或“至少一个”和不定冠词例如“一”或“一个”(例如,“一”和/或“一个”应该被解释为指“至少一个”或者“一个或多个”);同样的道理适用于使用用于引导权利要求叙述的定冠词。此外,在使用类似于“A、B或C等中的至少一个”的习惯语的情况下通常这样的解释意图在本领域技术人员将理解该习惯语的意义上(例如,“具有A、B或C中的至少一个的系统”将包括但不限于具有单独的A、单独的B、单独的C、A和B一起、A和C一起、B和C一起和/或A、B和C一起等的系统)。本领域内的技术人员还将理解的是,实际上任何表示两个或更多个可选术语的转折词和/或短语,无论在说明书、权利要求书或者附图中,都应该被理解为设想包括所有术语、任一术语或两个术语中的一种情况的可能性。例如,短语“A或B”将被理解为包括“A”或“B”或者包括“A和B”的可能性。
图1是根据实施例的具有存储器系统架构的系统的示意图。系统100包括结合到处理器104的存储器102。存储器102被配置为存储数据。当数据从存储器102被读取时,存储器102被配置为如果数据中有错误则纠正该数据中的错误。例如,存储器102可以被配置为纠正单比特错误。存储器102还可以被配置为检测双比特错误。虽然具体数量的错误纠正已被用作示例,但是可以将存储器120配置为纠正任意数量的错误,或者检测任意数量的错误。此外,虽然一种或更多种纠错技术可以引起单比特纠错和/或双比特纠错,但是存储器102可被配置为执行能够纠正至少一个错误的任何纠错技术。
存储器102可以包括被配置为存储数据的任意装置。在具体示例中,存储器102可以是动态随机存取存储器(DRAM)模块。存储器102可以包括根据诸如DDR、DDR2、DDR3或DDR4等的任意标准的双倍数据速率同步动态随机存取存储器(DDR SDRAM)。在其他实施例中,存储器102可以包括静态随机存取存储器(SRAM)或非易失性存储器等。
存储器102被配置为响应于纠正和/或尝试纠正在从存储的数据读取的数据中的错误而生成错误信息。例如,错误信息可以包括关于纠正的错误、未纠正的错误、错误不存在、这种错误的数量等的信息。错误信息可以包括关于实际错误、错误的地址、错误已经发生的次数的信息或者专用于存储器102的其他信息。在具体示例中,错误信息可以包括关于单比特错误的信息,所述关于单比特错误的信息表示存储器102纠正了单比特错误。虽然已经描述了错误信息的具体示例,但是错误信息可以包括与错误有关的任何信息。
处理器104可以是被配置为可操作地结合到存储器102并且能够执行指令的任何装置。例如,处理器104可以是通用处理器、数字信号处理器(DSP)、图形处理单元(GPU)、专用集成电路或可编程逻辑装置等。
处理器104通过第一通信路径106和第二通信路径108结合到存储器102。处理器104被配置为通过第一通信路径106从存储器接收数据。例如,第一通信路径106可以是具有用于数据信号、选通信号、时钟信号、使能信号等的信号线的系统存储器接口。即,通信路径106可以是主存储器通道的一部分,其中,主存储器通道是作为处理器104与作为主系统内存的存储器102之间的接口的主存储器通道的一部分。
处理器104还通过与第一通信路径不同的通信路径(诸如,第二通信路径108)结合到存储器102。处理器104被配置为通过第二通信路径108从存储器102接收错误信息。因此,在示例中,处理器104被配置为通过不同于第一通信路径106的通信路径接收错误信息,具体地讲,纠正的错误信息。所述纠正的错误信息是与纠正的错误有关的错误信息。如上所述,错误信息可以包括与错误有关的各种类型的信息。因此,纠正的错误信息可以包括与纠正的错误有关的相似类型的信息。
软件110被示出为结合到处理器104,然而,软件110表示可以在处理器104上运行的各种程序、驱动器、模块或例程等。例如,软件110可以包括驱动器、内核模块、守护进程(daemon)、应用等。在一些实施例中,软件110可以使处理器104被配置为执行在此描述的具体功能。
虽然单个存储器102已被用作示例,但任何数量的存储器102可以通过与通信路径106和108相似的两条通信路径而结合到处理器104。在实施例中,每个存储器102可以通过与其他存储器102分开的专用的第一通信路径106和也与其他存储器102分开的专用的第二通信路径108而结合到处理器104。然而,在其他实施例中,第一通信路径106可以被多于一个的存储器102所共享,且第二通信路径108可以被多于一个的存储器102所共享。另外,虽然已经描述了单条第一通信路径106,但是可以存在位于一个或更多个存储器102之间的多条第一通信路径106。类似地,虽然已经描述了单条第二通信路径108,但是可以存在位于一个或更多个存储器102之间的多条第二通信路径108。
在实施例中,可以通过带外通信路径来执行错误信息的通信。第二通信路径108可以是这样的带外通信路径。即,可以通过第一通信路径106进行处理器104与存储器102之间的主通信,而通过带外第二通信路径108进行错误信息的通信。
图2是根据实施例的具有包括控制器的存储器系统架构的系统的示意图。在本实施例中,系统200包括与图1的存储器102、处理器104、通信路径106和108以及软件110相似的存储器202、处理器204、通信路径206和208以及软件210。然而,第二通信路径208包括结合在控制器214与存储器202之间的第一总线212以及结合在控制器214与处理器204之间的第二总线216。换言之,与处理器204和存储器202两者结合的控制器214是第二通信路径208的一部分。
控制器214可以是被配置为可操作地结合到存储器202和处理器204的任何装置。例如,控制器214可以包括通用处理器、数字信号处理器(DSP)、专用集成电路、可编程逻辑装置等。
总线212和216可以是任何种类的通信链路。例如,总线212和216可以是系统管理总线(SMBus)、集成电路间(I2C)总线、智能平台管理接口(IPMI)兼容总线、Modbus总线等。在具体实施例中,通信路径208的至少一部分可实质上比通信路径206慢。例如,可以将存储器202与处理器204之间的通信路径206设计为大约10GB/s的较高数据传输速率,然而,通信路径208可以具有大约10Mbit/s或100kbit/s等的较低数据传输速率。因此,在一些实施例中,通信路径206与通信路径208的数据传输速度的比例可以为大约100、1000或者更多。
在实施例中,第二通信路径208可以是专用通信路径。即,第二通信路径208可仅被用于信息在存储器202与处理器204之间的通信。然而,在其他实施例中,控制器214可以允许其他装置访问。例如,非存储器装置268可以通过总线212结合到控制器214。在另一个实施例中,其他装置266可以结合到控制器214。因此,可以经过总线212和/或总线216来向处理器204和/或存储器202发送除了来自存储器202的信息之外的信息,并且可以经过总线212和/或总线216从处理器204和/或存储器202接收所述信息。具体地讲,可以经过用于包括非存储目的的其他目的的第二通信路径208将来自存储器202的错误信息通信到处理器204。
在实施例中,控制器214可以包括非易失性存储器254。非易失性存储器254可以被配置为存储来自存储器202的错误信息。因此,错误信息可以在断电时保留在控制器214中。处理器204可以被配置为向控制器214请求错误信息。因此,控制器214可被配置为通过提供存储在非易失性存储器254中的错误信息来响应这样的请求,通过访问存储器202来检索错误信息从而响应控制器204等。
在实施例中,控制器214可以被配置为对存储器202进行轮询(poll)以获取错误信息。在另一个实施例中,存储器202可以被配置为向控制器214推送错误信息。不论如何,存储在非易失性存储器254中的错误信息可以基本上是最新(up-to-date)的拷贝。
图3是根据实施例的具有包括基板(baseboard)管理控制器的存储器系统架构的系统的示意图。在本实施例中,系统300包括与图2的存储器202、处理器204、通信路径206和208以及软件210相似的存储器302、处理器304、通信路径306和308以及软件310。然而,控制器314是基板管理控制器(BMC)314。
BMC 314可以被配置为管理系统300。例如,BMC 314可以结合到系统300的各种传感器,包括处理器304的传感器、存储器302的传感器、其他装置366的传感器等。BMC 314可以被配置为收集和报告各种系统参数(诸如温度、冷却状态、电力状态等)。BMC 314可以被配置为管理系统并且根据标准来允许对信息的访问。管理信息可变成可用于处理器304,从而管理信息可用于软件310。可选择地,BMC 314可以通过诸如带外通信路径的另一条通信路径来使所述信息变成可使用。这里,带外通信路径可以包括不包括处理器304的任何通信路径。
图4是根据实施例的具有不包含基于处理器的纠错(processor-based errorcorrection)的存储器系统架构的系统的示意图。在本实施例中,系统400包括与图1的存储器102、处理器104、通信路径106和108以及软件110相似的存储器402、处理器404、通信路径406和408以及软件410。然而,在本实施例中,处理器404包括存储器控制器(MC)450和机器检查架构(MCA)寄存器452。
存储器控制器450与处理器404集成在一起。存储器控制器450可以是作为处理器404与存储器402之间的接口的主存储通道的一部分。存储器控制器450被配置为控制通过通信路径406对于存储在存储器402中的数据的访问。在一些实施例中,存储器控制器450可以被配置为纠正错误,但是没有机会纠正例如可能已经被存储器402执行了纠错的错误。然而,在本实施例中,存储器控制器450没有被配置为纠正从存储器402读取的数据中的错误。存储器控制器405可不被配置为报告基于从存储器402读取的数据的任何错误信息。
MCA寄存器452是可以报告硬件错误的寄存器。例如,高速缓冲存储器错误、总线错误、数据错误等可被MCA寄存器452检测并报告。然而,因为存储器控制器450没有被配置为纠正从存储器402读取的数据中的错误,所以MCA寄存器452不会报告基于从存储器402读取的数据的任何潜在的错误信息。无论如何,如上所述,错误信息可通过通信路径408被传送给处理器404。因此,即使没有通过存储器控制器450和MCA寄存器452,错误信息对于软件410仍然是可使用的。
在实施例中,错误信息通过第二通信路径408的可使用性可以使系统400的成本较低。例如,可以使用具有存储器控制器450而不具有任何存储器纠错的处理器404,而错误信息仍然可以是可使用的。具体地讲,即使期望存储器纠错,因为通过第二通信路径408可使用错误信息,所以也可以使用不具有存储器纠错的处理器404。因此,包括使用错误信息的任何软件的软件410仍然可以像处理器404能够进行存储器纠错那样操作。因此,不具有存储器纠错的处理器404可以是功率较低、成本较低的处理器。因此,可以降低系统400的总体功率使用和/或成本。
虽然存储器控制器450已经被示出为与处理器404集成在一起,但是存储器控制器450可以与处理器404分离。无论如何,通信路径408可以绕开存储器控制器450和处理器404的可能已经另有纠错电路的其他部分。这样的组件的旁路使通过第二通信路径408的传送错误信息基本上独立于存储器控制器450、MCA寄存器452等的特征。即,即使相似的信息通过存储器控制器450和/或MCA寄存器452是不可使用的,错误信息也仍然可以是可使用的。
图5是根据实施例的具有包含有毒数据选通信号的存储器系统架构的系统的示意图。在本实施例中,系统500包括与图1的存储器102、处理器104、通信路径106和108以及软件110相似的存储器502、处理器504、通信路径506和508以及软件510。然而,在本实施例中,通信路径506包括数据线532和数据选通线533。可存在其他线作为通信路径506的一部分;然而,为了清楚起见,没有示出这些线。
在实施例中,可以通过不同的路径来对与不可纠正的错误有关的错误信息以及与可纠正的错误有关的错误信息进行通信。如上所述,可以通过通信路径508来对可纠正的错误信息进行通信。不可纠正的错误信息可以基于不可纠正的错误而包括各种不同类型的信息。可以通过第一通信路径506来对不可纠正的错误信息进行通信。例如,存储器装置502可被配置为通过经过数据选通线533发送(或未发送)的信号来对不可纠正的错误进行通信。即,在正常的数据传输期间,因数据被传输,经过数据选通线533发送的数据选通信号可被触发;然而,如果存储器502已经检测到了不可纠正的错误,则存储器502可以被配置为生成与正常数据传输期间的数据选通信号不同的用于经过数据选通线533发送的数据选通信号。在具体示例中,存储器502可被配置为不触发通过数据选通线533发送的数据选通信号。当检测到这样的情形时,处理器504可以被配置为发生硬件异常,该硬件异常可以由软件510来处理。
虽然已经使用通信路径506内的信号和/或线的具体示例作为对不可纠正的错误进行通信的技术的示例,但是可以使用其他信号和/或线将不可纠正的错通信给处理器504。不论如何通信,处理器504均被配置为诸如通过使系统500停止或采取另一种措施来响应这样的不可纠正的错误的通信。
图6是根据实施例的具有包含单独的不可纠正错误信号的存储器系统架构的系统的示意图。在本实施例中,系统600包括与图1的存储器102、处理器104、通信路径106和108以及软件110相似的存储器602、处理器604、通信路径606和608以及软件610。然而,在本实施例中,单独的通信路径634结合在存储器602与处理器604之间。
与图5的系统500类似,可以将不可纠正的错误通信到处理器604。在本实施例中,存储器602被配置为经过第三通信路径634来对不可纠正的错误信息进行通信。例如,第三通信路径634可以是与第一通信路径606分开的专用线。因此,关于不可纠正的错误的错误信息可被处理器604接收,只是通过第一通信路径606和第二通信路径608之外的通信路径来接收。
图7是根据实施例的具有包含软件模块的存储器系统架构的系统的示意图。在本实施例中,系统700包括与图1的存储器102、处理器104、通信路径106和108以及软件110相似的存储器702、处理器704、通信路径706和708以及软件710。然而,在本实施例中,软件710包括模块718。
模块718代表软件710的被配置为通过处理器访问错误信息722的部分。例如,模块718可以包括内核模块、驱动器、扩展等。模块718可以包括用于与通信路径708相关联的接口的驱动器。在具体示例中,模块718可以包括与IPMI总线、IPMI2总线等关联的驱动器。其他信息720还可以对于软件710是可使用的。错误信息722被单独示出以表示软件710的哪个部分与错误信息722关联。
在实施例中,模块718可以引发处理器704向存储器702请求错误信息。例如,存储器702可以生成错误信息。不久以后,处理器704可以通过通信路径708发送针对错误信息的请求。存储器702可以被配置为通过通信路径708用错误信息来响应该请求。
图8是根据实施例的具有包含错误检测和纠正模块的存储器系统架构的系统的示意图。在本实施例中,系统800包括与图7的存储器702、处理器704、通信路径706和708以及具有响应于信息720和722的模块718的软件710相似的存储器802、处理器804、通信路径806和808以及具有响应于信息820和822的模块818的软件810。然而,在本实施例中,软件810还包括错误检测和纠正(EDAC)模块824。
在实施例中,EDAC模块可以被配置为管理来自系统800的存储器、高速缓冲存储器、输入/输出(I/O)装置、外设、总线和/或其他方面的错误信息,并且可以被配置为向诸如应用层的更高的功能性层暴露这样的信息。具体地讲,EDAC模块824可以被配置为从模块818接收错误信息。EDAC模块824可以被配置为将错误信息与其他信息组合,使得其他模块、应用等可以访问错误信息。
图9是根据实施例的具有包含聚合模块的存储器系统架构的系统的示意图。在本实施例中,与图7的存储器702、处理器704、通信路径706和708以及具有响应于信息720和722的模块718的软件710相似,系统900包括存储器902、处理器904、通信路径906和908以及具有响应于信息920和922的第一模块918的软件910。然而,在本实施例中,软件910还包括第二模块926。第二模块926被配置为接收信息920。具体地讲,这个其他信息920可以包括与存储器902上错误无关的信息。可以由第一模块918来接收其他信息920的至少一部分921。第一模块918可以被配置为将错误信息922与来自第二模块926的一些或全部其他信息920的进行组合。第一模块918可以被配置为用单个接口来提供组合后的信息。例如,第一模块918可以被配置为向诸如图8的EDAC模块824的EDAC模块提供组合后的信息。
图10是根据实施例的具有包含从存储器控制架构模块聚合信息的纠错模块的存储器系统架构的系统的示意图。在本实施例中,系统1000包括与图9的存储器902、处理器904、通信路径906和908以及具有响应于信息920和922的模块918的软件910相似的存储器1002、处理器1004、通信路径1006和1008以及具有响应于信息1020和1022的模块1018和1026的软件1010。然而,在本实施例中,模块1018是纠错(EC)模块1018,模块1026是MCA模块1026。
MCA模块1026被配置为控制对于MCA寄存器(诸如图4的MCA寄存器452)的访问。信息1020代表来自MCA寄存器的这样的信息。EC模块1018被配置为访问MCA模块1026,以检索这样的信息1020。EC模块1018可以将来自MCA模块1026的信息1020与错误信息1022组合,并且用单个接口来提供组合后的信息。
具体地讲,EC模块1018可以提供与MCA模块1026的接口相同或相似的接口,使得处理器1004能够纠正错误。例如,如果处理器1004被配置为纠正在从存储器1002读取的数据中的错误并且这样的错误信息是可使用的,则该信息可以通过MCA模块1026是可使用的。然而,如果处理器1004没有被配置为纠正从存储器1002读取的数据中的错误,或者处理器1004被配置为纠正错误但是由于该错误在存储器1002中被纠正而从未通过由MCA模块1026监视的通信路径接收错误信息,则MCA模块1026无法提供错误信息。不论如何,EC模块1018可以将MCA模块1026信息1020与通过通信路径1008获得的错误信息1022组合并且提供组合的信息,该组合的信息与MCA模块1026原本将要提供的信息相同或相似,其中,该信息使得处理器1004被配置为纠正从存储器1002读取的数据中的错误或者错误信息对MCA模块1026是可使用的。然后,软件可以使用相同或相似的接口,而与是否存在具有纠错的处理器1004无关。换言之,对于依赖将要被充分可操作的错误信息的软件而言,能够纠错的处理器1004不是必要的。结果,可以通过使用不具有纠错的廉价处理器1004来降低成本。
图11是根据实施例的具有包含共享接口的多个模块的存储器系统架构的系统的示意图。在本实施例中,系统1100包括与图7的存储器702、处理器704、通信路径706和708以及响应于信息720和722的软件710相似的存储器1102、处理器1104、通信路径1106和1108以及响应于信息1120和1122的软件1110。然而,在本实施例中,软件1110包括第一模块1118、第二模块1128和接口模块1130。
第一模块1118与图7的模块718相似。然而,第一模块1118被配置为通过接口模块1130从存储器1102接收错误信息。接口模块1130是被配置为提供对通信路径1108的接口的模块。例如,接口模块1130可以是被配置为允许经过IPMI总线访问的模块。
其他模块(诸如第二模块1128)还可以被配置为使用接口模块1130来通信。例如,第二模块1128可以被配置为访问添加到IPMI总线的装置、访问存储器1102的另一个方面(诸如热或功率信息)等。错误信息和其他信息可以是通过接口模块1130传输的信息1122的一部分。换言之,可以使用专用软件沿着整个路径传输错误信息,但是错误信息还可以与有关的或无关的信息和/或资源共享模块、接口、总线等。
图12是根据实施例的具有包含共享接口的可纠正错误模块和串行存在检测/寄存时钟驱动器模块的存储器系统架构的系统的示意图。在本实施例中,系统1200包括与图11的存储器1102、处理器1104、通信路径1106和1108以及响应于信息1120和1122的具有模块1118、1128和1130的软件1110相似的存储器1202、处理器1204、通信路径1206和1208以及响应于信息1220和1222的具有模块1218、1228和1230的软件1210。然而,在本实施例中,第一模块1218是纠错(CE)模块1218,第二模块1228是串行存在检测(SPD)/寄存时钟驱动器(RCD)模块1228。
具体地讲,SPD/RCD模块1228被配置为访问与串行存在检测系统和/或寄存时钟驱动器系统有关的信息。SPD/RCD模块1228可以被配置为访问上述一个系统或两个系统。通过第二通信路径1208来访问上述信息。因此,在实施例中,可以像与SPD/RCD有关的信息那样,通过同一条通信路径1208来访问来自存储器1202的错误信息。
图13是根据实施例的具有包含DRAM内(in-DRAM)纠错的存储器系统架构的系统的示意图。在本实施例中,系统1300包括与图10的存储器1002、处理器1004以及响应于信息1020和1022的具有EC模块1018和MCA模块1026的软件1010相似的存储器1302、处理器1304以及响应于信息1320和1322的具有EC模块1318和MCA模块1326的内核1310。然而,在本实施例中,每个存储器1302是纠错码(ECC)双列直插存储器模块(DIMM)。每个ECC DIMM 1302被配置为存储数据并且纠正所存储的数据中的错误。在本实施例中,ECC DIMM 1302均通过对应的通信路径1364结合到处理器1304的存储器控制器(MC)1350。与图5的通信路径506相似,通信路径1364包括用于数据信号和数据选通信号等的至少一条线。ECC DIMM 1302均通过通信路径1308结合到处理器1304,其中,通信路径1308包括与图3的总线312、BMC 314和总线316相似的总线1312、BMC 1314和总线1316。
在实施例中,ECC DIMM 1302可以被配置为纠正在从ECC DIMM 1302读取的数据中的一个或更多个错误。纠错技术可以包括单错误纠正-双错误检测(SEC-DEC)技术、单芯片芯片删除(chipkill)技术或双芯片芯片删除技术等。可以使用任何纠错技术。
在本实施例中,存储器控制器(MC)1350没有被配置为执行纠错,或者可选择地,没有被配置为从ECC DIMM 1302接收错误信息。因为从ECC DIMM 1302传输的数据已经被纠正,所以MC 1350不可能再接收到任何表示可纠正的错误的信息。然而,错误信息,尤其是,纠正的错误信息可通过通信路径1308(即,通过总线1312和1316以及BMC 1314)被发送到处理器1304。
在实施例中,处理器1304可以是不能够执行纠错但具有能够连接到总线1316的接口的现有的处理器。然而,一旦处理器1304被内核1310(尤其是,EC模块1318)所配置,则整个系统1300就可以被配置为与具有能够纠错的处理器的系统类似地执行纠错。
在实施例中,EC模块1318可以创建具有ECC接口的虚拟存储器控制器。例如,如上所述,EC模块1318可以被配置为从MCA模块1326接收信息。该信息可以是具有ECC接口的实际存储器控制器可以提供的而不具有一些或所有错误信息的信息。EC模块1318可以用错误信息来补充来自MCA模块1326的信息,以创建希望来自具有ECC接口的存储器控制器的信息的完整集合。EDAC模块1324、存储器ECC守护进程1358、其他应用1360等可在无需如与具有纠错的处理器一起使用的那样改变的情况下被使用。例如,EDAC模块1324可以被配置为向EC模块1318进行轮询以存储ECC信息。反过来,EC模块1318可以返回通过第二通信路径1308接收到的错误信息。与EDAC模块1324通信的存储器ECC守护进程1358可以向EDAC模块1324轮询错误信息。存储器ECC守护进程1358可以随后在应用级别上根据错误信息采取措施。这样的措施可以包括页退回(page retirement)、其他措施以管理错误来保持系统1300运行、保持可靠性的水平、推荐停止运行等。
如上所述,可以检测不可纠正的错误。可以通过MC 1350、MCA寄存器1352和MCA模块1326将不可纠正的错误信息传送到EC模块1318。例如,可以通过MCA模块1326以非可屏蔽的中断、异常等来传送不可纠正的错误。在具体示例中,存储器控制器1350可以响应于所述不可纠正的错误而产生硬件异常,而不管如何被传送到存储器控制器1350。MCA模块1326可以拦截所述异常,并将其传递给EC模块1318。EC模块1318随后可以将所述异常传送到EDAC模块1324。除了如上所述地传送不可纠正的错误信息之外,或者作为上面的替代,还可以通过通信路径1308来传送不可纠正的错误信息。
在实施例中,ECC DIMM 1302可以被配置为向处理器1304提供纠正的数据。然而,该数据可能变成在ECC DIMM 1302与MC 1350之间受到损坏。因此,可以在ECC DIMM 1302与处理器1304或MC 1350之间执行某些形式的纠错。例如,可以使用意图检测通信链路1364上出现的错误的纠错码来编码从ECC DIMM 1302发送的数据。以这样的纠错码,可以使用纠错来保护从ECC DIMM 1302中的存储元件到处理器的基本上整个路径。
图14A至图14D是根据一些实施例的具有包含模块内纠错的存储器系统架构的系统的示意图。参照图14A,系统1400包括与图13的组件相似的组件;然而,在本实施例中,ECCDIMM 1402包括缓冲器1462。缓冲器1462被配置为纠正在从对应的ECC DIMM 1402读取的数据中的错误。具体地讲,可以从内部存储器装置(诸如ECC DIMM 1402的DRAM装置(未示出))读取未纠正的数据。缓冲器1462可以被配置为纠正所述未纠正的错误,并且与在此描述的其他存储器类似地生成纠正的错误信息。该错误信息可以通过通信路径1408来被通信,并且可以如上所述地被使用。即,可以如上所述地使用该错误信息,而不管如何生成该错误信息。
参照图14B,系统1400的组件与图14A的组件相似。然而,在本实施例中,EDAC模块1424被配置为与MCA模块1426通信。例如,EDAC模块1424可以被配置为向MCA模块1426轮询硬件有关的信息、不可纠正的错误信息或者如上所述的通过MCA模块1426可使用的其他信息。EDAC模块1424可以被配置为组合来自MCA模块1426的信息与来自EC模块1418的信息。
参照图14C,系统1400的组件可以与图14A的组件相似。然而,在本实施例中,机器检查事件日志或记录器(Machine Check Event Log or Recoder:MCELOG)模块1425被配置为从CE模块1418接收信息。MCELOG模块1425可以被配置为记录与各种系统错误(诸如存储器错误、数据传输错误或其他错误)有关的机器检查事件(MCE)。MCELOG模块1425可以被配置为向存储ECC守护进程1458提出中断,并且向存储ECC守护进程1458传递错误信息。
参照图14D,系统1400的组件可以与图14C的组件相似。然而,在本实施例中,与图14A和图14B之间的差异相似,MCELOG模块1425可以被配置为从与图14B的EDAC模块1424相似的MCA模块1426接收信息。
虽然已经针对图14A至14D中的具有缓冲器1462的ECC DIMM 1402描述了不同的模块,但是在其他实施例中,可以将各种构造应用于图13的具有ECC DIMM 1302的系统1300。
图15是根据实施例的存储器模块的示意图。存储器模块1500包括一个或更多个存储器装置1501、数据接口1536、错误接口1538和控制器1541。数据接口1536被配置为发送将被存储在存储器装置1501中的数据1540以及从存储器装置1501接收数据。存储器模块1500被配置为生成针对从一个或更多个存储器装置1501读取的数据的错误信息。错误接口1542被配置为发送响应于纠正在从一个或更多个存储器装置1501读取的数据中的错误而生成的错误信息。
数据接口1536是经由其发送存储在存储器装置1501中的数据的接口,并且是经由其接收将被存储在存储器装置1501中的数据1540的接口。例如,数据接口1536可以包括缓冲器、驱动电路、端子或用于线的其它电路(诸如数据线、选通线、地址线、使能线、时钟线等)。
错误接口1538可以是被配置为经过特定总线(诸如SMBus、IPMI或在此描述的其他总线)来通信的接口。在实施例中,错误接口1538可以是存储器模块1500传送除错误信息之外的其他信息的现有的接口。因此,信息1542不但包括错误信息而且还包括其他信息。
控制器1541结合到存储器装置1501、数据接口1536和错误接口1538。控制器1541被配置为获得错误信息。在实施例中,控制器1541可以从存储器装置1501获得错误信息;然而,在其他实施例中,控制器1541可以被配置为纠正在来自存储器装置1501的数据中的错误并生成错误信息。
在实施例中,控制器1541可以被配置为通过数据接口1536来传送不可纠正的错。例如,如上所述,可以使用数据选通信号来表示不可纠正的错误。控制器1541可以被配置为响应于检测到不可纠正的错误而修改从数据接口1536发送的数据选通信号。
图16是根据实施例的具有SPD或RCD接口的存储器模块的示意图。在本实施例中,存储器模块1600包括与图15的一个或更多个存储器装置1501、数据接口1536、错误接口1538和控制器1541相似的一个或更多个存储器装置1601、数据接口1636、错误接口1638和控制器1641。然而,图15的错误接口1538在这里是SPD/RCD接口。
SPD/RCD接口1638可被用于提供对于SPD系统或RCD系统(未示出)的访问。在具体实施例中,错误信息可以通过这样的SPD或RCD系统内的具体寄存器或存储器位置而是可使用的。因此,可以通过能够获得SPD或RCD信息的相同接口来获得错误信息。
由于错误信息通过现有的硬件接口是可使用的,所以可以不需要额外的硬件。例如,通过SPD/RCD接口1638接收的意图访问错误信息的命令可以根据没有被SPD/RCD系统使用的地址、寄存器地址或其他字段而与其他命令不同。在实施例中,可以限定SPD/RCD系统的新寄存器来暴露错误信息。在另一个实施例中,可以重新使用(reuse)现有的寄存器来通信错误信息。
图17是根据实施例的具有单独的不可纠正的错误接口的存储器模块的示意图。在本实施例中,存储器模块1700包括与图15的一个或更多个存储器装置1501、数据接口1536、错误接口1538和控制器1541相似的一个或更多个存储器装置1701、数据接口1736、错误接口1738和控制器1741。然而,存储器模块1700还包括不可纠正的错误(UE)接口1744。
UE接口1744是存储器模块1700被配置为经由其传送不可纠正的错误的单独的接口。例如,UE接口1744可以是专用线或专用总线等。
图18是根据实施例的存储器装置的示意图。在本实施例中,存储器装置1800包括数据接口1836和错误接口1838。数据接口1836和错误接口1838可以与如上所述的图15的数据接口1536和错误接口1538等相似;然而,在本实施例中,数据接口1836和错误接口1838是针对存储器装置1800的接口,而不是针对存储器模块(诸如图15的存储器模块1500)的接口。
存储器装置1800包括控制器1841。控制器1841可以是被配置为可操作地结合到存储器1801以及接口1836和1838的任何装置。例如,控制器1841可以包括通用处理器、数字信号处理器(DSP)、专用集成电路、可编程逻辑装置等。
存储器1801被配置为存储数据。例如,存储器1801可以是存储器单元阵列;然而,在其他实施例中,数据可以存储在其他构造中。存储器1801可以包括电、磁、化学、光学或其他类型的存储元件。
控制器1841被配置为通过数据接口1836来发送存储在存储器1801中的数据。控制器还可以被配置为通过数据接口1836来接收将被存储在存储器1801中的数据。由数据1840来表示这样的传输。
控制器1841被配置为通过错误接口1838来发送响应于纠正在从存储器1801读取的数据中的错误而生成的错误信息。错误信息可以与上面描述的任何类型的错误信息相似。控制器1841还可以被配置为通过错误接口1838来接收命令、指令或其他信息。由信息1842表示错误信息、命令、指令或其他信息的这种传输。
在本实施例中,数据1840和信息1842二者被示出为经过控制器1841。然而,在其他实施例中,可以通过控制器1841来控制存储器装置1800的组件使得数据1840和信息1842不经过控制器1841。例如,在一些实施例中,可以在控制器1841的控制下,将数据和/或错误信息提供到数据接口1836和错误接口1838,但是绕开控制器1841。
图19是根据另一个实施例的存储器装置的示意图。在本实施例中,存储器装置1900包括存储器单元阵列1901。存储器单元阵列1901可以包括存储有数据的存储单元。具体地讲,存储器单元阵列1901可以被配置为存储编码数据。感测放大器1902和写入电路1904是存储器装置1900中的如下电路的示例,即,所述电路允许数据被写入到存储器单元阵列1901的由地址1906表示的一个地址或多个地址并且允许从存储器单元阵列1901的由地址1906表示的一个地址或多个地址读取数据。然而,在其他实施例中,其他读取和写入电路可以与存储器单元阵列1901关联。此外,虽然感测放大感1902和写入电路1904被示出为存储器单元阵列1901的一部分,但是这样的电路可以与存储器单元阵列1901分离。另外,虽然示出了单个存储器单元阵列1901,但是可以存在多个存储器单元阵列1901。
存储器单元阵列1901结合到纠错码(ECC)引擎1908。ECC引擎1908被配置为通过对写入到存储器单元阵列1901的数据进行编码并且对从存储器单元阵列1901读取的数据进行解码来纠正从存储器读取的数据中的至少一个错误。具体地讲,ECC引擎1908可以被配置为接收写入数据1910。ECC引擎1908可以被配置为对写入数据1910进行编码,使得编码的数据可以通过写入电路1904而写入到存储器单元阵列1901的由地址1906表示的位置。类似地,ECC引擎1908可以被配置为接收从存储器单元阵列1901读取的编码的数据并且将该数据解码为解码的输出数据1924中。可以根据如这里描述的任何数量的ECC算法来执行这样的编码和解码。作为示例,可以使用单纠正错误-双检测错误(SEC-DED)作为ECC算法;然而,可以使用其他算法。
虽然诸如地址1906和写入数据1910的信号被示出为用于向存储器单元阵列1901写入数据时所使用的信号,但是存储器装置1900可以被配置为接收和处理向存储器单元阵列1901写入数据时涉及的其他信号,然而,为了清楚起见而省略了这些组件。此外,可以存在可修改地址1906、重新定向访问等的其他组件,但是为了清楚起见也没有示出这些组件。
在具体示例中,在写入操作期间,ECC引擎1908被配置为接收存储器装置1900应该存储为写入数据1910的比特。ECC引擎1908被配置为计算针对写入数据1910的ECC比特值,并且使用写入电路1904将这些ECC比特与原始数据值一同作为编码数据而传递给存储器单元阵列1901。存储器单元阵列1901随后被配置为存储编码数据。
在读取操作期间,ECC引擎1908被配置为从存储器单元阵列1901接收编码数据。即,使用感测放大器1902和其他电路来读取之前存储的作为编码数据的ECC比特和原始数据值。ECC引擎1908可以随后将编码数据解码,生成输出数据1924,并且生成一些错误信息。
输出数据1924随后可以从存储器装置1900输出。在一些实施例中,可以在ECC引擎1908与存储器装置1900的输出之间设置其他组件。在实施例中,缓冲器1932可以被配置为对输出数据1924进行缓冲。在另一个实施例中,RCD模块1934可以被配置为接收、缓冲和输出输出数据1924。这里,用虚线示出这些可选组件的示例。
ECC引擎1908还可以被配置为生成错误标志。例如,ECC引擎1908可以被配置为生成可纠正的错误(CE)标志。在ECC引擎1908成功地纠正n比特错误时,可设定CE标志,其中,n小于或等于ECC引擎1908被配置为纠正的比特错误的数量。ECC引擎1908还可以被配置为生成不可纠正的错误(UE)标志。在ECC引擎1908检测到已发生的比特错误的数量大于ECC引擎1908被配置为纠正的比特错误的数量时,可以设定UE标志。在具体示例中,在SEC-DED的情况下,CE标志可以表示已纠正单比特错误,而UE标志可以表示已发生两比特错误。
ECC控制器1918被配置为管理错误纠正和相关错误信息。ECC控制器1918被配置为从ECC引擎接收错误信息1914。错误信息1914可以包括表示是否无错误、可纠正的错误、不可纠正的错误、错误的数量等的信息。ECC控制器1918还可以被配置为接收与读取关联的地址1906。因此,ECC控制器1918可以将来自ECC引擎1908的错误信息1914组合到具有地址1906的新错误信息中。如将在下面更详细描述的,ECC控制器1918可以被配置为生成将被ECC引擎1908编码并写入存储器单元阵列1901的写入数据1910。
在实施例中,ECC控制器1918可以包括被配置为存储错误信息的存储器。例如,ECC控制器1918可以包括可存储错误信息的多个寄存器。各种各样的错误信息可以存储在ECC控制器1918中。如将要在下面更详细地描述的,可以存储包括关于错误的信息的错误的记录。例如,错误记录可以包括诸如地址信息、错误的类型、从存储器单元阵列1901读取的数据、是否已经执行了修复或其他措施等的信息。
在实施例中,ECC控制器1918可以被配置为与外部装置收发通信1926。例如,通信1926可以包括错误信息的发送。当发生可纠正的错误或不可纠正的错误时,可以通过ECC控制器1918发送错误信息。这样的发送可以响应于来自外部装置的请求,或者可以是自发的(诸如根据规定计划、在错误发生时、在刷新周期期间等)。
在实施例中,ECC控制器1918可以被配置为经过诸如SMBus的总线来通信以对错误信息进行通信。在一些实施例中,存储器装置1900可以包括命令缓冲器1928。命令缓冲器1928可以被配置为对通过用于ECC控制器1918的总线接收的命令进行缓冲。
在实施例中,存储器装置1900可以包括SPD模块1930。ECC控制器1918可以被配置为与SPD模块1930通信。SPD模块1930可以被配置为执行与SPD接口关联的操作。另外,SPD模块1930可以被配置为允许对于通过ECC控制器1918是可使用的错误信息的访问。例如,通过SPD模块1930接收的具体命令可以被翻译成合适的命令和/或信号,以访问存储在ECC控制器1918中的错误信息。
DQS修改器1920被配置为响应于来自ECC引擎1908的错误信息1916而修改来自存储器单元阵列1901的数据选通信号1912,并输出修改的数据选通信号1922。在具体实施例中,错误信息1916是表示是否已发生不可纠正的错误的信号。DQS修改器1920可以被配置为:如果错误信息1916表示已发生了不可纠正的错误,则修改数据选通信号1912使得输出的数据选通信号1922不进行切换,但是如果没有发生不可纠正的错误信号,则放行数据选通信号1912。例如,DQS修改器1920可以包括诸如OR门、AND门、NAND门、传输门等的逻辑电路。
在实施例中,DQS修改器1920可以用于对时间敏感信息进行通信。例如,当已发生不可纠正的错误时,该错误可以与当前的读取操作关联。虽然可以通过ECC控制器1918(诸如通过SMBus)向外部装置通信关于不可纠正的错误的信息,但是通信路径会慢于用于数据1924的通信路径。因此,发生不可纠正的错误会的通信相对于对应的读取操作而延迟。相反,通过DQS修改器1920进行的已经发生了不可纠正的错误的通信可以与对应的读取操作基本上同时。即,修改后输出的数据选通信号1922是与具有不可纠正的错误的数据1924的传输相关联的数据选通信号。
虽然存储器装置1900的具体组件用作示例,但是可以存在其他的组件。例如,存储器装置1900可以被配置为接收和/或发送各种选通信号、选择信号、控制信号或使能信号等。
图20是根据实施例的包括存储器装置的存储器模块的示意图。在本实施例中,存储器模块2000包括与图15的数据接口1536和错误接口1538相似的数据接口2036和错误接口2038。然而,在本实施例中,存储器模块2000包括多个ECC存储器装置2001-1至2001-N。ECC存储器装置2001可以是在此描述的任何存储器装置,诸如以上描述的图18和图19的存储器装置1800和1900。
使用存储器装置1800作为存储器装置2001的示例并参照图18和图20,每个存储器装置1800结合到数据接口2036和错误接口2038。关于数据接口2036,存储器装置1800的数据接口1836可以形成数据接口2036的至少一部分。例如,每个数据接口1836的数据I/O、选通信号等可以聚合到数据接口2036中。数据接口2036的地址输入和/或其他控制信号可以被分配给存储器装置1800的数据接口1836。因此,可以通过数据接口2036将数据传送到存储器装置1800以及从存储器装置1800传送数据,从而将数据传送到存储器模块2000以及从存储器模块2000传送数据。
类似地,错误接口1838可以结合到错误接口2038。错误接口1838可以以各种方式结合。例如,错误接口1838和错误接口2038可以结合到存储器模块2000内的公共总线。在另一个实施例中,错误接口2038可以直接结合到存储器装置2001的每个错误接口1838。错误接口2038可以被配置为聚合来自存储器装置1800的错误信息。因此,可以通过错误接口2038从存储器装置1800传送错误信息,从而从存储器模块2000传送错误信息。
虽然已经使用图18的存储器装置1800作为存储器模块2000的存储器装置2001的示例,但是在其他实施例中,可以使用不同的存储器装置。例如,可以使用图19的存储器装置1900作为存储器装置2001。参照图19,每个存储器装置1900的地址1906、写入数据1910、输出数据1924、数据选通信号1922等可以结合到数据接口2036。类似地,每个存储器装置1900的ECC控制器1918可以结合到错误接口2038。
图21是根据实施例的传送错误信息的技术的流程图。在2100中,发生存储器装置中的读取错误。作为响应,在2102中,诊断错误。如将更详细地描述的,不但可以识别错误,而且可以采取其他纠正措施来修复错误。
在2104中,报告错误信息。如上所述,可以使用存储器装置、存储器模块的其他组件以及处理器之间的通信链路来传送错误信息。可以使用这样的通信链路来报告错误信息2104。
图22是根据实施例的处理错误的技术的流程图。本实施例是如何处理可纠正的错误的示例。例如,如何通过图19的ECC控制器1918来处理可纠正的错误。具体地将,在发生了可纠正的错误(CE)之后,在2200中,创建CE记录。CE记录可以包括如上所述的与错误有关的各种不同的信息。
在步骤2202中,重新读取数据。在本实施例中,响应于重新读取数据而出现三种结果:没有发生错误、发生CE错误或发生不可纠正的错误(UE)。如果没有发生错误,则在2204中,将错误记录标记为软读取错误。如果发生CE错误,则在2208中,重新写入纠正的数据。如果发生UE错误,则在2206中,将错误记录更新为不可纠正的错误记录。
作为2208中的重新写入纠正的数据的一部分,可能发生错误。如果没有发生错误,则在2210中,将错误记录标记为软写入错误。如果发生UE错误,则在2206中,将错误记录更新为不可纠正的错误记录。
如果发生CE,则在2212中,做出存储器单元是否为可修复的决定。在具体实施例中,这个阶段的CE可以表示无法通过重新写入来修复错误。因此,错误可以由硬件错误所导致。根据2212中确定存储单元是否为可修复的结果,错误记录被进一步注释并且可以被修复。如果存储器单元是可修复的,则在2214中修复存储器单元并将错误记录标记为硬错误。如果存储器单元是不可修复的,则在2216中将错误记录标记为不可修复的硬错误。因此,通过上述诊断,可以进一步分类和/或修复错误。
虽然已经使用2208中的重新写入作为可以表示UE、CE或无错误的操作的示例,但是这些信息可以是其他操作的结果。例如,在2208中重新写入数据之后,可以执行读取并且可以生成相似的错误信息。
图23是根据另一个实施例的处理错误的技术的流程图。本实施例是如何处理不可纠正的错误的示例,例如,如何通过图19的ECC控制器1918来处理不可纠正的错误。具体地讲,在发生了不可纠正的错误之后,在2300中建立UE记录。在一些实施例中,UE记录可以是如参照图22描述的在2206中的更新至UE记录的结果。
在2302中,重新读取与UE记录关联的数据。作为响应,可以执行不同的操作。如果在重新读取之后发生UE,则在2306中将记录标记为不可修复的错误。如果没有发生错误,则在2304中将记录标记为软读取错误。如果发生CE,则在2308中重新写入纠正的数据。与图22的2208中的重新写入相似,由上述操作生成的结果可以来自其他的来源,诸如在重新写入之后重新读取数据。
响应于重新写入数据的结果,可以执行不同的操作。如果结果是UE,则在2306中将记录标记为不可修复的错误。如果没有发生错误,则在2310中将记录标记为软件读取和软写入错误。
如果结果是CE,则在2312中做出存储器单元是否为可修复的决定。如果存储器单元是可修复的,则在2314中,执行修复并将记录标记为软件读取和可修复的硬错误。如果存储器单元不是可修复的,则在2316中将记录标记为软件读取和不可修复的硬错误。
虽然已经在上面描述了各种类别的错误,但是在一些实施例中,所有这样的信息不可以在存储器装置的外部利用。例如,可以将特定类型的错误(诸如图22的软读取错误和软写入错误)集合为软错误。可以执行任何集合、概括等来生成从存储器装置将被发送的错误信息。另外,存储器装置可以是可配置的,以提供细节的具体水平。
在实施例中,利用诸如在图22和图23中描述的技术,存储器装置可以被配置为执行错误管理技术,诸如软件错误恢复(例如,存储器擦除)、硬错误修复等。与这样的操作有关的信息在存储器装置提供的错误信息中也是可利用的。
在实施例中,可以在已经发生了读取之后执行上述操作。具体地讲,上述操作可被配置为不阻碍读取操作。然而,一旦出现合适的时间段(诸如保持间隔或更新周期等),就可以对错误记录进行处理、更新或存储单元修复等。
虽然已经使用错误的具体顺序作为对错误分类的标准或修复存储器单元的示例,但是在其他实施例中,可以使用不同的顺序。例如,参照图22,在该实施例中,如果在2202中重新读取时的CE以及在2208中重新写入时的CE之后,发生CE,则发生在2212中确定存储器单元是否是可修复的。然而,在其他实施例中,只有2202中的重新读取在多次重新读取尝试之后导致CE的情况下,才会发生在2212中确定存储器单元是否是可修复的。即,在一些实施例中,对错误分类的具体标准可以与上面描述的示例不同。
此外,虽然已经使用了错误类型的具体名称,但是在一些实施例中,不需要使用所有这样的错误类型。类似地,在一些实施例中,可以使用不同的错误类型。
图24A是根据实施例的传送错误信息的技术的流程图。在本实施例中,在2400中,在从存储器读取数据时发生读取错误。作为响应,可以生成错误信息。例如,读取错误可以是纠正了的可纠正的错误。错误信息可以是关于可纠正的错误的信息。在另一个实施例中,读取错误可以是多个错误。错误信息可以是关于那些错误的信息。
在2402中,接收读取错误命令。在实施例中,可以通过存储器模块接收读取错误命令。如果已经发生了错误,则在2404中,存储器可以发送错误信息。在2402中,接收读取错误命令之前,存储器模块可以储存关于已经纠正的错误的错误信息。可以响应于读取错误命令而在2404中发送与较早的错误有关的错误信息。然而,如果没有发生错误,则在2404中发送错误信息可以是发送表示没有发生错误的信息。
如上所述,可以经过总线来发送错误信息。具体地,总线可以相对于存储器模块的总数据路径是带外路径。因此,在步骤2404中的发送可以包括经过总线发送错误信息。
图24B是根据另一个实施例的传送错误信息的技术的流程图。参照图24A和图24B,在实施例中,图24B的操作可以是控制器的操作。具体地讲,可以在2406中从控制器发送读取错误命令。在2406中发送的读取错误命令可以是2402中接收的读取错误命令。如上所述,在2404中,可以发送错误信息。可以在2408中在控制器处接收所述错误信息。例如,控制器可以被配置为对存储器模块进行轮询。因此,控制器可以在2406中发送读取错误命令并在2408中在控制器处接收错误信息。如上所述,控制器可以具有存储器(诸如非易失性存储器),控制器可以在存储器中存储错误信息。不久以后,可以在2410中向处理器发送错误信息。
虽然已经使用利用控制器来发送读取错误命令作为示例,但是在另一个实施例中,处理器可以在2406中发送读取错误命令。可以在2402中由存储器模块接收该读取错误命令,并且可以在2410中向处理器发送错误信息。即,可以但不需要在控制器中接收和/或处理错误信息。
图25是根据另一个实施例的传送错误信息的技术的流程图。在本实施例中,在2500中可发生读取错误。在2512中,读取错误命令被发送到控制器。例如,控制器可以从处理器接收读取错误命令。在2514中,读取错误命令被发送到存储器模块。例如,控制器可以将从处理器接收的读取错误命令向前推送到存储器模块、修改读取错误命令、针对存储器模块而创建不同的读取错误命令等,从而在2514中将读取错误命令发送到存储器模块。在2502中接收在2514中发送的读取错误命令,并且可以在分别与图24A的操作2402和2404相似的步骤2504中发送错误信息。错误信息可以如上所述地传播到处理器。
如上所述,控制器可以向存储器模块轮询错误信息并存储该错误信息。因此,当通过控制器从处理器接收读取错误命令时,控制器可能已经读取了错误信息。控制器可以向处理器发送存储的错误信息。在控制器向处理器发送存储的错误信息之前,控制器可以但不需要向存储器模块轮询更多的错误信息。
图26是根据另一个实施例的传送错误信息的技术的流程图。在实施例中,在2600中,处理器可以发送读取错误命令。作为响应,处理器可以在2602中接收错误信息。在2606中,处理器可以组合错误信息与附加信息。如上所述,附加信息可以是,诸如包括与存储器模块无关的信息的诸如处理器的状态、外设、总线等的状态。在具体示例中,处理器可以组合错误信息与来自MCA模块的信息。
在具体实施例中,在2608中,可以将组合的信息提供给EDAC模块。如上所述,EDAC模块可以使与各种系统的错误有关的信息可用于较高水平的应用。
图27是根据实施例的具有存储器系统架构的系统的示意图。在本实施例中,系统2700包括与图1的处理器104和软件110相似的处理器2704和软件2710。然而,在本实施例中,系统2700包括存储器2702和纠错电路2768。
在本实施例中,存储器2702没有被配置为纠正错误。存储器结合到纠错电路2768并且被配置为通过通信路径2772向纠错电路发送数据。
纠错电路2768被配置为纠正在从存储器2702接收的数据中的错误。纠错电路2768通过第二通信路径2770和第三通信路径2708结合到处理器2704。第二通信路径2770是处理器2704被配置为接收数据的主路径。例如,第二通信路径2770可以是用于处理器2704的系统总线。
相反,第三通信路径2708与上面描述的通信路径108等相似。即,第三通信路径2708可以是包括控制器2714或具有与上面描述的通信路径相似的其他变化的单独的、带外的通信路径。
图28是根据实施例的服务器的示意图。在本实施例中,服务器2800可以包括单机服务器、机架安装服务器、刀片服务器等。服务器2800包括存储器2802、处理器2804和BMC2814。处理器2804通过通信路径2806结合到存储器2802。BMC通过总线2816结合到处理器2804,并通过总线2812结合到存储器2802。存储器2802、处理器2804、BMC 2814、通信路径2806以及总线2812和2816可以是上述对应组件中的任何一个。
图29是根据实施例的服务器系统的示意图。在本实施例中,服务器系统2900包括多个服务器2902-1至2902-N。服务器2902均结合到管理器2904。一个或更多个服务器2902可以与上面描述的服务器2700相似。另外,管理器2904可以包括具有如上所述的存储器系统架构的系统。
管理器2904被配置为管理服务器2902和服务器系统2900的其他组件。例如,管理器2904可以被配置为管理服务器2902的配置。每个服务器2902被配置为将错误信息传送到管理器2904。错误信息可以包括被传送到如上所述的服务器2902中的一个服务器中的处理器的可纠正错误信息或基于可纠正的错误信息的其他错误信息。管理器2904可以被配置为基于该错误信息而采取措施。例如,服务器2902-1可以具有超过阈值的多个可纠正的错误。管理器2904可以被配置为将服务器2902-1的功能转移至服务器2902-2并且关闭服务器2902-1以进行维护和/或替换。虽然已经给出了具体示例,但是管理器2904可以被配置为基于错误信息采取其他措施。
图30是根据实施例的数据中心的示意图。在本实施例中,数据中心3000包括多个服务器系统3002-1至3002-N。服务器系统3002可以与上面的图28中描述的服务器系统2800相似。服务器系统3002结合到网络3004(诸如,互联网)。因此,服务器系统3002可以通过网络3004与各种节点3006-1至3006-M通信。例如,节点3006可以是客户计算机、其他服务器、远程数据中心、存储系统等。
实施例包括一种系统,所述系统包括:存储器,被配置为存储数据,纠正在从所存储的数据读取的数据中的错误,并响应于纠正在从所存储的数据读取的数据中的错误而生成错误信息;处理器,通过第一通信路径和第二通信路径结合到存储器,并且被配置为通过第一通信路径从存储器接收数据,通过第二通信路径从存储器接收错误信息。
在实施例中,错误是单比特错误,且错误信息表示错误被纠正。
在实施例中,错误信息包括被纠正的错误信息,且处理器被配置为通过不同于第一通信路径的路径来接收纠正的错误信息。
在实施例中,存储器是动态随机存取存储器模块。
在实施例中,所述系统还包括:控制器,结合到处理器和存储器并且被配置为与处理器和存储器通信。控制器是第二通信路径的一部分。
在实施例中,控制器是基板管理控制器。
在实施例中,控制器通过与智能平台管理接口(IPMI)兼容的接口结合到处理器。
在实施例中,控制器通过与系统管理总线(SMBus)兼容的接口结合到存储器。
在实施例中,控制器被配置为存储错误信息,并且响应于从处理器接收的请求而向处理器提供错误信息。
在实施例中,处理器包括结合到存储器的存储器控制器,并且存储器控制器通过第一通信路径结合到存储器。
在实施例中,处理器包括结合到存储器的存储器控制器,并且存储器控制器不被配置为纠正在从存储器读取的数据中的错误。
在实施例中,第一通信路径包括多条数据线和至少一条数据选通线,并且存储器被配置为通过经过所述至少一条数据选通线发送的信号来传送不可纠正的错误。
在实施例中,所述系统还包括:第三通信路径,结合在存储器与处理器之间。存储器被配置为经过第三通信路径传送不可纠正的错误。
在实施例中,处理器被配置为请求由存储器生成的错误信息。
在实施例中,处理器被配置为将错误信息和与存储器关联的其他信息进行组合。
在实施例中,其他信息基于通过第一通信路径接收的信息。
在实施例中,处理器包括结合到第二通信路径的接口,并且处理器还被配置为通过所述接口接收错误信息以及通过所述接口接收其他信息。
在实施例中,存储器包括串行存在检测系统和寄存时钟驱动器系统中的至少一个系统,从串行存在检测系统和寄存时钟驱动器系统中的所述至少一个系统接收其他信息。
实施例包括一种存储器模块,所述存储器模块包括:被配置为存储数据的至少一个存储器装置、第一接口以及第二接口。第一接口被配置为发送存储在所述至少一个存储器装置中的数据,第二接口被配置为发送响应于纠正在从所述至少一个存储器装置读取的数据中的错误而生成的错误信息。
在实施例中,第二接口包括串行存在检测接口和寄存时钟驱动器接口中的至少一个接口。
在实施例中,存储器模块还包括:控制器,结合到第一接口并且被配置为响应于检测到不可纠正的错误而修改通过第一接口发送的数据选通信号。
在实施例中,第二接口还被配置为响应于检测到不可纠正的错误而发送错误信息。
实施例包括一种方法,所述方法包括以下步骤:在存储器模块处读取包括错误的数据;基于读取包括错误的数据来生成错误信息;在存储器模块处接收用于读取错误信息的命令;响应于命令而从存储器模块发送错误信息。
在实施例中,所述方法还包括:在控制器处接收错误信息;从控制器向处理器发送错误信息。
在实施例中,所述方法还包括:从控制器发送用于读取错误信息的命令;在控制器处接收错误信息。
在实施例中,用于读取错误信息的命令被称为用于读取错误信息的第一命令,所述方法还包括:在控制器处从处理器接收用于读取错误信息的第二命令;响应于第二命令而从控制器发送第一命令。
在实施例中,所述方法还包括:通过修改数据选通信号从存储器模块传送不可纠正的错误。
在实施例中,所述方法还包括:在处理器处生成与存储器模块关联的附加信息;在处理器处组合附加信息与错误信息。
在实施例中,从存储器模块发送错误信息的步骤包括:经过通信链路发送错误信息和其他信息。
在实施例中,其他信息与存储器模块无关。
实施例包括一种系统,所述系统包括:存储器;处理器,通过主存储通道结合到存储器;通信链路,与主存储器通道分离,并且结合到存储器和处理器,其中,存储器和处理器被配置为通过主存储器通道和通信链路而彼此通信。
在实施例中,处理器包括存储器控制器,并且存储器控制器是主存储器通达的一部分。
在实施例中,处理器被配置为通过通信链路来接收系统管理信息。
在实施例中,系统管理信息包括热信息和功率信息中的至少一种。
在实施例中,存储器被配置为通过通信链路向处理器传送错误信息。
实施例包括一种系统,所述系统包括:不具有纠错的存储器;结合到存储器的纠错电路,纠错电路被配置为纠正从存储器读取的数据中的错误并且被配置为响应于错误而生成错误信息;处理器,通过第一通信路径和第二通信路径结合到纠错电路。处理器被配置为通过第一通信路径从纠错电路接收纠正的数据,并且处理器被配置为通过第二通信路径从纠错电路接收错误信息。
在实施例中,第二通信路径包括:控制器,被配置为从纠错电路接收错误信息并将错误信息发送到处理器。
实施例包括一种方法,所述方法包括以下步骤:响应于通过数据接口接收到的读取命令而在存储器装置处读取包括错误的数据;基于读取包括错误的数据来记录错误信息;通过错误接口从存储器模块发送错误信息。
在实施例中,所述方法还包括:响应于错误而从存储器重新读取数据并响应于重新读取数据而识别错误。
在实施例中,所述方法还包括:如果重新读取的数据表示不可纠正的错误,则将错误识别为不可纠正。
在实施例中,所述方法还包括:如果重新读取的数据表示不可纠正的错误并且错误是不可纠正的错误,则将错误识别为不可修复。
在实施例中,所述方法还包括:如果重新读取的数据表示没有错误,则将错误识别为软读取错误。
在实施例中,所述方法还包括:响应于错误是可纠正的错误而向存储器重新写入纠正的数据。
在实施例中,所述方法还包括:如果在重新写入期间发生了不可纠正的错误,则将该错误识别为不可纠正的错误。
在实施例中,所述方法还包括:如果在重新写入期间没有发生错误,则将该错误识别为软写入错误。
在实施例中,所述方法还包括:如果在重新写入期间发生了可纠正的错误,则尝试修复存储器。
在实施例中,所述方法还包括基于尝试修复存储器的结果识别错误。
在实施例中,所述方法还包括:通过修改数据选通信号从存储器模块传送不可纠正的错误。
实施例包括一种存储器模块,所述存储器模块包括:数据接口、错误接口以及多个存储器装置,每个存储器装置结合到数据接口和错误接口并且包括被配置为存储数据的存储器以及结合到数据接口、错误接口和存储器的控制器,其中,控制器被配置为通过数据接口发送存储在存储器中的数据,并且控制器被配置为通过错误接口发送响应于纠正从存储器读取的数据中的错误而产生的错误信息。
在实施例中,错误接口被配置为聚合来自存储器装置的错误信息。
在实施例中,对于每个存储器装置,控制器被配置为响应于检测到不可纠正的错误而修改从存储器装置向数据接口发送的数据选通信号;数据接口被配置为响应于修改后的数据选通信号而从一个或更多个存储器装置发送数据选通信号。
实施例包括一种存储器装置,所述存储器装置包括:存储器,被配置为存储数据;控制器,结合到存储器,并且控制器被配置为读取存储在存储器中的数据,诊断从存储器读取的数据中的错误,以及响应于诊断错误而识别错误的错误类型。
在实施例中,控制器被配置为将错误类型识别为软读取错误、软写入错误、硬错误、可修复的错误和不可修复的错误中的至少一种错误。
在实施例中,控制器被配置为响应于重新读取数据而诊断错误。
在实施例中,控制器被配置为响应于重新写入数据而诊断错误。
在实施例中,控制器被配置为响应于重新写入数据而确定是否修复存储器。
虽然已经按照示例性实施例描述了结构、方法和系统,但是本领域普通技术人员将容易领会的是,可以对公开的实施例作许多变化,并且任何变化应该因此被视为在这里公开的设备、方法和系统的精神和范围内。因此,在不脱离权利要求的精神和范围的情况下,可以由本领域普通技术人员做出许多修改。
Claims (21)
1.一种存储器装置,包括:
存储器;
数据接口,通过主存储器路径来从存储器装置通信数据或者将数据通信到存储器装置,主存储器路径在存储器装置外部;
错误接口,通过系统控制路径来从存储器装置通信错误信息,系统控制路径在存储器装置外部,系统控制路径与主存储器路径分开;以及
控制器,在存储器装置内部,控制器被结合到数据接口、错误接口和存储器,
其中,控制器包括纠错码引擎和纠错码控制器,
纠错码引擎被配置为,
通过对写入到存储器的数据进行编码并对从存储器读取的数据进行解码来纠正从存储器读取的数据中的错误以生成被纠正的数据,
响应于纠正从存储器读取的数据中的错误而生成错误信息,
通过数据接口发送被纠正的数据,以及
通过错误接口发送错误信息,
纠错码控制器被配置为响应于纠错码引擎而记录错误信息。
2.根据权利要求1所述的存储器装置,其中,控制器被配置为响应于检测到不可纠正的错误而修改通过数据接口发送的数据选通信号。
3.根据权利要求2所述的存储器装置,其中,控制器被配置为对数据选通信号与表示不可纠正的错误的信号进行组合。
4.根据权利要求1所述的存储器装置,其中,控制器还被配置为响应于检测到不可纠正的错误而通过错误接口来发送与不可纠正的错误有关的错误信息。
5.根据权利要求1所述的存储器装置,其中,系统控制路径包括相对于主存储器路径的带外通信路径。
6.根据权利要求1所述的存储器装置,其中,系统控制路径包括平台管理总线。
7.根据权利要求6所述的存储器装置,其中,平台管理总线包括系统管理总线、集成电路间总线、智能平台管理接口总线或Modbus。
8.根据权利要求1所述的存储器装置,其中,系统控制路径基本比主存储器路径慢。
9.根据权利要求1所述的存储器装置,其中,主存储器路径包括第一数据速率,系统控制路径包括第二数据速率,第二数据速率小于或等于第一数据速率的1/10。
10.根据权利要求1所述的存储器装置,其中,错误接口能够接收针对错误信息的轮询。
11.根据权利要求1所述的存储器装置,其中,控制器还被配置为通过错误接口来推送错误信息。
12.一种用于纠错的方法,所述方法包括以下步骤:
响应于通过存储器装置的数据接口而接收的读取命令,在存储器装置处读取数据,数据接口结合到位于存储器装置外部的主存储器路径;
如果响应于读取数据而发生了错误,则基于所述数据的读取来在存储器装置处记录与所述数据不同的错误信息;
通过存储器装置的错误接口从存储器装置发送被记录的错误信息,错误接口结合到位于存储器装置外部的系统控制路径,系统控制路径与主存储器路径分开。
13.根据权利要求12所述的方法,所述方法还包括以下步骤:
响应于错误而重新读取从存储器装置读取的数据,并且响应于重新读取数据而识别错误;
如果重新读取的数据表示不可纠正的错误,则将错误识别为不可纠正;
如果重新读取的数据表示不可纠正的错误并且错误是不可纠正的错误,则将错误识别为不可修复;
如果重新读取的数据表示没有错误,则将错误识别为软读取错误。
14.根据权利要求12所述的方法,所述方法还包括以下步骤:
响应于错误是可纠正的错误而将纠正的数据重新写入存储器装置;
如果在重新写入期间发生不可纠正的错误,则将错误识别为不可纠正的错误;
如果在重新写入期间没有发生错误,则将错误识别为软写入错误;
如果在重新写入期间发生可纠正的错误,则尝试修复存储器装置;
基于尝试修复存储器装置的结果来识别错误。
15.根据权利要求12所述的方法,其中,系统控制路径包括相对于主存储器路径的带外通信路径。
16.根据权利要求12所述的方法,其中,系统控制路径包括平台管理总线。
17.一种存储器模块,所述存储器模块包括:
数据接口,通过主存储器路径来从存储器模块通信数据或者将数据通信到存储器模块,主存储器路径在存储器模块外部;
错误接口,通过系统控制路径来从存储器模块通信错误信息,系统控制路径在存储器模块外部,系统控制路径与数据接口分开,系统控制路径与主存储器路径分开;
多个存储器装置,在存储器模块内部,每个存储器装置结合到数据接口和错误接口并包括存储器和控制器,存储器被配置为存储数据,控制器结合到存储器装置的数据接口、错误接口和存储器,
其中,控制器包括纠错码引擎和纠错码控制器,
纠错码引擎被配置为,
通过对写入到存储器的数据进行编码并对从存储器读取的数据进行解码来纠正从存储器读取的数据中的错误以生成被纠正的数据,
响应于纠正从存储器读取的数据中的错误而生成错误信息,
通过数据接口发送被纠正的数据,
通过错误接口发送错误信息,
纠错码控制器被配置为响应于纠错码引擎而记录错误信息。
18.根据权利要求17所述的存储器模块,其中:
对于每个存储器装置,控制器被配置为响应于不可纠正的错误而修改数据选通信号;
数据接口被配置为基于来自存储器装置的数据选通信号来发送模块数据选通信号。
19.根据权利要求17所述的存储器模块,其中,系统控制路径包括相对于主存储器路径的带外通信路径。
20.根据权利要求17所述的存储器模块,其中,系统控制路径包括平台管理总线。
21.根据权利要求20所述的存储器模块,其中,平台管理总线包括系统管理总线、集成电路间总线、智能平台管理接口总线或Modbus。
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462039396P | 2014-08-19 | 2014-08-19 | |
US62/039,396 | 2014-08-19 | ||
US201462057199P | 2014-09-29 | 2014-09-29 | |
US62/057,199 | 2014-09-29 | ||
US201462075231P | 2014-11-04 | 2014-11-04 | |
US62/075,231 | 2014-11-04 | ||
US14/594,049 US20160055058A1 (en) | 2014-08-19 | 2015-01-09 | Memory system architecture |
US14/594,049 | 2015-01-09 | ||
US14/678,968 | 2015-04-04 | ||
US14/678,968 US10002043B2 (en) | 2014-08-19 | 2015-04-04 | Memory devices and modules |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105589762A CN105589762A (zh) | 2016-05-18 |
CN105589762B true CN105589762B (zh) | 2020-01-14 |
Family
ID=55348414
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510511311.9A Active CN105589762B (zh) | 2014-08-19 | 2015-08-19 | 存储器装置、存储器模块和用于纠错的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10002043B2 (zh) |
JP (1) | JP6592305B2 (zh) |
KR (1) | KR102184581B1 (zh) |
CN (1) | CN105589762B (zh) |
TW (1) | TWI658464B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126381A (zh) * | 2016-06-28 | 2016-11-16 | 浪潮(北京)电子信息产业有限公司 | 一种基于linux系统的CPU故障事件收集方法及系统 |
US10169126B2 (en) | 2016-10-12 | 2019-01-01 | Samsung Electronics Co., Ltd. | Memory module, memory controller and systems responsive to memory chip read fail information and related methods of operation |
US10725672B2 (en) | 2016-10-12 | 2020-07-28 | Samsung Electronics Co., Ltd. | Memory module, memory controller and systems responsive to memory chip read fail information and related methods of operation |
CN108664350B (zh) * | 2017-03-31 | 2021-06-22 | 群联电子股份有限公司 | 数据保护方法、存储器存储装置及存储器控制电路单元 |
US11636014B2 (en) * | 2017-10-31 | 2023-04-25 | SK Hynix Inc. | Memory system and data processing system including the same |
KR102455880B1 (ko) | 2018-01-12 | 2022-10-19 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR102538679B1 (ko) * | 2018-04-06 | 2023-06-02 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR102623234B1 (ko) * | 2018-08-14 | 2024-01-11 | 삼성전자주식회사 | 스토리지 장치 및 그것의 동작 방법 |
CN109284214B (zh) * | 2018-08-15 | 2021-04-06 | 英业达科技有限公司 | 信息共享电路及共享内存状态的方法 |
CN109408273A (zh) * | 2018-11-13 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种消除故障内存对系统影响的方法及装置 |
US11093393B2 (en) * | 2018-12-27 | 2021-08-17 | Samsung Electronics Co., Ltd. | System and method for early DRAM page-activation |
US11307929B2 (en) | 2019-06-17 | 2022-04-19 | Micron Technology, Inc. | Memory device with status feedback for error correction |
US10789094B1 (en) | 2019-08-22 | 2020-09-29 | Micron Technology, Inc. | Hierarchical memory apparatus |
KR20210026201A (ko) * | 2019-08-29 | 2021-03-10 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 리페어 제어 방법 |
US11232049B2 (en) | 2019-12-13 | 2022-01-25 | Micron Technology, Inc. | Memory module with computation capability |
CN111143125B (zh) * | 2019-12-20 | 2022-04-22 | 浪潮电子信息产业股份有限公司 | 一种mce错误处理方法、装置及电子设备和存储介质 |
CN111459557B (zh) * | 2020-03-12 | 2023-04-07 | 烽火通信科技股份有限公司 | 一种缩短服务器开机时间的方法及系统 |
KR20210157863A (ko) * | 2020-06-22 | 2021-12-29 | 에스케이하이닉스 주식회사 | 메모리, 메모리 시스템 및 메모리의 동작 방법 |
US11630723B2 (en) * | 2021-01-12 | 2023-04-18 | Qualcomm Incorporated | Protected data streaming between memories |
CN115443451A (zh) | 2021-04-01 | 2022-12-06 | 美光科技公司 | 与由微处理器识别的存储器错误相关的信息的记录和解码 |
KR20220139199A (ko) * | 2021-04-07 | 2022-10-14 | 삼성전자주식회사 | 반도체 메모리 장치 및 이를 포함하는 메모리 시스템 |
CN112947263A (zh) * | 2021-04-20 | 2021-06-11 | 南京云玑信息科技有限公司 | 一种基于数据采集与编码管理控制系统 |
US11726873B2 (en) | 2021-12-20 | 2023-08-15 | Micron Technology, Inc. | Handling memory errors identified by microprocessors |
TWI816561B (zh) * | 2022-09-28 | 2023-09-21 | 新唐科技股份有限公司 | 檢測裝置、檢測方法及檢測系統 |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3178909B2 (ja) * | 1992-01-10 | 2001-06-25 | 株式会社東芝 | 半導体メモリ装置 |
US6081878A (en) * | 1997-03-31 | 2000-06-27 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
US6370668B1 (en) | 1999-07-23 | 2002-04-09 | Rambus Inc | High speed memory system capable of selectively operating in non-chip-kill and chip-kill modes |
US7234099B2 (en) | 2003-04-14 | 2007-06-19 | International Business Machines Corporation | High reliability memory module with a fault tolerant address and command bus |
US20040268046A1 (en) | 2003-06-27 | 2004-12-30 | Spencer Andrew M | Nonvolatile buffered memory interface |
KR100546348B1 (ko) * | 2003-07-23 | 2006-01-26 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그 데이터 저장 방법 |
US7587658B1 (en) * | 2005-01-03 | 2009-09-08 | Sun Microsystems, Inc. | ECC encoding for uncorrectable errors |
US7468993B2 (en) * | 2005-01-14 | 2008-12-23 | International Business Machines Corporation | Dynamic reconfiguration of solid state memory device to replicate and time multiplex data over multiple data interfaces |
US8452929B2 (en) | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
US9286198B2 (en) | 2005-04-21 | 2016-03-15 | Violin Memory | Method and system for storage of data in non-volatile media |
US7523381B2 (en) * | 2005-09-01 | 2009-04-21 | Micron Technology, Inc. | Non-volatile memory with error detection |
US7810017B2 (en) * | 2006-03-20 | 2010-10-05 | Micron Technology, Inc. | Variable sector-count ECC |
JP2007287208A (ja) | 2006-04-13 | 2007-11-01 | Hitachi Global Storage Technologies Netherlands Bv | データ記憶装置及びそのエラー訂正方法 |
US8352805B2 (en) * | 2006-05-18 | 2013-01-08 | Rambus Inc. | Memory error detection |
US7487428B2 (en) | 2006-07-24 | 2009-02-03 | Kingston Technology Corp. | Fully-buffered memory-module with error-correction code (ECC) controller in serializing advanced-memory buffer (AMB) that is transparent to motherboard memory controller |
JP4918824B2 (ja) * | 2006-08-18 | 2012-04-18 | 富士通株式会社 | メモリコントローラおよびメモリ制御方法 |
WO2008061558A1 (en) * | 2006-11-21 | 2008-05-29 | Freescale Semiconductor, Inc. | Memory system with ecc-unit and further processing arrangement |
US7949931B2 (en) * | 2007-01-02 | 2011-05-24 | International Business Machines Corporation | Systems and methods for error detection in a memory system |
JP2008198310A (ja) * | 2007-02-15 | 2008-08-28 | Megachips Lsi Solutions Inc | ビットエラーの修復方法および情報処理装置 |
KR20080114208A (ko) * | 2007-06-27 | 2008-12-31 | 주식회사 하이닉스반도체 | 에러 정정 기능을 갖는 불휘발성 메모리 장치의 카피투프로그램방법 |
US7934052B2 (en) | 2007-12-27 | 2011-04-26 | Pliant Technology, Inc. | System and method for performing host initiated mass storage commands using a hierarchy of data structures |
KR20110050404A (ko) | 2008-05-16 | 2011-05-13 | 퓨전-아이오, 인크. | 결함 있는 데이터 저장소를 검출하고 교체하는 장치, 시스템 및 프로그램 제품 |
TW201013691A (en) * | 2008-09-25 | 2010-04-01 | Key Technology Corp | Error correcting code circuit |
TWI393146B (zh) * | 2008-10-15 | 2013-04-11 | Genesys Logic Inc | 具有錯誤修正碼容量設定單元之快閃記憶體控制器及其方法 |
KR100955157B1 (ko) | 2008-12-24 | 2010-04-28 | 서울대학교산학협력단 | 메모리 장치 및 메모리 장치의 관리 방법 |
KR101042197B1 (ko) * | 2008-12-30 | 2011-06-20 | (주)인디링스 | 메모리 컨트롤러 및 메모리 관리 방법 |
KR101014040B1 (ko) | 2009-03-19 | 2011-02-14 | (주)인디링스 | 디램 버퍼 관리 장치 및 방법 |
US8239629B2 (en) | 2009-03-31 | 2012-08-07 | Micron Technology, Inc. | Hierarchical memory architecture to connect mass storage devices |
US8301980B2 (en) | 2009-09-28 | 2012-10-30 | Nvidia Corporation | Error detection and correction for external DRAM |
US8443263B2 (en) | 2009-12-30 | 2013-05-14 | Sandisk Technologies Inc. | Method and controller for performing a copy-back operation |
TW201201008A (en) | 2010-03-22 | 2012-01-01 | Mosaid Technologies Inc | Composite semiconductor memory device with error correction |
JP2012113466A (ja) * | 2010-11-24 | 2012-06-14 | Fujitsu Ltd | メモリコントローラ及び情報処理システム |
US8977944B2 (en) * | 2010-12-14 | 2015-03-10 | Cavium, Inc. | DRAM address protection |
CN103946826B (zh) | 2011-09-30 | 2019-05-31 | 英特尔公司 | 用于在公共存储器通道上实现多级存储器层级的设备和方法 |
JP2013109637A (ja) * | 2011-11-22 | 2013-06-06 | Renesas Electronics Corp | メモリインターフェース回路、および、そのメモリインターフェース回路の動作方法 |
KR20130086887A (ko) | 2012-01-26 | 2013-08-05 | 삼성전자주식회사 | 메모리 버퍼, 이를 포함하는 장치들 및 이의 데이터 처리 방법 |
US9697147B2 (en) | 2012-08-06 | 2017-07-04 | Advanced Micro Devices, Inc. | Stacked memory device with metadata management |
US8898544B2 (en) | 2012-12-11 | 2014-11-25 | International Business Machines Corporation | DRAM error detection, evaluation, and correction |
US9246516B2 (en) | 2012-12-20 | 2016-01-26 | Intel Corporation | Techniques for error correction of encoded data |
US9047211B2 (en) | 2013-03-15 | 2015-06-02 | SanDisk Technologies, Inc. | Managing data reliability |
US9477550B2 (en) * | 2013-10-24 | 2016-10-25 | Globalfoundries Inc. | ECC bypass using low latency CE correction with retry select signal |
US9645829B2 (en) | 2014-06-30 | 2017-05-09 | Intel Corporation | Techniques to communicate with a controller for a non-volatile dual in-line memory module |
KR102189780B1 (ko) * | 2014-08-11 | 2020-12-11 | 삼성전자주식회사 | 반도체 메모리 장치 및 이를 포함하는 메모리 시스템 |
-
2015
- 2015-04-04 US US14/678,968 patent/US10002043B2/en active Active
- 2015-08-03 KR KR1020150109524A patent/KR102184581B1/ko active IP Right Grant
- 2015-08-18 TW TW104126772A patent/TWI658464B/zh active
- 2015-08-19 CN CN201510511311.9A patent/CN105589762B/zh active Active
- 2015-08-19 JP JP2015161805A patent/JP6592305B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
US20160055059A1 (en) | 2016-02-25 |
KR102184581B1 (ko) | 2020-11-30 |
TWI658464B (zh) | 2019-05-01 |
JP6592305B2 (ja) | 2019-10-16 |
US10002043B2 (en) | 2018-06-19 |
KR20160022249A (ko) | 2016-02-29 |
CN105589762A (zh) | 2016-05-18 |
JP2016045955A (ja) | 2016-04-04 |
TW201611020A (zh) | 2016-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105589762B (zh) | 存储器装置、存储器模块和用于纠错的方法 | |
US10824499B2 (en) | Memory system architectures using a separate system control path or channel for processing error information | |
KR102378466B1 (ko) | 메모리 장치 및 모듈 | |
CN105373443B (zh) | 具有存储器系统体系结构的数据系统和数据读取方法 | |
US7913147B2 (en) | Method and apparatus for scrubbing memory | |
US9065481B2 (en) | Bad wordline/array detection in memory | |
US9785570B2 (en) | Memory devices and modules | |
US8745464B2 (en) | Rank-specific cyclic redundancy check | |
US11294750B2 (en) | Media management logger for a memory sub-system | |
US10521113B2 (en) | Memory system architecture | |
US20210279122A1 (en) | Lifetime telemetry on memory error statistics to improve memory failure analysis and prevention | |
US11656929B2 (en) | Memory module and operating method | |
CN115762621A (zh) | 不可校正的存储器错误预测 | |
CN118838738A (zh) | 内存纠错方法、内存条、内存控制器和处理器 | |
CN118733312A (zh) | 内存纠错方法、内存条、内存控制器和处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |