官术网_书友最值得收藏!

第1章 FPGA技術分析

1.1 芯片架構的演變

FPGA,英文全稱是Field Programmable Gate Array,中文意思是現(xiàn)場可編程門陣列,是在PAL(Programmable Array Logic,可編程陣列邏輯)、GAL(Generic Array Logic,通用陣列邏輯)、CPLD(Complex Programmable Logic Device,復雜可編程邏輯器件)等可編程器件的基礎上進一步發(fā)展得來的。作為ASIC(Application-Specific Integrated Circuit,專用集成電路)領域中的一種半定制電路,F(xiàn)PGA既彌補了全定制電路的不足,又克服了原有可編程器件門電路數(shù)目有限的缺點。

FPGA的兩個主要特征就體現(xiàn)在其名稱中,即“現(xiàn)場”和“可編程”。“現(xiàn)場”意味著工程師只需要一臺電腦,安裝了FPGA廠商提供的開發(fā)軟件,焊接了FPGA芯片的板卡,即可完成從模型搭建到生成燒寫文件的全過程。“可編程”意味著工程師可以根據(jù)設計需求,通過編程方式把FPGA內(nèi)部邏輯塊連接起來,這就好比把一個電路試驗板放在一顆芯片里。一個出廠后的成品FPGA內(nèi)部的邏輯塊和連接方式可以按照工程師的需要而改變,所以FPGA可以完成特定的邏輯功能。更重要的是這種編程是可以反復操作的,即可以編程、除錯、再編程。因此,F(xiàn)PGA也稱為“液體硬件”。

一般情況下,F(xiàn)PGA比ASIC的速度要慢,若要實現(xiàn)同樣的功能,F(xiàn)PGA需要的面積更大,功耗也更高。但相比ASIC,F(xiàn)PGA的優(yōu)勢也很明顯,具體如下。①快速成品:這有助于縮短產(chǎn)品上市時間;②反復編程:這使得工程師可以根據(jù)設計需求修改電路功能,同時有助于除錯;③較低的調(diào)試成本:只要有廠商開發(fā)工具(如Vivado)、下載器(如Xilinx Platform Cable Usb)、FPGA板卡,即可進行調(diào)試。

FPGA芯片起源于Xilinx(賽靈思)公司。1985年,首款FPGA(賽靈思XC2064)采用雙列直插式封裝,也稱為DIP封裝(Dual In-line Package),如圖1-1所示,只包含64個可配置邏輯模塊,每個模塊含有兩個3輸入查找表(Look-Up Table,LUT,后面介紹時,“查找表”和“LUT”會交替使用)和一個觸發(fā)器(Flip-Flop,F(xiàn)F,后面介紹時,“觸發(fā)器”和“FF”會交替使用)。按照現(xiàn)在的方式計算,該器件有64個邏輯單元,不足1000個邏輯門。這也構成了早期FPGA的基本架構:可配置邏輯模塊(Configurable Logic Block,CLB)、開關矩陣(Switch Matrix,也稱為Switch Box)、互連線(Interconnect Wires)和輸入/輸出管腳,如圖1-2所示。較為簡單的結構決定了其主要扮演膠合邏輯的角色。

圖1-1

圖1-2

在摩爾定律的推動下,Xilinx于2001年推出了基于150nm工藝制程的Virtex-II FPGA,其最大亮點是嵌入了硬核的18×18的有符號數(shù)乘法器和18Kb(1Kb=1024bit)的Block RAM(簡寫為BRAM),如圖1-3所示(圖中未包含布線資源和輸入/輸出管腳)。其中,XC2V8000中包含168個乘法器和168個BRAM,這大大提升了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集成了硬核高速收發(fā)器,傳輸速率最高可達6.25Gbit/s,如圖1-4所示。XC2VP70所包含的高速收發(fā)器個數(shù)達到了20個。

圖1-4

