許川佩,趙江偉,王建喜
(桂林電子科技大學電子工程與自動化學院,廣西自動檢測技術與儀器重點實驗室,廣西 桂林 541004)
NoC千兆以太網(wǎng)資源節(jié)點設計*
許川佩,趙江偉,王建喜*
(桂林電子科技大學電子工程與自動化學院,廣西自動檢測技術與儀器重點實驗室,廣西 桂林 541004)
針對NoC和PC機之間通信速率低的問題,設計了一個千兆級的網(wǎng)絡通信資源節(jié)點,該資源節(jié)點主要包括UDP數(shù)據(jù)組包、UDP數(shù)據(jù)解包、三速以太網(wǎng)控制器和資源網(wǎng)絡接口等模塊。以典型的2D Mesh結構NoC系統(tǒng)作為測試對象,實驗結果表明,本文設計的資源節(jié)點能夠實現(xiàn)最高1.02 Gbit/s、平均995.4 Mbit/s的數(shù)據(jù)傳輸速率,在基于NoC的高速數(shù)據(jù)傳輸領域具有一定的實用價值。
NoC;資源節(jié)點;IP核;UDP;數(shù)據(jù)傳輸
借鑒計算機網(wǎng)絡技術[1]發(fā)展而來的片上網(wǎng)絡NoC(Network on Chip),由路由節(jié)點組成的通訊架構實現(xiàn)數(shù)據(jù)的路由[2]和分組交換[3],資源節(jié)點通過與路由節(jié)點的一對一通信實現(xiàn)各種不同功能的資源節(jié)點在通訊構架中的交互通信[4]。目前,片上網(wǎng)絡與PC機間的數(shù)據(jù)通信方式較為簡單,研究較少,提高二者之間的通信速率是NoC面向更廣泛應用而亟須解決的問題。
片上網(wǎng)絡要實現(xiàn)以太網(wǎng)的功能,首先需要將NoC系統(tǒng)與TCP/IP協(xié)議融合到一起。目前常見的實現(xiàn)方法,一種是基于軟件的方法,將嵌入式系統(tǒng)作為NoC系統(tǒng)的一個資源節(jié)點[5]。另一種是基于硬件的方法,把已有的TCP/IP芯片[6]直接作為NoC系統(tǒng)的一個資源節(jié)點,繼而實現(xiàn)以太網(wǎng)通信?;谲浖椒▽崿F(xiàn)的以太網(wǎng)通信需要額外的嵌入式系統(tǒng),另外TCP/IP協(xié)議棧都比較龐大[7]。而基于硬件方法實現(xiàn)的以太網(wǎng)通信雖使用現(xiàn)有的TCP/IP芯片可以使其可靠性大幅度提高,但是硬件電路復雜,價格較為昂貴,硬件成本高,數(shù)據(jù)傳輸速率也比較低[8]。
為簡化硬件設計同時加快軟件設計過程,本文為NoC系統(tǒng)設計了一個基于UDP的千兆級的網(wǎng)絡通信資源節(jié)點[9]。設計耗費較少的FPGA資源,硬件電路簡單,數(shù)據(jù)傳輸速率高,提高了NoC和PC機間數(shù)據(jù)的通信效率。
NoC系統(tǒng)借鑒并移植計算機網(wǎng)絡通信中的概念和方法,用于多個核或IP(Intellectual Property Core)的集成[10],圖1是基于2D-Mesh的3×3系統(tǒng)結構模型。NoC系統(tǒng)主要由路由節(jié)點(Router Node)、資源節(jié)點(Resource Node)和資源網(wǎng)絡接口RNI(Resource Network Interface)組成[11]。路由節(jié)點負責資源節(jié)點之間的信息傳輸,資源節(jié)點完成廣義上的計算任務。資源節(jié)點可以是嵌入式處理器、可重構器件、輸入輸出設備等,它通過資源網(wǎng)絡接口連接到網(wǎng)絡中。資源網(wǎng)絡接口是資源節(jié)點與路由節(jié)點之間進行通信的橋梁,主要由發(fā)送模塊和接收模塊組成。其功能是將資源網(wǎng)絡節(jié)點的數(shù)據(jù)按照傳輸協(xié)議進行打包處理后發(fā)送到片上網(wǎng)絡中,并將網(wǎng)絡中接收提取的數(shù)據(jù)傳遞給資源節(jié)點。
圖1 基于2D-Mesh的3×3 NoC系統(tǒng)結構模型
硬件平臺選用Altera Cyclone IV 系列的EP4CE115F29C7 FPGA芯片作為NoC系統(tǒng)的核心部件。片上網(wǎng)絡采用規(guī)則的3×3 2D-Mesh拓撲結構,以虛通道技術的蟲洞數(shù)據(jù)交換方式以及無鎖死的確定性XY維序路由算法作為理論模型,完成NoC通信框架的構建。本文將基于UDP協(xié)議構建的以太網(wǎng)模塊作為NoC系統(tǒng)中的一個資源節(jié)點,通過資源網(wǎng)絡接口實現(xiàn)NoC和PC機的高速數(shù)據(jù)交互。
圖2 資源節(jié)點總框圖
2.1 千兆以太網(wǎng)資源節(jié)點總框架
千兆以太網(wǎng)資源節(jié)點總框架如圖2所示,主要由以太網(wǎng)資源網(wǎng)絡接口和以太網(wǎng)模塊組成。以太網(wǎng)資源網(wǎng)絡接口作為連接片上網(wǎng)絡和以太網(wǎng)模塊的橋梁,其主要作用是完成以太網(wǎng)資源節(jié)點與片上網(wǎng)絡通信的分離,使得資源節(jié)點不受通信網(wǎng)絡的構架限制,提高設計的重用性?;赨DP協(xié)議的以太網(wǎng)模塊,旨在利用較少的片上資源實現(xiàn)基本的以太網(wǎng)通信。
2.2 千兆以太網(wǎng)資源節(jié)點傳輸數(shù)據(jù)幀結構
圖3為千兆以太網(wǎng)資源節(jié)點傳輸數(shù)據(jù)幀的結構圖,該數(shù)據(jù)幀主要由兩部分構成,前一部分是在片上網(wǎng)絡中傳輸?shù)臄?shù)據(jù)包,后一部分是千兆以太網(wǎng)傳輸?shù)臄?shù)據(jù)幀,前者作為獨立的數(shù)據(jù)包在片上網(wǎng)絡中傳輸,并作為后者的UDP凈荷在以太網(wǎng)中傳輸[12]。
圖3 數(shù)據(jù)幀格式
在片上網(wǎng)絡中傳輸?shù)臄?shù)據(jù)包被分成若干個flit,為了能使數(shù)據(jù)包正確到達目的節(jié)點,將flit分為3種類型,即頭flit、數(shù)據(jù)flit和尾flit,頭flit攜帶數(shù)據(jù)包源地址、目的地址、數(shù)據(jù)包長度等信息,尾微片代表著數(shù)據(jù)包的終結,數(shù)據(jù)微片存在于二者之間,是要傳遞的有效數(shù)據(jù)。本文采用的flit共34比特,前兩位代表微片類型(01:頭flit;10:尾flit;其他:數(shù)據(jù)flit)。數(shù)據(jù)包經(jīng)過資源網(wǎng)絡接口時,加入微片類型信息,從而,數(shù)據(jù)包在從千兆以太網(wǎng)資源節(jié)點發(fā)出時只需32位數(shù)據(jù)位寬。
圖4 基于UDP的以太網(wǎng)框圖
本文設計的千兆以太網(wǎng)模塊主要基于UDP協(xié)議,在FPGA上由Verilog HDL硬件編程語言編程實現(xiàn)UDP數(shù)據(jù)的組包、解包及校驗等功能。利用三速以太網(wǎng)(TSE)IP核以及RGMII接口,實現(xiàn)MAC層功能以及其與PHY層接口的連接。采用Marvel M88E1111芯片實現(xiàn)物理層功能。此外,專門設計了針對三速以太網(wǎng)IP核的控制器,其功能主要是通過配置寄存器,設置工作模式,配置MDIO接口,以實現(xiàn)與物理層芯片的通信。系統(tǒng)框圖如圖4所示。
3.1 UDP組包、解包模塊
UDP組包模塊主要包括計算校驗和、數(shù)據(jù)包傳輸以及數(shù)據(jù)輸出管道3個部分。校驗和的計算主要分為以下幾個步驟:第1步:把偽首部添加到UDP上。第2步:初始化,相關寄存器清零,校驗和字段清零。第3步:獲取UDP payload長度,計算總長度。把所有字段劃分為16位的字相加,把進位加到運算結果的低位上。第4步:將獲得的16位數(shù)的運算結果取反就得到了校驗和[13]。
數(shù)據(jù)包的傳輸狀態(tài)流程圖如圖5所示。數(shù)據(jù)組包的同時伴隨著數(shù)據(jù)包的傳輸。當啟動信號有效,即Go_bit=1時,數(shù)據(jù)包傳輸進入空閑態(tài)S0,若資源接口請求寫數(shù)據(jù)有效,且資源接口傳送幀頭標示有效,數(shù)據(jù)包傳輸進入狀態(tài)S1,此狀態(tài)主要完成MAC首部、IP首部及UDP首部的數(shù)據(jù)傳輸任務。若資源接口請求寫數(shù)據(jù)有效,且資源接口傳送幀頭標示無效,則數(shù)據(jù)傳輸出錯,進入出錯狀態(tài)S3,此時只有硬件復位才能跳轉到空閑態(tài),否則將一直停留在錯誤狀態(tài)。狀態(tài)S1結束后,會進入狀態(tài)S2,此狀態(tài)主要在將從資源網(wǎng)絡接口接收到的數(shù)據(jù)進行轉發(fā),即傳輸UDP payload。當收到尾幀標志時,完成整幀數(shù)據(jù)的傳輸,數(shù)據(jù)傳輸計入空閑態(tài),等待下一幀數(shù)據(jù)的傳輸。
圖5 數(shù)據(jù)包傳輸狀態(tài)流程圖
3.2 三速以太網(wǎng)IP核控制模塊
三速以太網(wǎng)IP核主要實現(xiàn)MAC層的功能。本文自主設計一個三速以太網(wǎng)IP核控制器來完成三速以太網(wǎng)IP核的配置工作。三速以太網(wǎng)控制器主要有以下3項功能:
(1)配置與三速以太網(wǎng)IP核工作模式相關的寄存器,來設置三速以太網(wǎng)的工作模式。
(2)配置與數(shù)據(jù)收發(fā)FIFO相關的寄存器,來設置數(shù)據(jù)收發(fā)接口的工作方式。
(3)配置三速以太網(wǎng) IP核的MDIO接口寄存器,來完成與PHY芯片間的通信。
三速以太網(wǎng)IP核控制器的工作流程如下:復位時會停止收發(fā)通道,清空相應寄存器以及收發(fā)FIFO。復位成功后,設置寄存器,設置IP核的工作模式。寄存器配置完成后,通過將command config寄存器中的TX_ENA和RX_ENA位設置為1來啟動三速以太網(wǎng)IP核[14]。
千兆以太網(wǎng)資源網(wǎng)絡接口的主要功能是數(shù)據(jù)接收和數(shù)據(jù)發(fā)送。數(shù)據(jù)接收是指接收來自資源節(jié)點的數(shù)據(jù),并按照相關協(xié)議組包,將組裝好的數(shù)據(jù)包交由路由網(wǎng)絡。數(shù)據(jù)發(fā)送是指接收來自路由網(wǎng)絡的數(shù)據(jù)包,并按照相關協(xié)議解包,將解包后的數(shù)據(jù)傳送給資源節(jié)點。千兆以太網(wǎng)資源網(wǎng)絡接口框圖如圖6所示。
圖6 千兆以太網(wǎng)資源網(wǎng)絡接口框圖
4.1 RNI數(shù)據(jù)接收模塊設計
片上網(wǎng)絡傳輸數(shù)據(jù)主要采用蟲洞路由[15]的方式,即在開始通信之前,源節(jié)點通過一個頭信息建立路徑,并且同時預定所經(jīng)路徑的信道資源,目的節(jié)點在收到這個信息頭后將沿原路返回一個應答信號,源節(jié)點收到這個應答信號后,數(shù)據(jù)便以既定路徑流向目的節(jié)點。
在片上網(wǎng)絡中傳輸?shù)臄?shù)據(jù)包由1個首flit、N-2個數(shù)據(jù)flit和1個尾flit構成。頭flit的包長度為34,分別由微片類型、幀總數(shù)、本幀序號、幀長、目的地址和源地址組成。其他微片除首部兩位為微片類型,其余均為數(shù)據(jù)位。當源節(jié)點發(fā)送的數(shù)據(jù)包到達目的節(jié)點后,目的節(jié)點會將數(shù)據(jù)包從本地接口經(jīng)由RNI控制器傳輸?shù)揭蕴W(wǎng)模塊。資源網(wǎng)絡接口的數(shù)據(jù)接收狀態(tài)轉移圖如圖7所示。
圖7 RNI數(shù)據(jù)接收狀態(tài)轉移圖
當資源網(wǎng)絡接口使能時,數(shù)據(jù)接收進入狀態(tài)S0,路由節(jié)點的本地端口向RNI發(fā)出數(shù)據(jù)傳輸請求,數(shù)據(jù)接收跳轉到狀態(tài)S1,若此時RNI接收FIFO滿時,停留在狀態(tài)S1,若為空,就向路由節(jié)點的本地端口回復數(shù)據(jù)接收命令Gra_to_loc=1,數(shù)據(jù)接收跳轉到狀態(tài)S2,開始接收數(shù)據(jù),若接收到數(shù)據(jù),即FIFO不為空時,數(shù)據(jù)接收進入狀態(tài)S3,此狀態(tài)主要接收來自片上網(wǎng)絡的數(shù)據(jù)包,同時向以太網(wǎng)模塊傳輸數(shù)據(jù),當接收到尾flit后,數(shù)據(jù)接收跳轉到狀態(tài)S0,至此,完成整個數(shù)據(jù)包的接收。
4.2 RNI數(shù)據(jù)發(fā)送模塊設計
RNI數(shù)據(jù)發(fā)送狀態(tài)轉移圖如圖8所示。
圖10 千兆以太網(wǎng)資源節(jié)點測試時序驗證1
圖8 RNI數(shù)據(jù)發(fā)送狀態(tài)轉移圖
當資源網(wǎng)絡接口使能且以太網(wǎng)模塊處于工作狀態(tài)時,數(shù)據(jù)發(fā)送進入狀態(tài)S0。當資源網(wǎng)絡接口收到以太網(wǎng)模塊的寫數(shù)據(jù)請求時,數(shù)據(jù)發(fā)送跳轉到狀態(tài)S1。若此時數(shù)據(jù)接收FIFO滿,停留在狀態(tài)S1,且為空,就向以太網(wǎng)模塊發(fā)送資源網(wǎng)絡接口讀數(shù)據(jù)有效命令RNI_read_valid=1,并且數(shù)據(jù)發(fā)送跳轉到狀態(tài)S2,開始接收數(shù)據(jù)。若接收到數(shù)據(jù),即FIFO不為空時,數(shù)據(jù)接收進入狀態(tài)S3(此狀態(tài)主要是接收以太網(wǎng)模塊的數(shù)據(jù),并將數(shù)據(jù)發(fā)送到片上網(wǎng)絡),當發(fā)送到尾flit后,數(shù)據(jù)發(fā)送跳轉到狀態(tài)S0,至此,完成整個數(shù)據(jù)包的接收。
為了驗證資源網(wǎng)絡接口的性能,本文在典型的3×3 2D Mesh結構的NoC系統(tǒng)中專門設計了UDP數(shù)據(jù)發(fā)生器作為測試系統(tǒng)的數(shù)據(jù)產(chǎn)生電路。測試電路結構模型如圖9所示。
圖9 測試電路結構模型
測試數(shù)據(jù)由UDP數(shù)據(jù)包發(fā)生器產(chǎn)生,經(jīng)路由網(wǎng)絡傳輸傳入千兆以太網(wǎng)資源模塊,進而傳輸?shù)絇C機上。詳細的千兆以太網(wǎng)資源節(jié)點測試時序如圖10、圖11所示。sin7節(jié)點的receive_data_out是由UDP數(shù)據(jù)發(fā)生器產(chǎn)生的經(jīng)由千兆以太網(wǎng)資源網(wǎng)絡接口封裝好的數(shù)據(jù),分別由圖10、圖11中的首flit、MAC首部、IP首部、UDP首部、數(shù)據(jù)flit、尾flit組成。sin5節(jié)點的receive_data_out是千兆以太網(wǎng)資源網(wǎng)絡接口收到的數(shù)據(jù)幀。
由圖10、圖11可以看出片上網(wǎng)絡數(shù)據(jù)傳輸?shù)南x洞路由的傳輸時序,即先由首flit建立路由路徑,這個過程大概需要若干時鐘周期完成,之后的數(shù)據(jù)各個部分沿著建立好的路徑以流水線的方式傳遞,直到尾flit的傳輸完成,釋放當前路徑,完成整幀數(shù)據(jù)的傳輸任務。
圖11 千兆以太網(wǎng)資源節(jié)點測試驗證2
為了驗證整個資源網(wǎng)絡節(jié)點數(shù)據(jù)包的最高傳輸速率,UDP數(shù)據(jù)包發(fā)生器以間隔10 s啟停的工作方式“發(fā)10 s—停10 s”間斷的向片上網(wǎng)絡發(fā)送數(shù)據(jù)幀,這些數(shù)據(jù)幀由不同的路徑傳輸?shù)角д滓蕴W(wǎng)資源節(jié)點,經(jīng)千兆以太網(wǎng)組包模塊加上MAC首部、IP首部、UDP首部等信息后封裝成數(shù)據(jù)幀,然后傳輸?shù)絇C機上。如圖12所示,使用Bandwith Meter Pro網(wǎng)絡狀況檢測軟件測得的千兆以太網(wǎng)資源節(jié)點數(shù)據(jù)傳輸速率最高1.02 Gbit/s,平均995.4 Mbit/s,滿足了千兆級的高速數(shù)據(jù)傳輸要求。
圖12 千兆以太網(wǎng)資源節(jié)點測試驗證3
資源節(jié)點的設計是NoC系統(tǒng)設計的主要熱點問題之一,片上網(wǎng)絡在高速數(shù)據(jù)傳輸領域也有了進一步的應用,如何設計簡潔、高效、高速的千兆以太網(wǎng)資源節(jié)點成為首要問題。本文在分析了幾種不同設計方案的基礎上設計了基于UDP的千兆以太網(wǎng)資源網(wǎng)絡節(jié)點,在3×3的NoC平臺上進行了驗證,實驗數(shù)據(jù)表明,設計的千兆以太網(wǎng)資源節(jié)點能夠實現(xiàn)千兆級的數(shù)據(jù)傳輸,在基于NoC的高速數(shù)據(jù)傳輸領域,具有一定的應用價值。
[1] 高明倫,杜高明. NoC:下一代集成電路主流設計技術[J]. 微電子學,2006(4):461-466.
[2] 歐陽一鳴,韓倩倩,梁華國,等. 面向非全互連3D NoC可靠通信的分布式路由算法[J]. 計算機輔助設計與圖形學學報,2014(3):502-510.
[3] Sayankar B B,Agrawal P,Dorle S S. Routing Algorithms for NoC Architecture:A Relative Analysis[C]//International Conference on Emerging Trends in Engineering and Technology. IEEE,2013:105-106.
[4] 王建喜,許川佩,王光. 基于IEEE 1500的NoC資源節(jié)點Wrapper設計[J]. 電子器件,2015,38(6):1301-1307.
[5] 項敏,王學軍. TCP/IP協(xié)議棧在嵌入式芯片上的實現(xiàn)[J]. 電子設計應用,2004(5):67-68,80.
[6] 黃訓誠. 基于RTL8019AS的單片機TCP/IP網(wǎng)絡通信[J]. 微電子學與計算機,2005(3):228-230,235.
[7] 牟英峰,徐殿國,張東來. 基于嵌入式TCP/IP協(xié)議棧的信息家電連接Internet單芯片解決方案[J]. 電子技術應用,2002(6):16-18.
[8] 陳維良,趙俊超,魏少軍. TCP/IP協(xié)議的ASIC設計與實現(xiàn)[J]. 微電子學,2002(2):97-101.
[9] 瞿鑫,吳云峰,李華棟,等. 基于FPGA的千兆以太網(wǎng)數(shù)據(jù)傳輸?shù)脑O計與實現(xiàn)[J]. 電子器件,2014,37(4):662-664.
[10] 萬健,李麗,王佳文,等. “包-電路交換”片上路由器設計與實現(xiàn)[J]. 微電子學與計算機,2011(7):68-71.
[11] Benini L,Micheli G D. Network on Chip:A New SoC Paradigm[J]. IEEE Computer,2002,3(1):70-78.
[12] 何群,鄭德忠. 基于網(wǎng)絡的供熱控制管理系統(tǒng)中實時圖象處理的研究[J]. 傳感技術學報,2004,27(1):66-69.
[13] 王忠,李延社,游智勝. CRC算法設計與程序實現(xiàn)[J]. 電子測量技術,2007(12):26-28,36.
[14] Altera Inc. Triple-Speed Ethernet MegaCore Function User Guide[Z]. http://www.altera.com,2014(6):84-114.
[15] Zang Mingxiang,Zhang Xiangxiang,Wen Jia. Wormhole Routing Optimization Algorithm Based on Virtual Channel Switching[C]//Proc of International Conference on Multimedia Technology. Washington DC:IEEE Computer Society,2011:3798-3800.
GigabitEthernetResourcesNodeDesignforNoC*
XUChuanpei,ZHAOJiangwei,WANGJianxi*
(Guangxi Key Laboratory of Automatic Detection Technology and Instrument,School of Electronic Engineering and Automatic, Gulin University of Electronic Technology,Guilin Guangxi 541004,China)
A peta-scale network communication resource node has been designed in order to deal with the problem of low communicate rate between NoC and PC. This resource node mainly consists of the UDP data packets,the UDP data unpack,the Three-Speed Ethernet Controller and the resource network interface modules. The experiment which takes the typical 2D Mesh NoC as the test object shows that the proposed resource node can provide a maximum data transfer rate of 1.02 Gbit/s,and the average rate of data transmission is up to 995.4 Mbit/s. Thereby,it shows a certain practical value in the high speed data transmission field based on the NoC.
NoC;resource node;IP core;UDP;data transmission
10.3969/j.issn.1005-9490.2017.05.042
項目來源:廣西自動檢測技術與儀器重點實驗室項目(YQ16104)
2016-08-03修改日期2016-09-21
TN492
A
1005-9490(2017)05-1272-06
許川佩(1968-),女,漢族,廣西合浦人,桂林電子科技大學博導,博士,教授,主要研究方向為集成電路測試理論與技術,xcp@guet.edu.cn;
趙江偉(1989-),男,漢族,河南許昌人,桂林電子科技大學在讀碩士,主要研究方向為智能信息處理與嵌入式應用,jiangwei_zhao@163.com;
王建喜(1989-),男,通訊作者,漢族,江蘇東臺人,桂林電子科技大學助教,主要研究方向為集成電路測試理論與技術,mzfxwjx@163.com。