用于自测和修复存储模块的系统和方法

文档序号:6418185阅读:141来源:国知局
专利名称:用于自测和修复存储模块的系统和方法
技术领域
本发明涉及一种计算机系统,更具体而言,涉及一种具有存储器模块的计算机系统,所述存储器模块具有用于把多个存储器设备耦合至处理器或者其它存储器访问设备的存储器集线器。
背景技术
计算机系统使用诸如动态随机存取存储器(“DRAM”)设备之类的存储器设备来存储由处理器访问的指令和数据。这些存储器设备通常用作计算机系统中的系统存储器。在典型的计算机系统中,处理器通过处理器总线和存储器控制器与系统存储器进行通信。处理器发出存储器请求,其包括诸如读命令之类的存储器命令,以及用于指定从中读取数据或者指令的位置的地址。存储器控制器使用命令和地址来生成适当的命令信号以及行和列地址,这些信号和地址被应用于系统存储器。响应于该命令和地址,在系统存储器和处理器之间传送数据。存储器控制器通常是系统控制器的一部分,其还包括总线桥接电路,用于将处理器总线耦合至诸如PCI总线之类的扩展总线。
虽然存储器设备的运行速度已经不断地增加,但是运行速度方面的这种增加无法跟上处理器运行速度的增加。用于将处理器耦合至存储器设备的存储器控制器的运行速度甚至更慢。相对低速的存储器控制器和存储器设备限制了处理器和存储器设备之间的数据带宽。
除了处理器和存储器设备之间的有限带宽以外,计算机系统的性能也因延迟问题而受到限制,延迟问题增加了从系统存储器设备读取数据所要求的时间。更具体地说,当把存储器设备读命令耦合至诸如同步DRAM(“SDRAM”)设备之类的系统存储器设备时,只能在延迟多个时钟周期以后从所述SDRAM设备输出读数据。因此,虽然SDRAM设备能够以高数据率同步输出突发的数据,但是最初提供数据时的延迟会明显减缓使用这种SDRAM设备的计算机系统的运行速度。
用于减轻存储器延迟问题的一种方法是使用通过存储器集线器耦合至处理器的多个存储器设备。在存储器集线器体系结构中,把系统控制器或者存储器集线器控制器耦合至多个存储器模块,每个存储器模块均包括耦合至多个存储器设备的存储器集线器。存储器集线器在控制器和存储器设备之间有效地路由存储器请求和响应。采用这种体系结构的计算机系统可以具有更高的带宽,这是因为处理器可以访问一个存储器设备,同时另一存储器设备正在响应先前的存储器访问。例如,处理器可以向系统中的存储器设备之一输出写数据,同时系统中的另一存储器设备正在准备向处理器提供读数据。使用存储器集线器体系结构的计算机系统的运行效率可以使其更加适用于计算机系统极大增加的存储容量。
尽管使用存储器集线器来访问存储器设备具有优势,但是用于存储器设备的半导体工艺经常会造成有损坏的存储单元,这使得存储器设备不可靠。存储器设备中损坏的单元削弱使用这种设备的计算机系统的性能的程度,取决于计算机系统的类型以及它正执行的应用。计算机系统从诸如包含在电话答录机中的那些简单的计算机,到用于复杂的科学项目的高度复杂的巨型计算机各有不同。例如在用于电话答录机的简单计算机中,存储器的一个或多个存储单元的错误未必是致命的。例如,在电话答录机的存储器中的差错可能只会使存储在存储器上的合成语音产生感觉不到的改变。然而,用于执行科学计算的计算机存储器中的一个或多个损坏的存储单元会产生相当大的问题。
虽然目前的制造工艺已经实质上减少了损坏的存储单元的数目,但是计算机存储器仍然易于受到这种损坏的存储单元的影响。那些损坏的存储单元可能因在制造存储器芯片期间采取的众多步骤中的任意步骤、半导体结晶缺陷、电连接器中断等等引起。虽然具有这种损坏的存储单元的存储器芯片通常只占所生产的存储器芯片总数的一小部分(小于1%),但是这种损坏的存储器芯片的实际数目是相当大的。
过去,提供了额外的存储单元行(通称为“冗余行”)来替代已经损坏的存储单元的行。虽然在抢救另外损坏的存储器芯片的过程中使用冗余行是奏效的,但是可以被替代的损坏行的数目受到存储器芯片上所提供的冗余行数目的限制。损坏行的数目有时超出可用的冗余行的数目,由此妨碍了一些损坏行的修复。在一些情况下,能够以非常低的价格出售这种损坏的存储器芯片,以供那些不要求完美的存储器的应用之用,例如电话答录机。然而,如果那些存储器芯片中的一些可以用于更关键的应用,例如用于个人计算机,那将会是十分有益的。
允许这种损坏的存储器芯片添加到个人计算机的一种方式是采用纠错方案来补偿损坏的存储单元。纠错方案向每个数据字添加多个纠错位,用于当在数据字内发生错误数据位时允许该数据字被重构。然而,现有技术的这种纠错方案通常就只在一个数据字的一位有错时重构该数据字。而且,这种纠错方案向每个数据字添加几个额外的数据位,这导致了相当高的存储开销。另外,这种纠错方案可以被扩展为检测多个错误数据位,但是由此可能造成的存储器开销往往是无法承受的。
校正损坏的存储器位的另一方法是通过通常已知的重映射方案来实现。重映射方案使用预定的错误映射和重映射表来重定向损坏的存储单元。该错误映射通常在工厂中基于众所周知的测试来创建,该测试用于确定存储器块的哪些存储单元是损坏的。虽然这种重映射方案致力于解决双位错误问题和高存储器开销问题,但是其呈现了各种严重缺陷。例如,在工厂创建错误映射无法使将来损坏的单元得以校正,并且为制造过程增加了额外的时间和金钱。在系统控制器中创建错误映射要求每个计算机制造商为可由计算机系统访问的每个类型的存储器设备开发唯一的测试系统。
无论所使用的存储器修复或者校正技术的类型如何,都必须检测损坏的存储单元的位置。通常通过向存储单元阵列写入已知数据所形成的图案(pattern),如1和0的棋盘状图案,然后从这些存储单元读出数据以便确定读出的数据是否与写入的数据相匹配,以此来检测损坏的存储单元。以这样的方式对存储器设备进行的测试,通常是在制造存储器设备期间、并且由使用该存储器设备的计算机或者其它系统在多个阶段中执行的。例如,在计算机系统上电时,计算机系统通常测试系统存储器设备,其通常是动态随机存取(“DRAM”)存储器设备。
通过向存储器设备写入已知数据、从存储器设备读出数据和比较读出数据与写入数据,对存储器设备进行测试所需要的时间,很大程度上是存储器设备存储容量的函数。例如,如果存储器设备中存储单元的数目加倍,那么通常测试存储器设备所需的时间加倍。尽管测试用于常规的存储器体系结构的存储器设备所需时间可以是可以接受的很短的时间,但是测试使用其它体系结构的存储器设备所需的时间可能是无法接受的很长的时间。例如,在存储器集线器体系结构系统中,存储器集线器体系结构可以提供的巨大存储容量会给处理器测试存储器设备带来无法接受的长时间周期。
减少通过比较读出数据与写入数据来对存储器设备进行测试所需时间的一种方式是通过在存储器设备中添加自测电路来将存储器测试功能移至“芯片上”。虽然这种方法可以减少测试存储器设备所需的时间,但是仍须向处理器或者其它存储器访问设备报告每个存储器设备的通过/故障状态。在使用大量存储器设备的存储器集线器体系结构中,所有存储器设备报告其通过/故障状态会要求相当大的时间周期。
因此需要一种存储器模块,该存储器模块可以将存储器集线器体系结构的优势和测试及修复存储器模块上的存储器设备的优势结合起来。