2004年,Xilinx推出了基于90nm工藝制程的Virtex-4 FPGA。采用了基于列的ASMBL(Advanced Silicon Modular Block)架構,如圖1-5所示,大大提升了FPGA的可編程能力,使得其成為ASIC的強有力的替代者。FPGA也由膠合邏輯的角色變?yōu)槠脚_級產(chǎn)品。通過不同列(CLB列、DSP列、BRAM列、GT列等)的組合,Virtex-4 FPGA形成了3個平臺級家族:LX、FX和SX,給用戶提供了多種選擇,以應對不同的應用場景。其中,LX面向高性能邏輯應用,CLB列會更多一些,XC4VLX200中的邏輯單元(Logic Cell,1個Logic Cell等于1個4輸入LUT+1個觸發(fā)器+1個進位鏈)達到了200448個。SX面向高性能數(shù)字信號處理,DSP列會更多一些,XC4VSX55中的乘加器多達512個。FX面向嵌入式應用,增加了GT列,內(nèi)部嵌入了硬核PowerPC處理器PPC405,主頻可達450MHz。和Virtex-II Pro相比,Virtex-4 FPGA擴展了乘法器的功能,將乘法器變?yōu)榘?8位累加器的乘加器,可將其看作第一代DSP48。DSP48在數(shù)字信號處理應用中扮演著重要的角色。例如,在高性能FIR(Finite Impulse Response)濾波器和FFT(Fast Fourier Transform)中,DSP48是重要的計算單元。此外,從功耗的角度看,Virtex-4的核電壓也由Virtex-II和Virtex-II Pro的1.5V降至1.2V,這對于降低動態(tài)功耗是有益的,因為動態(tài)功耗與核電壓的平方成正比。

圖1-5

2006年,Xilinx推出了基于65nm工藝制程的Virtex-5 FPGA。依托于第二代ASMBL架構,Virtex-5形成了5個平臺級家族系列,以滿足不同領域的需求,如表1-1所示。實踐證明,Virtex-5是非常成功的一代產(chǎn)品。

表1-1

與Virtex-4相比,Virtex-5的SLICE的容量擴大,由2個LUT和2個觸發(fā)器變?yōu)?個LUT和4個觸發(fā)器。更重要的是Virtex-5中的LUT是6輸入LUT,相比Virtex-4中的4輸入LUT更有優(yōu)勢。例如,實現(xiàn)一個8選1的多路復用器(Multiplexer,MUX),如果使用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版本下,實現(xiàn)一個6輸入布爾表達式,Virtex-4 FPGA的邏輯延遲為1.1ns,而Virtex-5 FPGA的邏輯延遲為0.9ns。從分布式RAM的角度看,實現(xiàn)一個64×1(深度為64,寬度為1)的RAM,Virtex-4與Virtex-5的實現(xiàn)方式如圖1-7所示,顯然Virtex-5的實現(xiàn)方式具有更小的延遲。

圖1-6

圖1-7

Virtex-5中的BRAM也有所改進。Virtex-4的每個BRAM大小為18Kb,而Virtex-5的每個BRAM大小為36Kb,由2個獨立的18Kb BRAM構成。這對于搭建更大的存儲空間非常有利。同時,對于每個獨立的18Kb BRAM,如果只使用了其中的9Kb(或小于9Kb),那么剩余的9Kb(或大于9Kb)會被自動關閉,從而可以有效降低功耗。

相比Virtex-4,Virtex-5中的乘加器DSP48E的功能更強大。不僅乘法器的位寬由18×18提升為25×18,而且每個DSP48E的C端口是獨立的(Virtex-4中同列相鄰的兩個DSP48共享C端口),這增強了DSP48E的靈活性,也簡化了數(shù)字信號處理算法的實現(xiàn)。此外,不得不提的是,DSP48E中的累加器還可用來實現(xiàn)按位邏輯運算,如邏輯與、邏輯或、邏輯異或、邏輯非等。確切地說,DSP48E中的乘法器后面跟隨的是算術邏輯運算單元(Arithmetic Logic Unit,ALU),既可以實現(xiàn)加法運算,又可以實現(xiàn)邏輯運算。

