有这样一句话,“人生只有一次,FPGA却可以重写”。
FPGA,一个可以通过编程来改变内部结构的芯片。
据调查报告显示,2021 年全球FPGA市场规模为 77.9 亿美元,预计未来将以 8.5% 的复合年增长率增长,到 2030 年全球FPGA市场规模将达到 162 亿美元。
FPGA的全称是Field Programmable Gate Array——现场可编程门阵列,是指一种通过软件手段更改、配置器件内部连接结构和逻辑单元,完成既定设计功能的数字集成电路。顾名思义,其内部的硬件资源都是一些呈阵列排列的、功能可配置的基本逻辑单元,以及连接方式可配置的硬件连线。简单来说就是一个可以通过编程来改变内部结构的芯片。
众所周知,FPGA并不是一项新技术。早在1985 年,Xilinx就发明了第一款商用 FPGA,随着人工智能等领域的不断发展,其重要性日益凸显。
FPGA 1.0(上世纪80年代到90年代中期)
从上世纪80年代到90年代中期的FPGA 1.0阶段主要是胶合逻辑单元,这个时代已有多种不同结构的可编程逻辑(PLD)被工业界采用,包括PAL(Programmable Array Logic可编程逻辑阵列)、EPLD( Erasable Programmable Logic Device 可擦除可编辑逻辑器件)以及在此基础上发展起来的CPLD(Complex Programmable Logic Device复杂可编程逻辑器件)等。用户当时常常把它们用作连接在一起的逻辑单元,或者一些可编程的I/O器件,大致说来其市场总需求量在10-20亿美元之间。
FPGA 2.0(上世纪90年代中期到2017年左右)
从上世纪90年代中期到大约2017年为FPGA 2.0阶段,我们将其称为连接浪潮期。这个阶段中很多FPGA被用于为网络和存储实现接口,同时随着FPGA的密度和性能不断提升,它们被用于一些更复杂的功能,而不仅仅是胶合逻辑。这些应用将FPGA的市场需求总量扩展到大约50亿美元。
FPGA 3.0(2017以后)
从大约2017年开始,我们进入了FPGA 3.0的新纪元,其核心内容是数据加速。现在的FPGA已经成为计算引擎,在微软Azure和AWS等应用的数据中心得到了大批量的部署。目前FPGA市场规模持续攀升,随着中国5G部署及AI技术的发展,国内FPGA市场有望进一步扩大。
FPGA vs CPU vs GPU
FPGA 是属于PLD 范畴的集成电路 (IC),基本功能建立在自适应硬件之上,具有制造后可修改的独特功能。硬件块阵列(每块都可配置)可根据需要进行连接,允许为所有应用构建特定域的高效架构。这种硬件灵活应变性是 CPU 和 GPU 所不具备的。
虽然 CPU 灵活性很高,但其底层硬件是固定的。CPU 一旦出厂,硬件就无法修改。它依靠软件来告诉它要针对内存中的哪个数据执行哪项具体运算(算术函数)。硬件必须能够执行所有可能的运算,称之为使用软件指令,通常一次只能执行一条指令。
相比之下,FPGA 可并行处理海量数据。FPGA 同时拥有流水线并行和数据并行,与功能可高度并行化的 CPU 实现方案相比,性能提高 20 倍的情况并不少见。
GPU 和 CPU 类似,因为它们有固定的硬件,而且使用软件指令运行。一条指令可处理 1000 个以上的数据,GPU适用于图形加速、高性能计算、视频处理以及某些形式的机器学习等特定域。但从根本上讲,GPU 的基本架构和数据流在制造之前依旧是固定的。
而FPGA的硬件灵活应变性可帮助编程人员和设计人员更灵活地适应和更新计算架构,无指令、无需共享内存的体系架构使得FPGA比 CPU 甚至 GPU 能效更高。
FPGA 与 ASIC
ASIC 和FPGA 都是集成电路(IC),但又互有区别。ASIC,是指专用集成电路(Application Specific Integrated Circuit),广义的ASIC包括专用标准产品(ASSP),狭义的ASIC是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。总的来说,ASIC 是一种专用芯片,与传统的通用芯片有一定的差异,是为了某种特定的需求而专门定制的芯片。
FPGA包括成千上万个逻辑单元,通过可编程开关连接起来,通过单元的逻辑互联来满足不同的设计要求。除了逻辑块之外,FPGA 的其他可编程元件为I/O 块(作为内部单线路和芯片外部引脚的接口)以及互联接口(将其他元件的I/O 信号路由至适当的网络)。可重复编程的功能是它的最大优势。
如果说ASIC是一个雕塑,在成品完成后,就很难再对其做其他的改变。那么FPGA就像橡皮泥,成品出来后如果想改变主意,可以重新再捏,这就是为什么被称为可编程。
FPGA的理念是在短时间能以低成本让用户得到想要的逻辑。在早期,高性能是ASIC相较于FPGA的优势,当时FPGA在性能和功能上都较为逊色。但随着芯片的制造工艺的进步,目前情况发生了很大变化,现在FPGA的性能已经能够满足大多数应用的需要。
近年来,微软、百度等公司都在其数据中心大规模部署FPGA,以同时提供强大的计算能力和足够的灵活性。尽管ASIC 专用芯片在吞吐量、延迟和功耗三方面的表现都很不错,但数据中心的计算任务是灵活多变的,ASIC 研发成本高、周期长,而FPGA 只需要几百毫秒就可以更新逻辑功能。在数据中心里 FPGA 的主要优势是稳定又极低的延迟,适用于流式的计算密集型任务和通信密集型任务。此外,FPGA还具有方便易用、低成本以及产品上市时间短等优点。
FPGA与SmartNIC
SmartNIC是FPGA应用的一种特殊类型。SmartNIC可以对报文进行隧道终止等高级操作,并对报文进行复杂的流分类和过滤、计量和整形。这些功能通常由CPU来执行,但SmartNIC允许卸载这些功能,从而释放服务器资源,使其专注于主要任务。基于FPGA的SmartNIC不仅可以重新编程,而且在处理网络任务方面比传统的 CPU 和 GPU 更便宜、更高效。
基于 FPGA 的 SmartNIC 提供了强大的可扩展性,使通信服务提供商能够轻松处理大量用户设备,且不会显著增加延迟和功耗。FPGA本质上处理用于加速的逻辑计算,功耗低。基于FPGA的SmartNIC 不需要主机 CPU 来处理网络,从而提高了性能。
2021年1月,英特尔宣布推出两款全新高性能 SmartNIC 产品,Inventec FPGA SmartNIC C5020X基于全新英特尔 FPGA SmartNIC C5000X 平台架构,专为满足云服务提供商的需求而设计。Silicom FPGA SmartNIC N5010是一款硬件可编程 4x100G FPGA SmartNIC,集成了一块英特尔 Stratix 10 DX FPGA 和一个英特尔® 以太网 800 系列适配器。基于 FPGA 的 SmartNIC 增强了数据包缓冲和流量监控功能,并且将连接性扩展到多个 100G 以太网端口。Silicom FPGA SmartNIC N5010 为通信服务提供商提供了加速 25G 和 100G 网络所需的性能和硬件可编程性。
2021年2月,Xilinx宣布推出基于 FPGA 的 Alveo SmartNIC SN1000,SN1000 SmartNIC系列基于Xilinx 16nmUltraScale ™架构,采用低时延的Xilinx XCU26 FPGA和16核Arm处理器。SN1000是业界首个可组合式SmartNIC系列,面向各类功能卸载提供了软件定义硬件加速功能。SN1000 SmartNIC可以直接卸载CPU密集型任务,以优化联网性能,其开放架构能以线速为广泛的网络功能提速。
FPGA,从台前走向幕后
纵观整个FPGA市场,美国硅谷的四家公司Xilinx、Altera、Lattice、Microsemi占据大部分市场,形成垄断的格局。其中Xilinx与Altera这两家公司共占有近90%的市场份额,Xilinx始终保持着全球FPGA的霸主地位。
然而,随着Xilinx与Altera相继被收购,FPGA即将进入新的时代。
2015 年,英特尔以167亿美元收购了美国PLD制造商 Altera,隔年就成立了可编程事业部,慢慢将FPGA技术应用到旗下的产品线里。
从技术互补的角度来看,英特尔本身是在CPU和高速传输技术方面十分领先,同时它也有自己的晶圆厂,具备晶圆制造的能力,特别是先进3D封装和SoC技术方面。而FPGA的加入给了他们可编程技术。两者相加的主要目标市场,不外乎是高性能计算(HPC)、数据中心和5G高速传输等相关应用。
再者,由于人工智能应用的兴起,深度学习的技术也会越来越广泛的被使用,而FPGA可编程的特性刚好可以满足各种不同型态的运算和分析的需求,因此对于人工智能应用也会有所助力。
再看AMD和Xilinx,这两家公司的本质其实与英特尔和Altera差不多,最主要的不同就是这两家公司现在都没有自己的晶圆厂,因此在设计与制造上都依赖代工厂。
2022年2月,AMD宣布完成对Xilinx的收购,这意味着FPGA市场的老大和老二相继被大厂收入囊中,市场上可能再也没有独立的FPGA供应商了。
有业内人士猜测,此前在 2000 年代和 2010 年代大放异彩的 FPGA ,是否会就此从台前走向幕后,变成辅助的角色,成为主要半导体制造商处理器的组件之一。
最后的最后,希望第三名的FPGA制造商Lattice能够挺住,加油!
【活动专栏】
【转载须知】
若转载文章为原创文章,可在相应文章下或公众号后台留言;其他非转载类文章须在文首以不小于14号字体标明转载自SDNLAB。
【投稿】
欢迎SDN、NFV、边缘计算、SD-WAN、智能网卡、TSN、5G 网络切片等网络方向的观点类、新闻类、技术类稿件。
联系人:kk__wu(微信号)
投稿邮箱:pub@sdnlab.com
详情请参考:SDNLAB原创文章奖励计划