本帖最后由 lvroubaozi 于 2018-3-1 09:20 编辑
面对云计算,FPGA何去何从?
FPGA,大家已经很熟悉了,近些年得到了广泛的应用和发展,在不同行业和领域都发挥着自己独特的作用。相比于其他各种中央处理器相互竞争、相互取代,FPGA一直都在另一个维度追逐自己的梦想,堪称独行者。因为相比于其他处理器的冯诺依曼架构,FPGA好像是一张白纸,以无形胜有型。但是目前很火的云计算里面FPGA的身影并不多,相比其他处理器,FPGA有什么特点呢?未来FPGA在云计算中应该如何发挥自己的优势呢?我们来分析一下。 对于工业用户来说,早年最熟悉的莫过于DSP,不论什么应用,首先想到的解决方案就是DSP,因为其优秀的计算能力。目前高级的DSP已经可以有8核,同时主频都在1GHz以上了,而FPGA的主频离DSP真的是差太多了,但是相比DSP的架构,FPGA的程序架构完全是由用户自己设计的,这样的话,对于很多并行计算的任务,如果用DSP去完成,任然是顺序执行,或者最多也就是8核并行执行,而用FPGA去实现,无论有多少的并行任务,只要FPGA资源够用,全部都可以并行执行,这就大大提升了任务的执行速度,而且提升的量级是DSP永远无法追赶的。而且现在的FPGA内部都集成了很多的浮点DSP计算单元,因此对于高精度浮点运算也完全不惧。 再来看看FPGA和GPU的比较。相比于GPU的计算能力,FPGA确实还是差一些。但是除去这一劣势,与GPU相比的话,FPGA又有一些其他优势,比如说延迟以及功耗。因为对于一些复杂的、多级处理的任务、FPGA的灵活性可以将程序根据需要设计成不同的不流水线、不同的程序结构,不同的处理单元、每个单元的功能都可以不同。另外由于结构差异使得GPU在功耗方面与FPGA无法相比。 以上FPGA的特点ASIC芯片都有,但是ASIC芯片无法做到像FPGA一样根据需要修改程序。云服务器的任务来自不同的客户,任务灵活多变,从这一点是上讲,ASIC就可以被淘汰了。 FPGA相比于其他处理器还有一个重要优势是数据吞吐。对于CPU或者GPU来说,首先需要从网卡或者其他接口接收数据。而我们可以直接从FPGA扩展一个或多个高速网络接口或者其他的高速接口,这样需要处理的数据可以直接到达处理器,无需经过绕路了。 基于以上特点FPGA的很多优势其实正是云计算所需要的,但是基于FPGA以上这些特点,未来FPGA在云计算中可以发挥怎样的作用呢?很多大公司其实在几年前的就已经开始了在这方面的探索,Intel、微软、亚马逊等,国内BAT也已经开始了这方面尝试。 微软把 FPGA 部署在网卡和交换机之间,通过虚拟化技术,FPGA对每个虚拟机虚拟出一块网卡,虚拟机通过 SR-IOV直接访问这块虚拟网卡。通过这种方式将交换机的虚拟功能改由FPGA来承载。 而Intel则是通过收购altera,将altera的FPGA和自己的CPU深度结合,未来Intel的CPU和FPGA将实现高速直接通信,通过这种方式将CPU的任务直接加载给FPGA,从而大大提升数据中心的处理能力。 国内方面,阿里云已经在自己的云服务器中提供了FPGA加速服务,从网站介绍来看,其加速卡采用的是Intel 的A10加速卡方案,目前可以提供OpenCL平台的硬件加速。腾讯云采用的则是Xilinx的FPGA,其FPGA未来会支持C/C++、OpenCL、Verilog/VHDL 等开发语言。这些服务目前都属于内测阶段。百度云的FPGA加速服务推出是最早的,采用的是xilinx的FPGA,目前来看也是发展最完善的,未来应该也会提供Intel的FPGA方案。 当然,既然是在云服务器中的FPGA加速服务,必须涉及到的就是虚拟化,这样才能满足多用户的需求。我们虽然看不到BAT服务器目前在FPGA虚拟化方面的实现如何,但是可以预见虚拟化是必然的一个选择,否则云服务器的规模成本优势将会大打折扣。这样遇到的一个问题就是FPGA虚拟化并不容易实现及使用。试想一下,同一个FPGA内,两个不同的用户在同时使用各自的区域并且互不干扰。这虽然在技术上可以实现,但是BAT服务器目前是否有这些部署,我们还需进一步了解。 除了虚拟化,目前FPGA在云计算中应用有一个很大的挑战就是FPGA的编程难度要比GPU、CPU难很多、而且开发周期长,程序模块化差,当然目前的FPGA可以用很多高级语言去设计比,如HLS、OpenCL等,但其执行效率肯定就要比用Verilog直接开发低不少,这样的话FPGA与GPU相比是否还有功耗优势就不一定了。这样也会影响FPGA加速服务的性能。 有了服务,用在何处是另一个问题,也许BAT也没有特别的想清楚FPGA加速到底用在何处,目前提到的应用也只有深度学习、压缩算法等,还没有什么实际落地的应用。这一探索任务落到了目前很多传统基于FPGA做开发的公司身上,他们已经在BAT服务器中开始测试FPGA加速功能。隔着遥远的网线使用着也许是国外某个深山中的一颗FPGA,意味着做现场控制已经不现实了,这意味着未来的应用来自于FPGA的传统市场比例肯定会比较小,目前来看最快的有可能是某些公司发现之前用GPU实现的功能用FPGA实现更加的划算了,同时研究发现研发投入可以接受,那么可能会转到FPGA加速。 总结,FPGA在云计算中的优势是显而易见的,但是怎样才能找到一种高效、经济的方式将这种优势体现则是更加重要的一个因素。
|