在時鐘方面,Virtex-5在保留Virtex-4數(shù)字時鐘管理單元(Digital Clock Manager,DCM)的基礎上,引入了模擬鎖相環(huán)(Phased Lock Loop,PLL),這對于改善時鐘抖動非常有利。

此外,Virtex-5 FXT系列嵌入了PowerPC 440(簡寫為PPC440)處理器,主頻最高可達550MHz,性能比Virtex-4中的PPC405有了進一步的提升。

2009年,Xilinx推出了基于40nm工藝制程的Virtex-6 FPGA和基于45nm工藝制程的Spartan-6 FPGA。Virtex-6采用了第三代ASMBL架構,通過不同資源列的配比,形成了三個系列:面向高性能邏輯應用和高速數(shù)據(jù)傳輸?shù)腖XT系列、面向高性能數(shù)字信號處理和高速數(shù)據(jù)傳輸?shù)腟XT系列、面向高帶寬應用的HXT系列。與Virtex-5相比,所有的Virtex-6 FPGA都帶有高速收發(fā)器,同時,Virtex-6不再提供嵌入PowerPC處理器的FPGA。Spartan-6屬于Xilinx的低端產(chǎn)品,與Virtex-6相比,性能略遜一籌。例如,Spartan-6中的乘加器DSP48A1的乘法器位寬為18×18,且其后的累加器不支持邏輯運算,而Virtex-6中的乘加器DSP48E1的乘法器位寬為25×18,其后為ALU。Spartan-6中的BRAM大小為18Kb,可當作兩個獨立的9Kb BRAM使用。Virtex-6中的BRAM大小為36Kb,由兩個獨立的18Kb BRAM構成。Spartan-6中的時鐘模塊由DCM和PLL構成,而Virtex-6中的時鐘模塊為MMCM(Mixed-Mode Clock Managers)。但是,Spartan-6也有自己的特色,如封裝尺寸小,CPG196的封裝尺寸只有8mm×8mm,而Virtex-6的最小封裝尺寸也要達到23mm×23mm。此外,Spartan-6還集成了硬核存儲器控制器模塊(Memory Controller Blocks,MCB)。從輸入/輸出管腳的角度看,Spartan-6的管腳個數(shù)依據(jù)不同芯片和封裝尺寸在102~576間變化,輸出電平最大為3.3V;Virtex-6的管腳個數(shù)在240~1200間變化,輸出電平最大為2.5V。

2011年,Xilinx推出了基于28nm高性能低功耗(High Performance Low Power,HPL)工藝制程的7系列FPGA,分為高端、中端和低端三類產(chǎn)品,對應Virtex-7、Kintex-7和Artix-7。其中,Virtex-7面向對系統(tǒng)性能要求比較苛刻的場合;Kintex-7可提供業(yè)界最佳的價格/性能比;Artix-7面向低功耗且需要使用高速收發(fā)器的場合。2017年,Xilinx又發(fā)布了Spartan-7,具有封裝尺寸小(CPGA196的封裝尺寸只有8mm×8mm)、性能/功耗比高的特點。不同于Virtex-6和Spartan-6,7系列FPGA采用了統(tǒng)一的內(nèi)部架構。圖1-8對7系列FPGA從邏輯單元個數(shù)(K,1K=1024,下同)、BRAM容量、DSP個數(shù)、高速收發(fā)器個數(shù)、高速收發(fā)器速率和外部存儲器速率幾個方面進行了比較(這里顯示的均為最大值),可進一步理解其中的差異及各類產(chǎn)品的應用場合。

圖1-8

