宋宇飛,張俊杰,王凱,李家齊,薛子威,鄭
(上海大學(xué)特種光纖與光接入網(wǎng)省部共建重點(diǎn)實(shí)驗(yàn)室,上海 200444)
基于IP協(xié)議的FPGA萬兆可靠互聯(lián)通信設(shè)計(jì)與實(shí)現(xiàn)
宋宇飛,張俊杰,王凱,李家齊,薛子威,鄭
(上海大學(xué)特種光纖與光接入網(wǎng)省部共建重點(diǎn)實(shí)驗(yàn)室,上海 200444)
近年來,云計(jì)算和大數(shù)據(jù)處理迅猛發(fā)展,現(xiàn)場可編程門陣列(field programmable gate array,FPGA)由于擁有獨(dú)特的并行處理能力,已在大數(shù)據(jù)處理中得到廣泛應(yīng)用.而通信網(wǎng)絡(luò)的好壞會(huì)直接影響大數(shù)據(jù)處理的性能,基于此提出一種基于IP協(xié)議的FPGA萬兆可靠保序互聯(lián)通信系統(tǒng),基于三指針環(huán)形緩沖池以及并行序號管理實(shí)現(xiàn)線速萬兆數(shù)據(jù)通信,利用硬件超時(shí)重傳機(jī)制實(shí)現(xiàn)可靠數(shù)據(jù)通信.該系統(tǒng)與用戶接口采用先進(jìn)先出(first in first out,FIFO)隊(duì)列方式,接口簡單;采用IP協(xié)議進(jìn)行通信,使得通信協(xié)議開銷較小,具有良好的系統(tǒng)擴(kuò)展性;實(shí)際傳輸速率可達(dá)9.33 Gbit/s.
大數(shù)據(jù);現(xiàn)場可編程門陣列;互聯(lián);通信
為了滿足云計(jì)算[1]以及大數(shù)據(jù)處理[2]的發(fā)展需求,高性能計(jì)算(high performance computing,HPC)[3]變得越來越重要,現(xiàn)場可編程門陣列(field programmable gate array,FPGA)由于其靈活性、可編程性、擁有豐富的高速通信接口以及獨(dú)特的并行處理能力[4],在高性能計(jì)算中得到了越來越廣泛的應(yīng)用.FPGA在HPC中一方面被用于數(shù)據(jù)處理、硬件加速[5],比如微軟公司已經(jīng)開始使用FPGA來代替CPU作為數(shù)據(jù)中心的處理單元;另一方面作為節(jié)點(diǎn)之間的通信通道,例如天河一號超級計(jì)算機(jī)中使用了自定義的互聯(lián)協(xié)議[6].而隨著節(jié)點(diǎn)數(shù)目的增加,節(jié)點(diǎn)之間的通信性能將成為系統(tǒng)性能提升的瓶頸之一.
在FPGA互聯(lián)通信方面,Senouci等[7]提出了一種混合多處理器片上系統(tǒng)(multiprocessor system-on-chip,MPSoC),該系統(tǒng)采用嵌入式軟件結(jié)構(gòu)管理FPGA間的通信.Romoth等[8]介紹了一種能夠?qū)崿F(xiàn)信道自適應(yīng)的FPGA互聯(lián)通信結(jié)構(gòu).這些系統(tǒng)都是由處理器實(shí)現(xiàn)的,但由于嵌入式處理器性能不高,所以只能實(shí)現(xiàn)千兆以下互聯(lián)通信數(shù)據(jù)傳輸.
另一種高速通信方法為片上網(wǎng)絡(luò)(network-on-chip,NoC)[9-10],Liu等[11]提出了一種靈活的可擴(kuò)展的多FPGA仿真框架,可以用來驗(yàn)證和測試一個(gè)完整的片上系統(tǒng),該框架中的多個(gè)仿真模塊可以通過FPGA的千兆位級收發(fā)器(multi-gigabit transceiver,MGT)串行鏈路互連;Mühlbach等[12]針對復(fù)雜的網(wǎng)絡(luò)應(yīng)用提出了一種基于環(huán)的可擴(kuò)展多FPGA系統(tǒng)平臺(tái),而且用戶數(shù)據(jù)報(bào)協(xié)議/傳輸控制協(xié)議(user datagram protocol/transmission control protocol, UDP/TCP)[13]核也已在FPGA中實(shí)現(xiàn).然而,NoC系統(tǒng)只能實(shí)現(xiàn)單電路板上的多塊FPGA進(jìn)行高速互聯(lián)通信,大規(guī)模FPGA互聯(lián)通信的實(shí)現(xiàn)依然非常困難.
片上系統(tǒng)FPGA互聯(lián)通信傳輸速率受限于片上處理器的工作頻率(一般小于200 MHz),同時(shí)由于結(jié)構(gòu)限制,不能實(shí)現(xiàn)大規(guī)模FPGA之間的高速數(shù)據(jù)通信.為了實(shí)現(xiàn)大規(guī)模FPGA之間的萬兆可靠數(shù)據(jù)通信,本研究提出了一種基于IP協(xié)議的萬兆可靠保序互聯(lián)通信系統(tǒng).本通信系統(tǒng)完全由硬件邏輯實(shí)現(xiàn),因此能夠?qū)崿F(xiàn)10 Gbit/s線速的數(shù)據(jù)收發(fā).同時(shí),通信協(xié)議采用IP協(xié)議[14]來實(shí)現(xiàn),包頭開銷小,帶寬利用率高,并且系統(tǒng)可直接通過商用萬兆交換機(jī)進(jìn)行互聯(lián)通信,具有較好的系統(tǒng)擴(kuò)展性.
基于IP互聯(lián)的傳輸結(jié)構(gòu)如圖1(a)所示,多片F(xiàn)PGA之間采用IP協(xié)議通過萬兆交換機(jī)進(jìn)行通信,通信速率為10 Gbit/s.基于先進(jìn)先出(first in first out,FIFO)隊(duì)列的用戶接口如圖1(b)所示,FPGA互聯(lián)模塊與用戶的接口采用隊(duì)列進(jìn)行信息傳輸.用戶把待傳輸?shù)臄?shù)據(jù)加入發(fā)送隊(duì)列中,由FPGA互聯(lián)模塊完成數(shù)據(jù)的IP協(xié)議封幀、線速傳輸以及超時(shí)重傳等可靠通信機(jī)制,同時(shí)完成萬兆以太網(wǎng)接收數(shù)據(jù)的線速保序接收,并把接收到的數(shù)據(jù)剝離IP幀頭,形成接收隊(duì)列供用戶使用.
為了便于用戶使用以及簡化接口設(shè)計(jì),基于IP協(xié)議的FPGA通信對用戶提供標(biāo)準(zhǔn)FIFO接口.如圖1(b)所示,所有FIFO都是雙時(shí)鐘域FIFO,緊鄰FPGA互聯(lián)模塊FIFO處的時(shí)鐘頻率為156.25 MHz,緊鄰用戶端的時(shí)鐘頻率可以由用戶根據(jù)應(yīng)用層需要進(jìn)行動(dòng)態(tài)配置.發(fā)送和接收隊(duì)列FIFO寬度均為65 bit(其中最高位用來指示本次發(fā)送或者接收數(shù)據(jù)的起始位置),能提供10 Gbit/s的數(shù)據(jù)吞吐率.
發(fā)送隊(duì)列FIFO:發(fā)送隊(duì)列幀含義如圖1(c)所示,其中usr info為用戶提供的參考信息將通過萬兆以太網(wǎng)透傳到接收端,用戶可以利用該信息對傳輸?shù)臄?shù)據(jù)進(jìn)行分類和標(biāo)識(shí),length表示本次數(shù)據(jù)傳輸?shù)拈L度(字節(jié)長度),其范圍為1~1 440字節(jié),所定義的數(shù)據(jù)傳輸長度使得在一幀以太數(shù)據(jù)內(nèi)能完成發(fā)送數(shù)據(jù)幀的傳輸,不需要對發(fā)送數(shù)據(jù)幀進(jìn)行拆分和重組,簡化了系統(tǒng)設(shè)計(jì)復(fù)雜度,IP address表示本次數(shù)據(jù)傳輸?shù)哪康腎P地址,Data表示本次數(shù)據(jù)傳輸要傳送的以太數(shù)據(jù).從以上描述可以看出,發(fā)送數(shù)據(jù)接口定義比較簡潔,便于用戶調(diào)用和使用.
圖1 基于IP互聯(lián)的結(jié)構(gòu)及接口Fig.1 Structure and interface based on IP interconnection
接收隊(duì)列FIFO:接收隊(duì)列幀含義與發(fā)送隊(duì)列相似(見圖1(c)),其中usrinfo為發(fā)送端發(fā)出的用戶信息,length表示本次數(shù)據(jù)傳輸?shù)拈L度(字節(jié)長度),IP address表示本次數(shù)據(jù)傳輸?shù)脑碔P地址,Data表示本次數(shù)據(jù)傳輸接收到的以太數(shù)據(jù).
從發(fā)送隊(duì)列和接收隊(duì)列的定義可以看出,本研究設(shè)計(jì)與實(shí)現(xiàn)的基于IP協(xié)議的萬兆互聯(lián)通道提供了一個(gè)開銷較小的數(shù)據(jù)傳輸通道,其簡潔的用戶接口簡化了系統(tǒng)設(shè)計(jì)和用戶使用的復(fù)雜度.
2.1 基于三指針環(huán)形緩沖池的線速通信機(jī)制
由于發(fā)送方發(fā)送的數(shù)據(jù)需要經(jīng)過萬兆交換機(jī)以及萬兆光纖物理通道,因此接收端在一段時(shí)間之后才能收到發(fā)送的數(shù)據(jù)(見圖2).從圖中可以看出,接收端在3個(gè)時(shí)間片后才開始接收數(shù)據(jù),并對接收到的數(shù)據(jù)進(jìn)行校驗(yàn).如果接收到的數(shù)據(jù)沒有錯(cuò)誤,則向發(fā)送端發(fā)送應(yīng)答ACK.同理,由于發(fā)送端與接收端之間有通信延遲,則該應(yīng)答信號在第8個(gè)時(shí)鐘片才能達(dá)到發(fā)送端.
因此若要實(shí)現(xiàn)完全的流水線發(fā)送,則需要在發(fā)送端將已經(jīng)發(fā)送出去的數(shù)據(jù)緩存起來,等收到接收方返回的應(yīng)答ACK以后,再釋放相應(yīng)的緩沖區(qū).緩沖區(qū)的大小需要與收發(fā)雙方的通信延遲相匹配.
圖2 互聯(lián)通信的線速傳輸機(jī)制Fig.2 Line-speed transmission mechanism of interconnect communication
2.1.1 三指針環(huán)形緩沖池設(shè)計(jì)
為了實(shí)現(xiàn)所需的數(shù)據(jù)線速發(fā)送,本研究提出了一種基于三指針的環(huán)形緩沖池來緩存已經(jīng)發(fā)送的數(shù)據(jù)(見圖3),圖中箭頭方向表示指針的增量方向.整個(gè)緩沖池采用塊方式進(jìn)行存儲(chǔ),每一個(gè)塊存儲(chǔ)一個(gè)完整的已發(fā)數(shù)據(jù)幀.考慮到發(fā)送數(shù)據(jù)幀的長度小于2 KB,因此每一個(gè)塊的大小為2 KB.緩沖池共有M=256個(gè)存儲(chǔ)塊,能夠匹配收發(fā)雙方大約331μs的通信延遲.存儲(chǔ)池提供的信息如下.
(1)頭指針:表示未收到應(yīng)答幀的第一個(gè)已發(fā)送數(shù)據(jù)緩沖區(qū).當(dāng)頭指針對應(yīng)的數(shù)據(jù)成功發(fā)送到接收方以后,接收方產(chǎn)生應(yīng)答幀發(fā)給發(fā)送端;發(fā)送方收到該應(yīng)答幀以后,則表示頭指針指向的緩沖區(qū)數(shù)據(jù)已經(jīng)成功發(fā)送到接收端;然后頭指針自增1,指向下一個(gè)待確認(rèn)的已發(fā)數(shù)據(jù)緩沖區(qū).
(2)尾指針:用戶待發(fā)信息存儲(chǔ)區(qū)起始指針.當(dāng)用戶發(fā)送隊(duì)列有數(shù)據(jù)需要發(fā)送,則把待發(fā)送數(shù)據(jù)存儲(chǔ)到尾指針指向的緩沖區(qū),待發(fā)數(shù)據(jù)存儲(chǔ)完畢,尾指針自增1.
(3)當(dāng)前發(fā)送指針:若緩沖池有數(shù)據(jù)要發(fā)送,則為該指針指向的緩沖區(qū)數(shù)據(jù)增加IP協(xié)議,并發(fā)送到萬兆以太網(wǎng)絡(luò)上.
(4)空標(biāo)志(Send_Buf_ Empty):環(huán)形緩沖池沒有待發(fā)送數(shù)據(jù)(即當(dāng)前指針與尾指針重合).
(5)滿標(biāo)志(Send_Buf_ Full):環(huán)形緩沖池已經(jīng)寫滿(即尾指針與頭指針重合).
圖3 基于三指針的環(huán)形緩沖池Fig.3 Ring buffer pool based on three-pointer
2.1.2 線速發(fā)送結(jié)構(gòu)及流程
發(fā)送端線速傳輸?shù)腇PGA實(shí)現(xiàn)邏輯如圖4的上半部所示,其線速通信方案依賴三指針環(huán)形緩沖池的存儲(chǔ)控制,主要包括線速存儲(chǔ)、線速讀取以及線速封幀三大部分.存儲(chǔ)、讀取和封幀的操作依賴各自對應(yīng)收發(fā)數(shù)據(jù)FIFO狀態(tài)以及環(huán)形緩沖池的狀態(tài),三者之間相互獨(dú)立,共同實(shí)現(xiàn)待發(fā)數(shù)據(jù)的線速通信.
(1)線速存儲(chǔ):當(dāng)發(fā)送緩存控制模塊檢測到待發(fā)信息隊(duì)列有數(shù)據(jù)需要發(fā)送,且環(huán)形緩沖池能夠容納一幀以太數(shù)據(jù)(即Send_Buf_ Full無效)時(shí),則從待發(fā)信息隊(duì)列獲取要發(fā)送的一幀數(shù)據(jù),并把該幀數(shù)據(jù)線速存儲(chǔ)到基于雙端口存儲(chǔ)器的環(huán)形緩沖池中;待該幀數(shù)據(jù)傳輸完畢,則向環(huán)形緩沖池發(fā)送傳輸完成信號Tsend ok;環(huán)形緩沖池一旦檢測到Tsend-ok信號有效,則沿指針繞行方向把尾指針指向下一個(gè)緩沖區(qū),從而實(shí)現(xiàn)待發(fā)信息的線速存儲(chǔ).
(2)線速讀取:發(fā)送傳輸控制模塊一旦檢測到環(huán)形緩沖池中有超過一幀的數(shù)據(jù)要發(fā)送(即SendBufEmpty信號無效),則從當(dāng)前發(fā)送指針指向的緩沖區(qū)線速讀取完整的一幀,并為該幀增加當(dāng)前發(fā)送序號,然后將該幀寫入發(fā)送數(shù)據(jù)FIFO;完整寫入后,向環(huán)形緩沖池發(fā)送傳輸完成信號Send_finish;環(huán)形緩沖池一旦檢測到該信號有效,則沿指針繞行方向把當(dāng)前發(fā)送指針指向下一個(gè)緩沖區(qū),從而實(shí)現(xiàn)了數(shù)據(jù)的線速讀取.
圖4 線速收發(fā)邏輯結(jié)構(gòu)框圖Fig.4 Line-speed transmitting logic structure diagram
(3)線速封幀:當(dāng)仲裁模塊檢測到發(fā)送數(shù)據(jù)FIFO、重發(fā)數(shù)據(jù)FIFO或發(fā)送應(yīng)答FIFO有數(shù)據(jù)需要發(fā)送時(shí),則通過仲裁從相應(yīng)FIFO中讀取一幀數(shù)據(jù),并將該幀數(shù)據(jù)傳送給IP封幀模塊;IP封幀模塊收到該幀數(shù)據(jù)后,為其添加相應(yīng)的IP頭信息,并將該幀封裝成完整的以太幀;然后通過介質(zhì)訪問控制(media access control,MAC)和10 Gbit/s以太網(wǎng)連接單元(ten-gigabit attachment unit interface,ⅩAUI)將該幀傳送到物理信道上.
線速存儲(chǔ)、線速讀取和線速封幀采用流水線結(jié)構(gòu),流水線級與級之間互相沒有干擾,用戶數(shù)據(jù)經(jīng)過這三級線速流水線處理,被封裝成完整的以太幀,并可實(shí)現(xiàn)線速發(fā)送到物理信道上. 2.1.3可靠線速通信的萬兆以太網(wǎng)傳輸幀格式
為了支持萬兆線速可靠數(shù)據(jù)通信,基于IP協(xié)議通信的幀格式如圖5所示.圖中,類型:表示發(fā)送幀類型,包括數(shù)據(jù)內(nèi)容幀(0x31)和數(shù)據(jù)應(yīng)答幀(0x32);并發(fā)序號:對應(yīng)當(dāng)前發(fā)送指針指向的緩沖區(qū)編號,用于保序傳輸(詳見2.2.2節(jié));長度:表示有效的數(shù)據(jù)長度,以字節(jié)為單位;用戶信息:由用戶提供的信息,透傳到接收端.
圖5 自定義協(xié)議幀格式Fig.5 Custom protocol frame format
該可靠通信協(xié)議基于IP層進(jìn)行傳輸,包括通信頭和通信內(nèi)容兩部分.從圖中可以看出, IP協(xié)議通信頭僅占用8字節(jié),與傳統(tǒng)的TCP首部20個(gè)字節(jié)相比,協(xié)議通信頭開銷減少了60%.幀類型有兩類:①數(shù)據(jù)內(nèi)容幀(0x31),與其對應(yīng)的傳輸數(shù)據(jù)為圖1(c)用戶定義的待傳數(shù)據(jù);②數(shù)據(jù)應(yīng)答幀(0x32),是指接收方收到內(nèi)容幀后向發(fā)送方發(fā)送的應(yīng)答幀,對應(yīng)的傳輸數(shù)據(jù)暫時(shí)沒有定義.為了滿足以太幀的最小64 bytes的需求,同時(shí)減少應(yīng)答幀占用網(wǎng)絡(luò)的通信帶寬,將傳輸數(shù)據(jù)長度設(shè)置為24 bytes.
2.2 可靠通信機(jī)制
2.2.1 數(shù)據(jù)通信丟包重傳機(jī)制
為了解決互聯(lián)通信由于通道競爭以及帶寬受限帶來的丟包現(xiàn)象,本研究提出的邏輯實(shí)現(xiàn)方案增加了硬件超時(shí)重傳功能,如圖4中的發(fā)送傳輸超時(shí)控制模塊.該模塊在一定時(shí)間間隔內(nèi)(與收發(fā)往返延遲相關(guān),如1 ms)檢測頭指針是否發(fā)生變化,如果沒有變化則意味著沒有收到頭指針對應(yīng)緩沖區(qū)的應(yīng)答幀,或者該緩沖區(qū)數(shù)據(jù)沒有正確發(fā)送到接收方,則發(fā)送方重新發(fā)送頭指針指向的緩沖區(qū)數(shù)據(jù);該模塊如果接收到了頭指針對應(yīng)的應(yīng)答信號,則釋放當(dāng)前頭指針指向的緩沖區(qū),并把頭指針移動(dòng)到下一個(gè)緩沖區(qū),同時(shí)把超時(shí)計(jì)數(shù)模塊清零.如果重發(fā)多次(可設(shè))仍然沒有接收到應(yīng)答信號,則放棄本次操作,并向上層應(yīng)用匯報(bào)數(shù)據(jù)發(fā)送狀況.
2.2.2 保序傳輸機(jī)制
系統(tǒng)的保序通信通過收發(fā)序號檢測的方法來實(shí)現(xiàn).當(dāng)初始上電時(shí),發(fā)送方和接收方的當(dāng)前序號均默認(rèn)為0,每成功發(fā)送或接收一次,當(dāng)前序號加1,然后進(jìn)行下一次發(fā)送或接收,直到當(dāng)前序號達(dá)到M?1(此處M=256,與緩沖池的塊數(shù)目相匹配),則下一次當(dāng)前序號再次復(fù)原為0.發(fā)送傳輸控制模塊為當(dāng)前發(fā)送指針?biāo)妇彌_區(qū)的數(shù)據(jù)幀添加當(dāng)前序號,并將該序號封裝后,發(fā)給接收方;發(fā)送完成后,當(dāng)前發(fā)送指針指向下一緩沖區(qū),進(jìn)行下一次發(fā)送.
接收方存儲(chǔ)控制模塊收到來自以太網(wǎng)的信息后,首先將信息存儲(chǔ)到接收隊(duì)列FIFO中去,如果存儲(chǔ)過程中接收隊(duì)列的余量不能容納一幀以太數(shù)據(jù),則丟棄本次以太數(shù)據(jù),等待發(fā)送方重發(fā)本次數(shù)據(jù).讀取控制模塊若檢測到接收隊(duì)列FIFO非空(即Empty信號無效),則從接收隊(duì)列FIFO中獲取本次接收數(shù)據(jù)的接收序號.如果本次接收數(shù)據(jù)的當(dāng)前序號與本地當(dāng)前序號一致,則認(rèn)為本次數(shù)據(jù)為要傳輸?shù)臄?shù)據(jù),然后把該數(shù)據(jù)傳輸?shù)接脩艚邮站彌_區(qū),并產(chǎn)生一個(gè)新的保序接收有效信號Seq_add_ ena,同時(shí)向發(fā)送方發(fā)送包含當(dāng)前序號的應(yīng)答數(shù)據(jù).當(dāng)接收序號控制模塊檢測到Seq_add_ ena信號有效時(shí),則把本地當(dāng)前序號自增1.如果接收序號與本地當(dāng)前序號不一致,則認(rèn)為此數(shù)據(jù)幀為非正常保序傳輸幀,丟棄該幀,等待發(fā)送方發(fā)送保序幀.
本研究提出的基于IP協(xié)議的FPGA萬兆可靠互聯(lián)通信系統(tǒng)已在Xilinx Virtex 6 lx550t FPGA上實(shí)現(xiàn)應(yīng)用,對應(yīng)的FPGA開發(fā)平臺(tái)詳細(xì)結(jié)構(gòu)參見文獻(xiàn)[15].為了測試系統(tǒng)工作穩(wěn)定性,搭建了相應(yīng)的測試平臺(tái),結(jié)構(gòu)如圖6所示,100塊FPGA通過Cisco Nexus 7000系列288口萬兆交換機(jī)相連.每塊FPGA內(nèi)部由用戶數(shù)據(jù)產(chǎn)生模塊產(chǎn)生測試數(shù)據(jù),由用戶數(shù)據(jù)接收模塊接收來自互聯(lián)系統(tǒng)的數(shù)據(jù).用戶數(shù)據(jù)產(chǎn)生模塊的啟動(dòng)、停止以及用戶數(shù)據(jù)發(fā)送的目的IP也是由FPGA內(nèi)部軟核Microblaze來控制與實(shí)現(xiàn)的.除此之外,內(nèi)部Microblaze能夠收集上述兩個(gè)模塊發(fā)送和接收的數(shù)據(jù)總量,以評測系統(tǒng)通信的可靠性.為了支持大規(guī)模系統(tǒng)測試, Microblaze運(yùn)行LWIP協(xié)議,使得控制中心PC可通過千兆交換機(jī)控制每一臺(tái)FPGA.數(shù)據(jù)幀負(fù)載為1 024字節(jié),經(jīng)過長時(shí)間(1天)的測試,每一對收發(fā)FPGA通道的發(fā)送與接收數(shù)據(jù)量保持一致,驗(yàn)證了系統(tǒng)的通信穩(wěn)定性和可靠性.
圖6 系統(tǒng)測試結(jié)構(gòu)Fig.6 System testing structure
圖7為通過Xilinx Chipscope Pro Analyser抓包軟件抓取到的測試過程中某一塊FPGA上的內(nèi)部邏輯信號,圖中xgmii_ txd為發(fā)送的數(shù)據(jù),xgmii_rxd為接收的數(shù)據(jù).可以看出,發(fā)送端在并發(fā)模式下一次性連續(xù)發(fā)出多幀數(shù)據(jù),接收端隔一段時(shí)間便會(huì)收到ACK幀.發(fā)送端數(shù)據(jù)幀占用139個(gè)時(shí)鐘,幀間隙為10個(gè)時(shí)鐘.由于萬兆接口時(shí)鐘為156.25 MHz,數(shù)據(jù)位寬為64,故數(shù)據(jù)傳輸速率為139/149×156.25 MHz×64 bit=9.33 Gbit/s,可見帶寬利用率達(dá)到了93.3%,已非常接近理論傳輸速率10 Gbit/s.
圖7 并發(fā)模式數(shù)據(jù)傳輸Fig.7 Data transmission in concurrent mode
本系統(tǒng)在lx550t FPGA上的資源占用情況如表1所示.從表中可以看出,系統(tǒng)僅占用了少量的FPGA Slice資源和RAM資源.由于每塊FPGA提供2個(gè)萬兆接口,因此共使用了8個(gè)GTX高速串行收發(fā)器.系統(tǒng)共占用3個(gè)時(shí)鐘資源,其中2個(gè)用于XAUI IP核產(chǎn)生156.25 MHz時(shí)鐘,1個(gè)用于產(chǎn)生Microblaze使用的100 MHz時(shí)鐘,即占用3個(gè)MMCM_ADV資源.
表1 Virtex 6 lx550t資源占用表Table 1 Device utilization summary for Virtex 6 lx550t
本研究提出了一種可在FPGA上實(shí)現(xiàn)的大規(guī)模FPGA高速萬兆可靠保序互聯(lián)通信系統(tǒng),采用基于IP協(xié)議的自定義協(xié)議,減小了包頭開銷,提高了帶寬利用率.系統(tǒng)設(shè)計(jì)基于三指針環(huán)形緩沖池,通過分析收發(fā)兩端通信延時(shí),提出線速數(shù)據(jù)存儲(chǔ)、線速數(shù)據(jù)讀取及線速封幀方法;采用流水線處理結(jié)構(gòu)實(shí)現(xiàn)了線速萬兆數(shù)據(jù)傳輸;通過保序傳輸機(jī)制以及超時(shí)重傳機(jī)制,確保了傳輸可靠性.系統(tǒng)實(shí)測數(shù)據(jù)傳輸速率可達(dá)到9.33 Gbit/s,并成功實(shí)現(xiàn)了100多個(gè)FPGA處理單元之間的萬兆可靠互聯(lián)通信.
[1]秦秀磊,張文博,魏峻,等.云計(jì)算環(huán)境下分布式緩存技術(shù)的現(xiàn)狀與挑戰(zhàn)[J].軟件學(xué)報(bào),2013,24(1): 50-66.
[2]陳如明.大數(shù)據(jù)時(shí)代的挑戰(zhàn)、價(jià)值與應(yīng)對策略[J].中國國際信息通信展???2012(17):14-15.
[3]李波,曹福毅,王祥鳳.高性能計(jì)算技術(shù)發(fā)展概述[J].沈陽工程學(xué)院學(xué)報(bào):自然科學(xué)版,2012,8(3): 252-254.
[4]楊海鋼,孫嘉斌,王慰.FPGA器件設(shè)計(jì)技術(shù)發(fā)展綜述[J].電子與信息學(xué)報(bào),2010(3):714-727.
[5]張興軍,丁彥飛,黃一元,等.基于FPGA的動(dòng)態(tài)部分可重構(gòu)高性能計(jì)算實(shí)現(xiàn)[J].華中科技大學(xué)學(xué)報(bào):自然科學(xué)版,2010,38:82-86.
[6]朱小謙,孟祥飛,菅曉東,等.“天河一號”大規(guī)模并行應(yīng)用程序測試[J].計(jì)算機(jī)科學(xué),2012(3): 265-267.
[7]Senouci B,Kouadri M A M,Rousseau F,et al.Multi-CPU/FPGA platform based heterogeneous multiprocessor prototyping:new challenges for embedded software designers[C]//The 19th IEEE/IFIP International Symposium on Rapid System Prototyping.2008:41-47.
[8]Romoth J,Jungewelter D,Hagemeyer J,et al.Optimizing inter-FPGA communication by automatic channel adaptation[C]//2012 International Conference on Reconfigurable Computing and FPGAs(ReConFig).2012:1-7.
[9]Mak T S T,Sedcole P,Cheung P Y K,et al.On-FPGA communication architectures and design factors[C]//International Conference on Field Programmable Logic and Applications. 2006:1-8.
[10]韓高飛,杜慧敏,蔣林,等.基于FPGA的NoC驗(yàn)證平臺(tái)的構(gòu)建[J].電子設(shè)計(jì)工程,2010(3):90-93.
[11]Liu Y,Liu P,Jiang Y,et al.Building a multi-FPGA-based emulation framework to support networks-on-chip design and verification[J].International Journal of Electronics,2010,97:1241-1262.
[13]龍玉軍,龔彬,馬衛(wèi)東,等.基于TCP、UDP的多路多數(shù)據(jù)流融合網(wǎng)絡(luò)系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程, 2011,19(21):69-72.
[14]張齊,勞熾元.輕量級協(xié)議棧LWIP的分析與改進(jìn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(10):2169-2171.
[15]Zheng Y,Zhang J J,Yan K,et al.Design and implementation of multi-FPGA high-speed access to RAID[C]//2013 IET/IEEE Second International Conference on Smart and Sustainable City.2013:203-207.
Design and implementation of FPGA 10 Gbit/s reliable interconnect communication based on IP protocol
SONG Yu-fei,ZHANG Jun-jie,WANG Kai,LI Jia-qi,
XUE Zi-wei,ZHENG Yue
(Key Laboratory of Specialty Fiber Optics and Optical Access Networks, Shanghai University,Shanghai 200444,China)
In recent years,cloud computing and big data processing have been rapidly developed.Since field programmable gate array(FPGA)has the unique parallel processing ability,it is widely used in big data processing.As the performance of communication network directly affects the performance of big data processing,this paper presents a high speed and reliable communication system based on IP protocol for FPGA communications. The system uses a three-pointer ring buffer pool and a method of parallel number management to achieve data transmission at a line-speed of 10 Gbit/s.By implementing hardware timeout retransmission mechanism,the system can guarantee reliable communications.A self-defined reliable IP protocol is used in the system,which has a small overhead and a good system expansion.Tests on the FPGA hardware platform show that the real data transfer speed can reach 9.33 Gbit/s.
big data;field programmable gate array(FPGA);interconnection;communication
TN 914.34
A
1007-2861(2015)05-0570-09
10.3969/j.issn.1007-2861.2014.05.015
2014-08-05
上海市科委科技攻關(guān)項(xiàng)目(13DZ1108800);上海市科委基金資助項(xiàng)目(11510500500,13JC1402600);國家自然科學(xué)基金資助項(xiàng)目(61132004,61275073)
張俊杰(1978—),男,高級工程師,博士,研究方向?yàn)楣饨尤刖W(wǎng)等.E-mail:zjj@staff.shu.edu.cn