PGA基本特點(diǎn)
1) 采用FPGA設(shè)計ASIC電路(專用集成電路),用戶不需要投片生產(chǎn),就能得到合用的芯片。
2) FPGA可做其它全定制或半定制ASIC電路的中試樣片。
3) FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。
4) FPGA是ASIC電路中設(shè)計周期最短、開發(fā)費(fèi)用最低、風(fēng)險最小的器件之一。
5) FPGA采用高速CMOS工藝,功耗低,可以與CMOS、TTL電平兼容。
FPGA三大優(yōu)勢
優(yōu)勢一:更大的并行度
這個主要是通過并發(fā)和流水兩種技術(shù)實現(xiàn)。A:并發(fā)是指重復(fù)分配計算資源,使得多個模塊之間可以同時獨(dú)立進(jìn)行計算。這一點(diǎn)與現(xiàn)在的多核和SIMD技術(shù)相似。但相對與SIMD技術(shù),F(xiàn)PGA的并發(fā)可以在不同邏輯功能之間進(jìn)行,而不局限于同時執(zhí)行相同的功能。舉個簡單例子說就是使用SIMD可以同時執(zhí)行多個加法,而FPGA可以同時執(zhí)行多個加法和乘法和任何你能設(shè)計出來的邏輯。
B:流水是通過將任務(wù)分段,段與段之間同時執(zhí)行。其實這一點(diǎn)和CPU相似,只是CPU是指令間的流水而FPGA是任務(wù)間流水或者可以說是線程間流水。
優(yōu)勢二:可定制
FPGA內(nèi)部通過LookupTable實現(xiàn)邏輯,可以簡單理解為是硬件電路。可定制指的是在資源允許范圍內(nèi),用戶可實現(xiàn)自己的邏輯電路。通常情況下任務(wù)在硬件電路上跑是比在軟件上快的,比如要比較一個64位數(shù)高32位和低32位的大小,在CPU下需要2條區(qū)數(shù)指令,兩條位與指令,一條移位指令一條比較指令和一條寫回指令,而在FPGA下只要一個比較器就行了。
優(yōu)勢三:可重構(gòu)
可重構(gòu)指的是FPGA內(nèi)部的邏輯可根據(jù)需求改變,減少開發(fā)成本。同時,使用FPGA復(fù)用資源比使用多個固定的ASIC模塊為服務(wù)器省下更多的空間。

