购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 芯片架构的演变

FPGA,英文全称是Field Programmable Gate Array,中文意思是现场可编程门阵列,是在PAL(Programmable Array Logic,可编程阵列逻辑)、GAL(Generic Array Logic,通用阵列逻辑)、CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)等可编程器件的基础上进一步发展的产物。作为ASIC(Application Specific Integrated Circuit,专用集成电路)领域中的一种半定制电路,FPGA既弥补了全定制电路的不足,又克服了原有可编程器件门电路数目有限的缺点。

FPGA的两个主要特征就体现在其名称中,即“现场”和“可编程”。“现场”意味着工程师只需要一台计算机,安装了FPGA厂商提供的开发软件,外加焊接了FPGA芯片的板卡,即可完成从模型搭建到生成烧写文件的全过程;“可编程”意味着工程师可以根据设计需求,通过编程方式把FPGA内部逻辑块连接起来,这就好比把一个电路试验板放在了一颗芯片里。一个出厂后的成品FPGA内部的逻辑块和连接可以按照工程师的需要而改变,所以FPGA可以完成特定的逻辑功能。更重要的是这种编程是可以反复操作的,即编程、除错、再编程。正因为如此,FPGA也被称为“液体硬件”。

一般情况下,FPGA比ASIC的速度要慢,实现同样的功能FPGA需要的面积更大,功耗也更高。但相比于ASIC,FPGA的优势也很明显:①快速成品——这有助于缩短产品上市时间;②反复编程——这使得工程师可以根据设计需求修改电路功能,同时也有助于除错;③较低的调试成本——厂商开发工具如Vivado,下载器如Xilinx Platform Cable Usb,外加FPGA板卡即可进行调试。

FPGA芯片起源于Xilinx(赛灵思)公司。1985年,首款FPGA即赛灵思XC2064,采用双列直插式封装,也称为DIP封装(Dual In-line Package),如图1—1所示,只包含64个可配置逻辑模块,每个模块含有两个3输入查找表(LUT:Look-Up Table,后文介绍时“查找表”和“LUT”会交替使用)和一个触发器(FF:Flip-Flop,后文介绍时“触发器”和“FF”会交替使用)。按照现在的方式计算,该器件有64个逻辑单元——不足1000个逻辑门。这也构成了早期FPGA的基本架构:可配置逻辑模块(CLB:Configurable Logic Block)、开关矩阵(Switch Matrix,也称为Switch Box)、互连线(Interconnect Wires)和输入/输出引脚,如图1—2所示。较为简单的结构决定了其主要扮演胶合逻辑的角色。

图1—1

图1—2

在摩尔定律的推动下,Xilinx在2001年推出了基于150nm工艺制程的Virtex-II FPGA,最大亮点是嵌入了硬核的18×18的有符号数乘法器和18Kb的Block RAM(简写为BRAM),如图1—3所示(图中未包含布线资源和输入/输出引脚)。其中XC2V8000中包含168个乘法器和168个Block RAM,这大大提升了FPGA的计算能力。

图1—3

时隔一年,也就是2002年,Xilinx推出了基于130nm工艺制程的Virtex-II Pro FPGA,在Virtex-II的基础上嵌入了硬核PowerPC 405处理器(简写为PPC405),这是当时IBM公司的RISC CPU(Reduced Instruction Set Computer,精简指令集中央处理器),主频最高可达400MHz。同时,在接口方面,Virtex-II Pro集成了硬核高速收发器,传输速率最高可达6.25Gb/s,如图1—4所示。其中XC2VP70所包含的高速收发器个数达到了20个。

图1—4

