由分布式计算机系统的一个硬件元件报告错误的方法

文档序号:6413965阅读:191来源:国知局
专利名称:由分布式计算机系统的一个硬件元件报告错误的方法
技术领域
本发明通常涉及分布式计算机系统,并且尤其涉及使用这些系统的硬件组件来报告硬件组件所发现的错误。
本申请包括与下面申请的主题内容相关的主题内容,下面的申请与本申请转让给同一个受让人,并且与本发明在同一天申请。下面所列的申请在这里全部包含进来作为参考。
“由分布式计算机系统的一个硬件元件报告错误的系统”,由Desnoyers等人申请,序列号为08/838,389,(摘要号为PO9-97-045)。
典型地,一个分布式计算机系统包括大量的通过一个互连网络相互连接的处理器。这些处理器其中的一个具有监控计算机系统内设备故障的任务。例如,使用一个心搏型协议来定期轮询系统内的每一个设备以确定该设备是否处于工作状态。如果一个曾处于工作状态的设备不再处于工作状态,那么该处理器探查该设备以发现是否出现了错误。轮询所有设备所需要的时间随着系统规模的增长而成比例地增加。
当检测到一个故障时,该处理器需要与发生故障的设备进行通信以确定故障的原因,并且启动适当的恢复方案。例如,如果在互连网络内发生了一个故障,那么处理器需要与该网络进行通信,来检索互连网络所捕获到的故障信息,并且启动适当的恢复。然而,因为不能确保在互连网络和该处理器之间存在直接的连接,因此对于这种通信通常使用替代的机制。
在一个互连网络中当错误发生时,用于搜寻和检索故障信息的处理器的使用和用于检索错误信息的替代机制的进一步的使用都没有预期的有效。因此,需要一种更有效的向处理器报告错误的方法来提供服务。特别是,需要一种机制,其中报告由,例如,互连网络本身来执行,以替代处理器搜寻和检索故障信息。
通过在一个分布式计算机系统中提供一种报告错误的方法,现有技术的缺点得到了克服并且提供了附加的优点。当检测到一个错误时,该分布式计算机系统中的一个硬件元件产生一个错误信息。该错误信息然后被从该硬件元件转发到该分布式计算机系统的第一个指定的处理节点。
在一个例子中,该硬件元件包括或是一个开关元件或是一个通信适配器。
在另一个例子中,该错误信息的生成包括生成一个服务包,该服务包包括错误信息和到第一个指定的处理节点的路径在另一种实施方式中,该硬件元件在收到第一个指定的处理节点已经收到错误信息的指示之前,收集附加的错误。当该硬件元件确认收到了第一个指定的处理节点已经收到错误信息的指示时,对应于这些附加错误的错误信息被转发给第一个指定的处理节点和/或第二个指定的处理节点。
在本发明的另外一种实施方式中,错误信息进一步被从该硬件元件发送到分布式计算机系统的第二个指定的处理节点。
本发明的错误报告能力使不再需要监测设备以发现故障,结果减少了对于路径或路径部分的竞争。此外,本发明的错误报告能力预防了系统中后继的错误包的堆积,并且允许系统的其它部分正常工作。本发明的错误报告能力通过使用系统内的硬件来实现,而不是软件或任何处理器逻辑。
另外的特征和优点通过本发明的技术来实现。本发明的其它实施方式和方面在这里被详细地描述,并且被认为是权利要求的发明的一部分。
被认为是本发明的主题内容被特别指出,并且在说明书结论部分的权利要求书中被明显地予以要求。本发明前面的和其它的主题、特征和优点将通过下面与附图相应的详细描述而显而易见,其中