FPGA工作原理
FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,內(nèi)部包括 可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個部分。 現(xiàn)場可編程門陣列(FPGA)是可編程器件,與傳統(tǒng)邏輯電路和門陣列(如PAL,GAL及CPLD器件)相比,F(xiàn)PGA具有不同的結(jié)構(gòu)。FPGA利用小型查找表(16×1RAM)來實現(xiàn)組合邏輯,每個查找表連接到一個D觸發(fā)器的輸入端,觸發(fā)器再來驅(qū)動其他邏輯電路或驅(qū)動I/O,由此構(gòu)成了既可實現(xiàn)組合邏輯功能又可實現(xiàn)時序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。FPGA的邏輯是通過向內(nèi)部靜態(tài)存儲單元加載編程數(shù)據(jù)來實現(xiàn)的,存儲在存儲器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的聯(lián)接方式,并最終決定了FPGA所能實現(xiàn)的功能,F(xiàn)PGA允許無限次的編程。
FPGA典型應(yīng)用領(lǐng)域
一、數(shù)據(jù)采集和接口邏輯領(lǐng)域
1.FPGA在數(shù)據(jù)采集領(lǐng)域的應(yīng)用
由于自然界的信號大部分是模擬信號,因此一般的信號處理系統(tǒng)中都要包括數(shù)據(jù)的采集功能。通常的實現(xiàn)方法是利用A/D轉(zhuǎn)換器將模擬信號轉(zhuǎn)換為數(shù)字信號后,送給處理器,比如利用單片機(jī)(MCU)或者數(shù)字信號處理器(DSP)進(jìn)行運(yùn)算和處理。
對于低速的A/D和D/A轉(zhuǎn)換器,可以采用標(biāo)準(zhǔn)的SPI接口來與MCU或者DSP通信。但是,高速的A/D和D/A轉(zhuǎn)換芯片,比如視頻Decoder或者Encoder,不能與通用的MCU或者DSP直接接口。在這種場合下,F(xiàn)PGA可以完成數(shù)據(jù)采集的粘合邏輯功能。
2.FPGA在邏輯接口領(lǐng)域的應(yīng)用
在實際的產(chǎn)品設(shè)計中,很多情況下需要與PC機(jī)進(jìn)行數(shù)據(jù)通信。比如,將采集到的數(shù)據(jù)送給PC機(jī)處理,或者將處理后的結(jié)果傳給PC機(jī)進(jìn)行顯示等。PC機(jī)與外部系統(tǒng)通信的接口比較豐富,如ISA、PCI、PCIExpress、PS/2、USB等。
傳統(tǒng)的設(shè)計中往往需要專用的接口芯片,比如PCI接口芯片。如果需要的接口比較多,就需要較多的外圍芯片,體積、功耗都比較大。采用FPGA的方案后,接口邏輯都可以在FPGA內(nèi)部來實現(xiàn)了,大大簡化了外圍電路的設(shè)計。
在現(xiàn)代電子產(chǎn)品設(shè)計中,存儲器得到了廣泛的應(yīng)用,例如SDRAM、SRAM、Flash等。這些存儲器都有各自的特點(diǎn)和用途,合理地選擇儲存器類型可以實現(xiàn)產(chǎn)品的最佳性價比。由于FPGA的功能可以完全自己設(shè)計,因此可以實現(xiàn)各種存儲接口的控制器。
3.FPGA在電平接口領(lǐng)域的應(yīng)用
除了TTL、COMS接口電平之外,LVDS、HSTL、GTL/GTL+、SSTL等新的電平標(biāo)準(zhǔn)逐漸被很多電子產(chǎn)品采用。比如,液晶屏驅(qū)動接口一般都是LVDS接口,數(shù)字I/O一般是LVTTL電平,DDRSDRAM電平一般是HSTL的。
在這樣的混合電平環(huán)境里面,如果用傳統(tǒng)的電平轉(zhuǎn)換器件實現(xiàn)接口會導(dǎo)致電路復(fù)雜性提高。利用FPGA支持多電平共存的特性,可以大大簡化設(shè)計方案,降低設(shè)計風(fēng)險。
二、高性能數(shù)字信號處理領(lǐng)域
無線通信、軟件無線電、高清影像編輯和處理等領(lǐng)域,對信號處理所需要的計算量提出了極高的要求。傳統(tǒng)的解決方案一般是采用多片DSP并聯(lián)構(gòu)成多處理器系統(tǒng)來滿足需求。
但是多處理器系統(tǒng)帶來的主要問題是設(shè)計復(fù)雜度和系統(tǒng)功耗都大幅度提升,系統(tǒng)穩(wěn)定性受到影響。FPGA支持并行計算,而且密度和性能都在不斷提高,已經(jīng)可以在很多領(lǐng)域替代傳統(tǒng)的多DSP解決方案。
例如,實現(xiàn)高清視頻編碼算法H.264。采用TI公司1GHz主頻的DSP芯片需要4顆芯片,而采用Altera的StratixIIEP2S130芯片只需要一顆就可以完成相同的任務(wù)。FPGA的實現(xiàn)流程和ASIC芯片的前端設(shè)計相似,有利于導(dǎo)入芯片的后端設(shè)計。
三、其他應(yīng)用領(lǐng)域
除了上面一些應(yīng)用領(lǐng)域外,F(xiàn)PGA在其他領(lǐng)域同樣具有廣泛的應(yīng)用。
(1)汽車電子領(lǐng)域,如網(wǎng)關(guān)控制器/車用PC機(jī)、遠(yuǎn)程信息處理系統(tǒng)。
(2)軍事領(lǐng)域,如安全通信、雷達(dá)和聲納、電子戰(zhàn)。
(3)測試和測量領(lǐng)域,如通信測試和監(jiān)測、半導(dǎo)體自動測試設(shè)備、通用儀表。
(4)消費(fèi)產(chǎn)品領(lǐng)域,如顯示器|、投影儀、數(shù)字電視和機(jī)頂盒、家庭網(wǎng)絡(luò)。
(5)醫(yī)療領(lǐng)域,如軟件無線電、電療|、生命科學(xué)。
數(shù)據(jù)中心為什么使用FPGA?
眾所周知,通用處理器(CPU)的摩爾定律已入暮年,而機(jī)器學(xué)習(xí)和Web服務(wù)的規(guī)模卻在指數(shù)級增長。人們使用定制硬件來加速常見的計算任務(wù),然而日新月異的行業(yè)又要求這些定制的硬件可被重新編程來執(zhí)行新類型的計算任務(wù)。
FPGA(FieldProgrammableGateArray)正是一種硬件可重構(gòu)的體系結(jié)構(gòu),常年來被用作專用芯片(ASIC)的小批量替代品,然而近年來在微軟、百度等公司的數(shù)據(jù)中心大規(guī)模部署,以同時提供強(qiáng)大的計算能力和足夠的靈活性。

