《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 雙機通信在CPCI總線上的實現

雙機通信在CPCI總線上的實現

2008-08-28
作者:尚長興, 俞定玖, 季新生

  摘 要: 介紹了PCI Bridge的工作原理,基于地址映射" title="地址映射">地址映射機制提出了SBC(Single Board Computer)間直接內存訪問的新方案。該方案可將板間通信效率提高6倍以上,并可服務于各種高層應用。
  關鍵詞: CPCI總線 地址映射 PCI Bridge 單板計算機 性能優化


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


  從這個過程可以了解到,PCI-to-PCI Bridge有兩種基本的功能:
  (1)地址映射功能。雖然同是對網卡進行訪問,但PCI Bus0與PCI Bus1上的地址意義是不同的。兩個地址分屬各自的地址空間,通過PCI-to-PCI Bridge實現兩個地址的映射。根據這兩個地址是否相同,可將PCI-to-PCI Bridge區分為兩種類型:
  ·PCI-to-PCI Transparent Bridge。PCI Bridge不對PCI Bus0上的地址進行轉換,直接將其映射到PCI Bus1上。PCI Bus0與PCI Bus1上的地址是相同的。
  ·PCI-to-PCI Non Transparent Bridge。PCI Bus0上的地址必須經過PCI Bridge的轉換,才能映射到PCI Bus1上。PCI Bus0與PCI Bus1上的地址是不同的。
  (2)地址過濾功能。PCI Bridge在把PCI Bus0上的地址向下游總線(ISA Bus、PCI Bus1)傳遞時,具有選擇性。在圖1中,CPU在PCI Bus0上所產生的地址,只有對SCSI和Ethernet的訪問,PCI-to-PCI Bridge才予以接收;而對于PCI Bus0的其他地址,PCI-to-PCI Bridge均不予響應。每一個PCI Bridge所響應的地址范圍,可形象地稱其為此PCI Bridge的地址窗口,只有當上游總線的地址落進PCI Bridge的地址窗口中,PCI Bridge才響應此地址并向下游總線傳遞。
2 雙機通信的具體實現
  本節以Motorola公司提供的CPX8000系列工控機為例,介紹了如何通過CPCI總線實現雙機間的通信。如圖2所示,兩個SBC通過背板上的CPCI總線實現了物理上的連接。如果兩個SBC能夠互相訪問對方的內存,就可實現兩者間的數據交流。以系統處理機板" title="機板">機板(System Processor Board,又稱主機板" title="主機板">主機板)訪問非系統處理機板(Non-system Processor Board, 又稱子機板)內存為例,介紹雙機通信的具體實現。本方案已在Lynx及VxWorks實時操作系統上實現。


  在圖2中,主機板CPU若要訪問子機板中的1MB" title="1MB">1MB內存單元,必須將這塊內存映射到主機板CPU的虛擬地址空間中,可以通過對主機板、子機板、主機板與子機板的接口配置來達到目的。此1MB的內存單元可被映射到不同的地址空間(如CPU虛擬地址空間、物理地址空間、本地PCI地址空間、系統CPCI地址空間等),映射地址也各不相同。在圖2中,對于此1MB內存的起始單元在不同地址空間中的映射地址,分別用符號A1、A2、…A7表示。
2.1 子機板的配置
  (1)調用內核內存分配函數申請1MB的內核虛擬地址空間,得到申請空間的開始地址A7。
  (2)根據操作系統的內存映射關系,得到虛擬地址A7的物理映射地址A6。
  (3)Raven ASIC是一個Host-to-PCI Bridge,因為Processor Bus不是一個標準總線,所以通過Raven將其轉換為PCI總線,以掛接各類PCI設備。CPU和Raven一起構成了一組套片(chipset),配合使用。根據Raven的設置,獲得物理地址A6在Local PCI Bus的映射地址A5。
  (4)21554是一PCI-to-PCI Non Transparent Bridge,并可進行雙向數據傳遞。通過其內部的兩個配置寄存器,將其地址窗口的大小設為1MB;地址窗口的起始地址在Local PCI Bus端設為A5。
