FPGA已经成长为一项战略性技术。它曾被视为“穷人的ASIC”,且能够为小批量应用提供定制化IC。如今,当其仍然以这种方式广泛用在许多系统中的同时,在两个巨大且高成长的市场应用中已具有战略重要性:
·云端数据中心:网络连接﹑储存和安全性。
·通讯系统:基站和5G等。
事实上,由于FPGA对数据中心所具备的战略性意义,使得Intel最近收购了Altera,AMD最近也买下了Xilinx。这是因为在许多情况下,处理器的工作负荷正被移转到FPGA上。
大量利用FPGA的数据中心,能够提供处理器所无法实现的并行可编程能力(有客户称其为"硬件速度的可编程")。这些FPGA与具有特定功能的IC搭配,例如网络接口控制器 (NIC)和网络交换机芯片。每个数据中心有不同的工作负荷,藉由一个标准化的产品来满足所有需求是行不通的,因为每个数据中心都有不同的、使其需求最佳化的容量和建设成本。
通讯系统长期以来都利用FPGA来处理数以百计的法定频段和协议。如今在5G环境中,FPGA被用来管理复杂性和诸如O-RAN等持续变化中的标准。
尽管如前所述,FPGA的可编程很有价值,但其功耗和尺寸却不尽人意。结果,如今的数据中心和通信公司都欲将他们的FPGA整合到其SoC中,以减少尺寸和功耗。
FPGA行业整合已经开始
近十年来,例如Achronix、Flex Logix和Menta等公司,已经具备提供嵌入式FPGA(eFPGA)产品的能力。eFPGA现在可以在180nm到70nm的工艺节点上制造,产能从1K LUT到100K LUT,上限即将迈向1M LUT。也可以选用DSP和内存块-RAM。下列是一些有关采用eFPGA的历史,它们现在已经遍布整个行业。
第一个宣布成功使用eFPGA的客户是Sandia National Labs,在新墨西哥州的180 nm工艺上实现了这个目标。从此之后,他们利用eFPGA制造了许多ASIC芯片。
接下来,波音、美国空军研究实验室 (AFRL)、微软、BAE和许多其他政府机构与外包业者,也开始在美国制造的防卫系统中密集使用eFPGA。因此,对国防部和能源部而言,eFPGA现在已经是一个成熟的技术。
宸芯科技有限公司(大唐电信的一个子公司),宣称将把eFPGA用于FinFet ASIC,以供车对车(car-to-car)通信之用。
Dialog发布了eFPGA的ForgeFPGA产品系列,从1K LUT、批量成本低于50美分开始,且功耗仅有几毫瓦。
Flex Logix将eFPGA用在16nm AI推理芯片上,性能超过500 MHz,随着时间的推移和软件的增强,性能可以提升到667MHz和800MHz。
Socionext正在和一个重要系统厂商开发7nm SoC芯片,通过利用eFPGA和100K LUT的可编程逻辑电路,使得芯片在最坏的情况下,还能够有超过500 MHz的表现。这是一款5G应用与首款嵌入大量LUT的大容量通信芯片。
除了上述之外,有很多客户正在利用尚未公开的eFPGA。随着人们对技术认知的增加、以及领导厂商正利用eFPGA在其市场上取得显著的优势,客户采用eFPGA的步伐正在加速中,
集成FPGA能夠实现更多的软件控制
FPGA有一些显著的优势,但是编程设计不太容易,而且与处理器编程员相比,合格的FPGA程序员的人数并不多。
为什么FPGA不容易进行程序设计呢?
比起C++,Verilog更像是汇编语言的一种低级程序语言。
对传统的程序员而言,平行程序设计是很难以理解和学习的。
FPGA被编程设计成一个巨大的代码”块”。而处理器编程中包含有被程序员视为理所当然的子程序、主程序、链接器和加载程序、分页等等,但这些在FPGA编程中都无法使用。
单元FPGA编程可以在几秒内完成,并会永久驻留在硬件中,但对于整个FPGA来说,通常都必须进行重新编程。有一些部分单元程序速度很慢,在运行时,其他所有操作都会暂停。而在处理器代码中,当主程序运行时,分页程序却能不间断地在缓存中进行数据交换。
eFPGA则为人们提供了一个重新思考编程策略的机会,节约稀缺的Verilog编译器资源,并使C++编译器能够对FPGA进行软件控制。
以下是执行此方法的基本概念:
1.将代码封装/模块化成子程序。
将FPGA分割成更小的模块或容器(container),并为每个模块或容器提供对DRAM内存和处理器的直接访问。
eFPGA已经可以利用小方块式的模块化建构方法,如果需要,这些方块可以利用每排之间的RAM块(BRAM)相扣在一起。
这么一来很容易增加一个系统的相互连接/NOC/AXI总线,并让每个FPGA模块/容器能够访问內存/处理器。
于是写入FPGA的代码就能够像一个容器里面所包含的子程序一样地运作;可以给它提供输入数据或是指向系统內存数据的一些指针;在FPGA执行之后;可以将结果提供作为输出数据或是指向系统內存数据的指针。
利用稀少的Verilog编译器来写入那些需要密集运算的”子程序“,然后让C++编译器在处理器上写入代码,在需要的时候调用那些子程序。
2.允许容器/模块大小可变
把一个FPGA分割成更小的模块或容器,能够允许它们直接访问DRAM存储器和处理器。
有些算法比较简化,使用的LUT较少,而有些用的LUT较多。
举例来说,使用Flex Logix的Flex interconnect fabric,可以使容器具有任意大小的矩形尺寸,甚至可以扩大到整个阵列。
3.支持容器的微秒级分页
FPGA总是可以在几秒钟内从闪存中编程——速度确实非常慢,但编程通常很少这么做:在启动时或需要升级时才会这么做,比如对iPhone进行升级。
然而,eFPGA已经在领先的AI推理处理器中以百万分之一秒的速度重新编程。这的确是需要的,因为推理加速器处理一个神经网络层,需要进行数十亿次计算,然后在接下来的i<10微秒内重新配置并重新启动运算。
这种微秒级的重新配置可应用于上述阵列中的容器/模块。
在重新配置容器时,其余容器继续全速运行。
这使得eFPGA可以像处理器一样进行分页。
控制FPGA
我们已经看到了行业从简单的ALU发展到处理器、再到微处理器、再到并行处理器、然后再到SOC(包括内核和加速器)的转变。如今,我们有了可重新配置的SOC,可以更好地利用系统中的大量内核。
eFPGA将使数据中心和通信用户能够继续受益于FPGA的并行编程能力,同时降低功耗、缩小尺寸,并通过对FPGA进行软件控制,提高生产率和缩短上市时间。出于所有这些原因,eFPGA利用计算架构中的范式转变,既通过集成提高了每机架的计算密度,也允许更庞大的C++程序员队伍能够分享eFPGA的优势。基于这些原因,eFPGA集成将加速,在本年代末,集成到SOC中LUT数量将会超过FPGA。
—Geoff Tate是Flex Logix的首席执行官
(参考原文:eFPGA LUTs Will Outship FPGA LUTs Later This Decade )
本文为《电子工程专辑》2022年6月刊杂志文章,版权所有,禁止转载。点击申请免费杂志订