文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2014)12-0107-03
0 引言
近年來,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)對多任務(wù)并發(fā)的系統(tǒng)應(yīng)用;對于第二種方式,Linux平臺(tái)上采用了設(shè)備抽象的方式,將消息與門鈴功能接入TCP/IP協(xié)議[4-5],vxWorks平臺(tái)通過內(nèi)存映射機(jī)制提供了對TIPC協(xié)議的支持[6-7]。采用第二種方式雖然能夠支持復(fù)雜的應(yīng)用,但冗余的協(xié)議處理使其很難應(yīng)付對帶寬、時(shí)延都要求特別高的場合。本文針對RapidIO邏輯層消息機(jī)制的傳輸特點(diǎn),設(shè)計(jì)實(shí)現(xiàn)了采用HOST節(jié)點(diǎn)集中控制的RapidIO通信中間件,解決了PE節(jié)點(diǎn)間高效的端對端數(shù)據(jù)傳輸問題。
1 RapidIO通信中間件
RapidIO通信中間件采用了分層的設(shè)計(jì)思想,RIO消息驅(qū)動(dòng)層負(fù)責(zé)對RapidIO總線接口進(jìn)行管理,包括收發(fā)郵箱的初始化、硬件收發(fā)隊(duì)列的管理、中斷的響應(yīng)等操作。邏輯鏈路層實(shí)現(xiàn)對節(jié)點(diǎn)之間點(diǎn)對點(diǎn)鏈路的維護(hù),將郵箱功能映射為數(shù)據(jù)包發(fā)送與數(shù)據(jù)包接收隊(duì)列。虛通道層將邏輯鏈路層單個(gè)收發(fā)隊(duì)列復(fù)用為多個(gè)虛通道,提供給邏輯事務(wù)層使用。控制代理使用控制虛通道進(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),在虛通道對象創(chuàng)建時(shí)處于UC狀態(tài),并主動(dòng)向?qū)Χ税l(fā)送請求包;然后根據(jù)收到請求包、應(yīng)答包的先后順序,分別經(jīng)過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使得虛通道對象能夠在資源釋放完畢后正常銷毀。圖2給出了虛通道狀態(tài)的變遷。
1.2 虛通道的建立
RapidIO通信中間件中應(yīng)用虛通道的建立采用了對等握手的機(jī)制。PE節(jié)點(diǎn)中虛通道控制代理負(fù)責(zé)接收HOST指令,發(fā)起對等握手過程,并將結(jié)果反饋給HOST節(jié)點(diǎn)。控制虛通道的建立采用HOST節(jié)點(diǎn)主動(dòng)發(fā)起、PE節(jié)點(diǎn)被動(dòng)建立的方式。圖3給出了控制虛通道與應(yīng)用虛通道的建立過程。
1.3 虛通道句柄映射
RapidIO通信中間件采用通信句柄對虛通道進(jìn)行標(biāo)識,應(yīng)用程序通過預(yù)分配的虛通道名稱獲取通信句柄進(jìn)行數(shù)據(jù)傳輸。獲取通信句柄時(shí),若對應(yīng)的虛通道已經(jīng)建立,則將分配的句柄結(jié)構(gòu)與虛通道對象進(jìn)行雙向關(guān)聯(lián);若虛通道未建立,則將虛通道名稱保存在分配的句柄結(jié)構(gòu)中,待對應(yīng)的虛通道建立后,掃描通道句柄映射表,實(shí)現(xiàn)通信句柄的延遲綁定。圖4給出了通道句柄與通道對象映射關(guān)系。
1.4 數(shù)據(jù)包傳輸
RapidIO通信中間件采用了M_BLK與CLUSTER兩類緩存對象進(jìn)行內(nèi)部數(shù)據(jù)包的傳遞,CLUSTER作為存放數(shù)據(jù)包內(nèi)容的載體,M_BLK負(fù)責(zé)對CLUSTER中的包頭信息進(jìn)行描述,并通過單向指針與CLUSTER一對一關(guān)聯(lián)。每個(gè)M_BLK有相互索引的雙向指針,可方便地掛接到邏輯鏈路層與虛通道層的傳輸隊(duì)列上。為提高搜索效率,緩存池中的M_BLK采用固定64 B長度,而CLUSTER則在長度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)直至收到對端ACK包使AllowSendPacks>0。接收端在接收隊(duì)列中包個(gè)數(shù)為隊(duì)列長度的1/2時(shí),將向發(fā)送端發(fā)送ACK包,圖5給出了AllowSendPacks在傳輸過程中的變化過程。
2 RapidIO通信中間件性能評估
基于RapidIO通信中間件的設(shè)計(jì)思想,實(shí)現(xiàn)了RapidIO通信中間件的vxWorks版本,支持vxWorks5.5.1。測試環(huán)境為3個(gè)MPC8548E節(jié)點(diǎn)通過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)行性能測試。
測試數(shù)據(jù)長度在2n基礎(chǔ)上減去了8 B的數(shù)據(jù)幀頭,使消息能夠以最高效的方式傳輸。在帶寬指標(biāo)測試中,RapidIO物理層1.25 GHz的工作頻率8 B/10 B轉(zhuǎn)換后,提供給RapidIO邏輯層的極限帶寬為125 MB/s,RapidIO消息層損失了大約10%的傳輸帶寬,經(jīng)過RapidIO通信中間件的虛通道層后,測試的極限帶寬達(dá)102 MB/s。在時(shí)延指標(biāo)測試中,不超過64 B的短數(shù)據(jù)傳輸時(shí)延都在25 s以下。圖 6與圖 7分別給出了傳輸不同長度數(shù)據(jù)時(shí)的帶寬與時(shí)延。
3 結(jié)束語
RapidIO總線技術(shù)作為新一代芯片級互聯(lián)總線的代表,在嵌入式領(lǐng)域具有廣泛的應(yīng)用前景,然而,缺少基于邏輯層業(yè)務(wù)的端對端通信功能大大限制了該總線在復(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包的策略沒有考慮傳輸特征因子的影響,造成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.