2.2 主機板的配置
  (1)申請大小1MB的內核虛擬地址空間,得到其開始地址A1。
  (2)根據操作系統的內存映射關系,得到虛擬地址A1的物理映射地址A2。
  (3)根據Raven的設置,得到物理地址A2在Local PCI Bus上的映射地址A3。
  (4)21154是一PCI-to-PCI Transparent Bridge,它也可以在兩個方向上進行數據訪問。設置其內部的兩個配置寄存器,將其地址窗口的大小設為1MB;地址窗口的起始地址設置為A3。由于21154的透明性,地址A3與其在System CPCI Bus端的映射地址A4的值是相同的。
2.3 主機板與子機板的接口配置
  在主機板端對子機板進行配置,設置21554的配置寄存器,將其在System CPCI Bus端的地址窗口開始地址設為A4。由于在Local PCI Bus端的地址窗口起始地址已設為A5,所以將地址A4映射到了地址A5。可以看到,由于21554的非透明性,使主機板與子機板的地址空間相互隔離,各自可獨立分配,并在System CPCI Bus級實現了對接。在主機板CPU看來,整個子機板與主機板網卡一樣,都是掛在主機板Local PCI Bus下的一個外設。對子機板的訪問與對主機板網卡的訪問方式是一樣的,沒有什么不同。
2.4 地址轉換流程
  當所有的配置完成后,主機板CPU只對地址A1進行讀寫操作,便可實現對子機板1MB內存起始單元的訪問;對1MB內存中其他單元的訪問,只要將地址A1加上相應的偏移量即可。通過下面的地址轉換流程,可以清楚地看到各級地址是如何通過一級級映射,最終命中指定單元的。
  主機板CPU給出虛擬內存訪問地址A1→主機板物理地址A2→主機板Local PCI Bus地址A3→System CPCI Bus地址A4→子機板Local PCI Bus地址A5→子機板物理地址A6→經Falcon Memory Controller譯碼后,選中所申請的1MB內存的起始單元。
  從上述介紹可以看出,要想實現雙機的內存互訪,關鍵是要進行正確的地址映射。當要實現多個SBC間的相互訪問時,地址的映射會更復雜,需要對操作系統的地址空間分配、各個SBC的PCI-to-PCI Bridge設置、System CPCI Bus地址空間分配等進行通盤考慮。
3 性能優化
  圖3、圖4是用VMETRO的總線分析儀截獲的數據。分別是在兩個SBC間進行讀寫訪問時,連續進行100 Byte傳輸的時間圖。


  從圖3可以看出,每進行一次4Byte的讀操作,要花費956.8+4×149.5+179.4=1734.2ns,這相當于1734.2ns/29.9ns=58 PCI clock cycles。
  從圖4可以看到,第一個4Byte的寫操作花費了159.5ns,接著是兩次猝發傳送,隨后一個4Byte寫操作花費了119.6ns。進行一次4Byte的寫操作平均花費(159.5ns+2×29.9ns+119.6ns)/(4×29.9ns)=11 PCI clock cycles。
  對比讀寫兩種訪問方式可以看出,寫操作比讀操作的效率要高得多。這主要有以下一些原因:
  (1)當PCI上的一個主設備發起對一個目標設備的訪問時,讀和寫操作的完成時間差別很大。目前的PCI設備中一般都有一個用于存儲器寫的轉發(post)緩沖器。若要進行寫操作(如圖2中主機板對子機板的寫操作),主設備只需將其寫緩沖區數據復制到目標設備的轉發緩沖器中,便認為操作完成。例如在圖2中,主機板的Raven只要將數據發給21154,便認為寫操作完成,后續的數據傳輸由21154驅動完成。可以看到,寫操作在目的總線上(子機板的Process Bus)完成之前可以先在源總線上(主機板的Local PCI Bus)完成,實際上是寄存器對寄存器的操作。而要實現一個讀操作,則必須經過存儲器本身的訪問和各級PCI接口的邏輯延遲才可完成。與寫操作相比,讀操作在源總線上完成之前必須先在目的總線上完成,這導致了讀操作的效率很低。
  (2)從圖3、圖4中可以看到,PCI設備還可進行寫操作的猝發操作,但讀操作則無法進行。這是由于猝發操作只有在前一事務是寫事務時才能實現。猝發傳送取消了FRAME#、AD、C/BE#、IRDY#、TRDY#、DEVSEL#等總線信號的周轉周期,實現了每一個PCI clock cycle進行一次數據傳送。
  (3)猝發傳送操作不可能無限制地進行下去。連續進行猝發傳送的次數與轉發緩沖器的大小、Latency Timer的取值、總線的繁忙狀況都有關系。
  由于以上原因,在兩個SBC間進行數據傳送時,應該采用如下方式:
  (1)提供數據的SBC應將數據直接寫到消費數據的SBC內存中;而不是提供者將數據放在本地內存,再由消費者經過PCI讀操作來實現。也就是說,總是進行PCI寫操作。
  (2)當需要在多個SBC間進行數據互傳時,要合理地設置Latency Timer的取值,以使各SBC公平使用PCI總線資源。
  考慮兩個子機板間的通信實現。若采用操作系統提供的消息傳遞機制,數據提供者必須先將數據寫到主機板,數據消費者再從主機板讀取數據。對一個4 Byte的數據傳輸來說,平均要花費58+11=69 PCI clock cycles。若采用本文提供的方法,提供數據的SBC將數據直接寫到消費數據的(接上頁)
