"2014年,微软在计算机架构领域的顶会ISCA上发表了一篇名为“A Reconfigurable Fabric for Accelerating Large-Scale Datacenter Services”的论文,详细介绍了微软Catapult项目团队如何在其数据中心里的1632台服务器中部署了英特尔Stratix V FPGA,并用FPGA对必应(Bing)搜索引擎的文件排名运算进行了硬件加速,得到了高达95%的吞吐量提升。这篇文章一经发表,立刻轰动了整个业界。它是第一篇真正意义上详述由互联网/软件巨头开发并部署FPGA的专业论文,标志着FPGA第一次在互联网/软件公司的大型数据中心里得到实质性应用。同时也将微软Catapult项目引入大众的视野,告诉人们FPGA已不再仅仅是硬件公司的专属产品,而是可以有效的应用于像微软这样的互联网公司,并有机会部署在谷歌、亚马逊、脸书、阿里、百度、腾讯等其他互联网巨头遍布全球的成千上万台服务器中。"
Catapult项目的产生背景
微软对FPGA在数据中心里应用的研究起源于2010年底,当时微软正希望从一个基于PC软件的公司,逐步转型为提供各类互联网服务的企业。Catapult项目的负责人Doug Burger认识到,像微软这种体量的互联网巨头不能只提供软件层面的互联网服务,还要从根本上掌控最高效的网络硬件设备。
随着大数据时代的到来,包括人工智能在内的各类新应用不断涌现,网络带宽也由1Gbps不断增长为10Gbps、40Gbps直至100Gbps甚至更高。此时,传统的基于CPU的服务器和网络设备已无法满足日益增长的对计算量和网络带宽的需求。因此,寻找合适的网络加速设备势在必行。
虽然在很多微软高管看来,微软自研网络硬件设备就好比“可口可乐宣布要做鱼翅”,但Doug Burger还是得到了当时担任必应(Bing)搜索引擎负责人陆奇的鼎力支持,并最终向时任微软CEO鲍尔默及其继任者纳德拉展示了FPGA在加速数据中心实际应用时的巨大潜力。2016年,微软在计算机体系架构顶会MICRO上发表了名为“A Cloud-Scale Acceleration Architecture”的论文,系统介绍了Catapult的新一代架构和工作。至此,Catapult项目已经历三个阶段。
单板多FPGA
在Catapult项目最初期,微软采用了单板多FPGA的方案,即每块加速卡上集成6片Xilinx Virtix-6 FPGA,各FPGA之间通过自身的通用I/O端口相连和通信。然而,这种大型加速卡在实际部署时遇到了很多问题,最主要的有以下三点:
1.灵活性极差。如果某种大型应用需要多于6片FPGA,则无法用该方案实现。
2.同构性极差。由于功耗、供电和尺寸限制,这种大型板卡很难直接部署在数据中心的高密度服务器上。
3.稳定性不足。在这种大型板卡中,任何元件发生故障都有可能造成整个板卡的失效,继而可能导致相关服务器和应用的错误。
单板单FPGA
这个阶段的工作是Catapult项目第一个代表性成果。与前一阶段相比,加速卡架构从单板多FPGA,变成了单板单FPGA的结构。第二代FPGA架构的主要特点是使用了Shell&Role结构。
Catapult项目第二阶段的最主要工作之一,是将Bing搜索引擎中原先超过3万行C++代码的文件排名运算,卸载到了FPGA上进行硬件加速,并得到了惊人的结果。
下图总结了这项工作最具代表性的结果,即使用FPGA后与纯软件方案的对比。其中,坐标横轴代表系统延时,纵轴代表吞吐量。由于纯软件方案已经经过了深度优化,因此这个比较结果具有极高的说服力。
这个结果可以从两个方面解读:
当系统延时相同的情况下,采用FPGA进行硬件加速后吞吐量提升了接近一倍;
对于相同的吞吐量要求,采用FPGA后系统延时会下降29%。由此可见采用FPGA后,系统整体性能得到了大幅度提升。此外,每个FPGA带来的额外功耗小于25W,相比原系统而言增加了不到10%,且总体成本的增加不超过30%。整个系统只有在部署初期发现了7块板卡发生了硬件故障,占总板卡数量的0.4%。在之后几个月的运行中,所有板卡都稳定运转,足以证明FPGA系统的稳定性。