專利名稱:由分布式計(jì)算機(jī)系統(tǒng)的一個(gè)硬件元件報(bào)告錯(cuò)誤的方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及分布式計(jì)算機(jī)系統(tǒng),并且尤其涉及使用這些系統(tǒng)的硬件組件來報(bào)告硬件組件所發(fā)現(xiàn)的錯(cuò)誤。
本申請(qǐng)包括與下面申請(qǐng)的主題內(nèi)容相關(guān)的主題內(nèi)容,下面的申請(qǐng)與本申請(qǐng)轉(zhuǎn)讓給同一個(gè)受讓人,并且與本發(fā)明在同一天申請(qǐng)。下面所列的申請(qǐng)?jiān)谶@里全部包含進(jìn)來作為參考。
“由分布式計(jì)算機(jī)系統(tǒng)的一個(gè)硬件元件報(bào)告錯(cuò)誤的系統(tǒng)”,由Desnoyers等人申請(qǐng),序列號(hào)為08/838,389,(摘要號(hào)為PO9-97-045)。
典型地,一個(gè)分布式計(jì)算機(jī)系統(tǒng)包括大量的通過一個(gè)互連網(wǎng)絡(luò)相互連接的處理器。這些處理器其中的一個(gè)具有監(jiān)控計(jì)算機(jī)系統(tǒng)內(nèi)設(shè)備故障的任務(wù)。例如,使用一個(gè)心搏型協(xié)議來定期輪詢系統(tǒng)內(nèi)的每一個(gè)設(shè)備以確定該設(shè)備是否處于工作狀態(tài)。如果一個(gè)曾處于工作狀態(tài)的設(shè)備不再處于工作狀態(tài),那么該處理器探查該設(shè)備以發(fā)現(xiàn)是否出現(xiàn)了錯(cuò)誤。輪詢所有設(shè)備所需要的時(shí)間隨著系統(tǒng)規(guī)模的增長(zhǎng)而成比例地增加。
當(dāng)檢測(cè)到一個(gè)故障時(shí),該處理器需要與發(fā)生故障的設(shè)備進(jìn)行通信以確定故障的原因,并且啟動(dòng)適當(dāng)?shù)幕謴?fù)方案。例如,如果在互連網(wǎng)絡(luò)內(nèi)發(fā)生了一個(gè)故障,那么處理器需要與該網(wǎng)絡(luò)進(jìn)行通信,來檢索互連網(wǎng)絡(luò)所捕獲到的故障信息,并且啟動(dòng)適當(dāng)?shù)幕謴?fù)。然而,因?yàn)椴荒艽_保在互連網(wǎng)絡(luò)和該處理器之間存在直接的連接,因此對(duì)于這種通信通常使用替代的機(jī)制。
在一個(gè)互連網(wǎng)絡(luò)中當(dāng)錯(cuò)誤發(fā)生時(shí),用于搜尋和檢索故障信息的處理器的使用和用于檢索錯(cuò)誤信息的替代機(jī)制的進(jìn)一步的使用都沒有預(yù)期的有效。因此,需要一種更有效的向處理器報(bào)告錯(cuò)誤的方法來提供服務(wù)。特別是,需要一種機(jī)制,其中報(bào)告由,例如,互連網(wǎng)絡(luò)本身來執(zhí)行,以替代處理器搜尋和檢索故障信息。
通過在一個(gè)分布式計(jì)算機(jī)系統(tǒng)中提供一種報(bào)告錯(cuò)誤的方法,現(xiàn)有技術(shù)的缺點(diǎn)得到了克服并且提供了附加的優(yōu)點(diǎn)。當(dāng)檢測(cè)到一個(gè)錯(cuò)誤時(shí),該分布式計(jì)算機(jī)系統(tǒng)中的一個(gè)硬件元件產(chǎn)生一個(gè)錯(cuò)誤信息。該錯(cuò)誤信息然后被從該硬件元件轉(zhuǎn)發(fā)到該分布式計(jì)算機(jī)系統(tǒng)的第一個(gè)指定的處理節(jié)點(diǎn)。
在一個(gè)例子中,該硬件元件包括或是一個(gè)開關(guān)元件或是一個(gè)通信適配器。
在另一個(gè)例子中,該錯(cuò)誤信息的生成包括生成一個(gè)服務(wù)包,該服務(wù)包包括錯(cuò)誤信息和到第一個(gè)指定的處理節(jié)點(diǎn)的路徑在另一種實(shí)施方式中,該硬件元件在收到第一個(gè)指定的處理節(jié)點(diǎn)已經(jīng)收到錯(cuò)誤信息的指示之前,收集附加的錯(cuò)誤。當(dāng)該硬件元件確認(rèn)收到了第一個(gè)指定的處理節(jié)點(diǎn)已經(jīng)收到錯(cuò)誤信息的指示時(shí),對(duì)應(yīng)于這些附加錯(cuò)誤的錯(cuò)誤信息被轉(zhuǎn)發(fā)給第一個(gè)指定的處理節(jié)點(diǎn)和/或第二個(gè)指定的處理節(jié)點(diǎn)。
在本發(fā)明的另外一種實(shí)施方式中,錯(cuò)誤信息進(jìn)一步被從該硬件元件發(fā)送到分布式計(jì)算機(jī)系統(tǒng)的第二個(gè)指定的處理節(jié)點(diǎn)。
本發(fā)明的錯(cuò)誤報(bào)告能力使不再需要監(jiān)測(cè)設(shè)備以發(fā)現(xiàn)故障,結(jié)果減少了對(duì)于路徑或路徑部分的競(jìng)爭(zhēng)。此外,本發(fā)明的錯(cuò)誤報(bào)告能力預(yù)防了系統(tǒng)中后繼的錯(cuò)誤包的堆積,并且允許系統(tǒng)的其它部分正常工作。本發(fā)明的錯(cuò)誤報(bào)告能力通過使用系統(tǒng)內(nèi)的硬件來實(shí)現(xiàn),而不是軟件或任何處理器邏輯。
另外的特征和優(yōu)點(diǎn)通過本發(fā)明的技術(shù)來實(shí)現(xiàn)。本發(fā)明的其它實(shí)施方式和方面在這里被詳細(xì)地描述,并且被認(rèn)為是權(quán)利要求的發(fā)明的一部分。
被認(rèn)為是本發(fā)明的主題內(nèi)容被特別指出,并且在說明書結(jié)論部分的權(quán)利要求書中被明顯地予以要求。本發(fā)明前面的和其它的主題、特征和優(yōu)點(diǎn)將通過下面與附圖相應(yīng)的詳細(xì)描述而顯而易見,其中
圖1描述了包括并使用本發(fā)明的報(bào)告能力的一個(gè)分布式計(jì)算機(jī)系統(tǒng)的一個(gè)例子。
圖2描述了依據(jù)本發(fā)明的原則圖1中的分布式計(jì)算機(jī)系統(tǒng)的一個(gè)互連網(wǎng)絡(luò)的一種實(shí)施方式,該分布式計(jì)算機(jī)系統(tǒng)中包括中間開關(guān)板。
圖3描述了依據(jù)本發(fā)明的原則的一個(gè)開關(guān)元件的一個(gè)例子。
圖4描述了依據(jù)本發(fā)明的原則,在報(bào)告由圖3的開關(guān)元件檢測(cè)到的錯(cuò)誤時(shí)所使用的硬件服務(wù)邏輯的一種實(shí)施方式。
圖5描述了依據(jù)本發(fā)明的原則,在由圖3的開關(guān)元件確認(rèn)復(fù)原服務(wù)包的接收和附加錯(cuò)誤的轉(zhuǎn)發(fā)過程中所使用的硬件服務(wù)邏輯的一種實(shí)施方式。
圖6描述了依據(jù)本發(fā)明的原則圖1的分布式計(jì)算機(jī)系統(tǒng)中的一個(gè)通信適配器的一個(gè)例子。
圖7描述了依據(jù)本發(fā)明的原則在報(bào)告由圖6的網(wǎng)絡(luò)適配器所檢測(cè)到的錯(cuò)誤中所使用的硬件服務(wù)邏輯的一種實(shí)施方式。
依據(jù)本發(fā)明的原則,提供了一種報(bào)告能力,其中分布式計(jì)算機(jī)系統(tǒng)的硬件元件將錯(cuò)誤狀態(tài)報(bào)告給計(jì)算機(jī)系統(tǒng)中一個(gè)指定的處理節(jié)點(diǎn)。硬件元件報(bào)告錯(cuò)誤,而無須軟件或處理器邏輯。
圖1中描述了包括并且使用本發(fā)明的報(bào)告能力的分布式計(jì)算機(jī)系統(tǒng)的一個(gè)例子。在一種實(shí)施方式中,分布式計(jì)算機(jī)系統(tǒng)是由IBM公司所提供的RISC系統(tǒng)/6000可縮放功率并行系統(tǒng),并且包括與互連網(wǎng)絡(luò)104相連的大量的處理節(jié)點(diǎn)102。處理節(jié)點(diǎn)和互連網(wǎng)絡(luò)的一個(gè)例子在下面予以描述。
一個(gè)處理節(jié)點(diǎn)包括,例如,一個(gè)處理器106,如IBM公司所提供的RS/6000處理器,和一個(gè)通信適配器108,它與處理器通過例如系統(tǒng)輸入/輸出(I/O)總線109相連接。通信適配器是一個(gè)輸入/輸出設(shè)備,用于在系統(tǒng)中從一個(gè)處理器到另外一個(gè)處理器的通信并且/或者從互連網(wǎng)絡(luò)到一個(gè)處理器的通信。通信適配器的一個(gè)例子在下面將參考圖6進(jìn)一步的予以描述。
處理節(jié)點(diǎn)102與互連網(wǎng)絡(luò)104相連,104中包括例如由IBM公司所提供的可縮放功率并行開關(guān)(SP開關(guān))在內(nèi)。下面將描述互連網(wǎng)絡(luò)的一種實(shí)施方式,并且在下列的白皮書中也予以描述Derrick Garmire的“IBM功率并行技術(shù)摘要用于高性能通信計(jì)算的互連技術(shù)(RS/6000 SP)”(1996年6月6日)和Derrick Garmire的“RS/6000SP高性能通信網(wǎng)絡(luò)”(1996年6月6日),它們都全部包含在參考中。
互連網(wǎng)絡(luò)將分布式計(jì)算機(jī)系統(tǒng)中的處理器相互連接在一起,這樣這些處理器就可以同時(shí)發(fā)送和接收信息。在一種實(shí)施方式中,互連網(wǎng)絡(luò)104包括一個(gè)或多個(gè)開關(guān)板104,每個(gè)開關(guān)板與處理節(jié)點(diǎn)和/或另外的開關(guān)板相連接。例如在圖1中,開關(guān)板#1與第一個(gè)處理節(jié)點(diǎn)相連,該節(jié)點(diǎn)在這里被作為初始的節(jié)點(diǎn),開關(guān)板#1并且與一個(gè)或多個(gè)其它處理節(jié)點(diǎn)相連接。它還進(jìn)一步與開關(guān)板#2相連接,目的是增加系統(tǒng)的可伸縮性。開關(guān)板#2與開關(guān)板#1相連接,并且與至少一個(gè)其它處理節(jié)點(diǎn)102相連接。
在較大的配置中,也可能還包括附加的中間開關(guān)板層以進(jìn)一步增加系統(tǒng)的可伸縮性(參考圖2)。在圖2中所描述的例子中,中間開關(guān)板200與位于機(jī)架204中的開關(guān)板202相連。每個(gè)機(jī)架包括例如除了開關(guān)板外還有二到十六個(gè)處理節(jié)點(diǎn)。中間開關(guān)板將開關(guān)板與其它開關(guān)板連接起來,而不是將開關(guān)板與處理節(jié)點(diǎn)連接。如圖2所示,與處理節(jié)點(diǎn)的連接是通過開關(guān)板202,而不是通過中間開關(guān)板。
回過來參考圖1,在一個(gè)例子中,每個(gè)開關(guān)板110包括大量的開關(guān)元件112(例如8個(gè)),它們?yōu)槊總€(gè)連接到那里的節(jié)點(diǎn)提供連接接點(diǎn),并且為其它的開關(guān)元件提供連接點(diǎn)。開關(guān)元件的配置允許在處理節(jié)點(diǎn)之間存在多條路徑,這樣單路徑或元件故障不能夠?qū)⒐?jié)點(diǎn)彼此分隔開來。特別是,每個(gè)處理節(jié)點(diǎn)有兩個(gè)至開關(guān)元件的連接,并且每個(gè)連接是一個(gè)輸入/輸出連接。
依據(jù)本發(fā)明的原則,每個(gè)開關(guān)元件112被使用例如由分布式計(jì)算機(jī)系統(tǒng)內(nèi)的一個(gè)指定的節(jié)點(diǎn)(例如初始節(jié)點(diǎn))轉(zhuǎn)發(fā)到該開關(guān)元件的一個(gè)開關(guān)初始化包來進(jìn)行初始化。在一種實(shí)施方式中初始化服務(wù)包包括一條命令指明該包是一個(gè)開關(guān)初始化包,因此不被傳送到開關(guān)網(wǎng)中的下一級(jí);一條初始路徑指示到系統(tǒng)的第一個(gè)指定處理節(jié)點(diǎn)(例如一個(gè)初始節(jié)點(diǎn))的路徑;第二條路徑指示或者是到第一個(gè)指定處理節(jié)點(diǎn)的第二條路徑或者是到第二個(gè)指定的處理節(jié)點(diǎn)(例如一個(gè)備份節(jié)點(diǎn))的路徑;該開關(guān)元件的一個(gè)標(biāo)識(shí)符;和多個(gè)其它的用于開關(guān)元件的初始化數(shù)據(jù),在本發(fā)明中不需要對(duì)它們進(jìn)行討論。
在一個(gè)例子中,每個(gè)開關(guān)元件112是一個(gè)集成到一個(gè)單一的CMOS芯片上的8通道對(duì)8通道的分組路由選擇部件。開關(guān)芯片的一種實(shí)施方式在美國(guó)的專利號(hào)為5,546,391題目為“基于避免死鎖的時(shí)分復(fù)用分組交換的中央共享隊(duì)列”的專利中詳細(xì)加以描述,該專利于1996年8月13日發(fā)布,轉(zhuǎn)讓給了IBM公司,它在參考中全部包含進(jìn)來。
參考圖3詳細(xì)地描述了開關(guān)元件112(例如一個(gè)開關(guān)芯片)的一種實(shí)施方式。在一個(gè)例子中,開關(guān)元件112包括大量的接收器模塊302(例如8個(gè))(每一個(gè)對(duì)應(yīng)于開關(guān)元件的一個(gè)輸入端口)和大量的發(fā)送器模塊304(例如8個(gè))(每一個(gè)對(duì)應(yīng)于開關(guān)元件的一個(gè)輸出端口)。
開關(guān)元件112還包括一個(gè)無緩沖的縱橫開關(guān)306,當(dāng)指定的輸出端口可用時(shí),它允許包直接從接收器傳送到發(fā)送器。它還包括一個(gè)中央隊(duì)列308,它實(shí)現(xiàn)一個(gè)緩沖的,時(shí)分復(fù)用的八路路由器。中央隊(duì)列接收來至接收器的信息并且當(dāng)特定的端口處于忙狀態(tài)時(shí),將信息存在隊(duì)列中。然后,一旦適當(dāng)?shù)陌l(fā)送器提出請(qǐng)求,隊(duì)列將信息傳送給發(fā)送器。
此外,開關(guān)元件112包括在該開關(guān)元件操作過程中所使用的硬件服務(wù)邏輯310。特別是,硬件服務(wù)邏輯從接收端口接收信息,處理信息,并且以通過開關(guān)發(fā)送器向系統(tǒng)中的一個(gè)處理節(jié)點(diǎn)發(fā)送信息的方式來確認(rèn)操作。此外,依據(jù)本發(fā)明的原則,硬件服務(wù)邏輯提供本發(fā)明的錯(cuò)誤報(bào)告能力。
參考圖4將詳細(xì)描述用于本發(fā)明的錯(cuò)誤報(bào)告能力的硬件服務(wù)邏輯的一種實(shí)現(xiàn)方式。在一個(gè)例子中,下面描述的功能將使用硬件狀態(tài)機(jī)來實(shí)現(xiàn)。
參考圖4,首先,判定是否開關(guān)元件已經(jīng)檢測(cè)到一個(gè)錯(cuò)誤,例如奇偶錯(cuò)誤,循環(huán)冗余校驗(yàn)(CRC)錯(cuò)誤或順序錯(cuò)誤,即查詢400。例如,開關(guān)元件通過檢查開關(guān)元件內(nèi)的狀態(tài)機(jī)的當(dāng)前狀態(tài)以確定它是否在預(yù)期的狀態(tài)來檢查是否存在一個(gè)順序錯(cuò)誤。如果它沒有在預(yù)期的狀態(tài),則產(chǎn)生了一個(gè)錯(cuò)誤。然而,如果狀態(tài)正確,則沒有序列錯(cuò)誤。
如果沒有檢測(cè)到一個(gè)錯(cuò)誤,則流程返回到查詢400,因此就可以以預(yù)先選擇的時(shí)間間隔來進(jìn)行判定。另一方面,如果檢測(cè)到一個(gè)錯(cuò)誤,那么接著進(jìn)行如下面描述的處理。
判定是否錯(cuò)誤信息已經(jīng)被發(fā)送,即查詢402。例如,作出檢測(cè)以判定開關(guān)元件是否已經(jīng)將一個(gè)包含有錯(cuò)誤的錯(cuò)誤服務(wù)包發(fā)送到指定的處理節(jié)點(diǎn)。在一個(gè)例子中,是通過檢測(cè)在開關(guān)元件內(nèi)指示錯(cuò)誤服務(wù)包是否已經(jīng)被發(fā)送的一位來進(jìn)行判定的。
當(dāng)錯(cuò)誤服務(wù)包沒有被發(fā)送時(shí),則要求進(jìn)行訪問,例如兩個(gè)端口一個(gè)初始端口和一個(gè)第二端口,目的是發(fā)送該包,即步驟406。如上所述,在初始化過程中,將端口的標(biāo)識(shí)提供給開關(guān)元件。當(dāng)要求訪問時(shí),每一個(gè)端口返回一個(gè)確認(rèn),并且第一個(gè)被收到確認(rèn)的端口是在發(fā)送信息中所使用的第一個(gè)端口。例如,如果初始端口是第一個(gè)送回確認(rèn)的端口,即查詢408,那么產(chǎn)生指定給第一個(gè)處理節(jié)點(diǎn)(例如,初始節(jié)點(diǎn))的錯(cuò)誤服務(wù)包,即步驟410。
在一個(gè)例子中,錯(cuò)誤服務(wù)包包括包起始控制字符;到第一個(gè)指定處理節(jié)點(diǎn)的路徑,它在開關(guān)元件的初始化過程中提供;一條指示錯(cuò)誤已經(jīng)發(fā)生的指令;一個(gè)在初始化過程所提供的開關(guān)元件的標(biāo)識(shí);錯(cuò)誤數(shù)據(jù),它指示哪些錯(cuò)誤位處于工作狀態(tài);一個(gè)循環(huán)冗余校驗(yàn),它包括在第一個(gè)指定節(jié)點(diǎn)的通信適配器所使用的校驗(yàn)?zāi)J揭源_保數(shù)據(jù)沒有已經(jīng)被破壞;包結(jié)尾控制字符。起始和結(jié)尾控制字符描述了包的起始和結(jié)尾,這樣硬件無須跟蹤該包的長(zhǎng)度或其它相似類型的信息。
在生成錯(cuò)誤服務(wù)包之后,使用標(biāo)準(zhǔn)的傳輸技術(shù),將該包傳送到第一個(gè)指定的處理節(jié)點(diǎn)。在第一個(gè)指定的處理節(jié)點(diǎn),通信適配器接收該包,暫存它,并將它傳送到該處理節(jié)點(diǎn)的處理器。
在將該包發(fā)送出初始端口之后,作出檢測(cè)以確定是否該包被發(fā)送出兩個(gè)端口,即查詢412。當(dāng)該包沒被發(fā)送出兩個(gè)端口時(shí),流程返回到步驟406,“在端口間仲裁”。這時(shí)開關(guān)知道已經(jīng)將包送出初始端口,所以它選擇備份端口,即查詢414。
此后產(chǎn)生一個(gè)錯(cuò)誤服務(wù)包以向第二個(gè)指定的處理節(jié)點(diǎn)(例如,備份節(jié)點(diǎn))報(bào)告該錯(cuò)誤,即步驟416。除指定的路線是到備份處理節(jié)點(diǎn)而不是到初始處理節(jié)點(diǎn)以外,該包與上面所描述的初始包包括有同樣的信息。
一旦該包已經(jīng)被發(fā)送出兩個(gè)端口,即查詢412,流程返回到查詢400,“檢測(cè)到錯(cuò)誤”。
返回到查詢402“錯(cuò)誤包已經(jīng)被發(fā)送?”,當(dāng)該錯(cuò)誤包已經(jīng)被發(fā)送時(shí),作出判定是否該開關(guān)元件已經(jīng)接收到錯(cuò)誤的復(fù)原服務(wù)包,即查詢418。在一種實(shí)施方式中,該判定是通過開關(guān)元件檢測(cè)到來的服務(wù)包中的指令來實(shí)現(xiàn)的。
當(dāng)指令指明沒有收到復(fù)原服務(wù)包時(shí),收集附加的錯(cuò)誤目的是使系統(tǒng)不會(huì)被錯(cuò)誤信息溢滿,即步驟420。特別是,直到收到復(fù)原服務(wù)包,才從開關(guān)元件轉(zhuǎn)發(fā)其它的錯(cuò)誤服務(wù)包。處理然后返回到查詢400“檢測(cè)到錯(cuò)誤?”。
返回到查詢418,然而,如果對(duì)于發(fā)送錯(cuò)誤服務(wù)包,已收到一個(gè)復(fù)原服務(wù)包,那么在即步驟422處理繼續(xù)到圖5(步驟500)。在一種實(shí)施方式中,使用硬件狀態(tài)機(jī)來實(shí)現(xiàn)圖5中的功能。
參考圖5,在一個(gè)例子中,曾收到錯(cuò)誤包的指定節(jié)點(diǎn)中至少有一個(gè)節(jié)點(diǎn)產(chǎn)生一個(gè)復(fù)原服務(wù)包。在一個(gè)例子中,該復(fù)原服務(wù)包包括指示這是一個(gè)復(fù)原包的一條命令和復(fù)原數(shù)據(jù)。在產(chǎn)生復(fù)原服務(wù)包之后,指定的節(jié)點(diǎn)將該包發(fā)送到錯(cuò)誤服務(wù)包所識(shí)別的開關(guān)元件,該開關(guān)元件檢測(cè)它已經(jīng)收到了復(fù)原包,即步驟500。
緊接在收到復(fù)原服務(wù)包之后,開關(guān)元件使用復(fù)原數(shù)據(jù)復(fù)原錯(cuò)誤(例如,通過復(fù)原錯(cuò)誤位),并且通過禁止再有錯(cuò)誤信息被發(fā)送來復(fù)原該設(shè)備,即步驟502。在一個(gè)例子中,該設(shè)備是通過復(fù)原相應(yīng)的位被復(fù)原的。
接下來,選擇復(fù)原包被在哪個(gè)端口上被發(fā)送,即步驟504。如果最初選擇了初始端口(即第一個(gè)確認(rèn)請(qǐng)求的端口),即查詢506,那么產(chǎn)生一個(gè)確認(rèn)服務(wù)包,即步驟508。在一種實(shí)施方式中,確認(rèn)服務(wù)包包括與上面描述的第一個(gè)指定處理節(jié)點(diǎn)的錯(cuò)誤服務(wù)包相同的信息;但是,錯(cuò)誤數(shù)據(jù)包括在步驟420(圖4)中收集到的全部錯(cuò)誤。特別是,確認(rèn)服務(wù)包包括有包起始控制字符,一條到初始節(jié)點(diǎn)的路徑,一條指示它是一個(gè)錯(cuò)誤的指令,一個(gè)開關(guān)元件標(biāo)示符,全部收集到的錯(cuò)誤數(shù)據(jù),一個(gè)CRC,和包結(jié)尾控制字符。在產(chǎn)生確認(rèn)服務(wù)包之后,它被發(fā)送到初始的處理節(jié)點(diǎn)。
如果包沒有在兩個(gè)端口上發(fā)送,即查詢510,那么處理繼續(xù)步驟504“在端口之間進(jìn)行仲裁”。這一次,第二個(gè)端口被選擇,即查詢512,這樣,為第二個(gè)指定的處理節(jié)點(diǎn)產(chǎn)生一個(gè)確認(rèn)服務(wù)包,即步驟514。此外,除了指定的路徑是對(duì)于備份節(jié)點(diǎn)以外,這個(gè)包的生成與上面描述的對(duì)于初始節(jié)點(diǎn)的確認(rèn)包相同。
一旦包已經(jīng)被送出兩個(gè)端口,在步驟516,對(duì)于包括在最后的復(fù)原包中新的錯(cuò)誤信息,處理繼續(xù)進(jìn)行查詢418“復(fù)原包是否已經(jīng)被收到?”。
在上面的實(shí)施方式中,該錯(cuò)誤/確認(rèn)被報(bào)告給兩個(gè)處理節(jié)點(diǎn)。這僅僅是一個(gè)例子。在另外一種實(shí)施方式中,冗余被刪除,只向一個(gè)處理節(jié)點(diǎn)發(fā)送錯(cuò)誤/確認(rèn)。此外,在另外一個(gè)例子中,該包沒有必要被送到另外的處理節(jié)點(diǎn),但是代替的卻是,通過另外一條路徑,發(fā)送到同一處理節(jié)點(diǎn)。所有這些變化加上其它的都被認(rèn)為在本發(fā)明的范圍和精神之內(nèi)。
上面描述了一種機(jī)制,通過它,開關(guān)元件將一個(gè)檢測(cè)到的錯(cuò)誤報(bào)告給分布式計(jì)算機(jī)系統(tǒng)中一個(gè)或多個(gè)指定的處理節(jié)點(diǎn)。然而,在另外一種實(shí)施方式中,如果錯(cuò)誤信息丟失了的話,處理節(jié)點(diǎn)能夠從開關(guān)元件要求一個(gè)錯(cuò)誤狀態(tài)包。
在本發(fā)明進(jìn)一步的實(shí)施方式中,通信適配器,它也是分布式計(jì)算機(jī)系統(tǒng)的一個(gè)硬件部件,檢測(cè)并向一個(gè)或多個(gè)指定的處理節(jié)點(diǎn)報(bào)告錯(cuò)誤。
參考圖6,將詳細(xì)描述通信適配器的一個(gè)例子,參考圖7,將進(jìn)一步詳細(xì)描述與通信適配器的報(bào)告能力相連的邏輯的一種實(shí)施方式。
參考圖6,在一個(gè)實(shí)例中,一個(gè)通信適配器600包括總線接口硬件邏輯602,一個(gè)發(fā)送信息緩沖單元604,一個(gè)接收信息緩沖單元606,發(fā)送鏈路邏輯608,610,和接收鏈路邏輯612,614,它們中的每一個(gè)都將在下面予以描述。
總線接口硬件邏輯602將通信適配器的其余部件與系統(tǒng)總線之間連接起來,它將通信適配器連接到處理節(jié)點(diǎn)上相應(yīng)的處理器之上??偩€接口硬件邏輯602從其它的適配器部件和/或從處理器接收錯(cuò)誤信息,并且當(dāng)檢測(cè)出一個(gè)致命的錯(cuò)誤時(shí),它發(fā)出一個(gè)CHKSTOP錯(cuò)誤信號(hào)。
總線接口與發(fā)送信息緩沖器604相連,發(fā)送信息緩沖器604從總線接口硬件邏輯602接收信息。發(fā)送信息緩沖器暫存未分組的信息以備以后的發(fā)送,并且將它所檢測(cè)到的任何錯(cuò)誤向回報(bào)告給總線接口硬件邏輯602。
發(fā)送信息緩沖器與發(fā)送鏈路硬件邏輯608和發(fā)送鏈路硬件邏輯610相連接,608和610是在將信息發(fā)送到互連網(wǎng)絡(luò)的過程中所使用的雙端口。每一個(gè)發(fā)送鏈路硬件邏輯將信息分組、緩沖并通過一條給定的鏈路將之發(fā)送到互連網(wǎng)絡(luò)。此外,它將任何檢測(cè)到的錯(cuò)誤報(bào)告給總線接口邏輯。當(dāng)發(fā)送鏈路硬件邏輯接收到一個(gè)有效的CHKSTOP信號(hào)后,它中斷目前的狀態(tài)(例如,在一個(gè)狀態(tài)機(jī)中存儲(chǔ)的狀態(tài))并且發(fā)送一個(gè)錯(cuò)誤服務(wù)包,下面將進(jìn)一步詳細(xì)地描述。此后,鏈路邏輯進(jìn)入空閑態(tài)直至收到一個(gè)復(fù)原。
除了雙端口發(fā)送鏈路之外,通信適配器還包括雙端口接收鏈路,即接收鏈路硬件邏輯612和614。接收鏈路硬件邏輯從將該通信適配器連接到互連網(wǎng)絡(luò)的鏈路中接收包。它將接收到的數(shù)據(jù)傳送到接收信息緩沖器606,并且將任何錯(cuò)誤報(bào)告給總線接口邏輯602。此外,如果CHKSTOP信號(hào)有效,它停止操作。
接收鏈路被連接到接收信息緩沖器606,接收信息緩沖器606從鏈路接收數(shù)據(jù)并且將數(shù)據(jù)傳送到總線接口邏輯。它還將任何檢測(cè)到的錯(cuò)誤報(bào)告給總線接口邏輯。
依據(jù)本發(fā)明的原則,通信適配器由對(duì)應(yīng)于該適配器的本地處理器進(jìn)行初始化。例如,本地處理器提供到指定處理節(jié)點(diǎn)的路徑,適配器的識(shí)別和其它初始化所需要的信息。當(dāng)該適配器接收到該信息時(shí),信息被存儲(chǔ)在適配器的硬件存儲(chǔ)元件中。
如上描述,通信適配器自發(fā)地將任何檢測(cè)到的致命的錯(cuò)誤報(bào)告給一個(gè)或多個(gè)指定的處理節(jié)點(diǎn),這樣處理節(jié)點(diǎn)則無須輪詢通信適配器以判定是否產(chǎn)生了錯(cuò)誤。用于依據(jù)本發(fā)明的原則報(bào)告任何這類錯(cuò)誤的硬件邏輯將參考圖7進(jìn)一步地予以討論。在一個(gè)例子中,下面描述的功能是通過使用通信適配器的不同部件的硬件狀態(tài)機(jī)來實(shí)現(xiàn)的。
參考圖7,首先,判定是否通信適配器已經(jīng)檢測(cè)到一個(gè)致命錯(cuò)誤,即查詢700。這個(gè)判定是以與開關(guān)元件檢測(cè)錯(cuò)誤相似的方式作出的。當(dāng)沒有檢測(cè)到致命錯(cuò)誤的時(shí)候,那么重新進(jìn)行檢測(cè),即查詢700。然而,當(dāng)檢測(cè)到一個(gè)致命錯(cuò)誤的時(shí)候,那么通信適配器通過將自己脫線(例如將它自己放入中斷狀態(tài))來中斷目前的操作,即步驟702。
緊接著,產(chǎn)生錯(cuò)誤服務(wù)包(也稱作檢測(cè)停止包)以向一個(gè)或多個(gè)指定的處理節(jié)點(diǎn)發(fā)送,即步驟704。在一個(gè)例子中,對(duì)于第一個(gè)指定的處理節(jié)點(diǎn)產(chǎn)生一個(gè)錯(cuò)誤服務(wù)包,并且對(duì)于第二個(gè)指定的處理節(jié)點(diǎn)產(chǎn)生另一個(gè)包。每個(gè)錯(cuò)誤包包括有與上面描述的由開關(guān)元件產(chǎn)生的錯(cuò)誤服務(wù)包相似的信息。例如,每一個(gè)包括有一個(gè)包起始控制字符,一條到初始或第二節(jié)點(diǎn)的路徑,一個(gè)錯(cuò)誤指令,一個(gè)適配器標(biāo)識(shí),錯(cuò)誤數(shù)據(jù),一個(gè)循環(huán)冗余校驗(yàn)和一個(gè)包結(jié)尾控制字符。
在產(chǎn)生包后,對(duì)應(yīng)于第一個(gè)指定處理節(jié)點(diǎn)的包被從第一個(gè)指定端口中發(fā)送出,對(duì)應(yīng)于第二個(gè)指定處理節(jié)點(diǎn)的包被從第二個(gè)端口中發(fā)送出,即步驟706。兩個(gè)端口的使用提高了包中的一個(gè)將通過該系統(tǒng)到達(dá)諸指定節(jié)點(diǎn)中的一個(gè)或通過指定路徑中的一條的概率。
此后,通信適配器保持空閑直到適配器被復(fù)原,目的是防止更多的錯(cuò)誤傳播,即步驟708。一旦適配器已經(jīng)由它相應(yīng)的處理器復(fù)原,即查詢710,流程返回到查詢700,即“錯(cuò)誤被檢測(cè)到?”。
在上面描述的實(shí)施方式中,將致命錯(cuò)誤報(bào)告給指定的處理節(jié)點(diǎn)。該適配器所檢測(cè)到的非致命錯(cuò)誤只被報(bào)告給本地處理器。然而,在另外一種實(shí)施方式中,所有的錯(cuò)誤都可以被報(bào)告給指定的處理節(jié)點(diǎn)。
對(duì)于交換機(jī)制,在另外一種實(shí)施方式中,無須將錯(cuò)誤包發(fā)送出兩個(gè)端口。此外,包能夠通過兩條(或更多)的路徑被發(fā)送到同一個(gè)處理節(jié)點(diǎn)。這些和其它的實(shí)施方式被認(rèn)為是在本發(fā)明的范圍和精神之內(nèi)。
本發(fā)明的錯(cuò)誤報(bào)告能力使得不再需要監(jiān)控設(shè)備故障,結(jié)果是減少了對(duì)路徑或部分路徑的競(jìng)爭(zhēng)。當(dāng)檢測(cè)到一個(gè)錯(cuò)誤時(shí),一個(gè)開關(guān)元件或者一個(gè)適配器通過一個(gè)服務(wù)包報(bào)告該錯(cuò)誤。附加的錯(cuò)誤包沒有干擾系統(tǒng),因?yàn)殚_關(guān)元件只是收集附加的錯(cuò)誤,并且直到復(fù)原服務(wù)包被收到之后才報(bào)告它們。適配器使它自己脫線,這樣使系統(tǒng)不會(huì)被隨后的錯(cuò)誤包弄亂,并且系統(tǒng)的其余部分能夠正常的工作。
本發(fā)明的機(jī)制進(jìn)一步在發(fā)生故障的元件處于一條報(bào)告路徑中的情況下提供了高度的容錯(cuò)。
這里所描述的分布式計(jì)算機(jī)系統(tǒng)僅僅是一個(gè)例子。不背離本發(fā)明的精神本發(fā)明的報(bào)告能力能夠被包含在其他的系統(tǒng)中和/或與其它的系統(tǒng)一起使用。例如,不背離本發(fā)明的精神,可以使用不同的體系結(jié)構(gòu)和/或硬件部件。此外,除了狀態(tài)機(jī)以外,其它的硬件部件也可以被用來實(shí)現(xiàn)本發(fā)明的硬件邏輯。
除了上面的描述,在另外一種實(shí)施方式中,只有在一個(gè)錯(cuò)誤發(fā)生的計(jì)數(shù)達(dá)到一個(gè)閾值后,才報(bào)告檢測(cè)到的錯(cuò)誤。依據(jù)本發(fā)明的原則,當(dāng)達(dá)到閾值時(shí),該錯(cuò)誤才被報(bào)告。
這里所描述的流程圖只不過是一個(gè)示范。不背離本發(fā)明的精神,對(duì)于所描述的這些附圖或步驟(或操作)可能存在著多種變動(dòng)。例如,可以以不同的順序來執(zhí)行這些步驟,或者可以增加,刪除或修改步驟。所有這些變動(dòng)都被認(rèn)為是本權(quán)利要求的發(fā)明的一部分。
盡管這里已經(jīng)詳細(xì)圖解描述了優(yōu)選的實(shí)施方式,但顯然對(duì)于相關(guān)領(lǐng)域的熟練技術(shù)人員來說,不背離本發(fā)明的精神可以作各種修改,填加,替代和其它類似的操作,這些都被認(rèn)為是在下面的權(quán)利要求書所定義的發(fā)明的范圍之內(nèi)。
權(quán)利要求
1.一種在分布式計(jì)算機(jī)系統(tǒng)中報(bào)告錯(cuò)誤的方法,所述的方法包括當(dāng)檢測(cè)到一個(gè)錯(cuò)誤時(shí),由所述分布式計(jì)算機(jī)系統(tǒng)中的一個(gè)硬件元件生成一個(gè)錯(cuò)誤信息;并且將所述錯(cuò)誤信息從所述硬件元件轉(zhuǎn)發(fā)到所述分布式計(jì)算機(jī)系統(tǒng)的第一個(gè)指定的處理節(jié)點(diǎn)。
2.權(quán)利要求1的方法,特征在于所述硬件元件包括一個(gè)開關(guān)元件和一個(gè)通信適配器中的一個(gè)。
3.權(quán)利要求1的方法,特征在于所述轉(zhuǎn)發(fā)進(jìn)一步包括將所述錯(cuò)誤信息從所述硬件元件發(fā)送到所述分布式計(jì)算機(jī)系統(tǒng)的第二個(gè)指定的處理節(jié)點(diǎn)。
4.權(quán)利要求1的方法,特征在于所述生成包括產(chǎn)生一個(gè)服務(wù)包,所述服務(wù)包包括所述錯(cuò)誤信息和到所述第一個(gè)指定處理節(jié)點(diǎn)的路徑。
5.權(quán)利要求4的方法,特征在于所述轉(zhuǎn)發(fā)包括使用所述路徑將所述錯(cuò)誤信息發(fā)送到所述第一個(gè)指定的處理節(jié)點(diǎn)。
6.權(quán)利要求1的方法,特征在于進(jìn)一步包括在所述硬件元件接收到所述錯(cuò)誤信息已經(jīng)被所述第一個(gè)指定處理節(jié)點(diǎn)接收到的指示之前,由所述硬件元件收集附加的錯(cuò)誤。
7.權(quán)利要求6的方法,特征在于進(jìn)一步還包括確認(rèn)所述指示的接收,所述的確認(rèn)進(jìn)一步包括將對(duì)應(yīng)于所述附加錯(cuò)誤的附加錯(cuò)誤信息轉(zhuǎn)發(fā)到所述分布式計(jì)算機(jī)系統(tǒng)的所述第一個(gè)指定處理節(jié)點(diǎn)和第二個(gè)指定處理節(jié)點(diǎn)中的至少一個(gè)。
8.權(quán)利要求1的方法,特征在于所述硬件元件包括一個(gè)通信適配器,并且所述的方法進(jìn)一步還包括在生成所述錯(cuò)誤信息之前中斷所述通信適配器的當(dāng)前操作。
全文摘要
當(dāng)檢測(cè)到一個(gè)錯(cuò)誤時(shí),由一個(gè)分布式計(jì)算機(jī)系統(tǒng)的一個(gè)硬件元件生成一個(gè)錯(cuò)誤信息。錯(cuò)誤信息然后被從該硬件元件轉(zhuǎn)發(fā)到分布式計(jì)算機(jī)系統(tǒng)的一個(gè)或多個(gè)指定的處理節(jié)點(diǎn)。硬件元件包括,例如,適于報(bào)告檢測(cè)到的錯(cuò)誤的一個(gè)開關(guān)元件或一個(gè)通信適配器。
文檔編號(hào)G06F11/07GK1197236SQ9810571
公開日1998年10月28日 申請(qǐng)日期1998年3月17日 優(yōu)先權(quán)日1997年4月8日
發(fā)明者克里斯廷·瑪麗·德斯諾伊斯, 德里克·勒魯瓦·加米雷, 安托萬內(nèi)特·伊萊恩·赫爾曼, 羅伯特·弗雷德里克·斯塔基, 弗朗西斯·艾爾弗雷德·坎普 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司