FPGA為什么快?「都是同行襯托得好」。CPU、GPU都屬于馮·諾依曼結(jié)構(gòu),指令譯碼執(zhí)行、共享內(nèi)存。FPGA之所以比CPU甚至GPU能效高,本質(zhì)上是無指令、無需共享內(nèi)存的體系結(jié)構(gòu)帶來的福利。
馮氏結(jié)構(gòu)中,由于執(zhí)行單元(如CPU核)可能執(zhí)行任意指令,就需要有指令存儲器、譯碼器、各種指令的運(yùn)算器、分支跳轉(zhuǎn)處理邏輯。由于指令流的控制邏輯復(fù)雜,不可能有太多條獨(dú)立的指令流,因此GPU使用SIMD(單指令流多數(shù)據(jù)流)來讓多個執(zhí)行單元以同樣的步調(diào)處理不同的數(shù)據(jù),CPU也支持SIMD指令。而FPGA每個邏輯單元的功能在重編程(燒寫)時就已經(jīng)確定,不需要指令。
馮氏結(jié)構(gòu)中使用內(nèi)存有兩種作用。一是保存狀態(tài),二是在執(zhí)行單元間通信。由于內(nèi)存是共享的,就需要做訪問仲裁;為了利用訪問局部性,每個執(zhí)行單元有一個私有的緩存,這就要維持執(zhí)行部件間緩存的一致性。對于保存狀態(tài)的需求,F(xiàn)PGA中的寄存器和片上內(nèi)存(BRAM)是屬于各自的控制邏輯的,無需不必要的仲裁和緩存。對于通信的需求,F(xiàn)PGA每個邏輯單元與周圍邏輯單元的連接在重編程(燒寫)時就已經(jīng)確定,并不需要通過共享內(nèi)存來通信。
說了這么多三千英尺高度的話,F(xiàn)PGA實際的表現(xiàn)如何呢?我們分別來看計算密集型任務(wù)和通信密集型任務(wù)。
計算密集型任務(wù)的例子包括矩陣運(yùn)算、圖像處理、機(jī)器學(xué)習(xí)、壓縮、非對稱加密、Bing搜索的排序等。這類任務(wù)一般是CPU把任務(wù)卸載(offload)給FPGA去執(zhí)行。對這類任務(wù),目前我們正在用的Altera(似乎應(yīng)該叫Intel了,我還是習(xí)慣叫Altera……)StratixVFPGA的整數(shù)乘法運(yùn)算性能與20核的CPU基本相當(dāng),浮點(diǎn)乘法運(yùn)算性能與8核的CPU基本相當(dāng),而比GPU低一個數(shù)量級。我們即將用上的下一代FPGA,Stratix10,將配備更多的乘法器和硬件浮點(diǎn)運(yùn)算部件,從而理論上可達(dá)到與現(xiàn)在的頂級GPU計算卡旗鼓相當(dāng)?shù)挠嬎隳芰Α?/p>

