文獻標識碼: A
文章編號: 0258-7998(2014)12-0107-03
0 引言
近年來,RapidIO總線作為嵌入式領域的總線互聯標準,以其高性能、低延遲、低引腳數和低功耗等特點得到了廣泛關注,基于RapidIO總線互聯的嵌入式系統硬件技術日益成熟[1-3]。在系統應用方面,目前有兩種數據傳輸方式:(1)直接使用RapidIO邏輯層功能;(2)將RapidIO邏輯層功能與通用協議適配。前者由于缺乏節點間端到端互聯功能,很難應對多任務并發的系統應用;對于第二種方式,Linux平臺上采用了設備抽象的方式,將消息與門鈴功能接入TCP/IP協議[4-5],vxWorks平臺通過內存映射機制提供了對TIPC協議的支持[6-7]。采用第二種方式雖然能夠支持復雜的應用,但冗余的協議處理使其很難應付對帶寬、時延都要求特別高的場合。本文針對RapidIO邏輯層消息機制的傳輸特點,設計實現了采用HOST節點集中控制的RapidIO通信中間件,解決了PE節點間高效的端對端數據傳輸問題。
1 RapidIO通信中間件
RapidIO通信中間件采用了分層的設計思想,RIO消息驅動層負責對RapidIO總線接口進行管理,包括收發郵箱的初始化、硬件收發隊列的管理、中斷的響應等操作。邏輯鏈路層實現對節點之間點對點鏈路的維護,將郵箱功能映射為數據包發送與數據包接收隊列。虛通道層將邏輯鏈路層單個收發隊列復用為多個虛通道,提供給邏輯事務層使用??刂拼硎褂每刂铺撏ǖ肋M行HOST節點與PE節點之間控制信息的交互,應用程序使用應用虛通道傳輸數據。RapidIO通信中間件采用工作進程進行各類任務的處理,邏輯鏈路層與虛通道層各部署了一個工作隊列,圖1給出了RapidIO通信中間件層次模型。
1.1 虛通道狀態
RapidIO通信中間件為每個虛通道維護了一個虛通道狀態,在虛通道對象創建時處于UC狀態,并主動向對端發送請求包;然后根據收到請求包、應答包的先后順序,分別經過URP、UBB向正常狀態NM躍遷,虛通道上的超時定時器避免握手時發生死鎖。處于NM狀態的虛通道可正常收發數據,當發送處于擁塞狀態時,會切換到擁塞狀態CGST,待擁塞恢復后方能繼續發送數據。掛起狀態HG使得HOST節點能夠根據當前系統需求,暫停、恢復PE節點上的虛通道數據傳輸功能,刪除態DEL使得虛通道對象能夠在資源釋放完畢后正常銷毀。圖2給出了虛通道狀態的變遷。
1.2 虛通道的建立
RapidIO通信中間件中應用虛通道的建立采用了對等握手的機制。PE節點中虛通道控制代理負責接收HOST指令,發起對等握手過程,并將結果反饋給HOST節點??刂铺撏ǖ赖慕⒉捎肏OST節點主動發起、PE節點被動建立的方式。圖3給出了控制虛通道與應用虛通道的建立過程。
1.3 虛通道句柄映射
RapidIO通信中間件采用通信句柄對虛通道進行標識,應用程序通過預分配的虛通道名稱獲取通信句柄進行數據傳輸。獲取通信句柄時,若對應的虛通道已經建立,則將分配的句柄結構與虛通道對象進行雙向關聯;若虛通道未建立,則將虛通道名稱保存在分配的句柄結構中,待對應的虛通道建立后,掃描通道句柄映射表,實現通信句柄的延遲綁定。圖4給出了通道句柄與通道對象映射關系。
1.4 數據包傳輸
RapidIO通信中間件采用了M_BLK與CLUSTER兩類緩存對象進行內部數據包的傳遞,CLUSTER作為存放數據包內容的載體,M_BLK負責對CLUSTER中的包頭信息進行描述,并通過單向指針與CLUSTER一對一關聯。每個M_BLK有相互索引的雙向指針,可方便地掛接到邏輯鏈路層與虛通道層的傳輸隊列上。為提高搜索效率,緩存池中的M_BLK采用固定64 B長度,而CLUSTER則在長度2N(5≤N≤12)中取值,每種CLUSTER所占比例可根據系統應用進行配置。數據包在各層之間傳遞時,只需修改M_BLK中的雙向指針,避免了數據的拷貝。同時,RapidIO通信中間件啟用了硬件消息隊列模式,CPU提交數據包到隊列后,不必等待消息發送完畢,從而達到CPU與硬件接口并行工作的目的。
1.5 流控機制
RapidIO通信中間件基于消息目的端流控,采用ACK包交互實現了源端流控功能。ACK包向對端通報本地端接收隊列的信息,包括接收隊列總共已接收包個數(TotalRcvPacks)、還可以接收包個數(AllowRcvPacks)。定義發送端允許發送包個數AllowSendPacks,發送端總共已發送包個數TotalSendPacks,則有AllowSendPacks=Allow-RcvPacks-(TotalSendPacks-TotalRcvPacks)。當AllowSend-Packs=0時發送端將進入擁塞狀態直至收到對端ACK包使AllowSendPacks>0。接收端在接收隊列中包個數為隊列長度的1/2時,將向發送端發送ACK包,圖5給出了AllowSendPacks在傳輸過程中的變化過程。
2 RapidIO通信中間件性能評估
基于RapidIO通信中間件的設計思想,實現了RapidIO通信中間件的vxWorks版本,支持vxWorks5.5.1。測試環境為3個MPC8548E節點通過2個TSI578交換節點互聯的系統,RapidIO物理層工作在1X模式,頻率為1.25 GHz,其中一個MPC8548E作為HOST節點,其余兩個MPC8548E作為PE節點。HOST節點配置兩個PE節點之間的物理路徑[8]與應用虛通道,兩個PE節點在虛通道上傳輸數據進行性能測試。
測試數據長度在2n基礎上減去了8 B的數據幀頭,使消息能夠以最高效的方式傳輸。在帶寬指標測試中,RapidIO物理層1.25 GHz的工作頻率8 B/10 B轉換后,提供給RapidIO邏輯層的極限帶寬為125 MB/s,RapidIO消息層損失了大約10%的傳輸帶寬,經過RapidIO通信中間件的虛通道層后,測試的極限帶寬達102 MB/s。在時延指標測試中,不超過64 B的短數據傳輸時延都在25 s以下。圖 6與圖 7分別給出了傳輸不同長度數據時的帶寬與時延。
3 結束語
RapidIO總線技術作為新一代芯片級互聯總線的代表,在嵌入式領域具有廣泛的應用前景,然而,缺少基于邏輯層業務的端對端通信功能大大限制了該總線在復雜系統中的應用。設計的RapidIO通信中間件在消息機制上提供了虛通道數據傳輸功能。高帶寬、低時延以及易于實現功能遷移與重構的特性使其具備很強的工程應用價值??梢钥闯?,在本文采用的流控機制中,接收端回復ACK包的策略沒有考慮傳輸特征因子的影響,造成ACK包的占比偏高,需要在后期工作中進一步優化。
參考文獻
[1] RapidIO Trade Association.RapidIO,PCI express and giga-bit ethernet comparison,Rev 03[Z].2005.
[2] RapidIO Trade Association.RapidIOTM interconnect specifi-cation part 6:1x/4x LP-serial physical layer specification,Rev.1.3[Z].2005.
[3] RapidIO Trade Association.RapidIO interconnect specifica-tion,Rev.1.3[EB/OL].(2008-05-08).www.rapidio.org.
[4] PORTERM.RapidIO for Linux[EB/OL].(2008-05-06).htttp://www.kernel.org/doc/ols/2005/ols2005v22pages243256.pdf.
[5] COMER D E,STEVENS D L.用TCP/IP進行網絡互連第二卷:設計,實現與內核(第三版)[M].張娟,王海,黃述真,譯.北京:電子工業出版社,2001.
[6] Multicore Association.TIPC:transparent inter process com-munication protocol[Z].2006.
[7] Wind River Systems,Inc.Wind river TIPC programmer′sguide,1.7.6[Z].2009.
[8] 潘靈,桑楠.一種RapidIO網絡路徑分配策略[J].計算機應用,2008,28(Z2):294-295.