隨著云計(jì)算技術(shù)的發(fā)展,采用FPGA 作為協(xié)同加速成為其發(fā)展的一個(gè)趨勢(shì),如何設(shè)計(jì)與實(shí)現(xiàn)FPGA 片間的高速通信是該研究方向的一個(gè)熱點(diǎn)。研究了FPGA 萬兆通信的物理層、MAC 層的實(shí)現(xiàn)機(jī)制,在通信協(xié)議可靠傳輸方面實(shí)現(xiàn)了MAC 層的流控以及錯(cuò)誤包檢測(cè)功能。仿真以及實(shí)際平臺(tái)測(cè)試表明,該通信協(xié)議能夠?qū)崿F(xiàn)FPGA 片間萬兆的線速通信。
云計(jì)算服務(wù)目前在互聯(lián)網(wǎng)上急速增長(zhǎng),其通過互聯(lián)網(wǎng)來提供動(dòng)態(tài)易擴(kuò)展的資源。隨著云計(jì)算的發(fā)展,對(duì)以太網(wǎng)的數(shù)據(jù)通信以及高性能計(jì)算也提出了更高的要求[1],而基于大規(guī)模的FPGA 協(xié)同加速成為云計(jì)算服務(wù)的一種發(fā)展趨勢(shì)[2 - 3]。因此如何設(shè)計(jì)與實(shí)現(xiàn)多片F(xiàn)PGA 之間的可靠通信成為云計(jì)算研究的一個(gè)熱點(diǎn)。文獻(xiàn)[4 -5]對(duì)物理層和MAC 層的接口進(jìn)行了設(shè)計(jì),實(shí)現(xiàn)了吞吐率達(dá)Gbit /s級(jí)的通信速率。文獻(xiàn)[6 -7]設(shè)計(jì)了千兆以太網(wǎng)全雙工模式下的物理通信,包括Pause 幀的收發(fā),還實(shí)現(xiàn)了數(shù)據(jù)包的校驗(yàn)出錯(cuò)重傳機(jī)制,但限于上層應(yīng)用,對(duì)Pause 幀的實(shí)現(xiàn)機(jī)制沒有具體闡述。
文獻(xiàn)[8 -9]基于Xilinx 公司FPGA 平臺(tái),在分析如何實(shí)現(xiàn)萬兆以太網(wǎng)的CRC32 糾錯(cuò)以及接收控制策略、CRC 編碼/校驗(yàn)及與千兆以太網(wǎng)兼容等關(guān)鍵問題的基礎(chǔ)上,實(shí)現(xiàn)了萬兆以太網(wǎng)MAC 層控制但缺乏具體的實(shí)現(xiàn)方案。文獻(xiàn)[10]采用自定義的的10 G MAC,設(shè)計(jì)與實(shí)現(xiàn)了以太包的調(diào)度策略。
上述研究沒有涉及萬兆MAC 層的流控以及可靠傳輸?;诖吮疚奶岢鲆环N通過利用Xilinx FPGA 集成的萬兆MAC IP 核以及XAUI IP 核實(shí)現(xiàn)FPGA 片間可靠通信的方法。
1 互聯(lián)系統(tǒng)結(jié)構(gòu)
本文提出的互聯(lián)系統(tǒng)結(jié)構(gòu)如圖1 所示,系統(tǒng)由4 片Xilinx 公司的Virtex6 系列的FPGA xc6vlx550t -2ff1759 構(gòu)成。每2 片F(xiàn)PGA 之間都有4 路高速雙向傳輸通道,每路運(yùn)行速度均為3. 125 Gbit /s,對(duì)外都有1 路10 G/20 G 的QSFP 光通信接口,線路采用8B/10B 編碼,因此FPGA 之間的互聯(lián)通信速率為10 Gbit /s??梢酝ㄟ^該硬件實(shí)現(xiàn)多級(jí)FPGA 的級(jí)聯(lián)通信。
2 萬兆互聯(lián)的物理層以及MAC 層接口的設(shè)計(jì)實(shí)現(xiàn)
為了支持FPGA 之間的萬兆通信,物理層采用Xilinx公司提供的XAUI IP,MAC 層采用Xilinx 公司的萬兆以太MAC IP 實(shí)現(xiàn)傳輸協(xié)議的CRC32 校驗(yàn)碼的填充與檢測(cè),如圖2 所示。在MAC 層之上增加了MAC 控制模塊,該模塊通過FIFO 接口簡(jiǎn)化了應(yīng)用層的設(shè)計(jì),并采用流量控制以及錯(cuò)誤檢測(cè)功能實(shí)現(xiàn)數(shù)據(jù)的10 G 線速可靠傳輸。
XAUI IP 核配合Xilinx 的Rocket IO GTX 實(shí)現(xiàn)XGMII總線與10 G 物理通道的轉(zhuǎn)換[11]。GTX 收發(fā)器實(shí)現(xiàn)高速串行收發(fā)器的數(shù)據(jù)緩沖、通道綁定、接收端時(shí)鐘恢復(fù)以及發(fā)送預(yù)加重等功能[12]。XAUI IP 核的XGMII 總線包括32位的雙速率和64 位的單速率接口,由于本文的XGMII 總線在FPGA 內(nèi)部,因此采用單速率的XGMII 總線接口,系統(tǒng)工作時(shí)鐘頻率為156.25 MHz。
2. 1 萬兆MAC 層協(xié)議
萬兆MAC 核是一個(gè)單速,全雙工10 Gbit /s 的以太網(wǎng)媒體控制器,實(shí)現(xiàn)IEEE802. 3ae 萬兆以太網(wǎng)數(shù)據(jù)的前導(dǎo)碼過濾與增加、數(shù)據(jù)4 byte CRC32 校驗(yàn)碼的填充與驗(yàn)證。支持的以太數(shù)據(jù)幀長(zhǎng)最小為64 byte,最大為1 518 byte( 可以支持Jumbo frame) 。其內(nèi)部結(jié)構(gòu)包括發(fā)送、接收引擎,流量控制模塊,管理接口和XGMII 接口,通過XGMII 接口能夠很方便地連接到XAUI IP 核[13]。
發(fā)送端在傳輸數(shù)據(jù)之前,MAC 層會(huì)先發(fā)送7 byte 的同步碼和1 byte 的幀首定界符,并在1 幀傳送結(jié)束時(shí)填充4 byte 的CRC32 校驗(yàn)碼,如果數(shù)據(jù)長(zhǎng)度小于46 byte,則會(huì)自動(dòng)在數(shù)據(jù)字段填充PAD 字符,即補(bǔ)0。在接收端,MAC層去掉前導(dǎo)碼和幀首定界符,并對(duì)幀進(jìn)行CRC32 校驗(yàn)。如果校驗(yàn)正確則向上層發(fā)送收到正確幀( rx_good_frame)信號(hào),否則發(fā)送收到錯(cuò)誤幀( rx_bad_frame) 信號(hào)。MAC 層還具有流控的功能,實(shí)現(xiàn)收發(fā)雙方的通信速率匹配。
2. 2 錯(cuò)誤檢測(cè)及過濾功能
Xilinx 提供的萬兆MAC 控制器對(duì)接收到的錯(cuò)誤數(shù)據(jù)并不進(jìn)行處理,僅僅給出數(shù)據(jù)CRC32 校驗(yàn)是否正確。為了提供物理層的可靠傳輸,需要在此基礎(chǔ)上增加接收錯(cuò)誤幀過濾模塊,如果接收到的是校驗(yàn)錯(cuò)誤幀,則需過濾掉該幀。本文采用基于雙端口數(shù)據(jù)RAM 以及幀信息FIFO 的存儲(chǔ)機(jī)制實(shí)現(xiàn)錯(cuò)誤包的過濾,如圖3 所示。接收存儲(chǔ)控制模塊若檢測(cè)到萬兆MAC IP 接收端口收到的數(shù)據(jù)rx_valid( rx_data_valid_o! = 8’h0) 有效,則把該數(shù)據(jù)緩存到雙口數(shù)據(jù)RAM 中去。然后檢測(cè)rx_valid 是否小于8 個(gè)時(shí)鐘節(jié)拍,如果小于8 個(gè)時(shí)鐘節(jié)拍,則不用判斷rx_good_frame 以及rx_bad_frame,因?yàn)榇藭r(shí)接收到的幀肯定錯(cuò)誤( 小于萬兆以太協(xié)議的最小64 byte) ,回到IDLE 狀態(tài)。如果rx_valid 持續(xù)有效時(shí)鐘大于8 個(gè)時(shí)鐘節(jié)拍,則在幀尾檢測(cè)是否有rx_good_frame 或者rx_bad_frame; 如果是bad 幀,不作處理回到IDLE 狀態(tài),如果是good 幀,則將該幀存放RAM 的起始地址和幀長(zhǎng)信息寫入幀信息FIFO,并返回IDLE狀態(tài)。如果在幀尾沒有檢測(cè)到good 或者bad 信息,則等待; 若等到good 信息則把該幀長(zhǎng)以及起始地址寫入幀信息FIFO,并返回IDLE 狀態(tài),若等到bad 信息則直接回到IDLE 狀態(tài),其狀態(tài)機(jī)如圖4 所示。
讀取控制模塊若檢測(cè)到幀信息FIFO 有數(shù)據(jù),則表示雙口數(shù)據(jù)RAM 中已經(jīng)存儲(chǔ)了正確的以太幀,從幀信息FIFO 中獲取接收到幀的地址與長(zhǎng)度,并把接收到的數(shù)據(jù)存儲(chǔ)到用戶控制端口的接收FIFO 中。由于采用存儲(chǔ)校驗(yàn)機(jī)制,因此接收端相對(duì)發(fā)送端有一定的延遲,最大延遲為最長(zhǎng)以太幀的存儲(chǔ)時(shí)間。
2. 3 流量控制模塊以及接收FIFO 緩沖區(qū)深度設(shè)計(jì)
為了解決發(fā)送FPGA 與接收FPGA 通信速率的不匹配,需要在MAC 層增加流控功能,即當(dāng)接收FIFO 裕量小于預(yù)設(shè)的安全值,向發(fā)送方發(fā)送暫停( Pause) 幀,告知發(fā)送方停止發(fā)送數(shù)據(jù)一段時(shí)間。發(fā)送方接收到暫停幀以后,停止數(shù)據(jù)的發(fā)送,若暫停期間沒有接收到新的Pause 幀,則繼續(xù)本次數(shù)據(jù)通信,若暫停期間接收到新的暫停幀,則從當(dāng)前時(shí)刻增加新的暫停時(shí)間。
?
3 系統(tǒng)性能測(cè)試
在Xilinx 公司的ISE 開發(fā)環(huán)境中進(jìn)行代碼綜合、映射及布局布線,綜合結(jié)果測(cè)試表明,本設(shè)計(jì)的工作頻率可以達(dá)到156. 25 MHz。通過快寫慢讀操作來驗(yàn)證流控模塊,如圖7 所示。最終實(shí)驗(yàn)結(jié)果表明能正常過濾錯(cuò)誤以太包,并確保通信速率達(dá)到了10 Gbit /s。用復(fù)位來模擬掉電操作,最終測(cè)試結(jié)果表明該系統(tǒng)在正常傳輸過程中若發(fā)送端或接收端突然掉電,上電后雙方仍能重新正常通信。
4 結(jié)論
本文實(shí)現(xiàn)了萬兆MAC 層發(fā)送、接收、流控以及錯(cuò)誤幀過濾的設(shè)計(jì)。并且使用Xilinx 的Virtex-6 系列FPGA器件進(jìn)行布局布線后進(jìn)行板級(jí)測(cè)試驗(yàn)證。結(jié)果表明,系統(tǒng)可以在156. 25 MHz 時(shí)鐘頻率正常工作,接收和發(fā)送帶寬均可接近10 Gbit /s。但隨著社會(huì)的發(fā)展,人們對(duì)通信速率的要求越來越高,在不久的將來, 10 Gbit /s 的通信速率將不能滿足人們的需求,所以對(duì)高速互聯(lián)的研究將永無止境,下一步可以提高互聯(lián)通信速率,進(jìn)一步研究20 Gbit /s、40 Gbit /s 或更高速率的互聯(lián)結(jié)構(gòu)。
評(píng)論