FPGA的整數(shù)乘法運(yùn)算能力(估計值,不使用DSP,根據(jù)邏輯資源占用量估計)

FPGA的浮點(diǎn)乘法運(yùn)算能力(估計值,float16用軟核,float32用硬核)
在數(shù)據(jù)中心,F(xiàn)PGA相比GPU的核心優(yōu)勢在于延遲。像Bing搜索排序這樣的任務(wù),要盡可能快地返回搜索結(jié)果,就需要盡可能降低每一步的延遲。如果使用GPU來加速,要想充分利用GPU的計算能力,batchsize就不能太小,延遲將高達(dá)毫秒量級。使用FPGA來加速的話,只需要微秒級的PCIe延遲(我們現(xiàn)在的FPGA是作為一塊PCIe加速卡)。未來Intel推出通過QPI連接的Xeon+FPGA之后,CPU和FPGA之間的延遲更可以降到100納秒以下,跟訪問主存沒什么區(qū)別了。
FPGA為什么比GPU的延遲低這么多?這本質(zhì)上是體系結(jié)構(gòu)的區(qū)別。FPGA同時擁有流水線并行和數(shù)據(jù)并行,而GPU幾乎只有數(shù)據(jù)并行(流水線深度受限)。例如處理一個數(shù)據(jù)包有10個步驟,F(xiàn)PGA可以搭建一個10級流水線,流水線的不同級在處理不同的數(shù)據(jù)包,每個數(shù)據(jù)包流經(jīng)10級之后處理完成。每處理完成一個數(shù)據(jù)包,就能馬上輸出。而GPU的數(shù)據(jù)并行方法是做10個計算單元,每個計算單元也在處理不同的數(shù)據(jù)包,然而所有的計算單元必須按照統(tǒng)一的步調(diào),做相同的事情(SIMD,SingleInstructionMultipleData)。這就要求10個數(shù)據(jù)包必須一起輸入、一起輸出,輸入輸出的延遲增加了。當(dāng)任務(wù)是逐個而非成批到達(dá)的時候,流水線并行比數(shù)據(jù)并行可實現(xiàn)更低的延遲。因此對流式計算的任務(wù),F(xiàn)PGA比GPU天生有延遲方面的優(yōu)勢。

計算密集型任務(wù),CPU、GPU、FPGA、ASIC的數(shù)量級比較(以16位整數(shù)乘法為例,數(shù)字僅為數(shù)量級的估計
ASIC專用芯片在吞吐量、延遲和功耗三方面都無可指摘,但微軟并沒有采用,出于兩個原因:
數(shù)據(jù)中心的計算任務(wù)是靈活多變的,而ASIC研發(fā)成本高、周期長。好不容易大規(guī)模部署了一批某種神經(jīng)網(wǎng)絡(luò)的加速卡,結(jié)果另一種神經(jīng)網(wǎng)絡(luò)更火了,錢就白費(fèi)了。FPGA只需要幾百毫秒就可以更新邏輯功能。FPGA的靈活性可以保護(hù)投資,事實上,微軟現(xiàn)在的FPGA玩法與最初的設(shè)想大不相同。
數(shù)據(jù)中心是租給不同的租戶使用的,如果有的機(jī)器上有神經(jīng)網(wǎng)絡(luò)加速卡,有的機(jī)器上有Bing搜索加速卡,有的機(jī)器上有網(wǎng)絡(luò)虛擬化加速卡,任務(wù)的調(diào)度和服務(wù)器的運(yùn)維會很麻煩。使用FPGA可以保持?jǐn)?shù)據(jù)中心的同構(gòu)性。
接下來看通信密集型任務(wù)。相比計算密集型任務(wù),通信密集型任務(wù)對每個輸入數(shù)據(jù)的處理不甚復(fù)雜,基本上簡單算算就輸出了,這時通信往往會成為瓶頸。對稱加密、防火墻、網(wǎng)絡(luò)虛擬化都是通信密集型的例子。