7系列FPGA還首次使用了SSI(Stacked Silicon Interconnect,堆疊硅片互聯(lián))技術,包括XC7V2000T、XC7VX1140T、XC7VH580T和XC7VH870T 4顆芯片。SSI技術有效解決了采用傳統(tǒng)方式互聯(lián)多片F(xiàn)PGA時導致的互聯(lián)資源有限(如輸入/輸出管腳個數(shù)不夠)、互聯(lián)延遲過大、高速串行互聯(lián)的信號完整性等問題。以XC7V2000T為例,整個芯片包含4個SLR(Super Logic Region,又稱為die),這4個SLR被并行放置在一個硅中介板上,如圖1-9所示。再看4個SLR的內(nèi)部布局,如圖1-10所示。可以看到,4個SLR的大小和內(nèi)部結構是完全相同的。圖1-10中的GTX代表的高速收發(fā)器的最大速率為12.5Gbit/s。每個SLR由3個CR(Clock Region,時鐘區(qū)域)構成。每個CR的高度為50個CLB,也可以表示為20個DSP或10個36Kb BRAM,如圖1-11所示。

圖1-9

在圖1-9中,英文對應釋義如下。High-Bandwidth,Low-Latency Connections,高帶寬低延遲互連線;Microbumps,微凸塊;Through-Silicon Vias(TSV),硅穿孔;C4 Bumps,C4凸塊;28nm FPGA die,28nm FPGA超級邏輯區(qū)域;65nm Silicon Interposer,65nm硅中介板;Package Substrate,封裝基板;BGA Solder Balls,BGA錫球。

圖1-10

圖1-11

SLR之間通過(Super Long Line,SLL)互連,實現(xiàn)die間的數(shù)據(jù)傳輸。緊鄰每個CLB會有一個互聯(lián)單元(Interconnect Tile),SLL的起點和終點正是這些位于相鄰SLR的不同互聯(lián)單元。每個互聯(lián)單元列可提供49個SLL,如圖1-12所示,不同芯片互聯(lián)單元列的個數(shù)有所不同,因此7系列SSI器件相鄰SLR的SLL總個數(shù)為10800或13700,從而保證了die間的高帶寬數(shù)據(jù)傳輸。

圖1-12

XC7VX1140T內(nèi)部結構如圖1-13所示,XC7VX1140T由4個SLR構成,有更多的高速收發(fā)器(圖中,GTH代表的高速收發(fā)器的最高速率可達13.1Gbit/s,共96個)。

圖1-13

面向高帶寬數(shù)據(jù)傳輸?shù)腦C7VH870T由6個SLR構成,其中,頂部和底部的SLR僅包含GTZ(高速收發(fā)器,共16個,最高速率可達28.05Gbit/s),如圖1-14所示,因此,這是一顆由異構SLR構成的芯片。

圖1-14

在推出傳統(tǒng)FPGA的同時,2011年,Xilinx也發(fā)布了集成ARM Cortex-A9 CPU的Zynq-7000系列SoC(System on Chip)。將FPGA分割為PS(Processing System)和PL(Programmable Logic)兩部分,實現(xiàn)了全可編程:軟件可編程、硬件可編程和I/O可編程。其中,PS包含一個或兩個ARM Cortex-A9核及豐富的硬核接口,CPU主頻最高可達1GHz。PL為傳統(tǒng)的邏輯資源,如CLB、BRAM、DSP和GT等,如圖1-15所示,圖中,灰色部分表示PL。Zynq-7000因其異構特性在Xilinx FPGA發(fā)展史上留下了濃墨重彩的一筆。

圖1-15

2014年,Xilinx推出了基于20nm工藝制程的UltraScale FPGA,包括Kintex和Virtex兩個系列。與Kintex相比,Virtex無論是在規(guī)模上還是在性能上都更勝一籌。時隔兩年,也就是2016年,Xilinx又推出了UltraScale+FPGA,采用16nm工藝制程,包括Artix(2021年推出)、Kintex、Virtex、Zynq MPSoC(Multiprocessor System on Chip)和Zynq RFSoC(Radio Frequency System on Chip),比較其性能,如表1-2所示(表中,US代表UltraScale,US+代表UltraScale+)。可以看到,UltraScale+FPGA引入了新的存儲單元UltraRAM,每個UltraRAM的大小為288Kb(深度為4096,也就是4K,寬度為72),這對于大批量的數(shù)據(jù)存儲非常有用。