发明内容
本发明致力于一种测试和修复位于存储器模块上的存储器设备的损坏的存储单元的计算机系统和方法。所述计算机系统包括耦合至存储器集线器控制器的多个存储器模块。每个所述存储器模块都包括多个存储器设备和一个存储器集线器。所述存储器集线器包括自测模块和修复模块。所述自测模块耦合至所述存储器设备,并且响应请求来测试所述存储器设备,所述自测模块执行一个或多个自测例程。所述自测例程确定存储器设备上的损坏的存储器的位置。所述修复模块利用损坏的存储器的位置来创建重映射表。所述重映射表把存储器设备损坏的存储单元重定向至位于存储器模块上的存储器的未损坏的存储单元,例如该存储器模块在存储器设备中、或者在高速缓冲存储器或者位于存储器集线器内的暂时存储器中。由此,每当所述存储器集线器接收来自于诸如计算机处理器的存储器访问设备之一的存储器请求时,所述存储器集线器利用修复模块来检验损坏的存储器的存储单元,并且必要时,把存储器请求重定向至未损坏的单元。
正如将显而易见的那样,本发明能够在各种明显的方面进行修改,所有这些修改都不脱离本发明的宗旨和范围。据此,附图和详细说明实质上应该被认为是例证性的,而非限制性的