2004年,Xilinx推出了基于90nm工艺制程的Virtex-4 FPGA。采用了基于列的ASMBL(Advanced Silicon Modular Block)架构,如图1—5所示,极大地提升了FPGA的可编程能力,使得其成为ASIC的强有力的替代者。FPGA也由胶合逻辑的角色变为平台级产品。通过不同列(CLB列、DSP列、BRAM列、GT列等)的组合,Virtex-4 FPGA形成了三个平台级家族:LX、FX和SX,给用户提供了多种选择以应对不同的应用场景。其中,LX面向高性能逻辑应用,CLB列会更多一些,XC4VLX200中的逻辑单元(Logic Cell,1个Logic Cell等于1个4输入LUT+1个触发器+1个进位链)达到了200448个;SX面向高性能数字信号处理,DSP列会更多一些,XC4VSX55中的乘加器多达512个;FX面向嵌入式应用,增加了GT列,内部嵌入了硬核PowerPC处理器PPC405,主频可达450MHz。和Virtex-II Pro相比,Virtex-4 FPGA扩展了乘法器的功能,将乘法器变为包含48位累加器的乘加器,这可以看作第一代DSP48。DSP48在数字信号处理应用中扮演着重要的角色,例如,在高性能FIR(Finite Impulse Response)滤波器和FFT(Fast Fourier Transform)中,DSP48是重要的计算单元。此外,从功耗角度看,Virtex-4的核电压也由Virtex-II和Virtex-II Pro的1.5V降低至1.2V,这对于降低动态功耗是有益的,因为动态功耗与核电压的平方成正比。

图1—5

2006年,Xilinx推出了基于65nm工艺制程的Virtex-5 FPGA。依托于第二代ASMBL架构,Virtex-5形成了五个平台级家族系列以满足不同领域的需求,如表1—1所示。实践证明,Virtex-5是非常成功的一代产品。

表1—1

与Virtex-4相比,Virtex-5 SLICE的容量扩大,由2个LUT和2个触发器变为4个LUT和4个触发器。更重要的是Virtex-5中的LUT是6输入LUT,相比于Virtex-4中的4输入LUT更有优势。例如,实现一个8选1的多路复用器(MUX:Multiplexer),如果使用Virtex-4 FPGA,就需要消耗4个4输入LUT和3个2选1 MUX(SLICE里固有的);如果使用Virtex-5 FPGA,则只需消耗2个6输入LUT和1个2选1 MUX(SLICE里固有的),如图1—6所示。显然,后者逻辑延迟会更小。分别选用Virtex-4和Virtex-5最快的FPGA(对应速度等级分别为-12和-3),在ISE 8.1版本下,实现一个6输入布尔表达式,Virtex-4 FPGA逻辑延迟为1.1ns,而Virtex-5 FPGA为0.9ns。从分布式RAM角度看,实现一个64×1(深度为64,宽度为1)的RAM,Virtex-4与Virtex-5的实现方式如图1—7所示,显然Virtex-5的实现方式具有更小的延迟。

图1—6

图1—7

Virtex-5中的Block RAM也有所改进。Virtex-4的每个Block RAM大小为18Kb,而Virtex-5的每个Block RAM大小为36Kb,由两个独立的18Kb Block RAM构成。这对于搭建更大的存储空间非常有利。同时,对于每个独立的18Kb Block RAM,如果只使用了其中的9Kb或不到9Kb,剩余的9Kb会被自动关闭,从而可有效降低功耗。

相比于Virtex-4,Virtex-5中的乘加器DSP48E功能更强大。不仅乘法器的位宽由18×18提升为25×18,而且每个DSP48E的C端口是独立的(Virtex-4中同列相邻的两个DSP48共享C端口),这增强了DSP48E的灵活性,也简化了数字信号处理算法的实现。此外,不得不提的是DSP48E中的累加器还可用来实现按位逻辑运算,如逻辑与、逻辑或、逻辑异或、逻辑非等。确切地说,DSP48E中乘法器后面跟随的是算术逻辑运算单元ALU (Arithmetic Logic Unit):既可以实现加法运算,又可以实现逻辑运算。

在时钟方面,Virtex-5在保留Virtex-4数字时钟管理单元(Digital Clock Manager,DCM)的基础上,引入了模拟锁相环PLL(Phased Lock Loop),这对于改善时钟抖动非常有利。

此外,Virtex-5 FXT系列嵌入了PowerPC 440(简写为PPC440)处理器,主频最高可达550MHz,性能比Virtex-4中的PPC405有了进一步的提升。

