大數(shù)據(jù)時(shí)代,如何同時(shí)發(fā)揮CPU與FPGA的優(yōu)勢?
或許,你會(huì)認(rèn)為DPDK(Data Plan Development Kit)是一個(gè)應(yīng)用在網(wǎng)絡(luò)應(yīng)用層上的高速數(shù)據(jù)傳輸標(biāo)準(zhǔn);或許,你認(rèn)為DPDK是Intel制定的一套規(guī)格;或許,你認(rèn)為DPDK在CPU和ASIC界是受限的保密的;亦或許,你都沒有聽說過DPDK,考慮到它的發(fā)展歷史,確實(shí)很有可能。所以,如果以上的這些假設(shè)中有一項(xiàng)是正確的,那么你應(yīng)該讀讀下面的內(nèi)容。
最初,DPDK是一個(gè)數(shù)據(jù)層的庫集,后來Intel開發(fā)了專門針對Intel X86微處理器的可以快速分組處理NIC(網(wǎng)絡(luò)接口控制)的驅(qū)動(dòng),這就是DPDK的前世。而今生的DPDK,在去年四月份,已經(jīng)成為一個(gè)Linux基金項(xiàng)目,并且可以在DPDK.org上看到。
DPDK主要包括以下幾個(gè)大家常用的主要庫:
當(dāng)需要最小化CPU周期數(shù)時(shí)(一般小于80)發(fā)送和接收數(shù)據(jù)包;
開發(fā)快速分組算法;
運(yùn)行第三方快捷路徑堆棧。
迄今為止,DPDK聽起來確實(shí)像是一個(gè)特殊的網(wǎng)絡(luò)開發(fā)工具,但是,也正如Atomic Rules的CTO Shep Siegel所說:“如果你可以使你的數(shù)據(jù)傳輸問題看起來僅僅是一個(gè)數(shù)據(jù)包傳輸問題的話,那么,在你的開發(fā)流程中,DPDK可能就是一條比較有幫助捷徑”。
Arkville
并且,關(guān)于近期更多DPDK的細(xì)節(jié),Siegel的團(tuán)隊(duì)可能更為了解,主要是因?yàn)樗膱F(tuán)隊(duì)剛發(fā)布了Arkville,這是一個(gè)支持DPDK的FPGA/GPP的數(shù)據(jù)傳輸IP塊和DPDK PMD(Poll Mode Driver,與Linux基金開源DPDK庫17.05發(fā)行版協(xié)作,允許Linux DPDK應(yīng)用分流服務(wù)器循環(huán)到FPGA門)。同時(shí),Atomic Rules的Arkville發(fā)行版還兼容Xilinx Vivado2017.1(這是今年四月份剛剛發(fā)布Vivado設(shè)計(jì)工具的最新版本)。此外,Atomic Rules提供了兩個(gè)簡單的demo設(shè)計(jì)(均可通過Vivado 2017.1進(jìn)行編譯):
4端口,4隊(duì)列10GbE demo(Arkville + 4 x 10 GbE MAC)
單端口單隊(duì)列 100GbE demo(Arkville + 1 x 100 GbE MAC)
以上這兩個(gè)例子都是數(shù)據(jù)移動(dòng)器。準(zhǔn)確來說,Arkville是一個(gè)數(shù)據(jù)包導(dǎo)管道,這個(gè)管道有一個(gè)CPU端的DPDK接口,一個(gè)FPGA端的AXI接口,同時(shí),在Arkville管道上還有一個(gè)可以很方便地增加用戶用于處理這些數(shù)據(jù)包的硬件設(shè)計(jì)點(diǎn),同時(shí)這也是CPU分流邏輯的所在。
Atomic Rules開發(fā)的Arkville IP和所有的Xilinx UltraScale器件都協(xié)作良好,但是,與Xilinx UltraScale+ 的全可編程器件協(xié)作的更好,這主要?dú)w功于全可編程器件內(nèi)部集成兩個(gè)PCIe Gen3 x 16控制器(包括Kintex UltraScale+和Virtex UltraScale+ FPGA系列器件和Zynq UltraScale+ MPSoC系列器件)。
為什么呢?
正如BittWare企業(yè)的VPCraig Lund主管所說 “100G的以太網(wǎng)是不太可能的,但是你是否可以在服務(wù)器端通過使用PCIe來達(dá)到這個(gè)速率 [使用一個(gè)PCIe Gen3 x 16接口]是不明確的。從PCIe的參數(shù)來看,這看起來似乎簡單,但事實(shí)并非如此” 。Lund還說到,如果你正在處理一個(gè)最小尺寸的數(shù)據(jù)包,那么可以采用大量超過14百萬每秒來實(shí)現(xiàn)。但是如果你正在處理一個(gè)大的數(shù)據(jù)包,那將需要更多的帶寬,這或許正是一個(gè)對單PCIe Root 復(fù)合體生產(chǎn)力的挑戰(zhàn),不過從實(shí)際出發(fā),確實(shí)一個(gè)不夠。
應(yīng)用Atomic Rules的ArkvilleIP,BittWare開發(fā)出了自己的產(chǎn)品——XUPP3R PCIe卡,同時(shí)它還組合了一個(gè)Xilinx的Virtex UltraScale+ VU13P FPGA芯片。BittWare的XUPP3R PCIe板卡的眾多獨(dú)特特征之一就是它有兩個(gè)PCIe Gen3 x 16 端口:一個(gè)在邊緣連接器時(shí)有效,另一個(gè)是一個(gè)可選的連續(xù)擴(kuò)展口。其中第二個(gè)PCIe Gen3x16口可以用作增加帶寬的第二PCIe槽。
然而,盡管Lund沒有多說,這里卻不僅僅需要兩個(gè)PCIe Gen3 x 16插槽,而是需要兩個(gè)PCIe Gen2 Root復(fù)合體,也就意味著需要一個(gè)兩組插槽的母板,然后兩個(gè)CPU工作處理數(shù)據(jù)通路。
BittWare不僅開發(fā)了具有兩個(gè)PCIe Gen3 x 16端口的XUPP3R PCIe卡,此外,BittWare還使用它的XUPP3R PCIe卡和Arkville IP共同開發(fā)了兩個(gè)產(chǎn)品:
StreamSleuth,一個(gè)100GbE的網(wǎng)絡(luò)數(shù)據(jù)包處理器具。
StreamSurge,一個(gè)1U盒子,內(nèi)有Intel E5 v4 單插座服務(wù)器和由XUPP3R PCIe 卡設(shè)計(jì)的NIC以及BittWare的StreamSurge IP。
不過,需要對號的是:Arkville是Atomic Rules提供的一個(gè)IP,XUPP3R PCIe卡是BittWare提供的產(chǎn)品,兩者不可混淆。
總結(jié)
目前,大量數(shù)據(jù)爆發(fā),除了固件運(yùn)輸之外,最方便的總線(PCIe/ETH)線路傳輸,不僅速率高同時(shí)安全性高,但是隨著形勢的發(fā)展,對其速率的要求越來越高,期望Xilinx FPGA可以為提高數(shù)據(jù)傳輸速率方面做出更多貢獻(xiàn)。