交叉镜像存储系统的制作方法

文档序号:6421320阅读:186来源:国知局
专利名称:交叉镜像存储系统的制作方法
技术领域
本发明涉及具有主存储器和冗余存储器的存储系统。
背景技术
计算机系统通常包括存储器装置。动态随机存取存储器(DRAM)是通常使用的存储器装置,用于存储相对较大数量的数据。存储控制器发出写请求和读请求到DRAM。响应于写请求将被存储的数据可能来自处理器或另一个芯片。响应读请求由DRAM提供的数据可被处理器或另一个芯片使用。存储控制器可以在与处理器物理隔离的芯片中或者与处理器在同一个芯片上。
计算机系统,包括服务器系统,跟随一种技术趋势,即存储子系统的绝对大小和装置密度均在增加。伴随着更大的存储子系统,用于执行存储子系统的DRAM装置中的软件和硬件错误的发生也在增加。随着存储子系统的增加,由存储控制器操作的任何给定数据量中,多位错误的统计概率也增加。在许多情况下,存储控制器对应于平台处理器复杂结构的高速缓存线大小的部分,以固定数据大小操作。例如,设计用于具有64字节行的CPU的存储控制器,可以独立存储8个64位片断。
近来,服务器系统产品展示了几个特征,它们用于限制DRAM存储子系统中的软件和硬件错误的系统冲击。现在,存储控制器执行“纠错码(ECC)”算法是很常用的,其中附加数据位和每个高速缓存线片断一起存储,从而对准的半字节中的任何单个位错误或者位错误的组合可在硬件中被校正。该机制允许系统在偶尔出现单个位软件错误以及出现影响整个x4 DRAM装置的硬件错误时,继续可靠的操作。这个算法的扩展可以保护x8 DRAM装置不出故障。但是当对存储器的单个存取发生多个软件错误时,ECC机制可能中止,因为有限的纠错码(通常每64数据位有8个校验位,或者每128数据位有16个校验位)可能不能覆盖分散在受影响的数据中的所有的二位或更多位错误的排列。
镜像数据指在主存储器存储中为每个数据保持两份备份。镜像数据的每个位将给定存储子系统实现的有效容量一分为二。现在公知的已有解决方案也要求存储器子系统的可用的带宽被分成两半以提供镜像能力。
图1提供了一个使用存储镜像的系统的例子。在图1中,系统10包括存储控制器12,它耦合到主通道16和镜像通道18。存储器模块M1,M3,M5和M7耦合到主通道16,存储器模块M2,M4,M6和M8耦合到镜像通道18。主数据部分DA1,DB1,DA2和DB2提供到模块M1,M3,M5和M7的存储芯片,冗余数据部分DA1’,DB1’,DA2’和DB2’提供到模块M2,M4,M6和M8的存储芯片。注意主数据部分DA1,DB1,DA2和DB2与冗余数据部分DA1’,DB1’,DA2’和DB2’相同或实质上相同。
在另一个存储系统中,存储控制器通过主通道耦合到第一转发器集线器,同时通过镜像通道耦合到第二转发器集线器。两个子通道耦合到每个转发器集线器。存储器模块耦合到子通道。主数据存储在耦合到第一转发器集线器的子通道的存储器模块,冗余数据存储在耦合到第二转发器集线器的子通道的存储器模块。
具有两个以上通道的存储系统已被提出。

发明内容
根据本发明提供一种系统,包括耦合到第一通道的第一存储器组件;耦合到第二通道的第二存储器组件;和存储控制器,将第一和第二主数据部分分别写入到第一和第二存储器组件,将第一和第二冗余数据部分分别写入到第二和第一存储器组件,其特征在于第一和第二冗余数据部分分别关于第一和第二主数据部分冗余。
根据本发明还提供一种系统,包括耦合到第一通道的第一和第三存储器组件;耦合到第二通道的第二和第四存储器组件;以及存储控制器,将第一和第二主数据部分分别写入到第一和第二存储器组件,将第一和第二冗余数据部分分别写入到第四和第三存储器组件,其中第一和第二冗余数据部分分别关于第一和第二主数据部分冗余。
根据本发明再提供一种系统,包括耦合到第一通道的第一组存储器组件;耦合到第二通道的第二组存储器组件;存储控制器,用于将第一组主数据部分写入到第一组存储器组件中的至少一个,将第二组主数据部分写入到第二组存储器组件中的至少一个;并将第一组冗余数据部分写入到第二组存储器组件中的至少一个,将第二组主数据部分写入到第一组存储器组件中的至少一个;并且其中第一组冗余数据部分关于第一组主数据部分冗余,第二组冗余数据部分关于第二组主数据部分冗余。
根据本发明提供一种系统,包括耦合到第一通道的至少一个存储器组件;耦合到第二通道的至少一个存储器组件;以及存储控制器,通常以交叉镜像存储状态操作该系统,其中主和冗余数据部分被发送到第一和第二存储通道接口,但同时以非交叉镜像状态操作该系统。


