異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法及裝置制造方法
【專利摘要】本發(fā)明提供了一種異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法及裝置,其中的方法包括:在X86與FPGA組成的異構(gòu)系統(tǒng)中,按照物理位置和邏輯相關(guān)性對(duì)FPGA進(jìn)行邏輯區(qū)域劃分,并在FPGA中預(yù)設(shè)故障分類判斷,對(duì)故障進(jìn)行識(shí)別;當(dāng)?shù)谝煌烦霈F(xiàn)故障時(shí),在X86啟用第二通路作為備份鏈路的同時(shí),第三通路根據(jù)所劃分的邏輯區(qū)域向FPGA反饋故障類別,并且X86通過向ARM發(fā)出故障診斷指令對(duì)第一通路進(jìn)行故障診斷;在FPGA中,對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行定位,然后由ARM發(fā)出恢復(fù)指令并通過第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位,以完成異構(gòu)系統(tǒng)故障的恢復(fù)。通過本發(fā)明能夠?qū)崿F(xiàn)備份FPGA與X86之間的通信控制鏈路、獲取故障診斷信息以及恢復(fù)偶發(fā)性故障,提高系統(tǒng)故障的調(diào)試能力和穩(wěn)定運(yùn)行能力。
【專利說明】異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及異構(gòu)系統(tǒng)【技術(shù)領(lǐng)域】,更為具體地,涉及一種異構(gòu)系統(tǒng)的故障診斷、恢復(fù) 方法及裝置。
【背景技術(shù)】
[0002]異構(gòu)系統(tǒng)被視為計(jì)算機(jī)處理器繼單核和多核之后的第三個(gè)時(shí)代,其能夠?qū)崿F(xiàn)不同 類型指令集和體系架構(gòu)的計(jì)算單元之間的協(xié)同計(jì)算和彼此加速,從而突破CPU的發(fā)展瓶 頸,有效解決能耗和系統(tǒng)的擴(kuò)展性問題。
[0003]在X86系統(tǒng)與FPGA (Field Programmable Gate Array,現(xiàn)場(chǎng)可編程邏輯門陣列) 系統(tǒng)兩者結(jié)合的異構(gòu)系統(tǒng)中,X86系統(tǒng)能夠?qū)Ξ悩?gòu)系統(tǒng)起到主要控制作用,并維護(hù)整個(gè)異構(gòu) 系統(tǒng)的正常工作;而FPGA系統(tǒng)由于其精準(zhǔn)的時(shí)序控制,能夠提升異構(gòu)系統(tǒng)的性能,但其需 要X86系統(tǒng)的控制和維護(hù)來保證持續(xù)正常的運(yùn)行。
[0004]在X86系統(tǒng)與FPGA系統(tǒng)的交互過程中,由于FPGA器件接口數(shù)量的限制,往往集中 資源專注于對(duì)外處理,而對(duì)于其內(nèi)部控制通路常常因?yàn)槿哂啻鷥r(jià)太大,一般只設(shè)一個(gè)冗余 鏈路,如此便抑制了冗余鏈路的保障效果。
[0005]為了保障FPGA系統(tǒng)穩(wěn)定的受控于X86系統(tǒng),則需要設(shè)置多個(gè)冗余鏈路。也就是說, 需要消耗較大代價(jià)進(jìn)行控制通路冗余。即便如此,也不能夠保障FPGA系統(tǒng)的穩(wěn)定受控。因 為控制數(shù)據(jù)總會(huì)到達(dá)同一個(gè)控制點(diǎn),當(dāng)FPGA系統(tǒng)出現(xiàn)較為嚴(yán)重的全局故障時(shí),就可能會(huì)導(dǎo) 致所有的冗余鏈路均告失效,從而造成FPGA系統(tǒng)整個(gè)控制通路出現(xiàn)故障。
[0006]在X86系統(tǒng)與FPGA系統(tǒng)兩者結(jié)合的異構(gòu)系統(tǒng)中,一旦控制通路出現(xiàn)故障,即會(huì)出 現(xiàn)X86系統(tǒng)對(duì)FPGA系統(tǒng)的控制和維護(hù)問題,從而使整個(gè)FPGA系統(tǒng)失去持續(xù)正常的工作能 力,也無法再?gòu)腦86系統(tǒng)獲得控制類數(shù)據(jù),使故障的排查和分析遇到困難,從而增加調(diào)試問 題的成本。
【發(fā)明內(nèi)容】
[0007]鑒于上述問題,本發(fā)明的目的是提供一種異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法及裝置, 以實(shí)現(xiàn)對(duì)FPGA的通信控制鏈路的備份、故障診斷信息的獲取和偶發(fā)性故障的恢復(fù),提高系 統(tǒng)故障的調(diào)試能力和穩(wěn)定運(yùn)行能力。
[0008]根據(jù)本發(fā)明的一個(gè)方面,提供一種異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法,包括:
[0009]在X86與FPGA組成的異構(gòu)系統(tǒng)中,按照物理位置和邏輯相關(guān)性對(duì)FPGA進(jìn)行邏輯 區(qū)域劃分,并在FPGA中預(yù)設(shè)故障分類判斷,對(duì)故障進(jìn)行分類識(shí)別;
[0010]當(dāng)作為正常情況下的X86與FPGA之間的通信通路的第一通路出現(xiàn)故障時(shí),X86啟 用第二通路作為X86與FPGA通信控制的備份鏈路;其中,X86通過第二通路向ARM發(fā)出指 令,然后再通過ARM實(shí)現(xiàn)對(duì)FPGA的通信控制;其中,
[0011]在X86啟用第二通路的同時(shí),第三通路根據(jù)所劃分的邏輯區(qū)域向FPGA反饋故障類 另IJ,并且X86通過向ARM發(fā)出故障診斷指令對(duì)第一通路進(jìn)行故障診斷;[0012]在FPGA中,根據(jù)所述ARM對(duì)所述第一通路的故障診斷結(jié)果對(duì)發(fā)生故障的邏輯區(qū)域 進(jìn)行定位,然后由ARM發(fā)出恢復(fù)指令并通過第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位,以 完成對(duì)異構(gòu)系統(tǒng)的故障恢復(fù)。
[0013]其中,在X86通過向ARM發(fā)出故障診斷指令對(duì)第一通路進(jìn)行故障診斷的過程中, X86通過預(yù)設(shè)的故障處理方案,向ARM發(fā)出故障診斷指令對(duì)FPGA中出現(xiàn)的故障進(jìn)行診斷。
[0014]其中,在通過第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位的過程中,將發(fā)生故障的 邏輯區(qū)域與未發(fā)生故障的邏輯區(qū)域進(jìn)行分隔,實(shí)現(xiàn)只對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位。
[0015]另一方面,本發(fā)明還提供一種異構(gòu)系統(tǒng)的故障診斷、恢復(fù)裝置,包括:
[0016]故障分類單元,用于在X86與FPGA組成的異構(gòu)系統(tǒng)中,按照物理位置和邏輯相關(guān) 性對(duì)FPGA進(jìn)行邏輯區(qū)域劃分,并在FPGA中預(yù)設(shè)故障分類判斷,對(duì)故障進(jìn)行分類識(shí)別;
[0017]備份鏈路啟用單元,用于當(dāng)作為正常情況下的X86與FPGA之間的通信通路的第一 通路出現(xiàn)故障時(shí),第三通路根據(jù)所劃分的邏輯區(qū)域向FPGA反饋故障類別,然后X86啟用第 二通路作為X86與FPGA通信控制的備份鏈路;其中,X86通過第二通路向ARM發(fā)出指令,然 后再通過ARM實(shí)現(xiàn)對(duì)FPGA的通信控制;
[0018]故障診斷單元,用于在X86啟用第二通路的同時(shí),第三通路根據(jù)所劃分的邏輯區(qū) 域向FPGA反饋故障類別,并且X86通過向ARM發(fā)出故障診斷指令對(duì)第一通路進(jìn)行故障診 斷;
[0019]故障恢復(fù)單元,用于在FPGA中,根據(jù)所述ARM對(duì)所述第一通路的故障診斷結(jié)果對(duì) 發(fā)生故障的邏輯區(qū)域進(jìn)行定位,然后由ARM發(fā)出恢復(fù)指令并通過第三通路對(duì)發(fā)生故障的邏 輯區(qū)域進(jìn)行復(fù)位,以完成對(duì)異構(gòu)系統(tǒng)的故障恢復(fù)。
[0020]上述根據(jù)本發(fā)明的異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法及裝置,通過利用獨(dú)立于X86 與FPGA的第三方ARM,能夠?qū)崿F(xiàn)備份FPGA與X86之間的通信控制鏈路、獲取故障診斷信息 以及恢復(fù)偶發(fā)性故障,提高系統(tǒng)故障的調(diào)試能力和穩(wěn)定運(yùn)行能力。
[0021]為了實(shí)現(xiàn)上述以及相關(guān)目的,本發(fā)明的一個(gè)或多個(gè)方面包括后面將詳細(xì)說明并在 權(quán)利要求中特別指出的特征。下面的說明以及附圖詳細(xì)說明了本發(fā)明的某些示例性方面。 然而,這些方面指示的僅僅是可使用本發(fā)明的原理的各種方式中的一些方式。此外,本發(fā)明 旨在包括所有這些方面以及它們的等同物。
【專利附圖】
【附圖說明】
[0022]通過參考以下結(jié)合附圖的說明及權(quán)利要求書的內(nèi)容,并且隨著對(duì)本發(fā)明的更全面 理解,本發(fā)明的其它目的及結(jié)果將更加明白及易于理解。在附圖中:
[0023]圖1為根據(jù)本發(fā)明實(shí)施例的異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法流程示意圖;
[0024]圖2為根據(jù)本發(fā)明實(shí)施例的各通信通路之間的連接關(guān)系示意圖;
[0025]圖3為根據(jù)本發(fā)明實(shí)施例的Cam表模塊結(jié)構(gòu)示意圖;
[0026]圖4為根據(jù)本發(fā)明實(shí)施例的異構(gòu)系統(tǒng)的故障診斷、恢復(fù)裝置邏輯結(jié)構(gòu)框圖。
[0027]在所有附圖中相同的標(biāo)號(hào)指示相似或相應(yīng)的特征或功能。
【具體實(shí)施方式】
[0028]以下將結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施例進(jìn)行詳細(xì)描述。[0029]針對(duì)前述現(xiàn)有的X86與FPGA兩者結(jié)合的異構(gòu)系統(tǒng)在控制通路出現(xiàn)故障時(shí),F(xiàn)PGA無 法從X86中獲得控制類數(shù)據(jù),造成FPGA故障排查的難度和增加調(diào)試問題的成本的問題。本 發(fā)明利用獨(dú)立于X86與FPGA的第三方ARM(Advanced RISC Microprocessor,高級(jí)RISC微 處理器),從而創(chuàng)造一個(gè)額外的控制通路,作為X86與FPGA之間的備用通信通路,以承載X86 對(duì)FPGA的一切操作,并且還可監(jiān)控FPGA的狀態(tài),起到輔助控制FPGA的作用。通過本發(fā)明 能夠?qū)崿F(xiàn)備份FPGA與X86之間的通信控制鏈路、獲取故障診斷信息以及恢復(fù)偶發(fā)性故障, 提高系統(tǒng)故障的調(diào)試能力和穩(wěn)定運(yùn)行能力。
[0030]為了說明本發(fā)明提供的異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法,圖1示出了根據(jù)本發(fā)明 實(shí)施例的異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法流程。
[0031]如圖1所示,本發(fā)明提供的異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法包括:
[0032]SllO:在X86與FPGA組成的異構(gòu)系統(tǒng)中,按照物理位置和邏輯相關(guān)性對(duì)FPGA進(jìn)行 邏輯區(qū)域劃分,并在FPGA中預(yù)設(shè)故障分類判斷,對(duì)故障進(jìn)行分類識(shí)別。
[0033]具體地,對(duì)有可能發(fā)生故障的情形進(jìn)行分類,并在FPGA中內(nèi)置判斷條件來判斷發(fā) 生故障的邏輯區(qū)域的故障類別。其中,以接口形態(tài)為例,對(duì)于f ifo接口,可根據(jù)空/滿讀寫 以及數(shù)據(jù)狀態(tài)作為判斷條件,看是否出現(xiàn)不符合邏輯的狀態(tài),比如空讀、滿寫、非空不讀等 等;對(duì)于查表類總線接口,根據(jù)總線的請(qǐng)求和回復(fù)的使能配合的拍數(shù),來查看是否有效地返 回了查表數(shù)據(jù),比如有請(qǐng)求沒有回復(fù),回復(fù)時(shí)機(jī)不正確等等;而對(duì)于復(fù)雜外設(shè)接口,由于在 調(diào)用復(fù)雜外設(shè)接口時(shí),往往使用現(xiàn)有成熟的核,這類核除了會(huì)用到上述兩種接口外,還會(huì)提 供自身的協(xié)商狀態(tài)等信號(hào),通過檢查協(xié)商狀態(tài)是否成功來判斷接口是否正常。
[0034]而對(duì)于模型類的故障判斷,則可根據(jù)模型的類別分別預(yù)設(shè)不同的判斷條件對(duì)其故 障類別進(jìn)行判斷。具體地,對(duì)于數(shù)據(jù)信息分離模型,可以通過增加令牌標(biāo)志等,來觀察數(shù)據(jù) 和信息是否匹配,從而確定是否出現(xiàn)失配異常。
[0035]對(duì)于傳輸接口模型,如果是對(duì)外傳輸接口,按照網(wǎng)絡(luò)協(xié)議增加標(biāo)準(zhǔn)的校驗(yàn)和進(jìn)行 處理,保證報(bào)文傳輸正確;如果是對(duì)內(nèi)傳輸接口,則可以設(shè)定自己的校驗(yàn)方法,特殊處理錯(cuò) 誤報(bào)文,其中,當(dāng)出現(xiàn)大量錯(cuò)誤報(bào)文時(shí),則有可能發(fā)生了錯(cuò)誤。
[0036]對(duì)于令牌模型,由于其主要是對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),然后反復(fù)提取信息進(jìn)行多次處理, 最終提供處理結(jié)果,因此,主要對(duì)令牌的使用和回收進(jìn)行觀察跟蹤,當(dāng)令牌耗盡或擁塞時(shí), 即表明出現(xiàn)了問題。
[0037]對(duì)于全交叉模型,由于全交叉模型的交換比較復(fù)雜,其選路是使用特定標(biāo)志,因 此,可以檢查標(biāo)志是否正確,不正確的標(biāo)志需要特殊處理,以免無法選路導(dǎo)致全交叉通路阻塞。
[0038]S120:當(dāng)作為正常情況下的X86與FPGA之間的通信通路的第一通路出現(xiàn)故障時(shí), X86啟用第二通路作為X86與FPGA通信控制的備份鏈路;其中,X86通過第二通路向ARM發(fā) 出指令,然后再通過ARM實(shí)現(xiàn)對(duì)FPGA的通信控制;其中,在X86啟用第二通路的同時(shí),第三 通路根據(jù)所劃分的邏輯區(qū)域向FPGA反饋故障類別,并且X86通過向ARM發(fā)出故障診斷指令 對(duì)第一通路進(jìn)行故障診斷。
[0039]在此,需要說明的是,本發(fā)明所提及的第一通路為正常情況下的X86與FPGA之間 的通信通路;第二通路為將ARM作為中轉(zhuǎn)站所實(shí)現(xiàn)的X86與FPGA之間的備用通信通路;第 三通路為FPGA的故障監(jiān)測(cè)反饋通路,以及對(duì)發(fā)生故障的邏輯區(qū)域發(fā)出復(fù)位指令的通路。[0040]通常X86與FPGA之間都是使用第一通路進(jìn)行通信,但是當(dāng)?shù)谝煌烦霈F(xiàn)故障時(shí) (即X86與FPGA之間的通信失敗時(shí)),則啟用第二通路作為備用通信通路,實(shí)現(xiàn)X86與FPGA 之間的通信。此時(shí)第二通路分別與X86、ARM和FPGA相連。也就是說,在啟用第二通路時(shí), ARM就相當(dāng)于一個(gè)信息的中轉(zhuǎn)站,其接收X86發(fā)出的控制信息,然后再發(fā)送給FPGA,從而實(shí) 現(xiàn)X86對(duì)FPGA的通信控制。
[0041]其中,在X86通過向ARM發(fā)出故障診斷指令對(duì)第一通路進(jìn)行故障診斷的過程中, X86通過預(yù)設(shè)的故障處理方案,向ARM發(fā)出故障診斷指令對(duì)FPGA中出現(xiàn)的故障進(jìn)行診斷。
[0042]具體地,在啟用第二通路的同時(shí),X86還需按預(yù)設(shè)的處理方案,通過向ARM發(fā)出故 障診斷指令來診斷FPGA所出現(xiàn)的故障(即對(duì)第一通路進(jìn)行故障診斷)。也就是說,ARM在接 收到X86所發(fā)出的指令后,即開始故障診斷。
[0043]另外,由于第二通路是作為X86與FPGA之間的備用通信通路,因此,原來通過第一 通路所獲得的FPGA的配置信息和狀態(tài)信息,ARM通過第二通路同樣能夠獲得,在獲得這些 信息之后,調(diào)試人員即可進(jìn)一步分析故障發(fā)生的原因,從而為故障的定位和恢復(fù)提供更多 的信息。
[0044]S130:在FPGA中,根據(jù)ARM對(duì)第一通路的故障診斷結(jié)果對(duì)發(fā)生故障的邏輯區(qū)域進(jìn) 行定位,然后由ARM發(fā)出恢復(fù)指令并通過第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位,以完 成對(duì)異構(gòu)系統(tǒng)的故障恢復(fù)。
[0045]具體地,在對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行定位后,根據(jù)故障的類別,通過ARM的預(yù)設(shè) 處理方案,通過第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位,實(shí)現(xiàn)對(duì)故障的恢復(fù);或者使用 X86額外定制的其他故障恢復(fù)方案,通過第二通路發(fā)送給ARM,再由ARM對(duì)恢復(fù)方案進(jìn)行分 解,然后再通過第三通路發(fā)送給FPGA,完成對(duì)故障的恢復(fù)。
[0046]也就是說,根據(jù)第三通路所反饋的故障類別,通過在ARM中預(yù)設(shè)恢復(fù)方案,并通過 第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位;或者,通過在X86中預(yù)設(shè)恢復(fù)方案,然后通過第 二通路將預(yù)設(shè)的恢復(fù)方案發(fā)送給ARM,再由ARM將所發(fā)送的恢復(fù)方案進(jìn)行分解,并通過第三 通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位。
[0047]通過圖1所示的流程可以看出,本發(fā)明提供的異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法通 過獨(dú)立于X86與FPGA的第三方ARM,能夠?qū)崿F(xiàn)備份FPGA與X86之間的通信控制鏈路、獲取 故障診斷信息以及恢復(fù)偶發(fā)性故障,提高系統(tǒng)故障的調(diào)試能力和穩(wěn)定運(yùn)行能力。
[0048]為了說明X86、ARM和FPGA以及第一通路、第二通路和第三通路之間的關(guān)系,圖2 示出了根據(jù)本發(fā)明實(shí)施例的各通信通路之間的連接關(guān)系。
[0049]如圖2所示,首先按照物理位置和邏輯相關(guān)性,將FPGA分隔成幾個(gè)較為獨(dú)立的邏 輯區(qū)域(即對(duì)FPGA進(jìn)行邏輯區(qū)域劃分),然后所劃分的邏輯區(qū)域通過C通路(即第三通路)向 FPGA的故障監(jiān)控模塊反饋故障類別,接著FPGA的故障監(jiān)控模塊將故障類別通過B通路發(fā)送 給ARM的故障信息收集模塊,再經(jīng)由ARM的故障信息收集模塊通過B通路發(fā)送給X86的業(yè) 務(wù)維護(hù)模塊。
[0050]X86的業(yè)務(wù)維護(hù)模塊實(shí)現(xiàn)對(duì)FPGA的控制,其在正常情況下通過A通路(即第一通 路)實(shí)現(xiàn)X86與FPGA之間的通信控制。當(dāng)A通路出現(xiàn)故障時(shí),X86則啟用B通路(即第二通 路)作為備用通信通路,實(shí)現(xiàn)X86與FPGA之間的通信控制,此時(shí)ARM即相當(dāng)于一個(gè)中轉(zhuǎn)站, 其接收X86的控制信息并轉(zhuǎn)發(fā)給FPGA。[0051]在X86啟用B通路的同時(shí),X86的業(yè)務(wù)維護(hù)模塊通過B通路將預(yù)設(shè)的故障解決方案 發(fā)送給ARM的故障信息搜集模塊,ARM的故障信息收集模塊再將X86所發(fā)送過來的解決方案 進(jìn)行分解,然后再經(jīng)由B通路將恢復(fù)指令發(fā)送給FPGA的故障監(jiān)控模塊,F(xiàn)PGA的故障監(jiān)控模 塊通過C通路,將按故障類別對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位,以完成對(duì)系統(tǒng)故障的恢復(fù)。
[0052]需要說明的是,在通過第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位的過程中,將發(fā) 生故障的邏輯區(qū)域與未發(fā)生故障的邏輯區(qū)域進(jìn)行分隔,實(shí)現(xiàn)只對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行 復(fù)位,以完成系統(tǒng)故障的恢復(fù)。
[0053]其中,異構(gòu)系統(tǒng)故障的恢復(fù)可以解決的問題一般需滿足如下特征:FPGA中的問題 和無法靠FPGA內(nèi)部邏輯進(jìn)行自恢復(fù)的問題以及偶發(fā)性故障,例如電磁干擾、偶發(fā)性Bug等
坐 寸o
[0054]在本發(fā)明的一個(gè)示例中,以katyusha項(xiàng)目中的Cam表模塊為例,其Cam表模塊結(jié) 構(gòu)如圖3所示。其中,Cam表的輸入數(shù)據(jù)、輸出數(shù)據(jù)、輸入配置和輸出異常四個(gè)接口都是fifo 接口 ;Cam表相對(duì)獨(dú)立,處理數(shù)據(jù)中的mac地址,vlan等信息,用于從片外存儲(chǔ)中讀/寫/查 找信息,并將信息返回相關(guān)信息給Cam表。
[0055]首先對(duì)Cam表進(jìn)行邏輯區(qū)域劃分,由于其邏輯相關(guān)性較小,因此只需從模塊間的 分隔fifo劃開即可。
[0056]劃分邏輯區(qū)域之后,一般的故障識(shí)別只需簡(jiǎn)單地從邏輯區(qū)域邊緣檢查,來判定全 局檢查設(shè)備是否正常運(yùn)行或者有阻斷故障,監(jiān)控外部fifo接口(即輸入數(shù)據(jù)、輸出數(shù)據(jù)、輸 入配置和輸出異常四個(gè)接口),按照fifo接口的監(jiān)控邏輯檢查數(shù)據(jù)和接口狀態(tài)即可,而在本 發(fā)明中,除了對(duì)一般的故障進(jìn)行識(shí)別外,還可在劃分的邏輯區(qū)域內(nèi)進(jìn)一步預(yù)設(shè)故障分類判 斷,對(duì)故障進(jìn)行進(jìn)一步分類識(shí)別。
[0057]其中,將Cam表模塊細(xì)分為二級(jí)模塊,各個(gè)二級(jí)模塊和存儲(chǔ)單元間也可做同理劃 分。具體地:
[0058]首先,在各個(gè)二級(jí)模塊之間,以及二級(jí)模塊和存儲(chǔ)單元之間,按fifo接口識(shí)別,定 制普通的fifo接口類故障;
[0059]其次,提取數(shù)據(jù)進(jìn)行查表,并將查表結(jié)果反饋到報(bào)文中,按數(shù)據(jù)信息分離模型識(shí) 另1J,定制Cam表模塊內(nèi)部數(shù)據(jù)和查表信息的匹配檢查;
[0060]最后,在模塊邏輯和片外存儲(chǔ)之間,按照復(fù)雜外設(shè)接口類進(jìn)行檢查,一方面檢查外 設(shè)狀態(tài),同時(shí)根據(jù)部分私有數(shù)據(jù)檢查查表信息返回是否正常。
[0061]在找出Cam表的故障之后,對(duì)其進(jìn)行恢復(fù),在對(duì)Cam表進(jìn)行恢復(fù)時(shí)需要注意四點(diǎn): 1、數(shù)據(jù)流的阻斷,不能使數(shù)據(jù)損壞;2、配置包的阻斷,不能使配置數(shù)據(jù)損壞;3、外接存儲(chǔ)器 件的初始化;4、報(bào)文的存儲(chǔ),外部包體存儲(chǔ)空間的釋放。其具體恢復(fù)步驟如下:
[0062]1、入口的fifo數(shù)據(jù)處理完,之后暫停處理,出口 fifo同理,不再寫入,這樣能保證 在阻斷數(shù)據(jù)流時(shí),不使數(shù)據(jù)損壞和在阻斷配置包時(shí),不使配置數(shù)據(jù)損壞。
[0063]2、外接存儲(chǔ)器件設(shè)置初始化邏輯,復(fù)位后啟動(dòng),進(jìn)行初始化,不殘留任何數(shù)據(jù),保 證外接存儲(chǔ)器件的初始化。
[0064]3、然后放開出入口 fifo,也是為了保證阻斷數(shù)據(jù)流和配置包時(shí),不使數(shù)據(jù)和配置 數(shù)據(jù)損壞。
[0065]4、存儲(chǔ)空間釋放方面,需要存儲(chǔ)模塊支持超時(shí)釋放功能,保證報(bào)文的存儲(chǔ)以及外部包體存儲(chǔ)空間的釋放。
[0066]通過上述示例可以看出,在對(duì)Cam表模塊進(jìn)行完全恢復(fù)時(shí),不殘留任何數(shù)據(jù),同時(shí) 殘留在存儲(chǔ)模塊的部分信息也能通過超時(shí)刪除掉。
[0067]與上述方法相對(duì)應(yīng),本發(fā)明還提供一種異構(gòu)系統(tǒng)的故障診斷裝置,圖4示出了根 據(jù)本發(fā)明實(shí)施例的異構(gòu)系統(tǒng)的故障診斷裝置邏輯結(jié)構(gòu)。
[0068]如圖4所示,本發(fā)明提供的異構(gòu)系統(tǒng)的故障診斷、恢復(fù)裝置包括故障分類單元 410、備份鏈路啟用單元420、故障診斷單元430和故障恢復(fù)單元440。
[0069]其中,故障分類單元410用于在X86與FPGA組成的異構(gòu)系統(tǒng)中,按照物理位置和 邏輯相關(guān)性對(duì)FPGA進(jìn)行邏輯區(qū)域劃分,并在FPGA中預(yù)設(shè)故障分類判斷,對(duì)故障進(jìn)行分類識(shí) 別。
[0070]具體地,故障分類單元410需要對(duì)有可能發(fā)生故障的情形進(jìn)行分類,并在FPGA中 內(nèi)置判斷條件來判斷發(fā)生故障的邏輯區(qū)域的故障類別。
[0071]以接口形態(tài)為例,對(duì)于fifo接口,故障分類單元410可根據(jù)空/滿讀寫以及數(shù)據(jù) 狀態(tài)作為判斷條件,看是否出現(xiàn)不符合邏輯的狀態(tài),比如空讀、滿寫、非空不讀等等;對(duì)于查 表類總線接口,根據(jù)總線的請(qǐng)求和回復(fù)的使能配合的拍數(shù),來查看是否有效地返回了查表 數(shù)據(jù),比如有請(qǐng)求沒有回復(fù),回復(fù)時(shí)機(jī)不正確等等;而對(duì)于復(fù)雜外設(shè)接口,由于在調(diào)用復(fù)雜 外設(shè)接口時(shí),往往使用現(xiàn)有成熟的核,這類核除了會(huì)用到上述兩種接口外,還會(huì)提供自身的 協(xié)商狀態(tài)等信號(hào),通過檢查協(xié)商狀態(tài)是否成功來判斷接口是否正常。
[0072]對(duì)于其他類型的故障判斷,也可根據(jù)故障的類型在FPGA中內(nèi)置相應(yīng)的判斷條件 來判斷發(fā)生故障的邏輯區(qū)域的故障類別,在此不再贅述。
[0073]其中,故障分類單元410還包括:故障判斷單元(圖中未示出),用于在劃分的邏輯 區(qū)域內(nèi)進(jìn)一步預(yù)設(shè)故障分類判斷,對(duì)故障進(jìn)行進(jìn)一步分類識(shí)別。在劃分的邏輯區(qū)域內(nèi)進(jìn)一 步預(yù)設(shè)故障分類判斷更有利于分析更深層的故障,從而能夠更準(zhǔn)確的對(duì)故障進(jìn)行定位。
[0074]備份鏈路啟用單元420用于當(dāng)作為正常情況下的X86與FPGA之間的通信通路的 第一通路出現(xiàn)故障時(shí),X86啟用第二通路作為X86與FPGA通信控制的備份鏈路;其中,X86 通過第二通路向ARM發(fā)出指令,然后再通過ARM實(shí)現(xiàn)對(duì)FPGA的通信控制。
[0075]具體地,通常X86與FPGA之間都是使用第一通路進(jìn)行通信,但是當(dāng)?shù)谝煌烦霈F(xiàn) 故障時(shí)(即X86與FPGA之間的通信失敗時(shí)),備份鏈路啟用單元420則啟用第二通路作為備 用通信通路,實(shí)現(xiàn)X86與FPGA之間的通信。此時(shí)第二通路分別與X86、ARM和FPGA相連,而 ARM就相當(dāng)于信息的中轉(zhuǎn)站,其接收X86發(fā)出的控制信息,然后再發(fā)送給FPGA,從而實(shí)現(xiàn)X86 對(duì)FPGA的通信控制。
[0076]故障診斷單元430用于在X86啟用第二通路的同時(shí),第三通路根據(jù)所劃分的邏輯 區(qū)域向FPGA反饋故障類別,并且X86通過向ARM發(fā)出故障診斷指令對(duì)第一通路進(jìn)行故障診 斷。
[0077]具體地,故障診斷單元430在啟用第二通路的同時(shí),X86通過向ARM發(fā)出故障診斷 指令對(duì)第一通路進(jìn)行故障診斷的過程中,X86通過預(yù)設(shè)的故障處理方案,向ARM發(fā)出故障診 斷指令對(duì)FPGA中出現(xiàn)的故障進(jìn)行診斷。
[0078]故障恢復(fù)單元440用于在FPGA中,根據(jù)所述ARM對(duì)所述第一通路的故障診斷結(jié)果 對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行定位,然后由ARM發(fā)出恢復(fù)指令并通過第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位,以完成對(duì)異構(gòu)系統(tǒng)的故障恢復(fù)。
[0079]其中,故障恢復(fù)單元440進(jìn)一步包括:故障隔離單元(圖中未示出),用于在通過第 三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位的過程中,將發(fā)生故障的邏輯區(qū)域與未發(fā)生故障的 邏輯區(qū)域進(jìn)行分隔,實(shí)現(xiàn)只對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位。
[0080]具體地,故障恢復(fù)單元440通過如下方式完成對(duì)異構(gòu)系統(tǒng)的故障恢復(fù):根據(jù)第三 通路所反饋的故障類別,通過在ARM中預(yù)設(shè)恢復(fù)方案,并通過第三通路對(duì)發(fā)生故障的邏輯 區(qū)域進(jìn)行復(fù)位;或者,通過在X86中預(yù)設(shè)恢復(fù)方案,然后通過第二通路將預(yù)設(shè)的恢復(fù)方案發(fā) 送給ARM,再由ARM將所發(fā)送的恢復(fù)方案進(jìn)行分解,并通過第三通路對(duì)發(fā)生故障的邏輯區(qū)域 進(jìn)行復(fù)位。
[0081]根據(jù)上述實(shí)施例可以看出,本發(fā)明提供的異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法及裝置, 通過利用第三方系統(tǒng)——ARM,能夠?qū)崿F(xiàn)對(duì)FPGA與X86之間的通信鏈路進(jìn)行備份、以及通過 ARM獲取的故障診斷信息對(duì)故障進(jìn)行恢復(fù),從而提高異構(gòu)系統(tǒng)故障的調(diào)試能力和穩(wěn)定運(yùn)行 能力。
[0082]如上參照附圖以示例的方式描述了根據(jù)本發(fā)明的異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法 及裝置。但是,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,對(duì)于上述本發(fā)明所提出的異構(gòu)系統(tǒng)的故障診斷、 恢復(fù)方法及裝置,還可以在不脫離本
【發(fā)明內(nèi)容】
的基礎(chǔ)上做出各種改進(jìn)。因此,本發(fā)明的保護(hù) 范圍應(yīng)當(dāng)由所附的權(quán)利要求書的內(nèi)容確定。
【權(quán)利要求】
1.一種異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法,包括:在X86與FPGA組成的異構(gòu)系統(tǒng)中,按照物理位置和邏輯相關(guān)性對(duì)FPGA進(jìn)行邏輯區(qū)域劃分,并在FPGA中預(yù)設(shè)故障分類判斷,對(duì)故障進(jìn)行分類識(shí)別;當(dāng)作為正常情況下的X86與FPGA之間的通信通路的第一通路出現(xiàn)故障時(shí),X86啟用第二通路作為X86與FPGA通信控制的備份鏈路;其中,X86通過所述第二通路向ARM發(fā)出指令,然后再通過ARM實(shí)現(xiàn)對(duì)FPGA的通信控制;其中,在X86啟用所述第二通路的同時(shí),第三通路根據(jù)所劃分的邏輯區(qū)域向FPGA反饋故障類另IJ,并且X86通過向ARM發(fā)出故障診斷指令對(duì)所述第一通路進(jìn)行故障診斷;在FPGA中,根據(jù)所述ARM對(duì)所述第一通路的故障診斷結(jié)果對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行定位,然后由ARM發(fā)出恢復(fù)指令并通過所述第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位,以完成對(duì)異構(gòu)系統(tǒng)的故障恢復(fù)。
2.如權(quán)利要求1所述的異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法,其中,在X86通過向ARM發(fā)出故障診斷指令對(duì)所述第一通路進(jìn)行故障診斷的過程中,X86通過預(yù)設(shè)的故障處理方案,向ARM發(fā)出故障診斷指令對(duì)FPGA中出現(xiàn)的故障進(jìn)行診斷。
3.如權(quán)利要求1所述的異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法,其中,根據(jù)所述第三通路所反饋的故障類別,通過在ARM中預(yù)設(shè)恢復(fù)方案,并通過第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位;或者,通過在X86中預(yù)設(shè)恢復(fù)方案,然后通過第二通路將預(yù)設(shè)的恢復(fù)方案發(fā)送給ARM,再由 ARM將所發(fā)送的恢復(fù)方案進(jìn)行分解,并通過第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位。
4.如權(quán)利要求1所述的異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法,其中,在通過所述第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位的過程中,將發(fā)生故障的邏輯區(qū)域與未發(fā)生故障的邏輯區(qū)域進(jìn)行分隔,實(shí)現(xiàn)只對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位。
5.如權(quán)利要求1所述的異構(gòu)系統(tǒng)的故障診斷、恢復(fù)方法,其中,在劃分的邏輯區(qū)域內(nèi)進(jìn)一步預(yù)設(shè)故障分類判斷,對(duì)故障進(jìn)行進(jìn)一步分類識(shí)別。
6.一種異構(gòu)系統(tǒng)的故障診斷、恢復(fù)裝置,包括:故障分類單元,用于在X86與FPGA組成的異構(gòu)系統(tǒng)中,按照物理位置和邏輯相關(guān)性對(duì) FPGA進(jìn)行邏輯區(qū)域劃分,并在FPGA中預(yù)設(shè)故障分類判斷,對(duì)故障進(jìn)行分類識(shí)別;備份鏈路啟用單元,用于當(dāng)作為正常情況下的X86與FPGA之間的通信通路的第一通路出現(xiàn)故障時(shí),X86啟用第二通路作為X86與FPGA通信控制的備份鏈路;其中,X86通過所述第二通路向ARM發(fā)出指令,然后再通過ARM實(shí)現(xiàn)對(duì)FPGA的通信控制;故障診斷單元,用于在X86啟用所述第二通路的同時(shí),第三通路根據(jù)所劃分的邏輯區(qū)域向FPGA反饋故障類別,并且X86通過向ARM發(fā)出故障診斷指令對(duì)所述第一通路進(jìn)行故障診斷;故障恢復(fù)單元,用于在FPGA中,根據(jù)所述ARM對(duì)所述第一通路的故障診斷結(jié)果對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行定位,然后由ARM發(fā)出恢復(fù)指令并通過所述第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位,以完成對(duì)異構(gòu)系統(tǒng)的故障恢復(fù)。
7.如權(quán)利要求6所述的異構(gòu)系統(tǒng)的故障診斷、 恢復(fù)裝置,其中,所述故障診斷單元對(duì)所述第一通路進(jìn)行故障診斷的過程中,X86通過預(yù)設(shè)的故障處理方案,向ARM發(fā)出故障診斷指令對(duì)FPGA中出現(xiàn)的故障進(jìn)行診斷。
8.如權(quán)利要求6所述的異構(gòu)系統(tǒng)的故障診斷、恢復(fù)裝置,其中,所述故障恢復(fù)單元通過如下方式完成對(duì)異構(gòu)系統(tǒng)的故障恢復(fù):根據(jù)所述第三通路所反饋的故障類別,通過在ARM中預(yù)設(shè)恢復(fù)方案,并通過第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位;或者,通過在X86中預(yù)設(shè)恢復(fù)方案,然后通過第二通路將預(yù)設(shè)的恢復(fù)方案發(fā)送給ARM,再由 ARM將所發(fā)送的恢復(fù)方案進(jìn)行分解,并通過第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位。
9.如權(quán)利要求6所述的異構(gòu)系統(tǒng)的診斷、恢復(fù)裝置,其中,所述故障恢復(fù)單元進(jìn)一步包括:故障隔離單元,用于在通過所述第三通路對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位的過程中, 將發(fā)生故障的邏輯區(qū)域與未發(fā)生故障的邏輯區(qū)域進(jìn)行分隔,實(shí)現(xiàn)只對(duì)發(fā)生故障的邏輯區(qū)域進(jìn)行復(fù)位。
10.如權(quán)利要求6所述的異構(gòu)系統(tǒng)的診斷、恢復(fù)裝置,其中,所述故障分類單元進(jìn)一步包括:故障判斷單元,用于在劃分的邏輯區(qū)域內(nèi)進(jìn)一步預(yù)設(shè)故障分類判斷,對(duì)故障進(jìn)行進(jìn)一步分類識(shí)別。
【文檔編號(hào)】G06F11/22GK103605593SQ201310642805
【公開日】2014年2月26日 申請(qǐng)日期:2013年12月2日 優(yōu)先權(quán)日:2013年12月2日
【發(fā)明者】王書義, 楊德光 申請(qǐng)人:東軟集團(tuán)股份有限公司