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