图1是依照本发明一个例子的计算机系统的框图,其中多个存储器模块的每一个中都包含了存储器集线器;图2是用于图1计算机系统的存储器模块的一个例子的框图;图3是用于图2存储器模块的存储器集线器的一个例子的框图。
具体实施例方式
图1中示出了依照本发明一个实施例的计算机系统100。计算机系统100包括用于执行各种计算功能的处理器104,例如执行特殊的软件来执行特殊的计算或者任务。处理器104包括处理器总线106,该处理器总线通常包括地址总线、控制总线和数据总线。通常把处理器总线106耦合至高速缓冲存储器108,该高速缓冲存储器108通常是静态随机存取存储器(“SRAM”)。最后,把处理器总线106耦合至系统控制器110,该系统控制器有时还被称为“北桥”或者“存储器控制器”。
系统控制器110用作各种其它部件到处理器104的通信通路。更具体地说,系统控制器110包括图形端口,通常把该图形端口耦合至图形控制器112,继而把该图形控制器耦合至视频终端114。还把系统控制器110耦合至诸如键盘或鼠标的一个或多个输入设备118,以便允许操作者通过界面与计算机系统100连接。通常,计算机系统100还包括诸如打印机的一个或多个输出设备120,把该输出设备通过系统控制器110耦合至处理器104。通常也把一个或多个数据存储设备124通过系统控制器110耦合至处理器104,以便允许处理器104存储数据或者从内部或者外部存储介质(未示出)恢复数据。典型的存储设备124的例子包括硬盘和软盘、盒式磁带和光盘只读存储器(CD-ROM)。
系统控制器110包括存储器集线器控制器128,把该存储器集线器控制器耦合至作为计算机系统100的系统存储器的多个存储器模块130a,b...n。优选的是,把存储器模块130通过高速链路134耦合至存储器集线器控制器128,该高速链路134可以是光学或者电子通信通路、或者是其它类型的通信通路。如果用光通信通路实现高速链路134,那么该光通信通路可以具有一个或多个光纤的形式。在此情况下,存储器集线器控制器128和存储器模块将包括耦合至所述光通信通路的光学输入/输出端口或者分立的输入和输出端口。在一种多点(multi-drop)方案中,把所示存储器模块130耦合至存储器集线器控制器128,在该方案中把单个高速链路134耦合至所有存储器模块130。然而,应该理解的是,还可以使用其它拓扑结构,诸如点到点耦合方案,其中使用分立的高速链路(未示出)来把每个存储器模块130耦合至存储器集线器控制器128。还可以使用开关拓扑结构,其中通过开关(未示出)有选择地把存储器集线器控制器128耦合至每个存储器模块130。对于本领域中的技术人员显而易见的是还可以使用其它拓扑结构。
每个存储器模块130都包括存储器集线器140,用于控制对六个存储器设备148的访问,在图1所示的例子中,该存储器设备148是同步的动态随机存取存储器(“SDRAM”)设备。然而,可以使用更少或者更多的存储器设备148,并且还可以使用不同于SDRAM设备的存储器设备。通过总线系统150把存储器集线器140耦合至每个系统存储器设备148,该总线系统通常包括控制总线、地址总线和数据总线。
图2中示出了可用于图1的存储器模块130的存储器集线器140的一个例子。优选的是,存储器集线器140包括存储器控制器152、链路接口154和存储器设备接口156,但其不局限于此。把链路接口154耦合至高速链路134以便接收来自于存储器集线器控制器128的地址、命令和写数据信号,并且向存储器集线器控制器128传送读数据信号。链路接口154的类型将取决于高速链路134的特征。例如,如果使用光通信通路来实现高速链路134,那么链路接口154将包括光学输入/输出端口并且把通过光通信通路耦合的光信号转换为电信号。在任何情况下,优选的是,链路接口154包括诸如先进先出缓冲器160的缓冲器,用于当通过所述高速链路134接收到存储器请求时,接收存储器请求并且存储它们。把所述存储器请求存储在缓冲器160中,直到能够由存储器集线器140处理它们为止。
当存储器集线器140能够处理存储器请求时,将存储在缓冲器160中的存储器请求之一传送到存储器控制器152。存储器控制器152可以包括定序器158,该定序器把存储器请求从由存储器集线器控制器128输出的格式转换为具有能够用于存储器设备148的格式的存储器请求。这种重新格式化的请求信号将通常包括源自于包含在存储器请求中的存储器命令的存储器命令信号、以及源自于包含在存储器请求中的地址的行和列地址信号。在该存储器请求之一是写存储器请求的情况下,该重新格式化的请求信号将通常包括源自于包含在由存储器集线器140接收的存储器请求中的写数据的写数据信号。例如,如果存储器设备148是常规的DRAM设备,那么存储器定序器158将输出行地址信号、行地址选通(“RAS”)信号、有效高位写/有效低位读信号(“W/R*”)、列地址信号和列地址选通(“CAS”)信号。
定序器158把重新格式化的存储器请求的信号依照存储器设备148所要求的顺序应用于存储器设备接口156。存储器设备接口156的类型将取决于存储器设备148的特征。例如,定序器158可以将行地址信号、继之以RAS信号、继之以列地址信号、继之以CAS信号应用于存储器设备接口156。在任何情况下,优选的是,存储器设备接口156包括诸如先进先出(FIFO)缓冲器162的缓冲器,用于当从定序器158接收到一个或多个存储器请求时接收并且存储它们。把该存储器请求存储在缓冲器162中,直到能够由存储器设备148处理它们为止。在存储器设备接口156存储了多个存储器请求的情况下,存储器设备接口156可以对存储器请求重新排序,以便把它们依照其它的顺序应用于存储器设备148中。
如上所述的存储器请求是由存储器集线器140接收到的,其格式不同于应用于存储器设备148的存储器请求的格式。然而,存储器集线器控制器128可以代之以把来自于处理器104的所述存储器请求重新格式化为可由存储器设备148使用的格式。然后,定序器158往往只依照存储器设备148使用所需的顺序来安排有重新格式化的请求信号。然后把一个或多个存储器请求的存储器请求信号传送到存储器设备接口156,如此可以随后把它们应用于存储器设备148。
进一步参考图2,存储器集线器140还包括自测模块164和修复模块166。自测模块164包括定序器168,而修复模块166包括错误映射174和重映射表176。虽然未示出,但是存储器模块140还可以包括其它部件,如上所述,用于与存储器集线器控制器128以及存储器设备148连接。
如先前所解释的那样,存储器模块所具有的问题之一就是存在损坏的存储器。为了确保存储器模块的可靠性,需要在工厂或者在已安装好存储器模块的计算机上花费额外的时间和金钱来测试和/或修复每个模块。然而,在工厂测试和修复存储器无法解决可能发展的任何将来的存储器缺陷。同样,测试已安装在计算机中的存储器需要在每次向计算机供电时花费时间供计算机来执行测试例程。对于使用具有存储器集线器体系结构的存储器的计算机系统来说,在每次上电期间测试存储器设备所需的时间可能是无法接受的长时间。此外,在已经把存储器设备安装在计算机系统中之后,对这些存储器设备进行的测试只能识别存储器缺陷的存在。一般不能够对这种缺陷采取任何行动,例如无法通过使用如上所述的技术来修复这种缺陷。
图2中所示的存储器模块130提供了自测和修复能力,这种能力被集成到存储器模块130中。由此,在把存储器模块130安装到计算机系统100或者其它系统之后,该存储器模块可以对自身进行连续地测试和修复。该测试和修复系统是存储器模块130不可分割的部分,并且是专为添加到存储器模块130中的存储器设备148的类型而设计的。这样做不需要每个计算机制造商为其计算机系统使用的每种类型的存储器设备148开发自定义的测试和修复系统。另外,通过在存储器集线器140上设置自测模块164和修复模块166,存储器模块130利用了存储器集线器140的存储器处理能力,例如在存储器集线器控制器128和存储器设备148之间有效路由存储器请求和响应的存储器集线器的能力。这样使得存储器模块130能更加一致地并且迅速地对自身进行测试和修复。
图2中所示的自测模块164提供了通过定序器168直接访问存储器设备148的自测系统。自测模块164可以执行多个内部自测(BIST)例程(未示出)来检查存储器模块130的存储器设备148。该自测例程可以采用逻辑电路或者已编程处理器来执行。该自测例程可以存储在自测模块164中,或者可以存储在存储器模块130上的非易失性存储器中,或者存储在其它地方,然后当需要时被载入自测模块164。所述自测例程执行一系列存储器设备测试并且识别损坏的存储单元。例如,一个例程可以向存储器设备148的存储单元写数据,然后试图从存储器设备148读取数据。如果从所述存储单元中读取的数据与写入该存储单元的数据不匹配,那么就确定该存储单元是损坏的。自测例程可以测试每个存储单元以便确定它是否损坏,如果是,就对该损坏的存储单元创建错误标记。在替代的实现方式中,所述自测例程可以测试较大的存储单元,例如四千字节的存储单元组,以便确定所述四千字节的存储单元是否损坏。
在图2中所示的实施例中,定序器168被置于自测模块164中。定序器168允许自测模块164通过存储器设备接口156访问每个存储器设备148。通过向定序器168发送一系列存储器请求来执行自测模块164的自测例程。定序器168把存储器请求从来自于自测模块164输出的格式转换为具有能够用于存储器设备148的格式的存储器请求。定序器168把该重新格式化的存储器请求应用于存储器设备接口156。
能够以多种方式启动自测模块164的自测例程。如图2所示,把测试信号170耦合至自测模块164来启动自测模块164的测试过程。每当计算机系统100开启时,可以提供该信号,如此使得当计算机系统上电时始终运行测试例程。存储器模块130上还可以设置上电检测电路(未示出),每当所述计算机系统100开启时,所述上电检测电路检测上电并且启动自测模块164的自测例程。另外,自测例程可以从供给测试信号170的处理器104或者从高速链路134来启动。更具体地说,高速链路134可用于提供启动自测模块116的自测例程的信号。启动测试过程可以本领域技术人员所能普遍理解的其它方式来实现,并且不局限于此处所描述的这些方式。
存储器测试的结果用于识别并且优选的是用于修复存储器设备148的损坏的存储单元。可以把所述结果直接报告给计算机系统100的处理器104或者其它存储器访问设备。如图2所示,可以把所述结果经由测试结果链路172A或者链路数据输出134发送。这样允许每个存储器访问设备分别地处理损坏的存储单元。然而,优选的是,由存储器集线器140上的修复模块166试用所述结果。如图2所示,把所述结果经由测试结果链路172B发送到修复模块166。
将存储器设备148的损坏存储单元的标识符组合并且存储在错误映射174中。错误映射174可以由自测模块164创建,然后被传送到修复模块166,或者在替代的实现方式中,把自测例程的结果传送到修复模块166以便由修复模块166来创建错误映射174。在优选的实施例中,把所述错误映射174存储在修复模块166上,但是错误映射174还可以由自测模块164存储并且从自测模块164对其进行访问,或者存储在其它位置中,例如由存储器集线器140或者存储器设备148存储。用于存储错误映射174的存储器类型通常是非易失性存储器。因为访问非易失性存储器通常比访问易失性存储器要慢,所以可以把错误映射174存储在非易失性存储器,然后传送到易失性存储器中,以便由修复模块166快速访问。
错误映射174包括存储器设备148的每个损坏的易失性存储单元的错误标记。优选的是,通过把错误标记与每个损坏的易失性存储器部分相关联,把无错误标记与每个未损坏的易失性存储器部分相关联,以此来实现错误映射174。例如,如果所述存储器部分是损坏的,那么所述错误标记可以是诸如0的第一逻辑值的标记位,;如果所述存储器部分没有损坏,那么所述无错误标记可以是诸如1的第二逻辑值的标记位。作为选择,错误映射174可以仅仅包括损坏的存储单元的地址,如此来假定未列出的地址是未损坏的。
修复模块166使用位于存储器模块130上的存储器来重新映射存储器设备148的损坏的存储单元。一旦已经创建了错误映射174,修复模块164就创建重映射表176。重映射表176把存储器设备148的每个损坏的存储单元重定向至存储器设备148的已知未损坏的部分。换言之,对于存储器设备148的每个损坏部分来说,重映射表176包括指向存储器设备148的未损坏部分的索引。优选的是,损坏的存储单元被映射到的单元位于存储器模块130的存储器设备148的保留区域,如此使得它们无法被处理器104直接访问。通过使保留的存储器区域不被处理器104直接访问,计算机系统100避免存储器访问冲突,该冲突往往当处理器104对由损坏单元所映射至的存储单元所占据的单元进行重写时发生,重映射表176能把损坏的存储单元重定向至存储器模块130上的其它未损坏的单元,其包括高速缓冲存储器和位于存储器集线器140的暂时存储器。
如同错误映射174一样,重映射表176可以存储在多个存储单元中。如果每当计算机系统100被上电时重新创建所述重映射表,那么重映射表可以位于存储器设备148中。然而,重映射表176还可以存储在非易失性存储器中。例如,如果只周期性地创建重映射表176,那么优选的是,把重映射表176存储在非易失性存储器中。当把重映射表176存储在非易失性存储器中时,对重映射表176的访问时间因为向易失性存储器传送表176而增加。如图2所示,重映射表176被存储在位于修复模块166的存储器中,但是不局限于此位置。重映射表176还可以位于存储器集线器140上的其它存储器中。优选的是,重映射表位于存储器设备148中,这是因为修复模块166或者存储器集线器140中的可用存储器数量是有限的,而在存储器设备148中有可能获得更大的空间。如果把重映射表176存储在存储器设备148中,那么优选的是,把它存储在保留存储器区域。
在把错误映射174和重映射表176存储在存储器中的适当位置之后,存储器模块130准备接收用于访问存储器设备148的存储器请求。存储器集线器140的链路接口154接收来自于存储器集线器控制器128的每个存储器请求,用于访问存储器设备148的一个或多个被访单元。链路接口154将存储器请求耦合至存储器集线器140的存储器控制器152。存储器控制器152通过访问修复模块164来做出响应,以根据错误映射176来确定该存储器请求的被访单元是否是损坏的。如果错误映射176表明被访问的存储单元不是损坏的,那么存储器控制器152仅仅把该存储器请求经由存储器设备接口156耦合至存储器设备148的被访单元。如果所述错误映射176表明被访问的存储单元是损坏的,那么存储器修复模块164访问重映射表176。然后存储器控制器152把该存储器请求耦合至根据重映射表176确定的未损坏存储单元,并且把该存储器请求经由存储器设备接口156耦合至存储器设备148。然后存储器设备接口156执行由该存储器请求所请求的功能。例如,如果所述存储器访问请求是从被访问的存储单元读数据,那么存储器设备接口156就从被访问的存储单元所映射至的未损坏存储单元读取数据,并且存储器集线器140把数据经由高速链路134返回到存储器集线器控制器128。
图3示出了图1的存储器集线器140的第二实施例。在此实施例中,存储器集线器140包括图2的自测模块164和修复模块166。修复模块166也包括错误映射174和重映射表176。为了简洁,这种共同的部件用了相同的附图标号,并且将不会重复对它们操作的说明。
图3中的存储器集线器140不同于图2中所示的存储器集线器140之处是图3中的存储器集线器140使用了包括错误映射180和重映射表182的存储器控制器178,错误映射180是错误映射174的副本,而重映射表182是重映射表176的副本。图3中的存储器集线器140不同于图2中所示的存储器集线器140之处还在于存储器控制器178包括定序器184,而自测模块164不包括用于图2实施例的定序器168。因而,所述自测模块164没有从图2的安装在同一集成板的定序器168直接访问存储器设备148,而是通过现在位于存储器控制器178上的定序器184访问存储器设备148。通过在存储器控制器178中设置错误映射180和重映射表182,存储器控制器178能够识别和修复损坏的存储单元,而无须为每个存储器请求访问修复模块164。通过使用存储器控制器178中的定序器184来访问存储器设备148,图3的存储器集线器140可以利用存储器控制器178的现有能力来访问存储器设备148。
优选的是,每当创建新的映射174和表176,存储器控制器178传送错误映射174和重映射表176至存储器控制器178。另一选择是在存储器控制器178上设置修复模块164,如此使得错误映射174和重映射表176可以被直接访问,而无须被分别传送到错误映射180和重映射表182。存储器集线器140的部件配置还可以使用不同于图2和3中所示的实施例所使用的配置。
测试和修复存储器设备148的损坏的存储单元的全部过程对于存储器集线器控制器128是透明的,更具体来讲,对处理器104以及其它存储器访问设备是透明的。因而,不需要为了与存储器模块130的存储器设备148协同运转而以任何方式修改处理器104运行的软件或存储器集线器控制器128的功能。由此,存储器集线器控制器128不必测试存储器设备148或者修复损坏的存储单元,而是依照常规的方式与存储器集线器140通信。
虽然已经参考优选实施例描述了本发明,但是所属技术领域的专业人员将意识到,在不脱离本发明的实质和范围的情况下可以做出各种形式和细节上的修改。因此,本发明除了所附的权利要求书以外不受限制。
权利要求
1.一种存储器模块,包括多个存储器设备;以及一个存储器集线器,包括自测模块,耦合到至少一个所述存储器设备,该自测模块响应于请求来测试至少一个所述存储器设备,该自测模块还用于识别所述存储器设备的损坏的存储单元;以及修复模块,耦合至该自测模块以及至少一个所述存储器设备,该修复模块响应于对所述存储器设备的损坏的存储单元的存储器请求来把所述存储器请求重定向至所述存储器设备的未损坏的存储单元。
2.如权利要求1所述的存储器模块,其中所述自测模块还包括定序器,用于访问所述存储器设备,该定序器用于输出地址,该地址包含在来自于所述自测模块的存储器请求中,用于访问所述存储器设备的存储单元。
3.如权利要求1所述的存储器模块,其中所述存储器模块还包括链路接口,用于接收对至少一个所述存储器设备的存储器请求;存储器设备接口,耦合至所述存储器设备,该存储器设备接口用于把存储器请求耦合至所述存储器设备;以及存储器控制器,耦合至所述链路接口以及所述存储器设备接口和所述修复模块,该存储器控制器用于通过使用所述修复模块把对存储器设备损坏的单元的存储器请求重定向至存储器设备的未损坏的单元,来生成并把来自于所述链路接口的存储器请求耦合至所述存储器设备接口。
4.如权利要求3所述的存储器模块,其中所述存储器控制器还包括定序器,用于访问所述存储器设备,该定序器用于输出地址,该地址包含在来自于所述自测例程的存储器请求中,用于访问所述存储器设备的存储单元。
5.如权利要求3所述的存储器模块,其中所述存储器设备接口还包括先进先出缓冲器,用于接收并且存储从所述存储器控制器接收的存储器请求,并且把所存储的存储器请求依照接收的顺序传送到至少一个所述存储器设备中。
6.如权利要求3所述的存储器模块,其中所述链路接口包括先进先出缓冲器,用于接收并且存储存储器请求,并且把所存储的存储器请求依照接收的顺序传送到所述存储器控制器中。
7.如权利要求1所述的存储器模块,其中把识别所述存储器设备的损坏的存储单元的信息从所述自测模块传送到所述修复模块。
8.如权利要求1所述的存储器模块,其中把所述自测模块耦合到至少一个所述存储器访问设备中,把所述存储器设备的损坏的存储器的位置传送到至少一个所述存储器访问设备。
9.如权利要求1所述的存储器模块,其中所述修复模块还包括存储了所述存储器设备损坏的存储器的位置的错误映射,所述修复模块使用该错误映射来确定所述存储器请求是否是对所述存储器设备损坏的存储单元的请求。
10.如权利要求9所述的存储器模块,其中所述修复模块还包括重映射表,该重映射表使用所述错误映射来把所述存储器设备损坏的存储单元指定至位于所述存储器模块上的存储器的未损坏的存储单元,所述修复模块使用该重映射表来把对所述存储器设备损坏的存储单元的存储器请求重定向至所述存储器设备未损坏的存储单元。
11.如权利要求1所述的存储器模块,其中所述存储器设备包括动态随机存取存储器设备。
12.一种存储器模块,包括多个存储器设备;以及一个存储器集线器,包括存储器控制器,耦合到至少一个所述存储器设备,该存储器控制器响应于对所述存储器设备的存储器请求;自测模块,耦合至所述存储器控制器,该自测模块响应于请求来测试至少一个所述存储器设备,该自测模块还用于识别所述存储器设备损坏的存储单元;以及修复模块,耦合至所述存储器控制器,该修复模块响应于对所述存储器设备损坏的存储单元的存储器请求,来把所述存储器请求重定向至所述存储器设备的未损坏存储单元。
13.如权利要求12所述的存储器模块,其中所述存储器控制器还包括定序器,用于访问所述存储器设备,该定序器用于输出地址,该地址包含在来自于所述自测模块的存储器请求中,用于访问所述存储器设备的存储单元。
14.如权利要求12所述的存储器模块,其中所述存储器模块还包括链路接口,耦合至所述存储器控制器,用于接收对至少一个所述存储器设备的存储器请求;以及存储器设备接口,耦合至所述存储器控制器和所述存储器设备,该存储器设备接口用于把存储器请求耦合至所述存储器设备。
15.如权利要求14所述的存储器模块,其中所述存储器控制器通过使用所述修复模块把对所述存储器设备的损坏的单元的存储器请求重定向至所述存储器设备的未损坏的单元,来生成并把来自于所述链路接口的存储器请求耦合至所述存储器设备接口。
16.如权利要求14所述的存储器模块,其中所述存储器设备接口还包括先进先出缓冲器,用于接收并且存储从所述存储器控制器接收的存储器请求,并且把所存储的存储器请求依照接收的顺序传送到至少一个所述存储器设备中。
17.如权利要求14所述的存储器模块,其中所述链路接口包括先进先出缓冲器,用于接收并且存储存储器请求,并且把所存储的存储器请求依照接收的顺序传送到所述存储器控制器中。
18.如权利要求12所述的存储器模块,其中把识别所述存储器设备损坏的存储单元的信息从所述自测模块传送到所述修复模块。
19.如权利要求12所述的存储器模块,其中把所述自测模块耦合到至少一个所述存储器访问设备中,把所述存储器设备的损坏的存储器位置传送到至少一个所述存储器访问设备。
20.如权利要求12所述的存储器模块,其中所述修复模块还包括存储了所述存储器设备损坏的存储器位置的错误映射,该修复模块使用所述错误映射来确定所述存储器请求是否是对所述存储器设备损坏的存储单元的请求。
21.如权利要求20所述的存储器模块,其中所述修复模块还包括重映射表,该重映射表使用所述错误映射来把所述存储器设备的损坏的存储单元指定至位于所述存储器模块上的存储器的未损坏存储单元,所述修复模块使用该重映射表来把对所述存储器设备损坏的存储单元的存储器请求重定向至所述存储器设备的未损坏存储单元。
22.如权利要求21所述的存储器模块,其中所述存储器控制器还包括所述修复模块的所述错误映射,该错误映射用于确定所述存储器请求是否是对所述存储器设备损坏的存储单元的请求。
23.如权利要求22所述的存储器模块,其中所述存储器控制器还包括所述修复模块的重映射表,该重映射表用于把对所述存储器设备的损坏的单元的存储器请求重定向至所述存储器设备的未损坏的单元。
24.如权利要求12所述的存储器模块,其中所述存储器设备包括动态随机存取存储器设备。
25.一种计算机系统,包括中央处理单元(“CPU”);系统控制器,耦合至所述CPU,该系统控制器具有输入端口和输出端口;通过所述系统控制器耦合至所述CPU的输入设备;通过所述系统控制器耦合至所述CPU的输出设备;通过所述系统控制器耦合至所述CPU的存储设备;多个存储器模块,每个存储器模块包括多个存储器设备;和一个存储器集线器,包括自测模块,耦合到至少一个所述存储器设备,该自测模块响应于请求来测试至少一个所述存储器设备,该自测模块还用于识别所述存储器设备的损坏的存储单元;修复模块,耦合至所述自测模块以及至少一个所述存储器设备,该修复模块响应于对所述存储器设备损坏的存储单元的存储器请求来把所述存储器请求重定向至所述存储器设备的未损坏存储单元;以及通信链路,用于把所述系统控制器的输出端口耦合至每个所述存储器模块中的所述存储器集线器的输入端口,并且用于把所述系统控制器的输入端口耦合至每个所述存储器模块中的所述存储器集线器的输出端口。
26.如权利要求25所述的计算机系统,其中所述自测模块还包括定序器,用于访问所述存储器设备,该定序器用于输出地址,该地址包含在来自于所述自测模块的存储器请求中,用于访问所述存储器设备的存储单元。
27.如权利要求25所述的计算机系统,其中所述存储器模块还包括链路接口,用于接收对至少一个所述存储器设备的存储器请求;存储器设备接口,耦合至所述存储器设备,该存储器设备接口用于把存储器请求耦合至所述存储器设备;以及存储器控制器,耦合至所述链路接口以及所述存储器设备接口和所述修复模块,该存储器控制器用于通过使用所述修复模块把对所述存储器设备损坏的单元的存储器请求重定向至所述存储器设备的未损坏的单元,来生成并把来自于所述链路接口的存储器请求耦合至所述存储器设备接口。
28.如权利要求27所述的计算机系统,其中所述存储器控制器还包括定序器,用于访问所述存储器设备,该定序器用于输出地址,该地址包含在来自于所述自测例程的存储器请求中,用于访问所述存储器设备的存储单元。
29.如权利要求27所述的计算机系统,其中所述存储器设备接口还包括先进先出缓冲器,用于接收并且存储从所述存储器控制器接收的存储器请求,并且把所存储的存储器请求依照接收的顺序传送到至少一个所述存储器设备中。
30.如权利要求27所述的计算机系统,其中所述链路接口包括先进先出缓冲器,用于接收并且存储存储器请求,并且把所存储的存储器请求依照接收的顺序传送到所述存储器控制器中。
31.如权利要求25所述的计算机系统,其中把识别所述存储器设备损坏的存储单元的信息从所述自测模块传送到所述修复模块。
32.如权利要求25所述的计算机系统,其中把所述自测模块耦合到至少一个所述存储器访问设备中,把所述存储器设备的损坏的存储器的位置传送到至少一个所述存储器访问设备。
33.如权利要求25所述的计算机系统,其中所述修复模块还包括存储了所述存储器设备损坏的存储器的位置的错误映射,所述修复模块使用所述错误映射来确定所述存储器请求是否是对所述存储器设备损坏的存储单元的请求。
34.如权利要求33所述的计算机系统,其中所述修复模块还包括重映射表,该重映射表使用所述错误映射来把所述存储器设备的损坏的存储单元指定至位于所述存储器模块上的存储器的未损坏存储单元,所述修复模块使用所述重映射表把对所述存储器设备损坏的存储单元的存储器请求重定向至所述存储器设备的未损坏存储单元。
35.如权利要求25所述的计算机系统,其中所述存储器设备包括动态随机存取存储器设备。
36.如权利要求25所述的计算机系统,其中所述存储器集线器控制器的输入和输出端口包括耦合至所述通信链路的组合的输入/输出端口,并且其中每个所述存储器集线器的输入和输出端口包括耦合至所述通信链路的组合的输入输出端口。
37.如权利要求36所述的计算机系统,其中所述通信链路包括光学通信链路,其中所述存储器集线器控制器的输入和输出端口包括耦合至所述光学通信链路的光学输入/输出端口,并且其中每个所述存储器集线器的输入和输出端口包括耦合至所述光学通信链路的各自的光学输入/输出端口。
38.一种计算机系统,包括中央处理单元(“CPU”);系统控制器,耦合至所述CPU,该系统控制器具有输入端口和输出端口;通过所述系统控制器耦合至所述CPU的输入设备;通过所述系统控制器耦合至所述CPU的输出设备;通过所述系统控制器耦合至所述CPU的存储设备;多个存储器模块,每个存储器模块包括多个存储器设备;和一个存储器集线器,包括存储器控制器,耦合到至少一个所述存储器设备,该存储器控制器响应于对所述存储器设备的存储器请求;自测模块,耦合至所述存储器控制器,该自测模块响应于请求来测试至少一个所述存储器设备,该自测模块还用于识别所述存储器设备的损坏的存储单元;以及修复模块,耦合至所述存储器控制器,所述修复模块响应于对所述存储器设备损坏的存储单元的存储器请求,把该存储器请求重定向至所述存储器设备的未损坏存储单元;通信链路,用于把所述系统控制器的输出端口耦合至每个所述存储器模块中的存储器集线器的输入端口,并且用于把所述系统控制器的输入端口耦合至每个所述存储器模块中的存储器集线器的输出端口。
39.如权利要求38所述的计算机系统,其中所述存储器控制器还包括定序器,用于访问所述存储器设备,该定序器用于输出地址,该地址包含在来自于所述自测模块的存储器请求中,用于访问所述存储器设备的存储单元。
40.如权利要求38所述的计算机系统,其中所述存储器模块还包括链路接口,耦合至所述存储器控制器,用于接收对至少一个所述存储器设备的存储器请求;以及存储器设备接口,耦合至所述存储器控制器和所述存储器设备,该存储器设备接口用于把存储器请求耦合至所述存储器设备。
41.如权利要求40所述的计算机系统,其中所述存储器控制器通过使用所述修复模块把对所述存储器设备的损坏的单元的存储器请求重定向至所述存储器的未损坏单元,来生成并且把来自于所述链路接口的存储器请求耦合至所述存储器设备接口。
42.如权利要求40所述的计算机系统,其中所述存储器设备接口还包括先进先出缓冲器,用于接收并且存储从所述存储器控制器接收的存储器请求,并且把所存储的存储器请求依照接收的顺序传送到至少一个所述存储器设备中。
43.如权利要求40所述的计算机系统,其中所述链路接口包括先进先出缓冲器,用于接收并且存储存储器请求,并且把所存储的存储器请求依照接收的顺序传送到所述存储器控制器中。
44.如权利要求38所述的计算机系统,其中把识别所述存储器设备损坏的存储单元的信息从所述自测模块传送到所述修复模块。
45.如权利要求38所述的计算机系统,其中把所述自测模块耦合到至少一个所述存储器访问设备中,把所述存储器设备的损坏的存储器的位置传送到至少一个所述存储器访问设备。
46.如权利要求38所述的计算机系统,其中所述修复模块还包括存储了所述存储器设备损坏的存储器的位置的错误映射,所述修复模块使用所述错误映射来确定所述存储器请求是否是对所述存储器设备损坏的存储单元的请求。
47.如权利要求46所述的计算机系统,其中所述修复模块还包括重映射表,所述重映射表使用所述错误映射来把所述存储器设备的损坏的存储单元指定至位于所述存储器模块上的存储器的未损坏存储单元,所述修复模块使用所述重映射表把对所述存储器设备损坏的存储单元的存储器请求重定向至所述存储器设备的未损坏存储单元。
48.如权利要求47所述的计算机系统,其中所述存储器控制器还包括所述修复模块的错误映射,该错误映射用于确定所述存储器请求是否是对所述存储器设备损坏的存储单元的请求。
49.如权利要求48所述的计算机系统,其中所述存储器控制器还包括所述修复模块的重映射表,该重映射表用于把对所述存储器设备损坏单元的存储器请求重定向至所述存储器设备的未损坏的单元。
50.如权利要求38所述的计算机系统,其中所述存储器设备包括动态随机存取存储器设备。
51.如权利要求38所述的计算机系统,其中所述存储器集线器控制器的输入和输出端口包括耦合至所述通信链路的组合的输入/输出端口,并且其中每个所述存储器集线器的输入和输出端口包括耦合至所述通信链路的组合的输入/输出端口。
52.如权利要求51所述的计算机系统,其中所述通信链路包括光学通信链路,其中所述存储器集线器控制器的输入和输出端口包括耦合至光学通信链路的光学输入/输出端口,并且其中每个所述存储器集线器的输入和输出端口包括耦合至所述光学通信链路的各自的光学输入/输出端口。
53.一种测试和修复多个存储器模块中的每一个存储器模块上的多个存储器设备中的每一个的方法,每个所述存储器模块均包括存储器集线器,该方法包括使用至少一个所述存储器模块中的所述存储器集线器来生成自测例程;使用所生成的自测例程来测试所述存储器模块中的至少一个存储器设备,以便识别至少一个所述存储器设备的损坏的存储单元;在所述存储器集线器处接收对至少一个所述存储器设备进行访问的存储器请求;在所述存储器集线器处确定所接收的存储器请求是否被定向到被识别为损坏的存储单元的存储单元;如果所接收的存储器请求被定向到被识别为损坏的存储单元的存储单元,那么把所述存储器请求重定向至所述存储器模块上未损坏的存储单元;并且如果所接收的存储器请求被定向到没有被识别为损坏的存储单元的存储单元,那么访问被所述存储器请求所定向到的在所述至少一个存储器设备中的单元。
54.如权利要求53所述的方法,还包括在错误映射中存储用于识别所述存储器设备损坏的存储单元的信息。
55.如权利要求54所述的方法,还包括根据所述错误映射创建重映射表,所述错误映射把所述存储器设备的损坏的存储单元指定到所述存储器设备的未损坏存储单元,所述重映射表用于把被定向到所述存储器设备损坏的存储单元的存储器请求重定向至所述存储器设备的未损坏存储单元。
全文摘要
用于测试和修复位于存储器模块上存储器设备的损坏的存储器部分的计算机系统和方法。该计算机系统包括耦合至多个存储器模块的存储器集线器控制器,每个存储器模块均包括存储器集线器和多个存储器设备。该存储器集线器包括自测模块,用于确定存储器设备的损坏的存储单元的位置。所述存储器集线器中还包括修复模块,该修复模块使用损坏的存储器部分的位置来创建重映射表。该重映射表把对存储器设备的损坏单元的访问重定向至未损坏存储单元。每当该存储器集线器接收来自于存储器访问设备的存储器请求时,该存储器集线器就检查被定向访问的存储单元,并且必要时,把存储器访问重定向至未损坏单元。
文档编号G06F12/16GK1703755SQ03824359
公开日2005年11月30日 申请日期2003年8月5日 优先权日2002年8月16日
发明者约瑟夫·M·杰迪洛 申请人:米克伦技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1