CPCI總線的分布式系統設計應用
圖3板卡數據接收“抽屜”本文引用地址:http://www.104case.com/article/162663.htm
基于這種報文存儲機制,我們定義幾種地址表來維護數據傳輸相關地址信息。系統板上維護有靜態的基址表,記載為每個卡槽上板卡預先分配的基址。所有板卡上都維護有板卡地址映射表和傳輸地址偏移表。板卡地址映射表為一個結構數組,數組中各項分別代表一個卡槽,里面包含板卡名稱、卡槽號、基址和地址范圍等地址信息以供數據傳輸時配置所用,其數據結構如下:
typedefstruct_BUS_ADDR_MAPPING_INFO{
charboard_name[BOARD_NAME_LENGTH];
intslot_number;
unsignedlongbase_addr;
unsignedlongrange;
}BUS_AddrMapping_Info,*P_BUS_AddrMapping_Info;
傳輸地址偏移表為一無符號整型數組,用于記錄板卡間數據傳輸時各板卡的地址偏移,初值均為零,每次傳輸完畢,接收板卡的地址偏移就增加當次數據傳輸長度,當地址空間不足以存放即將傳輸的數據時,則將偏移地址設為零,重新從區域起始處寫入。其數據結構定義如下:
u32current_offset_table[NUM_OF_SLOT]={0,0,0,0,0,0,0,0};
3.2數據傳輸實現
我們定義了一種數據結構IPH(InternalPacketHeader),包含數據類型、長度、來源卡槽號等屬性,在傳輸數據前作為包頭對報文進行封裝,以便接收方解析包頭后能根據數據業務類型區分處理。主要IPH類型有板卡配置信息,端口注冊信息,路由信息,未知數據類型等。定義數據結構iph_attr區別不同IPH_info類型,位于數據包首,其數據結構如下:
typedefstruct_IPH_ATTR{
u32board_id;/*fromwhichboard*/
intiph_type;/*datagramtype*/
unsignedlonglength;/*datagramlength(withoutIPH)*/
}IPH_ATTR,*P_IPH_ATTR;
針對各種類型IPH信息又分別定義不同數據結構,在數據包頭中依次存放于iph_attr結構之后。
發送數據時,對數據進行IPH封裝,根據前述的板卡地址映射表選擇目的PCI地址,再調用總線接口函數完成數據傳輸。發送方通過寫接收板卡橋芯片的mailbox寄存器,將傳輸地址及數據長度信息通知接收方,產生中斷觸發接收。PLX橋芯片支持local總線對PCI總線的直接訪問,它有8個mailbox寄存器,前四個能產生中斷,每個mailbox32位,傳輸地址和數據長度信息分別使用mailboxi和mailboxi+4配合工作,這樣接收方收到兩個參數時會產生一次中斷,進行數據接收[5]。這種機制使接收處理具有四個服務窗口,提高了系統吞吐量。
接收板卡PLX芯片的mailbox被寫入參數即產生本地中斷檢查“抽屜”,產生中斷前,數據實際上已被發到目標板卡上了。中斷服務程序為接收端維護一個數據隊列,它讀取mailbox中的信息,分析地址找到相應數據并交由底半處理。底半解析數據包的IPH分辨數據類型,若為配置、端口、路由等信息則進行相應配置,若為數據信息則進行處理或轉發。
綜上所述,系統通過“抽屜機制”和對幾種地址表的維護完成了各板卡之間PCI地址空間的映射,板卡將數據寫往映射地址空間即能通過總線將數據傳輸到目標板卡上,實現了板卡的跨總線內存訪問;自定義IPH數據包頭來區分數據類型協助數據信息管理,完成了路由維護,轉發引擎的邏輯功能,實現了數據的無干擾傳輸與有效通信管理。
4.總結及展望
本文作者創新點為:給出了一種基于CPCI的分布式系統設計,同時提出了基于“抽屜機制”的報文存儲機制和地址信息維護策略。文章所述的基于CPCI的分布式系統,可達到64bit總線寬度、264MB/s的峰值帶寬,系統中各主機能獨立完成數據處理及通信,能夠承載語音、數據多種業務,用戶還可通過用戶接入板與語音業務板所連的PSTN網和數據業務板所連Internet進行數據通信,在通信、軍事等領域有著較大的應用前景。為使本通信系統更具大規模實用價值,未來的工作包括:
(1)實現一套易操作的遠程管理系統,以便完成通信業務的監控,調配;
(2)設計支持更多業務類型的CPCI接口板卡,如xDSL,H.264等;
(3)在外界干擾較大情況下,通過嚴格的性能測試以證明系統能夠滿足電信級的業務需求。
評論