專利名稱:一種處理pci系統(tǒng)異常的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,特別涉及一種處理PCI系統(tǒng)異常的方法
和裝置。
背景技術(shù):
夕卜部設(shè)備互連(PCI, Peripheral Component Interconnect)總線因其具有 開放架構(gòu)、易用性和可擴展性好等優(yōu)點得到廣泛應(yīng)用。圖l為一種PCI系統(tǒng) 的結(jié)構(gòu)示意圖,主機設(shè)備為CPU內(nèi)置的PCI控制器,通常也4皮成為PCI主 機橋控制器,PCI系統(tǒng)中可以通過PCI總線掛接多個PCI設(shè)備,該PCI設(shè)備
可以是固定設(shè)備也可以是插卡式設(shè)備,可以是自舉設(shè)備也可以是普通設(shè)備。
主機設(shè)備上電后,首先完成自身的基本配置之后,會通過PCI總線掃描各 PCI設(shè)備,并對各PCI設(shè)備進行相應(yīng)的配置,配置完成之后,主機設(shè)備就可 以通過PCI總線與各PCI設(shè)備進行數(shù)據(jù)交互。
在PCI系統(tǒng)中,如果某塊PCI設(shè)備作為目標(biāo)設(shè)備時發(fā)生故障,則可能會 引起整個PCI系統(tǒng)故障而無法正常工作,例如可能會出現(xiàn)以下問題其一、 主設(shè)備訪問目標(biāo)設(shè)備時,目標(biāo)設(shè)備故障引起在聲明交易之后遲遲不能準(zhǔn)備好 數(shù)據(jù)接收,即在第三個時鐘周期中發(fā)送有效的DEVSEL信號后,在第四個 周期及以后一直不發(fā)送有效的TRDY信號,從而使得主機設(shè)備一直處于等待 中,同時目標(biāo)設(shè)備也不能發(fā)出重試或交易廢止信號,從而造成PCI系統(tǒng)被此 次交易長時間獨占,總線掛死。其二、如果目標(biāo)設(shè)備為自舉設(shè)備,其在上電 后不依靠主機設(shè)備的配置,而是自己進行初始化配置,在該目標(biāo)i殳備完成初 始化配置之前處于鎖定(Locked)狀態(tài),主機設(shè)備無法對其進4亍訪問,對其 的訪問交易將被重試。如果該自舉設(shè)備在初始化過程中出現(xiàn)異常,無法完成初始化配置,則主機設(shè)備對其進行的訪問將被無限重試,從而造成總線^皮長 時間占用。除此之外還可能出現(xiàn)其它異常狀況導(dǎo)致總線被長時間占用,從而
導(dǎo)致整個PCI系統(tǒng)的崩潰。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種處理PCI系統(tǒng)異常的方法和裝置,從而避 免因PCI系統(tǒng)異常引起總線被長時間占用所導(dǎo)致的整個PCI系統(tǒng)崩潰。
一種處理外部設(shè)備互連PCI系統(tǒng)異常的方法,在PCI系統(tǒng)中的主機設(shè)備 與PCI設(shè)備之間設(shè)置異常監(jiān)控隔離裝置,該異常監(jiān)控隔離裝置執(zhí)行以下步 驟
A、 監(jiān)聽主機設(shè)備通過PCI總線對作為目標(biāo)設(shè)備的PCI設(shè)備的訪問;
B、 監(jiān)聽到訪問出現(xiàn)異常時,隔離被訪問的目標(biāo)設(shè)備;
C、 被隔離的目標(biāo)設(shè)備被訪問時,代替該被訪問的目標(biāo)設(shè)備向所述主機設(shè)備 發(fā)送目標(biāo)廢止應(yīng)答。
一種處理PCI系統(tǒng)異常的裝置,該裝置應(yīng)用于包含主機設(shè)備和PCI設(shè)備的 PCI系統(tǒng),該裝置包括控制單元和隔離單元;
所述控制單元,用于監(jiān)聽主機設(shè)備通過PCI總線對作為目標(biāo)設(shè)備的PCI設(shè) 備的訪問;被所述隔離單元隔離的目標(biāo)設(shè)備被訪問時,代替該凈皮訪問的目標(biāo)設(shè) 備向所述主才幾設(shè)備發(fā)送目標(biāo)廢止應(yīng)答;
所述隔離單元,用于在所述控制單元監(jiān)聽到訪問出現(xiàn)異常時,隔離被訪 問的目標(biāo)設(shè)備。
由以上4支術(shù)方案可以看出,本發(fā)明通過在PCI系統(tǒng)中的主才幾設(shè)備與PCI 設(shè)備之間設(shè)置異常監(jiān)控隔離裝置,使該異常監(jiān)控隔離裝置對主機設(shè)備通過 CPI總線對目標(biāo)設(shè)備的訪問進行監(jiān)聽;監(jiān)聽到訪問出現(xiàn)異常時,隔離被訪問 的目標(biāo)設(shè)備;當(dāng)被隔離的目標(biāo)設(shè)備被訪問時,代替該被訪問的目標(biāo)設(shè)備向主 機設(shè)備發(fā)送目標(biāo)廢止應(yīng)答。這種方式能夠使得主機設(shè)備對目標(biāo)設(shè)備的訪問異 常及時被發(fā)現(xiàn),并通過代替被隔離的被訪問目標(biāo)設(shè)備向主才幾i殳備發(fā)送目標(biāo)廢止應(yīng)答的方式,使得主機設(shè)備能夠跳出對該發(fā)生異常的目標(biāo)設(shè)備的訪問,從
而避免PCI總線被長時間占用所可能導(dǎo)致的整個PCI系統(tǒng)崩潰,提高了 PCI 系統(tǒng)的可靠性,并最大限度減少了 PCI設(shè)備異常時系統(tǒng)的性能損耗。
圖1為一種PCI系統(tǒng)的結(jié)構(gòu)示意圖2為本發(fā)明實施例提供的主要方法流程圖3為本發(fā)明實施例提供的詳細(xì)方法流程圖4為本發(fā)明實施例提供的包含異常監(jiān)控隔離裝置的PCI系統(tǒng)結(jié)構(gòu)圖; 圖5為本發(fā)明實施例提供的異常監(jiān)控隔離裝置的具體結(jié)構(gòu)圖。
具體實施例方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖和具體 實施例對本發(fā)明進行詳細(xì)描述。
本發(fā)明在PCI系統(tǒng)中主機設(shè)備與PCI設(shè)備之間設(shè)置異常監(jiān)控隔離裝置, 該異常監(jiān)控隔離裝置所執(zhí)行的主要方法可以如圖2所示,主要包括以下步 驟
步驟201:監(jiān)聽主機設(shè)備通過PCI總線對作為目標(biāo)設(shè)備的PCI設(shè)備的訪問。
步驟202:監(jiān)聽到主機設(shè)備通過PCI總線對目標(biāo)設(shè)備的訪問出現(xiàn)異常時, 隔離該目標(biāo)設(shè)備。
步驟203:處于隔離狀態(tài)的目標(biāo)設(shè)備被主機設(shè)備訪問時,代替被訪問的 目標(biāo)設(shè)備向主機設(shè)備進行目標(biāo)廢止應(yīng)答。
異常監(jiān)控隔離裝置對主機通過PCI總線對目標(biāo)設(shè)備的訪問進行的監(jiān)聽, 可以包括對PCI總線事件的監(jiān)聽,或?qū)δ繕?biāo)設(shè)備未應(yīng)答時長,或同時對兩 者進行監(jiān)聽。
下面結(jié)合具體實施例對上述方法進行詳細(xì)描述。圖3為本發(fā)明實施例提供的詳細(xì)方法流程圖,如圖3所示,該方法可以包括以下步驟
步驟301:異常監(jiān)控隔離裝置監(jiān)聽PCI總線事件和目標(biāo)設(shè)備未響應(yīng)時長,
如果監(jiān)聽到PCI總線事件,執(zhí)行步驟302;如果監(jiān)聽到目標(biāo)設(shè)備未響應(yīng)時長
達到預(yù)設(shè)的時長閾值,執(zhí)行步驟314。
步驟302:確定監(jiān)聽到的PCI總線事件類型,如果為交易開始事件,執(zhí)
行步驟303;如果為主機設(shè)備準(zhǔn)備好事件,執(zhí)行步驟304;如果為目標(biāo)設(shè)備
應(yīng)答事件,執(zhí)行步驟308。
本步驟中,對PCI總線事件類型的監(jiān)聽可以為對PCI總線上的信號進行
監(jiān)聽,如果監(jiān)聽到有效的FRAME信號,則確定監(jiān)聽到的事件類型為交易開
始事件;如果監(jiān)聽到有效的IRDY信號,則確定監(jiān)聽到的事件類型為主機設(shè)
備準(zhǔn)備好事件。
步驟303:鎖存PCI總線上的數(shù)據(jù),對鎖存的數(shù)據(jù)進行譯碼確定本次訪 問的目標(biāo)設(shè)備,轉(zhuǎn)至執(zhí)行步驟301。
當(dāng)監(jiān)聽到交易開始事件時,會對PCI總線上的地址和數(shù)據(jù)進行鎖存,用 于譯碼目標(biāo)設(shè)備。
步驟304:判斷本次訪問的目標(biāo)設(shè)備是否處于隔離狀態(tài),如果是,執(zhí)行 步驟305;否則執(zhí)行步驟306。
在后續(xù)描述中將會涉及到如何標(biāo)記目標(biāo)設(shè)備處于隔離狀態(tài),在本實施例 中可以設(shè)置一個狀態(tài)寄存器存儲各PCI設(shè)備是否處于隔離狀態(tài),例如設(shè)置 32比特的狀態(tài)寄存器,每一個比特對應(yīng)一個設(shè)備,O標(biāo)識對應(yīng)PCI設(shè)備處于 非隔離狀態(tài),1標(biāo)識對應(yīng)PCI設(shè)備處于隔離狀態(tài),復(fù)位值為0。
步驟305:代替目標(biāo)設(shè)備向主機設(shè)備進行目標(biāo)廢止應(yīng)答,轉(zhuǎn)至執(zhí)行步驟
301。
本步驟中,異常監(jiān)控隔離裝置一旦確定被訪問的目標(biāo)設(shè)備處于隔離狀 態(tài),則說明該目標(biāo)設(shè)備已被確定為異常,則為了避免對該異常的目標(biāo)設(shè)備進 行訪問造成PCI系統(tǒng)崩潰,異常監(jiān)控隔離裝置代替目標(biāo)設(shè)備向主機設(shè)備進行 目標(biāo)廢止應(yīng)答,使得主機設(shè)備能夠繼續(xù)對其它PCI設(shè)備進行訪問。對目標(biāo)設(shè)備進行隔離的具體情況和過程將在后續(xù)描述中出現(xiàn)。
步驟306:啟動對目標(biāo)設(shè)備未應(yīng)答時長的計時。
監(jiān)聽到主設(shè)備準(zhǔn)備好的總線事件后,異常監(jiān)控隔離裝置開始等待目標(biāo)設(shè) 備的應(yīng)答,如果目標(biāo)設(shè)備不能在設(shè)定時長內(nèi)應(yīng)答,則說明目標(biāo)設(shè)備存在異常。
步驟307:若當(dāng)前交易是配置目標(biāo)設(shè)備地址,則將訪問的目標(biāo)設(shè)備地址 信息記錄到地址范圍表中,轉(zhuǎn)至執(zhí)行步驟301。
該地址范圍表中存儲被訪問的PCI設(shè)備的地址,即各目標(biāo)設(shè)備地址,用 于對目標(biāo)設(shè)備進行識別。該地址范圍表中的表項可以通過該步驟307生成, 也可以通過異常監(jiān)控隔離裝置與主機設(shè)備之間的配置通道進^f亍配置。
另夕卜,還可能存在一種情況是,主機設(shè)備可能會多次對目標(biāo)設(shè)備地址進 行配置,因此,在確定出當(dāng)前交易是配置目標(biāo)地址時,可以首先判斷地址范 圍表中是否已經(jīng)存在該被訪問的目標(biāo)設(shè)備的地址信息,如果不存在,則將訪 問的目標(biāo)設(shè)備的地址信息記錄到地址范圍表中;如果已經(jīng)存在,則直接轉(zhuǎn)至 步驟301,從而避免地址范圍表中存儲重復(fù)的目標(biāo)設(shè)備地址信息。
步驟308:將對目標(biāo)設(shè)備未應(yīng)答時長的計時清零。
目標(biāo)設(shè)備應(yīng)答表明總線未^皮掛死,因此,可以停止對目朽:i殳備未應(yīng)答時 長的計時。
步驟309:判斷應(yīng)答事件的類型是否為重試,如果是執(zhí)行步驟310;否 則執(zhí)行步驟313。
目標(biāo)設(shè)備應(yīng)答可能存在多種情況,重試對規(guī)范而言是一種合法應(yīng)答,但 實際應(yīng)用中會可能會帶來異常狀況,因此,在本發(fā)明中需要對重試進行特殊 處理,即對重試次數(shù)進行計數(shù),并在超限時隔離該目標(biāo)設(shè)備。
步驟310:將重試次it加1。
步驟311:判斷重試次數(shù)是否達到預(yù)設(shè)的重試門限值,如果是,執(zhí)行步
驟312,否則,轉(zhuǎn)至步驟301。
可以預(yù)先設(shè)定主機設(shè)備對目標(biāo)設(shè)備所能進行的重試次凄t,在達到該重試
次數(shù)時,認(rèn)為該目標(biāo)設(shè)備出現(xiàn)異常,無法完成初始化配置,需要對該目標(biāo)設(shè)備進行隔離,使得主機設(shè)備結(jié)束對該目標(biāo)設(shè)備的訪問。
步驟312:標(biāo)記目標(biāo)設(shè)備處于隔離狀態(tài),將重試次數(shù)清零,轉(zhuǎn)至步驟301。
步驟313:將重試次數(shù)清零,判斷應(yīng)答事件是否屬于用戶設(shè)置的異常模 式,如果是,執(zhí)行步驟314;否則,轉(zhuǎn)至步驟301。
如果應(yīng)答事件不是重試,則將重試次數(shù)清零,因為只有連續(xù)重試的次數(shù) 達到重試門限值才被認(rèn)為異常。
由于除了重試之外,應(yīng)答事件還可能是其它異常狀況,用戶可以預(yù)先配 置一些異常狀況,主機設(shè)備通過配置通道將這些異常狀況配置給異常監(jiān)控隔 離裝置,因此,在本步驟中會進一步判斷是否為用戶設(shè)置的其它異常模式。 如果不考慮其它異常模式,或者用戶并沒有設(shè)置其它異常模式,則在將重試 次數(shù)清零后,直接轉(zhuǎn)至步驟301。
可以將用于預(yù)先配置的異常狀況存儲在總線異常模式表中,每個表項定 義一種總線異常,執(zhí)行本步驟時,通過查表的方式判斷應(yīng)答事件是否屬于用 戶設(shè)置的異常模式。
步驟314:將目標(biāo)設(shè)備潛在異常次數(shù)加1。
如果是,執(zhí)行步驟316;否則,轉(zhuǎn)至執(zhí)行步驟301。
步驟316:判斷本次訪問的交易是否結(jié)束,如果是,執(zhí)4亍步驟317;否 則執(zhí)行步驟318。
當(dāng)DEVSEL信號無效,TRDY信號也無效時,即目標(biāo)i殳備結(jié)束聲明準(zhǔn) 備好數(shù)據(jù)傳輸,且聲明交易結(jié)束時,可以確定本次訪問的交易結(jié)束,否則本 次訪問的交易未結(jié)束。
步驟317:標(biāo)記目標(biāo)設(shè)備處于隔離狀態(tài),轉(zhuǎn)至步驟301。
步驟318:標(biāo)記目標(biāo)設(shè)備處于隔離狀態(tài),并代替目標(biāo)設(shè)備向主機設(shè)備進 行目標(biāo)廢止應(yīng)答,轉(zhuǎn)至步驟301。
如果交易尚未結(jié)束,則異常監(jiān)控隔離裝 通過向主機設(shè)備發(fā)送目標(biāo)廢止 應(yīng)答來通知主機設(shè)備結(jié)束本次交易。
12在本步驟中,在標(biāo)記目標(biāo)設(shè)備處于隔離狀態(tài)之前,異常監(jiān)控隔離裝置會
斷開PCI總線,并可以進一步向主機設(shè)備發(fā)送錯誤報告,代替目標(biāo)設(shè)備向主 機設(shè)備進行目標(biāo)廢止應(yīng)答之后,打開PCI總線,允許PCI信號透傳。
另外,在某些確定目標(biāo)設(shè)備發(fā)生異常的情況并不一定適合立即隔離目標(biāo) 設(shè)備,例如對于重試次數(shù)超限的情況,最好是在下一次目標(biāo)i殳備被訪問的時
刻再隔離目標(biāo)設(shè)備。因此,可以在步驟312中不直接標(biāo)記目才示i殳備處于隔離 狀態(tài),而將目標(biāo)設(shè)備標(biāo)記為需隔離狀態(tài),將重試次數(shù)清零后,轉(zhuǎn)至步驟301; 并且,在步驟306和步驟307之間增加一個步驟判斷目標(biāo)設(shè)備是否處于需 隔離狀態(tài),如果是,將對目標(biāo)設(shè)備未應(yīng)答時長的計時清零,執(zhí)行步驟318; 否則繼續(xù)執(zhí)行步驟307。
目標(biāo)設(shè)備是否處于需隔離狀態(tài),也可以通過設(shè)置一個狀態(tài)寄存器來標(biāo) 記,例如,設(shè)置一個32比特的狀態(tài)寄存器,每一個比特對應(yīng)一個PCI設(shè)備, O標(biāo)識對應(yīng)PCI設(shè)備處于正常狀態(tài),1標(biāo)識對應(yīng)PCIi殳備處于需隔離狀態(tài), 等待下次被訪問時,隔離該設(shè)備。
通過上述流程可以異常監(jiān)控隔離裝置代替發(fā)生異常的目標(biāo)設(shè)備向主機 設(shè)備進行目標(biāo)廢止應(yīng)答,使得訪問都能夠在規(guī)定的PCI交易周期中完成,不 會占用太多帶寬,可以最大限度地消除對PCI系統(tǒng)的影響。
更優(yōu)地,異常監(jiān)控隔離裝置在隔離目標(biāo)設(shè)備時,可以通過配置通道發(fā)送 錯誤報告給主機設(shè)備,該錯誤報告通常以中斷的形式發(fā)送給主^L設(shè)備。主機 設(shè)備接收到該錯誤報告后,可以進一步到異常監(jiān)控隔離裝置中查詢被隔離的 目標(biāo)設(shè)備信息,也可以選擇不進行查詢而執(zhí)行其它操作,這可以根據(jù)具體的 策略來執(zhí)行。
另外,主機設(shè)備可以通過配置通道對異常的目標(biāo)設(shè)備進4亍解除隔離,即 通過配置通道通知異常監(jiān)控隔離裝置將目標(biāo)設(shè)備標(biāo)記為正常狀態(tài)。并且在對 目標(biāo)設(shè)備解除隔離之后,主機設(shè)備可以對解除隔離的目標(biāo)i殳備進行復(fù)位或重 新初始化;另外,考慮到某些設(shè)備出現(xiàn)異常并不一定是物理損壞,因此也可 以由用戶對解除隔離后的目標(biāo)設(shè)備進行復(fù)位或熱插拔。
13在上述流程中,當(dāng)目標(biāo)設(shè)備未響應(yīng)時長超限或監(jiān)聽到用戶定義的其它異 常模式時,認(rèn)為目標(biāo)設(shè)備存在潛在異常,對潛在異常次數(shù)進行計數(shù),當(dāng)潛在 異常次數(shù)超限后,再對目標(biāo)設(shè)備進行隔離。這種通過設(shè)置潛在異常次數(shù)的方 式是一種容錯處理,也可以不設(shè)置潛在異常次數(shù)的處理,當(dāng)目標(biāo)設(shè)備未響應(yīng) 時長超限或監(jiān)聽到用戶定義的其它異常模式,則直接對目標(biāo)設(shè)備進行隔離, 這種情況可以視為設(shè)置潛在異常次數(shù)的限值為1。
以上是對本發(fā)明所提供的方法進行的詳細(xì)描述,下面對本發(fā)明所提供的裝
置進行詳細(xì)描述。圖4為本發(fā)明實施例提供的包含異常監(jiān)控隔離裝置的PCI系 統(tǒng)結(jié)構(gòu)圖,如圖4所示,該異常監(jiān)控隔離裝置設(shè)置在PCI系統(tǒng)中主機設(shè)備與PCI 設(shè)備之間,該異常監(jiān)控隔離裝置可以包括控制單元400和隔離單元410。
控制單元400,用于對主機設(shè)備通過PCI總線對作為目標(biāo)設(shè)備的PCI設(shè)備 的訪問進行監(jiān)聽;被隔離單元410隔離的目標(biāo)設(shè)備被訪問時,4戈替該被訪問的 目標(biāo)設(shè)備向主機設(shè)備發(fā)送目標(biāo)廢止應(yīng)答。
隔離單元410,用于在控制單元400監(jiān)聽到訪問出現(xiàn)異常時,隔離被訪問 的目標(biāo)設(shè)備。
圖5為本發(fā)明實施例提供的異常監(jiān)控隔離裝置的具體結(jié)構(gòu)圖,如圖5所示, 控制單元400包括PCI接口單元500和核心處理單元510。
其中,PCI接口單元500可以具體包括偵聽單元501和PCI總線驅(qū)動單 元502。
偵聽單元501,用于監(jiān)聽主機設(shè)備通過PCI總線對目標(biāo)設(shè)備的訪問,并將 監(jiān)聽到的狀況上才艮給核心處理單元510。
PCI總線驅(qū)動單元502,用于確定被隔離單元410隔離的目標(biāo)設(shè)備被訪問時, 代替該被訪問的目標(biāo)設(shè)備向主機設(shè)備發(fā)送目標(biāo)廢止應(yīng)答。
核心處理單元510,用于在偵聽單元501監(jiān)聽到訪問出現(xiàn)異常時,通知隔 離單元410隔離被訪問的目標(biāo)設(shè)備。
具體地,偵聽單元501將監(jiān)聽到的PCI總線事件上報供給核心處理單元
510。核心處理單元510可以包括識別子單元511和異常確定子單元512。 識別子單元511,用于確定偵聽單元501上報的PCI總線事件或被訪問的 目標(biāo)設(shè)備的未響應(yīng)時長。
異常確定子單元512,用于在識別子單元511確定PCI總線事件為重試應(yīng) 答事件且重試次數(shù)達到預(yù)設(shè)的重試門限值時,或者確定PCI總線事件為應(yīng)答事 件且屬于預(yù)設(shè)的異常應(yīng)答模式時,或者確定被訪問的目標(biāo)設(shè)備的未響應(yīng)時長達 到預(yù)設(shè)的時長閾值時,確定訪問出現(xiàn)異常,并通知隔離單元410隔離被訪問的 目標(biāo)設(shè)備。
對于識別子單元511識別出的不同狀況,異常確定子單元512會做出不同 的處理,具體可以包括以下幾種狀況
第一種狀況識別子單元511確定PCI總線事件為主機設(shè)備準(zhǔn)備好事件時, 異常確定子單元512判斷被訪問的目標(biāo)設(shè)備是否已被隔離,如果是,觸發(fā)PCI 總線驅(qū)動單元502代替被訪問的目標(biāo)設(shè)備向主機設(shè)備發(fā)送目標(biāo)廢止應(yīng)答;否則, 啟動對被訪問的目標(biāo)設(shè)備未應(yīng)答時長的計時。
第二種狀況識別子單元511確定PCI總線事件為主機設(shè)備準(zhǔn)備好事件時, 核心處理單元510還包括重試計數(shù)子單元513。
異常確定子單元512將對目標(biāo)設(shè)備未應(yīng)答時長的計時清零,判斷應(yīng)答事件 類型是否為重試,如果是,向重試計數(shù)子單元513發(fā)送計數(shù)通知,否則,向重 試計數(shù)子單元513發(fā)送清零通知;接收到重試門限判斷通知后,判斷重試計數(shù) 子單元513記錄的重試次數(shù)是否達到預(yù)設(shè)的重試門限值,如果是,向隔離單元 410發(fā)送第一隔離通知;并向重試計數(shù)子單元513發(fā)送清零通知;接收到應(yīng)答 模式判斷通知后,如果應(yīng)答事件屬于預(yù)設(shè)的異常應(yīng)答模式,則判斷本次訪問的 交易是否結(jié)束,如果是,向隔離單元410發(fā)送第一隔離通知;否則向隔離單元 410發(fā)送第二隔離通知,并觸發(fā)PCI總線驅(qū)動單元代替被訪問的目標(biāo)設(shè)備向主 機i殳備發(fā)送目標(biāo)廢止應(yīng)答。
重試計數(shù)子單元513,用于接收到計數(shù)通知后,將記錄的重試次數(shù)加l,向 異常確定子單元512發(fā)送重試門限判斷通知;接收到清零通知后,向異常確定子單元512發(fā)送應(yīng)答模式判斷通知。隔離單元410,用于接收到第一隔離通知時,標(biāo)記浮皮訪問的目標(biāo)設(shè)備處于 隔離狀態(tài);接收到第二隔離通知時,斷開PCI總線,標(biāo)記被訪問的目標(biāo)設(shè)備處 于隔離狀態(tài),在PCI總線驅(qū)動單元發(fā)送目標(biāo)廢止應(yīng)答后,打開PCI總線。第三種情況異常確定子單元512確定^t訪問的目標(biāo)設(shè)備未響應(yīng)時長達到 預(yù)設(shè)的時長閾值時,判斷本次訪問的交易是否結(jié)束,如果是,向隔離單元410 發(fā)送第一隔離通知;否則向隔離單元發(fā)送第二隔離通知410,并觸發(fā)PCI總線;設(shè)備向主機i;隔離單元410,用于接收到第一隔離通知時,標(biāo)記凈皮訪問的目標(biāo)設(shè)備處于 隔離狀態(tài);接收到第二隔離通知時,斷開PCI總線,標(biāo)記被訪問的目標(biāo)設(shè)備處 于隔離狀態(tài),在PCI總線驅(qū)動單元發(fā)送目標(biāo)廢止應(yīng)答后,打開PCI總線。基于第二種情況和第三種情況,異常確定子單元512,還可以用于在執(zhí)行 判斷本次訪問的交易是否結(jié)束的操作之前,將目標(biāo)設(shè)備潛在異常次數(shù)加1,判 斷潛在異常次數(shù)是否超限,如果是,繼續(xù)執(zhí)行判斷本次訪問的交易是否結(jié)束的 操作;否則結(jié)束處理。另外,控制單元400還可以包括本地總線單元520,用于接收主機單元 通過配置通道發(fā)送來的異常狀況配置信息或解除隔離的目標(biāo)設(shè)備信息,并將該 異常狀況配置信息或解除隔離的目標(biāo)設(shè)備信息提供給核心處理單元510。核心處理單元510根據(jù)異常狀況配置信息確定訪問是否出現(xiàn)異常,或者將 解除隔離的目標(biāo)設(shè)備信息提供給隔離單元410。隔離單元410,還可以用于根據(jù)解除隔離的目標(biāo)設(shè)備信息,解除對應(yīng)目 標(biāo)設(shè)備的隔離。另外,核心處理單元510還可以在隔離目標(biāo)設(shè)備時通過本地總線單元 520向主才幾設(shè)備發(fā)送4晉誤報告。更進一步地,控制單元400還可以包括時鐘合成單元530,用于利用外 部的參考時鐘合成異常監(jiān)控隔離裝置所需要的時鐘。上述結(jié)構(gòu)中的隔離單元410能夠?qū)崿F(xiàn)控制單元400對目標(biāo)i殳備的隔離,并在訪問正常的目的i殳備時,進行雙向PCI信號的透傳,并且并不會對PCI信號的質(zhì)量產(chǎn)生阻礙和干擾。由以上描述可以看出,本發(fā)明通過在PCI系統(tǒng)中的主機i殳備與PCI設(shè)備 之間設(shè)置異常監(jiān)控隔離裝置,使該異常監(jiān)控隔離裝置對主機設(shè)備通過CPI 中線對目標(biāo)設(shè)備的訪問進行監(jiān)聽;監(jiān)聽到訪問出現(xiàn)異常時,隔離被訪問的目 標(biāo)設(shè)備;當(dāng)被隔離的目標(biāo)設(shè)備被訪問時,代替該被訪問的目標(biāo)設(shè)備向主機設(shè) 備發(fā)送目標(biāo)廢止應(yīng)答。這種方式能夠使得主機設(shè)備對目標(biāo)設(shè)備的訪問異常及 時被發(fā)現(xiàn),并通過代替被隔離的被訪問目標(biāo)設(shè)備向主機設(shè)備發(fā)送目標(biāo)廢止應(yīng) 答的方式,使得主機設(shè)備能夠跳出對該發(fā)生異常的目標(biāo)設(shè)備的訪問,從而 PCI總線被長時間占用所可能導(dǎo)致的整個PCI系統(tǒng)崩潰,提高了 PCI系統(tǒng)的 可靠性,并最大限度減少了 PCI設(shè)備異常時系統(tǒng)的性能損耗。另外,本發(fā)明中針對幾種常用的異常狀況,提供了具體的解決方案,可 以看出,本發(fā)明是一種通用的解決PCI系統(tǒng)異常的方法,可以方便有效地實 現(xiàn)特定PCI總線異常的監(jiān)控和隔離,可擴展性高。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本 發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在 本發(fā)明保護的范圍之內(nèi)。
權(quán)利要求
1、一種處理外部設(shè)備互連PCI系統(tǒng)異常的方法,其特征在于,在PCI系統(tǒng)中的主機設(shè)備與PCI設(shè)備之間設(shè)置異常監(jiān)控隔離裝置,該異常監(jiān)控隔離裝置執(zhí)行以下步驟A、監(jiān)聽主機設(shè)備通過PCI總線對作為目標(biāo)設(shè)備的PCI設(shè)備的訪問;B、監(jiān)聽到訪問出現(xiàn)異常時,隔離被訪問的目標(biāo)設(shè)備;C、被隔離的目標(biāo)設(shè)備被訪問時,代替該被訪問的目標(biāo)設(shè)備向所述主機設(shè)備發(fā)送目標(biāo)廢止應(yīng)答。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟A包括所述異 常監(jiān)控隔離裝置監(jiān)聽PCI總線事件和^f皮訪問的目標(biāo)i殳備的未響應(yīng)時長。
3、 根據(jù)權(quán)利要求2所述的方法,其特征在于,步驟B中所述監(jiān)聽到訪問出 現(xiàn)異常包括當(dāng)監(jiān)聽到PCI總線事件為重試應(yīng)答事件且重試次數(shù)達到預(yù)設(shè)的重試門限值 時,確定監(jiān)聽到訪問出現(xiàn)異常;或者,當(dāng)監(jiān)聽到的PCI總線事件為應(yīng)答事件且屬于預(yù)設(shè)的異常應(yīng)答模式時,確定 監(jiān)聽到訪問出現(xiàn)異常;或者,當(dāng)監(jiān)聽到被訪問的目標(biāo)設(shè)備的未響應(yīng)時長達到預(yù)設(shè)的時長閾值時,確定監(jiān) 聽到訪問出現(xiàn)異常。
4、 才艮據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟C包括當(dāng)監(jiān)聽到 PCI總線事件為主機設(shè)備準(zhǔn)備好事件時,判斷被訪問的目標(biāo)設(shè)備是否已被隔離, 如果是,所述異常監(jiān)控隔離裝置代替所述被訪問的目標(biāo)設(shè)備向所述主機設(shè)備發(fā) 送目標(biāo)廢止應(yīng)答,轉(zhuǎn)至執(zhí)行所述步驟A;否則,啟動對所述被訪問的目標(biāo)設(shè)備 未應(yīng)答時長的計時,轉(zhuǎn)至執(zhí)^f于所述步驟A。
5、 才艮據(jù)權(quán)利要求4所述的方法,其特征在于,所述主^L設(shè)備預(yù)先將各目標(biāo) 設(shè)備的地址配置在所述異常監(jiān)控隔離裝置中的地址范圍表中;或者,在啟動對所述被訪問的目標(biāo)設(shè)備未應(yīng)答時長的計時之后,且轉(zhuǎn)至執(zhí)行所述步驟A之前還包括若當(dāng)前交易是配置被訪問目標(biāo)地址,則所述異常監(jiān)控隔離 裝置獲取被訪問目標(biāo)地址信息,并將訪問的目標(biāo)設(shè)備地址信息記錄到地址范圍 表中。
6、根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟B包括Bll、當(dāng)監(jiān)聽到PCI總線事件為目標(biāo)設(shè)備應(yīng)答事件時,將對目標(biāo)設(shè)備未應(yīng)答時長的計時清零,判斷應(yīng)答事件類型是否為重試,如果是,執(zhí)行步驟B12,否則,執(zhí)行步驟B13;B12、將重試次數(shù)加l,判斷重試次數(shù)是否達到預(yù)設(shè)的重試門限值,如果是標(biāo)記被訪問的目標(biāo)設(shè)備處于隔離狀態(tài)將重試次數(shù)清零,轉(zhuǎn)至所述步驟A;否則,轉(zhuǎn)至所述步驟A;B13、將重試次數(shù)清零,判斷應(yīng)答事件是否屬于預(yù)設(shè)的異常應(yīng)答模式,如果 是執(zhí)行步驟B14,否則轉(zhuǎn)至所述步驟A;B14、判斷本次訪問的交易是否結(jié)束,如果是,標(biāo)記被訪問的目標(biāo)設(shè)備處于 隔離狀態(tài),轉(zhuǎn)至所述步驟A,否則斷開PCI總線,標(biāo)記^皮訪問的目標(biāo)"&備處于打開PCI總線,轉(zhuǎn)至所述步驟A。
7、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟B包括 當(dāng)監(jiān)聽到被訪問的目標(biāo)設(shè)備的未響應(yīng)時長達到預(yù)設(shè)的時長闊值時,判斷本次訪問的交易是否結(jié)束,如果是,標(biāo)記被訪問的目標(biāo)設(shè)備處于隔離狀態(tài),轉(zhuǎn)至 所述步驟A,否則斷開PCI總線,標(biāo)記被訪問的目標(biāo)設(shè)備處于隔離狀態(tài),并代 替所述祐:訪問的目標(biāo)設(shè)備向所述主機設(shè)備發(fā)送目標(biāo)廢止應(yīng)答,打開PCI總線, 轉(zhuǎn)至所述步驟A。
8、 根據(jù)權(quán)利要求6或7所述的方法,其特征在于,在所述判斷本次訪問的 交易是否結(jié)束之前還包括將目標(biāo)設(shè)備潛在異常次數(shù)加1,判斷潛在異常次數(shù) 是否超限,如果是,繼續(xù)執(zhí)行所述判斷本次訪問的交易是否結(jié)束的步驟;否則 轉(zhuǎn)至所述步驟A。
9. 一種處理PCI系統(tǒng)異常的裝置,該裝置應(yīng)用于包含主機設(shè)備和PCI設(shè)備的PCI系統(tǒng),其特征在于,該裝置包括控制單元和隔離單元;所述控制單元,用于監(jiān)聽主機設(shè)備通過PCI總線對作為目標(biāo)設(shè)備的PCI設(shè)備的訪問;被所述隔離單元隔離的目標(biāo)設(shè)備被訪問時,代替該-陂訪問的目標(biāo)設(shè)備向所述主機設(shè)備發(fā)送目標(biāo)廢止應(yīng)答;所述隔離單元,用于在所述控制單元監(jiān)聽到訪問出現(xiàn)異常時,隔離坤皮訪問的目標(biāo)設(shè)備。
10、 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述控制單元包括PCI 接口單元和核心處理單元;其中,PCI接口單元包括偵聽單元和PCI總線驅(qū)動單元;所述偵聽單元,用于監(jiān)聽主機設(shè)備通過PCI總線對目標(biāo)設(shè)備的訪問,并將 監(jiān)聽到的狀況上報給所述核心處理單元;所述PCI總線驅(qū)動單元,用于確定被所述隔離單元隔離的目標(biāo)設(shè)備被訪問 時,代替該被訪問的目標(biāo)設(shè)備向所述主機設(shè)備發(fā)送目標(biāo)廢止應(yīng)答;所述核心處理單元,用于在所述偵聽單元監(jiān)聽到訪問出現(xiàn)異常時,通知所 述隔離單元隔離被訪問的目標(biāo)設(shè)備。
11、 根據(jù)權(quán)利要求IO所述的裝置,其特征在于,所述偵聽單元將監(jiān)聽到的 PCI總線事件上報供給所述核心處理單元;所述核心處理單元包括識別子單元,用于確定偵聽單元上報的PCI總線事件或被訪問的目標(biāo)設(shè)備 的未響應(yīng)時長;異常確定子單元,用于在識別子單元確定PCI總線事件為重試應(yīng)答事件且 重試次數(shù)達到預(yù)設(shè)的重試門限值時,或者確定PCI總線事件為應(yīng)答事件且屬于 預(yù)設(shè)的異常應(yīng)答模式時,或者確定被訪問的目標(biāo)設(shè)備的未響應(yīng)時長達到預(yù)設(shè)的 時長閾值時,確定訪問出現(xiàn)異常,并通知所述隔離單元隔離^皮訪問的目標(biāo)設(shè)備。
12、 根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述識別子單元確定PCI 總線事件為主機設(shè)備準(zhǔn)備好事件時,所述異常確定子單元判斷纟皮訪問的目標(biāo)設(shè) 備是否已被隔離,如果是,觸發(fā)所述PCI總線驅(qū)動單元代替所述被訪問的目標(biāo)設(shè)備向所述主機設(shè)備發(fā)送目標(biāo)廢止應(yīng)答;否則,啟動對所述^皮訪問的目標(biāo)設(shè)備 未應(yīng)答時長的計時。
13、 根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述核心處理單元還包括 重試計數(shù)子單元;所述識別子單元確定PCI總線事件為主機設(shè)備準(zhǔn)備好事件時,所述異常確 定子單元將對目標(biāo)設(shè)備未應(yīng)答時長的計時清零,判斷應(yīng)答事件類型是否為重試, 如果是,向重試計數(shù)子單元發(fā)送計數(shù)通知,否則,向所述重試計^t子單元發(fā)送 清零通知;接收到重試門限判斷通知后,判斷所述重試計數(shù)子單元記錄的重試 次數(shù)是否達到預(yù)設(shè)的重試門限值,如果是,向所述隔離單元發(fā)送第一隔離通知; 并向所述重試計數(shù)子單元發(fā)送清零通知;接收到應(yīng)答模式判斷通知后,如果應(yīng) 答事件屬于預(yù)設(shè)的異常應(yīng)答才莫式,則判斷本次訪問的交易是否結(jié)束,如果是,向所述隔離單元發(fā)送第 一隔離通知;否則向所述隔離單元發(fā)送第二隔離通知, 并觸發(fā)所述PCI總線驅(qū)動單元代替所述被訪問的目標(biāo)設(shè)備向所述主機設(shè)備發(fā)送 目標(biāo)廢止應(yīng)答;所述重試計數(shù)子單元,用于接收到計數(shù)通知后,將記錄的重試次數(shù)加1, 向所述異常確定子單元發(fā)送重試門限判斷通知;接收到清零通知后,向所述異 常確定子單元發(fā)送應(yīng)答模式判斷通知;所述隔離單元,用于接收到所述第 一隔離通知時,標(biāo)記4皮訪問的目標(biāo)設(shè)備 處于隔離狀態(tài);接收到所述第二隔離通知時,斷開PCI總線,標(biāo)記被訪問的目 標(biāo)設(shè)備處于隔離狀態(tài),在所述PCI總線驅(qū)動單元發(fā)送目標(biāo)廢止應(yīng)答后,打開PCI 總線。
14、 根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述異常確定子單元,確 定凈皮訪問的目標(biāo)設(shè)備未響應(yīng)時長達到預(yù)設(shè)的時長閾值時,判斷本次訪問的交易 是否結(jié)束,如果是,向所述隔離單元發(fā)送第一隔離通知;否則向所述隔離單元 發(fā)送第二隔離通知,并觸發(fā)所述PCI總線驅(qū)動單元代替所述被訪問的目標(biāo)設(shè)備 向所述主機i殳備發(fā)送目標(biāo)廢止應(yīng)答;所述隔離單元,用于接收到所述第一隔離通知時,標(biāo)記被訪問的目標(biāo)設(shè)備處于隔離狀態(tài);接收到所述第二隔離通知時,斷開PCI總線,標(biāo)記被訪問的目 標(biāo)設(shè)備處于隔離狀態(tài),在所述PCI總線驅(qū)動單元發(fā)送目標(biāo)廢止應(yīng)答后,打開PCI 總線。
15、 根據(jù)權(quán)利要求13或14所述的裝置,其特征在于,所述異常確定子單 元,還用于在執(zhí)行所述判斷本次訪問的交易是否結(jié)束的操作之前,將目標(biāo)設(shè)備 潛在異常次數(shù)加1,判斷潛在異常次數(shù)是否超限,如果是,繼續(xù)執(zhí)行所述判斷 本次訪問的交易是否結(jié)束的操作;否則結(jié)束處理。
16、 根據(jù)權(quán)利要求IO所述的裝置,其特征在于,所述控制單元還包括本 地總線單元,用于接收所述主機單元通過配置通道發(fā)送來的異常狀況配置信息 或解除隔離的目標(biāo)設(shè)備信息,并將該異常狀況配置信息或解除隔離的目標(biāo)設(shè)備 信息提供給所述核心處理單元;所述核心處理單元根據(jù)所述異常狀況配置信息確定訪問是否出現(xiàn)異常,或 者將解除隔離的目標(biāo)設(shè)備信息提供給所述隔離單元;所述隔離單元,還用于根據(jù)所述解除隔離的目標(biāo)設(shè)備信息,解除對應(yīng)目標(biāo) 設(shè)備的隔離。
全文摘要
一種處理外部設(shè)備互連(PCI)系統(tǒng)異常的方法及裝置,在PCI系統(tǒng)中的主機設(shè)備與PCI設(shè)備之間設(shè)置異常監(jiān)控隔離裝置,該異常監(jiān)控隔離裝置執(zhí)行以下步驟A.監(jiān)聽主機設(shè)備通過PCI總線對作為目標(biāo)設(shè)備的PCI設(shè)備的訪問;B.監(jiān)聽到訪問出現(xiàn)異常時,隔離被訪問的目標(biāo)設(shè)備;C.被隔離的目標(biāo)設(shè)備被訪問時,代替該被訪問的目標(biāo)設(shè)備向所述主機設(shè)備發(fā)送目標(biāo)廢止應(yīng)答。本發(fā)明能夠避免PCI總線被長時間占用所可能導(dǎo)致的整個PCI系統(tǒng)崩潰,提高了PCI系統(tǒng)的可靠性,并最大限度減少了PCI設(shè)備異常時系統(tǒng)的性能損耗。
文檔編號G06F11/30GK101625656SQ20091008908
公開日2010年1月13日 申請日期2009年7月28日 優(yōu)先權(quán)日2009年7月28日
發(fā)明者郭道榮 申請人:杭州華三通信技術(shù)有限公司