2009年,Xilinx推出了基于40nm工艺制程的Virtex-6 FPGA和45nm工艺制程的Spartan-6 FPGA。Virtex-6采用了第三代ASMBL架构,通过不同资源列的配比,形成了三个系列:面向高性能逻辑应用和数据传输的LXT系列,面向高速数字信号处理和数据传输的SXT系列和面向高带宽应用的HXT系列。与Virtex-5相比,所有的Virtex-6 FPGA都带有高速收发器,同时Virtex-6不再提供嵌入PowerPC处理器的FPGA。Spartan-6属于Xilinx的低端产品,与Virtex-6相比性能略逊一筹。例如,Spartan-6中的乘加器DSP48A1乘法器位宽为18×18,且其后的累加器不支持逻辑运算,而Virtex-6中的乘加器DSP48E1乘法器位宽为25×18,其后为ALU。Spartan-6中的Block RAM大小为18Kb,可当作两个独立的9Kb Block RAM使用。Virtex-6中的Block RAM大小为36Kb,由两个独立的18Kb Block RAM构成。Spartan-6中的时钟模块由DCM和PLL构成,而Virtex-6中的时钟模块则为MMCM(Mixed-Mode Clock Managers)。但是,Spartan-6也有自己的特色,例如,封装小,CPG196封装只有8mm×8mm,而Virtex-6最小封装也要达到23mm×23mm。此外,Spartan-6还集成了硬核存储器控制器模块MCB(Memory Controller Blocks)。从输入/输出引脚角度看,Spartan-6引脚个数依据不同芯片和封装在102~576之间变化,输出电平最大为3.3V;Virtex-6引脚个数则在240~1200之间变化,输出电平最大为2.5V。

2011年,Xilinx推出了基于28nm高性能低功耗(High Performance Low Power,HPL)工艺制程的7系列FPGA,分为高端、中端和低端三个产品,对应Virtex-7、Kintex-7和Artix-7。其中,Virtex-7面向对系统性能要求比较苛刻的场合;Kintex-7可提供业界最佳的价格/性能比;Artix-7面向低功耗且需要高速收发器的场合。2017年,Xilinx又发布了Spartan-7,具有封装小(CPGA196封装只有8mm×8mm)、性能功耗比高的特点。不同于Virtex-6和Spartan-6,7系列FPGA采用了统一的内部架构。图1—8对7系列FPGA从逻辑单元个数、Block RAM容量、DSP个数、高速收发器个数、高速收发器速率和外部存储器速率等几个方面进行了比较(这里显示的均为最大值),可进一步理解其中的差异及各个产品的应用场合。

图1—8

7系列FPGA还首次使用了SSI(Stacked Silicon Interconnect,堆叠硅片互连)技术,包括XC7V2000T、XC7VX1140T、XC7VH580T和XC7VH870T 4颗芯片。SSI技术有效解决了采用传统方式互连多片FPGA时导致的互连资源有限(如输入/输出引脚个数不够用)、互连延迟过大、高速串行互连的信号完整性等问题。以XC7V2000T为例,整个芯片包含4个SLR(Super Logic Region,又称为die),这4个SLR并行放置在一个硅中介板上,如图1—9所示。再看4个SLR的内部布局,如图1—10所示。可以看到4个SLR的大小和内部结构是完全相同的。图中GTX代表的高速收发器最大速率为12.5Gb/s。每个SLR由3个CR(Clock Region,时钟区域)构成。每个CR的高度为50个CLB,也可表示为20个DSP或10个36Kb Block RAM,如图1—11所示。

图1—9

High-Bandwidth,Low-latency Connections:高带宽低延迟互连线 Microbumps:微凸块 Through-Silicon Vias:硅穿孔 C4 Bumps:C4凸块28nm FPGA die:28nm FPGA超级逻辑区域65nm Silicon Interposer:65nm硅中介板 Package Substrate:封装基板 BGA Solder Balls:BGA锡球

图1—10

图1—11

SLR之间通过SLL(Super Long Line)互连,实现die间的数据传输。紧邻每个CLB会有一个互连单元(Interconnect Tile),SLL的起点和终点正是这些位于相邻SLR的不同互连单元。每个互连单元列可提供49个SLL(见图1—12),不同芯片互连单元列个数有所不同,故7系列SSI器件相邻SLR总的SLL个数为10800或13700,从而保证了die间的高带宽数据传输。

图1—12