表1-2

Vritex UltraScale+還引入了HBM(HighBandwidth Memory),有效地增大了數(shù)據(jù)存儲空間及數(shù)據(jù)傳輸帶寬,其內(nèi)部布局如圖1-16所示,仍然采用了SSI技術,HBM位于單獨的一個SLR上。在與其緊鄰的SLR內(nèi),集成了硬核的HBM控制器。Vritex UltraScale+HBM FPGA內(nèi)HBM的容量對比如圖1-17所示,可以看到,HBM最小為4GB(也就是32Gb),最大為16GB(也就是128Gb)。在執(zhí)行機器學習算法時,通常需要存儲大量的權值,而且為了保證足夠的并行性,需要同時從存儲空間讀出多個數(shù)據(jù),傳統(tǒng)的BRAM和UltraRAM很難滿足這一需求,而HBM正好解決了這一問題。

圖1-16

圖1-17

這里不得不提一下Xilinx第二代SSI芯片。Kintex UltraScale FPGA只有KU085和KU115為SSI芯片,均包含2個SLR。Virtex UltraScale FPGA有4顆芯片為SSI芯片,分別為VU125(2個SLR)、VU160(3個SLR)、VU190(3個SLR)和VU440(3個SLR)。而Virtex UltraScale+FPGA的芯片絕大多數(shù)為SSI芯片。與第一代SSI芯片相比,第二代SSI芯片不僅有專用跨die布線資源(SLL),還有專用跨die寄存器(LAGUNA寄存器),如圖1-18所示。在相鄰兩個die的邊界,每個時鐘區(qū)域內(nèi)有2列LAGUNA寄存器,SLL起點和SLL終點位于同列不同die的LAGUNA寄存器上。每2列LAGUNA寄存器,也就是die邊界的每個時鐘區(qū)域可提供2880個SLL,在圖1-18中,每個SLR位于邊界的時鐘區(qū)域共有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,實時處理單元),采用雙核ARM Cortex-R5F,主頻最高可達600MHz。EG和EV系列還嵌入了GPU(Graphics Processing Unit,圖形處理單元)Mali-400MP2,主頻最高可達667MHz。在此基礎上,EV系列增強了視頻處理功能,嵌入了硬核視頻編解碼處理單元VCU(Video Encoder/Decoder),可支持H.264/H.265,如表1-3所示。以EV系列為例,其內(nèi)部布局如圖1-19所示,圖中,灰色部分為PL。

表1-3

圖1-19

在Zynq MPSoC的基礎上,Xilinx還將射頻模數(shù)轉換器/數(shù)模轉換器(Radio Frequency Analog-to-Digital Converter/Digital-to-Analog Converter,RF-ADC/DAC)和軟判決前向糾錯(Soft Decision Forward Error Correction)集成,形成了Zynq RFSoC FPGA,是業(yè)界唯一的單芯片自適應射頻平臺,其內(nèi)部布局如圖1-20所示。在圖1-20中,灰色部分為PL。DDC為數(shù)字下變頻器(Digital Down Converter),DUC為數(shù)字上變頻器(Digital Up Converter)。ADC的分辨率為12位(如XCZU25DR)或14位(如XCZU42DR),最多可達16個(如XCZU29DR)。采樣速率最高可達4.096 GSPS(Gigabit Samples Per Second,每秒千兆次采樣),如XCZU25DR。DAC分辨率為14位,最多可達16個,如XCZU29DR,采樣速率最高可達9.85 GSPS。SD-FEC僅存在于XCZU21DR、XCZU28DR、ZCZU46DR和XCZU48DR中,共8個。

