王運盛,王 堅,周 紅
(1.中電科航空電子有限公司,成都 611731;2.總參陸航部駐成都地區軍事代表室,成都 610036)
隨著硬件和軟件技術的不斷發展,越來越多的系統設計采用分布式處理體系結構,多個處理器、模塊甚至機箱協同工作,這就對相互之間的數據交換網絡提出了更高的要求。
RapidIO是一種開放標準的交換網絡技術,提供高性能、可靠、高效、可擴展的互連網絡,RapidIO得到了超過50家制造商和供應商的支持。RapidIO構架是一種基于高性能包交換的互連技術,主要功能是完成在一個系統內的微處理器、DSP、通信和網絡處理器、系統存儲器以及外設之間數據的高速傳輸。它成功解決了處理器集成芯片之間和線路板之間的互連問題。RapidIO采用通用的物理層、傳輸層、邏輯層和應用層劃分,提供基于地址的讀和寫操作功能,也提供包括DMA控制器的通用數據傳輸和消息發送功能,同時流數據和封裝過程傾向于采用DMA機制完成基本的數據傳輸。RapidIO的最新規范還提供了對原子操作、消息中斷、服務質量和封裝等功能。
但是,RapidIO規范并沒有定義應用層的API,用戶要使用RapidIO網絡必須自己實現網絡協議棧和應用程序接口函數[1]。RapidIO中必須附加開放的應用層協議和接口,才能充分發揮其高速傳輸、低開銷和可移植等特點。同時開放的接口也有助于軟件開發和系統集成,更加方便地實現網絡容錯和降級使用等功能,極大地提高嵌入式系統的網絡和傳輸性能。TIPC就是滿足這些功能要求的開放的網絡協議和接口。筆者將TIPC網絡協議與RapidIO總線相結合,在AMC8548上實現了基于RapidIO網絡的TIPC通信軟件,該通信軟件在實際的軟硬結合測試環境中表現良好。
透明的處理器間通信(Transparent Inter-Processor Communication,TIPC)是一種開放的處理器間通信的協議,它提供面向消息的、與位置無關的通信服務。TIPC具有高速、實現代碼量少和良好的可擴展性等特點。同時它還提供低效運行、可靠傳輸和系統監控能力,適合于高速、延時要求苛刻的實時處理系統。TIPC還符合標準的套接字API接口,支持從多核到簇系統規模的網絡,支持動態的網絡發現。TIPC最早由愛立信提出,并用在其電信基站等系統中完成數據收發和中繼功能。除了普通的進程間的通信,TIPC的設計甚至考慮了多核處理器同一內核上的進程之間以及不同處理器內核之間通信,并保持尋址與接口的透明,因此TIPC的運行性能優于TCP/IP。
TIPC對網絡的通信過程進行抽象,形成通用的通信模型,如圖1所示。TIPC定義了端口、處理器節點、鏈路、傳輸設備等抽象模型。這些模型的抽象,不僅提高了TIPC在不同硬件平臺上的可移植性,也使得TIPC實現了與位置無關的通信能力。

圖1 TIPC的通信模型Fig.1 TIPC communication module
如圖1所示,在TIPC通信系統中,端口與功能關聯。處理器節點根據所提供的服務功能向外發布自己端口,其他處理器節點根據發布的服務和端口信息動態地維護本地的命名表,并將標志服務的端口與處理器的物理標識關聯,通過高效的算法將邏輯端口轉換成實際的物理地址。處理器通過物理ID確定通信的鏈路,最終由傳輸設備將數據發送出去。通信鏈路完成消息傳輸、序列排隊和重發的任務;承載者是物理或者邏輯上的傳輸介質,是完成數據發送和接收的傳輸設備,如以太網的硬件設備或者是邏輯上的UDP通信協議,也可以是RapidIO傳輸設備。
TIPC對網絡進行劃分,從大到小分為區域、簇和節點,節點又分為主節點和從節點。TIPC支持消息路由,消息可以在不同的區域之間、不同的處理器之間以及主處理器和從處理器之間進行路由,最終到達消息被指定的接收方,如圖2所示。

圖2 TIPC的網絡模型Fig.2 TIPC network module
TIPC網絡中的每個節點都保留著所有的從處理器節點、外部組和外部簇的路由信息,這些信息都被TIPC實時維護。每個節點的路由表發生變化時都會向其他節點發出廣播信息,通知路由表的變化,使得組內節點的路由表始終保持一致。TIPC也是采用這種方式來維護命名表的一致性。
在RapidIO與TIPC的結合中,RapidIO總線協議的物理層、傳輸層和邏輯層實現ISO會話層以下的功能。在對RapidIO和操作系統接口做適當的改動后,將TIPC移植到RapidIO總線上,將為用戶提供基于RapidIO的高效、完整的軟硬件解決方案,支持與位置無關的數據傳輸。圖3分別對RapidIO、TIPC以及硬件環境進行了說明。

