一、为什么选择使用FPGA?当前通用处理器(CPU)的摩尔定律已经进入末期,而机器学习和Web服务的规模却呈指数级增长。人们使用定制硬件来加速常见的计算任务,然而不断发展的行业需求也要求这些定制的硬件能够被重新编程来执行新类型的计算任务。FPGA是一种硬件可重构的体系结构,其英文全称为Field Programmable Gate Array,中文名为现场可编程门阵列。FPGA长期以来被用作专用芯片(ASIC)的小批量替代品,然而近年在微软、百度等公司的数据中心大规模部署,同事提供强大的计算能力和足够的灵活性。
不同体系结构性能和灵活性的比较
FPGA之所以比CPU和GPU更高效,本质上是无需共享内存的体系结构带来的优势。在冯·诺依曼结构中,由于执行单元(如CPU核)可能执行任意指令,就需要有指令存储器、译码器、各种指令的运算器、分支跳转处理逻辑。由于指令流的控制逻辑复杂,不可能有太多条独立的指令流,因此GPU使用SIMD(单指令流多数据流)来让多个执行单元以相同的步调处理不同的数据,CPU也支持SIMD指令。而FPGA每个逻辑单元的功能在重编程(烧写)时就已经确定,无需指令。
保存状态的需求和通信的需求相对于在FPGA中的寄存器和片上内存是非常透明的,无需不必要的仲裁和缓存。
FPGA展现了出色的计算性能,例如在浮点乘法运算方面,与8核的CPU基本相当。另一方面,FPGA在数据中心相比GPU的核心优势在于延迟。FPGA在处理搜索排序等任务时,能降低每一步的延迟,而使用GPU则需要延迟高达毫秒级。
接下来是通信密集型任务。FPGA相比CPU和GPU的优势更大。FPGA上的收发器可以直接接上40Gbps甚至100Gbps的网线,以线速处理任意大小的数据包;而CPU需要从网卡把数据包收上来才能处理,很多网卡是无法线速处理64字节的小数据包的。同时,FPGA具有更稳定的延迟。
二、微软部署FPGA的实践
微软针对哪里部署FPGA这一问题经历了三个阶段。第一个阶段是专用FPGA集群,第二个是将FPGA放在网卡和交换机之间共享服务器网络,现在是在每台服务器上安装一块FPGA,通过FPGA与CPU之间的通信和控制实现虚拟机的网络加速,提高虚拟机的网络性能。
微软在Bing搜索结果排序、深度学习等方面广泛应用FPGA加速,且FPGA组成的数据中心加速平面成为网络和服务器之间的天堑。对不同任务,FPGA与CPU协同工作,局部性和重复性强的归FPGA,复杂的归CPU。这使得FPGA在通信方面发挥着主要的作用,为服务器之间的通信、客户计算任务中的通信和计算等提供了加速。
三、FPGA在云计算中的角色
FPGA在处理低延迟的流式处理方面有其独特的优势,需要与CPU协同工作实现高效的通信方式。在这一过程中,低延迟的流式处理最大量的通信,FPGA在通信方面的势更为明显。
总的来说,FPGA已经为数据中心中不可或缺的一部分,并对个数据中心的运行起到了至关重要的作用,也改变了CPU在数据中心计算领域的色。随着FPGA成为云计算中的重要组成部分,CPU在不同领域的计算任务也将进行重新分配。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删