图1描述了包括并使用本发明的报告能力的一个分布式计算机系统的一个例子。
图2描述了依据本发明的原则图1中的分布式计算机系统的一个互连网络的一种实施方式,该分布式计算机系统中包括中间开关板。
图3描述了依据本发明的原则的一个开关元件的一个例子。
图4描述了依据本发明的原则,在报告由图3的开关元件检测到的错误时所使用的硬件服务逻辑的一种实施方式。
图5描述了依据本发明的原则,在由图3的开关元件确认复原服务包的接收和附加错误的转发过程中所使用的硬件服务逻辑的一种实施方式。
图6描述了依据本发明的原则图1的分布式计算机系统中的一个通信适配器的一个例子。
图7描述了依据本发明的原则在报告由图6的网络适配器所检测到的错误中所使用的硬件服务逻辑的一种实施方式。
依据本发明的原则,提供了一种报告能力,其中分布式计算机系统的硬件元件将错误状态报告给计算机系统中一个指定的处理节点。硬件元件报告错误,而无须软件或处理器逻辑。
图1中描述了包括并且使用本发明的报告能力的分布式计算机系统的一个例子。在一种实施方式中,分布式计算机系统是由IBM公司所提供的RISC系统/6000可缩放功率并行系统,并且包括与互连网络104相连的大量的处理节点102。处理节点和互连网络的一个例子在下面予以描述。
一个处理节点包括,例如,一个处理器106,如IBM公司所提供的RS/6000处理器,和一个通信适配器108,它与处理器通过例如系统输入/输出(I/O)总线109相连接。通信适配器是一个输入/输出设备,用于在系统中从一个处理器到另外一个处理器的通信并且/或者从互连网络到一个处理器的通信。通信适配器的一个例子在下面将参考图6进一步的予以描述。
处理节点102与互连网络104相连,104中包括例如由IBM公司所提供的可缩放功率并行开关(SP开关)在内。下面将描述互连网络的一种实施方式,并且在下列的白皮书中也予以描述Derrick Garmire的“IBM功率并行技术摘要用于高性能通信计算的互连技术(RS/6000 SP)”(1996年6月6日)和Derrick Garmire的“RS/6000SP高性能通信网络”(1996年6月6日),它们都全部包含在参考中。
互连网络将分布式计算机系统中的处理器相互连接在一起,这样这些处理器就可以同时发送和接收信息。在一种实施方式中,互连网络104包括一个或多个开关板104,每个开关板与处理节点和/或另外的开关板相连接。例如在图1中,开关板#1与第一个处理节点相连,该节点在这里被作为初始的节点,开关板#1并且与一个或多个其它处理节点相连接。它还进一步与开关板#2相连接,目的是增加系统的可伸缩性。开关板#2与开关板#1相连接,并且与至少一个其它处理节点102相连接。
在较大的配置中,也可能还包括附加的中间开关板层以进一步增加系统的可伸缩性(参考图2)。在图2中所描述的例子中,中间开关板200与位于机架204中的开关板202相连。每个机架包括例如除了开关板外还有二到十六个处理节点。中间开关板将开关板与其它开关板连接起来,而不是将开关板与处理节点连接。如图2所示,与处理节点的连接是通过开关板202,而不是通过中间开关板。
回过来参考图1,在一个例子中,每个开关板110包括大量的开关元件112(例如8个),它们为每个连接到那里的节点提供连接接点,并且为其它的开关元件提供连接点。开关元件的配置允许在处理节点之间存在多条路径,这样单路径或元件故障不能够将节点彼此分隔开来。特别是,每个处理节点有两个至开关元件的连接,并且每个连接是一个输入/输出连接。
依据本发明的原则,每个开关元件112被使用例如由分布式计算机系统内的一个指定的节点(例如初始节点)转发到该开关元件的一个开关初始化包来进行初始化。在一种实施方式中初始化服务包包括一条命令指明该包是一个开关初始化包,因此不被传送到开关网中的下一级;一条初始路径指示到系统的第一个指定处理节点(例如一个初始节点)的路径;第二条路径指示或者是到第一个指定处理节点的第二条路径或者是到第二个指定的处理节点(例如一个备份节点)的路径;该开关元件的一个标识符;和多个其它的用于开关元件的初始化数据,在本发明中不需要对它们进行讨论。
在一个例子中,每个开关元件112是一个集成到一个单一的CMOS芯片上的8通道对8通道的分组路由选择部件。开关芯片的一种实施方式在美国的专利号为5,546,391题目为“基于避免死锁的时分复用分组交换的中央共享队列”的专利中详细加以描述,该专利于1996年8月13日发布,转让给了IBM公司,它在参考中全部包含进来。
参考图3详细地描述了开关元件112(例如一个开关芯片)的一种实施方式。在一个例子中,开关元件112包括大量的接收器模块302(例如8个)(每一个对应于开关元件的一个输入端口)和大量的发送器模块304(例如8个)(每一个对应于开关元件的一个输出端口)。
开关元件112还包括一个无缓冲的纵横开关306,当指定的输出端口可用时,它允许包直接从接收器传送到发送器。它还包括一个中央队列308,它实现一个缓冲的,时分复用的八路路由器。中央队列接收来至接收器的信息并且当特定的端口处于忙状态时,将信息存在队列中。然后,一旦适当的发送器提出请求,队列将信息传送给发送器。
此外,开关元件112包括在该开关元件操作过程中所使用的硬件服务逻辑310。特别是,硬件服务逻辑从接收端口接收信息,处理信息,并且以通过开关发送器向系统中的一个处理节点发送信息的方式来确认操作。此外,依据本发明的原则,硬件服务逻辑提供本发明的错误报告能力。
参考图4将详细描述用于本发明的错误报告能力的硬件服务逻辑的一种实现方式。在一个例子中,下面描述的功能将使用硬件状态机来实现。
参考图4,首先,判定是否开关元件已经检测到一个错误,例如奇偶错误,循环冗余校验(CRC)错误或顺序错误,即查询400。例如,开关元件通过检查开关元件内的状态机的当前状态以确定它是否在预期的状态来检查是否存在一个顺序错误。如果它没有在预期的状态,则产生了一个错误。然而,如果状态正确,则没有序列错误。
如果没有检测到一个错误,则流程返回到查询400,因此就可以以预先选择的时间间隔来进行判定。另一方面,如果检测到一个错误,那么接着进行如下面描述的处理。
判定是否错误信息已经被发送,即查询402。例如,作出检测以判定开关元件是否已经将一个包含有错误的错误服务包发送到指定的处理节点。在一个例子中,是通过检测在开关元件内指示错误服务包是否已经被发送的一位来进行判定的。
当错误服务包没有被发送时,则要求进行访问,例如两个端口一个初始端口和一个第二端口,目的是发送该包,即步骤406。如上所述,在初始化过程中,将端口的标识提供给开关元件。当要求访问时,每一个端口返回一个确认,并且第一个被收到确认的端口是在发送信息中所使用的第一个端口。例如,如果初始端口是第一个送回确认的端口,即查询408,那么产生指定给第一个处理节点(例如,初始节点)的错误服务包,即步骤410。
在一个例子中,错误服务包包括包起始控制字符;到第一个指定处理节点的路径,它在开关元件的初始化过程中提供;一条指示错误已经发生的指令;一个在初始化过程所提供的开关元件的标识;错误数据,它指示哪些错误位处于工作状态;一个循环冗余校验,它包括在第一个指定节点的通信适配器所使用的校验模式以确保数据没有已经被破坏;包结尾控制字符。起始和结尾控制字符描述了包的起始和结尾,这样硬件无须跟踪该包的长度或其它相似类型的信息。
在生成错误服务包之后,使用标准的传输技术,将该包传送到第一个指定的处理节点。在第一个指定的处理节点,通信适配器接收该包,暂存它,并将它传送到该处理节点的处理器。
在将该包发送出初始端口之后,作出检测以确定是否该包被发送出两个端口,即查询412。当该包没被发送出两个端口时,流程返回到步骤406,“在端口间仲裁”。这时开关知道已经将包送出初始端口,所以它选择备份端口,即查询414。
此后产生一个错误服务包以向第二个指定的处理节点(例如,备份节点)报告该错误,即步骤416。除指定的路线是到备份处理节点而不是到初始处理节点以外,该包与上面所描述的初始包包括有同样的信息。
一旦该包已经被发送出两个端口,即查询412,流程返回到查询400,“检测到错误”。
返回到查询402“错误包已经被发送?”,当该错误包已经被发送时,作出判定是否该开关元件已经接收到错误的复原服务包,即查询418。在一种实施方式中,该判定是通过开关元件检测到来的服务包中的指令来实现的。
当指令指明没有收到复原服务包时,收集附加的错误目的是使系统不会被错误信息溢满,即步骤420。特别是,直到收到复原服务包,才从开关元件转发其它的错误服务包。处理然后返回到查询400“检测到错误?”。
返回到查询418,然而,如果对于发送错误服务包,已收到一个复原服务包,那么在即步骤422处理继续到图5(步骤500)。在一种实施方式中,使用硬件状态机来实现图5中的功能。
参考图5,在一个例子中,曾收到错误包的指定节点中至少有一个节点产生一个复原服务包。在一个例子中,该复原服务包包括指示这是一个复原包的一条命令和复原数据。在产生复原服务包之后,指定的节点将该包发送到错误服务包所识别的开关元件,该开关元件检测它已经收到了复原包,即步骤500。
紧接在收到复原服务包之后,开关元件使用复原数据复原错误(例如,通过复原错误位),并且通过禁止再有错误信息被发送来复原该设备,即步骤502。在一个例子中,该设备是通过复原相应的位被复原的。
接下来,选择复原包被在哪个端口上被发送,即步骤504。如果最初选择了初始端口(即第一个确认请求的端口),即查询506,那么产生一个确认服务包,即步骤508。在一种实施方式中,确认服务包包括与上面描述的第一个指定处理节点的错误服务包相同的信息;但是,错误数据包括在步骤420(图4)中收集到的全部错误。特别是,确认服务包包括有包起始控制字符,一条到初始节点的路径,一条指示它是一个错误的指令,一个开关元件标示符,全部收集到的错误数据,一个CRC,和包结尾控制字符。在产生确认服务包之后,它被发送到初始的处理节点。
如果包没有在两个端口上发送,即查询510,那么处理继续步骤504“在端口之间进行仲裁”。这一次,第二个端口被选择,即查询512,这样,为第二个指定的处理节点产生一个确认服务包,即步骤514。此外,除了指定的路径是对于备份节点以外,这个包的生成与上面描述的对于初始节点的确认包相同。
一旦包已经被送出两个端口,在步骤516,对于包括在最后的复原包中新的错误信息,处理继续进行查询418“复原包是否已经被收到?”。
在上面的实施方式中,该错误/确认被报告给两个处理节点。这仅仅是一个例子。在另外一种实施方式中,冗余被删除,只向一个处理节点发送错误/确认。此外,在另外一个例子中,该包没有必要被送到另外的处理节点,但是代替的却是,通过另外一条路径,发送到同一处理节点。所有这些变化加上其它的都被认为在本发明的范围和精神之内。
上面描述了一种机制,通过它,开关元件将一个检测到的错误报告给分布式计算机系统中一个或多个指定的处理节点。然而,在另外一种实施方式中,如果错误信息丢失了的话,处理节点能够从开关元件要求一个错误状态包。
在本发明进一步的实施方式中,通信适配器,它也是分布式计算机系统的一个硬件部件,检测并向一个或多个指定的处理节点报告错误。
参考图6,将详细描述通信适配器的一个例子,参考图7,将进一步详细描述与通信适配器的报告能力相连的逻辑的一种实施方式。
参考图6,在一个实例中,一个通信适配器600包括总线接口硬件逻辑602,一个发送信息缓冲单元604,一个接收信息缓冲单元606,发送链路逻辑608,610,和接收链路逻辑612,614,它们中的每一个都将在下面予以描述。
总线接口硬件逻辑602将通信适配器的其余部件与系统总线之间连接起来,它将通信适配器连接到处理节点上相应的处理器之上。总线接口硬件逻辑602从其它的适配器部件和/或从处理器接收错误信息,并且当检测出一个致命的错误时,它发出一个CHKSTOP错误信号。
总线接口与发送信息缓冲器604相连,发送信息缓冲器604从总线接口硬件逻辑602接收信息。发送信息缓冲器暂存未分组的信息以备以后的发送,并且将它所检测到的任何错误向回报告给总线接口硬件逻辑602。
发送信息缓冲器与发送链路硬件逻辑608和发送链路硬件逻辑610相连接,608和610是在将信息发送到互连网络的过程中所使用的双端口。每一个发送链路硬件逻辑将信息分组、缓冲并通过一条给定的链路将之发送到互连网络。此外,它将任何检测到的错误报告给总线接口逻辑。当发送链路硬件逻辑接收到一个有效的CHKSTOP信号后,它中断目前的状态(例如,在一个状态机中存储的状态)并且发送一个错误服务包,下面将进一步详细地描述。此后,链路逻辑进入空闲态直至收到一个复原。
除了双端口发送链路之外,通信适配器还包括双端口接收链路,即接收链路硬件逻辑612和614。接收链路硬件逻辑从将该通信适配器连接到互连网络的链路中接收包。它将接收到的数据传送到接收信息缓冲器606,并且将任何错误报告给总线接口逻辑602。此外,如果CHKSTOP信号有效,它停止操作。
接收链路被连接到接收信息缓冲器606,接收信息缓冲器606从链路接收数据并且将数据传送到总线接口逻辑。它还将任何检测到的错误报告给总线接口逻辑。
依据本发明的原则,通信适配器由对应于该适配器的本地处理器进行初始化。例如,本地处理器提供到指定处理节点的路径,适配器的识别和其它初始化所需要的信息。当该适配器接收到该信息时,信息被存储在适配器的硬件存储元件中。
如上描述,通信适配器自发地将任何检测到的致命的错误报告给一个或多个指定的处理节点,这样处理节点则无须轮询通信适配器以判定是否产生了错误。用于依据本发明的原则报告任何这类错误的硬件逻辑将参考图7进一步地予以讨论。在一个例子中,下面描述的功能是通过使用通信适配器的不同部件的硬件状态机来实现的。
参考图7,首先,判定是否通信适配器已经检测到一个致命错误,即查询700。这个判定是以与开关元件检测错误相似的方式作出的。当没有检测到致命错误的时候,那么重新进行检测,即查询700。然而,当检测到一个致命错误的时候,那么通信适配器通过将自己脱线(例如将它自己放入中断状态)来中断目前的操作,即步骤702。
紧接着,产生错误服务包(也称作检测停止包)以向一个或多个指定的处理节点发送,即步骤704。在一个例子中,对于第一个指定的处理节点产生一个错误服务包,并且对于第二个指定的处理节点产生另一个包。每个错误包包括有与上面描述的由开关元件产生的错误服务包相似的信息。例如,每一个包括有一个包起始控制字符,一条到初始或第二节点的路径,一个错误指令,一个适配器标识,错误数据,一个循环冗余校验和一个包结尾控制字符。
在产生包后,对应于第一个指定处理节点的包被从第一个指定端口中发送出,对应于第二个指定处理节点的包被从第二个端口中发送出,即步骤706。两个端口的使用提高了包中的一个将通过该系统到达诸指定节点中的一个或通过指定路径中的一条的概率。
此后,通信适配器保持空闲直到适配器被复原,目的是防止更多的错误传播,即步骤708。一旦适配器已经由它相应的处理器复原,即查询710,流程返回到查询700,即“错误被检测到?”。
在上面描述的实施方式中,将致命错误报告给指定的处理节点。该适配器所检测到的非致命错误只被报告给本地处理器。然而,在另外一种实施方式中,所有的错误都可以被报告给指定的处理节点。
对于交换机制,在另外一种实施方式中,无须将错误包发送出两个端口。此外,包能够通过两条(或更多)的路径被发送到同一个处理节点。这些和其它的实施方式被认为是在本发明的范围和精神之内。
本发明的错误报告能力使得不再需要监控设备故障,结果是减少了对路径或部分路径的竞争。当检测到一个错误时,一个开关元件或者一个适配器通过一个服务包报告该错误。附加的错误包没有干扰系统,因为开关元件只是收集附加的错误,并且直到复原服务包被收到之后才报告它们。适配器使它自己脱线,这样使系统不会被随后的错误包弄乱,并且系统的其余部分能够正常的工作。
本发明的机制进一步在发生故障的元件处于一条报告路径中的情况下提供了高度的容错。
这里所描述的分布式计算机系统仅仅是一个例子。不背离本发明的精神本发明的报告能力能够被包含在其他的系统中和/或与其它的系统一起使用。例如,不背离本发明的精神,可以使用不同的体系结构和/或硬件部件。此外,除了状态机以外,其它的硬件部件也可以被用来实现本发明的硬件逻辑。
除了上面的描述,在另外一种实施方式中,只有在一个错误发生的计数达到一个阈值后,才报告检测到的错误。依据本发明的原则,当达到阈值时,该错误才被报告。
这里所描述的流程图只不过是一个示范。不背离本发明的精神,对于所描述的这些附图或步骤(或操作)可能存在着多种变动。例如,可以以不同的顺序来执行这些步骤,或者可以增加,删除或修改步骤。所有这些变动都被认为是本权利要求的发明的一部分。
尽管这里已经详细图解描述了优选的实施方式,但显然对于相关领域的熟练技术人员来说,不背离本发明的精神可以作各种修改,填加,替代和其它类似的操作,这些都被认为是在下面的权利要求书所定义的发明的范围之内。
权利要求
1.一种在分布式计算机系统中报告错误的方法,所述的方法包括当检测到一个错误时,由所述分布式计算机系统中的一个硬件元件生成一个错误信息;并且将所述错误信息从所述硬件元件转发到所述分布式计算机系统的第一个指定的处理节点。
2.权利要求1的方法,特征在于所述硬件元件包括一个开关元件和一个通信适配器中的一个。
3.权利要求1的方法,特征在于所述转发进一步包括将所述错误信息从所述硬件元件发送到所述分布式计算机系统的第二个指定的处理节点。
4.权利要求1的方法,特征在于所述生成包括产生一个服务包,所述服务包包括所述错误信息和到所述第一个指定处理节点的路径。
5.权利要求4的方法,特征在于所述转发包括使用所述路径将所述错误信息发送到所述第一个指定的处理节点。
6.权利要求1的方法,特征在于进一步包括在所述硬件元件接收到所述错误信息已经被所述第一个指定处理节点接收到的指示之前,由所述硬件元件收集附加的错误。
7.权利要求6的方法,特征在于进一步还包括确认所述指示的接收,所述的确认进一步包括将对应于所述附加错误的附加错误信息转发到所述分布式计算机系统的所述第一个指定处理节点和第二个指定处理节点中的至少一个。
8.权利要求1的方法,特征在于所述硬件元件包括一个通信适配器,并且所述的方法进一步还包括在生成所述错误信息之前中断所述通信适配器的当前操作。
全文摘要
当检测到一个错误时,由一个分布式计算机系统的一个硬件元件生成一个错误信息。错误信息然后被从该硬件元件转发到分布式计算机系统的一个或多个指定的处理节点。硬件元件包括,例如,适于报告检测到的错误的一个开关元件或一个通信适配器。
文档编号G06F11/07GK1197236SQ9810571
公开日1998年10月28日 申请日期1998年3月17日 优先权日1997年4月8日
发明者克里斯廷·玛丽·德斯诺伊斯, 德里克·勒鲁瓦·加米雷, 安托万内特·伊莱恩·赫尔曼, 罗伯特·弗雷德里克·斯塔基, 弗朗西斯·艾尔弗雷德·坎普 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1