圖3 基于RapidIO的TIPC通信層次Fig.3 Layered TIPC communication protocol based on RapidIO
TIPC層不但完成通信的資源管理、數據緩存管理、發送接收隊列管理和中斷管理,還具有建立發送和接收的數據塊描述字鏈表,通過鏈表的方式實現數據用戶數據到底層驅動的零拷貝的功能。同時TIPC層還監控網絡狀態,一旦網絡發生阻塞時,TIPC層會對要求發送的數據進行緩存,待網絡恢復正常時再發送,并對發送出錯的數據進行錯誤管理和重發管理。
RapidIO及其驅動程序提供數據通信的通道,通過共享內存的方式將數據交給TIPC處理。在RapidIO規范定義的數據幀結構中RapidIO的地址定義如圖4所示。RapidIO的地址定義使得RapidIO數據具有邏輯的地址空間,可以在處理器的內存空間與RapidIO的邏輯空間之間建立映射關系,從而將具有一定RapidIO邏輯地址的數據存放到目的端指定的內存中去。

圖4 RapidIO數據包格式Fig.4 Format of RapidIO data packet
在RapidIO總線上實現的共享內存通信過程如圖5所示。發送端首先將需要發送的數據的RapidIO地址設置成一段確定的RapidIO地址空間,并將數據通過 RapidIO網絡發送到目的端的RapidIO節點。接收端的接口設備可以配置RapidIO地址窗口,建立本地處理器內存與RapidIO地址之間的對應關系,將符合該窗口地址的數據發送到相應的地址空間中去。通常發送端也是通過開窗的方式,建立本地的地址與發送的RapidIO地址之間的對應關系。RapidIO的內存映射是雙向的過程,反之亦然,這樣就建立了發送和接收的雙向通道。

圖5 RapidIO內存映射工作原理Fig.5 Principle of RapidIO memory mapping
筆者在AMC8548上實現了基于RapidIO總線的TIPC通信協議。首先通過采用一個AMC8548作為主節點,對RapidIO網絡進行初始化,并掃描網絡中其他的RapidIO節點,然后分配其他RapidIO節點的網絡ID。當網絡通信工作正常后,先對內存映射機制的數據發送速率進行測試,然后再對TIPC的功能進行測試。
在對內存映射機制的數據發送速率測試中,先由MPC8548處理器的ATMU單元建立發送接收的地址窗口,再將本地內存地址和RapidIO邏輯地址建立映射關系,采用共享內存的方式實現兩個處理器之間的通信。在此基礎上,對TIPC的承載者進行修改,使之能夠驅動基于RapidIO的內存映射的數據收發。
測試的軟件環境要求如下:
Wind River Workbench 3.0;
Wind River Compiler 5.6;
Wind River GNU Compiler 4.1.2 forVxWorks 6.6;
Wind River VxWorks 3.0;
Wind River TIPC 1.7 Source。
主AMC8548設置為INBOUND窗,從AMC8548設置為OUTBOUND窗,從AMC8548調用DMA控制器將本地空間的海量數據(512 Mbyte)通過OUTBOUND窗拷貝到主AMC8548的本地內存(NWRITE或NWRITE_R操作)。筆者分別對4k/8k/16k/32k/1M/2M/4M窗測試其數據吞吐率,測試結果如圖6所示。

圖6 基于RapidIO共享內存吞吐率Fig.6 Throughput of communication based on RapidIO memory mapping
NREAD讀操作,因為需要發出讀請求,數據才能讀回,因此時間的開銷比NWRITE寫操作和NWRITE-R帶響應的寫操作多,所以在映射同樣大小的窗口情況下,讀操作的數據吞吐率最低。三種操作方式在映射窗口不斷增大的情況下,數據吞吐率也隨之增大,因為NWRITE寫操作不帶響應,所以其吞吐率最高。
對內存映射機制的數據發送速率的測試完成后,在WorkBench的開發環境中打開VxWorks-6.6的組件配置視圖,添加對TIPC通信協議的支持,并在BSP中將TIPC的底層函數映射到基于RapidIO的共享內存數據收發函數接口上,進行對TIPC的功能測試。首先分別為兩端綁定本地的TIPC地址和端口:

隨后進行TIPC的端口建立,其接口函數與通用的socket接口一致。也可采用VxWorks中TIPC所提供的測試組建,在shell下輸入 tipcTS進行測試。tipcTS集成了15個測試用例分別對TIPC的端口打開關閉、數據收發等功能進行測試,結果如下:


采用在RapidIO網絡上實現共享內存并構建TIPC的通信層次是可實現的。需要指出的是,TIPC所面向的網絡是類似于電信基站的大規模網絡,相當一部分功能是對網絡拓撲和路由信息的維護,而通常情況下面向嵌入式應用的RapidIO網絡規模很小,且網絡連接固定,直接將TIPC應用到RapidIO網絡并不能完全發揮兩者的優勢。對TIPC進行有針對性地裁剪,并結合RapidIO的網絡特點和基本操作,將有助于發揮兩者優勢,為嵌入式分布式系統提供高效方便的通信環境。
[1] Fuller S.RapidIO:The Embedded System Interconnect[M].北京:電子工業出版社,2006.Fuller S.RapidIO:The Embedded System Interconnect[M].Beijing:Publishing House of Electronic Industry,2006.