近年来,FPGA这一概念愈加频繁地引起我们的关注。比较新奇的在比特币挖矿中就已出现基于FPGA的矿机,而微软也曾高调宣布将在其数据中心里采用FPGA替代CPU等传统计算架构。
对于专业人士来说,FPGA并不陌生,它在多个领域中得到了广泛应用。然而,许多普通人对FPGA的理解仍显薄弱,FPGA到底是什么?它的优势何在?与CPU、GPU和ASIC相比,FPGA又有什么独特之处?这些疑问值得我们深入探讨。
1
为什么选择FPGA?
众所周知,CPU的摩尔定律已进入减速期,但机器学习和网络服务的需求却在迅速上升。为了加速常见计算任务,行业越来越依赖定制硬件。但快速变化的市场又要求这些定制硬件具备可重编程性,以便应对新型计算任务。
FPGA,即现场可编程门阵列,是一种硬件可重构的架构。长期以来,FPGA被视为ASIC的小批量替代品,而近年来,微软、百度等巨头在数据中心大规模应用FPGA,提供强大的计算能力与灵活性。
2
FPGA的高效性源于其独特的架构设计。CPU和GPU依赖冯·诺依曼结构,需处理复杂的指令集和共享内存。而FPGA的每个逻辑单元在重编程时已确定其功能,摆脱了指令集的束缚,使得FPGA在能效上显著优于CPU和GPU。
在计算密集型任务中,如矩阵运算和机器学习,FPGA表现出色。例如,Altera Stratix V的整数乘法性能与20核CPU相当,而浮点运算性能与8核CPU相持平。更令人期待的是,即将推出的Stratix10将具备更强的计算能力,甚至接近当前顶级GPU计算卡。
在数据中心环境中,FPGA的低延迟优势也非常突出。以Bing搜索的排序任务为例,FPGA仅需微秒级的延迟,而GPU则可能面临毫秒级的延迟,影响用户体验。
在通信密集型任务中,FPGA同样展现了其卓越的性能。这类任务的处理复杂性较低,但通信往往成为瓶颈。FPGA的收发器可直接连接40 Gbps甚至100 Gbps的网络,以线速处理任意大小的数据包。相较之下,CPU则需经过网卡处理,延迟和吞吐量受限。
虽然GPU也能高效处理数据包,但由于缺乏网口,其性能常常受制于CPU和网卡的处理能力。因此,FPGA在通信密集型任务中更具优势,能够提供稳定且低延迟的解决方案。
3
2016年,微软的Catapult项目吸引了广泛关注。该项目通过FPGA加速机器翻译,其计算能力相当于10万块顶级GPU。尽管该项目的实施并非一帆风顺,微软在部署过程中经历了多个阶段的调整。
最初,微软采用专用FPGA集群的方式,但由于FPGA之间无法通信,导致处理规模受限。随后,微软转向在每台服务器上部署FPGA,并通过专用网络连接实现FPGA之间的通信。这一转变使得Bing的搜索排序性能提升了两倍,显著优化了资源使用。
在Azure部门,随着网络和存储虚拟化的需求上升,FPGA被部署在网卡和交换机之间。此举不仅提高了虚拟机的网络性能,还将延迟降低了10倍,进一步提升了整体效率。
FPGA在数据中心和云计算中的应用潜力巨大。随着技术的不断演进,FPGA将可能在计算资源的分配中占据更重要的位置。通过与CPU的协同工作,FPGA将在未来的许多应用场景中实现超越,同时迎来更广阔的发展前景。