專利名稱:一種上報中斷的方法和pci總線系統的制作方法
技術領域:
本發明涉及網絡通信技術,特別涉及一種上報中斷的方法、PCI總線系
統和總線中斷代理。
背景技術:
隨著通信技術的不斷發展和高速傳輸需求的提高,網絡設備中數據和控
制分離的技術應運而生,即在網絡設備中采用外設組件互連標準(PCI, Peripheral Component Interconnect)總線作為CPU和PCI i殳備之間的控制通 道,采用系統包接口 ( SPI-4, System Packet Interface Level 4 )總線作為CPU 和PCI設備之間的數據通道,既充分利用了 SPI-4總線的高速傳輸優勢,又 能夠單獨處理控制信息提高效率。
本發明主要涉及PCI總線上控制信息的傳輸和處理。圖1為現有技術中 PCI總線系統的結構圖,PCI設備有事件需要通知CPU時,通常向CPU發 送中斷,CPU接收到中斷后,讀取PCI設備的中斷狀態寄存器從而獲得事 件的具體類型并執行相應的處理。然而,PCI總線系統中的事件是復雜龐多 的,因此,現有技術中又提供了一種向CPU上報事件的方法,單獨開辟了 PCI事件地址空間,PCI設備將事件消息在PCI總線上通過PCI橋寫入預先 約定好的PCI事件地址空間內,并且不同類型的事件消息存放在不同的PCI 事件地址空間內,CPU啟動定時器,每隔固定時間對各PCI事件地址空間
進行輪詢,查看是否有事件需要處理。
然而,現有技術的上述方法中,CPU是按照定時器每隔固定的時間對 各PCI事件地址空間進行輪詢的,這就可能造成以下缺陷其一、如果PCI 設備沒有事件消息寫入PCI事件地址空間,即沒有事件需要CPU處理,CPU仍會按照定時器進行輪詢,啟動定時器需要占用系統資源,這必然會加重 CPU的負擔,降低軟件的效率。其二、在某些時候事件產生十分頻繁,如果 事件的產生頻率大于定時器的定時頻率,則可能會造成PCI事件地址空間中 的事件消息沒有被及時處理時又被新的事件消息覆蓋,即定時查詢速度趕不 上事件消息的更新速度而造成事件丟失等后果。其三、通常某些重要或緊急 的事件并不是頻繁發生,但是這些事件需要立刻得到處理,否則可能會導致 數據丟失等嚴重的后果,顯然,現有技術中按照定時器進行輪詢的方式并不 能保障重要或緊急的事件能夠立即得到處理。
發明內容
有鑒于此,本發明提供了一種上報中斷的方法和PCI總線系統,以便于 達到減少CPU負擔和保證事件能夠得到及時處理的效果。
一種上報中斷的方法,應用于PCI總線系統,該系統中的PCI橋和PCI設 備之間通過PCI總線連接;該PCI總線系統中的PCI總線上還連接了總線中斷 代理,該方法包括
所述總線中斷代理監聽PCI總線上的事件消息,監聽到寫入PCI事件地址 空間的事件消息后,判斷當前PCI事件地址空間中的事件消息狀況是否滿足中 斷觸發條件,如果是,則向CPU發送中斷以觸發CPU對各PCI事件地址空間 進行輪詢,否則不發送中斷。
一種PCI總線系統,該系統包括通過PCI總線連接的PCI橋和PCI設備; 該PCI系統中的PCI總線上還連接了總線中斷代理;
所述總線中斷代理,用于監聽PCI總線上的事件消息,監聽到寫入PCI 事件地址空間的事件消息后,判斷當前寫入PCI事件地址空間中的事件消息 狀況是否滿足中斷觸發條件,如果是,則向CPU發送中斷以觸發CPU對各 PCI事件地址空間進行輪詢,否則不發送中斷。
由以上技術方案可以看出,本發明通過連接在PCI總線上的總線中斷代 理對PCI總線上的事件消息進行監聽,監聽到寫入PCI事件地址空間的事件消息后,在當前PCI事件地址空間中的事件消息狀況滿足中斷觸發條件時,
通過PCI橋向CPU發送中斷以觸發CPU對各PCI事件地址空間進行輪詢。 具有以下優點其一、在沒有事件消息寫入PCI事件地址空間時,就不需要 通知CPU進行輪詢操作,也免去了啟動定時器所需要的系統資源,從而減 少了 CPU的負擔,提高了軟件效率。其二、通過對PCI總線上事件消息進 行監控,在滿足中斷觸發條件時及時上報中斷來觸發CPU對PCI事件地址 空間中的事件消息進行輪詢,而不像現有技術中必須等到定時器到時來觸發 CPU的輪詢,從而避免事件消息不能及時被處理而被覆蓋所造成的事件丟 失。其三、可以根據實際需求靈活地設置中斷觸發條件,對諸如重要或緊急 等需要立刻得到處理的事件進行中斷上報,從而避免這些事件沒有立刻得到 處理所造成的數據丟失等嚴重的后果;也可以對不需要立即處理的事件消息 進行合并處理,等到滿足中斷觸發條件再統一進行中斷上報,從而更加高效 的利用資源。
圖1為現有技術中PCI總線系統的結構圖2為本發明實施例提供的系統架構圖; 圖3為本發明實施例提供的詳細方法流程圖4為本發明實施例提供的PCI事件地址空間的設置示意圖5為本發明實施例提供的總線中斷代理的組成結構圖。
具體實施例方式
為了使本發明的目的、技術方案和優點更加清楚,下面結合附圖和具體 實施例對本發明進行詳細描述。
本發明提供的方法主要包括預先設置在PCI總線上的總線中斷代理監 聽PCI總線上的事件消息,監聽到寫入PCI事件地址空間的事件消息后,判 斷當前寫入PCI事件地址空間中的事件消息狀況是否滿足中斷觸發條件,如果是,則通過PCI橋向CPU發送中斷以觸發CPU對各PCI事件地址空間進 行輪詢。
下面結合具體實施例對上述方法進行詳細描述。圖2為本發明實施例提 供的系統架構圖,在該系統中,除了系統中原有的CPU、 PCI橋和各PCI 設備之外,在PCI總線上額外設置了總線中斷代理,該總線中斷代理掛在 PCI總線上能夠對PCI總線上發送的事件消息寫操作進行監聽。下面以PCI 設備1發送事件消息為例對該方法進行描述,其過程如圖3所示,可以包括 以下步驟
步驟301: PCI設備1產生事件PCinfol時,向PCI橋發送總線使用請求。
該系統中的PCI設備可以為物理層(PHY )芯片、媒體訪問層(MAC ) 芯片、高級數據鏈路控制規程(HDLC )芯片、分段與重組(SAR, Segmentation And Reassembly )芯片等。
步驟302: PCI橋在PCI設備1滿足PCI總線使用規則時,向PCI設備 1授予總線使用權。
在PCI總線系統中,各PCI設備通常通過PCI橋組成樹形結構,PCI 橋為包含仲裁器的PCI設備,對各PCI設備發送的總線使用請求進行仲裁授 予滿足總線使用規則的PCI設備總線使用權。
上述的PCI總線使用規則可以為輪詢規則,每個PCI設備都有屬于自己 的總線時隙,PCI橋會在PCI設備對應的總線時隙授予該PCI設備的總線使 用權;也可以為優先級使用規則,如果當前僅有一個PCI設備發送總線使用 請求,則直接授予該PCI設備的總線使用權,如果有多個PCI設備發送總線 使用請求,則按照預先設定的各PCI設備的優先級先授予優先級高的PCI 設備總線使用權,再授予優先級低的PCI設備總線使用權;也可以采用其他 的總線使用規則,這部分內容為現有技術,在此不再贅述。
步驟303: PCI設備1將包含PCinfol的事件消息寫入相應的PCI事件 地址空間。可以預先設置多個PCI事件地址空間,每個PCI事件地址空間對應不同
的事件類型,如圖4所示,事件類型為PCinfol對應的事件消息存放在地址 為InfoAddl的PCI事件地址空間,事件類型為PCinfo2對應的事件消息存 放在地址為InfoAdd2的PCI事件地址空間,事件類型為PCinfo3對應的事 件消息存放在地址為InfoAdd3的PCI事件地址空間等。該事件類型可以按 照事件的重要或緊急程度來進行劃分,也可以根據事件的產生頻率進行劃 分。
步驟304:總線中斷代理監聽到寫入PCI事件地址空間的事件消息,并 判斷當前PCI事件地址空間中的事件消息狀況是否滿足中斷觸發條件,如果 是,執行步驟305,否則,不產生中斷。
總線中斷代理對PCI總線上的事件消息進行監聽,如果事件消息的目的 地址為PCI事件地址空間的地址,則確定監聽到寫入PCI事件地址空間的事 件消息。
在判斷當前PCI事件地址空間中的事件消息狀況是否滿足中斷觸發條 件時,可以具體為總線中斷代理確定監聽到的事件消息要寫入的PCI事件 地址空間,判斷該PCI事件地址空間中的事件消息量是否達到針對該事件消 息的事件類型所設置的閾值,如果是,則確定當前寫入PCI事件地址空間中 的事件消息狀況滿足中斷觸發條件。
當事件類型按照事件的重要或緊急程度來進行劃分時,中斷觸發條件按 照PCI事件地址空間中事件消息的重要或緊急程度來設定。下面舉一個例 子假設將事件類型劃分為重要且緊急事件、重要不緊急事件、不重要緊急 事件和不重要且不緊急事件四種,例如,將隊列滿、緩存耗盡等事件作為重 要且緊急事件,將風扇溫度過高等事件作為重要不緊急事件,將個別通道報 文CRC出錯作為不重要緊急事件,將其他諸如統計事件等作為不重要且不 緊急的事件。相應地,預先開辟的四個PCI事件地址空間分別用于存儲四種 類型的事件消息,此時預先定義的中斷觸發條件可以為有重要且緊急事件 的事件消息時觸發中斷。這種情況下,總線中斷代理一旦監視到PCI總線上有發送到存放重要且緊急事件的PCI事件地址空間時,向CPU發送中斷觸 發CPU進行輪詢。當然,也可以預先定義中斷觸發條件為有重要且緊急事 件的事件消息或者重要不緊急事件的事件消息時觸發中斷,也可以預先定義 中斷觸發條件為有重要且緊急事件的事件消息、重要不緊急事件的事件消息 或不重要緊急事件的事件消息中的任 一 種時觸發中斷。
另外,總線中斷代理可以對各種類型的事件消息進行記錄,當PCI事件
地址空間中的事件消息量達到預設的消息量閾值時觸發中斷,即實現中斷的 合并。該中斷合并的方式可以結合上述根據消息類型的重要或緊急程度來設
定中斷觸發條件。例如可以定義中斷觸發條件為重要且緊急事件的事件 消息量達到第一閾值、重要不緊急事件消息的事件消息量達到第二閾值、不 重要緊急事件的事件消息量達到第三閾值、不重要且不緊急事件的消息量達 到第四閾值中的任一種時觸發中斷。通常根據實際需要可以設置第 一 閾值、 第二閾值、第三閾值和第四閾值依次增大。
當事件類型按照事件的產生頻率來進行劃分時,中斷觸發條件可以按照 PCI事件地址空間中的事件消息量來設定。下面舉一個例子假設將事件產 生頻率大于或等于頻率閾值的事件作為高頻率事件,產生頻率小于頻域閾值 的事件作為低頻率事件;相應地,預先開辟的兩個PCI事件地址空間分別用 于存儲高頻率事件的事件消息和低頻率事件的事件消息,此時,預先定義的 中斷觸發條件可以為當高頻率事件的事件消息量達到預設的第五l'司值時觸 發中斷,當低頻率事件的事件消息量達到預設的第六閾值時觸發中斷,其中, 可以根據實際需求設置第五閾值小于或等于第六閾值。
中斷觸發條件還可以實際需求采用其他的設定方式,在此不再——列舉。
假設該實施例中,PCI設備1發送的事件消息為重要且緊急事件,且總 線中斷代理在上次發送中斷之后記錄的重要且緊急事件的事件消息量達到 預設的第一閾值,則確定滿足中斷觸發條件,執行步驟305。
步驟305:總線中斷代理向CPU發送中斷。本發明中各PCI設備可以不具備與CPU的中斷接口,而總線中斷代理 具備與CPU的中斷接口, PCI總線上的事件消息由總線中斷代理統一進行
中斷的上報,且可以通過步驟304在總線中斷代理上設置各種中斷觸發條件 觸發向CPU發送中斷。
步驟306: CPU接收到中斷后,對各PCI事件地址空間進行輪詢,對其 中的事件消息進行處理。
CPU接收到中斷后,在對各PCI事件地址空間進行輪詢時,也可以按 照事件類型的優先級順序進行輪詢,例如,按照重要且緊急事件、重要不緊 急事件、不重要緊急事件和不重要且不緊急事件的順序對其對應的PCI事件 地址空間進行輪詢,以對事件類型的優先級高的事件進行優先處理。
以上是對本發明提供的方法進行的詳細描述,下面對本發明所提供的系統 進行詳細描述,該系統結構可以如圖2所示,包括通過PCI總線連接的PCI 橋和PCI設備,該PCI總線上還進一步連接了總線中斷代理。
其中,總線中斷代理,用于監聽PCI總線上的事件消息,監聽到寫入PCI 事件地址空間的事件消息后,判斷當前寫入PCI事件地址空間中的事件消息狀 況是否滿足中斷觸發條件,如果是,則向CPU發送中斷以觸發CPU對各PCI 事件地址空間進行輪詢,否則不發送中斷。
PCI設備可以用于產生事件時,向PCI橋發送總線使用請求,在被PCI橋 授予總線使用權后,在PCI總線上發送事件消息以寫入該事件消息的事件類型 所對應的PCI事件地址空間。
PCI橋,用于接收到PCI設備發送的總線使用請求后,在該PCI設備滿足 PCI總線使用規則時,向該PCI設備授予總線使用權。
下面對上述總線中斷代理的結構進行詳細描述,如圖5所示,該總線中斷 代理可以具體包括消息監聽單元501 、條件判斷單元502和中斷發送單元503。
消息監聽單元501,用于監聽PCI總線上的事件消息。
條件判斷單元502,用于在消息監聽單元501監聽到寫入PCI事件地址空 間的事件消息后,判斷當前寫入PCI事件地址空間中的事件消息狀況是否滿足中斷觸發條件。
中斷發送單元503,用于在條件判斷單元502的判斷結果為是時,通過PCI 橋向CPU發送中斷以觸發CPU對各PCI事件地址空間進行輪詢;在條件判斷 單元502的判斷結果為否時,不發送中斷。
其中,消息監聽單元501監聽到事件消息的目的地址為PCI事件地址空間 的地址時,確定監聽到寫入PCI事件地址空間的事件消息。
具體地,在確定是否滿足中斷觸發條件時,條件判斷單元502在消息監聽 單元501監聽到寫入PCI事件地址空間的事件消息后,確定監聽到的事件消息 要寫入的PCI事件地址空間,判斷要寫入的PCI事件地址空間中的事件消息量 是否達到針對該事件消息的事件類型所設置的閾值,如果是,則確定當前寫入 PCI事件地址空間中的事件消息狀況滿足中斷觸發條件。
例如,條件判斷單元502可以根據消息監聽單元501監聽到的事件消息要 寫入的PCI事件地址空間確定該事件消息的事件類型,如果確定的事件類型所 表征的重要或緊急程度滿足預設的重要或緊急程度閾值,則確定當前PCI事件 地址空間中的事件消息狀況滿足中斷觸發條件。
或者,條件判斷單元502在中斷發送單元上一次發送中斷后,對消息監聽 單元501監聽到的寫入的PCI事件地址空間的事件消息進行記錄,如果寫入其 中一個PCI事件地址空間中的事件消息量達到為該PCI事件地址空間設定的消 息量闊值,則確定當前PCI事件地址空間中的事件消息狀況滿足中斷觸發條件, 其中,寫入各PCI事件地址空間的事件消息按照事件消息的重要或緊急程度, 或者,按照事件消息的產生頻率進行劃分。
具體的觸發準則設置和實現可以采用方法流程中所描述的方式。
由以上描述可以看出,本發明通過連接在PCI總線上的總線中斷代理對PCI
總線上的事件消息進行監聽,監聽到寫入PCI事件地址空間的事件消息后,在
當前PCI事件地址空間中的事件消息狀況滿足中斷觸發條件時,通過PCI橋向
CPU發送中斷以觸發CPU對各PCI事件地址空間進刊-輪詢。具有以下優點
其一、在沒有事件消息寫入PCI事件地址空間時,就不需要通知CPU進行輪詢操作,也免去了啟動定時器所需要的系統資源,從而減少了 CPU的負擔,提高 了軟件效率。其二、通過對PCI總線事件消息進行監控,在滿足中斷觸發條件
時及時上報中斷來觸發CPU對PCI事件地址空間中的事件消息進行輪詢,而不 像現有技術中必須等到定時器到時來觸發CPU的輪詢,從而避免事件消息不能
及時被處理而被覆蓋所造成的事件丟失。其三、可以根據實際需求靈活地設置 中斷觸發條件,對諸如重要或緊急等需要立刻得到處理的事件進行中斷上報,
從而避免這些事件沒有立刻得到處理所造成的數據丟失等嚴重的后果;也可以 對不需要立即處理的事件消息進行合并處理,等到滿足中斷觸發條件再統一進 行中斷上4艮,從而更加高效的利用資源。
以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本 發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在 本發明保護的范圍之內。
權利要求
1、一種上報中斷的方法,應用于外設組件互連標準PCI總線系統,該系統中的PCI橋和PCI設備之間通過PCI總線連接;其特征在于,該PCI總線系統中的PCI總線上還連接了總線中斷代理,該方法包括所述總線中斷代理監聽PCI總線上的事件消息,監聽到寫入PCI事件地址空間的事件消息后,判斷當前寫入PCI事件地址空間中的事件消息狀況是否滿足中斷觸發條件,如果是,則向CPU發送中斷以觸發CPU對各PCI事件地址空間進行輪詢,否則不發送中斷。
2、 根據權利要求1所述的方法,其特征在于,PCI設備產生事件時,向PCI 橋發送總線使用請求;PCI橋在所述PCI設備滿足PCI總線使用規則時,向所 述PCI設備授予總線使用權;所述PCI設備在PCI總線上發送事件消息以寫入 該事件消息的事件類型所對應的PCI事件地址空間。
3、 根據權利要求1所述的方法,其特征在于,如果監聽到事件消息的目的 地址為PCI事件地址空間的地址,則確定監聽到寫入PCI事件地址空間的事件 消息。
4、 根據權利要求l、 2或3所述的方法,其特征在于,判斷當前寫入PCI 事件地址空間中的事件消息狀況是否滿足中斷觸發條件具體包括所述總線中斷代理確定監聽到的所述事件消息要寫入的PCI事件地址空 間,判斷所述要寫入的PCI事件地址空間中的事件消息量是否達到針對該事件 消息的事件類型所設置的閾值,如果是,則確定當前寫入PCI事件地址空間中 的事件消息狀況滿足中斷觸發條件。
5、 根據權利要求4所述的方法,其特征在于,所述事件類型按照事件的重 要緊急程度或者事件的產生頻率進行劃分。
6、 根據權利要求l、 2或3所述的方法,其特征在于,所述CPU對各PCI 事件地址空間進行輪詢具體包括所述CPU按照各PCI事件地址空間所表征的 事件類型的優先級順序進行輪詢。
7、 一種PCI總線系統,該系統包括通過PCI總線連接的PCI橋和PCI 設備;其特征在于,該PCI系統中的PCI總線上還連接了總線中斷代理;所述總線中斷代理,用于監聽PCI總線上的事件消息,監聽到寫入PCI事 件地址空間的事件消息后,判斷當前寫入PCI事件地址空間中的事件消息狀況 是否滿足中斷觸發條件,如果是,則向CPU發送中斷以觸發CPU對各PCI事 件地址空間進行輪詢,否則不發送中斷。
8、 根據權利要求7所述的系統,其特征在于,所述PCI設備,用于產生事 件時,向PCI橋發送總線使用請求,在被所述PCI橋授予總線使用權后,在PCI 總線上發送事件消息以寫入該事件消息的事件類型所對應的PCI事件地址空 間;所述PCI橋,用于接收到所述總線使用請求后,在所述PCI設備滿足PCI 總線使用規則時,向所述PCI設備授予總線使用權。
9、 根據權利要求7所述的系統,其特征在于,該總線中斷代理具體包括 消息監聽單元、條件判斷單元和中斷發送單元;所述消息監聽單元,用于監聽PCI總線上的事件消息;所述條件判斷單元,用于在所述消息監聽單元監聽到寫入PCI事件地址空 間的事件消息后,判斷當前寫入PCI事件地址空間中的事件消息狀況是否滿足 中斷觸發條件;所述中斷發送單元,用于在所述條件判斷單元的判斷結果為是時,通過所 述PCI橋向CPU發送中斷以觸發CPU對各PCI事件地址空間進行輪詢,在所 述條件判斷單元的判斷結果為否時,不發送中斷。
10、 根據權利要求9所述的系統,其特征在于,所述條件判斷單在所述消 息監聽單元監聽到寫入PCI事件地址空間的事件消息后,確定監聽到的所述事 件消息要寫入的PCI事件地址空間,判斷所述要寫入的PCI事件地址空間中的 事件消息量是否達到針對該事件消息的事件類型所設置的閾值,如果是,則確 定當前寫入PCI事件地址空間中的事件消息狀況滿足中斷觸發條件。
全文摘要
本發明提供了一種上報中斷的方法和外設組件互連標準(PCI)總線系統,在PCI總線上連接總線中斷代理,其中方法包括總線中斷代理監聽PCI總線上的事件消息,監聽到寫入PCI事件地址空間的事件消息后,判斷當前寫入PCI事件地址空間中的事件消息狀況是否滿足中斷觸發條件,如果是,則向CPU發送中斷以觸發CPU對各PCI事件地址空間進行輪詢,否則不發送中斷。應用本發明能夠減少CPU負擔和保證事件能夠得到及時處理。
文檔編號H04L12/02GK101442439SQ200810239788
公開日2009年5月27日 申請日期2008年12月17日 優先權日2008年12月17日
發明者娜 尹, 鑫 李, 王厚雪 申請人:杭州華三通信技術有限公司