CN105373345A - 存储器设备和模块 - Google Patents
存储器设备和模块 Download PDFInfo
- Publication number
- CN105373345A CN105373345A CN201510512333.7A CN201510512333A CN105373345A CN 105373345 A CN105373345 A CN 105373345A CN 201510512333 A CN201510512333 A CN 201510512333A CN 105373345 A CN105373345 A CN 105373345A
- Authority
- CN
- China
- Prior art keywords
- module
- memory
- error
- interface
- controller
- 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
Links
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/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
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- 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
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4247—Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
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)
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号、2015年4月4日递交的美国专利申请14/678,977号的优先权,特此通过引用将这些申请的每一个的内容全部并入在此。
技术领域
本公开涉及存储器系统体系结构,具体而言涉及带有差错校正的存储器系统体系结构。
背景技术
存储器控制器可被配置为执行差错校正。例如,存储器控制器可从存储器模块读取72比特的数据,其中64比特是数据并且8比特是奇偶。存储器控制器可执行其他差错校正技术。利用这种技术,可以识别和/或校正从存储器模块读取的数据中的一些差错。此外,存储器控制器可以使得与差错有关的信息可用。包括存储器控制器的系统可基于差错信息来作出操作决策,例如废弃存储器页面、停止系统,等等。这种存储器控制器可与处理器集成。例如,IntelXeon处理器可包括被配置为执行差错校正的集成存储器控制器。
然而,如果在存储器控制器接收到数据之前执行差错校正,则与校正有关的差错信息可能在存储器控制器中不可用,并且因此,系统不可用其来作出系统管理决策。
发明内容
一实施例包括一种存储器模块,其包括:模块差错接口;以及多个存储器设备,每个存储器设备耦合到模块差错接口,包括数据接口和设备差错接口,并且被配置为通过设备差错接口和模块差错接口通信差错信息。
另一实施例包括一种存储器模块,其包括:模块差错接口;多个存储器设备,每个存储器设备包括数据接口和设备差错接口,并且被配置为通过设备差错接口通信差错信息;以及耦合到模块差错接口和每个存储器设备的设备差错接口的控制器。
另一实施例包括一种方法,其包括:通过存储器模块的模块差错接口接收通信;由控制器从耦合到控制器的至少一个存储器设备读取差错信息;以及基于差错信息通过模块差错接口对通信作出响应。
附图说明
图1是具有根据一实施例的存储器系统体系结构的系统的示意图。
图2是具有根据一实施例的包括控制器的存储器系统体系结构的系统的示意图。
图3是具有根据一实施例的包括基板管理控制器的存储器系统体系结构的系统的示意图。
图4是具有根据一实施例的不带有基于处理器的差错校正的存储器系统体系结构的系统的示意图。
图5是具有根据一实施例的带有中毒数据选通信号的存储器系统体系结构的系统的示意图。
图6是具有根据一实施例的带有单独不可校正的差错信号的存储器系统体系结构的系统的示意图。
图7是具有根据一实施例的带有软件模块的存储器系统体系结构的系统的示意图。
图8是具有根据一实施例的带有差错检测和校正模块的存储器系统体系结构的系统的示意图。
图9是具有根据一实施例的带有聚集模块的存储器系统体系结构的系统的示意图。
图10是具有根据一实施例的带有差错校正模块的存储器系统体系结构的系统的示意图,该差错校正模块聚集来自存储器控制体系结构模块的信息。
图11是具有根据一实施例的带有共享接口的多个模块的存储器系统体系结构的系统的示意图。
图12是具有根据一实施例的带有共享接口的可校正差错模块和串行存在检测/注册时钟驱动器模块的存储器系统体系结构的系统的示意图。
图13是具有根据一实施例的带有DRAM内差错校正的存储器系统体系结构的系统的示意图。
图14A-图14D是具有根据一些实施例的带有模块内差错校正的存储器系统体系结构的系统的示意图。
图15是根据一实施例的存储器模块的示意图。
图16是根据一实施例的具有SPD或RCD接口的存储器模块的示意图。
图17是根据一实施例的具有单独不可校正的差错接口的存储器模块的示意图。
图18是根据一实施例的存储器设备的示意图。
图19是根据另一实施例的存储器设备的示意图。
图20是根据一实施例的包括存储器设备的存储器模块的示意图。
图21-图23是根据各种实施例的存储器模块的示意图。
图24-图26是根据各种实施例的存储器模块的部分的示意图。
图27是根据另一实施例的存储器模块的示意图。
图28是根据一实施例的通信差错信息的技术的流程图。
图29是根据一实施例的处理差错的技术的流程图。
图30是根据另一实施例的处理差错的技术的流程图。
图31A是根据另一实施例的通信差错信息的技术的流程图。
图31B是根据另一实施例的通信差错信息的技术的流程图。
图32是根据另一实施例的通信差错信息的技术的流程图。
图33是根据另一实施例的通信差错信息的技术的流程图。
图34是根据另一实施例的通信差错信息的技术的流程图。
图35是根据一实施例的具有存储器系统体系结构的系统的示意图。
图36是根据一实施例的服务器的示意图。
图37是根据一实施例的服务器系统的示意图。
图38是根据一实施例的数据中心的示意图。
具体实施方式
实施例涉及存储器系统体系结构。以下描述被给出来使得本领域普通技术人员能够作出并使用实施例并且是在专利申请及其要求的情境中提供的。对本文描述的实施例和一般原理和特征的各种修改将是容易清楚的。实施例主要是就特定实现方式中提供的特定方法和系统来描述的。
然而,这些方法和系统在其他实现方式中将有效地操作。诸如“一实施例”、“一个实施例”和“另一实施例”之类的短语可以指相同或不同实施例以及多个实施例。将针对具有某些组件的系统和/或设备来描述实施例。然而,这些系统和/或设备可包括比所示出的那些更多或更少的组件,并且在不脱离本公开的范围的情况下可作出组件的布置和类型的变动。也将在具有某些步骤的特定方法的情境中描述实施例。然而,方法和系统根据具有与实施例不相符的不同和/或额外步骤和不同顺序的步骤的其他方法操作。从而,实施例不打算限于示出的特定实施例,而是要符合与本文描述的原理和特征相符的最宽范围。
实施例是在具有某些组件的特定存储器系统体系结构的情境中描述的。本领域普通技术人员将容易认识到,实施例与具有其他和/或额外组件和/或其他特征的存储器系统体系结构的使用相符。然而,本领域普通技术人员将容易认识到,方法和系统与其他结构相符。也可在单一元素的情境中描述方法和系统。然而,本领域普通技术人员将容易认识到,方法和系统与具有多个元素的存储器系统体系结构的使用相符。
本领域技术人员将理解,一般地,本文使用的术语、尤其是所附权利要求(例如,所附权利要求的主体)中使用的术语一般打算作为“开放”术语(例如,术语“包括”应当被解读为“包括但不限于”,术语“具有”应当被解读为“至少具有”,术语“包含”应当被解读为“包含但不限于”,等等)。本领域技术人员还将理解,如果想要特定数目的引入的权利要求记载,则这种意图将在该权利要求中明确记载,并且在没有这种记载的情况下,则不存在这种意图。例如,作为对理解的辅助,接下来的所附权利要求可包含对引入性短语“至少一个”和“一个或多个”的使用来引入权利要求记载。然而,这种短语的使用不应当被解释为意味着由不定冠词“一”引入权利要求记载会将包含这种引入的权利要求记载的任何特定权利要求限制到仅包含一个这种记载的示例,即使当同一权利要求包括引入性短语“一个或多个”或“至少一个”和诸如“一”之类的不定冠词时也是如此(例如,“一”应当被解读为意指“至少一个”或“一个或多个”);这对于用于引入权利要求记载的定冠词的使用也成立。另外,在使用类似于“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也可被配置为检测双比特差错。虽然特定数目的被校正的差错被用作了示例,但存储器102可被配置为校正任何数目的差错或者检测任何数目的差错。另外,虽然一个或多个差错校正技术可导致单比特差错校正和/或双比特差错检测,但存储器102可被配置为执行可校正至少一个差错的任何差错校正技术。
存储器102可包括被配置为存储数据的任何设备。在特定示例中,存储器102可以是动态随机访问存储器(dynamicrandomaccessmemory,DRAM)模块。存储器102可包括根据诸如DDR、DDR2、DDR3、DDR4等等之类的各种标准的双数据速率同步动态随机访问存储器(doubledataratesynchronousdynamicrandomaccessmemory,DDRSDRAM)。在其他实施例中,存储器102可包括静态随机访问存储器(staticrandomaccessmemory,SRAM)、非易失性存储器,等等。
存储器102被配置为响应于校正从存储的数据读取的数据中的差错和/或尝试校正从存储的数据读取的数据中的差错而生成差错信息。例如,差错信息可包括关于已校正的差错、未校正的差错、差错的不存在、这种差错的数目等等之类的信息。差错信息可包括实际差错、差错的地址、差错发生的次数或者存储器102特定的其他信息。在特定示例中,差错信息可包括关于单比特差错的信息,其指示出存储器102校正了单比特差错。虽然描述了差错信息的特定示例,但差错信息可包括与差错有关的任何信息。
处理器104可以是被配置为操作性地耦合到存储器102并且能够执行指令的任何设备。例如,处理器104可以是通用处理器、数字信号处理器(digitalsignalprocessor,DSP)、图形处理单元(graphicsprocessingunit,GPU)、专用集成电路、可编程逻辑器件,等等。
处理器104通过第一通信路径106和第二通信路径108耦合到存储器102。处理器104被配置为通过第一通信路径106从存储器接收数据。例如,第一通信路径106可以是具有用于数据信号、选通信号、时钟信号、使能信号等等的信号线的系统存储器接口。也就是说,通信路径106可以是主存储器通道的一部分,该主存储器通道是处理器104与作为主系统存储器的存储器102之间的接口。
处理器104也通过不同的通信路径,即第二通信路径108,耦合到存储器102。处理器104被配置为通过第二通信路径108从存储器102接收差错信息。从而,在一实施例中,处理器104被配置为通过不同于第一通信路径106的通信路径接收差错信息、尤其是已校正的差错信息。已校正的差错信息是与已校正的差错有关的差错信息。如上所述,差错信息可包括与差错有关的各种类型的信息。从而,已校正的差错信息可包括类似类型的与已校正差错有关的信息。
软件110被图示为耦合到处理器104;然而,软件110表示可在处理器104上执行的各种程序、驱动器、模块、例程,等等。例如,软件110可包括驱动器、内核模块、守护进程、应用,等等。在一些实施例中,软件110可使得处理器104能够被配置为执行本文描述的特定功能。
虽然单个存储器102被用作了示例,但任何数目的存储器102可通过与通信路径106和108类似的两条通信路径耦合到处理器104。在一实施例中,每个存储器102可通过与其他存储器102分开的专用第一通信路径106和也与其他存储器102分开的专用第二通信路径108耦合到处理器104。然而,在其他实施例中,第一通信路径106可被多于一个存储器102共享并且第二通信路径108可被多于一个存储器102共享。另外,虽然描述了单个第一通信路径106,但在一个或多个存储器102之间可存在多个第一通信路径106。类似地,虽然描述了单个第二通信路径108,在一个或多个存储器102之间可存在多个第二通信路径108。
在一实施例中,差错信息的通信可通过带外通信路径来通信。第二通信路径108可以是这种带外通信路径。也就是说,处理器104与存储器102之间的主通信可通过第一通信路径106,而差错信息是通过带外第二通信路径108来通信的。
图2是具有根据一实施例的包括控制器的存储器系统体系结构的系统的示意图。在此实施例中,系统200包括存储器202、处理器204、通信路径206和208以及软件210,它们与图1的存储器102、处理器104、通信路径106和108以及软件110类似。然而,第二通信路径208包括耦合在存储器202与控制器214之间的第一总线212、和耦合在控制器214与处理器204之间的第二总线216。换言之,耦合到处理器204和存储器202两者的控制器214是第二通信路径208的一部分。
控制器214可以是被配置为操作性地耦合到存储器202和处理器204的任何设备。例如,控制器214可包括通用处理器、数字信号处理器(DSP)、专用集成电路、可编程逻辑器件,等等。
总线212和216可以是任何种类的通信链路。例如,总线212和216可以是系统管理系统(systemmanagementbus,SMBus)、集成电路间(inter-integratedcircuit,I2C)总线、遵从智能平台管理接口(intelligentplatformmanagementinterface,IPMI)的总线、Modbus总线,等等。在特定实施例中,通信路径208的至少一部分可以实质上慢于通信路径206。例如,存储器202与处理器204之间的通信路径206可以是为大约10GB/s的更高数据速率传输设计的;然而,通信路径208可具有大约10兆比特/s、100千比特/s等等的更慢数据传输速率。从而,在一些实施例中,通信路径206与通信路径208的数据传输速度的比率可以是约100、1000或更大。
在一实施例中,第二通信路径208可以是专用通信路径。也就是说,第二通信路径208可只用于存储器202与处理器204之间的信息的通信。然而,在其他实施例中,控制器214可允许其他设备可访问。例如,非存储器设备268可由总线212耦合到控制器214。在另一示例中,其他设备266可耦合到控制器214。因此,除了来自存储器202的信息以外的信息可通过总线212和/或总线216传送到和传送自处理器204和/或存储器202。具体地,来自存储器202的差错信息可通过用于其他目的——包括非存储器目的——的第二通信路径208被通信到处理器204。
在一实施例中,控制器214可包括非易失性存储器254。非易失性存储器254可被配置为存储来自存储器202的差错信息。因此,当电力关断时,差错信息可被保持在控制器214中。处理器204可被配置为向控制器214请求差错信息。因此,控制器214可被配置为通过提供非易失性存储器254中存储的差错信息、访问存储器202以取回差错信息来响应处理器204等等来响应这种请求。
在一实施例中,控制器214可被配置为就差错信息轮询存储器202。在另一实施例中,存储器202可被配置为向控制器214推送差错信息。不管怎样,存储在非易失性存储器254中的差错信息可以是基本上最新的拷贝。
图3是具有根据一实施例的包括基板管理控制器的存储器系统体系结构的系统的示意图。在此实施例中,系统300包括存储器302、处理器304、通信路径306和308以及软件310,它们与图2的存储器202、处理器204、通信路径206和208以及软件210类似。然而,控制器314是基板管理控制器(BMC)314。
BMC314可被配置为管理系统300。例如,BMC314可耦合到系统300的各种传感器,包括处理器304、存储器302、其他设备366等等的传感器。BMC314可被配置为收集和报告各种系统参数,例如温度、冷却状态、电力状态,等等。BMC314可被配置为管理系统并且使能根据标准来访问信息。可以使管理信息对处理器304可用并且因此对软件310可用。或者,BMC314可以通过另外的通信路径——例如带外通信路径——来使得信息可用。这里,带外通信路径可包括任何不包括处理器304的通信路径。
图4是具有根据一实施例的不带有基于处理器的差错校正的存储器系统体系结构的系统的示意图。在此实施例中,系统400包括存储器402、处理器404、通信路径406和408以及软件410,它们与图1的存储器102、处理器104、通信路径106和108以及软件110类似。然而,在此实施例中,处理器404包括存储器控制器(memorycontroller,MC)450和机器校验体系结构(machinecheckarchitecture,MCA)寄存器452。
存储器控制器450与处理器404集成。存储器控制器450可以是作为处理器404与存储器402之间的主接口的主存储器通道的一部分。存储器控制器450被配置为控制通过通信路径406对存储在存储器402中的数据的访问。在一些实施例中,存储器控制器450可被配置为校正差错,但将不会有校正这种差错的机会,因为差错校正可能已由存储器402执行。然而,在此实施例中,存储器控制器450不被配置为校正从存储器402读取的数据中的差错。存储器控制器450可不被配置为报告基于从存储器402读取的数据的任何差错信息。
MCA寄存器452是在其中可报告硬件差错的寄存器。例如,在MCA寄存器452中可检测并报告缓存差错、总线差错、数据差错等等。然而,因为存储器控制器450不被配置为校正从存储器402读取的数据中的差错,所以在MCA寄存器452中可不报告基于从存储器402读取的数据的任何潜在差错信息。不管怎样,如上所述,差错信息可通过通信路径408被通信到处理器404。从而,差错信息可仍然是对软件410可用的,虽然没有通过存储器控制器450和MCA寄存器452。
在一实施例中,差错信息通过第二通信路径408的可用性可允许更低成本的系统400。例如,可以使用具有不带任何存储器差错校正的存储器控制器450的处理器404,而差错信息可仍然是可用的。具体地,即使想要有存储器差错校正,也可使用不带存储器差错校正的处理器404,因为差错信息通过第二通信路径408是可用的。从而,软件410——包括使用差错信息的任何软件——仍可像处理器404能够进行存储器差错校正那样操作。不带差错校正的处理器404可以是更低功率、更低成本的处理器。从而,可以降低系统400的整体电力使用和/或成本。
虽然存储器控制器450被图示为与处理器404集成,但存储器控制器450可与处理器404分离。不管怎样,通信路径408可绕过存储器控制器450和处理器404的其他可具有差错校正电路的其他部分。对这种组件的绕过使得通过第二通信路径408对差错信息的通信基本上独立于存储器控制器450、MCA寄存器452等等的特性。也就是说,差错信息可仍然是可用的,即使类似的信息通过存储器控制器450和/或MCA寄存器452是不可用的。
图5是具有根据一实施例的带有中毒数据选通信号的存储器系统体系结构的系统的示意图。在此实施例中,系统500包括存储器502、处理器504、通信路径506和508以及软件510,它们与图1的存储器102、处理器104、通信路径106和108以及软件110类似。然而,在此实施例中,通信路径506包括数据线532和(一条或多条)数据选通线533。其他线路可作为通信路径506的一部分存在;然而,为了清晰,没有图示这些线路。
在一实施例中,关于不可校正的差错的差错信息和关于可校正差错的差错信息可由不同的路径来通信。如上所述,可校正差错信息可通过通信路径508来通信。不可校正的差错信息可包括多种不同类型的基于不可校正的差错的信息。不可校正的差错信息可通过第一通信路径506来通信。例如,存储器502可被配置为由通过(一条或多条)数据选通线533传送(或不传送)的信号来通信不可校正的差错。也就是说,在正常数据传输期间,通过(一条或多条)数据选通线533传送的数据选通信号可随着数据被传输而切换;然而,如果存储器502检测到了不可校正的差错,则存储器502可被配置为生成用于在(一条或多条)数据选通线533上传送的数据选通信号,该数据选通信号不同于正常数据传输期间的数据选通信号。在特定示例中,存储器502可被配置为不切换通过(一条或多条)数据选通线533传送的数据选通信号。当检测到这种状况时,处理器504可被配置为生成硬件异常,该硬件异常可被软件510处理。
虽然通信路径506内的信号和/或线路的特定示例被用作了通信不可校正的差错的技术的示例,但其他信号和/或线路也可用于向处理器504通信不可校正的差错。无论是如何通信的,处理器504都可被配置为例如通过停止系统500或者采取另一动作来对不可校正的差错的这种通信作出响应。
图6是具有根据一实施例的带有单独不可校正的差错信号的存储器系统体系结构的系统的示意图。在此实施例中,系统600包括存储器602、处理器604、通信路径606和608以及软件610,它们与图1的存储器102、处理器104、通信路径106和108以及软件110类似。然而,在此实施例中,单独的通信路径634耦合在存储器602与处理器604之间。
与图5的系统500类似,不可校正的差错可被通信到处理器604。在此实施例中,存储器602被配置为通过第三通信路径634通信不可校正的差错信息。例如,第三通信路径634可以是与第一通信路径606分开的专用线路。从而,关于不可校正的差错的差错信息可被处理器604接收,但是通过除了第一和第二通信路径606和608以外的通信路径接收的。
图7是具有根据一实施例的带有软件模块的存储器系统体系结构的系统的示意图。在此实施例中,系统700包括存储器702、处理器704、通信路径706和708以及软件710,它们与图1的存储器102、处理器104、通信路径106和108以及软件110类似。然而,在此实施例中,软件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包括存储器802、处理器804、通信路径806和808以及具有响应信息820和822的模块818的软件810,它们与图7的存储器702、处理器704、通信路径706和708和具有响应信息720和722的模块718的软件710类似。然而,在此实施例中,软件810也包括差错检测和校正(errordetectionandcorrection,EDAC)模块824。
在一实施例中,EDAC模块可被配置为管理来自存储器、缓存、输入/输出(input/output,I/O)设备、外设、总线和/或系统800的其他方面的差错信息并且可被配置为将这种信息暴露给更高功能层,例如应用层。具体地,EDAC模块824可被配置为从模块818接收差错信息。EDAC模块824可被配置为将差错信息与其他信息组合以使得其他模块、应用等等可能够访问差错信息。
图9是具有根据一实施例的带有聚集模块的存储器系统体系结构的系统的示意图。在此实施例中,系统900包括存储器902、处理器904、通信路径906和908以及具有响应信息920和922的第一模块918的软件910,它们与图7的存储器702、处理器704、通信路径706和708和具有响应信息720和722的模块718的软件710类似。然而,在此实施例中,软件910还包括第二模块926。第二模块926被配置为接收信息920。具体地,此其他信息920可包括与存储器902上的差错无关的信息。其他信息920的至少一部分921可被第一模块918接收。第一模块918可被配置为将差错信息922与来自第二模块926的其他信息920的一些或全部相组合。第一模块918可被配置为利用单个接口给出组合的信息。例如,第一模块918可被配置为将组合的信息给出给EDAC模块,例如图8的EDAC模块824。
图10是具有根据一实施例的带有差错校正模块的存储器系统体系结构的系统的示意图,该差错校正模块聚集来自存储器控制体系结构模块的信息。在此实施例中,系统1000包括存储器1002、处理器1004、通信路径1006和1008以及具有响应信息1020和1022的模块1018和1026的软件1010,它们与图9的存储器902、处理器904、通信路径906和908和具有响应信息920和922的模块918和926的软件910类似。然而,在此实施例中,模块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组合并且利用单个接口给出该组合信息。
具体地,如果处理器1004能够校正差错的话,EC模块可给出与MCA模块1026的接口相似或相同的接口。例如,如果处理器1004被配置为校正从存储器1002读取的数据中的差错并且这种差错信息可用,则该信息可通过MCA模块1026可用。然而,如果处理器1004未被配置为校正从存储器1002读取的数据中的差错,或者处理器1004被配置为校正差错,但由于差错在存储器1002中被校正而从未通过被MCA模块1026监视的通信路径接收到差错信息,则MCA模块1026将不能够给出差错信息。不管怎样,EC模块1018可将MCA模块1026信息1020与通过通信路径1008获得的差错信息1022相组合并且给出该组合信息,该组合信息与在处理器1004被配置为校正从存储器1002读取的数据中的差错或者差错信息对MCA模块1026可用的情况下MCA模块1026将会提供的信息相似或相同。软件于是可使用相同或相似的接口,无论带有差错校正的处理器1004存在与否。换言之,能够进行差错校正的处理器1004对于依赖差错信息来完全正常工作的软件是不必要的。结果,通过使用不带有差错校正的不那么昂贵的处理器1004可降低成本。
图11是具有根据一实施例的带有共享接口的多个模块的存储器系统体系结构的系统的示意图。在此实施例中,系统1100包括存储器1102、处理器1104、通信路径1106和1108以及响应信息1120和1122的软件1110,它们与图7的存储器702、处理器704、通信路径706和708和响应信息720和722的软件710类似。然而,在此实施例中,软件1110包括第一模块1118、第二模块1128和接口模块1130。
第一模块1118与图7的模块718类似。然而,第一模块1118被配置为通过接口模块1130从存储器1102接收差错信息。接口模块1130是被配置为提供到通信路径1108的接口的模块。例如,接口模块1130可以是被配置为允许通过IPMI总线的访问的模块。
其他模块,例如第二模块1128,也可被配置为利用接口模块1130来通信。例如,第二模块1128可被配置为访问附接到IPMI总线的另一设备,访问存储器1102的另一方面,例如热信息或电力信息,等等。差错信息和其他信息都可以是由接口模块1130传输的信息1122的一部分。换言之,差错信息可沿着整个路径利用专用软件来传输,但也可与相关或不相关的信息和/或来源共享模块、接口、总线等等。
图12是具有根据一实施例的带有共享接口的可校正差错模块和串行存在检测/注册时钟驱动器模块的存储器系统体系结构的系统的示意图。在此实施例中,系统1200包括存储器1202、处理器1204、通信路径1206和1208以及具有响应信息1220和1222的模块1218、1228和1230的软件1210,它们与图11的存储器1102、处理器1104、通信路径1106和1108和具有响应信息1120和1122的模块1118、1128和1130的软件1110类似。然而,在此实施例中,第一模块1218是已校正差错(correctederror,CE)模块1218并且第二模块1228是串行存在检测(serialpresencedetect,SPD)/注册时钟驱动器(registeringclockdriver,RCD)模块1228。
具体地,SPD/RCD模块1228被配置为访问与串行存在检测系统和/或注册时钟驱动器系统有关的信息。SPD/RCD模块1228可被配置为访问这种系统中的一者或两者。通过第二通信路径1208来访问该信息。从而,在一实施例中,可通过与SPD/RCD相关信息相同的通信路径1208来访问来自存储器1202的差错信息。
图13是具有根据一实施例的带有DRAM内差错校正的存储器系统体系结构的系统的示意图。在此实施例中,系统1300包括存储器1302、处理器1304、具有响应信息1320和1322的EC模块1318和MCA模块1326的内核1310,它们与图10的存储器1002、处理器1004和具有响应信息1020和1022的EC模块1018和MCA模块1026的软件1010类似。然而,在此实施例中,每个存储器1302是差错校正码(errorcorrectioncode,ECC)双列直插存储器模块(dualin-linememorymodule,DIMM)。每个ECCDIMM1302被配置为存储数据并且校正存储的数据中的至少一差错。在此实施例中,每个ECCDIMM1302通过相应的通信路径1364耦合到处理器1304的存储器控制器(MC)1350。通信路径1364至少包括用于数据信号和数据选通信号等等的线路,与图5的通信路径506类似。每个ECCDIMM1302通过通信路径1308耦合到处理器1304,该通信路径1308包括与图3的总线312、BMC314和总线316类似的总线1312、BMC1314和总线1316。
在一实施例中,ECCDIMM1302可被配置为校正从ECCDIMM1302读取的数据中的一个或多个差错。差错校正技术可包括单差错校正—双差错检测(singleerrorcorrection–doubleerrordetection,SEC-DEC)技术、单芯片chipkill技术、双芯片chipkill技术,等等。可以使用任何差错校正技术。
在此实施例中,存储器控制器(MC)1350未被配置为执行差错校正,或者未被配置为从ECCDIMM1302接收差错信息。由于从ECCDIMM1302传递的数据已经被校正,所以MC1350甚至可不接收任何表示可校正差错的信息。然而,差错信息、尤其是已校正的差错信息可通过通信路径1308——即通过总线1312和1316以及BMC1314——被发送到处理器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可被配置为就存储器ECC信息轮询EC模块1318。进而,EC模块1318可返回通过第二通信路径1308接收的差错信息。与EDAC模块1324通信的存储器ECC守护进程1358可就差错信息轮询EDAC模块1324。存储器ECC守护进程1358随后可在应用级根据差错信息采取动作。这种动作可包括页面废弃、管理差错以保持系统1300运行的其他动作、维持可靠水平、推荐退役,等等。
如上所述,可检测不可校正的差错。不可校正的差错信息可通过MC1350、MCA寄存器1352和MCA模块1326被通信到EC模块1318。例如,不可校正的差错可通过MCA模块1326利用不可屏蔽的中断、异常等等来通信。在特定示例中,存储器控制器1350可响应于不可校正的差错生成硬件异常,无论其是如何通信到存储器控制器1350的。MCA模块1326可拦截该异常并将其传递到EC模块1318。EC模块1318随后可将该异常通信给EDAC模块1324。作为如上所述通信不可校正的差错信息的附加或替换,可通过通信路径1308来通信不可校正的差错信息。
在一实施例中,ECCDIMM1302可被配置为向处理器1304提供已校正数据。然而,该数据在ECCDIMM1302和MC1350之间可变成损坏的。因此,在ECCDIMM1302与处理器1304或MC1350之间可执行某种形式的差错校正。例如,可利用打算检测在通信链路1364上发生的差错的差错校正码来对从ECCDIMM1302发送的数据编码。利用这种差错校正,基本上从ECCDIMM1302中的存储元件到处理器的整个路径都可被差错校正所保护。
图14A-图14D是具有根据一些实施例的带有模块内差错校正的存储器系统体系结构的系统的示意图。参考图14A,系统1400包括与图13的那些类似的组件;然而,在此实施例中,ECCDIMM1402包括缓冲器1462。缓冲器1462被配置为校正从相应的ECCDIMM1402读取的数据中的差错。具体地,可从内部存储器设备——例如ECCDIMM1402的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的组件类似。然而,在此实施例中,MCELOG模块1425被配置为从CE模块1418接收信息。MCELOG模块1425可被配置为记录与诸如存储器差错、数据传输差错或其他差错之类的各种系统差错有关的机器校验事件(machinecheckevent,MCE)。MCELOG模块1425可被配置为向存储器ECC守护进程1458提出中断并且将差错信息传递给存储器ECC守护进程1458。
参考图14D,系统1400的组件可与图14C的组件类似。然而,在此实施例中,与图14A和14B之间的差异类似,MCELOG模块1425可被配置为从MCA模块1426接收信息,与图14B的EDAC模块1424类似。
虽然对于图14A-图14D中的具有缓冲器1462的ECCDIMM1402描述了不同模块,但在其他实施例中,各种配置可被应用到具有ECCDIMM1302的图13的系统1300。
图15是根据一实施例的存储器模块的示意图。存储器模块1500包括一个或多个存储器设备1501、数据接口1536、差错接口1538和控制器1541。数据接口1536被配置为从存储在存储器设备1501中的数据来发送和接收数据1540。存储器模块1500被配置为对于从一个或多个存储器设备1501读取的数据生成差错信息。差错接口1538被配置为发送响应于校正从一个或多个存储器设备1501读取的数据中的差错而生成的差错信息。
数据接口1536是通过其来发送存储器设备1501中存储的数据的接口和通过其来接收要存储在存储器设备1501中的数据1540的接口。例如,数据接口1536可包括用于诸如数据线、选通线、地址线、使能线、时钟线等等之类的线路的缓冲器、驱动电路、端接(termination)或其他电路。
差错接口1538可以是被配置为通过诸如SMBus、IPMI或如本文所述的其他总线之类的特定总线通信的接口。在一实施例中,差错接口1538可以是现有接口,通过该接口,存储器模块1500除了差错信息以外还通信其他信息。从而,信息1542将不仅包括差错信息,还包括其他信息。
控制器1541可以是被配置为操作性地耦合到存储器设备1501的任何设备。例如,控制器214可包括通用处理器、数字信号处理器(DSP)、专用集成电路、可编程逻辑器件,等等。如下文将更详细描述的,控制器1541可包括缓冲器,例如RCD,等等。
控制器1541耦合到存储器设备1501、数据接口1536和差错接口1538。控制器1541被配置为获得差错信息。在一实施例中,控制器1541可从存储器设备1501获得差错信息;然而,在其他实施例中,控制器1541可被配置为校正来自存储器设备1501的数据中的差错并生成差错信息。
在一实施例中,控制器1541可被配置为通过数据接口1536通信不可校正的差错。例如,如上所述,数据选通信号可用于指示不可校正的差错。控制器1541可被配置为响应于检测到不可校正的差错而修改通过数据接口1536传送的数据选通信号。
图16是根据一实施例的具有SPD或RCD接口的存储器模块的示意图。在此实施例中,存储器模块1600包括一个或多个存储器设备1601、数据接口1636、差错接口1638和控制器1641,它们与图15的一个或多个存储器设备1501、数据接口1536、差错接口1538和控制器1541类似。然而,图15的差错接口1538在这里是SPD/RCD接口1638。
SPD/RCD接口1638可用于提供对SPD系统或RCD系统(未图示)的访问。在特定实施例中,差错信息可通过这种SPD或RCD系统内的特定寄存器或存储器位置可用。从而,可通过用来获得SPD或RCD信息的那个接口获得差错信息。
由于差错信息是通过现有的硬件接口可用的,所以可不需要额外的硬件。例如,通过SPD/RCD接口1638接收的打算访问差错信息的命令就地址、寄存器地址或SPD/RCD系统未使用的其他字段而言可不同于其他命令。在一实施例中,可以为SPD/RCD系统定义新的寄存器,其暴露差错信息。在另一实施例中,可以再使用现有寄存器来通信差错信息。
图17是根据一实施例的具有单独不可校正的差错接口的存储器模块的示意图。在此实施例中,存储器模块1700包括一个或多个存储器设备1701、数据接口1736、差错接口1738和控制器1741,它们与图15的一个或多个存储器设备1501、数据接口1536、差错接口1538和控制器1541类似。然而,存储器模块1700还包括不可校正的差错(UE)接口1744。
UE接口1744是单独的接口,存储器模块1700被配置为通过该接口通信不可校正的差错。例如,UE接口1744可以是专用线路、专用总线,等等。
图18是根据一实施例的存储器设备的示意图。在此实施例中,存储器设备1800包括数据接口1836和差错接口1838。数据接口1836和差错接口1838可类似于图15的数据接口1536和差错接口1538,或者如上所述的类似接口;然而,在此实施例中,数据接口1836和差错接口1838是到存储器设备1800的接口,而不是到存储器模块——例如图15的存储器模块1500——的接口。
存储器设备1800包括控制器1841。控制器1814可以是被配置为操作性地耦合到存储器1801和接口1836和1838的任何设备。例如,控制器1841可包括通用处理器、数字信号处理器(DSP)、专用集成电路、可编程逻辑器件,等等。
存储器1801被配置为存储数据。例如,存储器1801可以是存储单元阵列;然而,在其他实施例中,数据可被存储在其他配置中。存储器1801可包括电的、磁的、化学的、光学的或者其他类型的存储元件。
控制器1841被配置为通过数据接口1836发送存储器1801中存储的数据。控制器也可被配置为通过数据接口1836接收要存储在存储器1801中的数据。这种传输由数据1840表示。
控制器1841被配置为通过差错接口1838发送响应于校正从存储器1801读取的数据中的差错而生成的差错信息。差错信息可与上文描述的差错信息的类型中的任何一种类似。控制器1841也可被配置为通过差错接口1838接收命令、指令或其他信息。差错信息、命令、指令或其他信息的这种传输由信息1842表示。
在此实施例中,数据1840和信息1842都被图示为经过控制器1841。然而,在其他实施例中,存储器设备1800的组件可被控制器1841控制以使得数据1840和信息1842不经过控制器1841。例如,在一些实施例中,数据和/或差错信息可在控制器1841的控制下被提供到数据接口1836和差错接口1838,但绕过控制器1841。
图19是根据另一实施例的存储器设备的示意图。在此实施例中,存储器设备1900包括存储单元阵列1901。存储单元阵列1901可包括存储单元,其中存储数据。具体地,存储单元阵列1901可被配置为存储经编码的数据。读出放大器1902和写入电路1904是存储器设备1900中的允许在由地址1906指定的一个或多个地址向存储单元阵列1901写入和从存储单元阵列1901读取数据的电路的示例。然而,在其他实施例中,其他读取和写入电路可与存储单元阵列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)标志。CE标志可在ECC引擎1908成功校正n比特差错时被置位,其中n小于或等于ECC引擎1908被配置为校正的比特差错的数目。ECC引擎1908也可被配置为生成不可校正的差错(UE)标志。UE标志可在ECC引擎1908检测到发生了比ECC引擎1908被配置为校正的比特差错的数目更大数目的比特差错时被置位。在特定示例中,对于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可被配置为修改数据选通信号1912以使得如果差错信息1916指示出发生了不可校正的差错则输出数据选通信号1922不切换,但如果没有发生不可校正的差错信号则按原样传递数据选通信号1912。例如,DQS修改器1920可包括诸如或门、与门、与非门、传输门等等之类的逻辑电路。
在一实施例中,DQS修改器1920可用于通信时间敏感信息。例如,当发生了不可校正的差错时,该差错可与当前读取操作相关联。虽然关于不可校正的差错的信息可由ECC控制器1918通信给外部设备,例如通过SMBus通信,但该通信路径可比用于数据1924的通信路径慢。从而,不可校正的差错的发生的通信相对于相应的读取操作可被延迟。与此不同,由DQS修改器1920通信发生了不可校正的差错可与相应的读取操作基本上同时。也就是说,经修改的输出数据选通信号1922是与具有不可校正的差错的数据1924的传输相关联的数据选通信号。
虽然存储器设备1900的特定组件被用作示例,但可存在其他组件。例如,存储器设备1900可被配置为接收和/或发送各种选通信号、选择信号、控制信号、使能信号,等等。
图20是根据一实施例的包括存储器设备的存储器模块的示意图。在此实施例中,存储器模块2000包括数据接口2036和差错接口2038,它们与图15的数据接口1536和差错接口1538类似。然而,在此实施例中,存储器模块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-图23是根据各种实施例的存储器模块的示意图。参考图21,在此实施例中,存储器模块2100包括一个或多个存储器设备2101、数据接口2136和控制器2141,它们与图15的一个或多个存储器设备1501、数据接口1536和控制器1541类似。模块差错接口2138可与差错接口1538类似并且被配置为交换与信息1542类似的信息2142;然而,模块差错接口2138被用术语“模块”来称呼以将其与存储器设备2101的设备差错接口2139相区分。如下文将更详细描述的,模块差错接口2138可用于除了通信差错信息以外的通信。
这里,每个存储器设备2101具有与图18的数据接口1836和差错接口1838类似的数据接口2137和设备差错接口2139。存储器设备2101的数据接口2137耦合到模块的数据接口2136;然而,为了清晰没有图示这种耦合。另外,在一些实施例中,数据接口2136和存储器设备2101的数据接口2137的耦合可以经过但并不必须要经过控制器2141。例如,在一些实施例中,向存储器模块2100和从存储器模块2100传输的数据2140可被缓冲在控制器2141中;然而,在其他实施例中,这种传输可绕过控制器2141。
每个存储器设备2101耦合到模块差错接口2138并且被配置为通过设备差错接口和模块差错接口通信差错信息。在此实施例中,控制器2141耦合到设备差错接口2139和模块差错接口2138。
如将更详细描述的,控制器2141可被配置为管理涉及存储器设备2101的通信,例如涉及差错信息的通信。例如,控制器2141可被配置为管理通过相应的设备差错接口2139对与存储器设备2101相关联的差错信息的访问,向存储器设备2101和从存储器设备2101转发通信,聚集来自存储器设备2101的差错信息,等等。
在特定实施例中,控制器2141可包括通过模块差错接口2138可访问的寄存器2149。控制器2141可被配置为通过经由设备差错接口2139与存储器设备2101通信来从存储器设备2101收集差错信息。这种差错信息可被存储在寄存器2149中并且可被存储器模块2100外部的设备访问。或者,控制器2141可被配置为组合差错信息、总结差错信息,等等。具体地,在一实施例中,每个存储器设备2101可与其他存储器设备2101相隔离地生成其自己的差错信息。因此,由于控制器2141可能能够访问所有存储器设备2101,所以控制器2141可被配置为生成个体存储器设备2101可能不能够生成的额外差错信息。虽然寄存器2149被用作了示例,但差错信息和其他信息可按其他方式被存储在控制器2141中。
在一实施例中,控制器2141可被配置为接收与存储器设备2101有关的命令。如本文所述,控制器2141可被配置为接收读取差错信息的命令。然而,控制器2141可被配置为接收与存储器设备2101有关的其他类型的通信。例如,控制器2141可被配置为接收与存储器设备2101的维护有关的命令。这种维护的示例可以是修复存储器设备2101中的一个或多个内的存储单元、重写数据、发起刷新周期等等的命令。控制器2141可被配置为接收这种通信并且作为响应与存储器设备2101通信。
参考图22,在此实施例中,存储器模块2200与存储器模块2100相似;然而,存储器模块2200包括耦合到控制器2141的串行存在检测(SPD)2143模块。SPD2143可被配置为通过控制器2141通信。例如,控制器2141可被配置为向SPD2143和从SPD2143转发通信。在其他实施例中,控制器2141可被配置为从SPD2143获得信息并且通过模块差错接口2138利用这种信息作为SPD2143的代理操作。同样,虽然模块差错接口2138使用术语“差错”,但通过模块差错接口2138可发送和接收除了差错信息以外的信息。
在一实施例中,控制器2141可被配置为对与SPD2143相关联的地址作出响应。然而,控制器2141可被配置为对另一地址作出响应,使用通信中的额外信息等等来判定该通信是针对SPD2143的、打算访问差错信息的、针对存储器设备2101的还是针对控制器2141本身的等等。
参考图23,在此实施例中,存储器模块2300可与图21的存储器模块2100或图22的存储器模块2200相似。然而,取代控制器2141可使用注册时钟驱动器(RCD)模块2145。这里,RCD2145可被配置为缓冲向存储器模块2300和从存储器模块2300传输的数据。此外,RCD2145也可被配置为提供本文针对控制器2141描述的功能。
SPD2143也可耦合到RCD2145。因此,与存储器模块2200类似,可通过RCD2145来访问SPD2143,RCD2145可充当SPD2143的代理等等,与上文描述的控制器2141类似。
图24-图26是根据各种实施例的存储器模块的部分的示意图。参考图24,在此实施例中,控制器2141、存储器设备2101和SPD2143可与图22的那些类似。控制器2141可耦合到总线2452。总线2542可以是SMBus,或者如本文所述的其他总线。总线2542可形成模块差错接口2142的一部分或全部。
控制器2141可被配置为接收地址2454。地址2454可以是硬连线的输入。在特定示例中,地址2454可以是存储器模块上的一系列引脚,这些引脚当被插入在特定插座中时被连接到高或低的值以将存储器模块与耦合到同一总线2542的其他东西相区分。
在一实施例中,地址2454可以是传统存储器设备中的耦合到SPD模块的地址;然而,这里,地址的用途被改变为与控制器2141而不是诸如SPD2143之类的SPD通信。从而,如本文所述的存储器模块可与现有的存储器模块引脚兼容。
在此实施例中,SPD2143和存储器设备2101各自通过单独的总线2450耦合到控制器2141。这里,总线被标记为总线2450-1至2450-N,对应于存储器设备2101-1至2101-N。总线2450-N+1对应于耦合控制器2141和SPD2143的额外总线。在特定实施例中,每条总线2450可以是SMBus总线或者其他类似的通信链路。然而,在其他实施例中,取代总线2450可使用其他点对点通信链路,包括例如可只具有两个端点的通信链路。也就是说,虽然使用了术语总线,但通信链路可被配置为只能够耦合两个设备。
在一实施例中,SPD2143可被配置为响应和/或生成控制信号2147。控制信号2147可包括相对于总线2450-N+1的带外信号。例如,控制信号2147可以是中断信号。在特定实施例中,控制信号2147可以是与SPD2143相关联的事件信号。控制器2141也可被配置为接收和/或生成控制信号2451。控制信号2451可以是其他将被SPD2143使用的信号。然而,由于控制器2141可被配置为使用SPD2143否则将会使用的接口,所以SPD2143可不被配置为直接接收控制信号2451。因此,控制器2141可被配置为向SPD2143和/或从SPD2143通信控制信号2451作为控制信号2147。虽然与SPD相关联的单个控制信号被用作了示例,但在其他实施例中,可以向和从SPD2143、存储器设备2101或其他组件转发多个控制信号。为了清晰,在随后的附图中将不图示这种控制信号;然而,它们可存在。
另外,控制器2141可包括超出SPD2143的额外功能,这些功能可与类似于控制信号2147的控制信号相关联。例如,控制器2141可被配置为基于来自存储器设备2101的差错信息生成中断。因此,除了来自SPD2143的任何这种信号以外,控制信号2451也可用于基于中断通信差错信息。控制器2141可被配置为判定这种控制信号是否是针对控制器2141的、针对SPD2143的等等。
在一实施例中,数个额外的引脚可用于存储器设备2101。在特定实施例中,存储器设备2101可包括两个额外的引脚,一个用于时钟信号,另一个用于数据信号。控制器2141可包括用于总线2452和2450-1至2450-N+1的2x(N+2)个引脚、用于地址2454的三个引脚和用于控制信号2451和2147的两个引脚。
参考图25A,在此实施例中,控制器2141、存储器设备2101和SPD2143可与图24的那些类似。然而,控制器2141通过总线2450-1耦合到存储器设备2101并且通过总线2450-2耦合到SPD2143。在此实施例中,总线2450-1和2450-2是分开的总线。
此外,总线2450-1是用于各存储器设备2101的公共总线。同样,总线2450可以是SMBus总线。由于多个存储器设备2101可耦合到总线2450-1,所以每个存储器设备2101可包括相应的ID输入2456。ID2456可类似于地址2454。例如,对于每个存储器设备2101,相应的ID2456可被硬连线到在各存储器设备2101之间唯一的地址。在特定示例中,每个ID2456可包括四个引脚,这些引脚可被保持为高或低。因此,对于ID2456有16个唯一地址可用。虽然四个引脚被用作了示例,但任何数目的引脚可用于区分任何数目的存储器设备2101。
每个存储器设备2101可被配置为将相应的ID2456变换成要在总线2450-1上使用的地址或其他标识符。在一实施例中,从ID2456生成的地址可以是用作SMBus的从属地址的地址。在此实施例中,SPD2143和控制器2141可以是总线2450-2上仅有的设备。因此,不需要对SPD2143使用地址输入。
在一实施例中,数个额外的引脚可用于存储器设备2101。在特定实施例中,存储器设备2101可包括两个额外的引脚,一个用于时钟信号并且另一个用于数据信号,这与图24类似,但也包括用于ID2456的四个引脚。控制器2141可包括与图24类似的用于总线2452、2450-1和2450-2的六个引脚、用于地址2454的三个引脚和用于控制信号2451和2147的两个引脚——如果使用的话。
参考图25B,在此实施例中,控制器2141、存储器设备2101和SPD2143可与图25A的那些类似。然而,SPD2143和存储器设备2101通过公共总线2450耦合到控制器2141。如上所述,存储器设备2101可各自被配置为接收ID2456。由于SPD2143现在与存储器设备2101在相同总线2450上,所以SPD2143可被配置为使用在SPD2143和存储器设备2101之间唯一的地址。SPD2143可被配置为接收ID2457。SPD2143可被配置为将ID2457转换成地址来在总线2450上使用。
在一实施例中,ID2457的形式可与ID2456不同。例如,ID2457可包括用于指示SPD2143的地址的三个引脚,而每个ID2456可包括四个引脚。另外,ID2457和ID2456上的ID可以——但并不必须要——对应于相同地址。例如,010b的ID2457和0010b的ID2456可对应于不同地址。
在一实施例中,数个额外的引脚可用于存储器设备2101。在特定实施例中,存储器设备2101可包括两个额外的引脚,一个用于时钟信号并且另一个用于数据信号,这与图24类似,但也包括用于ID2456的四个引脚。控制器2141可包括与图24类似的用于总线2450和2452的四个引脚、用于地址2454的三个引脚和用于控制信号2451和2147的两个引脚——如果使用的话。
参考图26,在此实施例中,控制器2141、存储器设备2101和SPD2143可与图25B的那些类似。与控制器2141类似,SPD2143被配置为接收地址2454。然而,在此实施例中,存储器设备2101不被配置为接收ID2456。与之不同,每个存储器设备2101耦合到公共总线2459,例如与总线2450-1分离的单个导线或网络。在一实施例中,公共总线2459可以是菊链式链路。
在一实施例中,存储器设备2101可耦合到总线2459。存储器设备2101被配置为响应于通过总线2459接收的信号来判定通过控制器2141接收的信息是否与存储器设备2101相关联。在一实施例中,存储器设备2101可被配置为通过总线2459通信来建立总线2450上的存储器设备2101的地址。例如,第一存储器设备可响应于计数器而确定其地址并且递增该计数器。该计数器的值被发送到第二存储器设备2101。第二存储器设备2101也被配置为响应于该计数器来确定其地址并且递增该计数器。此过程可继续,直到每个存储器设备2101具有唯一地址为止。
在一实施例中,数个额外的引脚可用于存储器设备2101。在特定实施例中,存储器设备2101可包括两个额外的引脚,一个用于时钟信号并且另一个用于数据信号,这与图24类似,但也包括用于总线2459的一个额外引脚。控制器2141可包括与图24类似的用于总线2452、2450-1和2450-2的六个引脚、用于地址2454的三个引脚和用于控制信号2451和2147的两个引脚——如果使用的话。
在一实施例中,在任何上述配置中,控制器2141可被配置为确定存储器设备2101和SPD2143的地址——如果存储器设备2101和SPD2143耦合到相同总线的话。例如,控制器2141可被配置为使用SMBus地址解析协议来动态地向存储器设备2101和SPD2143分配地址。虽然确定一种类型的总线上的地址的一个技术被用作了示例,但根据特定的总线2450可使用其他适当的技术。
图27是根据另一实施例的存储器模块的示意图。在此实施例中,存储器模块2700与图21的存储器模块2100类似。然而,中继器2750被用作控制器2141。中继器2750可被配置为延伸耦合到模块差错接口2138的通信链路以使得存储器设备2101和SPD2143的差错接口2139——如果存在的话——可耦合到该通信链路。在第一示例中,如果存储器设备2101的负载和/或网络的属性允许,则中继器2750可以只是导线,例如共享介质的导线。在另一示例中,中继器2750可包括一设备,该设备被配置为允许更多设备附接到总线,允许更长的总线,等等。虽然使用了术语中继器,但中继器2750也可包括集线器、延长器、交换机、桥接器,等等。并且可延伸网络的设备可用作中继器2750。由于通过模块接口2138可直接访问存储器设备2101,所以如上所述由外部控制器——例如BMC——可单独就差错信息询问存储器模块2700的每个存储器设备2101。
在一实施例中,存储器设备2101、SPD2143和中继器2750的配置可与图25B的类似。也就是说,参考图25B和图27,存储器设备2101可各自耦合到总线2450,总线2450也耦合到中继器2750。每个存储器设备2101也可被配置为接收ID2456。结果,存储器设备2101可被配置为确定其各自的地址来用在总线2450上。
在一实施例中,特定的地址或ID可与各种类型的设备相关联。例如,温度传感器可与特定的地址或地址范围相关联。然而,存储器设备2101可不具有这种地址或ID关联。因此,地址、ID、这种参数的范围等等可从其他类型的设备改作他用,所述设备例如是在可使用本文描述的存储器模块的系统中未使用的设备。例如,I2C复用器的ID或地址可用作存储器设备2101的ID或地址。
图28是根据一实施例的通信差错信息的技术的流程图。在2800中,存储器设备中的读取差错发生。作为响应,在2802中,诊断该差错。如将更详细描述的,不仅可以识别该差错,而且可以采取其他校正性动作来修复该差错。
在2804中,报告差错信息。如上所述,存储器设备、存储器模块的其他组件和处理器之间的通信链路可用于通信差错信息。差错信息的报告2804可使用这种通信链路。
图29是根据一实施例的处理差错的技术的流程图。此实施例是如何处理可校正差错的示例,例如图19的ECC控制器1918如何处理可校正差错的示例。具体地,在发生可校正差错(CE)之后,在2900中创建CE记录。CE记录可包括如上所述的与差错有关的多种不同信息。
在2902中,重读数据。在此实施例中,响应于重读数据,有三种可能的结果,即没有发生差错,发生CE,或者发生不可校正的差错(UE)。如果没有发生差错,则在2904中,差错记录被标记为软读取差错。如果发生CE,则在2908中重写已校正的数据。如果发生UE,则在2906中将差错记录更新成不可校正的差错记录。
作为在2908中重写已校正数据的一部分,可发生差错。如果没有发生差错,则在2910中,差错记录被标记为软写入差错。如果发生UE,则在2906中将差错记录更新成不可校正的差错记录。
如果发生CE,则在2912中,判定存储单元是否可修复。在特定实施例中,此阶段的CE可指示出差错不能够通过重写来修复。因此,差错可由硬件差错引起。取决于在2912中判定存储单元是否可修复的结果,差错记录被进一步注释并且可被修复。如果存储单元可修复,则在2914中,存储单元被修复并且差错被标记为硬差错。如果存储单元不可修复,则在2916中,差错记录被标记为不可修复的硬差错。因此,通过上述诊断,差错可被进一步分类和/或修复。
虽然2908中的重写被用作可指示UE、CE或没有差错的操作的示例,但这种信息可以是其他操作的结果。例如,在于2908中重写数据之后,可以执行读取并且可生成类似的差错信息。
图30是根据另一实施例的处理差错的技术的流程图。此实施例是如何处理不可校正的差错的示例,例如图19的ECC控制器1918如何处理不可校正的差错的示例。具体地,在发生不可校正的差错之后,在3000中创建UE记录。在一些实施例中,UE记录可以是如针对图29所述在2906中更新UE记录的结果。
在3002中,可重读与UE记录相关联的数据。作为响应,可执行不同的操作。如果在重读之后发生UE,则在3006中,该记录被标记为不可修复的差错。如果没有发生差错,则在3004中该记录被标记为软读取差错。如果发生CE,则在3008中重写已校正的数据。与图29的2908中的重写类似,从该操作生成的结果可来自其他来源,例如在重写之后重读数据。
响应于重写数据的结果,可执行不同的操作。如果结果是UE,则在3006中该记录被标记为不可修复的差错。如果没有发生差错,则在3010中该记录被标记为软读取和软写入差错。
如果结果是CE,则在3012中,判定存储单元是否可修复。如果存储单元可修复,则在3014中,执行修复并且将该记录标记为软读取和可修复的硬差错。如果存储单元不可修复,则在3016中,该记录被标记为软读取和不可修复的硬差错。
虽然上文描述了差错的各种分类,但在一些实施例中,所有这种信息对于存储器设备的外部可能不是可用的。例如,特定类型的差错,例如图29的软读取和软写入差错,可被聚集为软差错。可执行任何聚集、总结等等来生成要从存储器设备发送的差错信息。另外,存储器设备可被配置为提供特定水平的细节。
在一实施例中,利用例如图29和图30中描述的那样的技术,存储器设备可被配置为执行差错管理技术,例如软差错恢复(例如,存储器擦洗)、硬差错修复,等等。与这种操作有关的信息也可在存储器设备提供的差错信息中可用。
在一实施例中,上述操作可在发生了读取之后执行。具体地,这些操作可被配置为不阻止读取操作。然而,一旦发生了适当的时段,例如维护间隔、刷新周期等等,差错记录就可被处理、更新、存储单元可被修复,等等。
虽然差错的特定序列被用作对差错分类或修复存储单元的标准的示例,但在其他实施例中,可以使用不同的序列。例如,参考图29,在该实施例中,如果发生CE,然后当在2902中重读时发生CE,再然后当在2908中重写时发生CE,则发生在2910中判定存储单元是否可修复。然而,在其他实施例中,在2910中判定存储单元是否可修复可仅在2902中的重读在多次重读尝试之后导致CE时发生。也就是说,在一些实施例中,对差错分类的特定标准可与上述示例的不同。
另外,虽然使用了差错类型的特定指定,但在一些实施例中并不需要使用所有这种差错类型。类似地,在一些实施例中,可使用不同的差错类型。
图31是根据一实施例的通信差错信息的技术的流程图。在此实施例中,当从存储器读取数据时的读取差错在3100中发生。作为响应,可生成差错信息。例如,读取差错可以是已被校正的可校正差错。差错信息可以是关于该可校正差错的信息。在另一示例中,读取差错可以是多个差错。差错信息可以是关于这些差错的信息。
在3102中,接收读取差错命令。在一实施例中,读取差错命令可被存储器模块接收。如果发生了差错,则存储器在3104中可发送差错信息。在于3102中接收读取差错命令之前,存储器模块可存储关于已发生的差错的差错信息。关于早前的差错的该差错信息可响应于读取差错命令在3104中被发送。然而,如果没有发生差错,则3104中的差错信息的发送可以是指示没有发生差错的信息的发送。
如上所述,可通过总线发送差错信息。具体地,总线相对于存储器模块的主数据路径可以是带外路径。因此,3104中的发送可包括通过总线发送差错信息。
图24B是根据另一实施例的通信差错信息的技术的流程图。参考图24A和24B,在一实施例中,图24B的操作可以是控制器的操作。具体地,在2406中可从控制器发送读取差错命令。在2406中发送的读取差错命令可以是在2402中接收的读取差错命令。如上所述,在2404中,可发送差错信息。在2408中可在控制器处接收该差错信息。例如,控制器可被配置为轮询存储器模块。从而,控制器可在3106中发送读取差错命令并且在3108中在控制器处接收差错信息。如上所述,控制器可具有存储器,例如非易失性存储器,在其中控制器可存储差错信息。在以后某时,差错信息可在3110中被发送到处理器。
虽然使用控制器来发送读取差错命令被用作了示例,但在另一实施例中,处理器在3106中可发送读取差错命令。该读取差错命令可在3102中被存储器模块接收并且差错信息在3110中可被发送到处理器。也就是说,差错信息可以——但并不必须要——在控制器中被接收和/或处理。
图32是根据另一实施例的通信差错信息的技术的流程图。参考图28和图32,利用存储器模块2100作为示例,在3200中,通过模块差错接口2138接收通信。在3202中,从至少一个存储器设备2101读取差错信息。
在一实施例中,在3202中读取差错信息可响应于3200中的通信而执行。然而,在其他实施例中,读取差错信息可在不同的时间执行,包括在接收到通信之前执行。不管怎样,来自存储器设备2101的差错信息可用于在3204中对该通信作出响应。
在3202中对差错信息的读取可按多种方式来完成。例如,可通过相应的专用总线来访问每个存储器设备2101,例如图24中那样。在另一实施例中,可通过公共总线来访问每个存储器设备2101,例如图25A、图25B或图26中那样。在另一实施例中,通信可被转发到存储器设备2101中的一个或多个,例如由图27的中继器2750转发。
虽然图21的存储器模块2100被用作了示例,但本文描述的技术可被不同的存储器模块、系统等等使用。
图33是根据另一实施例的通信差错信息的技术的流程图。在此实施例中,在3300中可发生读取差错。在3312中向控制器发送读取差错命令。例如,控制器可从处理器接收读取差错命令。在3314中,向存储器模块发送读取差错命令。例如,控制器可将从处理器接收的读取差错命令转发到存储器模块,修改读取差错命令,为存储器模块创建不同的读取差错命令等等,以在3314中将读取差错命令发送到存储器模块。在3302中可接收在3314中发送的读取差错命令,并且在3304中可发送差错信息,这分别与图31A的操作3102和3104类似。差错信息可如上所述被传播到处理器。
如上所述,控制器可就差错信息轮询存储器模块并且存储该差错信息。因此,当控制器从处理器接收到读取差错命令时,控制器可能已经读取了差错信息。控制器可将存储的差错信息发送给处理器。控制器可以——但并不必须要——在控制器将存储的差错信息发送给处理器之前就更多差错信息轮询存储器模块。
图34是根据另一实施例的通信差错信息的技术的流程图。在一实施例中,处理器在3400中可发送读取差错命令。作为响应,处理器在3402中可接收差错信息。在3406中,处理器可将差错信息与额外信息相组合。如上所述,额外信息可以是任何信息,例如处理器、外设、总线等等的状态,包括与存储器模块无关的信息。在特定示例中,处理器可将差错信息与来自MCA模块的信息相组合。
在特定实施例中,在3408中,组合的信息可被提供给EDAC模块。如上所述,EDAC模块可以使得关于各种系统的差错的信息对于更高级应用可用。
图35是具有根据一实施例的存储器系统体系结构的系统的示意图。在此实施例中,系统3500包括处理器3504和软件3510,与图1的处理器104和软件110类似。然而,在此实施例中,系统3500包括存储器3502和差错校正电路3568。
在此实施例中,存储器3502未被配置为校正差错。存储器耦合到差错校正电路3568并且被配置为通过通信路径3572向差错校正电路发送数据。
差错校正电路3568被配置为校正从存储器3502接收的数据中的差错。差错校正电路3568通过第二通信路径3570和第三通信路径3508耦合到处理器3504。第二通信路径3570是处理器3504被配置为通过其来接收数据的主路径。例如,第二通信路径3570可以是用于处理器3504的系统总线。
与之不同,第三通信路径3508与上文描述的通信路径108等等类似。也就是说,第三通信路径3508可以是单独的带外通信路径,包括控制器3514,或者具有与上文描述的通信路径类似的其他变化。
图36是根据一实施例的服务器的示意图。在此实施例中,服务器3600可包括单机服务器、机架式服务器、刀片服务器,等等。服务器3600包括存储器3602、处理器3604和BMC3614。处理器3604通过通信路径3606耦合到存储器3602。BMC通过总线3616耦合到处理器3604并且通过总线3612耦合到存储器3602。存储器3602、处理器3604、BMC3614、通信路径3606和总线3612和3616可以是上述的相应组件中的任何一个。
图37是根据一实施例的服务器系统的示意图。在此实施例中,服务器系统3700包括多个服务器3702-1至3702-N。每个服务器3702耦合到管理器3704。服务器3702中的一个或多个可与上文描述的服务器3500类似。此外,管理器3704可包括具有如上所述的存储器系统体系结构的系统。
管理器3704被配置为管理服务器3702和服务器系统3700的其他组件。例如,管理器3704可被配置为管理服务器3702的配置。每个服务器3702被配置为向管理器3704通信差错信息。差错信息可包括如上所述通信给服务器3702之一中的处理器的可校正差错信息或者基于可校正差错信息的其他差错信息。管理器3704可被配置为基于该差错信息来采取动作。例如,服务器3702-1可具有数目超出阈值的可校正差错。管理器3704可被配置为将服务器3702-1的功能转移到服务器3702-2并且关闭服务器3702-1以便维护和/或更换。虽然给出了特定示例,但管理器3704可被配置为基于差错信息采取其他动作。
图38是根据一实施例的数据中心的示意图。在此实施例中,数据中心3800包括多个服务器系统3802-1至3802-N。服务器系统3802可与上文在图36中描述的服务器系统3600类似。服务器系统3802耦合到网络3804,例如因特网。因此,服务器系统3802可通过网络3804与各种节点3806-1至3806-M通信。例如,节点3806可以是客户端计算机、其他服务器、远程数据中心、存储系统,等等。
一实施例包括一种系统,其包括:存储器,被配置为存储数据,校正从存储的数据读取的数据中的差错,并且响应于校正从存储的数据读取的数据中的差错而生成差错信息;以及处理器,该处理器通过第一通信路径和第二通信路径耦合到存储器,并且被配置为:通过第一通信路径从存储器接收数据;并且通过第二通信路径从存储器接收差错信息。
在一实施例中,差错是单比特差错;并且差错信息指示出差错被校正了。
在一实施例中,差错信息包括已校正的差错信息;并且处理器被配置为通过不是第一通信路径的路径接收已校正的差错信息。
在一实施例中,存储器是动态随机访问存储器模块。
在一实施例中,系统还包括:控制器,该控制器耦合到处理器和存储器并且被配置为与处理器和存储器通信。控制器是第二通信路径的一部分。
在一实施例中,控制器是基板管理控制器。
在一实施例中,控制器通过遵从智能平台管理接口(IPMI)的接口耦合到处理器。
在一实施例中,控制器通过遵从系统管理总线(SMBus)的接口耦合到存储器。
在一实施例中,控制器被配置为:存储差错信息;并且响应于从处理器接收的请求而向处理器提供差错信息。
在一实施例中,处理器包括耦合到存储器的存储器控制器,并且存储器控制器通过第一通信路径耦合到存储器。
在一实施例中,处理器包括耦合到存储器的存储器控制器;并且存储器控制器未被配置为校正从存储器读取的数据中的差错。
在一实施例中,第一通信路径包括多条数据线和至少一条数据选通线;并且存储器被配置为利用通过该至少一条数据选通线传送的信号来通信不可校正的差错。
在一实施例中,系统还包括:耦合在存储器和处理器之间的第三通信路径。存储器被配置为通过第三通信路径通信不可校正的差错。
在一实施例中,处理器被配置为请求由存储器生成的差错信息。
在一实施例中,处理器被配置为将差错信息和与存储器相关联的其他信息相组合。
在一实施例中,其他信息是基于通过第一通信路径接收的信息的。
在一实施例中,处理器包括耦合到第二通信路径的接口;并且处理器还被配置为:通过该接口接收差错信息;并且通过该接口接收其他信息。
在一实施例中,存储器包括串行存在检测系统和注册时钟驱动器系统中的至少一者;并且其他信息是从串行存在检测系统和注册时钟驱动器系统中的至少一者接收的。
一实施例包括一种存储器模块,其包括:被配置为存储数据的至少一个存储器设备;第一接口;以及第二接口。第一接口被配置为发送至少一个存储器设备中存储的数据;并且第二接口被配置为发送响应于校正从至少一个存储器设备读取的数据中的差错而生成的差错信息。
在一实施例中,第二接口包括串行存在检测接口和注册时钟驱动器接口中的至少一者。
在一实施例中,存储器模块还包括控制器,该控制器耦合到第一接口并且被配置为响应于检测到不可校正的差错而修改通过第一接口发送的数据选通信号。
在一实施例中,第二接口还被配置为响应于检测到不可校正的差错而发送差错信息。
一实施例包括一种方法,其包括:在存储器模块处读取包括差错的数据;基于读取包括差错的数据而生成差错信息;在存储器模块处接收读取差错信息的命令;以及响应于该命令从存储器模块发送差错信息。
在一实施例中,该方法还包括在控制器处接收差错信息;以及从控制器向处理器发送差错信息。
在一实施例中,该方法还包括:从控制器发送读取差错信息的命令;以及在控制器处接收差错信息。
在一实施例中,读取差错信息的命令被称为读取差错信息的第一命令,该方法还包括:在控制器处从处理器接收读取差错信息的第二命令;以及响应于第二命令从控制器发送第一命令。
在一实施例中,该方法还包括通过修改数据选通信号来从存储器模块通信不可校正的差错。
在一实施例中,该方法还包括在处理器处生成与存储器模块相关联的额外信息;以及在处理器处将额外信息与差错信息相组合。
在一实施例中,从存储器模块发送差错信息包括通过通信链路发送差错信息和其他信息。
在一实施例中,其他信息与存储器模块无关。
一实施例包括一种系统,其包括:存储器;通过主存储器通道耦合到存储器的处理器;以及与主存储器通道分离并且耦合到存储器和处理器的通信链路;其中存储器和处理器被配置为通过主存储器通道和通信链路与彼此通信。
在一实施例中,处理器包括存储器控制器;并且存储器控制器是主存储器通道的一部分。
在一实施例中,处理器被配置为通过通信链路接收系统管理信息。
在一实施例中,系统管理信息包括热信息和电力信息中的至少一者。
在一实施例中,存储器被配置为通过通信链路向处理器通信差错信息。
一实施例包括一种系统,其包括:不带有差错校正的存储器;耦合到存储器的差错校正电路,被配置为校正从存储器读取的数据中的差错,并且被配置为响应于该差错而生成差错信息;以及通过第一通信路径和第二通信路径耦合到差错校正电路的处理器。处理器被配置为通过第一通信路径从差错校正电路接收已校正的数据,并且处理器被配置为通过第二通信路径从差错校正电路接收差错信息。
在一实施例中,第二通信路径包括控制器,该控制器被配置为从差错校正电路接收差错信息并且向处理器发送差错信息。
一实施例包括一种方法,其包括:响应于通过数据接口接收的读取命令而在存储器设备处读取包括差错的数据;基于读取包括差错的数据记录差错信息;以及从存储器模块通过差错接口发送差错信息。
在一实施例中,该方法还包括响应于差错而重读从存储器读取的数据并且响应于重读数据而识别差错。
在一实施例中,该方法还包括如果重读的数据指示不可校正的差错则将差错识别为不可校正的。
在一实施例中,该方法还包括如果重读的数据指示不可校正的差错并且差错曾是不可校正的差错则将差错识别为不可修复的。
在一实施例中,该方法还包括如果重读的数据指示没有差错则将差错识别为软读取差错。
在一实施例中,该方法还包括响应于差错是可校正的差错而将已校正的数据重写到存储器。
在一实施例中,该方法还包括如果在重写期间发生不可校正的差错,则将差错识别为不可校正的差错。
在一实施例中,该方法还包括如果在重写期间没有发生差错,则将差错识别为软写入差错。
在一实施例中,该方法还包括如果在重写期间发生可校正的差错,则尝试修复存储器。
在一实施例中,该方法还包括基于尝试修复存储器的结果来识别差错。
在一实施例中,该方法还包括通过修改数据选通信号来从存储器模块通信不可校正的差错。
一实施例包括一种存储器模块,其包括:数据接口;差错接口;多个存储器设备,每个存储器设备耦合到数据接口和差错接口并且包括:被配置为存储数据的存储器;耦合到数据接口、差错接口和存储器的控制器;其中:控制器被配置为通过数据接口发送存储器中存储的数据;并且控制器被配置为通过差错接口发送响应于校正从存储器读取的数据中的差错而生成的差错信息。
在一实施例中,差错接口被配置为聚集来自存储器设备的差错信息。
在一实施例中,对于每个存储器设备,控制器被配置为响应于检测到不可校正的差错而修改从该存储器设备发送到数据接口的数据选通信号;并且数据接口被配置为响应于来自存储器设备中的一个或多个的经修改的数据选通信号而发送数据选通信号。
一实施例包括一种存储器设备,其包括:被配置为存储数据的存储器;以及控制器,该控制器耦合到存储器并且被配置为:读取存储器中存储的数据;诊断从存储器读取的数据中的差错;并且响应于诊断差错而识别差错的差错类型。
在一实施例中,控制器被配置为将差错类型识别为软读取差错、软写入差错、硬差错、可修复的差错和不可修复的差错中的至少一者。
在一实施例中,控制器被配置为响应于重读数据而诊断差错。
在一实施例中,控制器被配置为响应于重写数据而诊断差错。
在一实施例中,控制器被配置为响应于重写数据而判定是否要修复存储器。
虽然已根据示范性实施例描述了结构、方法和系统,但本领域普通技术人员将容易认识到对公开的实施例的许多变化是可能的,并且任何变化因此都应当被认为在本文公开的装置、方法和系统的精神和范围内。因此,在不脱离所附权利要求的精神和范围的情况下,本领域普通技术人员可作出许多修改。
Claims (20)
1.一种存储器模块,包括:
模块差错接口;以及
多个存储器设备,每个存储器设备耦合到所述模块差错接口,包括数据接口和设备差错接口,并且被配置为通过所述设备差错接口和所述模块差错接口来通信差错信息。
2.如权利要求1所述的存储器模块,还包括:
耦合到所述模块差错接口和每个存储器设备的设备差错接口的控制器。
3.如权利要求2所述的存储器模块,其中,所述控制器包括中继器。
4.如权利要求2所述的存储器模块,其中,所述控制器通过单独的总线耦合到每个所述设备差错接口。
5.如权利要求2所述的存储器模块,其中,所述控制器通过公共总线耦合到每个所述设备差错接口。
6.如权利要求5所述的存储器模块,其中,每个存储器设备还包括标识输入,并且所述存储器设备被配置为通过所述标识输入接收与所述公共总线相关联的标识。
7.如权利要求2所述的存储器模块,其中,所述存储器设备耦合到菊链式链路。
8.如权利要求7所述的存储器模块,其中,每个存储器设备被配置为响应于通过所述菊链式链路接收的信号而确定通过所述设备差错接口接收的信息是否与所述存储器设备相关联。
9.如权利要求2所述的存储器模块,还包括串行存在检测模块,该串行存在检测模块耦合到所述控制器并且被配置为通过所述模块差错接口通信。
10.如权利要求2所述的存储器模块,其中,所述控制器还包括被配置为接收地址的地址输入,并且所述控制器还被配置为基于所述地址来对通过所述模块差错接口接收的通信作出响应。
11.如权利要求2所述的存储器模块,其中,所述控制器还被配置为聚集通过所述存储器设备的设备差错接口接收的差错信息。
12.一种存储器模块,包括:
模块差错接口;
多个存储器设备,每个存储器设备包括数据接口和设备差错接口并且被配置为通过所述设备差错接口通信差错信息;以及
耦合到所述模块差错接口和每个存储器设备的设备差错接口的控制器。
13.如权利要求12所述的存储器模块,还包括:
模块数据接口;
其中,所述控制器耦合到所述模块数据接口和每个存储器设备的数据接口。
14.如权利要求12所述的存储器模块,还包括:
耦合到所述控制器的串行存在检测模块;
其中,通过所述控制器经由所述模块差错接口可访问所述串行存在检测模块。
15.如权利要求14所述的存储器模块,其中:
所述控制器被配置为从所述串行存在检测模块接收控制信号;并且
所述控制器被配置为通过所述模块差错接口提供所述控制信号。
16.如权利要求12所述的存储器模块,其中,所述控制器被配置为确定与所述存储器设备的设备差错接口相关联的地址。
17.一种方法,包括:
通过存储器模块的模块差错接口接收通信;
由控制器从耦合到所述控制器的至少一个存储器设备读取差错信息;以及
基于所述差错信息通过所述模块差错接口对所述通信作出响应。
18.如权利要求17所述的方法,还包括将所述通信转发到所述至少一个存储器设备。
19.如权利要求17所述的方法,其中,由所述控制器读取所述差错信息包括通过相应的专用总线访问所述至少一个存储器设备中的至少一者。
20.如权利要求17所述的方法,其中,由所述控制器读取所述差错信息包括通过公共总线访问所述至少一个存储器设备中的至少一者。
Applications Claiming Priority (12)
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 | 2015-01-09 | ||
US14/594,049 US20160055058A1 (en) | 2014-08-19 | 2015-01-09 | Memory system architecture |
US14/678,968 | 2015-04-04 | ||
US14/678,977 US10002044B2 (en) | 2014-08-19 | 2015-04-04 | Memory devices and modules |
US14/678,968 US10002043B2 (en) | 2014-08-19 | 2015-04-04 | Memory devices and modules |
US14/678,977 | 2015-04-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105373345A true CN105373345A (zh) | 2016-03-02 |
CN105373345B CN105373345B (zh) | 2020-11-10 |
Family
ID=55375579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510512333.7A Active CN105373345B (zh) | 2014-08-19 | 2015-08-19 | 存储器设备和模块 |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP6713740B2 (zh) |
KR (2) | KR102214556B1 (zh) |
CN (1) | CN105373345B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109710555A (zh) * | 2017-10-26 | 2019-05-03 | 三星电子株式会社 | 用于执行地址解析协议的从设备及其操作方法 |
CN114761936A (zh) * | 2019-12-13 | 2022-07-15 | 美光科技公司 | 具有计算能力的存储器模块 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10338838B2 (en) * | 2017-03-24 | 2019-07-02 | Samsung Electronics Co., Ltd. | Multi-mode NVMe over fabrics device for supporting CAN (controller area network) bus or SMBus interface |
US10747437B2 (en) * | 2017-05-02 | 2020-08-18 | Quanta Computer Inc. | SAS hard disk drive update via management controller |
KR102589913B1 (ko) * | 2018-04-12 | 2023-10-13 | 삼성전자주식회사 | 반도체 메모리 장치 및 이를 포함하는 메모리 시스템 |
US11074126B2 (en) * | 2018-07-12 | 2021-07-27 | Micron Technology, Inc. | Methods for error count reporting with scaled error count information, and memory devices employing the same |
KR102645140B1 (ko) * | 2018-12-06 | 2024-03-07 | 삼성전자주식회사 | Fpga를 포함하는 메모리 시스템 및 이의 동작 방법 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02206099A (ja) * | 1989-02-03 | 1990-08-15 | Nec Corp | ダイナミツクram |
CN1149344A (zh) * | 1994-05-24 | 1997-05-07 | 英特尔公司 | 利用硬件自动擦除存储器中的纠错码差错的方法和装置 |
CN1462451A (zh) * | 2001-04-25 | 2003-12-17 | 皇家菲利浦电子有限公司 | 具有用于嵌入式非易失性存储器的自测试器件的集成电路及相关测试方法 |
CN1707454A (zh) * | 2004-06-11 | 2005-12-14 | 三星电子株式会社 | 中心单元、存储器模块、存储器系统和对其读和写的方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4918824B2 (ja) | 2006-08-18 | 2012-04-18 | 富士通株式会社 | メモリコントローラおよびメモリ制御方法 |
KR100816053B1 (ko) | 2006-11-21 | 2008-03-21 | 엠텍비젼 주식회사 | 셀프 카피 기능을 가지는 메모리 장치, 메모리 시스템 및듀얼 포트 메모리 장치 |
US7949931B2 (en) | 2007-01-02 | 2011-05-24 | International Business Machines Corporation | Systems and methods for error detection in a memory system |
KR101397549B1 (ko) * | 2007-08-16 | 2014-05-26 | 삼성전자주식회사 | 고속 프로그램이 가능한 불휘발성 반도체 메모리 시스템 및그것의 독출 방법 |
US8468417B2 (en) * | 2009-02-18 | 2013-06-18 | Micron Technology, Inc. | Data integrity in memory controllers and methods |
US8239629B2 (en) * | 2009-03-31 | 2012-08-07 | Micron Technology, Inc. | Hierarchical memory architecture to connect mass storage devices |
CA2791931A1 (en) * | 2010-03-22 | 2011-09-29 | Mosaid Technologies Incorporated | Composite semiconductor memory device with error correction |
KR20130030099A (ko) * | 2011-09-16 | 2013-03-26 | 삼성전자주식회사 | 플래시 메모리 시스템 및 플래시 메모리 시스템의 독출 방법 |
KR20130086887A (ko) * | 2012-01-26 | 2013-08-05 | 삼성전자주식회사 | 메모리 버퍼, 이를 포함하는 장치들 및 이의 데이터 처리 방법 |
-
2015
- 2015-08-03 KR KR1020150109526A patent/KR102214556B1/ko active IP Right Grant
- 2015-08-19 JP JP2015162163A patent/JP6713740B2/ja active Active
- 2015-08-19 CN CN201510512333.7A patent/CN105373345B/zh active Active
-
2021
- 2021-02-03 KR KR1020210015698A patent/KR102378466B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02206099A (ja) * | 1989-02-03 | 1990-08-15 | Nec Corp | ダイナミツクram |
CN1149344A (zh) * | 1994-05-24 | 1997-05-07 | 英特尔公司 | 利用硬件自动擦除存储器中的纠错码差错的方法和装置 |
CN1462451A (zh) * | 2001-04-25 | 2003-12-17 | 皇家菲利浦电子有限公司 | 具有用于嵌入式非易失性存储器的自测试器件的集成电路及相关测试方法 |
CN1707454A (zh) * | 2004-06-11 | 2005-12-14 | 三星电子株式会社 | 中心单元、存储器模块、存储器系统和对其读和写的方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109710555A (zh) * | 2017-10-26 | 2019-05-03 | 三星电子株式会社 | 用于执行地址解析协议的从设备及其操作方法 |
CN109710555B (zh) * | 2017-10-26 | 2023-09-26 | 三星电子株式会社 | 用于执行地址解析协议的从设备及其操作方法 |
CN114761936A (zh) * | 2019-12-13 | 2022-07-15 | 美光科技公司 | 具有计算能力的存储器模块 |
Also Published As
Publication number | Publication date |
---|---|
KR20210016598A (ko) | 2021-02-16 |
KR102378466B1 (ko) | 2022-03-24 |
CN105373345B (zh) | 2020-11-10 |
JP6713740B2 (ja) | 2020-06-24 |
KR20160022250A (ko) | 2016-02-29 |
KR102214556B1 (ko) | 2021-02-09 |
JP2016045958A (ja) | 2016-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10824499B2 (en) | Memory system architectures using a separate system control path or channel for processing error information | |
CN105373345A (zh) | 存储器设备和模块 | |
US10002043B2 (en) | Memory devices and modules | |
TWI553650B (zh) | 以記憶體控制器來處理資料錯誤事件之方法、設備及系統 | |
US7444540B2 (en) | Memory mirroring apparatus and method | |
CN105373443B (zh) | 具有存储器系统体系结构的数据系统和数据读取方法 | |
US12099398B2 (en) | Non-volatile memory switch with host isolation | |
US7984357B2 (en) | Implementing minimized latency and maximized reliability when data traverses multiple buses | |
KR102262575B1 (ko) | 메모리 장치 및 모듈 | |
US20080046802A1 (en) | Memory controller and method of controlling memory | |
JPH0430619B2 (zh) | ||
US11513892B2 (en) | System and method for using a directory to recover a coherent system from an uncorrectable error | |
JP2020035419A (ja) | 第1のクロックドメインと第2のクロックドメインとの間で伝送される主信号のためのエラーチェック | |
US20090193229A1 (en) | High-integrity computation architecture with multiple supervised resources | |
JP2011070655A (ja) | 情報処理装置、メモリダンプシステムおよびメモリダンプ方法 | |
CN104798059A (zh) | 在检查点外部处理写入数据的多个计算机系统 | |
US20040078649A1 (en) | Computer system | |
JP2001007893A (ja) | 情報処理システム及びそれに用いる障害処理方式 | |
JPH10124338A (ja) | 並列処理装置 | |
JPH05282170A (ja) | エラー検出方式 | |
JPH10333729A (ja) | 数値制御装置 |
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 |