XC7VX1140T内部结构如图1—13所示,由4个SLR构成,有更多的高速收发器(图中GTH代表的高速收发器最高速率可达13.1Gb/s,共96个)。

图1—13

面向高带宽数据传输的XC7VH870T则由6个SLR构成,如图1—14所示,其中顶部和底部的SLR仅包含GTZ(高速收发器,共16个,最大速率可达28.05Gb/s),因此,这是一颗异构SLR构成的芯片。

在推出传统FPGA的同时,2011年,Xilinx也发布了集成ARM Cortex-A9 CPU的Zynq-7000系列SoC(System on Chip)。将FPGA分割为PS(Processing System)和PL(Programmable Logic)两部分,实现了全可编程:软件可编程、硬件可编程和I/O可编程。其中,PS包含一个或两个ARM Cortex-A9核,以及丰富的硬核接口,CPU主频最高达1GHz;PL为传统的逻辑资源,如CLB、Block RAM、DSP和GT等,如图1—15所示。图中灰色区域即为PL。Zynq-7000因其异构特性在Xilinx FPGA发展史上留下了浓墨重彩的一笔。

图1—14

图1—15

2014年,Xilinx推出了基于20nm工艺制程的UltraScale FPGA,包括Kintex和Virtex两个系列。与Kintex相比,Virtex无论在规模还是性能上都更胜一筹。时隔两年,也就是2016年,Xilinx又推出了UltraScale+FPGA,采用16nm工艺制程,包括Artix(2021年推出)、Kintex、Virtex、Zynq MPSoC(Multiprocessor System on Chip)和Zynq RFSoC (Radio Frequency System on Chip)。这一系列FPGA的比较如表1—2所示(表中US代表UltraScale,US+代表UltraScale+)。可以看到UltraScale+FPGA引入了新的存储单元UltraRAM,每个UltraRAM大小为288Kb(深度为4096,也就是4K,宽度为72),这对于大批量的数据存储非常有用。

表1—2

Vritex UltraScale+还引入了HBM(High Bandwidth Memory),有效地增大了数据存储空间及数据传输带宽,其内部布局如图1—16所示。仍然采用了SSI技术,HBM位于单独的一个SLR上。在与其紧邻的SLR内,集成了硬核的HBM控制器。UltraScale+HBM系列FPGA内HBM的容量对比如图1—17所示,可以看到,HBM最小为4GB(也就是32Gb),最大为16GB(也就是128Gb)。在执行机器学习算法时,通常需要存储大量的权值,而且为了保证足够的并行性需要同时从存储空间读出多个数据,传统的Block RAM和UltraRAM很难满足这一需求,而HBM正好解决了这一问题。

图1—16

图1—17

这里不得不提一下Xilinx第二代SSI芯片。Kintex UltraScale只有KU085和KU115为SSI芯片,均包含2个SLR。Virtex UltraScale有4颗芯片为SSI芯片,分别为VU125(2个SLR)、VU160(3个SLR)、VU190(3个SLR)和VU440(3个SLR),而Virtex UltraScale+绝大多数为SSI芯片。与第一代SSI芯片相比,第二代SSI芯片不仅有专用跨die布线资源SLL,还有专用跨die寄存器,也就是LAGUNA寄存器,如图1—18所示。在相邻两个die的边界,每个时钟区域内有两列LAGUNA寄存器,SLL的起点和终点位于同列不同die的LAGUNA寄存器上。每两列LAGUNA寄存器也就是die边界的每个时钟区域可提供2880个SLL,图中每个SLR位于边界的时钟区域共有6个,故可提供17280个SLL。

图1—18

作为第二代嵌入了ARM核的FPGA,Zynq UltraScale+MPSoC性能进一步提升,共3个系列:CG、EG和EV。ARM核由Cortex-A9升级为Cortex-A53,双核(CG)或四核(EG和EV),扮演着APU(Application Processing Unit,应用处理单元)的角色,主频可达1.5GHz。同时,嵌入了RPU(Real-time Processing Unit,实时处理单元),双核Cortex-R5F,主频最高为600MHz。EG和EV系列还嵌入了GPU(Graphics Processing Unit,图形处理单元)Mali-400MP2,主频最高为667MHz。在此基础上,EV系列增强了视频处理功能,嵌入了硬核视频编解码处理单元VCU(Video Encoder/Decoder),可支持H.264/H.265,如表1—3所示。以EV系列为例,其内部布局如图1—19所示,图中阴影部分为PL。

