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