SBC內存中,則傳輸一個4 Byte的數據,平均只需11 PCI clock cycles。可知,后者比前者快了69/11≈6.3倍,極大提高了傳輸效率。
參考文獻
1 Motorola.MCP750 Series Single Board Computer Programmer’s Reference Guide. Motorola, 2001
2 Motorola. CompactPCI Single Board Computer Programmer’s Reference Guide. Motorola, 2001
3 Intel.21554 PCI-to-PCI Bridge for Embedded Applications Hardware Reference Manual. Intel,1998
4 Intel. 21154 PCI-to-PCI Bridge Configuration Application Note. Intel,1998
5 Wind River.VxWorks Programmer′s Guide. Wind River Systems Inc,1998
6 Lynx. Lynx Device Driver Service Manual. Lynx, 2000
7 T.Shanley, D.Anderson. PCI System Architecture(4th Edition).USA: Addison Wesley Longman,1999

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲综合精品自拍| 亚洲国产欧美日韩精品| 国产毛片精品国产一区二区三区| 久久综合一区二区| 亚洲欧美日本在线| 亚洲电影观看| 亚洲在线不卡| 99v久久综合狠狠综合久久| 国模精品娜娜一二三区| 欧美丝袜一区二区| 欧美丰满高潮xxxx喷水动漫| 开心色5月久久精品| 久久人人精品| 久久影视三级福利片| 久久资源在线| 老司机精品福利视频| 久久一综合视频| 蜜臀av一级做a爰片久久| 免费欧美日韩国产三级电影| 欧美91福利在线观看| 欧美成年人视频网站欧美| 欧美成人亚洲成人日韩成人| 欧美高清你懂得| 欧美日韩国产123| 欧美日韩在线精品一区二区三区| 欧美深夜影院| 国产精品电影网站| 国产精自产拍久久久久久| 国产视频观看一区| 伊人精品在线| 亚洲精品日韩久久| 一区二区三区日韩精品视频| 亚洲综合三区| 欧美在线视频网站| 91久久在线| 中文久久精品| 亚洲欧美制服另类日韩| 久久国产一区二区| 麻豆精品在线播放| 欧美理论电影在线观看| 国产精品久久午夜| 国语自产精品视频在线看一大j8| 亚洲第一页在线| 99国产精品| 香蕉久久久久久久av网站| 久久精品免费看| 99视频有精品| 欧美亚洲专区| 欧美xart系列高清| 国产精品久久波多野结衣| 国产区亚洲区欧美区| 亚洲成色777777在线观看影院| 亚洲美女黄色| 性欧美大战久久久久久久免费观看 | 欧美日韩一区二区三| 国产精品日产欧美久久久久| 韩国成人理伦片免费播放| 亚洲国产精品热久久| 亚洲图片在线观看| 亚洲国产成人porn| 亚洲综合另类| 欧美成人xxx| 国产精品夜夜夜一区二区三区尤| 黄色一区二区三区四区| 日韩亚洲一区在线播放| 久久aⅴ国产欧美74aaa| 中文久久精品| 狼人社综合社区| 国产精品国产三级国产aⅴ入口| 国语自产精品视频在线看8查询8| 一本色道**综合亚洲精品蜜桃冫| 欧美在线一区二区三区| 一本久久综合亚洲鲁鲁五月天| 欧美一区二区性| 欧美日韩另类国产亚洲欧美一级| 国内精品**久久毛片app| 99国产麻豆精品| 亚洲第一黄色| 午夜精品久久久久久久99热浪潮| 男女精品网站| 国产亚洲欧美一区在线观看| 亚洲精品欧美在线| 久久精品99无色码中文字幕 | 久久尤物电影视频在线观看| 欧美午夜精彩| 亚洲成人在线观看视频| 欧美一区二区播放| 亚洲专区国产精品| 欧美激情片在线观看| 国产一区深夜福利| 亚洲在线不卡| 亚洲视频在线播放| 你懂的亚洲视频| 国产日韩欧美高清免费| 一本久久综合亚洲鲁鲁| 亚洲美女视频在线观看| 久久久天天操| 国产欧美一区二区三区另类精品 | 国产日韩欧美一区| 亚洲一区二区在线看| 一本久久青青| 欧美精品18| 亚洲国产精品一区制服丝袜| 欧美在线日韩| 欧美一区二区三区视频| 国产精品日本精品| 亚洲午夜精品久久久久久浪潮| 国产精品99久久久久久有的能看 | 国产主播喷水一区二区| 小辣椒精品导航| 午夜精品剧场| 国产精品久久久爽爽爽麻豆色哟哟| 日韩一级二级三级| 在线亚洲精品福利网址导航| 欧美激情综合色| 亚洲精品免费看| 一本色道久久加勒比88综合| 欧美另类久久久品| 亚洲精品久久久久久一区二区| 亚洲乱码一区二区| 欧美精品xxxxbbbb| 亚洲精选一区二区| 一区二区三区欧美亚洲| 欧美日韩精品一区二区在线播放 | 亚洲精品久久久蜜桃| 免费观看欧美在线视频的网站| 伊人久久久大香线蕉综合直播 | 亚洲国产小视频| 亚洲精品视频啊美女在线直播| 欧美成人激情视频免费观看| 亚洲国产精品va在线观看黑人 | 欧美丝袜第一区| 亚洲一区二区3| 欧美一区二区三区日韩视频| 国产欧美在线播放| 欧美中文在线字幕| 免费成人毛片| 亚洲精品综合| 亚洲欧美日韩在线| 国产亚洲精品福利| 亚洲国产日韩一区二区| 欧美精品国产精品| 在线一区二区视频| 欧美在线视频一区| 在线不卡中文字幕| 一区二区日韩伦理片| 国产精品欧美精品| 欧美一区二区三区久久精品茉莉花| 久久美女艺术照精彩视频福利播放| 精东粉嫩av免费一区二区三区| 亚洲精品黄色| 欧美手机在线| 欧美在线观看日本一区| 欧美a级片网站| 夜夜嗨网站十八久久| 欧美一区二区三区视频在线观看| 国内精品99| 正在播放日韩| 国产欧美一区二区三区另类精品 | 99re热这里只有精品视频| 国产精品v欧美精品∨日韩| 欧美一区二区三区播放老司机| 免费观看国产成人| 亚洲视频网站在线观看| 久久精品综合| 最新国产乱人伦偷精品免费网站| 亚洲午夜精品福利| 国产亚洲精品一区二555| 日韩一级在线观看| 国产美女精品视频| 亚洲精品一二| 国产精品自拍小视频| 亚洲欧洲日本mm| 国产精品美腿一区在线看| 久久精品国产亚洲一区二区三区| 欧美日韩午夜精品| 久久精品五月婷婷| 欧美四级伦理在线| 亚洲高清资源| 国产精品日韩在线| 亚洲美女中出| 国产一区二区三区在线观看网站 | 亚洲午夜视频| 国内揄拍国内精品久久| 亚洲午夜激情| 伊人狠狠色j香婷婷综合| 亚洲欧美日韩精品久久奇米色影视 | 亚洲欧洲另类国产综合| 国产精品日韩欧美综合| 日韩一级在线| 国语精品中文字幕| 亚洲免费中文| 亚洲精品久久久久久久久久久| 久久久精品国产免大香伊| 一本色道久久综合亚洲精品不卡| 久久这里有精品15一区二区三区| 亚洲无限乱码一二三四麻| 欧美激情乱人伦| 亚洲国产高潮在线观看| 国产欧美精品一区aⅴ影院|