PGA基本特點
1) 采用FPGA設計ASIC電路(專用集成電路),用戶不需要投片生產,就能得到合用的芯片。
2) FPGA可做其它全定制或半定制ASIC電路的中試樣片。
3) FPGA內部有豐富的觸發器和I/O引腳。
4) FPGA是ASIC電路中設計周期最短、開發費用最低、風險最小的器件之一。
5) FPGA采用高速CMOS工藝,功耗低,可以與CMOS、TTL電平兼容。
FPGA三大優勢
優勢一:更大的并行度
這個主要是通過并發和流水兩種技術實現。A:并發是指重復分配計算資源,使得多個模塊之間可以同時獨立進行計算。這一點與現在的多核和SIMD技術相似。但相對與SIMD技術,FPGA的并發可以在不同邏輯功能之間進行,而不局限于同時執行相同的功能。舉個簡單例子說就是使用SIMD可以同時執行多個加法,而FPGA可以同時執行多個加法和乘法和任何你能設計出來的邏輯。
B:流水是通過將任務分段,段與段之間同時執行。其實這一點和CPU相似,只是CPU是指令間的流水而FPGA是任務間流水或者可以說是線程間流水。
優勢二:可定制
FPGA內部通過LookupTable實現邏輯,可以簡單理解為是硬件電路??啥ㄖ浦傅氖窃谫Y源允許范圍內,用戶可實現自己的邏輯電路。通常情況下任務在硬件電路上跑是比在軟件上快的,比如要比較一個64位數高32位和低32位的大小,在CPU下需要2條區數指令,兩條位與指令,一條移位指令一條比較指令和一條寫回指令,而在FPGA下只要一個比較器就行了。
優勢三:可重構
可重構指的是FPGA內部的邏輯可根據需求改變,減少開發成本。同時,使用FPGA復用資源比使用多個固定的ASIC模塊為服務器省下更多的空間。
FPGA工作原理
FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,內部包括 可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內部連線(Interconnect)三個部分。 現場可編程門陣列(FPGA)是可編程器件,與傳統邏輯電路和門陣列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的結構。FPGA利用小型查找表(16×1RAM)來實現組合邏輯,每個查找表連接到一個D觸發器的輸入端,觸發器再來驅動其他邏輯電路或驅動I/O,由此構成了既可實現組合邏輯功能又可實現時序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。FPGA的邏輯是通過向內部靜態存儲單元加載編程數據來實現的,存儲在存儲器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的聯接方式,并最終決定了FPGA所能實現的功能,FPGA允許無限次的編程。
FPGA典型應用領域
一、數據采集和接口邏輯領域
1.FPGA在數據采集領域的應用
由于自然界的信號大部分是模擬信號,因此一般的信號處理系統中都要包括數據的采集功能。通常的實現方法是利用A/D轉換器將模擬信號轉換為數字信號后,送給處理器,比如利用單片機(MCU)或者數字信號處理器(DSP)進行運算和處理。
對于低速的A/D和D/A轉換器,可以采用標準的SPI接口來與MCU或者DSP通信。但是,高速的A/D和D/A轉換芯片,比如視頻Decoder或者Encoder,不能與通用的MCU或者DSP直接接口。在這種場合下,FPGA可以完成數據采集的粘合邏輯功能。
2.FPGA在邏輯接口領域的應用
在實際的產品設計中,很多情況下需要與PC機進行數據通信。比如,將采集到的數據送給PC機處理,或者將處理后的結果傳給PC機進行顯示等。PC機與外部系統通信的接口比較豐富,如ISA、PCI、PCIExpress、PS/2、USB等。
傳統的設計中往往需要專用的接口芯片,比如PCI接口芯片。如果需要的接口比較多,就需要較多的外圍芯片,體積、功耗都比較大。采用FPGA的方案后,接口邏輯都可以在FPGA內部來實現了,大大簡化了外圍電路的設計。
在現代電子產品設計中,存儲器得到了廣泛的應用,例如SDRAM、SRAM、Flash等。這些存儲器都有各自的特點和用途,合理地選擇儲存器類型可以實現產品的最佳性價比。由于FPGA的功能可以完全自己設計,因此可以實現各種存儲接口的控制器。
3.FPGA在電平接口領域的應用
除了TTL、COMS接口電平之外,LVDS、HSTL、GTL/GTL+、SSTL等新的電平標準逐漸被很多電子產品采用。比如,液晶屏驅動接口一般都是LVDS接口,數字I/O一般是LVTTL電平,DDRSDRAM電平一般是HSTL的。
在這樣的混合電平環境里面,如果用傳統的電平轉換器件實現接口會導致電路復雜性提高。利用FPGA支持多電平共存的特性,可以大大簡化設計方案,降低設計風險。
二、高性能數字信號處理領域
無線通信、軟件無線電、高清影像編輯和處理等領域,對信號處理所需要的計算量提出了極高的要求。傳統的解決方案一般是采用多片DSP并聯構成多處理器系統來滿足需求。
但是多處理器系統帶來的主要問題是設計復雜度和系統功耗都大幅度提升,系統穩定性受到影響。FPGA支持并行計算,而且密度和性能都在不斷提高,已經可以在很多領域替代傳統的多DSP解決方案。
例如,實現高清視頻編碼算法H.264。采用TI公司1GHz主頻的DSP芯片需要4顆芯片,而采用Altera的StratixIIEP2S130芯片只需要一顆就可以完成相同的任務。FPGA的實現流程和ASIC芯片的前端設計相似,有利于導入芯片的后端設計。
三、其他應用領域
除了上面一些應用領域外,FPGA在其他領域同樣具有廣泛的應用。
(1)汽車電子領域,如網關控制器/車用PC機、遠程信息處理系統。
(2)軍事領域,如安全通信、雷達和聲納、電子戰。
(3)測試和測量領域,如通信測試和監測、半導體自動測試設備、通用儀表。
(4)消費產品領域,如顯示器|、投影儀、數字電視和機頂盒、家庭網絡。
(5)醫療領域,如軟件無線電、電療|、生命科學。
數據中心為什么使用FPGA?
眾所周知,通用處理器(CPU)的摩爾定律已入暮年,而機器學習和Web服務的規模卻在指數級增長。人們使用定制硬件來加速常見的計算任務,然而日新月異的行業又要求這些定制的硬件可被重新編程來執行新類型的計算任務。
FPGA(FieldProgrammableGateArray)正是一種硬件可重構的體系結構,常年來被用作專用芯片(ASIC)的小批量替代品,然而近年來在微軟、百度等公司的數據中心大規模部署,以同時提供強大的計算能力和足夠的靈活性。
FPGA為什么快?「都是同行襯托得好」。CPU、GPU都屬于馮·諾依曼結構,指令譯碼執行、共享內存。FPGA之所以比CPU甚至GPU能效高,本質上是無指令、無需共享內存的體系結構帶來的福利。
馮氏結構中,由于執行單元(如CPU核)可能執行任意指令,就需要有指令存儲器、譯碼器、各種指令的運算器、分支跳轉處理邏輯。由于指令流的控制邏輯復雜,不可能有太多條獨立的指令流,因此GPU使用SIMD(單指令流多數據流)來讓多個執行單元以同樣的步調處理不同的數據,CPU也支持SIMD指令。而FPGA每個邏輯單元的功能在重編程(燒寫)時就已經確定,不需要指令。
馮氏結構中使用內存有兩種作用。一是保存狀態,二是在執行單元間通信。由于內存是共享的,就需要做訪問仲裁;為了利用訪問局部性,每個執行單元有一個私有的緩存,這就要維持執行部件間緩存的一致性。對于保存狀態的需求,FPGA中的寄存器和片上內存(BRAM)是屬于各自的控制邏輯的,無需不必要的仲裁和緩存。對于通信的需求,FPGA每個邏輯單元與周圍邏輯單元的連接在重編程(燒寫)時就已經確定,并不需要通過共享內存來通信。
說了這么多三千英尺高度的話,FPGA實際的表現如何呢?我們分別來看計算密集型任務和通信密集型任務。
計算密集型任務的例子包括矩陣運算、圖像處理、機器學習、壓縮、非對稱加密、Bing搜索的排序等。這類任務一般是CPU把任務卸載(offload)給FPGA去執行。對這類任務,目前我們正在用的Altera(似乎應該叫Intel了,我還是習慣叫Altera……)StratixVFPGA的整數乘法運算性能與20核的CPU基本相當,浮點乘法運算性能與8核的CPU基本相當,而比GPU低一個數量級。我們即將用上的下一代FPGA,Stratix10,將配備更多的乘法器和硬件浮點運算部件,從而理論上可達到與現在的頂級GPU計算卡旗鼓相當的計算能力。
FPGA的整數乘法運算能力(估計值,不使用DSP,根據邏輯資源占用量估計)
FPGA的浮點乘法運算能力(估計值,float16用軟核,float32用硬核)
在數據中心,FPGA相比GPU的核心優勢在于延遲。像Bing搜索排序這樣的任務,要盡可能快地返回搜索結果,就需要盡可能降低每一步的延遲。如果使用GPU來加速,要想充分利用GPU的計算能力,batchsize就不能太小,延遲將高達毫秒量級。使用FPGA來加速的話,只需要微秒級的PCIe延遲(我們現在的FPGA是作為一塊PCIe加速卡)。未來Intel推出通過QPI連接的Xeon+FPGA之后,CPU和FPGA之間的延遲更可以降到100納秒以下,跟訪問主存沒什么區別了。
FPGA為什么比GPU的延遲低這么多?這本質上是體系結構的區別。FPGA同時擁有流水線并行和數據并行,而GPU幾乎只有數據并行(流水線深度受限)。例如處理一個數據包有10個步驟,FPGA可以搭建一個10級流水線,流水線的不同級在處理不同的數據包,每個數據包流經10級之后處理完成。每處理完成一個數據包,就能馬上輸出。而GPU的數據并行方法是做10個計算單元,每個計算單元也在處理不同的數據包,然而所有的計算單元必須按照統一的步調,做相同的事情(SIMD,SingleInstructionMultipleData)。這就要求10個數據包必須一起輸入、一起輸出,輸入輸出的延遲增加了。當任務是逐個而非成批到達的時候,流水線并行比數據并行可實現更低的延遲。因此對流式計算的任務,FPGA比GPU天生有延遲方面的優勢。
計算密集型任務,CPU、GPU、FPGA、ASIC的數量級比較(以16位整數乘法為例,數字僅為數量級的估計
ASIC專用芯片在吞吐量、延遲和功耗三方面都無可指摘,但微軟并沒有采用,出于兩個原因:
數據中心的計算任務是靈活多變的,而ASIC研發成本高、周期長。好不容易大規模部署了一批某種神經網絡的加速卡,結果另一種神經網絡更火了,錢就白費了。FPGA只需要幾百毫秒就可以更新邏輯功能。FPGA的靈活性可以保護投資,事實上,微軟現在的FPGA玩法與最初的設想大不相同。
數據中心是租給不同的租戶使用的,如果有的機器上有神經網絡加速卡,有的機器上有Bing搜索加速卡,有的機器上有網絡虛擬化加速卡,任務的調度和服務器的運維會很麻煩。使用FPGA可以保持數據中心的同構性。
接下來看通信密集型任務。相比計算密集型任務,通信密集型任務對每個輸入數據的處理不甚復雜,基本上簡單算算就輸出了,這時通信往往會成為瓶頸。對稱加密、防火墻、網絡虛擬化都是通信密集型的例子。
通信密集型任務,CPU、GPU、FPGA、ASIC的數量級比較(以64字節網絡數據包處理為例,數字僅為數量級的估計)
對通信密集型任務,FPGA相比CPU、GPU的優勢就更大了。從吞吐量上講,FPGA上的收發器可以直接接上40Gbps甚至100Gbps的網線,以線速處理任意大小的數據包;而CPU需要從網卡把數據包收上來才能處理,很多網卡是不能線速處理64字節的小數據包的。盡管可以通過插多塊網卡來達到高性能,但CPU和主板支持的PCIe插槽數量往往有限,而且網卡、交換機本身也價格不菲。
從延遲上講,網卡把數據包收到CPU,CPU再發給網卡,即使使用DPDK這樣高性能的數據包處理框架,延遲也有4~5微秒。更嚴重的問題是,通用CPU的延遲不夠穩定。例如當負載較高時,轉發延遲可能升到幾十微秒甚至更高(如下圖所示);現代操作系統中的時鐘中斷和任務調度也增加了延遲的不確定性。
雖然GPU也可以高性能處理數據包,但GPU是沒有網口的,意味著需要首先把數據包由網卡收上來,再讓GPU去做處理。這樣吞吐量受到CPU和/或網卡的限制。GPU本身的延遲就更不必說了。
那么為什么不把這些網絡功能做進網卡,或者使用可編程交換機呢?ASIC的靈活性仍然是硬傷。盡管目前有越來越強大的可編程交換機芯片,比如支持P4語言的Tofino,ASIC仍然不能做復雜的有狀態處理,比如某種自定義的加密算法。
綜上,在數據中心里FPGA的主要優勢是穩定又極低的延遲,適用于流式的計算密集型任務和通信密集型任務。
-
FPGA
+關注
關注
1643文章
21959瀏覽量
614058 -
cpu
+關注
關注
68文章
11033瀏覽量
215995 -
數據中心
+關注
關注
16文章
5139瀏覽量
73197
發布評論請先 登錄
tdms數據存儲的時候,每運行一次,數據不斷的往下接,行數會越來越多,怎么解決這個問題,讓行數不變
生產者消費者隊列狀態數據越來越多如何解決?
防止越來越多的線束把車體擠爆,CAN-BUS技術應需而生
為什么變頻串聯諧振會被應用的越來越多?
消費電子產品需要越來越多的容量來存儲數字內容
為什么用代還軟件的人越來越多?代還軟件找誰開發
RFID技術的應用被普及,與全息標簽相結合的應用場景也越來越多
數據中心和光學互連的增長趨勢
視頻監控系統中越來越多的使用了高級的數據存儲設備和系統
為何越來越多的企業使用AGV小車?
FPGA在電機控制中的使用越來越多

為什么越來越多的企業使用SaaS系統?

評論