什么是FPGA
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA和CPLD的主要区别
早在1980年代中期,FPGA已经在PLD设备中扎根。CPLD和FPGA包括了一些相对大数量的可编辑逻辑单元。CPLD逻辑门的密度在几千到几万个逻辑单元之间,而FPGA通常是在几万到几百万。
CPLD和FPGA的主要区别是他们的系统结构。CPLD是一个有点限制性的结构。这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器组成。这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。而FPGA却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。
CPLD和FPGA另外一个区别是大多数的FPGA含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。因此一个有关的重要区别是很多新的FPGA支持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重新配置而改变。一些FPGA可以让设备的一部分重新编辑而其他部分继续正常运行。
CPLD和FPGA还有一个区别:CPLD下电之后,原有烧入的逻辑结构不会消失;而FPGA下电之后,再次上电时,需要重新加载FLASH里面的逻辑代码,需要一定的加载时间。
FPGA工作原理
FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。
与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。
FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
FPGA在下一代网络架构中的重要意义
这里将着重讨论FPGA在诸如NFV等虚拟网络架构中的作用和意义。
电信网络是NFV的一个主要应用场景,它出现的最直接的动因之一就是为了支持指数级的带宽增长。据预测,五年后全球的IP流量将较今日增长超过3倍。在万物互联的今天,尤其是5G、物联网、自动驾驶等技术已经成为各大公司争夺的焦点之时,各种设备和服务都需要电信网络及其数据中心进行处理和支持。然而,传统的电信基础架构和数据中心很难进行有效的扩展,其主要原因有以下两点:
硬件层面:传统电信网络基础架构使用的是各类专用硬件设备,如各类接入设备、各层交换机、路由器、防火墙、QoS等。这样做的问题有很多,例如,不同设备之间的兼容性差、维护升级困难、容易造成供应商垄断从而大幅提高成本、若需要加入新功能则要开发新硬件设备等等。
软件层面:不同设备都需要各自对应的软件进行配置和控制,从而难以在管理员层面进行大范围统一部署和配置,且需要学习来自不同供应商和规格的设备的软件配置方法。若某些网络功能通过软件实现,传统的实现方法中对服务器的有效利用率很低,且无法进行服务的动态迁移,等等。
因此,虚拟化技术 - 更具体而言,网络功能虚拟化NFV技术,逐渐成为各大运营商解决上述问题的有效途径。欧洲电信标准协会(ETSI)关于NFV比较有名的示意图如下所示。
总体而言,和传统方法相比,NFV利用通用的服务器(大多是基于英特尔x86处理器)、通用的存储设备、以及通用的高速以太网交换机,实现传统电信网络基础架构的各种网络功能。具体而言,就是将网络功能在通用服务器中用软件实现,数据使用通用的存储设备存储,网络流量通过通用的网卡和高速交换机进行转发。这样理论上能很好的解决上述硬件层面的问题:使用通用设备而非专用设备,提高了数据中心的可扩展能力,不会被某个供应商制约,反而会通过开放竞争减少硬件采购和部署的成本。
另外,借助虚拟化技术,将网络功能在不同虚拟机中实现,这样理论上能解决软件层面的问题:即某个特定应用不会占用服务器的全部资源,反之,一个服务器可以同时运行多个虚拟机或网络服务。同时,虚拟机在数据中心的扩展和迁移也更加方便,不会造成服务下线或中断。
NFV和另外一项技术:软件定义网络(Software Defined Network - SDN)经常一起出现。它们的一个主要的核心思想就是将网络的控制面和转发面进行分离。这样,所有的数据转发面设备都可以同时被控制、配置、管理,从而避免了管理员需要分别配置每个网络设备的低效情形。
引用一下《中国电信CTNet2025网络架构白皮书》的话:
“从更好的适应互联网应用的角度出发,未来网络架构必须要求网络能力接口的开放和标准化,通过软件定义网络技术,能够实现面向业务提供网络资源和能力的调度和定制化,同时为进一步加速网络能力的平台化,还需要提供网络可编程的能力,真正实现网络业务的深度开放。”
请注意,在之前的表述中我使用了很多“理论上”怎样怎样,这是由于上面关于NFV的优点很多都是人们美好的想象和愿景。在实际的工程实践中,设计实现有效的NFV架构面临着很多问题。例如,不同的应用场景中,网络负载的种类五花八门,而很多应用都需要进行线速的处理,如QoS和流量整形(之前的博文介绍过)、VPN、防火墙、网络地址转换、加密解密、实时监控、深度包检测(DPI)等等。即使有DPDK等专用的软件开发库,目前单纯使用软件实现这些网络服务的线速处理,在技术上存在很大困难,且用软件实现的网络功能在性能上很难和专有硬件相比。这样一来,人们会反过来质疑使用NFV的出发点和动机。同时,鉴于NFV仍处于方案探讨和摸索阶段,很多相关的协议和标准还没有确定,这也在一定程度上使很多企业犹豫是否要投入大量资源去进行前期的探究工作。
因此,如何有效的实现这些虚拟化的网络功能(Virtualized Network Function - VNF),是我们前阶段的主要工作和这篇白皮书主要探讨的问题。
虚拟网络功能(VNF)的有效实现
在这里,实现虚拟网络功能的“有效性”主要体现在以下几个方面:
1.VNF必须非常灵活、便于使用;
2.容易大规模扩展,不局限于某种应用场景或网络;
3.性能方面应该不低于,甚至高于专用硬件。
介于此,白皮书中给出了几个有潜力的发展方向以供参考:
1.控制面和转发面的分离和独立扩展。
2.设计并优化、标准化拥有可编程能力的转发面。
在电信网络的应用场景中,NFV的一个典型应用就是虚拟化的宽带远程接入服务vBRAS,即virtual broadband remote access server,又被称为vBNG,即virtual broadband network gateway。在vBRAS中可能包含很多虚拟网络功能,例如远程用户拨入验证服务(Remote Authentication Dial-In User Service, RADIUS)、动态主机设置协议(Dynamic Host Configuration Protocol,DHCP),以及之前提过的DPI、防火墙、QoS等。
一个重要的发现是,这些网络应用从计算资源的需求上可以分成两类。一类不需要大量的计算资源,如RADIUS和DHCP。同时这类应用很多属于控制平面。因此这类应用很适合直接放在控制平面,并且有很好的纵向和横向的扩展性,也很适合用通用的计算和存储设备进行实现。
另一类应用往往需要很大的计算能力,如流量管理、路由转发、数据包处理等,且通常需要在线速下(如40Gbps、100Gbps或更高)进行处理。这类应用往往属于数据平面。对于数据平面而言,它还需要支持很多种计算量很大的网络功能,这样才能区别于使用专有硬件,符合NFV技术的初衷。综上而言,数据平面应该具备以下两点主要能力“
1.能线速进行高吞吐量的复杂数据包处理;
2.同时支持多种网络功能,具有很强的可编程能力。
然而,如果直接使用软件方法实现,这两点功能很难同时满足。因此我们采用了FPGA作为智能硬件加速平台,很好的同时解决了处理速度和可编程性两个问题。首先,FPGA相比纯软件方法,在数据包处理上拥有着绝对优势的硬件并行性能,因此被用作硬件加速器使用。其次,相比于传统的专有硬件设备,FPGA拥有灵活的可编程能力,可以支持各种应用的实现。
虚拟宽带远程接入服务:从BRAS到vBRAS的演进
图1:vBRAS的演化
上图为我们展示了传统BRAS逐步演进到vBRAS的三个主要过程:
1.第一阶段,传统的BRAS使用专用设备,且控制面和转发面紧耦合。图中可以看到控制路径和数据路径是相互重合的。
2.第二阶段,采用了虚拟化技术,且采用了服务器取代了专用BRAS设备,使用软件和虚拟机实现多个vBRAS。但同时也可以看到,此时控制面和转发面还是相互耦合实现。由于两者性能差别很大,这种实现方式很容易造成数据通路的性能瓶颈,或因数据通路流量过大而占用了控制面的带宽。反之,控制面的流量会影响数据面的线速包处理的能力。
3.第三阶段,采用虚拟化技术,且控制面和转发面相互分离。从图中可以看到,控制面和转发面由两个服务器分开实现,控制流量和转发流量相互不影响。此外,控制流量能在数据/转发服务器和控制服务器之间双向流动,实现控制面对转发面的控制。
这第三个阶段就是目前英特尔、HPE和中国电信北研院联合研发的最新成果。接下来就详细讲解其技术细节。
高性能vBRAS的设计方法
设计实现上述第三阶段中高性能的vBRAS方案,需要分别实现vBRAS-c (control) 和vBRAS-d (data),即vBRAS控制设备和vBRAS数据设备。这两类设备都应该使用标准化的通用服务器实现。此外,对于vBRAS数据设备而言,需要针对计算量庞大的应用进行专门的优化和加速,使其能进行高吞吐量、低延时的数据包处理。
下图展示了本应用实例中,vBRAS-c和vBRAS-d的设计方法。
图2:vBRAS的转控分离架构
对于vBRAS-c节点,其重要的设计思想就是轻量化和虚拟化,使其方便在数据中心或云端进行扩展和移植,同时可以分布式实现,以控制多个数据平面节点。因此在本例中,vBRAS-c由一个独立的HPE DL380服务器实现。DL380服务器中包含两个CPU插槽(socket),每个插槽中均有一块14核的Xeon处理器。服务器的总内存为128GB。网络接口方面,vBRAS-c可以使用标准的网卡进行网络通信,比如一块或多块英特尔X710 10GbE网卡即可满足控制平面的流量要求。具体的vBRAS控制应用则在虚拟机中实现,多个虚拟机由SDN控制器统一控制。
对于vBRAS-d节点,总体也通过独立的DL380实现。针对上文提到的优化加速的部分,本实例中使用了基于Arria10 FPGA的智能网卡加速网络功能,如线速处理QoS和多级流量整形。在一个DL380中,可以插入多块FPGA智能网卡,实现并行数据处理,成倍提高数据吞吐量。同时,vBRAS-d节点通过OpenFlow与SDN控制器交互,且一台vBRAS-c设备可以控制多个vBRAS-d设备。
基于Arria10 FPGA的智能网卡解析
使用FPGA智能网卡进行网络加速的好处有以下几点:
1.解放了宝贵的CPU内核,将原本在CPU中实现的数据处理卸载到FPGA上进行加速实现。这样CPU可以用来做其他的工作,在虚拟化的基础上进一步实现了资源的有效利用。
2.FPGA拥有低功耗、灵活可编程的特点。在白皮书中提到,在选用的Arria10 GT1150 器件上实现了硬件QoS和多级流量整形后,只占用了FPGA的40%的逻辑资源。换言之,还有60%的资源可以被用来进行其他的网络功能处理和加速。同时,可以随时对FPGA进行编程,因此多种网络功能的加速都可以用一套硬件设备完成,不需要更换加速卡或其他硬件设备。即使是用户自己定义的功能,也可以实现,不需要专有设备完成。这样很好的平衡了高性能和高通用性两者间的矛盾。
3.FPGA能进行高速并行的数据包处理,且本身就广泛应用于网络通信领域,解决方案丰富且成熟。
下图概括介绍了本实例中在FPGA中实现的数据包转发的数据通路设计。
图3:FPGA数据包处理的数据通路
由图中可见,本设计包含多个模块,如Parser、Look-Up、Buffer Manager、Packet Processor,以及内存控制器和DMA等。数据包进入FPGA后,依次通过各个模块进行特征提取、分类、查找,如果需要就通过PCIe和DMA与CPU进行交互。同时,Buffer Manager会对不同来源的数据包进行流量控制、QoS和流量整形等操作。
此外,这款FPGA智能网卡支持多种包处理模式,即可以将数据包完全在FPGA内部处理后转发,不经过CPU;也可以将数据包通过PCIe传送到CPU,使用DPDK进行包处理,再通过FPGA转发;或者二者结合,一部分功能在CPU中实现,另外一部分卸载到FPGA上完成。可见灵活度很高。
性能测试
图4:数据平面的服务器和FPGA架构
图中可见,一个DL380服务器上插了3块相互独立的FPGA智能网卡,每块网卡支持40Gbps数据吞吐量,因此一个vBRAS-d服务器支持的总吞吐量为120Gbps。每块网卡通过PCIex16接口与CPU相连,在CPU中运行DPDK L2/L3 FWD应用,将数据转发回FPGA,然后在FPGA中进行QoS和数据整形。在测试中,流量的产生和接收都通过Spirent测试仪实现。
对于QoS,每个智能网卡可以支持4000用户,故单服务器支持12000个用户。每个用户支持2个优先级,且分配给每个用户的带宽可以编程控制。例如,每个用户分配8.5Mbps带宽,则开启流量整形后单服务器总流量应为12000x8.5=102Gbps,如下图所示。
数据平面的性能测试结果
我们看到,当数据包为定长512字节时,关闭流量整形功能后,高优先级流量和低优先级流量都没有损失,各为60Gbps(对应每个用户的实际流量为5Mbps高优先级+5Mbps低优先级),因此总流量为120Gbps。开启流量整形功能后,高优先级流量没有损失,仍为60Gbps。对于低优先级,由于每个用户分配8.5Mbps带宽且高优先级已经占用了其中的5Mbps,因此只剩余3.5Mbps带宽供低优先级流量通过。可见低优先级流量遭到限流,总流量变成3.5Mx12000=42Gbps,使得总流量变成102Gbps。这在总体上证明了单个vBRAS-d节点可以支持超过100Gbps的流量处理。
此外还进行了一些功耗测试能性能对比,我在此挑选了一张结果图如下所示。
图5:不同带宽时总能耗性能比的对比
这张图表示了实现不同带宽时,总功耗性能比的一系列比较。功耗性能比的定义为,实现1Tbps时所需要的总功耗(千瓦)。图中将不含FPGA智能网卡的vBRAS实现50Gbps时的功耗性能比作为基准值(100%)。由图中可以看到,vBRAS+FPGA智能网卡的方案总能降低超过40%的总功耗,最多可达到60%。这进一步印证了上文中阐述过的使用FPGA进行网络功能加速的好处所在。
其他性能测试和对比不再赘述,详细内容在白皮书中可以看到。总体而言,相比于传统的vBRAS服务器+标准网卡的方案,使用vBRAS+FPGA智能网卡的解决方案可以减少约50%的功耗,以及带来超过3倍的性能提升。
SWOT四个维度解析当前国内发展FPGA前景
(1)首先说优势。相比较xilinx和altera,国产FPGA厂商目前基本没有绝对优势,只有比较优势,比如起点高,再也不用从微米级技术开始做起,一开始就从几十纳米进入,工艺差距可以缩小到2-3代的水平。另外,中国是FPGA芯片的应用大国,国产FPGA有本土化的各种优势,比如对中小客户需求的理解等比国外巨头要更接地气等。
(2)劣势的话很明显,从专利、技术产品到人才及市场品牌等,国产FPGA厂商都和国外巨头存在很大的差距。
(3)再说机会,当前中国厂商面临的机会比较多,因为从国家层面来看已经把FPGA列为国家战略芯片,政府在这个领域的投入可能会逐步增加,虽然政府直接主导这个产业发展未必是好的方式,但是给予民营企业各方面的支持却是非常重要的。另外,随着中国经济的发展,中国的企业能吸引到更多更优秀的国际化人才加入,尤其是一些高端的FPGA领军人才,对一个企业的发展至关重要。最后,随着人工智能和大数据等新兴行业的发展,FPGA市场容量可能会出现大规模的增长。
(4)最后说威胁。说道威胁,专利是一个。当中国企业还很弱小,远远对国际巨头构不成竞争的时候,这个风险还不大,如果已经形成竞争关系的时候,可能巨头们就会拿起专利武器来捍卫自己的利益,如同中兴、华为在发展过程中遇到的问题一样,这就要求中国的FPGA厂商要苦练内功,在专利和技术方面踏踏实实做好积累,以应对将来可能出现的专利战以及国际化,否则即使能做出产品,可能也走不远。
总体来看,虽然目前中国在FPGA这个领域比国外的主流厂商还存在很大差距,但是考虑到中国经济的发展和综合国力的增强以及政府对芯片产业的高度重视,还有这个市场可能出现的大幅增长,中国的国产FPGA和国外主流厂商的差距会逐步缩小,虽然这个过程会比较长,但趋势是无疑的。
近些年中国陆陆续续诞生了一些FPGA厂商,如京微雅阁、安路、同创、高云半导体等公司,都先后推出自己的FPGA芯片,有的已经在商用,有的在大公司进行样品认定和试验项目,这是一个很好的信号。在今年的“IC-CHINA 2017”大会中,高云发布了3款新品,不仅发布了集成ARM3的SOC FPGA,还有基于55nm SRAM工艺的“晨熙”系列和基于55nm嵌入式Flash+SRAM的“小蜜蜂”4个系列11款产品,基本覆盖了lattice 70%~80%左右的产品,特别是小蜜蜂系列,对应lattice 的XO2/XO3,对其形成强有力的替代竞争优势。另外,高云28nm的产品已经在研发中,预计2019年左右推出。目前高云FPGA芯片累计出货量即将达到200万片,对于一个成立才3年左右的公司,这个发展是相当迅速的,如果芯片的良率在应用中得到逐步提高,芯片可靠性得到了用户的认可,这将会对国外厂商产生很大的冲击。与此同时,安路也发布了它最新55nm的第二代“小精灵”ELF2系列高性能低功耗和内嵌MCU的SOC FPGA,向国外厂家的中低端产品发起了挑战。
回头看中国每个发展得不错的行业,基本都遵循一个逻辑,先是从低端开始突破,对国外同类产品进行替代,在行业站稳了脚跟之后,开始持续改进,不断提升自己的技术、产品、服务以及专利积累等,到了一定阶段之后可以在细分领域里面创造一些需求,以不断向高端进军,最终在行业里面的高端占有一席之地。中国通讯制造业、高铁制造等都是遵循这个逻辑发展的。 “低端突破-》持续改进-》创造需求-》高端引领” 是中国各个行业发展的必由之路。对于FPGA行业来说,也完全可以按照这个思路发展。
FPGA市场前景诱人,但是门槛之高在芯片行业里无出其右。全球有60多家公司先后斥资数十亿美元,前赴后继地尝试登顶FPGA高地,其中不乏英特尔、IBM、德州仪器、摩托罗拉、飞利浦、东芝、三星这样的行业巨鳄,但是最终登顶成功的只有位于美国硅谷的四家公司:Xilinx(赛灵思)、Altera(阿尔特拉)、Lattice(莱迪思)、Microsemi(美高森美),其中,Xilinx与Altera这两家公司共占有近90%的市场份额,专利达到6000余项之多,如此之多的技术专利构成的技术壁垒当然高不可攀。而Xilinx始终保持着全球FPGA的霸主地位。当今,半导体市场格局已成三足鼎立之势,FPGA,ASIC和ASSP三分天下。市场统计数据表明,FPGA已经逐步侵蚀ASIC和ASSP的传统市场,并处于快速增长阶段。
评论
查看更多