通信密集型任務(wù),CPU、GPU、FPGA、ASIC的數(shù)量級比較(以64字節(jié)網(wǎng)絡(luò)數(shù)據(jù)包處理為例,數(shù)字僅為數(shù)量級的估計)
對通信密集型任務(wù),F(xiàn)PGA相比CPU、GPU的優(yōu)勢就更大了。從吞吐量上講,F(xiàn)PGA上的收發(fā)器可以直接接上40Gbps甚至100Gbps的網(wǎng)線,以線速處理任意大小的數(shù)據(jù)包;而CPU需要從網(wǎng)卡把數(shù)據(jù)包收上來才能處理,很多網(wǎng)卡是不能線速處理64字節(jié)的小數(shù)據(jù)包的。盡管可以通過插多塊網(wǎng)卡來達(dá)到高性能,但CPU和主板支持的PCIe插槽數(shù)量往往有限,而且網(wǎng)卡、交換機(jī)本身也價格不菲。
從延遲上講,網(wǎng)卡把數(shù)據(jù)包收到CPU,CPU再發(fā)給網(wǎng)卡,即使使用DPDK這樣高性能的數(shù)據(jù)包處理框架,延遲也有4~5微秒。更嚴(yán)重的問題是,通用CPU的延遲不夠穩(wěn)定。例如當(dāng)負(fù)載較高時,轉(zhuǎn)發(fā)延遲可能升到幾十微秒甚至更高(如下圖所示);現(xiàn)代操作系統(tǒng)中的時鐘中斷和任務(wù)調(diào)度也增加了延遲的不確定性。

雖然GPU也可以高性能處理數(shù)據(jù)包,但GPU是沒有網(wǎng)口的,意味著需要首先把數(shù)據(jù)包由網(wǎng)卡收上來,再讓GPU去做處理。這樣吞吐量受到CPU和/或網(wǎng)卡的限制。GPU本身的延遲就更不必說了。
那么為什么不把這些網(wǎng)絡(luò)功能做進(jìn)網(wǎng)卡,或者使用可編程交換機(jī)呢?ASIC的靈活性仍然是硬傷。盡管目前有越來越強(qiáng)大的可編程交換機(jī)芯片,比如支持P4語言的Tofino,ASIC仍然不能做復(fù)雜的有狀態(tài)處理,比如某種自定義的加密算法。
綜上,在數(shù)據(jù)中心里FPGA的主要優(yōu)勢是穩(wěn)定又極低的延遲,適用于流式的計算密集型任務(wù)和通信密集型任務(wù)。
-
FPGA
+關(guān)注
關(guān)注
1660文章
22408瀏覽量
636248 -
cpu
+關(guān)注
關(guān)注
68文章
11277瀏覽量
224955 -
數(shù)據(jù)中心
+關(guān)注
關(guān)注
18文章
5647瀏覽量
75009
發(fā)布評論請先 登錄
隨著非車規(guī)器件在汽車上泛濫FPGA會不會越來越多的出現(xiàn)在汽車上?
tdms數(shù)據(jù)存儲的時候,每運(yùn)行一次,數(shù)據(jù)不斷的往下接,行數(shù)會越來越多,怎么解決這個問題,讓行數(shù)不變
生產(chǎn)者消費(fèi)者隊列狀態(tài)數(shù)據(jù)越來越多如何解決?
防止越來越多的線束把車體擠爆,CAN-BUS技術(shù)應(yīng)需而生
為什么變頻串聯(lián)諧振會被應(yīng)用的越來越多?
消費(fèi)電子產(chǎn)品需要越來越多的容量來存儲數(shù)字內(nèi)容
為什么用代還軟件的人越來越多?代還軟件找誰開發(fā)
數(shù)據(jù)中心和光學(xué)互連的增長趨勢
視頻監(jiān)控系統(tǒng)中越來越多的使用了高級的數(shù)據(jù)存儲設(shè)備和系統(tǒng)
為何越來越多的企業(yè)使用AGV小車?
越來越多的數(shù)據(jù)存儲在云端,是否足夠安全
FPGA在電機(jī)控制中的使用越來越多
為什么越來越多的企業(yè)使用SaaS系統(tǒng)?
FPGA技術(shù)為什么越來越牛,這是有原因的
為什么數(shù)據(jù)中心使用FPGA越來越多?
評論