根据下面的详细描述和本发明的实施例的相关的附图,本发明将更容易理解,但不应将本发明限于给定实施例的描述,它们只是为了解释和理解。
图1是表示已有技术中存储镜像系统的方框图;图2-4是表示根据本发明的一些实施例的交叉镜像存储系统的方框图;图5-8是表示根据本发明的一些实施例,说明了存储器组件的等级的交叉镜像存储系统的方框图;图9是表示根据本发明的一些实施例,说明了芯片组选择线的交叉镜像存储系统的方框图;图10-13是表示根据本发明的一些实施例的存储器模块的方框图;图14-18是表示根据本发明的一些实施例的交叉镜像存储系统的方框图;图19是表示根据本发明的一些实施例的包括了存储控制器的系统的方框图;图20是表示根据本发明的一些实施例的包括在存储控制器中的一些细节的方框图;图21是表示根据本发明的一些实施例的存储器芯片的方框图;图22是表示根据本发明的一些实施例的存储器模块的方框图;图23是本发明的一些实施例的操作的流程图。
具体实施例方式
本发明包含交叉镜像存储系统。交叉镜像存储系统是一种通常以交叉镜像存储状态操作的镜像存储系统,但是响应于存储器组件(memoryassembly)中触发故障的检测,也可暂时以非交叉状态操作。触发故障的讨论将在下面提供。当故障被纠正时,系统返回到交叉镜像存储状态。系统中的每个通道耦合到一个或多个存储器组件。在交叉镜像存储状态中,每个通道的存储器存储主数据部分和冗余数据部分,相应的主数据部分和冗余数据部分被存储在不同通道的存储器中。
系统的存储控制器控制交叉镜像存储状态和任何非交叉状态的操作。当存储控制器控制系统处于交叉镜像存储状态时,存储控制器为交叉镜像存储模式。当存储控制器控制该系统处于非交叉状态时,存储控制器为非交叉模式。
下面提供以交叉镜像存储状态操作的系统的几个实例。也会讨论非交叉状态的实例。但是,本发明不限于交叉状态和非交叉状态的系统的这些实例的细节。
可以使用各种类型的存储器组件。存储器组件的实例包括存储器模块和硬盘驱动系统的盘或盘部分,但本发明不限于此。每个存储器模块包括一个或多个存储器装置。存储器模块可以为64位数据和8位ECC的72位双列直插式存储器(DIMM),但这只作为实例,并不要求。ECC不是要求的。存储器装置不限于特殊技术。例如,存储器装置可以是根据现有广泛使用的技术制造的DRAM芯片。作为另一个实例,存储器装置可以为聚合物存储器。本发明不限于一个特定的信令技术。
术语“数据部分”指在特定时间存储在特定存储器组件或存储器组件的一部分中的数据。它意味着一个广泛的、非限制性术语。数据部分可以包括在存储器组件中物理间断的数据和在逻辑存储器中间断的数据。通常,数据部分的内容和范围随时改变。
A.每个存储器组件具有一个数据部分的实例图2描述了系统50,它是一个交叉镜像存储系统。系统50包括存储控制器52,它耦合到第一通道56和第二通道58。存储子系统包括耦合到第一通道56的存储器组件M1,M3,M5和M7,和耦合到第二通道58的存储器组件M2,M4,M6和M8。存储器模块可被插入到与通道连接的插槽中。当存储器模块发生故障时,发生故障的存储器模块可从其插槽中移除,并且正常操作的存储器模块可被插入到插槽中。
尽管系统50和这里描述的一些其他系统中用每个通道中有4个存储器组件进行说明,但这不是必需的。每个通道可以有多于或少于四个存储器组件。在一些实施例中,尽管接收存储器模块的一些插槽是空的,系统也将工作。
将被存储在存储组件中的数据被分成主数据部分DA1,DA2,DB1和DB2和相应的冗余数据部分DA1’,DA2’,DB1’和DB2’,它们与主数据部分DA1,DA2,DB1和DB2相同或基本相同。最好是在本发明的大多数或所有实际实施执行中,冗余数据部分与相应的主数据部分相同(比如DA1’与DA1相同)。但是,主数据部分和相应的冗余数据部分可能以已知方式存在差异。例如,冗余数据部分的位可能是主数据部分的相应位的反转。
主数据部分是存储控制器通常读取的数据部分,相应的冗余数据部分是备份。在一些实施例中,如果在系统中没有检测到故障,存储控制器总是读取主数据部分,而不读取相应的冗余数据部分。但是,在另一些实施例中,比如后面的讨论,存储控制器可以选择读取冗余数据部分,而不是主数据部分,尽管系统中不存在故障。
在图2描述的实例中,数据部分DA1,DB1’,DA2和DB2’分别存储在存储器组件M1,M3,M5和M7中。数据部分DB1,DA1’,DB2和DA2’分别存储在存储器组件M2,M4,M6和M8中。因此,直到出现故障,系统50才以交叉镜像存储状态操作。在一些实施例中,一对数据部分(例如DA1和DB1)形成一个数据组,因此每个数据部分为数据组的一半。当然,除非数据部分非常小(比如系统第一次启动时),一次只有数据部分的小部分将被读或写。例如,在通常的操作过程中,只有DA1的小部分和DB1的小部分同时被读或写。优选地,将被一起读取的数据部分被存储在距离存储控制器同样距离的存储器组件中,从而允许更紧的定时容差,但这不是必需的。
作为一个例子,在一些实施例中,DA1的小部分是半高速缓存线,DB1的小部分是半高速缓存线,它们合起来形成一整个高速缓存线。(作为例子,DA1的小部分是奇半高速缓存线,DB1的小部分是偶半高速缓存线)。这样做的优点是读取时,数据组的一半可以从第一通道读取,同时数据组的另一半从第二通道读取。这导致两倍的读取带宽和一半的读取等待时间。
相反,在已有技术系统10中,所有的主数据部分在同一通道。因此,假定系统10和50中的控制器、通道和存储芯片具有相同性能,数据部分DA1和DB1通过系统10读取的时间将是通过系统50读取的时间的至少两倍。
本发明不限于关于存储器组件的顺序存储主数据部分和冗余数据部分的任意特定顺序。例如,在另一个实施例中,数据部分DA1,DA2,DB1’和DB2’可以分别存储在存储器组件M1,M3,M5和M7中,数据部分DB1,DB2,DA1’和DA2’可以分别存储在存储器组件M2,M4,M6和M8中。作为另一个实例,数据部分DB1’,DB2’,DA1和DA2可以分别存储在存储器组件M1,M3,M5和M7中,数据部分DA1’,DA2’,DB1和DB2可以分别存储在存储器组件M2,M4,M6和M8中。
在图2中,存储器组件M1,M2,M3和M4可被称为第一存储器组件,第二存储器组件,第三存储器组件和第四存储器组件。但是,这是任意的。任何一个存储器组件可被称为第一存储器组件,任意另外一个存储器组件可被称为第二存储器组件,第三存储器组件和第四存储器组件。进一步的,对标签DA1,DA2,DB1和DB2等没有必需或特定的含义,除非一些情况下,如上文中讨论的有从DA1和DB1一起读取以及从DA1和DB2一起读取的值的情况。
主存储器组件是那些只存储主数据部分的存储器组件;冗余存储器组件是那些只存储冗余数据部分的存储器组件;混合存储器组件是那些存储主数据部分和冗余数据部分的存储器组件。在图2中,M1,M2,M5和M6是主存储器组件,M3,M4,M7和M8是冗余存储器组件。相反,在现有技术系统10中,所有主存储器模块在一条通道上,所有冗余存储器模块在另一条通道上,这导致如上所述更长的等待时间。
B.每个存储器组件具有两个数据部分的例子图3描述了系统70,它是一个交叉镜像存储系统。系统70包括存储控制器72,第一和第二通道56和58,以及存储器组件M1-M8。冗余数据部分DA1’,DA2’,DA3’,DA4’,DB1’,DB2’,DB3’和DB4’分别是关于相应的主数据部分DA1,DA2,DA3,DA4,DB1,DB2,DB3和DB4的冗余。
在图3的例子中,数据部分DA1和DA2存储在存储器组件M1中,数据部分DB1’和DB2’存储在存储器组件M3中,数据部分DA3和DB4存储在存储器组件M5中,数据部分DB3’和DB4’存储在存储器组件M7中,数据部分DB1和DB2存储在存储器组件M2中,数据部分DA1’和DA2’存储在存储器组件M4中,数据部分DB3和DB4存储在存储器组件M6中,数据部分DA3’和DA4’存储在存储器组件M8中。
可以使用关于存储器组件的数据部分的许多其他顺序。例如,在另一个实施例中,数据部分DA1和DB1’存储在存储器组件M1中,数据部分DA2和DB2’存储在存储器组件M3中,数据部分DA3和DB3’存储在存储器组件M5中,数据部分DA4和DB4’存储在存储器组件M7中,数据部分DB1和DA1’存储在存储器组件M2中,数据部分DB2和DA2’存储在存储器组件M4中,数据部分DB3和DA3’存储在存储器组件M6中,数据部分DB4和DA4’存储在存储器组件M8中。在这个例子中,存储器组件是混合式的,因为它们均同时具有主数据和冗余数据。
在同一个存储器组件中同时具有主数据和冗余数据的优点是,可以以每个通道用仅一个存储器组件来实现。例如,图4描述了系统80,是一个交叉镜像存储系统,其中每个通道只有一个存储器组件。在系统80中,存储控制器82耦合到第一和第二通道56和58,它们分别与存储器模块M1和M2耦合。如图所示,主数据部分DA1和冗余数据部分DB1存储在存储器组件M1中,主数据部分DB1和冗余数据部分DA1’存储在存储器组件M2中。
在系统70和80中,每个存储器组件有两个数据部分。这两个数据部分在存储器组件的不同部分中。有不同的方法将这些数据部分划分或分配在存储器组件的不同部分中。
在一些实施例中,存储器模块的一些芯片(或单个芯片)可以保存一个数据部分,其他芯片(或单个芯片)可以保存另一个数据部分。例如,图10描述了一个存储器模块160,它包括印刷电路板(PCB)卡162。存储芯片164...166在卡162的侧面1上。图11描述了卡162的侧面2,它包括存储芯片170...172。在图10和11中,数据部分DA1存储在芯片164...166中,DB1’存储在芯片170...172中。这种情况下,保存不同数据部分的部分在芯片的不同组中。芯片164...166和芯片170...172中的芯片数目可以为一或者更多。在一些实施例中,侧面2上没有芯片。芯片170...172和芯片164...166均在侧面1上。
图12描述了存储在芯片164...166中每一个上的两个数据部分(DA1和DB1’)。在这种情况下,存储器组件保存不同数据部分的部分在每个芯片的不同部分中,通过多个芯片分配。在单个芯片中可能存储了超过两个的数据部分。或者,在图13中,DA1存储在芯片164...166中的一些芯片中,DB1’存储在芯片164...166中的其他芯片中。在这种情况下,不同部分在不同的芯片中(更像图10和图11,而不是图12)。在图13中,如图所示,数据部分只被分到两组芯片中。但是,可以分为更多组。例如,每个芯片可以包括不同数据部分。
这里使用的术语“等级”指在存储器组件中被选择作为一组的存储器装置。该选择可以通过存储器芯片上的“芯片选择”接触或者其他技术进行,比如与其他信息多路复用的芯片选择命令。在某些情况下,每个存储器组件只有一个等级,在另一些情况下,每个存储器组件的等级超过一个。模块160可以包括一个、两个或更多等级。本发明描述的系统的存储器组件可以具有每个模块一个、两个或更多等级,这取决于它们如何实现,除了它们被明确限制到特定数目的等级的情况(例如,图16限制为每个存储器模块一个等级)。
在一些实施例中,等级对应于保存不同数据部分的存储器模块的部分。比如,图10和图11中,如果芯片164...166为一个等级,芯片170...172为另一个等级,则保存不同数据部分的存储器组件的部分将对应于不同的等级。在另一些实施例中,等级不对应于部分(例如,图12中)。
图5和图6描述了每个存储器组件具有一个等级的存储系统。图5描述了存储系统90,它包括存储控制器92,第一和第二通道96和98。图6描述了存储系统100,它包括存储控制器102,第一和第二通道96和98。在图5和6中,存储器组件M1-1,M1-3,M1-5和M1-7耦合到通道96,存储器组件M1-2,M1-4,M1-6和M1-8耦合到通道98。存储器组件M1-1……M1-8具有每个存储器模块一个等级。(如上所述,可以多于或少于每个通道四个存储器组件)图5和图6的不同之处在于,图5中的存储控制器92在锁定步骤操作通道96和98,而图6中的存储控制器102独立(不在锁定步骤)地操作通道96和98。当系统在锁定步骤操作时,一个通道发生的情况也同时对另一个通道发生。在图5和6中,存储器组件M1-1,M1-3,M1-5和M1-7的等级分别为等级R1,R2,R3和R4。同样地,在图5中,存储器组件M1-2,M1-4,M1-6和M1-8的等级也分别为等级R1,R2,R3和R4,因为它们在锁定步骤以存储器组件M1-1,M1-3,M1-5和M1-7的等级R1-R4来访问。但是,在图6中,存储器组件M1-2,M1-4,M1-6和M1-8的等级分别为等级R5,R6,R7和R8,因为它们独立于等级R1-R4被访问。
图7和8描述了系统110和系统120,它们每个包括具有两个等级的存储器组件。存储控制器112和122分别耦合到第一和第二通道116和118。图7的存储控制器112在锁定步骤操作通道116和118,图8的存储控制器122独立的操作通道116和118。存储器组件M2-1,M2-3,M2-5和M2-7耦合到通道116,存储器组件M2-2,M2-4,M2-6和M2-8耦合到通道118。在图7和8中,存储器组件M2-1的等级被称为R1和R2,存储器组件M2-3的等级被称为R3和R4,存储器组件M2-5的等级被称为R5和R6,存储器组件M2-7的等级被称为R7和R8。同样的,在图8中,存储器组件M2-2,M2-4,M2-6和M2-8的等级也分别被称为R1和R2,R3和R4,R5和R6以及R7和R8。但是,在图8中,存储器组件M2-2,M2-4,M2-6和M2-8的等级分别被称为等级R9和R10,R11和R12,R13和R14以及R15和R16,因为它们独立于通道116的等级被访问。
在芯片选择命令被多路复用的情况下,可在通道上执行芯片选择命令。在存储器芯片上有单独的“芯片选择”接触的情况时,芯片选择信息可通过导线被传送,导线被认为是通道的一部分或者与通道分离。例如,在图9中,系统130包括存储控制器132,它耦合到第一和第二通道136和138,它们在这里可表示不同的通道。存储器组件M1,M3,M5和M7耦合到通道136,存储器组件M2,M4,M6和M8耦合到通道138。芯片选择导线142中的不同导线分别耦合到存储器组件M1,M3,M5和M7,并将芯片选择信号传递给这些存储器组件。芯片选择导线144中的不同导线分别耦合到存储器组件M2,M4,M6和M8,并将芯片选择信号传递给这些存储器组件。分离的导线142和144被认为是通道136和138的一部分,但为了描述方便单独示出。
再次参考图3,表1描述了一个例子,其中在每个存储器组件有两个等级(如图7),且每个等级只存储一个数据部分的情况下,特定数据部分可被存储在系统70的每个存储器组件的每个等级中。