表1—3

在Zynq MPSoC的基础上,Xilinx还将射频模数/数模转换器(Radio Frequency Analog-to-Digital Converter/Digital-to-Analog Converter,RF-ADC/DAC)和软判决前向纠错(Soft Decision Forward Error Correction)集成其中,形成了Zynq RFSoC FPGA,是业界唯一的单芯片自适应射频平台,其内部布局如图1—20所示。图中阴影部分为PL。DDC为数字下变频器(Digital Down Converter),DUC为数字上变频器(Digital Up Converter)。ADC的分辨率为12位(如XCZU25DR)或14位(如XCZU42DR),最多可达16位(如XCZU29DR);采样速率最高可达4.096GSPS(Gigabit Samples Per Second,每秒千兆次采样),如XCZU25DR。DAC分辨率为14位,最多可达16位,如XCZU29DR,采样速率最高可达9.85GSPS。SD-FEC仅存在于XCZU21DR、XCZU28DR、ZCZU46DR和XCZU48DR中,共8个。

图1—19

图1—20

2019年,Xilinx推出了基于7nm工艺制程的Versal芯片,将其定义为ACAP(Adaptive Computing Acceleration Platform,自适应计算加速平台),而不再是FPGA。ACAP包含三大引擎:标量引擎、自适应引擎和智能引擎。通过可编程片上网络(Network on Chip,NoC)将三者连接在一起,如图1—21所示。其中,标量引擎由双核ARM Cortex-A72和双核ARM Cortex-R5F构成,主频可分别达到1.7GHz和800MHz;自适应引擎由传统的FPGA逻辑资源构成,包括CLB、Block RAM和UltraRAM;智能引擎主要提供计算功能,由AIE(Artificial Intelligence Engine)和DSP58构成。

图1—21

目前,Versal ACAP已推出5个系列:AI Edge系列、AI Core系列、Prime系列、Premium系列和HBM系列,性能对比如表1—4所示。表中存储空间是指分布式RAM即LUTRAM、Block RAM和UltraRAM的总和。AI Edge系列嵌入了针对机器学习推理应用而优化的AIE-ML,AI Core系列嵌入的则是第一代AIE。其他系列没有植入AIE。

表1—4

以AI Core系列为例,芯片内部布局如图1—22所示。其中,AIE阵列位于芯片最上方,DDR控制器位于最下方,两者通过NoC实现数据传输。不难看出,与前一代UltraScale+相比,Versal中的硬核越来越多。为了发挥这些硬核的性能,需要在设计初期研究芯片架构,规划好整个系统的布局。

图1—22

AIE阵列中的每个AIE核内部结构如图1—23所示。其核心部分是向量单元,可提供强大的计算能力。例如,其中的乘加器在一个时钟周期内可实现128个8×8有符号数乘法运算或32个16×16有符号数乘法运算。

图1—23

从2001年发布Virtex-II FPGA到2019年发布Versal ACAP,将近20年的时间里,Xilinx先后推出了9代产品,如表1—5所示,平均每两年就会有一代新产品诞生。产品性能不断突破——容量越来越大,速度越来越快;产品架构不断革新——从仅有PL到嵌入CPU,再到嵌入AIE。架构的不断演进使得FPGA除了在传统领域如原型验证、通信、工业控制、航空航天等继续保持一定优势外,还使得FPGA进入新的领域如数据中心,成为数据中心加速器、AI加速器、SmartNIC(Smart Network Interface Card,智能网卡),以及网络基础设施中的加速器。而FPGA厂商除了提供FPGA芯片外,还生产制作了各种加速卡,如Xilinx的Alveo加速卡、Varium加速卡,以期最大程度上满足业务需求,帮助客户缩短研发周期。

表1—5 x9RU52wTfghGC7bEAjrUeH/iKSZYVpUBmVm6YwwYMvH8191nqfo3qw4qaiB3uLs0

点击中间区域
呼出菜单
上一章
目录
下一章
×