圖1-20

2019年,Xilinx推出了基于7nm工藝制程的Versal芯片,將其定義為ACAP(Adaptive Compute Acceleration Platform,自適應計算加速平臺),而不再是FPGA。ACAP包含三大引擎:標量引擎、自適應引擎和智能引擎,通過可編程片上網(wǎng)絡(Programmable Network on Chip,可編程NoC)將三者連接在一起,如圖1-21所示。其中,標量引擎由雙核ARM Cortex-A72和雙核ARM Cortex-R5F構成,主頻可分別達到1.7GHz和800MHz;自適應引擎由傳統(tǒng)的FPGA邏輯資源構成,包括CLB、BRAM和UltraRAM;智能引擎主要提供計算功能,由AIE(Artificial intelligence Engine)和DSP58構成。

圖1-21

目前,Versal ACAP已推出5個系列:AI Edge系列、AI Core系列、Prime系列、Premium系列和HBM系列,其性能對比如表1-4所示。表1-4中的存儲空間是指分布式RAM,即LUTRAM、BRAM和UltraRAM的總和。AI Edge系列嵌入了針對機器學習推理應用而優(yōu)化的AIE-ML,AI Core系列嵌入的則是第一代AIE。其他系列沒有嵌入AIE。

表1-4

以AI Core系列為例,芯片內(nèi)部布局如圖1-22所示。其中,AIE陣列位于芯片最上方,DDR控制器位于最下方,兩者通過可編程NoC實現(xiàn)數(shù)據(jù)傳輸。不難看出,與前一代UltraScale+FPGA相比,Versal中的硬核越來越多。為了發(fā)揮這些硬核的性能,需要在設計初期研究芯片架構,規(guī)劃好整個系統(tǒng)的布局。

AIE陣列中的每個AIE核的內(nèi)部結構如圖1-23所示,其核心部分是向量單元,可提供強大的計算能力。例如,其中的乘加器在一個時鐘周期內(nèi)可實現(xiàn)128個8×8有符號數(shù)乘法運算或32個16×16有符號數(shù)乘法運算。

圖1-22

圖1-23

從2001年發(fā)布Virtex-II FPGA到2019年發(fā)布Versal ACAP,在近20年的時間里,Xilinx先后推出了9代產(chǎn)品,如表1-5所示,平均每兩年就會有一代新產(chǎn)品誕生。產(chǎn)品性能不斷突破:容量越來越大,速度越來越快。產(chǎn)品架構不斷革新:從僅有PL到嵌入CPU,再到嵌入AIE。架構的不斷演進使得FPGA除了在傳統(tǒng)領域(如原型驗證、通信、工業(yè)控制、航空航天等)繼續(xù)保持一定優(yōu)勢,還使得FPGA進入新的領域,如數(shù)據(jù)中心,成為數(shù)據(jù)中心加速器、AI加速器、SmartNIC(Smart Network Interface Card,智能網(wǎng)卡)及網(wǎng)絡基礎設施中的加速器。而FPGA廠商除了提供FPGA芯片,還生產(chǎn)制作了各種加速卡,如Xilinx的Alveo加速卡、Varium加速卡,以期在最大限度上滿足業(yè)務需求,幫助客戶縮短研發(fā)周期。

表1-5

主站蜘蛛池模板: 平凉市| 盖州市| 安义县| 安龙县| 岑巩县| 北流市| 鹤峰县| 维西| 都江堰市| 济源市| 松原市| 金塔县| 石狮市| 邮箱| 襄城县| 门头沟区| 梧州市| 苗栗市| 沙洋县| 专栏| 万载县| 剑川县| 铁岭县| 宁乡县| 桂平市| 吴川市| 万州区| 阳高县| 兰西县| 桐庐县| 如皋市| 延寿县| 雅江县| 呼图壁县| 固阳县| 黄浦区| 贺州市| 丹凤县| 紫阳县| 武胜县| 邓州市|