專利名稱:外圍設備互連總線器件層上的差錯隔離的診斷方法和系統的制作方法
技術領域:
本發明一般地涉及一種用于診斷在硬件中的差錯的方法和系統,更具體涉及一種用于在外圍設備互連(PCI)總線上的器件中的差錯的方法和系統。
背景技術:
硬件預測技術用于預測硬件的操作。硬件預測器可以被實現為一種有限狀態機器,它在給定一些輸入比特及其內部狀態時輸出特定比特的未知值的預測。
用于預測的邏輯一般工作在兩種模式中。第一種模式被稱為“預測模式”(諸如它接受輸入和產生輸出),第二種模式被稱為“更新模式”(諸如它接受輸入和更新它的過去的記錄)。
因為誤預測浪費功率和周期,因此期望避免它們。為了最小化這個問題,已經開發了聯合預測器(Alloyed Predictor)。它們依賴于分支預測的全局歷史和本地歷史。這有助于減少誤預測的數量。
在PCI結構中,主方或從方可以產生差錯。這些差錯的一些在本質上是嚴重的,諸如奇偶校驗差錯,它可能導致產生諸如不可屏蔽的中斷(NMI)的嚴重中斷,進一步導致系統的關閉。
存在其他的可以引起產生NMI的信號。例如,在事務處理階段的目標異常中止可以導致產生NMI。這產生了精確定點在事務處理階段引起問題的器件的需要。
但是,在本發明之前,沒有方法可以基于聯合預測來使用布爾邏輯而不是基于誤預測的加權來精確定點故障器件。相反,傳統的方法需要歷史表格或圖案歷史表格,因此導致硬件和系統的復雜性增加。
而且,在傳統的方法中,操作系統(OS)不能根據差錯的嚴重性來采育必要的行動。
發明內容
考慮到傳統方法和結構的上述和其他的問題、缺陷和不足,本發明的一個典型目的是提供一種可以根據聯合預測使用布爾邏輯精確定點故障器件的方法和結構。
另一個目的是提供一種不需要歷史表格或圖案歷史表格的方法和結構,因此導致降低對于硬件的要求。
另一個目的是提供一種其中OS可以根據差錯的嚴重程度采取任何必要的行為的方法和系統。
在本發明的第一個方面,一種監視具有成對的參與者的總線的方法(和系統),包括在第一和第二參與者之間的事務處理期間檢測問題;并確定哪個參與者對于所述問題有錯誤或是否所述問題包括系統總線問題。
利用本發明的唯一和不明顯的特征,可以使用基于聯合預測的布爾邏輯而不是基于誤預測的加權來精確定點故障器件。另外,這種方法不需要歷史表格(諸如圖案歷史表格),因此導致縮小的硬件。另外,本發明允許OS根據差錯的嚴重性采取任何必要的行動。
在本發明中,一種根據PCI總線規范基于監視器的方法用于檢測是否符合了PCI總線約束條件。最好使用用于描述適當的行為的硬件描述語言(HDL)來開發監視器,并且最好使用環境或代理來實現監視器。
如果遵守在代理控制下的約束條件,則代理產生一個正確信號,并且如果它產生錯誤信號,則已經違反了PCI總線約束條件。存在基于監視器的方法應該履行的其他標準。
即,系統必須返回空閑狀態,這有助于發現死鎖狀態。另外,在單個事務處理期間不應當改變終止類型,這可以有助于檢查是否代理可以以信號表示在一個周期中的目標異常中止,并且隨后在事務處理結束之前在下一個時鐘周期中返回一個重試。
通過參照附圖詳細說明本發明的優選實施例,本發明的上述和其他目的、方面和優點將會變得更好明白,其中圖1圖解了其中使用本發明的示范的上層環境100;圖2圖解了按照本發明的架構200。
圖3圖解了按照本發明的處理300的頂層流程圖;圖4圖解了按照本發明的圖2的架構200的一部分(子集);圖5圖解了按照本發明的圖2所示的器件對信息寄存器240的示范邏輯流程500;圖6A圖解了按照本發明的圖2所示的全局信息寄存器250中提供的表格600;更具體而言,圖6A示出了三個PCI器件1、2和3的事務處理的可能組合(例如6),其中這些器件的第一個是主方,第二個器件是從方;圖6B圖解了表格650,它示出了在總線上發生的主-從事務處理的各種組合;圖6C圖解了一個表格,其中與單個事務處理不同,根據幾個事務處理來進行差錯檢查診斷。
圖7圖解了按照本發明的在主-從組合之間的事務處理的邏輯流程700;圖8圖解了按照本發明的、用于在總線上的器件“1”的處理800的流程圖;圖9圖解了按照本發明的邏輯900;圖10圖解了按照本發明的邏輯1000;圖11圖解了捕獲在總線(例如PCI總線)上的目標器件的地址;圖12圖解了按照本發明的用于確定是否已經違反協議的處理1200的流程圖;圖13圖解了按照本發明的用于確定是否已經違反了另一個協議的處理1300的流程圖;圖14圖解了按照本發明的用于圖13的方法的處理1400的流程圖;圖15圖解了用于在其中并入本發明的示范硬件/信息處理系統1500;和圖16圖解了按照本發明的用于存儲方法的程序的步驟的信號承載媒體1600(諸如存儲介質)。
具體實施例方式
現在參照附圖,具體是圖1-16,其中示出了按照本發明的方法和結構的優選實施例。應當注意,為了讀者的理解和清楚,在附圖中使用來標注一個特征的附圖標號將在全部附圖中使用來圖解相同的項目。
圖1示出了本發明的方法和環境的高層架構100,包括監視器110和經由CPI總線140被鏈接在一起的多個代理(例如第一和第二代理)120、130。每個代理可以包括一個或多個PCI器件115。所述兩個監視器代理120、130被建立來負責檢查在它們的監督下由器件遵守的PCI約束條件。
診斷邏輯125、135存在于每個環境(諸如代理120、130)中,并且將按其操作模式控制故障器件或任何其他與總線相關聯的問題。
圖1中的虛線(未標注)用于在PCI器件115和診斷邏輯125、135之間的GNT信號、DEVSEL信號、總線差錯信號、PCI總線協議信號等。
因此,建立兩個監視器代理120、130,它們負責檢查在它們的監督下由器件遵守的PCI約束條件。
圖2示出了整體的系統架構200,并且在圖3的方法300的流程圖中示出了由架構200遵守的處理。
圖2的架構200包括器件對(device pair)檢測器230(圖5中被示出,并且下面進一步詳細討論)、器件對信息寄存器240(圖5中被示出,并且下面進一步詳細討論)、差錯檢測器邏輯260(圖7中被示出,并且下面進一步詳細討論)、全局信息寄存器250(圖8中被示出,并且下面進一步詳細討論)。
在圖2中,注意操作系統初始化系統。而且,注意對于PCI總線140(具有器件對參與者,其中一個器件是主方,另一個器件是從方)的一個問題是可以從總線140直接讀出主地址。但是,不能從總線140直接讀取目標地址。
因此,在圖2中,左上方框(例如方框210)被提供作為用于獲得目標器件信息(諸如軟件和硬件)(這個操作在下面參照圖11而進一步詳細地被說明)的方法/裝置。目標(諸如從器件)在總線上提供的所有內容是地址。
因此,地址必須被映射到實際的目標器件(諸如從器件)。這樣的操作通過方框210被執行,并且這個操作不能沒有來自操作系統的幫助(例如,輸入)而被執行。應當注意在方框210中被標為“S/W”的軟件是圖11中所示的目標映射軟件1110,并且被標注為“H/W”的硬件是門陣列1120。基本上,軟件必須建立門陣列1120,以便當器件地址出現時,門陣列1120可以指示這是哪個器件。因此,一旦已經建立了軟件,則在此沒有另外的軟件涉及。
然后目標信息被輸入到從事事務處理的器件對檢測器230。器件對檢測器230也接收到主地址(諸如從PCI總線140直接接收)。
然后器件對檢測器230執行“與(AND)”運算(即這在下面參照圖5被進一步詳細說明)。
器件對檢測器230隨后向器件對信息寄存器(硬件)240和向全局信息寄存器(H/W-硬件)250提供輸出。注意圖5也圖解了器件對寄存器240。即,“與”網絡在圖5的左手側,而圖5的右手側示出了器件對信息寄存器240。
全局信息寄存器250也接收VHDL(極高速集成電路硬件描述語言)代碼,用于使用基于監視器的方法來確定對協議的違反。為了本申請的目的并且如上所述,“基于監視器的方法”表示使用外部代理來監視系統或子系統的操作。
如圖所示,這些信號作為差錯信號被輸入到寄存器250。這些差錯信號被示出在圖6A中。即圖6A的寄存器240的列a、b和c圖解了了差錯信號饋入的位置。因此,圖6A示出了三個PCI器件1、2和3的事務處理的可能組合(例如6個),其中這些器件的第一個是主器件,第二個器件是從器件。因此,圖6A的最左列指定哪個器件對正在產生差錯。
即,在第一行中,器件1是主器件,器件2是從器件,在第二行中,器件1的主器件,器件3是從器件,等等。列(例如a、b和c)表示可能的差錯。下面進一步詳細描述差錯的類型(如,目標異常中止、主異常中止、中斷信號、PERR(例如奇偶校驗差錯),等等)。
器件對檢測寄存器240將指示哪一行正在被檢查(例如哪個是主方和哪個是目標/從方)。對于上述列出的每個差錯,為其提供了列(例如a、b、c、d、e等之一)。因此,差錯的類型被插入到對應的列中。因此,如果差錯為高(例如為“1”),則知道該器件對有問題。因此,在第一行中的列a中的“1”可以指示在1-2器件對中發生的目標異常中止差錯。
更詳細地檢查差錯信號,圖6B示出了一個表格,其中示出了不同的組合。對于用于1-2和1-3的組合的圖6B的行1,結論是如果在這兩個器件對中發生差錯,則因為1是對于兩者公共的,則它必須是其中具有差錯的主方。應當注意,如果僅僅存在一個事務處理。則僅僅涉及一個器件對。如果檢查一組事務處理,則可以涉及多個器件對。
因此,現在返回圖2,器件對信息寄存器240接收總線差錯信號和隨后向差錯檢測邏輯260(下面參照圖7更詳細地說明)提供輸入。差錯檢測邏輯260根據器件對信息信號檢測差錯,并且向邏輯運算器件270提供輸入。
邏輯運算器件270也接收全局信息寄存器信號,并且執行“與”運算以隔離故障器件。
邏輯運算器件270隨后提供一個輸出,它表示關于故障器件的信息。
本發明的方法現在轉向圖3,將說明本發明的方法300。
首先,在步驟310,監視總線信號以檢查總線操作。
在步驟320,確定是否符合PCI約束條件。如果符合PCI約束條件(例如在步驟320中的“是”),則處理返回步驟310。
如果不符合PCI約束條件(例如“否”),則處理繼續到步驟330,在此聯系診斷邏輯(例如,圖1中的125、135),因此確定差錯的類型和向在事務處理中涉及的器件(例如主器件或目標器件)精確定點所述差錯。這是在本發明中的關鍵步驟。即,通過使用所述約束條件和將它們對應于適當類型的差錯(例如在寄存器中的列),可以識別和隨后定位差錯類型。
在步驟340,差錯信息被發送到操作系統。
處理在步驟350結束,此時,執行必要的行為來校正差錯。這樣的必要行為可以包括向處理器提供中斷,它可以隨后調用適當的差錯處理軟件。例如,所述系統可以被指令來故障恢復(fail-over)到另一個硬件器件,并且/或者可以請求維護電話來替換誤操作器件。
診斷邏輯125、135的設計在上述的問題的環境中,設計診斷邏輯125、135很重要。結果,對用于信息的信號的選擇起到重要的作用。所述邏輯基于聯合預測方法,并且被示出在圖4的配置400中。
圖4示出了從器件對檢測器230向全局信息寄存器250和向收集比特的器件對信息寄存器240提供的器件對信息信號。來自寄存器240(通過差錯檢測邏輯260)和250的信號被提供到對應于邏輯運算器件270的確定邏輯,以確定“接受”或“不接受”。
在圖4中,假定是所有的信號是可以獲得的,并且所有的事務處理涉及PCI(總線)橋。最好在事務處理在進行時捕獲差錯信號。這有助于定位主-從組合,所述主-從組合引起最大數量的差錯。所述方法將有助于精確定點精確的主-從對,而不是僅僅一個器件。而且,它將有助于確定那種類型的操作(諸如總線讀取、總線寫入或狀態信息傳送)引起最大數量的差錯。關于這種方法,存在一些技術問題,包括因為將從從方產生一些信號因此當事務處理開始時如何產生器件對信息、如何知道那個器件是作為主方或從方的故障器件、在PCI總線上有諸如基本結構或定時問題的其他問題嗎。本發明以最佳的方式處理這些問題的每個,如下所述。
圖5示出了器件對信息寄存器240的操作。
如圖5所示,器件對信息寄存器240使用兩種類型的信號來用于它的輸入(例如主方和從方)。主方仲裁總線的所有權是公知的。仲裁向主方斷言(assert)一個準許(GNT)信號,授權它驅動總線。由目標發出被稱為“DEVSEL”的信號,由此確認它對于事務處理階段已經準備好。
假定在監視器代理下存在器件1、2和3,不確定哪個是主器件和哪個是從器件。在此,M1、M2和M3表示為GNT信號,并且S1、S2和S3被表示為DEVSEL信號。信號被如圖5所示的與門510進行“與”運算,以便獲得關于在事務處理中涉及的器件對的信息。
關于在主從組合之間的事務處理期間產生差錯信號的信息可以被存儲在寄存器240中。因此,如上所述,假定分別監視三個差錯信號a、b和c,寄存器240將如圖6A所示出現。如果斷言一個差錯信號,則將登記一個“1”,否則將登記一個“0”。現在,考慮每個寄存器的列(a),在圖6B的表格中給出可能的組合。
如上所述,依賴于應當監視哪個信號,用于器件對信息寄存器240的差錯信號可以是目標異常中止(它是當TRDY未被斷言、STOP被斷言和DEVSEL被斷言時被產生的)、主器件異常中止、中斷信號和PERR。
現在,可以觀察到情況(i)、(iv)、(vi)和(xi)是偽冗余的,這僅僅告知器件‘1’是故障器件。類似地,情況(iii)、(v)、(x)和(xii)給出關于器件2的相同信息,情況(vii)、(ix)、(xiii)和(xv)提供器件3的相同信息。因此,可以使用這些情況的任何一個。而且,情況(ii)、(Vii)和(xiv)不提供任何附加信息。因此,圖7示出了如何可以處理它們。
圖7示出了差錯檢測邏輯260,它在示范的配置中包括多個或門(OR gate)2601的排列,其中每個接收第一和第二輸入,并且向與門(AND gate)2602提供輸出。與門對于其輸入執行與運算,因此輸出總線差錯信號的一種類型差錯(例如ERR1(a)等)。注意在器件對1+2和1+3之間的差錯事務處理將產生由“1”指示的差錯,據此指示對于以器件1為成員的一些器件對的差錯。
現在,差錯必須被精確定點到主方或目標。對于這個操作,使用來自全局信息寄存器250的輸入。
在全局信息寄存器250中,設計和尋址方案與用于器件對信息寄存器240的相同,除了取代將是總線協議信號的差錯信號的設計和尋址方案。如果違反了任何約束條件,則“1”將因此被登記,否則將登記‘0’。在此的關鍵是協議的選擇。協議對應于被監視的差錯信號,因為它有助于加強結論。
圖8中示出用于確定具體故障器件(在這種情況下的器件‘1’)的方法800的故障診斷流程圖。
現在,假定在器件3和器件1之間沒有事務處理,它暗示‘MS1-MS3’變低。即使‘MS1-MS2’為高,‘ERR1’將保持低,據此提供關于差錯的錯誤信息。而且,如果‘ERR1’為高,則不確定是否它是主問題或目標問題。因此,為了克服這些限制,提供了全局信息寄存器250,它最好具有關于在器件之間的事務處理期間的協議的附加信息。因此,一旦已經識別了差錯,則現在所述主方或目標必須根據在器件對中的器件對于協議的違反而被識別為故障方,于是使用全局信息寄存器250。
全局信息寄存器250的設計和操作全局信息寄存器250的設計和尋址方案與器件對信息寄存器240的類似。一個例外是取代在寄存器240中的差錯信號而使用總線協議信號。如果違反了任何約束條件,則對于該違反將登記‘1’,否則將登記‘0’。一種重要方面是協議的選擇。協議對應于要被監視的差錯信號,因為它有助于加強結論。因此,在給出多義性問題的情況下,GIR 250有助于確定是否故障方是主方或目標/從方。如果它是與主方或目標/從方兩者有關的總線問題,則GIR 250將同樣進行這樣的聲明。在圖8的方法800中提供了用于確定具體故障器件(在這種情況下的器件‘1’)的故障診斷流程圖。
具體上,圖8表示對于一個器件執行的步驟的流程圖,所述步驟用于測試是否器件1是問題/具有差錯(例如是故障方)。對于連接到總線的其他器件執行其他類似的流程圖,以便測試是否對于那些器件有問題/差錯駐留。因此,如果三個器件連接到總線,則將并行執行類似于圖8的三個流程。
在方法800中,一般,在流程圖的右手側的步驟指示知道故障駐留在哪里(例如知道差錯存在于目標和主方的具體的一個中),而左手側指示不知道故障存在于目標和主方具體哪一個中。
在步驟810中,獲得信號(例如來自圖7的“ERR1”)。注意如圖7所示,“ERR1”表示主1-從2和主2-從1的異或(exclusive-OR)運算。因此,如果在主1-從2之間的事務處理或主2-從1之間的事務處理之間發生差錯,則將導致“1”。同樣,如果差錯在兩個(例如共同的)事務處理上,則根據異或運算導致“0”。
因此,確定是否在步驟820信號為低。(注意全局信息寄存器250主要感興趣具有總線的低電平的信號。)如果信號為低(例如“是”)(表示“無差錯”和/或知道差錯具體在哪里),則在步驟830,利用全局信息寄存器250執行異或運算(例如M1-S2)。注意這個步驟820在圖9的頂部部分被示出,下面將進一步詳細說明。
即,在ERR1和M1-S2之間執行異或運算,所述M1-S2被插入圖9的異或(XOR)門910中,因此提供一個輸出,表示如果高則作為主方的“1”與從方2具有問題。即,當ERR1為低時僅僅異或邏輯適用。因此,如果異或的輸出是高,則表示GIR 250已經檢測到在M1-S2事務處理上的協議違反。
如下更詳細所述,如果ERR1為高(“1”),則不確定是否它是主方問題或目標問題,并且步驟825等必須被執行以確定問題的類型和是什么器件導致它。而且,如果ERR1為高,則未知是否在主方或從方/目標中存在差錯,并且利用ERR1和GIR 250信息來執行與運算(經由圖10的4個與門1010),如圖10所示并且在下面更詳細的說明。注意在圖10中使用了4個與門,因為知道對于器件1存在問題,于是必須確定它工作在哪個模式(例如主或從)中,并且它在與哪個其他的器件(例如M2、M3、S2、S3)執行事務處理。
在步驟840,確定是否信號為高(例如“1”)。如果信號為高(例如“是”),則處理繼續到步驟860。如果信號為低(例如“否”),則在步驟850,不聲明任何差錯(表示在器件沒有差錯)。因此,如果信號為低,則不存在涉及產生總線差錯或協議差錯的器件1的事務處理,而不論器件1是作為主方或作為從方。
在步驟860,確定是否已經違反了主協議。下面更詳細地列出和說明主協議。在本發明中,協議可以是主協議、目標協議和通用(主-目標)協議。主協議指示在事務處理中的主方有差錯。如何檢查是否一些示范的主協議已經被違反分別以圖12-14的示范協議檢查方法1200-1400來執行。
如果沒有違反主協議,則在步驟870確定對于器件“1”無問題。
同樣,如果在步驟860確定已經違反了主協議,則處理繼續到步驟875,在此,器件1被聲明為故障器件,同樣它的操作模式(例如主或從)被聲明。
現在返回步驟820,如果在步驟820確定信號不低(例如“否”),則處理分支到步驟825。
在步驟825,這樣的信息與來自全局信息寄存器(M1-S2)250的信息進行與運算。
然后,在步驟835,確定是否信號是高。如果信號是高,則在步驟845確定總線無問題。(換句話說,如果信號為低,則確定總線有問題。)在這樣的情況下,器件可以適當地操作,但是它們在其上通信的總線可能已經影響了事務處理(或如果不能確定哪個器件是故障器件)。
如果在步驟835確定信號為高,則在步驟875中,器件“1”被聲明為故障器件和操作模式(例如,器件1是主器件或器件1是從器件)。此時,操作系統可以采取校正行為。而且,聲明“操作模式”表示還聲明所述器件作為主器件或者所述器件作為從器件。
從圖8的方法800可以清楚看出需要以一個順序來登記PCI協議信號。因此,假定存在‘p’個PCI協議信號,其中‘m’個是主PCI協議信號,‘n’個是目標,‘i’個是主和從協議。同樣,GIR 250將具有專用于主協議的初始的‘m’個單元、專用于目標協議的接下來的‘n’個單元等等。因此,在‘違反了主協議嗎’的確定操作的情況下,可以返回和檢查寄存器250。如果‘m’個初始比特的任一個為高,則它是主協議違反。
以下描述了如何進行確定。或者可以借助于復用器而進行。下面說明如何執行異或及其操作、它的重要性等等。這被示出在圖9中。
因此,返回圖9,即使器件對信息寄存器240提供錯誤的結果,可以仍然根據在GIR 250中的全局信息來進行預測。如果在異或運算之后,信號變高,則未提供關于故障器件的完整信息,但是它指示操作的模式。如果檢查GIR 250以看違反了那些協議,則可以推斷故障器件和它的操作模式。
如圖9所示,如果兩個信號為高,則可以預測故障器件和它的操作模式。
以下進一步詳細地描述了如何固定在器件對中的上述差錯和如何精確定點故障器件。
在PCI總線上捕獲目標器件的地址(竊聽DEVSEL信號)以下說明如何獲得器件地址。關于主方,可以從駐留在PCI橋140上的總線仲裁器來獲得信息。一旦斷言了GNT,則可以獲得主器件地址。
下面的問題是如何獲得目標信號(DEVSEL),因為它是總線信號。這被完成如下。
每次系統啟動,操作系統(OS)執行器件的地址初始化。因此,OS保留用于器件的地址空間,并且信息保存在每個器件的器件驅動器中。可以設計一個現場可編程門陣列或一些其他的邏輯組件,其中代碼將被作為OS的目標映射軟件啟動,并且將器件地址寫入到門陣列中。可以從PCI總線橋獲得所述器件(目標)地址,因此可以獲得關于目標器件的信息。如上所述,這種方法可以被理解為如圖11的結構1100中所示,包括目標映射軟件1110和門陣列1120。注意器件選擇1130與器件對檢測240(用于獲得目標地址信息)相同。
可能的PCI協議的列表關于可能的PCI協議,以下提供一些示范的協議。
I.總線應當是空閑的或返回空閑的(解斷言(deassert)FRAME和IRDY)II.不能驅動TRDY(目標準備好)直到斷言DEVSEL(器件選擇)。
III.僅僅當斷言IRDY時,才可以解斷言指示最后一個數據階段的FRAME。
IV.在計時器超時后不必終止事務處理,除非解斷言GNT。
V.一旦已經解斷言了FRAME,則不能在同一事務處理期間重新斷言它。
VI.一旦主方已經斷言IRDY,則不能改變IRDY或FRAME,直到當前的數據階段完成。
VII.在完成最后的數據階段后,主方必須解斷言IRDY。
VIII.在地址階段和讀取事務處理的第一數據階段之間的回轉周期期間,不能斷言STOP。
IX.數據階段在任何上升邊緣完成,在所述上升邊緣上IRDY被斷言,并且STOP或TRDY被斷言。
X.與STOP的狀態無關,當IRDY和TRDY被斷言時發生數據傳送。
XI.一旦STOP被斷言,則目標必須保持它被斷言,直到FRAME被解斷言,此時目標必須解斷言STOP。
XII.一旦斷言TRDY或STOP,則目標不能改變DEVSEL、TRDY或STOP,直到數據階段完成。
XIII.斷言STOP,一旦可以解斷言IRDY則主方必須解斷言。
XIV.在完成最后的數據階段后,必須解斷言TRDY、STOP和DEVSEL。
XV.如果解斷言GNT和斷言FRAME,則總線事務處理是有效的并且將繼續。
XVI.當解斷言FRAME時,可以在任何時間解斷言GNT,以便服務較高優先級的主方。
XVII.主方必須在當FRAME和IRDY被解斷言和它的GNT被斷言時的可能的第一時鐘周期斷言FRAME。
XVIII.當目標通過STOP中止事務處理時,主方必須解斷言它的REQ達到最小兩個時鐘周期。
XIX.在DEVSEL可以按照配置命令被斷言之前,目標必須以FRAME來限定IDSEL。
XX.特殊的周期命令-無目標響應。
協議被分類為“通用協議”,表示它們有助于確定其他協議的違反和進行確定。
例如,協議‘1’是通用協議,因為總線將在每個數據事務處理結束之后變為空閑。類似地,協議2、3、7、9、14和17是通用協議。
以下說明關于如何在圖12-14中的方法1200、1300、1400中實現這些協議的流程圖。下面圖解了幾個協議。可以如圖12-14中所示來實現所有其他的協議。協議可以被分類為“主協議”(1、3、5、6、7、13和17)、“目標協議”(2、8、12、14、19)和“主-目標協議”(11和18)。
轉向圖12,方法1200的流程圖被示出,用于處理上述的協議17(例如,“主方必須在當FRAME和IRDY被解斷言和它的GNT被斷言時的可能的第一時鐘周期斷言FRAME”),以便確定是否遵守或違反了協議17。在協議17中,IRDY表示I/O準備好。
在步驟1210,總線空閑,FRAME和IRDY已經被解斷言。
在步驟1220,GNT(準許)被斷言,并且在步驟1230,系統等待一個時鐘周期。這個等待按照PCI總線標準規范滿足某些總線定時要求。
在步驟1240,確定是否斷言FRAME(例如由主方斷言)。如果FRAME被斷言(例如“是”),則在步驟1250中確定遵守協議17。
如果未斷言FRAME(例如在步驟1240中的“否”),則確定協議17被主方違反。
圖13示出了檢查其他被遵守或違反的協議(諸如協議6、12、14)的方法1300。協議12和14是目標協議,而協議6是主協議。因此,圖13示出了如何可能檢測到雙違反。在方法1300中并行執行這些檢查。
在步驟1305中,總線空閑。
在步驟1310中,GNT被斷言,并且FRAME被斷言。
在步驟1315中,IRDY被斷言,并且在步驟1320中,DEVSEL被斷言。
在步驟1325中,確定是否完成了數據階段。如果“是”,則處理繼續到步驟1330,其中確定是否被完成的數據階段是最后的數據階段。如果“否”,則處理循環回步驟1325。
如果在步驟1330中“是”(例如被完成的數據階段是最后的數據階段),則在步驟1335中,確定是否TRDY、STOP和DEVSEL被解斷言。如果TRDY、STOP和DEVSEL被解斷言(例如“是”),則處理循環回步驟1305。
同樣,如果TRDY、STOP和DEVSEL未被解斷言(例如“否”),則確定違反協議14。
而且,關于步驟1325,注意如果數據階段完成,但是這不是最后的數據階段(例如在步驟1330中的“否”),則進行檢查協議12的違反。
因此,如果在步驟1325中確定數據階段完成(但是不是由步驟1330確定的最后階段),則處理繼續到步驟1345,其中確定是否TRDY被解斷言。
如果在步驟1345中“是”,則確定已經違反了協議12。如果“否”,則在步驟1350中,確定是否解斷言了DEVSEL。如果“是”,則違反了協議12。
如果在步驟1345中“否”,則確定遵守協議12。
如果在步驟1325中確定數據階段未完成,則在步驟1365確定是否IRDY被解斷言。如果在步驟1365中“是”,則在步驟1370推論協議6被違反。
如果在步驟1365“否”,則在步驟1375確定是否FRAME被解斷言。如果FRAME被解斷言(例如在步驟1375中的“是”),則在步驟1370中推論違反了協議6。
如果在步驟1375中發生“否”(例如未解斷言FRAME),則在步驟1380中確定遵守協議6。
圖14圖解了方法1400,它是用于圖13的方法的子例程,并且它確定是否在具體的事務處理中數據階段完成(例如圖13的步驟1325),所述具體事務處理中主方和從方彼此通信并且數據通過總線被發送。因此,圖14不表示協議檢查,而是確定是否數據階段是完整的子例程(例如圖13的步驟1325)。即這個子例程確定是否數據已經被完整地發送,并且將有助于圖13的方法1300的流程圖。
具體而言,識別總線可能“口吃(stutter)”,因而,一個事務處理沒有開始和結尾并且其間沒有內容,而是可能具有開始然后停止,然后繼續。因此,具有確定何時完成給定的事務處理的方式是有益的。結果,圖14的方法1400被提供,并且可以被插入到圖13的步驟1325。
現在轉向圖14的方法1400,在步驟1405,總線空閑,并且在步驟1410,GNT被斷言并且FRAME被斷言。其后,在步驟1415,IRDY被斷言。
在步驟1420,DEVSEL被斷言,并且在步驟1425,TRDY被斷言。
在步驟1430,檢查IRDY和TRDY的狀態。
在步驟1440,確定它們(IRDY和TRDY)是否在總線信號的同一上升邊緣一起被再次斷言。如果在步驟1440“否”,則在步驟1445,事務處理繼續。
如果在步驟1440“是”(例如,在總線信號的同一上升邊緣,IRDY和TRDY一起被再次斷言),則在步驟1450,數據階段完成,并且在步驟1455確定是否FRAME被解斷言并且STOP被斷言。
如果“否”,則處理循環回步驟1450。如果“是”,則在步驟1460,推論是最后的數據階段(這對應于圖13中的確定方框1330)。
注意,雖然上述的方法指的是僅僅根據一個事務處理來進行診斷(例如,其中僅僅圖6A中的一行可能被填充),但是診斷也可以基于幾個事務處理,在這種情況下,在圖6A中的幾個行可能包括輸入項。
例如,圖6C示出了在已經發生了幾個事務處理后差錯寄存器的內容。可以回憶在單元中的‘0’指示對于在那個行的第一列中命名的器件對沒有在那個列的第一行中指示的類型的差錯,在單元中的“1”指示對于這樣的器件對發現了這樣的差錯。在所有這些事務處理中,假定器件2是故障器件,但是僅僅用于差錯類型b,并且僅僅當它是從器件時。假定已經被監視的事務處理包括這樣的事務處理,其中1是主方而2是從方,并且已經被監視的事務處理包括這樣的事務處理,其中3是主方并且2是從方。則表格將如圖6C所示出現。
從圖6C的表格中的‘1’的位置,有可能確定當在從容量(capacity)中動作時器件2有差錯。按照這個技術,在總線上的所有參與者之間的多個事務處理的觀察允許確定器件對的哪個器件是故障器件。
圖15圖解了用于本發明的信息處理/計算機系統的典型硬件配置,它最好具有至少一個處理器或中央處理單元(CPU)1511。
CPU 151經由系統總線1512相互連接到隨機存取存儲器(RAM)1514、只讀存儲器(ROM)1516、輸入/輸出(I/O)適配器1518(用于將諸如盤單元1521和磁帶驅動器1540的外設器件連接到總線1512)、用戶接口適配器1522(用于將鍵盤1524、鼠標1526、揚聲器1528、麥克風1532和/或其他的用戶接口器件連接到總線1512)、用于將信息處理系統連接到數據處理網絡、因特網、內部網、個人區域網絡(PAN)等的通信適配器1534、用于將總線1512連接到顯示器1538和/或打印機的顯示適配器1536。
除了上述的硬件/軟件環境之外,本發明的不同方面包括計算機實現的方法,用于執行上述的方法。作為一個示例,這些方法可以被實現在上述特定環境中。
這樣的方法可以例如通過操作計算機以執行機器可讀的指令序列而被實現,所述計算機被體現為一個數字數據處理裝置。這些指令可以駐留在不同類型的信號承載媒體中。
這個信號承載媒體可以包括例如包含在CPU 1511中的RAM,例如由快速訪問存儲器表示。或者,所述指令可以被包括在可以由CPU 1511直接或間接訪問的另一個信號承載媒體中,諸如磁數據存儲盤1600(圖16)。
不論是否被包括在盤1600、計算機/CPU 1511或其他地方,所述指令可以被存儲在多種機器可讀數據存儲媒體中,諸如DASD存儲器(如傳統的“硬盤驅動器”或RAID陣列)、磁帶、電子只讀存儲器(如ROM、EPROM或EEPROM)、光存儲器(如CD-ROM、WORM、DVD、數字光帶等)、紙張“穿孔”卡或其他適合的信號承載媒體,所述其他適合的信號承載媒體包括諸如數字和模擬和通信鏈路和無線鏈路的傳輸媒體。在本發明的一個圖解的實施例中,機器可讀的指令可以包括從諸如“C”語言等的語言編譯的軟件目標代碼。
利用本發明的唯一和不明顯的特征,可以使用基于聯合預測的布爾邏輯而不是基于誤預測的加權來精確定點故障器件。另外,本發明不需要歷史表格或圖案歷史表格,因此導致縮小的硬件。另外,OS可以根據差錯的嚴重性采取任何必要的行為。
因此,本發明提供了一種根據PCI總線規范的基于監視器的方法,它用于檢測是否符合了PCI總線約束條件。最好使用用于描述適當的行為的硬件描述語言(HDL)來開發監視器,并且最好使用環境或代理來實現監視器。這些代理滿足分離規則,這表示每個代理的輸出與其他代理的輸出不同。
雖然按照幾個優選實施例而描述了本發明,本領域的技術人員會明白,在所附的權利要求的精神和范圍內,可以對本發明進行修改。
而且,注意申請人的異圖是涵蓋所有權利要求元素的等同物,即使后來在審查期間被修改。
權利要求
1.一種監視具有成對的參與者的總線的方法,包括在所述總線上的第一和第二參與者之間的事務處理期間檢測問題;和確定哪個參與者對于所述問題有錯誤或是否所述問題包括系統總線問題。
2.按照權利要求1的方法,其中所述確定基于觀察多個事務處理和檢測所述問題。
3.一種在總線上的器件級的故障分離的方法,包括根據硬件總線規范,用監視器檢測是否硬件總線約束條件被遵守,其中使用描述行為的硬件描述語言(HDL)來開發監視器,并且使用環境實現監視器。
4.按照權利要求3的方法,其中所述環境包括代理。
5.按照權利要求3的方法,其中如果遵守在代理的控制下的約束條件,則所述代理產生正確信號,并且如果所述代理產生錯誤信號,則違反了硬件總線約束條件。
6.一種在系統中分離故障的方法,所述系統在總線上具有器件對,所述方法包括判斷是否已經發生了故障;確定是否器件對的器件之一引起故障;以及如果所述器件之一被確定未引起故障,則將所述故障的起因識別為總線故障。
7.按照權利要求6的方法,其中所述總線包括外圍設備互連(PCI)總線。
8.按照權利要求6的方法,其中所述器件包括PCI器件。
9.一種用于在總線上的器件級隔離故障的系統,包括器件對檢測器,用于接收主地址信息和目標地址信息;器件對信息寄存器,用于接收所述器件對檢測器的輸出;差錯檢測邏輯,用于接收所述器件對的輸出;全局信息寄存器,用于接收所述器件對檢測器和協議違反檢查邏輯的輸出;以及邏輯運算單元,用于如果有的話,根據所述差錯檢測邏輯和所述全局信息寄存器的輸出來確定所述目標和所述主方的哪個是所述故障的起因,其中如果所述邏輯運算單元識別出所述目標和所述主方都不是起因,則所述邏輯運算單元確定所述起因包括系統總線問題。
10.按照權利要求9的系統,還包括用于獲得目標器件信息的單元。
11.按照權利要求10的系統,其中所述單元包括目標映射模塊和數字邏輯,其中操作系統建立數字邏輯,以便當器件地址出現時,數字邏輯提供指示所述器件的身份的輸出。
12.按照權利要求11的系統,其中所述目標信息被輸入到在事務處理中使用的器件對檢測器,并且器件對檢測器從總線直接接收主地址,其中所述器件對檢測器執行“與”運算,以向所述全局信息寄存器和所述器件對信息寄存器提供所述輸出。
13.按照權利要求9的系統,其中通過極高速集成電路硬件開發語言(VHDL)代碼來實現全局信息寄存器,以使用基于監視器的方法來確定協議的違反。
14.按照權利要求13的系統,其中所述VHDL代碼包括至少一個差錯信號,所述至少一個差錯信號包括目標異常中止、主方異常中止、中斷信號和奇偶校驗差錯(PERR)信號。
15.按照權利要求9的系統,其中所述全局信息寄存器接收總線協議信號,所述協議對應于要被監視的差錯信號。
16.一種在總線中的故障分離的方法,至少包括第一和第二參與者,所述第一和第二參與者選擇性地參與在事務處理中,包括監視總線信號,以檢查總線操作;確定是否總線約束條件被遵守;以及如果總線約束條件未被遵守,則聯系診斷邏輯,由此確定差錯的類型并將差錯精確定點到在事務處理中涉及的第一和第二參與者。
17.按照權利要求16的方法,其中所述聯系包括使用約束條件并將它們對應于一種差錯類型,以便可以識別和隨后定位所述差錯類型。
18.按照權利要求16的方法,還包括向操作系統發送差錯信息。
19.按照權利要求18的方法,還包括采取行動來修正差錯。
20.按照權利要求16的方法,其中所有的事務處理涉及總線,并且在事務處理進行時捕獲差錯信號。
21.一種故障診斷方法,用于確定總線上的具體故障器件,包括獲得差錯信號,所述差錯信號指示在事務處理中的差錯,所述事務處理包括在事務處理中的第一和第二參與者;確定是否該信號具有預定的值;以及如果該信號具有預定的值,則用全局信息寄存器執行邏輯運算,由此指示所述兩個參與者中的哪個有問題。
22.按照權利要求21的方法,其中所述邏輯運算包括異或運算。
23.按照權利要求21的方法,還包括如果所述差錯信號具有第二預定值,則判斷不肯定是否它是主方問題或目標問題;以及確定問題的類型和哪個參與者引起所述問題,所述確定包括與所述差錯信號和全局信息寄存器信息進行第二邏輯運算,以便獲得具有預定值的信號,其中如果所述信號具有第一預定值,則所述問題被識別為總線問題,如果所述信號具有第二預定值,則確定引起問題的參與者和它的操作模式。
24.按照權利要求23的方法,其中所述第二邏輯運算包括與運算,其中所述第一預定值為低,所述第二預定值相對于所述第一預定值為高。
25.按照權利要求22的方法,還包括確定是否所述信號具有高預定值;以及如果所述信號具有低預定值,則聲明無差錯。
26.按照權利要求25的方法,還包括如果信號為高,則確定是否已經違反主協議,其中所述主協議表示在事務處理中是主方故障;如果未違反主協議,則確定器件沒有問題;以及如果確定已經違反了主協議,則聲明所述器件是問題的起因,并且聲明它的操作模式。
27.按照權利要求22的方法,其中預定值指示“無故障”和/或知道具體上差錯在哪里。
28.按照權利要求21的方法,其中對于連接到總線的每個器件并行執行所述方法。
29.按照權利要求9的系統,其中所述差錯檢測邏輯包括多個異或門。
30.一種信號承載媒體,可感知地包含由數字處理裝置可執行的機器可讀指令的程序,所述程序用于執行監視具有成對的參與者的總線的方法,包括在所述總線上的第一和第二參與者之間檢測事務處理期間的問題;以及確定哪個參與者對于所述問題有差錯或是否所述問題包括系統總線問題。
31.一種用于監視具有成對的參與者的總線的系統,包括檢測器,用于在所述總線上的第一和第二參與者之間的事務處理期間檢測問題;和確定單元,用于確定哪個參與者對于所述問題有差錯或是否所述問題包括系統總線問題。
全文摘要
一種監視具有成對的參與者的總線的方法(和系統),包括在所述總線上的第一和第二參與者之間的事務處理期間檢測問題;以及確定哪個參與者對于所述問題有錯誤或是否所述問題包括系統總線問題。
文檔編號H04B1/74GK1506824SQ200310120400
公開日2004年6月23日 申請日期2003年12月11日 優先權日2002年12月12日
發明者理查德·E·哈珀, 塔朗D·辛格, ば糧, 理查德 E 哈珀 申請人:國際商業機器公司