表1对于存储器组件的顺序,存储数据部分可以存储为不同的顺序。例如,表2描述了一个例子,系统70中数据部分的顺序(系统80的M1和M2)不同于表1所示的顺序。
如上所述,在一些实施例中,尽管系统中没有出现故障,存储控制器也可以选择读取冗余数据部分,而不是主数据部分。这样做的原因之一是可以更快地从冗余数据部分中读取。例如,希望的主数据部分可能位于繁忙或者已被访问的等级中。在这些实施例中,在不同的等级中有主数据部分和相应的冗余数据部分是有好处的,尽管这样做也有不利的地方。

表2图14描述了系统180,是一个交叉镜像存储系统。系统180包括存储控制器182,它通过第一通道184耦合到转发器集线器188,通过第二通道186耦合到转发器集线器190。子通道192和194耦合到转发器集线器188,子通道196和198耦合到转发器集线器190。存储器组件M1,M3,M5和M7在子通道192上;存储器组件M2,M4,M6和M8在子通道194上;存储器组件M11,M13,M15和M17在子通道196上;存储器组件M12,M14,M16和M18在子通道198上。每个子通道上可以有多于或少于四个存储器组件。主数据部分和冗余数据部分可如本发明中的其他例子描述的那样被存储。因为通道直接连接到存储控制器,因此图3和4中的通道56和58是指直接连接的通道,而因为有中间转发器集线器,图14中的子通道192,194,196和198不是直接连接的子通道。
这里已经给出了具有两个通道的系统的例子。但是,本发明也可以具有四个通道的系统实现。例如,图15示出了系统200,它是一个交叉镜像存储系统,包括存储控制器202,第一,第二,第三和第四通道206,208,212和214。在这个例子中,存储器组件M1,M5,M9和M13耦合到通道206,存储器组件M2,M6,M10和M14耦合到通道208,存储器组件M3,M7,M11和M15耦合到通道212,存储器组件M4,M8,M12和M16耦合到通道214。如上所述,也可使用每个通道少于或多于四个存储器组件。
C.每个等级有两个数据部分的例子在一些实施例中,每个等级有两个或更多的数据部分。这样的系统可以包括每个存储器模块有一个或更多等级。例如,图16描述了系统230,它是一个交叉镜像存储系统。系统230包括存储控制器232,它耦合到通道96和98。存储器组件M1-1和M1-2,分别具有每个存储器组件一个等级,并分别耦合到通道96和98。作为例子,数据部分DA1和DB1’存储到M1-1,数据部分DB1和DA1’存储到M1-2。等级中的顺序不一定重要。图16描述了在锁定步骤中的通道,但是通道控制可以是独立的。
如图16所示每个等级使用两个数据部分的优点是,可以是一个具有存储器组件为每个模块只有一个等级的交叉镜像存储系统,其中系统具有每个通道只有一个存储器组件。另一个优点是,发明可以被实现以使得主数据部分的多个部分和冗余数据部分的部分(例如,DA1和DB1’的部分)可被写到同一页的不同列中(比如相邻列)。
下文中将提供系统的例子,该系统中每个等级具有两个数据部分,并且每个组件具有多于一个等级。
D.每个存储器组件多于两个数据部分的例子在一些实施例中,存储器组件中存储了多于两个数据部分。例如,图17描述的系统240,它是一个交叉镜像存储系统。系统240包括存储控制器242,它耦合到通道116和118。存储器组件M2-1和M2-2耦合到通道116和118。作为例子,数据部分DA1,DA2,DB1’和DB2’存储到存储器组件M2-1,数据部分DA2,DB2,DA2’和DB2’存储到存储器组件M2-2,它们耦合到通道118。每个通道可以多于或少于两个存储器组件。
图17描述了每个存储器组件具有两个等级的存储器组件,但是每个存储器组件可以只有一个或多于两个等级。数据部分、等级和存储器组件可以有不同的顺序。表3和4描述了哪些数据部分存储在每个存储器组件的每个等级中的例子。等级中数据部分的顺序不一定重要。

