什么是FPGA呢?FPGA怎么使用呢?

可编程逻辑

1364人已加入

描述

近几年,FPGA这个名词越来越多地出现在我们身边。但对于大多数人来说,FPGA依然是神秘而陌生的。那么什么是FPGA呢?FPGA怎么使用呢?让我们结合其在云计算行业中的应用,简单介绍一下。

Q

什么是FPGA?

A

通俗来讲,它是一种芯片,和我们熟知的CPU、GPU、ASIC芯片一样,有其自己的应用场景。FPGA(Field Programmable Gate Array)中文名现场可编程逻辑门阵列,是可编程器件,与传统逻辑电路和门阵列(如PAL、GAL及CPLD器件)相比,FPGA具有不同的结构,允许无限次的编程。

FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。  

FPGA的优势

近几年人工智能、大数据各种web服务的规模在指数级的增长,而通用处理器(CPU)的摩尔定律的性能的提升遇到瓶颈。人们通过使用定制硬件来加速常见的计算任务,然而日新月异的行业又要求这些定制的硬件可被重新编程来执行新类型的计算任务。FPGA的可编程属性进入人们的视野。

通常,计算密集型任务,如:矩阵运算、图像处理、机器学习、压缩、非对称加密、搜索引擎的排序等。这类任务一般是CPU把任务卸载(offload)给FPGA去执行。对这类任务,目前我们正在用的Intel Stratix V FPGA的整数乘法运算性能与20核的CPU基本相当,浮点乘法运算性能与8核的CPU基本相当。

Intel Stratix 10 FPGA,配备更多的乘法器和硬件浮点运算部件,理论上可达到与现在的顶级CPU旗鼓相当的计算能力。 在云计算数据中心,FPGA相比与CPU和GPU的核心优势在于延迟更低。各芯片的延迟对比,如下图:

FPGA

对通信密集型任务,FPGA相比CPU、GPU 的优势就更大了。从吞吐量上讲,FPGA上的收发器可以直接接上40 Gbps甚至100 Gbps的网线,线束处理任意大小的数据包;而CPU需要从网卡把数据包收上来才能处理,很多网卡是不能线束处理64字节的小数据包的。尽管可以通过插多块网卡来达到高性能,但CPU和主板支持的PCIe插槽数量往往有限,而且网卡、交换机本身也价格不菲。

从延迟上讲,网卡把数据包收到CPU,CPU再发给网卡,即使使用DPDK这样高性能的数据包处理框架,延迟也有4-5微秒。更严重的问题是,通用CPU的延迟不够稳定。例如当负载较高时,转发延迟可能升到几十微秒甚至更高,操作系统中的时钟中断和任务调度也增加了延迟的不确定性。

FPGA在云计算的应用

云计算中心部署FPGA大致有三种场景:

1

专用集群场景

FPGA服务器作为专用服务器里面插满了FPGA加速卡,就像是一个FPGA组成的超级计算机。例如,某公司的实际应用一块PCIe卡上放了6块FPGA,每台1U服务器上又插了4 块PCIe卡。

2

网络集群场景

为了保证数据中心中服务器的同构性,在每台服务器上插一块FPGA,FPGA之间通过专用网络连接。

3

独立节点场景

FPGA脱离服务器,作为独立的角色存在于云计算集群中。把FPGA部署在网卡和交换机之间。如下图所示,每个FPGA有一个4 GB DDR3-1333 DRAM,通过两个PCIe Gen3 x8 接口连接到一个CPU socket(物理上是PCIe Gen3 x16接口,因为FPGA没有x16的硬核,逻辑上当成两个x8的用)。物理网卡(NIC)就是普通的40 Gbps网卡,仅用于宿主机与网络之间的通信。

FPGA


FPGA(SmartNIC)对每个虚拟机虚拟出一块网卡,虚拟机通过SR-IOV直接访问这块虚拟网卡。原本在虚拟交换机里面的数据平面功能被移到了FPGA里面,虚拟机收发网络数据包均不需要CPU参与,也不需要经过物理网卡(NIC)。这样不仅节约了CPU资源,还提高了虚拟机的网络性能,把同数据中心虚拟机之间的网络延迟降低了10倍。

FPGA复用主机网络的初心是加速网络和存储,更深远的影响则是把FPGA之间的网络连接扩展到了整个数据中心的规模,做成真正的cloud-scale 超级计算机。 




审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分