大数据时代,如何同时发挥CPU与FPGA的优势?

作者:闲情逸致

背景:
或许,你会认为DPDK(Data Plan Development Kit)是一个应用在网络应用层上的高速数据传输标准;或许,你认为DPDK是Intel制定的一套规格;或许,你认为DPDK在CPU和ASIC界是受限的保密的;亦或许,你都没有听说过DPDK,考虑到它的发展历史,确实很有可能。所以,如果以上的这些假设中有一项是正确的,那么你应该读读下面的内容。

最初,DPDK是一个数据层的库集,后来Intel开发了专门针对Intel X86微处理器的可以快速分组处理NIC(网络接口控制)的驱动,这就是DPDK的前世。而今生的DPDK,在去年四月份,已经成为一个Linux基金项目,并且可以在DPDK.org上看到。

DPDK主要包括以下几个大家常用的主要库:

  • 当需要最小化CPU周期数时(一般小于80)发送和接收数据包;
  • 开发快速分组算法;
  • 运行第三方快捷路径堆栈。
  • 迄今为止,DPDK听起来确实像是一个特殊的网络开发工具,但是,也正如Atomic Rules的CTO Shep Siegel所说:“如果你可以使你的数据传输问题看起来仅仅是一个数据包传输问题的话,那么,在你的开发流程中,DPDK可能就是一条比较有帮助捷径”。

    Arkville:
    并且,关于近期更多DPDK的细节,Siegel的团队可能更为了解,主要是因为他的团队刚发布了Arkville,这是一个支持DPDK的FPGA/GPP的数据传输IP块和DPDK PMD(Poll Mode Driver,与Linux基金开源DPDK库17.05发行版协作,允许Linux DPDK应用分流服务器循环到FPGA门)。同时,Atomic Rules的Arkville发行版还兼容Xilinx Vivado2017.1(这是今年四月份刚刚发布Vivado设计工具的最新版本)。此外,Atomic Rules提供了两个简单的demo设计(均可通过Vivado 2017.1进行编译):

  • 4端口,4队列10GbE demo(Arkville + 4 x 10 GbE MAC)
  • 单端口单队列 100GbE demo(Arkville + 1 x 100 GbE MAC)
  • 以上这两个例子都是数据移动器。准确来说,Arkville是一个数据包导管道,这个管道有一个CPU端的DPDK接口,一个FPGA端的AXI接口,同时,在Arkville管道上还有一个可以很方便地增加用户用于处理这些数据包的硬件设计点,同时这也是CPU分流逻辑的所在。

    Atomic Rules开发的Arkville IP和所有的Xilinx UltraScale器件都协作良好,但是,与Xilinx UltraScale+ 的全可编程器件协作的更好,这主要归功于全可编程器件内部集成两个PCIe Gen3 x 16控制器(包括Kintex UltraScale+和Virtex UltraScale+ FPGA系列器件和Zynq UltraScale+ MPSoC系列器件)。

    为什么呢?

    正如BittWare企业的VPCraig Lund主管所说 “100G的以太网是不太可能的,但是你是否可以在服务器端通过使用PCIe来达到这个速率 [使用一个PCIe Gen3 x 16接口]是不明确的。从PCIe的参数来看,这看起来似乎简单,但事实并非如此” 。Lund还说到,如果你正在处理一个最小尺寸的数据包,那么可以采用大量超过14百万每秒来实现。但是如果你正在处理一个大的数据包,那将需要更多的带宽,这或许正是一个对单PCIe Root 复合体生产力的挑战,不过从实际出发,确实一个不够。

    应用Atomic Rules的ArkvilleIP,BittWare开发出了自己的产品——XUPP3R PCIe卡,同时它还组合了一个Xilinx的Virtex UltraScale+ VU13P FPGA芯片。BittWare的XUPP3R PCIe板卡的众多独特特征之一就是它有两个PCIe Gen3 x 16 端口:一个在边缘连接器时有效,另一个是一个可选的连续扩展口。其中第二个PCIe Gen3x16口可以用作增加带宽的第二PCIe槽。

    然而,尽管Lund没有多说,这里却不仅仅需要两个PCIe Gen3 x 16插槽,而是需要两个PCIe Gen2 Root复合体,也就意味着需要一个两组插槽的母板,然后两个CPU工作处理数据通路。以下简化的方框图可以说明Lund的观点:

    BittWare不仅开发了具有两个PCIe Gen3 x 16端口的XUPP3R PCIe卡,此外,BittWare还使用它的XUPP3R PCIe卡和Arkville IP共同开发了两个产品:

  • StreamSleuth,一个100GbE的网络数据包处理器具。
  • StreamSurge,一个1U盒子,内有Intel E5 v4 单插座服务器和由XUPP3R PCIe 卡设计的NIC以及BittWare的StreamSurge IP。
  • 不过,需要对号的是:Arkville是Atomic Rules提供的一个IP,XUPP3R PCIe卡是BittWare提供的产品,两者不可混淆。

    总结:
    目前,大量数据爆发,除了固件运输之外,最方便的总线(PCIe/ETH)线路传输,不仅速率高同时安全性高,但是随着形势的发展,对其速率的要求越来越高,期望Xilinx FPGA可以为提高数据传输速率方面做出更多贡献。

    声明:本文为原创文章,转载需注明作者、出处及原文链接,否则,本网站将保留追究其法律责任的权利