趙世超,左金印,魏驍,趙哲
(華北計算機系統(tǒng)工程研究所,北京 100083)
伴隨萬物互聯(lián)時代的臨近,計算機網(wǎng)絡(luò)通信技術(shù)應(yīng)用得到空前發(fā)展,嵌入式電子設(shè)備接入局域網(wǎng)的需求迅速增加。網(wǎng)路傳輸帶寬不斷提高也使得一些特定的領(lǐng)域?qū)?shù)據(jù)傳輸提出了更高的要求。遠(yuǎn)距離通信領(lǐng)域需要更高的數(shù)據(jù)傳輸帶寬和更強的抗干擾能力,用于保障其通信的質(zhì)量和可靠性。工業(yè)生產(chǎn)的數(shù)據(jù)采集系統(tǒng)需要更低的數(shù)據(jù)傳輸延遲和更大的數(shù)據(jù)吞吐容量,用于確保其數(shù)據(jù)的實時性和完整性。片上數(shù)據(jù)高速處理領(lǐng)域需要通用化的數(shù)據(jù)傳輸接口,用以增加其可擴(kuò)展性。然而,嵌入式設(shè)備上廣泛使用的CPU 和MCU,礙于設(shè)計體積小、設(shè)計功耗低等原因,計算能力的提升速度并不像互聯(lián)網(wǎng)帶寬那樣明顯,并且其差距有進(jìn)一步擴(kuò)大的趨勢[1]。過高的以太網(wǎng)數(shù)據(jù)傳輸速率會過度消耗CPU 寶貴的計算資源。在服務(wù)器平臺上,國外學(xué)者提出的TCP/IP 卸載引擎(TCP Offload Engine)技術(shù)是被廣泛接受的解決方案,即使用TOE 芯片硬件網(wǎng)卡實現(xiàn)TCP/IP 協(xié)議接口硬件化的技術(shù)來減輕CPU 運行負(fù)擔(dān)[2]。在嵌入式平臺上,F(xiàn)PGA 從仿真、優(yōu)化到在線調(diào)試都很便捷,在不改變外圍電路的情況下可綜合出不同的電路功能,具有集成度高、設(shè)計靈活的優(yōu)點,成為以太網(wǎng)協(xié)議硬件化平臺的首選[3]。
近年來,伴隨數(shù)據(jù)信息采集和高速信息傳輸設(shè)備的升級迭代,眾多學(xué)者在UDP/IP 協(xié)議硬件化方向做出了很多努力。在震動采集監(jiān)控系統(tǒng)和以太網(wǎng)視頻傳輸系統(tǒng)中使用FPGA 硬件化的UDP/IP 協(xié)議,通過網(wǎng)線傳輸數(shù)據(jù)的設(shè)計已得到應(yīng)用[4-5],但這不能很好地滿足在強烈干擾環(huán)境下的高速數(shù)據(jù)傳輸需求。光導(dǎo)纖維通信技術(shù)在遠(yuǎn)距離、高速數(shù)據(jù)傳輸和適應(yīng)復(fù)雜電磁干擾環(huán)境方面擁有明顯的優(yōu)勢。最近,有學(xué)者在新型FPGA 平臺上進(jìn)行了使用UDP/IP 協(xié)議的萬兆光纖通信實驗[6-10],其中一些學(xué)者嘗試進(jìn)一步提升萬兆UDP/IP 接口傳輸性能。
本文旨在使用FPGA 平臺設(shè)計出用于實現(xiàn)萬兆光纖數(shù)據(jù)傳輸?shù)腢DP/IP 協(xié)議通信接口,并引入分支預(yù)測機制,評估其對系統(tǒng)性能的影響。
使嵌入式設(shè)備FPGA 平臺具備UDP/IP 通信能力,目前主流的設(shè)計方案有:FPGA+CPU 架構(gòu)或FPGA+MCU架構(gòu),由CPU 或MCU 為FPGA 解析處理UDP/IP 協(xié)議,轉(zhuǎn)交數(shù)據(jù)至FPGA 進(jìn)行數(shù)據(jù)處理;FPGA+MAC+PHY 架構(gòu),PHY 芯片用于實現(xiàn)物理層的相關(guān)功能,MAC 芯片實現(xiàn)數(shù)據(jù)鏈路層解析功能,F(xiàn)PGA 實現(xiàn)傳輸層數(shù)據(jù)傳輸功能[10]。
在FPGA+光纖通信平臺上實現(xiàn)UDP/IP 硬件化高速數(shù)據(jù)傳輸?shù)谋姸嘌芯恐?,有些采用第一種架構(gòu),此種設(shè)計使用CPU 或DSP 亦或是MCU 來實現(xiàn)以太網(wǎng)協(xié)議的解析,網(wǎng)絡(luò)數(shù)據(jù)傳輸會頻繁地觸發(fā)CPU 中斷,CPU 反復(fù)保護(hù)和還原任務(wù)現(xiàn)場會頻繁訪問存儲器,這難以達(dá)到萬兆以太網(wǎng)的傳輸帶寬,且傳輸延遲不固定;有些采用第二種架構(gòu),此種設(shè)計依賴OSI 傳輸模型中MAC層或PHY 層芯片,如AX88180、88E1111、W5300、W5500、RTL8211 等[11-12],外置擴(kuò)展芯片不利于進(jìn)一步提升嵌入式設(shè)備系統(tǒng)的集成度;還有一些設(shè)計實現(xiàn)了MAC 層協(xié)議硬件化[13],或套用了UDP 協(xié)議格式實現(xiàn)萬兆光纖數(shù)據(jù)傳輸[14],這種設(shè)計不能自動維護(hù)ARP表,無法便捷地實現(xiàn)多設(shè)備級聯(lián)。故本文采用單獨使用FPGA 來實現(xiàn)完備的UDP/IP 協(xié)議方案。
OSI 參考模型分為7 層結(jié)構(gòu),分工實現(xiàn)網(wǎng)絡(luò)通信工作。每層結(jié)構(gòu)的邏輯單元模塊相對獨立,工作在不同層結(jié)構(gòu)內(nèi)的邏輯單元模塊可各自獨立設(shè)計,這種模塊化的設(shè)計能夠提升系統(tǒng)的可維護(hù)與可拓展性。
萬兆光纖UDP/IP 協(xié)議棧主要工作在傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層上。物理層主要功能為實現(xiàn)物理信號的接入,高速數(shù)據(jù)的串化、解串,以及64B/66B 編碼等。數(shù)據(jù)鏈路層主要功能為實現(xiàn)介質(zhì)無關(guān)接口(MII)的連接,鏈路數(shù)據(jù)檢錯等功能。網(wǎng)絡(luò)層的邏輯模塊用于實現(xiàn)IP、ARP 協(xié)議解析功能。傳輸層的邏輯模塊實現(xiàn)UDP 協(xié)議解析功能。本文采用的萬兆以太網(wǎng)OSI 參考模型如圖1 所示。
FPGA 內(nèi)通信接口系統(tǒng)各個功能模塊的設(shè)計遵循OSI 參考模型約束設(shè)計,傳輸層的UDP 控制器模塊、網(wǎng)絡(luò)層的IP 控制器模塊和ARP 控制模塊、數(shù)據(jù)鏈路層的MAC IP 核以及物理層的PCS/PMA IP 核分工完成模塊所在層的傳輸功能。各個控制器模塊由內(nèi)部的緩沖區(qū)、封裝引擎、解析引擎、校驗引擎、控制器等子模塊組成,各子模塊的連接關(guān)系如圖2 所示。
UDP 發(fā)送緩沖區(qū)為128 KB 的RAM,接收緩沖區(qū)為256 KB 的RAM。緩沖區(qū)中存放的用戶數(shù)據(jù)格式為2 字節(jié)同步頭、4 字節(jié)源端口與目的端口、2 字節(jié)數(shù)據(jù)長度和n 字節(jié)數(shù)據(jù)。控制寄存器用于存放各個邏輯模塊的運行狀態(tài)字、復(fù)位控制標(biāo)志位、本地IP 地址、目的IP 地址以及本地MAC 地址等信息。
UDP 封裝引擎和IP 封裝引擎以及UDP 解析引擎和IP 解析引擎之間均使用FIFO 連接,用于傳輸U(kuò)DP 數(shù)據(jù)報,包含8 字節(jié)UDP 協(xié)議首部和n 字節(jié)的數(shù)據(jù)。
網(wǎng)絡(luò)層邏輯模塊與LLC/MAC 層通過AXI4-stream總線相連,用于傳輸MAC 協(xié)議幀,包含14 字節(jié)的MAC協(xié)議首部、20 字節(jié)的IPv4 協(xié)議首部和(8+n)字節(jié)的IP 報文數(shù)據(jù)。
物理層中負(fù)責(zé)LLC 和MAC 功能的邏輯子單元使用了開源的10G Ethernet MAC Core IP核來實現(xiàn),負(fù)責(zé)PCS 核PMA 功能的邏輯子單元使用了開源的10G Ethernet PCS/PMA Core IP核實現(xiàn),PMD 功能由標(biāo)準(zhǔn)的SFP+光模塊實現(xiàn)。物理層部分主要實現(xiàn)光電轉(zhuǎn)化相關(guān)功能,這里不進(jìn)行詳細(xì)闡述。
校驗引擎為其他邏輯模塊提供校驗和計算服務(wù)。該引擎會從校驗請求發(fā)起的邏輯單元數(shù)據(jù)緩存區(qū)或FIFO中讀取待校驗數(shù)據(jù),送入16 位校驗數(shù)據(jù)寄存器中,不足16 位的數(shù)據(jù)末尾填充“0x00”。16 位的校驗和寄存器與校驗和進(jìn)位寄存器初值為0。將校驗和寄存器、校驗和進(jìn)位寄存器與校驗數(shù)據(jù)寄存器中的16 位數(shù)據(jù)二進(jìn)制求和,和填入校驗和寄存器,進(jìn)位填入校驗和進(jìn)位寄存器,逐輪累加至校驗數(shù)據(jù)讀取完畢。將校驗和寄存器中的數(shù)據(jù)按位取反輸出,得到2 字節(jié)的校驗和。校驗引擎計算模型如圖3 所示。
UDP 協(xié)議處理中參與校驗數(shù)據(jù)為:12 字節(jié)的UDP協(xié)議偽首部、8 字節(jié)的UDP 協(xié)議首部和n 字節(jié)的報文數(shù)據(jù);IP 協(xié)議處理時參與校驗的數(shù)據(jù)只有20 字節(jié)的IPv4協(xié)議首部。
UDP 控制器用于生成和解析UDP 報文,由UDP 解析引擎、UDP 封裝引擎、校驗引擎以及控制器組成。UDP解析引擎通過FIFO 從網(wǎng)絡(luò)層獲取UDP 數(shù)據(jù)報,校驗其數(shù)據(jù)正確性,還原出通信雙方端口號、數(shù)據(jù)長度以及通信內(nèi)容信息,寫入UDP 接收緩沖區(qū)供用戶使用;UDP 封裝引擎讀取UDP 發(fā)送緩沖區(qū)內(nèi)的用戶消息,為其添加8 字節(jié)的UDP 協(xié)議首部和12 字節(jié)的UDP 偽首部,計算數(shù)據(jù)報校驗和,生成UDP 數(shù)據(jù)報,使用FIFO 傳輸至網(wǎng)絡(luò)層;控制器用于維護(hù)模塊的運行狀態(tài)字和復(fù)位控制信息等。
UDP 解析引擎的主要工作狀態(tài)有初始狀態(tài)、就緒狀態(tài)、接收狀態(tài)、解析校驗狀態(tài)和寫入狀態(tài),其狀態(tài)轉(zhuǎn)換關(guān)系如圖4 所示。
UDP 封裝引擎的主要工作狀態(tài)有初始狀態(tài)、就緒狀態(tài)、讀取狀態(tài)、封裝校驗狀態(tài)和發(fā)送狀態(tài),其狀態(tài)轉(zhuǎn)換關(guān)系如圖5 所示。
IP 控制器用于生成和解析IP 數(shù)據(jù)報與MAC 數(shù)據(jù)幀,由IP 解析引擎、IP 封裝引擎、校驗引擎、接收引擎、發(fā)送引擎和控制器組成。接收引擎和發(fā)送引擎通過AXI4-stream 總線與物理層相連,交互以太網(wǎng)MAC 數(shù)據(jù)幀。發(fā)送引擎為IP 數(shù)據(jù)報和ARP 數(shù)據(jù)報添加14 字節(jié)的MAC 協(xié)議頭生成MAC 數(shù)據(jù)幀。接收引擎根據(jù)物理層傳輸?shù)腗AC 數(shù)據(jù)幀還原出IP 數(shù)據(jù)報和ARP 數(shù)據(jù)報,過濾掉不相關(guān)消息。
接收引擎去掉MAC 數(shù)據(jù)幀首部的12 字節(jié)目的MAC 地址和源MAC 地址,對數(shù)據(jù)類型字段進(jìn)行匹配。0x0800 為IP 數(shù)據(jù)報,經(jīng)由FIFO 傳輸至IP 解析引擎進(jìn)行處理;0x0806為ARP數(shù)據(jù)報,0x0835為RARP數(shù)據(jù)報,通過FIFO交由ARP 控制器進(jìn)行解析;不能匹配的數(shù)據(jù)幀直接丟棄。IP 控制器接收引擎處理模型如圖6 所示。
IP 控制器的解析引擎對IP 數(shù)據(jù)報文的20 字節(jié)首部進(jìn)行正確性校驗,還原出UDP 報文通過FIFO 發(fā)送至傳輸層使用。IP 封裝引擎對傳輸層交付的UDP 報文根據(jù)版本號、首部長度、服務(wù)類型、總長度、生存周期、協(xié)議類型、源IP 和目的IP 等信息添加20 字節(jié)的IPv4 協(xié)議首部,計算出首部校驗和,生成IP 數(shù)據(jù)報文。
IP 封裝引擎與發(fā)送引擎組成的邏輯模塊采用了分支預(yù)測執(zhí)行處理機制。在大部分通信時間內(nèi),通信雙方的IP 地址與MAC 地址在很大的概率上保持不變。每次傳輸數(shù)據(jù)時,預(yù)測機制根據(jù)上兩次的MAC 地址使用情況預(yù)測當(dāng)前MAC 地址是否需要變更,預(yù)測為不必變更時,使用緩存在寄存器中的MAC 地址,完成MAC 幀首部的封裝,使得數(shù)據(jù)幀具備向下一層傳輸?shù)臈l件。下層邏輯單元對MAC 幀進(jìn)行FCS 計算的同時,ARP 控制器對目的MAC 地址進(jìn)行查找確認(rèn)。這樣的處理機制可以盡快地將網(wǎng)絡(luò)層的數(shù)據(jù)傳輸給物理層。具體的工作流程如圖7 所示。
ARP 控制器模塊為系統(tǒng)提供物理地址解析服務(wù),由ARP 控制引擎和ARP 表項組成。其中ARP 表為占用6.4 KB 的RAM,存儲用于當(dāng)前通信的IP 地址與MAC 地址映射關(guān)系,除自身的MAC 地址固定外,其余的內(nèi)容由ARP 控制引擎動態(tài)調(diào)整。
ARP 控制引擎對外提供配置接口,模塊自身IP 地址可設(shè)定為自動獲取模式和指定IP 模式。ARP 控制引擎根據(jù)控制寄存器內(nèi)容,將通信對端的IP 地址錄入至ARP表,ARP 控制引擎產(chǎn)生相應(yīng)的ARP 或RARP 報文,從網(wǎng)關(guān)或其他設(shè)備獲取對應(yīng)的MAC 或IP 信息。收到ARP請求報文自動產(chǎn)生ARP 應(yīng)答。ARP 控制引擎工作流程如圖8 所示。
用于本次實驗的國產(chǎn)化現(xiàn)場可編程門陣列平臺為復(fù)旦微電子生產(chǎn)的JFM7K325T FPGA。使用Verilog HDL硬件描述語言生成文中設(shè)計,使用EDA 工具對其進(jìn)行編譯、綜合,統(tǒng)計綜合后硬件平臺的各種資源占用情況,并給出分析。
通信傳輸時延一般分為傳播時延和處理時延,設(shè)計中引入的分支預(yù)測機制會對協(xié)議接口的發(fā)送時延產(chǎn)生影響。建立數(shù)學(xué)模型評估采用分支預(yù)測機制后對系統(tǒng)發(fā)送性能的影響。
實驗統(tǒng)計了PCS/PMA 層IP 核、LLC/MAC 層IP 核、網(wǎng)絡(luò)層和傳輸層的其他邏輯電路模塊對于LUTs 資源、FFs 資源、BRAMs 資源等的占用情況。詳細(xì)的資源占用數(shù)值見表1。本設(shè)計在復(fù)旦微電子的JFM7K325T FPGA上LUTs 使用不超過3%,F(xiàn)Fs 使用低于2%,BRAMs 占用低于3%,可以方便地應(yīng)用到其他的設(shè)計中,提供UDP協(xié)議解析服務(wù)。
表1 FPGA 平臺資源占用統(tǒng)計
對于不同主頻的FPGA 平臺,運行用時也不盡相同。這里用引入分支預(yù)測機制后的節(jié)省用時與原發(fā)送用時的比值來反映發(fā)送時延的變化。本節(jié)闡述的發(fā)送用時為從接收到用戶數(shù)據(jù)開始到以太網(wǎng)幀封裝完畢的時間跨度。假設(shè)應(yīng)用層邏輯單元需要傳輸n 字節(jié)的UDP 報文,并規(guī)定在FPGA 中拷貝單位字節(jié)的用時為1 個單位。
傳輸層邏輯模塊所使用的時間約為數(shù)據(jù)拷貝時間、UDP 報文首部建立時間與加入偽首部后校驗計算時間之和,即:
網(wǎng)絡(luò)層邏輯模塊用時約為數(shù)據(jù)拷貝時間、IPv4 報文首部建立時間、首部校驗計算時間、目的MAC 查詢時間和MAC 幀首部建立時間之和,即:
式中tARP=m,表示目的MAC 在ARP 表中的位置??紤]最壞的情況,m 也可用于表示當(dāng)前所在局域網(wǎng)的規(guī)模。數(shù)據(jù)鏈路層所承載的數(shù)據(jù)載荷范圍為46~1 500,即:
46≤20+8+n≤1 500 (3)
類似的,數(shù)據(jù)鏈路層邏輯模塊用時約為數(shù)據(jù)拷貝時間與FCS 校驗計算時間之和,即:
采用分支預(yù)測機制后,實際上是將ARP 查詢功能和數(shù)據(jù)鏈路層功能并行化,所以節(jié)省掉的發(fā)送用時約為:
節(jié)省掉的發(fā)送用時與原發(fā)送用時的比率γ 為:
式(6)的圖像如圖9 所示。
從式(6)的圖像中可以看出,接近邊界條件n-m+43=0的鄰近區(qū)域γ 值較大。意為當(dāng)前系統(tǒng)級聯(lián)規(guī)模與UDP報文傳輸數(shù)據(jù)的字節(jié)數(shù)接近時,該設(shè)計的發(fā)送性能提升較為明顯,發(fā)送用時可減少至原來的80%以下;系統(tǒng)級聯(lián)規(guī)模與UDP 報文傳輸數(shù)據(jù)的字節(jié)數(shù)相差越多,該設(shè)計的發(fā)送性能提升越不明顯。該設(shè)計適合應(yīng)用在頻繁使用短數(shù)據(jù)報傳輸信息且級聯(lián)規(guī)模不大的局域網(wǎng)系統(tǒng)。
本文介紹了一種在國產(chǎn)化FPGA 平臺上使用光導(dǎo)纖維傳輸介質(zhì)實現(xiàn)萬兆通信的UDP/IP 協(xié)議接口。該協(xié)議接口充分運用開源的萬兆以太網(wǎng)MAC IP 核與PCS/PMA IP核,使得開發(fā)過程便捷、簡單。應(yīng)用分支預(yù)測機制,進(jìn)一步減少局域網(wǎng)內(nèi)短數(shù)據(jù)報的發(fā)送時延。使用本文方法實現(xiàn)的UDP/IP 協(xié)議接口占用資源低,能夠靈活應(yīng)用到其他的設(shè)計中。研究內(nèi)容對高速數(shù)據(jù)采集、遠(yuǎn)距離信息傳輸、片上數(shù)據(jù)高速處理等應(yīng)用場景有一定的借鑒意義。此外,對航天、能源、國防等使用國產(chǎn)化器件要求較高的特定領(lǐng)域具有一定的參考價值。