雙機通信在CPCI總線上的實現(xiàn)
——
關鍵詞:CPCI總線 地址映射 PCI Bridge 單板計算機 性能優(yōu)化
在電信、電力、國防等應用領域中,經(jīng)常要求其所用設備有極高的實時性。當需要在各個設備間進行大容量的信息交換時,傳統(tǒng)的網(wǎng)絡包交換模式已不能很好地滿足實時性的要求。而借助于CPCI總線,兩個設備可以互訪對方的內(nèi)存,具有傳輸速度快、傳輸容量大和高可靠性等特點,非常適合大容量的信息傳遞。國家數(shù)字交換系統(tǒng)工程技術研究中心承擔的國家863計劃項目——“中國第三代移動通信系統(tǒng)”CDMA2000系統(tǒng)集成就選擇基于CPCI總線的多SBC平臺。各個SBC間的通信效率直接決定了整個系統(tǒng)性能的高低。目前常用的實時操作系統(tǒng)如VxWorks、Lynx等,都針對CPCI總線實現(xiàn)了消息隊列,可用于SBC間的消息通信。但VxWorks、Lynx中消息傳遞的實現(xiàn)方式很不靈活,一般是通過在一個特定的SBC(通常為system board)中開啟一塊共享內(nèi)存,其他各個SBC(通常為non system board)通過對共享內(nèi)存的讀寫交換信息;每完成一次兩個non system SBC間的信息交換,都要進行一次PCI讀寫操作,效率不高。另外VxWorks、Lynx中的消息長度都有一個最大值,當要進行大數(shù)據(jù)量(如1GB的內(nèi)存數(shù)據(jù)庫)的信息傳輸時,操作系統(tǒng)提供消息傳遞機制也無能為力。而以上這些問題,都可以通過任意兩個SBC間的直接內(nèi)存訪問得到解決。本文首先介紹了PCI Bridge的工作原理;然后以Motorola公司提供的CPX8000系列工控機為例,討論了兩個SBC是如何基于背板(Backplane)上的CPCI總線,并利用PCI Bridge的地址映射機制,通過互訪內(nèi)存的方式最終實現(xiàn)雙機通信;最后介紹了實際應用時應注意的性能優(yōu)化問題。
1 PCI Bridge的工作原理
在簡單的計算機系統(tǒng)中,其擁有的外部設備較少,單級總線結構便能滿足系統(tǒng)的需要。但是由于單個 PCI總線可支持的 PCI 設備數(shù)量有電氣限制,對擁有大量外設的計算機系統(tǒng)而言,單級總線結構已不能滿足系統(tǒng)的要求,因此便產(chǎn)生了橋接設備。通過PCI-to-PCI Bridge可擴展出新的PCI總線,通過PCI-to-ISA Bridge可擴展出ISA總線。借助PCI Bridge這些特殊的PCI設備,系統(tǒng)中各級總線被粘和在一起,使整個系統(tǒng)成為一個有機整體。
每個PCI設備都有自己的PCI I/O空間、PCI內(nèi)存空間和PCI配置空間(configuration space)。PCI設備的設備驅(qū)動程序?qū)CI配置空間進行初始化設置后,各個智能控制器如CPU、DMA控制器等,可以對PCI設備的PCI I/O空間、PCI內(nèi)存空間進行訪問。在圖1中,CPU若要訪問網(wǎng)卡,首先會在PCI Bus0上生成一個物理地址,這個地址經(jīng)PCI-to-PCI Bridge的過濾及轉(zhuǎn)換后,在PCI Bus1上產(chǎn)生一PCI Bus地址,網(wǎng)卡通過地址譯碼,響應對這個地址的訪問。
圖1 基于PCI的系統(tǒng)
從這個過程可以了解到,PCI-to-PCI Bridge有兩種基本的功能:
(1)地址映射功能。雖然同是對網(wǎng)卡進行訪問,但PCI Bus0與PCI Bus1上的地址意義是不同的。兩個地址分屬各自的地址空間,通過PCI-to-PCI Bridge實現(xiàn)兩個地址的映射。根據(jù)這兩個地址是否相同,可將PCI-to-PCI Bridge區(qū)分為兩種類型:
評論