自Xilinx在1984年创造出FPGA以来,这种可编程逻辑器件凭借性能、上市时间、成本、稳定性和长期维护方面的优势,在通信、医疗、工控和安防等领域占有一席之地,在过去几年也有极高的增长率。而进入了最近两年,由于云计算、高性能计算和人工智能的繁荣,拥有先天优势的FPGA的关注度更是到达了前所未有的高度。本文从基础出发谈及FPGA的过去、现在与未来。
我们知道,相对于专业的ASIC,FPGA有上市时间和成本上的优势。另外,在大多数情况下,FPGA执行某些功能较之CPU上的软件操作更高效。这就是为什么我们认为它不但会运用在数据中心的服务器、交换器、存储层的各个角落,并且具有加速整个工作流程的功能。
然而我们不能过分乐观,尤其是在2015年12月,Intel以167亿美元收购了FPGA生产商Altera之后。
在2014年年底,当时还处于独立的Altera公司高层盯上了基于CPU+FPGA的数据中心并行计算的发展前景——这个当时价值大约10亿美元的市场。而并非数据中心里约2.5亿美元的CPU-GPU市场和直接应用CPU处理器的90亿美元市场。
Altera做出这个决定的原因在于他们认为这个组合较之另外两个方案,有编程的简便性和能效优势。人们对CPU非常熟悉,并发现寻找C程序员也不会太难。因此对大部分开发者来说,在执行运算任务的时候,持续使用这种方案不需要冒太大的风险,但是能源效率相对比较低,尤其是在密集的计算和固有的并行工作负载的情况底下。
至于CPU+GPU的方案,程序员并不是很熟悉,但是拥有很高的效率。
根据Altera的估计,使用OpenCL对混合CPU-FPGA系统进行编程比使用Nvidia的CUDA环境对于程序员来说更容易(某些方面肯定是有争议的),但用HDL来硬编程FPGA是相当困难的,因此需要OpenCL或者通过其他抽象层来将CPU中的负载转移到FPGA上。
这个十亿美元的数据中心市场被Altera、Xilinx和其他FPGA供应商瓜分。在Intel于2015年6月收购了Altera之后,这个市场变得更加复杂。
在收购之前的2014年,Altera的19亿美元收入中,有16%来自于与数据中心相关的计算、网络和存储业务,其总值达到3.04亿美元。那些在这个领域深耕十几二十年的通信和无线设备系统制造商想要有更高的能源效率,更低的成本和更高的扩展性,这些都是FPGA所擅长的领域。另外有一点需要提一下,那就是在执行这些功能的时候,使用FPGA并不需要像使用CPU那样需要操作系统和相应的软件。这部分的营收占了Altera营收的44%,总额为8.35亿美元。
Altera另外的22%收入,即4.18亿美元,来自工业控制、军事设备和汽车制造等领域。他们面对相同的困境,因此选择FPGA来处理他们的一些工作负载。
其实早在2014年,英特尔看中了价值1150亿美元的各种类型的芯片潜在市场。当中可编辑逻辑设备(以FPGA为主)约占4%,ASIC占18%,其余为ASSP的大杂烩。
在可编辑逻辑设备的领域中,英特尔预估Altera占有48亿美元市场中的39%,Xilinx占有49%,剩下供应商则占据剩下的12%。
当时英特尔没有收购Altera的原因是因为FPGA业务的增长速度几乎与其数据中心集团(为服务器,存储和交换机制造商提供芯片,芯片组和主板)的速度一样快。
再者,英特尔没有这样做也是因为摩尔定律逐渐缓慢下来的脚步,给FPGA带来了日益增长的竞争威胁。
实际上,如果应用的话,在数据中心里不止安装一个FPGA、GPU或DSP加速器,但不需要安装多个Xeon CPU。由于英特尔不能继续为Xeons提供更多的核心和加速器,所以他们得出了将FPGA当做加速器的结论。
除非FPGA能在数据中心创造5亿美元的收益,或者几年后创造10亿美元或更多的收入。不然英特尔宁愿牺牲两至三倍的Xeon收入,也不会把Xeon的收入拱手相让。
根据英特尔的预测,他们计划从现在到2023年以接近直线增长率来提升FPGA的业务。对此我们总是抱有怀疑的态度。但FPGA业务随着时间的推移或多或少地在增长(比15年前增长约2.5倍)。
英特尔还预计,FPGA的营收在2014年到2023年之间将会再翻一倍。按照英特尔预测,从2014年到2023年间其复合年增长率为7%,其收入应该略低于预测的89亿美元。有趣的是,由于英特尔的预测并没有把来自数据计算中心(服务器,交换和网络)的FPGA收入份额纳入计划中,这将会发生很大变化。让我们分析一下:
如果Altera和Xilinx的市场份额没有发生改变,且假设Altera的收入在网络,计算和存储的部分保持不变,那么Altera这一部分的业务收入到2023年将会达到5.6亿美元左右。我们认为Intel这样的数据低估了数据中心在提供更有效和灵活计算所面对的压力。不给过我们认为FPGA的前景远远优于这个预测。也就是说,许多FPGA技术的支持者一直期待FPGA在数据中心中获得计算合法化的那天很快到来。
Altera FPGA芯片
讽刺的是,英特尔本身作为FPGA的编程专家,硬件描述语言的使用者,以及知名的ASIC制造商,竟成为推动FPGA成为加速器优先选择的主要参与者。这样的加速器既能作为独立的离散计算元件,又可以作为混合 CPU-FPGA器件。
这也是为什么从2016年以来,我们看到所有关于Altera的新闻都是昭示FPGA将会有的大规模增的增长。所以至少在短期,他们除了为其他的FPGA制造商作嫁衣裳,几乎别无他法。
这次收购不仅是FPGA发展的里程碑,也是英特尔对FPGA巨大的潜力的承认。FPGA作为未来强大的计算加速器,不但影响主要企业的决策和市场趋势,而且加速企业中的工作负载,促进超大规模数据中心的内部搜索,以及提高高性能计算模拟的地位。
在跨越2017年之际,FPGA在应用程序中等级中新增了机器学习和深度学习,这给FPGA产业敲下了又一重锤。
首先,编程FPGA的软件栈已经演进了,尤其是在Altera的帮助下,FPGA增加了对OpenCL开发环境的支持。但不是每个人都是OpenCL的狂热粉丝。
先有Nvidia为其Tesla GPU加速器创建了自己的CUDA并行编程环境。再有SRC计算机公司不但早在2002年就为国防和智能领域提供混合CPU-FPGA系统,到了2016年年中,进一步将自己研发的Carte编程环境进入了商业市场,这个编程环境可以使C和Fortran程序自动转换为FPGA的硬件描述语言(HDL)。
另一个推动FPGA被采用的因素是随着芯片制造技术难以持续缩进,多核CPU性能的提高越来越艰难。 虽然CPU的性能获得了大跳跃,但主要用于扩展CPU的性能吞吐量,而不是单个CPU内核的个体性能。(我们知道架构增强是有难度的)。但是FPGA和GPU加速器的每瓦性能都有了令人信服的改进。
根据微软的运行测试,在执行深度学习算法的时候,CPU-FPGA和CPU-GPU混合计算在的每瓦性能也不相伯仲。GPU在运行中更热和有类似的每瓦性能表现,但是同时他们也带来了更强的工作能力。
提高了每瓦性能解析了为什么世界上最强大的超级计算机在20世纪90年代后期转移到并行集群,并且解析了为什么现在他们转向了混合机器,而不是英特尔的下一个以 CPU-GPU为混合主力的Xeon Phi的处理器“Knights Landing (简称KNL)。
在Altera FPGA协处理器和Xeon Phi处理器Knights Landing的帮助下,英特尔不但可以保持自己的在高端的竞争优势。并且在与Nvidia 、IBM和 Mellanox组成的Open power联盟竞争中继续领先。
英特尔坚信超大规模计算,云端和HPC市场的工作负载会快速成长。为促进其计算业务继续蓬勃发展。这情况下只能成为FPGA的卖家,否则别人就会抢去这唯一的出路。
但英特尔并不是这样跟大家说。他们说:“我们不认为这是一种防守战或者其他,”英特尔的CEO Brian Krzanich在Altera收购消息后的新闻发布会上说。
“我们认为物联网和数据中心都是庞大的。这些也是我们的客户想要构建的产品。我们30%的云端工作负载将在这些产品上,这是基于我们对如何看待趋势变化以及市场发展的预测。
这是用来证明这些工作负载能以一种或另一种方式转移到硅中。我们认为最好的做法是使用有业界最佳性能和成本优势的Xeon处理器和FPGA组合。这将给工业领域带来更好的产品和性能。而在IoT中,这将扩展到潜在市场对抗ASIC和ASSP;而在数据中心中,则会将workload转移到硅,推动云的快速增长。
Krzanich解释道:“你可以把FPGA想象成一堆gate,且能够随时编程。根据他们的想法,其算法会随着时间的推移和学习变得更聪明。FPGA可以用作多个领域的加速器,可以在进行加密的同时进行面部搜索,而且能在基本上在微秒内重新编程FPGA。这比大规模的单个定制部件的成本低得多且具备更高的灵活性。”
英特尔看到了比这更大的机会。
Intel首席执行官Brian Krzanich在收购完成后宣布,到2020年,将有高达三分之一的云端服务提供商使用混合的CPU-FPGA服务器节点,这是一个令人震惊的消息。这也给从2014年底就开始瞄准的数据中心的Altera带来大约10亿美元的FPGA的机会。这数目大概是Nvidia目前流行的Tesla计算引擎营收的三倍。
在2014年初,英特尔展示了一个相同封装的Xeon-FPGA芯片原型,并且打算在2017年推出这个芯片。这是基于当时数据中心集团GM Diane Bryant提出的一个带有FPGA电路的Xeon设想不久之后推出的。
在宣布Altera交易的电话会议上,Krzanich没有说明退出这款Xeon-FPGA设备的时间,但是他表示英特尔将创建一个面向物联网市场的单die混合Atom-FPGA设备。英特尔正在考究在混合过渡阶段,是否需要为Atom和Altera FPGA做单一封装混合。
在2016年的初太平洋顶峰证券的电话会议中,英特尔的云端基础设施集团总经理Jason Waxman与研究分析师讨论关于英特尔数据中心业务时表示,FPGA已经成为了热门话题。
首先,虽然他没有指名道姓哪家厂商或者任何设备的规格,但是Waxman确定英特尔已经为某些客户提供了Xeon加FPGA的混合计算引擎样品。
在会议期间,Waxman更是畅谈了驱动英特尔收购Altera和插足可编程计算设备的原因。 英特尔显然希望让FPGA成为主流,即使这可能会在数据中心中蚕食Xeon的某些业务。 (我们认为,因为英特尔认为这种自相残杀是不可避免的,控制它的最好方法是使FPGA成为Xeon阵容的一部分。)
Waxman说:“我认为这项收购可能涉及许多事情,而且其中一些已经超越数据中心集团的范围。”
首先,一个潜在的核心业务往往是由制造领先优势驱动。在这方面我们能很好的掌控,而且这样做还有良好的协同作用。
再者,还有物联网“集团”对此也有很强的兴趣。
据我们所知,某些大规模工作负载的扩展(如机器学习,某些网络功能)吸引了越来越多的人关注。我们才意识到我们或者可以在性能方面取得一些突破,这将是一个把FPGA从数据中心应用程序中移植到更多适合的、广泛发展领域的良好机会。
但是在数据中心集团里的协作,FPGA不过是给CPU做个伴,帮助解决云端服务提供商和其他类型的大规模应用程序的问题。
英特尔认为对FPGA加速有优先和大量需求的关键应用包括机器学习,搜索引擎索引,加密和数据压缩。正如Waxman指出,这些往往是很有针对性的,且没有统一的使用案例。这就是Krzanich斩钉截铁说三分之一的云端服务提供商将在五年内使用FPGA加速的依据。
虽然每个人都抱怨编程FPGA有多难,但英特尔并不为此退缩。虽然没有透露太多相关计划的情况下,Waxman提出了一些方法让FPGA更容易被运用和理解。
Waxman说:“我们所拥有的是独一无二的,这是其他人不能给的。那就是我们能够了解这些工作负载和能够推动加速的能力。
“我们看到一条促进机器学习,加速存储加密,加速网络功能的捷径”,Waxman强调。这是基于我们对这些工作负载的深入了解,所以才让我们看到了这样的机会。
但现在FPGA还需要面对一些困难,因为现在人们是写RTL的。我们是一家写RTL的公司,所以我们可以解决这个问题。首先我们使它运作,然后我们可以降低进入的门槛。第三步是真正的规模经济学,而这全部是靠集成和制造的实力。
为了解决这些障碍,我们提供了一系列的方法。
对于那些英特尔打算用FPGA来代替Xeons的猜测,Waxman表示这是一派胡言。
Waxman表示,对于那些对高速率和重复性有强烈需求的算法,具有先天优势的FPGA就是其最好的选择。而那些对延迟有极高需求的数据操作和转换,FPGA也是候选人。
考虑到Altera已经在一个SoC上集成了ARM处理器和FPGA,这很自然地会想到英特尔会试图用X86内核全面替换ARM内核来做类似的设备。但它看起来不像这会发生。
首先,在2016年第二季度英特尔财务声明会上,Krzanich承诺,英特尔将加强对目前使用Altera的ARM-FPGA芯片客户的支持。
Waxman进一步澄清:“我们的观点是会以某种形式把FPGA集成到Xeon里。我们已经公开宣布将会打造第一代使用这种单一封装的设备,但是我们将根据进展情况调整方向,甚至可能会在同一个die上实现。我们将根据客户的反馈了解什么是正确的组合。
顺便说一下,我仍然期待看到没有集成的系统,保持他们会做系统级的协同。我们不会将Xeon与FPGA以多种方式组合集成,反之我们会在市场上找到正确的目标和平衡。”
虽然Altera的工具集利用OpenCL编程模型获得应用程序代码,并将其转换为RTL(FPGA的原生语言),但是有趣的是,英特尔并不认为FPGA在数据中心的未来成功是基于OpenCL与RTL工具集成的改进或更广泛地采用OpenCL。
Waxman也强调地说:“这并不是以OpenCL为基础的。”虽然我们确实把OpenCL看作是进一步扩大FPGA应用范围的一个途径,但目前FPGA的初始云端部署可能由更具能力的公司完成,但他们并没有要求我们提供OpenCL。Waxman补充说。
Waxman在不能“自由”地谈论的情况下,暗示英特尔有计划使FPGA更容易编程。他表示Intel将会为程序员提供RTL库,方便他们调用在FPGA上部署的例程,并推动在其上执行应用程序的gate的形成,来实现应用程序例程的gate,而不是让他们自己创建例程。这有一定的意义,与Convey(现在是美光科技的一个部门)几年前用FPGA加速系统处理的方案一样。
Waxman说:“我认为有一个连续的加速。在一开始,你可能不知道你正在试图加速什么,只是做了一些尝试,因此在这个阶段加速,你想要的是一个更通用的目的。当你开始真正地想要加速的时候,你会想要更高效的,更低的功耗和更少的空间,这时你就会把焦点移到FPGA上。”
Waxman还引用了Microsoft在其“Catapult”系统上使用FPGA加速的方案来说明。
该系统采用其Open Cloud Server并添加FPGA夹层卡作为加速器。我们在3月份研究了这个项目,将这些加速器应用在Google上执行相同的图像识别训练算法,得出的结果显示,25瓦的FPGA器件相对于使用Nvidia Tesla K20 GPU加速器(235瓦特)的服务器,提高了更好的性能/瓦特。
正如我们所说,我们对于微软和Google发布的性能数据毫无疑问。但是对分立的GPU或FPGA执行应用性能和对自身的热配置文件进行测量都是不公平的。你必须在服务器节点级别上看到这一点。
如果意识到这点,得到FPGA辅助的Microsoft服务器在系统级只稍稍领先于用Tesla K20s的Google服务器。(这些只是我们基于每秒每瓦特图像处理性能的估计)。在这个对比中,Microsoft应该不考虑成本。而且坦白说,不同于什么都配备的Tesla GPU,微软开放云端服务器并没有使用Juice或Cooling。真正的评测怎么都会使用GPU夹层卡,同时还需要考虑热量,性能和价格等因素。
但是Waxman讨论的重点仍然是那个。“在某个时候,你真的很想要那个能给你惊喜,并且能做到更低功耗的方案。而这就是我们的FPGA方案所擅长的方面。”
最后要考虑的是英特尔的云端业务。这些客户现在占据了他们数据中心集团收入的25%。
整体来看,他们的购买量每年增长约25%。预计从2016年开始,未来几年整体数据中心集团业务都将增长15%。让我们做一些计算。
如果英特尔的计划如期实施,他的数据中心集团2016年收益将会达到166亿美元。云端服务提供商(其中包括在The Next Platform上使用我们的语言的云端构建者和超大规模计算者)占大约41亿美元,其余归属于英特尔数据中心,销售数据大约为125亿美元。因此,英特尔数据中心的业务增长在12%左右(除云端外),是云端速率的一半。英特尔需要以任何方式来满足云端的增长和明显的FPGA需求,即使它只占用Xeon容量的一点点。对于英特尔来说是这个的选择比让GPU加速持续增长的方案要好。
编程方面可能是阻碍FPGA被广泛采用的一个主因(不像其他加速器,具有丰富的开发生态系统,如Nvidia GPU的CUDA)。这就驱动程序员去基于C语言去做扩展设计,或使用OpenCL,而不是用过去困扰FPGA开发的低级模型。但即使在应用的过程中有这么多里程碑,FPGA仍然不被主流青睐。我们将会探索解决编程问题的方法和机会。
虽然我们已经与这个相对较小的生态系统中的许多供应商(包括Altera和Xilinx,两个主要供应商)进行了交流,但按照FPGA长期研究员Russell Tessier所说,FPGA在更广阔的市场上大展拳脚的日子还在前面,新的发展意味着更广泛的采用。
他在马萨诸塞大学(他还在Altera工作,并且Mentor Graphics收购的虚拟机工程的创始人)研究了FPGA二十多年,他认为FPGA从科学项目到企业应用的形势正式缓变化。他认为其中的关键是来自于设计工具的改进,设计人员不断提高他们设计高水平。除此与外,工具vendor可以更好地引导芯片发展。他补充说,设备内的大量逻辑量意味着用户能够实现更多的功能,这使得FPGA对更多领域更广泛的吸引力。
Tessier说:“在过去几年里,FPGA的一个明显趋势就是这些设备更容易“程序化”。
Xilinx目前鼓励使用其Vivado产品的时候,用C语言进行设计。Altera还有一个已经开发的OpenCL环境。关键是两家公司都在试图创建一个环境,让用户可以使用更熟悉的编程(如C和OpenCL),而不必是使用RTL设计专家所擅长的Verilog或VHDL。虽然在过去几年里取得不错的成绩,但这仍然处于推进的阶段,不过这将有助于把更多的事情地移入主流。
其中一个对FPGA真正有利的因素就是如果将其和芯片搭配使用,建立一个快速的内部互联,它能解决memory和数据移动中的限制。这种优势就是吸引Intel收购Altera的主要诱因。另外,如果像英特尔和IBM这样的大公司能够积极推动FPGA的软件生态系统的建设,其应用市场将会迅速扩张。FPGA的主流化(至少现在没有GPU那么重要,)可能会更快地出现。
Tessier解释:“标准核心处理器集成的增加肯定是关键所在。过去的障碍是语言和工具,随着这些障碍越来越少,为芯片供应商新的合作机会打开了一扇门。由于这些和其他“主流化”趋势出现,不断做出的改变的FPGA的应用领域将继续增长。例如,金融服务商店是第一个使用FPGA进行财务趋势和股票选择分析的用户,但使用案例正在扩大。现在有更强的设备可以解决更大的问题。
除此之外,FPGA通过的其他新领域发现新用途,包括DNA测序,安全性,加密和一些关键的机器学习任务。
当然,我们希望FPGA变得强大,并“进入”世界上最大的云端和超大规模数据中心,Xilnix数据中心部门副总裁Hamant Dhulla对此表示强烈赞同。他在2016年初,他告诉The Next Platform, “异构计算已经不再是一种趋势,而是现实”,也就是在那个时候,微软推出了使用FPGA的Catapult案例(现在就很多或以后会很多),英特尔收购了Altera以及看到了更多FPGA将广泛应用在数据中心的声明。
从机器学习,高性能计算,数据分析等领域,FPGA在更多样化的应用领域中崭露头角。这些都与FPGA上嵌入了越来越多可用的on-chip存储器有关,这些都是FPGA制造商和潜在终端用户所期待的。 Dhulla表示,市场潜力足够大,让Xilinx能够调整其业务的方式。 过去几年,存储和网络主导了FPGA用户群。但未来五年内,计算端的需求将远远超过存储和网络,并都将沿着稳定的增长线继续发展。
在FPGA其他的热门领域(包括机器学习),它们的更像是一个带有GPU 的“协作”加速器。毫无疑问,对于许多机器学习工作负载的训练部分,GPU是主要的。因此为这里需要很多计算能力,就像HPC一样,其中power envelope tradeoff值得的。但是这些客户购买了数十或数百个GPU,而不是数十万个,庞大的加速器数目正使用在机器学习pipeline的推理部分,这就是市场所在。
正如我们指出的,Nvidia正在使用两个独立的GPU(用M4来训练,更低功耗的M4插入来削减服务器)来抵消这一点,但Dhulla认为FPGA仍然能够通过采用PCIe方法降低功耗,也可以嵌入超大规模数据中心。
他们的SDAccel编程环境通过提供对C,C ++和OpenCL的高级接口,使其更实用,但是推动超大规模和HPC采用的真正途径是通过最终用户示例。
当涉及到这些早期的用户,就像为下一代的FPGA的应用搭建了舞台,Dhulla指向像Edico Genome这样的公司。Xilinx目前还与其他领域的客户合作,包括石油和天然气和金融方面的历史计算方面。早期客户将Xilinx 的FPGA应用在机器学习,图像识别和分析以及安全性方面,这可以看作他们计算加速业务发展的第一步。
尽管双精度性能和总体价格不佳,FPGA的真正的大规模应用机会在于云端。因为FPGA可以提供GPU所不能提供的优势。如果FPGA供应商能够说服其最终用户,他们的加速器可以提供相当大的性能提升(在某些情况下他们会这样做)给关键的工作负载。提供一个通过带有其他加速器(例如CUDA)的complexity-wise的编程环境推进OpenCL开发,通过在云端中提供FPGA来解决价格问题。这可能是一个新的希望。
当然,这种希望来源于将FPGA部署到有超密集服务器云端架构内,而不是在单机的销售上。这种模式已经在FPGA的金融服务中发生。
正如他们GPU加速器“伙伴”围绕深度学习进行拉动,以便迅速得到更多的用户, FPGA设备在探索一个通过解决神经网络和深度学习的问题的方式找寻入侵市场的真正的机会。
新的应用程序主机意味着新的市场,随着云端应用的推广消除了一些管理开销,它可能意味着更广泛的采用。FPGA供应商努力推动它在一些关键的机器学习,神经网络和搜索方面的应用。FPGA在诸如自然语言处理,医学成像,深度数据检测等领域中的超大规模上下文中变得越来越普遍。
在过去一年里,FPGA的多种应用得到曝光,特别是在深度学习和神经网络,以及图像识别和自然语言处理等领域。例如,微软使用FPGA在1,632个节点上提供2倍的搜索服务,并采用创新的高吞吐量网络来支持Altera FPGA驱动的工作。中国的搜索引擎巨头百度(也是许多深度学习和神经网络任务GPU用户)正在用FPGA执行存储控制,其每天的数据吞吐量在100TB到1PB之间。
使用FPGA的大规模数据中心和其他领域的应用正在吸引人们对FPGA的单精度浮点性能的更多关注。
虽然一些案例使用(包括百度示例),将GPU作为计算加速器和FPGA用在存储端,但Altera,Xilnix,Nallatech和IBM的研究人员在OpenPower联盟展示了FPGA在云端深度学习的光明前景。
(原文发表于The Next Platform,半导体行业观察编译)