表3

表4图18描述了系统250,它是一个交叉镜像存储系统,包括存储控制器252,它耦合到通道116和118。系统250类似于系统240,除了如图所示系统250包括存储器组件M2-3和M2-4来存储额外的数据部分。可以添加额外的存储器组件。
E.系统细节的例子图19描述了系统的细节,该系统中存储控制器322可以作为一部分,尽管这些细节不是必需的。存储控制器322表示本发明描述的不同的存储控制器,它被作为电路320的一部分。电路320的示例包括存储控制器集线器(MCH),处理器或光盘驱动控制器。在一些实施例中,处理器、存储控制器和存储器可以被堆叠。
ECC电路324为存储控制器322提供ECC控制,并可以作为存储控制器322的一部分或者与其分离。ECC控制是可选的。操作系统(OS)和/或其它软件326为存储控制器322提供软件控制。通常,软件控制通过各种中间电路间接提供给存储控制器322。故障显示电路328提供存储子系统中的某种故障的显示。故障显示电路328的示例包括发送消息到显示器的电路,以显示存储器组件和/或通道的故障。控制发光二极管(LED)的电路是另一个例子。电源控制电路330为存储器模块提供电源。在一些实施例中,当检测到存储子系统的某些故障时,提供给一个通道的所有或一些存储器组件的电源被关闭。在另一些实施例中,如同描述的那样,当检测到某些故障时,用户人工地移除电源。故障显示电路328和电源控制电路330不是必需的。可以替代地使用另一些技术。存储控制器322、故障显示电路328和电源控制电路330相互之间可通过各种中间电路间接通信。
图20描述了存储控制器322的一些实施例的细节。对所有实施例来说,这些细节不是必需的。在图20的例子中,存储控制器322包括存储器访问控制逻辑336,它用于控制存储控制器和存储器组件之间的读写。将存储控制器作为一个整体,存储器访问控制逻辑336通常以交叉镜像存储模式操作,但如同本发明讨论的那样,有时以非交叉模式操作。第一和第二通道接口338和340接口在控制逻辑336和第一和第二通道之间(其中通道136和138为示例)。存储器访问控制逻辑336为将要写入的数据部分在存储器组件中选择目的地。存储器访问控制逻辑336包括等级选择电路342,该电路用于选择将要访问的等级。图20中的寄存器344和图21、22中的寄存器346、348将在下文中讨论。
故障检测电路350检测存储器组件中的触发故障。故障检测电路350也包括用于检测故障何时已被纠正的电路。触发故障是引起存储控制器从交叉镜像存储模式变为非交叉模式的一种故障。触发故障的一个例子是,当数据丢失时,若不从冗余存储器中获得该数据,则该数据就不能被恢复。可纠正的故障是,不需要从冗余存储器复制数据就可纠正的故障。例如,可纠正的错误可通过ECC编码而无需离开交叉镜像存储状态而被纠正。如下文描述的那样,在一些实施例中,同一个存储器组件中的几个可纠正的错误可被认为是一个触发错误。通常,可纠正的故障不会被检测为触发故障,但在一些实施例中,一些可纠正的故障可被作为触发故障对待。进而,在一些实施例中,存在一些故障,若没有替换存储器组件并且从非故障的存储器组件复制数据,这些故障是不可纠正的,但上述故障不被作为触发故障对待。理想地,不存在上述情况。触发故障的原因可包括存储器组件中的最初的或发展的缺陷、极端噪声和一些软件错误。
图23是这里示出或描述的交叉镜像存储系统的一些实施例的操作的流程图。但是,这里描述的系统的操作不限于这些细节。在另一些实施例中,图23描述的一些特征将被使用,而另一些特征不被使用。参考图23,主存储器组件和冗余存储器组件最初正常地进行操作(框352)。在一些实施例中,硬件跟踪每个存储器组件中ECC错误的发生。单错误可纠正(SEC)错误和双错误检测(DED)错误被独立跟踪。DED错误可以指明任何一个可检测的类别,但不能指明可纠正位错误组合。在一些实施例中,如果遇到一个DED错误或者遇到预定数目的可纠正错误,则系统中产生错误通知,但这不是必需的。SEC错误的时基计数可相对于一个门限值进行检验,这是可编程的。自动(AUTO)(错误)指检测错误的硬件。故障可能在包含主数据、冗余数据或主数据和冗余数据的存储器模块中。包含故障的存储器模块的通道称为牺牲通道。其他不包含故障的存储器模块的通道称为非牺牲通道。
当检测到触发故障时(框354),例如由于遇到不可纠正的ECC错误,重新发出对相应的一个或多个存储器组件进行读取。当发出对非故障存储器组件的读取时,存储控制器322中的硬件重新以适当的顺序安排数据。硬件将识别可响应于触发故障的“牺牲”存储器组件,并动态重新配置从而使牺牲数据部分保留或变成冗余数据部分。必要的话,指定的主和冗余存储器组件对被交换,因此优选的读目的地不包括牺牲。
接收到触发故障通知后,软件可以设置各种呼叫服务。作为响应,某人将通知机器热交换事件即将发生。软件例程将请求对单通道操作的故障(框356),隔离包含牺牲存储器组件的通道。配置写入(CFG-write)是在硬件上的软件动作。本发明不限于使用这种类型的软件控制。也可使用硬件或其他类型的软件控制。
硬件将从交叉镜像存储状态操作顺序转换到单通道非交叉操作,以确保没有事务丢失,以及确保存储器配置中的改变保持对兼容的软件不可见。存储控制器322随后将电隔离牺牲通道;禁止所有的计时和三态通道接口信号。软件和基线板管理控制器通信,为从牺牲通道中移除电源。软件通知技术人员牺牲通道已被隔离,并通知牺牲存储器组件的位置。牺牲存储器组件的位置通过,例如,存储控制器322的配置寄存器空间或相关电路(例如MCH)显示给软件。通信方式包括将图形表示发送到显示器,或者基线板控制器访问来点亮LED。
自动(业务)指硬件自动等待通道上的业务,通过结束或取消来完成意图用于存储器组件的现有的操作。取消的操作可以被重新发送到非牺牲通道。
一旦通道被隔离(框358),技术人员将交换出故障的存储器组件,如果需要的话,该通道上的任意其他存储器组件一起被交换。
软件通过配置访问通知存储控制器322,将牺牲通道恢复为在线,并与基线板控制器通信以便为牺牲通道重建电源。事件的这个顺序允许存储控制器通过从三态(高阻抗)移除所需的接口信号、并驱动必需的上电状态到接口来准备为通道上电。在一些实施例中,存储控制器322负责驱动由存储子系统使用的时钟信号,且其再次激活该计时。
软件等待适当的时间间隔以使电源稳定,并使存储子系统的任何辅助锁相环(PLL)和/或延迟锁定环(DLL)电路锁定,通常几毫秒(框362)。这时,软件可以使用“串行存在检测”机制,以确保牺牲插槽用正确技术填充。如果换入装置没有精确匹配通道中正在使用的技术,序列中的剩余部分可能将产生欺骗性结果。软件可能通知技术人员装置不合适,以及其正好发生的错误。
随后软件转移存储控制器322为其重新配置状态,并使用内部配置寄存器访问以恢复牺牲通道上的存储器组件中的操作寄存器设置(框364)。这一阶段包括在使用替换装置前必需的任意阻抗和定时校准。图20、21和22分别包括寄存器344、346和348。图21示出了寄存器346在芯片164中。图22示出了在存储器模块160上的寄存器348。寄存器346和348可以保存配置信息。图21和22可二者择一或互补。当出现故障时,寄存器346和/或348中的信息可能丢失。该信息可从相应的非故障存储器中更正。但是,在一些情况下,寄存器346和/或348可能是只读的。在这种情况下,图20中的寄存器344可以包括可被写入到新插入的存储器组件的寄存器346和/或348的信息。
一旦牺牲通道被备份和校准,软件转移存储控制器322为存储器复制状态,这时它将自动复制所有存储器到包括牺牲存储器组件的通道上(框368)。硬件将检测哪一条通道是牺牲通道,从而通过复制操作恢复正确的数据交叉。
硬件自动检测复制何时完成(自动(完成)),一旦再次跨越两个通道交叉,动态地使其本身按顺序回到具有读和写操作的交叉镜像存储状态操作(框370,自动(业务),和框352)。如上所述,本发明不限于图23的细节。
存在不同类型的非交叉状态。例如,在完全非交叉状态中,牺牲通道完全关闭,使得系统不再被镜像。实质上,非牺牲通道包含所有的数据部分,为了实际应用,它们都被作为主数据部分处理。当牺牲通道恢复电源时,数据被复制到其存储器组件中,存储器部分的主和冗余状态被重建。在部分非交叉状态中,牺牲通道和其中任何存储器组件保持操作,除了(多个)故障存储器组件。在这种情况下,对应于故障存储器组件的非牺牲通道中的存储器组件的数据部分保持或变为主状态,直到故障被纠正。在一些情况和一些实施例中,通过仅从相应的非故障存储器组件复制数据到故障存储器来纠正故障。在这些情况下,在这种部分非交叉状态中,牺牲通道不必如图23那样被关闭。但是,可能出现存储器组件不得不被替换。可以使用非交叉状态的这些基本类型的变型。在一些实施例中,响应于一个故障,故障存储器组件的冗余存储器被重新创建,并被分配到牺牲和/或非牺牲通道的非故障存储器组件中,直到故障被纠正。这种方式下,继续为冗余存储器直到故障被纠正。
F.附加信息和实施例在如图所示的每个实施例中,每个存储控制器有不同的附图标记,暗示表示的存储控制器可以是不同的。但是,一个存储控制器可以足够灵活以便有不同的实现方式,并与本文描述的一些或所有系统一起工作。图中的不同通道可以相同或不同。哪个通道称为第一通道和哪个称为第二通道是任意的。特定系统中的各种不同存储器组件在细节上可以相同或不同。
实施例是本发明的实现或例子。说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的引用意味着实施例中的一特定特征、结构或特性包括在至少一些本发明的实施例中,但不是所有的实施例都是必需的。出现的各种“实施例”、“一个实施例”或“一些实施例”不必都是指参考相同的实施例。
如果说明书陈述一个成分、特征、结构或特性“可以”、“可能”或“能够”被包括,则特定成分、特征、结构或特性不是必需被包括。如果说明书或权利要求书提到“一个”元件,并不意味着只有一个元件。如果说明书或权利要求书提到一个“附加”元件,不排除超过一个附加元件。
本发明不限于本文的特定细节。实际上,本领域普通技术人员根据本发明公开的内容将会理解,从上文的描述和附图中的多种其他变化可以在本发明的范围内得到实现。因此,包括任何改进的随后的权利要求确定本发明的范围。
权利要求
1.一种系统,包括耦合到第一通道的第一存储器组件;耦合到第二通道的第二存储器组件;和存储控制器,将第一和第二主数据部分分别写入到第一和第二存储器组件,将第一和第二冗余数据部分分别写入到第二和第一存储器组件,其特征在于第一和第二冗余数据部分分别关于第一和第二主数据部分冗余。
2.根据权利要求1的系统,其特征在于第一和第二存储器组件每个包括仅一个等级。
3.根据权利要求1的系统,其特征在于第一和第二存储器组件每个至少包括两个等级,其中每个等级包括主数据部分中的一个或冗余数据部分中的一个。
4.根据权利要求1的系统,其特征在于存储控制器将第三和第四主数据部分分别写入到第一和第二存储器组件,将第三和第四冗余数据部分分别写入到第二和第一存储器组件,其中第三和第四冗余数据部分分别关于第三和第四主数据部分冗余。
5.根据权利要求4的系统,其特征在于第一和第二存储器组件每个至少包括两个等级,其中每个等级包括主数据部分中的一个和冗余数据部分中的一个。
6.根据权利要求1的系统,其特征在于存储控制器包括故障检测电路,用于检测存储器组件的触发故障,并响应这种触发故障的检测,存储控制器将系统从交叉镜像存储状态切换到非交叉状态,并在纠正触发故障后,存储控制器将系统返回到交叉镜像存储状态。
7.根据权利要求6的系统,其特征在于在交叉镜像存储状态期间,存储控制器只从主数据部分读取。
8.根据权利要求6的系统,其特征在于在交叉镜像存储状态期间,存储控制器从主数据部分和冗余数据部分读取。
9.根据权利要求1的系统,其特征在于存储控制器包括故障检测电路,用于检测存储器组件的触发故障,并响应这种触发故障的检测,存储控制器从非故障存储器组件中复制一个或多个数据部分到替换该故障存储器组件的存储器组件中。
10.根据权利要求9的系统,其特征在于寄存器信息是从存储控制器中复制到该替换故障存储器组件的存储器组件。
11.根据权利要求1的系统,进一步包括在第一通道上的第三存储器组件和在第二通道上的第四存储器组件,其中存储控制器将第三和第四主数据部分分别写入到第三和第四存储器组件,将第三和第四冗余数据部分分别写入到第四和第三存储器组件,其中第三和第四冗余数据部分分别关于第三和第四主数据部分冗余。
12.根据权利要求1的系统,其特征在于第一和第二存储器组件是每个包括存储器芯片的存储器模块,其中第一存储器组件的第一和第二部分包含在第一存储器组件的不同芯片中,第二存储器组件的第一和第二部分包含在第二存储器组件的不同芯片中。
13.根据权利要求1的系统,进一步包括第三和第四通道。
14.根据权利要求1的系统,进一步包括在第一和第二通道上的第一和第二转发器集线器,其中第一和第二存储器组件在第一和第二通道的子通道上。
15.根据权利要求1的系统,其特征在于存储控制器同时只写第一和第二主数据部分的一部分,且同时只写第一和第二冗余数据部分的一部分。
16.一种系统,包括耦合到第一通道的第一和第三存储器组件;耦合到第二通道的第二和第四存储器组件;以及存储控制器,将第一和第二主数据部分分别写入到第一和第二存储器组件,将第一和第二冗余数据部分分别写入到第四和第三存储器组件,其中第一和第二冗余数据部分分别关于第一和第二主数据部分冗余。
17.根据权利要求16的系统,其特征在于存储控制器包括故障检测电路,用于检测存储器组件的触发故障,并响应于这种触发故障的检测,存储控制器将系统从交叉镜像存储状态切换到非交叉状态,并在纠正触发故障后,存储控制器将系统返回到交叉镜像存储状态。
18.根据权利要求17的系统,其特征在于当具有故障的存储器组件的通道完全关闭时,非交叉状态是完全非交叉状态。
19.根据权利要求17的系统,其特征在于当具有故障的存储器组件的通道没有完全关闭时,非交叉状态是部分非交叉状态,并且除了故障的存储器组件之外,其中任意存储器组件保持工作。
20.根据权利要求16的系统,其特征在于存储控制器包括故障检测电路,用于检测存储器组件中的触发故障,并响应于这种触发故障的检测,存储控制器从非故障存储器组件复制一个或多个数据部分到替换故障存储器组件的存储器组件。
21.根据权利要求16的系统,其特征在于存储控制器将第三和第四主数据部分分别写入到第一和第二存储器组件,将第三和第四冗余数据部分分别写入到第四和第三存储器组件,其中第三和第四冗余数据部分分别关于第三和第四主数据部分冗余。
22.根据权利要求16的系统,其特征在于存储控制器将第五和第六主数据部分、第八和第七冗余数据部分分别写入到第三和第四组件,将第七和第八主数据部分、第六和第五冗余数据部分分别写入到第三和第四存储器组件,其中第五、第六、第七和第八冗余数据部分分别关于第五、第六、第七和第八主数据部分冗余。
23.根据权利要求16的系统,其特征在于第三和第四存储器组件比第一和第二存储器组件更接近存储控制器。
24.一种系统,包括耦合到第一通道的第一组存储器组件;耦合到第二通道的第二组存储器组件;存储控制器,用于将第一组主数据部分写入到第一组存储器组件中的至少一个,将第二组主数据部分写入到第二组存储器组件中的至少一个;和将第一组冗余数据部分写入到第二组存储器组件中的至少一个,将第二组主数据部分写入到第一组存储器组件中的至少一个;和其中第一组冗余数据部分关于第一组主数据部分冗余,第二组冗余数据部分关于第二组主数据部分冗余。
25.根据权利要求24的系统,其特征在于存储控制器包括故障检测电路,用于检测存储器组件的触发故障,并响应于这种触发故障的检测,存储控制器将系统从交叉镜像存储状态切换到非交叉状态,并在纠正触发故障后,存储控制器将系统返回到交叉镜像存储状态。
26.根据权利要求24的系统,其特征在于存储控制器包括故障检测电路,用于检测存储器组件中的触发故障,并响应这种触发故障的检测,存储控制器从非故障存储器组件复制一个或多个数据部分到替换故障存储器组件的存储器组件。
27.一种系统,包括耦合到第一通道的至少一个存储器组件;耦合到第二通道的至少一个存储器组件;以及存储控制器,通常以交叉镜像存储状态操作该系统,其中主和冗余数据部分被发送到第一和第二存储通道接口,但同时以非交叉镜像状态操作该系统。
28.根据权利要求27的系统,其特征在于存储控制器以交叉镜像存储状态操作该系统,直到存储控制器检测到存储器组件之一中的触发故障,并响应触发故障的检测,存储控制器将系统从交叉镜像存储状态切换到非交叉状态,并在纠正触发故障后,存储控制器将系统返回到交叉镜像存储状态。
29.根据权利要求28的系统,其特征在于当具有故障的存储器组件的通道完全关闭时,非交叉状态是完全非交叉状态。
30.根据权利要求28的系统,其特征在于当具有故障的存储器组件的通道没有完全闭合时,非交叉状态是部分非交叉状态,除了发生故障的存储器组件之外,其中任意存储器组件保持操作。
全文摘要
在一些实施例中,一种系统包括耦合到第一通道的第一存储器组件和耦合到第二通道的第二存储器组件。该系统包括存储控制器,它将第一和第二主数据部分分别写入到第一和第二存储器组件,将第一和第二冗余数据部分分别写入到第二和第一存储器组件,其中第一和第二冗余数据部分分别是关于第一和第二主数据部分的冗余。描述和要求了其他实施例。
文档编号G06F13/16GK1516021SQ20031012315
公开日2004年7月28日 申请日期2003年11月7日 优先权日2002年11月8日
发明者E·J·达伦, W·R·莫罗, P·D·沃格特, E J 达伦, 沃格特, 莫罗 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1