專利名稱:一種檢測多處理器系統(tǒng)故障的方法、系統(tǒng)和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種檢測多處理器系統(tǒng)故障的方法、 系統(tǒng)和裝置。
背景技術(shù):
多處理器系統(tǒng)是指具備多個微處理器的計算機系統(tǒng),當多個微處理器集 成在同一個集成電路基片上時也稱為多處理器系統(tǒng)。在多處理器系統(tǒng)中,由 于多個微處理器能夠同時進行計算處理,所以其處理能力比普通單處理器的 計算機要強大很多。對于多處理器系統(tǒng)來說,系統(tǒng)中的任何一個處理器發(fā)生故障都可能影響 整個系統(tǒng)的正常運行。尤其隨著多處理器系統(tǒng)中處理器數(shù)量的增加,系統(tǒng)發(fā) 生故障的概率也將隨之增加,而對于多處理器系統(tǒng)而言,系統(tǒng)中任何一個處 理器發(fā)生故障都可能影響整個系統(tǒng)的正常運行。在這種情況下,對多處理器 系統(tǒng)進行故障管理就是非常必要的了 。對多處理器系統(tǒng)進行故障管理的主要內(nèi)容包括故障檢測和故障恢復(fù)。故 障檢測是指在某個或某些處理器發(fā)生故障之后,感知并提取故障處理器的位 置和故障的特征信息,以便掌握多處理器系統(tǒng)的當前運行情況,并及時采取 應(yīng)對措施。而故障恢復(fù),則是在系統(tǒng)發(fā)生故障后,通過各種手段使得系統(tǒng)能 夠繼續(xù)維持運行。目前常見的一種故障檢測方法是,發(fā)生故障的微處理器由于運行狀態(tài)異 常,而觸發(fā)硬件的中斷或異常,然后通過多處理器系統(tǒng)中的專門硬件(包括 但不限于中斷控制器、互聯(lián)網(wǎng)絡(luò)等),將中斷或異常信息通知到專門的硬件單 元和/或其他處理器上,完成故障的報告過程。其中,中斷是計算機系統(tǒng)中一 種打斷軟件正常運行過程、執(zhí)行特定軟件功能的常用方法,可以由軟件或外 部^f更件觸發(fā),常用于處理^5更件相關(guān)的事件或需要快速響應(yīng)的事件。異常與中斷類似,但主要由微處理器內(nèi)部的軟件或硬件觸發(fā),常用于響應(yīng)處理器的不 正常狀態(tài)。當處理器發(fā)生軟硬件故障時,可能因為執(zhí)行不正確的指令、訪問 錯誤的存儲區(qū)域、硬件看門狗超時等原因觸發(fā)中斷或異常。目前常用的另一種故障檢測方法是,發(fā)生故障的微處理器由于運行狀態(tài) 異常,而觸發(fā)硬件的中斷或異常,該異常由故障處理器本身的中斷或異常處 理程序處理并提取相應(yīng)的故障信息,然后通過系統(tǒng)互聯(lián)發(fā)送到特定的硬件單 元或其他處理器,完成故障的報告過程。在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題現(xiàn)有 技術(shù)的故障檢測機制必須設(shè)置專門的硬件產(chǎn)生中斷或異常信號,并將中斷或 異常信號送到特定的硬件單元或處理器上,因此其故障檢測的能力和范圍依 賴于該硬件的設(shè)計。而硬件一般只能檢測少數(shù)幾種簡單的故障,對于多處理 器系統(tǒng)來說,該硬件比較復(fù)雜,而且當處理器發(fā)生比較嚴重的軟件故障或硬 件故障時,可能因無法執(zhí)行中斷或異常處理程序而無法完成故障檢測。另外 由于故障檢測依賴于特定硬件,使得故障檢測的方法無法移植到不同的系統(tǒng) 中,且檢測方法無法升級,系統(tǒng)投入運行后如果發(fā)現(xiàn)未知的故障模式,可能 必須改動硬件才能檢測出來,代價較大。發(fā)明內(nèi)容本發(fā)明實施例提供一種檢測多處理器系統(tǒng)故障的方法、系統(tǒng)和裝置,以 實現(xiàn)主要依靠軟件進行故障檢測,提高多處理器系統(tǒng)的故障檢測能力,擴大 多處理器系統(tǒng)的檢測范圍。為達到上述目的,本發(fā)明實施例一方面提供一種檢測多處理器系統(tǒng)故障 的方法,包括多處理器系統(tǒng)中被選定的主處理器生成檢測指令,并向所述主處理器自 身和/或至少一個從處理器發(fā)送所述檢測指令;所述主處理器接收所述主處理器自身和/或至少一個從處理器發(fā)送的;^測 結(jié)果;所述主處理器分析所述檢測結(jié)果,并提取所述主處理器自身和/或至少一個從處理器中有故障處理器的故障信息。另一方面,本發(fā)明實施例還提供一種檢測多處理器系統(tǒng)故障的系統(tǒng),包括主處理器和從處理器,所述主處理器,用于生成4企測指令,向所述主處理器自身和/或至少一個 從處理器發(fā)送所述檢測指令,接收所述主處理器自身和/或至少一個從處理器 發(fā)送的;^測結(jié)果,分析所述檢測結(jié)果,并提取所述主處理器自身和/或至少一 個從處理器中有故障處理器的故障信息。所述從處理器,用于接收所述主處理器發(fā)送的檢測指令,根據(jù)所述檢測 指令執(zhí)行故障檢測,并在執(zhí)行故障檢測后向所述主處理器返回檢測結(jié)果。再一方面,本發(fā)明實施例還提供一種主處理器,包括指令生成模塊,用于生成檢測指令;指令發(fā)送模塊,用于向所述主處理器自身和/或至少一個從處理器發(fā)送所 述檢測指令;檢測結(jié)果接收模塊,用于接收所述主處理器自身和/或至少一個從處理器 發(fā)送的檢測結(jié)果;故障判斷模塊,用于分析所述檢測結(jié)果,并提取所述主處理器自身和/或 至少一個從處理器中有故障處理器的故障信息。再一方面,本發(fā)明實施例還提供一種從處理器,包括指令接收模塊,用于接收主處理器發(fā)送的檢測指令;故障檢測模塊,用于根據(jù)所述檢測指令執(zhí)行故障檢測;檢測結(jié)果發(fā)送模塊,用于向主處理器返回檢測結(jié)果。與現(xiàn)有技術(shù)相比,本發(fā)明實施例具有以下優(yōu)點本發(fā)明實施例實現(xiàn)了主 要依靠軟件進行故障檢測,降低了多處理器系統(tǒng)的硬件復(fù)雜性和系統(tǒng)成本, 增強了故障檢測能力,擴大了故障檢測的范圍。
圖1為本發(fā)明實施例的方法流程圖;圖2為本發(fā)明實施例中多處理器系統(tǒng)的結(jié)構(gòu)示意圖;圖3為本發(fā)明實施例中主處理器結(jié)構(gòu)示意圖; 圖4為本發(fā)明實施例中從處理器結(jié)構(gòu)示意圖。
具體實施方式
本發(fā)明實施例提供一種檢測多處理器系統(tǒng)故障的方法,多處理器系統(tǒng)中 被選定的主處理器生成檢測指令,并向所述主處理器自身和/或至少一個從處 理器發(fā)送所述檢測指令,接收所述主處理器自身和/或至少一個從處理器發(fā)送 的;險測結(jié)果并進行分析,提取所述主處理器自身和/或至少一個從處理器中有 故障處理器的故障信息。該方法主要依靠軟件進行故障檢測,因而能夠提高 多處理器系統(tǒng)的故障檢測能力,擴大多處理器系統(tǒng)的檢測范圍。 如圖1所示,為本發(fā)明實施例的方法流程圖,具體包括 框圖101,主處理器生成檢測指令。多處理器系統(tǒng)的主處理器根據(jù)以下格 式和語義生成檢測指令,該檢測指令的格式如表1所示表1longword 0command 1longword 1paramllongword 2param2longword 3return 1其中,commandl為檢測命令,其語義如下 0xl:;險測通用寄存器; 0x2:檢測數(shù)據(jù)cache; 0x3:檢測控制寄存器; 0x4: 4全測外部存儲器; 其他值無效。其中,paraml為待檢測的寄存器或存儲器的起始地址;param2為待檢測的寄存器或存儲器的結(jié)束地址; returnl為保存4企測結(jié)果的地址。其中,上述^r測指令包括所述主處理器自身和/或至少一個從處理器的抬r 測方式、檢測范圍和/或4企測結(jié)果的返回方式。從而實現(xiàn)對各種不同功能、各 種不同存儲區(qū)域、各種不同代碼路徑的檢測,并且返回檢測結(jié)果的方式也可 以配置,例如預(yù)先約定所述主處理器和/或至少一個從處理器返回4企測結(jié)果的 時間。其中,檢測指令的生成時間間隔不作限定,可以根據(jù)需要定期或不定期 生成,只要頻繁程度滿足相應(yīng)系統(tǒng)的故障管理的需求即可。其中,在多處理器系統(tǒng)上電復(fù)位時,上述主處理器由多處理器系統(tǒng)的系 統(tǒng)管理器從所述多處理器系統(tǒng)中指定一個或多個處理器作為主處理器,并指 定所述多處理器系統(tǒng)中除所述主處理器之外的處理器作為從處理器。而在多處理器系統(tǒng)運行過程中,所述系統(tǒng)管理器還可以從所述多處理器 系統(tǒng)中選擇未標明自身有故障的一個或多個處理器作為主處理器,并指定所 述多處理器系統(tǒng)中除所述主處理器之外的處理器作為從處理器,以避免由于 主處理器自身故障而造成的檢測功能失效。并且,所述系統(tǒng)管理器選擇主處 理器的時間不限定,可以是定時選擇,也可以是在主處理器出現(xiàn)故障后選擇 等等。并且,所述系統(tǒng)管理器選擇主處理器的方式不限定,可以是隨機選擇, 也可以是輪換選擇等等。其中,當所述多個處理器同時作為主處理器時,故障判斷按照多數(shù)一致 原則進行判斷。例如,多處理器系統(tǒng)的系統(tǒng)管理器指定第一處理器、第二處 理器和第三處理器同時作為主處理器。當他們收到同一個處理器(第四處理 器)返回的檢測結(jié)果時,第一處理器和第二處理器各自通過分析所述檢測結(jié) 果判斷第四處理器有故障,而第三處理器則通過分析所述^^測結(jié)果判斷第四 處理器無故障,則主處理器最終的判斷以第一處理器和第二處理器的判斷結(jié) 果為準,即主處理器判斷第四處理器有故障。步驟S102,主處理器發(fā)送檢測指令。主處理器生成檢測指令并將其發(fā)送, 每次發(fā)送的檢測指令的參數(shù)可以根據(jù)需要在發(fā)送前進行修改。在發(fā)送完畢后, 主處理器一般等待一定的時間才能讀取多處理器系統(tǒng)的主處理器自身和/或至 少一個從處理器主處理器自身和/或至少一個從處理器發(fā)送的檢測結(jié)果,在此等待期間主處理器可以處理該多處理器系統(tǒng)的其他任務(wù)。步驟S103,主處理器自身和/或至少一個從處理器根據(jù)檢測指令執(zhí)行故障 檢測。上述多處理器系統(tǒng)中收到檢測指令的處理器根據(jù)該檢測指令,可以采 用軟件查詢的方式對本處理器或多處理器系統(tǒng)的其他設(shè)備執(zhí)行故障檢測,而 具體的檢測動作和檢測時間則由該檢測指令確定,具體為收到檢測指令的 處理器,根據(jù)commandl域的語義執(zhí)行對應(yīng)的寄存器或存儲器檢測動作,檢 測的范圍由paraml和param2參數(shù)確定,檢測結(jié)果寫入returnl參數(shù)指定的地 址中。另外,除對所述主處理器自身和/或至少一個從處理器檢測之外,也可 以對多處理器系統(tǒng)的其他設(shè)備進行檢測。其中,表1中描述的檢測指令的格式只是一個示例,不構(gòu)成對本發(fā)明的 描述的限制。步驟S104,主處理器自身和/或至少一個從處理器將故障4企測的#企測結(jié)果 發(fā)送給主處理器。上述多處理器系統(tǒng)中收到檢測指令的處理器在執(zhí)行完故障 檢測后,根據(jù)收到的檢測指令中預(yù)先約定的返回檢測結(jié)果的方式將各自的檢 測結(jié)果發(fā)送給該主處理器。其中,若主處理器在;^測過程中檢測到自身有故 障,則放棄本次檢測的所有檢測結(jié)果,并標明自身有故障,并在下次的主處 理器的指定或更換時,不再當選主處理器。步驟S105,主處理器根據(jù)檢測結(jié)果提取故障信息。例如,主處理器可以 在約定的時間內(nèi)讀取主處理器自身和/或至少一個從處理器發(fā)送的檢測結(jié)果, 根據(jù)檢測結(jié)果是否符合預(yù)先約定的正常狀態(tài),以及是否按時收到檢測結(jié)果, 判斷相應(yīng)的處理器是否工作正常。如果有處理器工作不正常,則提取該處理 器的故障信息,并進行相應(yīng)的處理。上述實施例中的主處理器也可以先向自身發(fā)送所述檢測指令,并根據(jù)所 述主處理器自身返回的檢測結(jié)果分析并判斷所述主處理器自身是否有故障, 如果所述主處理器自身無故障,則再向所述至少一個從處理器發(fā)送所述檢測 指令,并進行下一步處理;如果自身有故障,則由系統(tǒng)管理器選定新的處理 器,并重復(fù)上述步驟。本發(fā)明實施例主要依靠軟件進行故障檢測,降低了多處理器系統(tǒng)的硬件復(fù)雜性和系統(tǒng)成本,增強了故障檢測能力,擴大了故障檢測的范圍。而且這 種改進基本不影響系統(tǒng)的運行,不需要改動或增加硬件。如圖2所示,為本發(fā)明實施例中多處理器系統(tǒng)的結(jié)構(gòu)示意圖,包括主 處理器1和至少一個從處理器2,其中,主處理器1,用于生成檢測指令,向主處理器1和/或至少一個從 處理器2發(fā)送所述檢測指令,接收主處理器1和/或至少一個從處理器2發(fā)送 的檢測結(jié)果,分析所述檢測結(jié)果,并提取主處理器1和/或至少一個從處理器 2中有故障處理器的故障信息。其中,從處理器2,用于接收主處理器l發(fā)送的檢測指令,根據(jù)所述檢測 指令執(zhí)行故障;險測,并在執(zhí)行故障4企測后向主處理器1返回檢測結(jié)果。上述多處理器系統(tǒng),還包括系統(tǒng)管理器3,用于選定主處理器l和從處 理器2。如圖3所示,為本發(fā)明實施例中主處理器的結(jié)構(gòu)示意圖,包括指令生 成模塊ll,用于生成檢測指令。指令發(fā)送模塊12,用于向主處理器l和/或至 少一個從處理器2發(fā)送所述檢測指令。檢測結(jié)果接收模塊13,用于接收主處 理器1和/或至少一個從處理器2發(fā)送的檢測結(jié)果。故障判斷模塊14,用于分 析所述檢測結(jié)果,并提取主處理器1和/或至少一個從處理器2中有故障處理 器的故障信息。上述主處理器,還包括故障標明模塊15,用于當主處理器l檢測到自 身有故障時,則放棄本次接收的所有檢測結(jié)果,并標明自身有故障。如圖4所示,為本發(fā)明實施例中從處理器的結(jié)構(gòu)示意圖,包括指令接 收模塊21,用于接收主處理器l發(fā)送的檢測指令。故障檢測模塊22,用于根 據(jù)所述檢測指令執(zhí)行故障檢測。檢測結(jié)果發(fā)送模塊,用于向主處理器1返回 檢測結(jié)果。本發(fā)明實施例的主處理器主要依靠軟件進行故障檢測,從而降低了多處 理器系統(tǒng)的硬件復(fù)雜性和系統(tǒng)成本,并且所述故障檢測軟件易移植、可升級, 能夠增強和改進故障檢測能力,有利于不斷加強系統(tǒng)的可靠性,而且這種改 進基本不影響系統(tǒng)的運行,不需要改動或增加硬件,另外,本發(fā)明實施例可以在一定程度上覆蓋未知的故障模式,這是硬件檢測手段很難做到的。本領(lǐng)域技術(shù)人員可以理解實施例中的裝置中的模塊可以按照實施例描述 分布于實施例的裝置中,也可以進行相應(yīng)變化位于不同于本實施例的一個或 多個裝置中。上述實施例的模塊可以合并為一個模塊,也可以進一步拆分成 多個子才莫塊。本發(fā)明實施例主要依賴故障軟件檢測多處理器系統(tǒng)的故障,從而降低了 多處理器系統(tǒng)的硬件復(fù)雜性和系統(tǒng)成本,并且所述故障檢測軟件易移植、可 升級,能夠增強和改進故障檢測能力,有利于不斷加強系統(tǒng)的可靠性,而且 這種改進基本不影響系統(tǒng)的運行,不需要改動或增加硬件,另外,本發(fā)明實 施例可以在一定程度上覆蓋未知的故障模式,這是硬件檢測手段很難做到的。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā) 明可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件, 但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術(shù)方案 本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來, 該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算 機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實 施例所述的方法。以上公開的僅為本發(fā)明的幾個具體實施例,但是,本發(fā)明并非局限于此, 任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護范圍。
權(quán)利要求
1、一種檢測多處理器系統(tǒng)故障的方法,其特征在于,包括多處理器系統(tǒng)中被選定的主處理器生成檢測指令,并向所述主處理器自身和/或至少一個從處理器發(fā)送所述檢測指令;所述主處理器接收所述主處理器自身和/或至少一個從處理器發(fā)送的檢測結(jié)果;所述主處理器分析所述檢測結(jié)果,并提取所述主處理器自身和/或至少一個從處理器中有故障處理器的故障信息。
2、 如權(quán)利要求1所述檢測多處理器系統(tǒng)故障的方法,其特征在于,還包括所述多處理器系統(tǒng)的系統(tǒng)管理器從所述多處理器系統(tǒng)中指定一個或多個 處理器作為主處理器,并指定所述多處理器系統(tǒng)中除所述主處理器之外的處 理器作為從處理器;或者,所述系統(tǒng)管理器從所述多處理器系統(tǒng)中選擇未標明自身有故障的 一個或多個處理器作為主處理器,并指定所述多處理器系統(tǒng)中除所述主處理 器之外的處理器作為從處理器。
3、 如權(quán)利要求2所述檢測多處理器系統(tǒng)故障的方法,其特征在于,還包括當所述多個處理器同時作為主處理器時,故障判斷按照多數(shù)一致原則進 行判斷。
4、 如權(quán)利要求1所述檢測多處理器系統(tǒng)故障的方法,其特征在于,所述 檢測指令包括所述主處理器自身和/或至少一個從處理器的檢測方式、檢測范 圍和/或4企測結(jié)果的返回方式。
5、 如權(quán)利要求1或4所述檢測多處理器系統(tǒng)故障的方法,其特征在于, 還包括當所述主處理器檢測到自身有故障時,則放棄本次接收的所有4企測結(jié)果, 并標明自身有故障。
6、 一種檢測多處理器系統(tǒng)故障的系統(tǒng),其特征在于,包括主處理器和至少一個^v處理器,所述主處理器,用于生成4企測指令,向所述主處理器自身和/或至少一個 從處理器發(fā)送所述檢測指令,接收所述主處理器自身和/或至少一個從處理器 發(fā)送的檢測結(jié)果,分析所述檢測結(jié)果,并提取所述主處理器自身和/或至少一 個從處理器中有故障處理器的故障信息。所述從處理器,用于接收所述主處理器發(fā)送的檢測指令,根據(jù)所述檢測 指令執(zhí)行故障檢測,并在執(zhí)行故障檢測后向所述主處理器返回檢測結(jié)果。
7、 如權(quán)利要求6所述檢測多處理器系統(tǒng)故障的系統(tǒng),其特征在于,還包括系統(tǒng)管理器,用于選定所述主處理器和從處理器。
8、 一種主處理器,其特征在于,包括 指令生成模塊,用于生成檢測指令;指令發(fā)送模塊,用于向所述主處理器自身和/或至少一個從處理器發(fā)送所 述檢測指令;檢測結(jié)果接收模塊,用于接收所述主處理器自身和/或至少一個從處理器 發(fā)送的檢測結(jié)果;故障判斷模塊,用于分析所述斥企測結(jié)果,并提取所述主處理器自身和/或 至少一個從處理器中有故障處理器的故障信息。
9、 如權(quán)利要求8所述主處理器,其特征在于,還包括 故障標明模塊,用于當所述主處理器檢測到自身有故障時,則放棄本次接收的所有檢測結(jié)果,并標明自身有故障。
10、 一種從處理器,其特征在于,包括 指令接收模塊,用于接收主處理器發(fā)送的檢測指令; 故障檢測模塊,用于根據(jù)所述檢測指令執(zhí)行故障檢測; 檢測結(jié)果發(fā)送模塊,用于向主處理器返回檢測結(jié)果。
全文摘要
本發(fā)明公開了一種檢測多處理器系統(tǒng)故障的方法、系統(tǒng)和裝置,該方法包括多處理器系統(tǒng)中被選定的主處理器生成檢測指令,并向所述主處理器自身和/或至少一個從處理器發(fā)送所述檢測指令;所述主處理器接收所述主處理器自身和/或至少一個從處理器發(fā)送的檢測結(jié)果;所述主處理器分析所述檢測結(jié)果,并提取所述主處理器自身和/或至少一個從處理器中有故障處理器的故障信息。通過本發(fā)明實施例實現(xiàn)了主要通過軟件檢測多處理器系統(tǒng)的故障,降低了多處理器系統(tǒng)的硬件復(fù)雜性和系統(tǒng)成本,增強了故障檢測能力,擴大了故障檢測的范圍。
文檔編號G06F11/00GK101334744SQ20081008936
公開日2008年12月31日 申請日期2008年4月15日 優(yōu)先權(quán)日2007年12月27日
發(fā)明者鋒 唐, 武紹蕓, 薛蘊全, 亞 鄧 申請人:華為技術(shù)有限公司