全面了解FPGA。
1 FPGA簡介
當我們需要進行計算時,通常會選擇使用基于指令的架構,比如中央處理器(CPU)或圖形處理器(GPU),編寫適用于這些架構的軟件程序。這些架構是通用的,可以執行各種不同類型的計算任務。
然而,還有一種不同的方法,即為特定的計算任務設計專門的電路,不依賴于通用架構和軟件。這種方法更加費力,需要進行電路設計和硬件實現,但可以在特定計算任務上獲得更高的性能和效率。
本文重點介紹這種能獲取高性能的方法,即使用可重構集成電路,也稱為現場可編程門陣列(FPGA)。FPGA是一種特殊的芯片,可以通過配置來實現各種不同的電路功能。可以根據特定的計算需求,將FPGA配置成一個定制的電路,以執行特定的計算任務。與基于指令的架構不同,FPGA不需要編寫軟件程序,而是直接配置硬件電路來執行計算任務。
2 FPGA的優劣勢
為什么我們傾向于使用 FPGA 進行計算,而不是更常見的CPU或GPU?與GPU和CPU相比,FPGA在以下幾個方面存在差異:
延遲:計算需要多長時間?
→ FPGA在這方面表現良好。
連通性:可以連接哪些輸入/輸出,以及帶寬是多少?
→ FPGA可以直接連接輸入,并提供非常高的帶寬。
工程成本:表達計算需要多少工作量?
→ 工程成本通常比基于指令的架構要高得多,因此其優勢必須物有所值。
能源效率:計算需要消耗多少能源?
→ 這經常被列為FPGA的一個巨大優勢,但FPGA是否比CPU或GPU更好,實際上取決于應用場景。
接下來更詳細地討論每個方面。
3 低延遲
FPGA相對于CPU和GPU具有更低的延遲。在特定的應用場景下,使用FPGA可以實現非常低的延遲。
使用FPGA,可以實現約等于或低于1微秒的延遲;而使用CPU,延遲小于50微秒已經是非常不錯的表現了。此外,FPGA的延遲更加可預測,更具確定性。主要原因是FPGA更加專用化:它們不依賴于通用操作系統,并且通信無需通過通用總線(如USB或PCIe)進行。
因此,對于需要高性能和低延遲的應用場景,例如噴氣式戰斗機的自動駕駛儀或高頻算法交易引擎,選擇使用FPGA是個更好的選擇,它能夠提供非常短的延遲,更可靠的性能,并且能夠滿足特定的需求,不受通用架構和操作系統的限制。
4 連通性
在FPGA上,可以直接把任何數據源(如網絡接口或傳感器)連接到芯片的引腳上,這點與GPU和CPU形成鮮明對比,因為在GPU和CPU上,必須通過標準化總線(如USB或PCIe)連接數據源,并依賴操作系統將數據傳遞給應用程序。FPGA的與芯片引腳的直接連接提供了極高的帶寬和低延遲。
這種高帶寬在無線電天文學應用中是必需的,比如LOFAR和SKA。在這些應用中,現場裝有許多專用傳感器,產生大量數據。為了更方便處理,必須在發送之前減少數據量。為此,荷蘭無線電天文學研究所ASTRON設計了Uniboard2,這是一塊搭載了四個FPGA的板卡,其每秒處理的數據量比阿姆斯特丹互聯網交換中心還要多。
5 工程成本
在討論能源效率這個微妙問題之前,讓我們先討論FPGA的主要缺點:相比基于指令的架構(即CPU和GPU),它們的編程/配置要困難得多。傳統上,這些硬件電路是通過硬件描述語言(HDL),如VHDL和Verilog,進行描述的,而軟件則是通過眾多編程語言之一,如Java、C和Python進行編程的。
從理論上講,硬件描述語言和編程語言都可以用來表達任何計算(都是圖靈完備的),但在工程細節上存在巨大的差異。
一種新興的趨勢是高級綜合(HLS):使用常規編程語言(如OpenCL或C++)對FPGA進行編程,從而實現更高級別的抽象。然而,即使使用這樣的語言,編程FPGA的難度仍然比編程基于指令的系統高一個數量級。
編程FPGA的困難部分很大程度上是長時間的編譯時間。例如,使用英特爾的OpenCL編譯器,編譯一個典型的FPGA程序需要4到12個小時之間。這是由于布局和布線階段:想要的定制電路需要映射到擁有的FPGA資源上,并且路徑盡可能短。這是一個復雜的優化問題,需要大量計算。英特爾提供了一個仿真器,因此測試正確性不需要進行這個漫長的步驟,但確定和優化性能確實需要進行這些漫長的編譯階段。
6 能源效率
在英特爾的宣傳中,一直強調FPGA在能源效率方面具有明顯的優勢。然而,實際情況并不那么明確,尤其是在涉及浮點計算時。但我們首先來考慮FPGA相對于CPU或GPU在能源效率方面的明顯優勢。
就邏輯和固定精度計算而言,FPGA在能源效率方面表現出色。尤其在加密貨幣挖掘中,正是這一特性使得FPGA具有優勢。實際上,過去很多人都使用FPGA進行比特幣挖掘。
值得一提的是,如今大多數人都使用ASIC(專用集成電路)進行比特幣挖掘。ASIC是專門為特定目的而構建的定制集成電路。雖然ASIC是更為能源高效的解決方案,但需要巨額的前期投資用于設計和批量芯片生產,才能實現成本效益。
從能源效率的角度來看,FPGA板不需要依賴主機計算機運行,因為它們具備自己的輸入/輸出接口,這樣可以節省主機的能源和金錢開銷。而與之相反的是GPU,GPU需要通過PCIe或NVLink與主機系統進行通信,因此需要主機的運行支持。(NVidia Jetson是GPU的一個例外,但它并不是高端GPU。)
7 浮點數的能效——FPGA與GPU的比較
許多高性能計算應用,如深度學習,通常依賴于浮點運算,GPU在這方面表現出色。過去,FPGA在浮點計算方面效率相對較低,因為需要從邏輯塊組裝浮點單元,這消耗了大量資源。
像Arria 10和Stratix 10這樣的新一代FPGA在FPGA結構中集成了浮點單元,使其在浮點計算方面更為出色。那么,添加浮點單元是否使FPGA在能效上對浮點計算更有吸引力?它們比GPU更節能嗎?
把最先進的GPU與最先進的FPGA進行比較。目前市面上最快的專業GPU是Tesla V100,理論最大性能為15 TFLOPS(每秒兆浮點運算,是測量浮點性能的標準單位),功耗約為250瓦。其中一款最好的FPGA開發板是Nallatech 520C,它采用Altera/Intel的新一代Statix 10芯片。該開發板的理論最大性能為9.2 TFLOPS,功耗約為225瓦。
如果把這兩個設備在能效上進行比較,GPU似乎更節能,在理論上能達到56 GFLOP/W(每瓦吉浮點運算,是測量浮點性能能效的標準單位),而FPGA僅能達到40.9 GFLOP/W。因此,如果要購買新的浮點數硬件,并且需要主機電腦,那么在這種粗略的比較中,選擇GPU可能更合適。
然而,這種差距很小,并且有可能新一代基于Stratix 10的FPGA開發板在浮點計算方面比Volta更節能。此外,上述比較是在不同工藝節點下進行的,因為Tesla V100采用了12納米工藝,而Stratix 10則采用了較舊的14納米工藝。
盡管比較表明,如果需要能效較高的浮點計算,最好選擇GPU,但并不能說明GPU在浮點計算方面天生更節能。目前,GPU在浮點能效方面占據優勢,但這種情況在不久的將來可能會發生改變。
FPGA的能效標簽:取決于應用領域
如果不需要主機電腦,那么需要比較帶有主機的高端GPU和不帶主機的高端FPGA。如果使用上述比較中的相同數據,那么帶有主機的GPU和不帶主機的FPGA在能效上完全相同,前提是主機消耗116.7瓦(在多GPU配置中,每個GPU消耗的電量)。現代主機的功耗在50到250瓦之間,這使得FPGA更具競爭力。
在某些領域,很難繞開FPGA。在軍事應用中,如導彈制導系統,FPGA由于其低延遲而被使用。在射電天文學應用中,FPGA的專用輸入/輸出對于處理大量數據有重要作用。在加密貨幣挖掘中,FPGA的定點和邏輯運算能效優勢明顯。
來源: 本文轉載自FPGA研究院 公眾號
審核編輯:湯梓紅
-
處理器
+關注
關注
68文章
19345瀏覽量
230233 -
FPGA
+關注
關注
1629文章
21758瀏覽量
604242 -
集成電路
+關注
關注
5389文章
11574瀏覽量
362272 -
gpu
+關注
關注
28文章
4752瀏覽量
129057
原文標題:對比CPU和GPU,FPGA優勢、劣勢、應用全解析
文章出處:【微信號:FPGA研究院,微信公眾號:FPGA研究院】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論