█ASIC(專用積體電路)

GPU的並行算力能力很強,但是它也有缺點,就是功耗高,體積大,價格貴。

進入21世紀後,算力需求呈現兩個顯著趨勢:一,算力的使用場景,開始細分;二,使用者對算力性能的要求,越來越高。通用的算力晶片,已經無法滿足使用者的需求。

於是,越來越多的企業,開始加強對專用計算晶片的研究和投資力度。而ASIC(Application Specific Integrated Circuit,專用積體電路),就是一種專用於特定任務的晶片。

ASIC的官方定義,是指:應特定使用者的要求,或特定電子系統的需要,專門設計、製造的積體電路。

ASIC起步於上世紀70-80年代。早期的時候,曾用於計算機。後來,主要用於嵌入式控制。這幾年,如前面所說,開始崛起,用於AI推理、高速搜尋以及視覺和圖像處理等。

說到ASIC,我們就不得不提到Google公司大名鼎鼎的TPU

TPU,全稱Tensor Processing Unit,張量處理單元。所謂「張量(tensor)」,是一個包含多個數字(多維陣列)的數學實體。

目前,幾乎所有的機器學習系統,都使用張量作為基本資料結構。所以,張量處理單元,我們可以簡單理解為「AI處理單元」。

2015年,為了更好地完成自己的深度學習任務,提升AI算力,Google推出了一款專門用於神經網路訓練的晶片,也就是TPU v1。

相比傳統的CPU和GPU,在神經網路計算方面,TPU v1可以獲得15~30倍的性能提升,能效提升更是達到30~80倍,給行業帶來了很大震動。

2017年和2018年,Google又再接再厲,推出了能力更強的TPU v2和TPU v3,用於AI訓練和推理。2021年,他們推出了TPU v4,採用7nm工藝,電晶體數達到220億,性能相較上代提升了10倍,比英偉達的A100還強1.7倍。

除了Google之外,還有很多大廠這幾年也在搗鼓ASIC。

英特爾公司在2019年底收購了以色列AI晶片公司Habana Labs,2022年,發佈了Gaudi 2 ASIC晶片。IBM研究院,則於2022年底,發佈了AI ASIC晶片AIU。

三星早幾年也搞過ASIC,當時做的是礦機專用晶片。沒錯,很多人認識ASIC,就是從比特幣挖礦開始的。相比GPU和CPU挖礦,ASIC礦機的效率更高,能耗更低。

ASIC礦機

ASIC礦機

除了TPU和礦機之外,另外兩類很有名的ASIC晶片,是DPUNPU

DPU是資料處理單元(Data Processing Unit),主要用於資料中心。

NPU的話,叫做神經網路處理單元(Neural Processing Unit),在電路層模擬人類神經元和突觸,並用深度學習指令集處理資料。

NPU專門用於神經網路推理,能夠實現高效的卷積、池化等操作。一些手機晶片裡,經常集成這玩意。

說到手機晶片,值得一提的是,我們手機現在的主晶片,也就是常說的SoC晶片,其實也是一種ASIC晶片。

手機SoC晶片

手機SoC晶片

ASIC作為專門的定製晶片,優點體現在哪裡?只是企業獨享,專用logo和命名?

不是的。

定製就是量體裁衣。基於晶片所面向的專項任務,晶片的計算能力和計算效率都是嚴格匹配於任務演算法的。晶片的核心數量,邏輯計算單元和控制單元比例,以及快取等,整個晶片架構,也是精確定製的。

所以,定製專用晶片,可以實現極致的體積、功耗。這類晶片的可靠性、保密性、算力、能效,都會比通用晶片(CPU、GPU)更強。

大家會發現,前面我們提到的幾家ASIC公司,都是Google、英特爾、IBM、三星這樣的大廠。

這是因為,對晶片進行定製設計,對一家企業的研發技術水平要求極高,且耗資極為巨大。

做一款ASIC晶片,首先要經過程式碼設計、綜合、後端等複雜的設計流程,再經過幾個月的生產加工以及封裝測試,才能拿到晶片來搭建系統。

大家都聽說過「流片(Tape-out)」。像流水線一樣,通過一系列工藝步驟製造晶片,就是流片。簡單來說,就是試生產。

ASIC的研發過程是需要流片的。14nm工藝,流片一次需要300萬美元左右。5nm工藝,更是高達4725萬美元。

流片一旦失敗,錢全部打水漂,還耽誤了大量的時間和精力。一般的小公司,根本玩不起。

那麼,是不是小公司就無法進行晶片定製了呢?

當然不是。接下來,就輪到另一個神器出場了,那就是——FPGA。

█FPGA(現場可程式設計門陣列)

FPGA,英文全稱Field Programmable Gate Array,現場可程式設計門陣列。

FPGA這些年在行業裡很火,勢頭比ASIC還猛,甚至被人稱為「萬能晶片」

其實,簡單來說,FPGA就是可以重構的晶片。它可以根據使用者的需要,在製造後,進行無限次數的重複程式設計,以實現想要的數字邏輯功能。

之所以FPGA可以實現DIY,是因為其獨特的架構。

FPGA由可程式設計邏輯塊(Configurable Logic Blocks,CLB)、輸入/輸出模組(I/O Blocks,IOB)、可程式設計互連資源(Programmable Interconnect Resources,PIR)等三種可程式設計電路,以及靜態儲存器SRAM共同組成。

CLB是FPGA中最重要的部分,是實現邏輯功能的基本單元,承載主要的電路功能。

它們通常規則排列成一個陣列(邏輯單元陣列,LCA,Logic Cell Array),散佈於整個晶片中。

IOB主要完成晶片上的邏輯與外部引腳的接口,通常排列在晶片的四周。

PIR提供了豐富的連線資源,包括縱橫網狀連線、可程式設計開關矩陣和可程式設計連接點等。它們實現連接的作用,構成特定功能的電路。

靜態儲存器SRAM,用於存放內部IOB、CLB和PIR的程式設計資料,並形成對它們的控制,從而完成系統邏輯功能。

CLB本身,又主要由查找表(Look-Up Table,LUT)、多路複用器(Multiplexer)和觸發器(Flip-Flop)構成。它們用於承載電路中的一個個邏輯「門」,可以用來實現複雜的邏輯功能。

簡單來說,我們可以把LUT理解為儲存了計算結果的RAM。當使用者描述了一個邏輯電路後,軟體會計算所有可能的結果,並寫入這個RAM。每一個信號進行邏輯運算,就等於輸入一個地址,進行查表。LUT會找出地址對應的內容,返回結果。

這種「硬體化」的運算方式,顯然具有更快的運算速度。

使用者使用FPGA時,可以通過硬體描述語言(Verilog或VHDL),完成的電路設計,然後對FPGA進行「程式設計」(燒寫),將設計載入到FPGA上,實現對應的功能。

加電時,FPGA將EPROM(可擦程式設計只讀儲存器)中的資料讀入SRAM中,配置完成後,FPGA進入工作狀態。掉電後,FPGA恢復成白片,內部邏輯關係消失。如此反覆,就實現了「現場」定製。

FPGA的功能非常強大。理論上,如果FPGA提供的閘電路規模足夠大,通過程式設計,就能夠實現任意ASIC的邏輯功能。

FPGA開發套件,中間那個是FPGA晶片

我們再看看FPGA的發展歷程。

FPGA是在PAL(可程式設計陣列邏輯)、GAL(通用陣列邏輯)等可程式設計器件的基礎上發展起來的產物,屬於一種半定製電路。

它誕生於1985年,發明者是Xilinx公司(賽靈思)。後來,Altera(阿爾特拉)、Lattice(萊迪思)、Microsemi(美高森美)等公司也參與到FPGA這個領域,並最終形成了四巨頭的格局。

2015年5月,Intel(英特爾)以167億美元的天價收購了Altera,後來收編為PSG(可程式設計解決方案事業部)部門。

2020年,Intel的競爭對手AMD也不甘示弱,以350億美元收購了Xilinx。

於是,就變成了Xilinx(AMD旗下)、Intel、Lattice和Microsemi四巨頭(換湯不換藥)。

2021年,這四家公司的市佔率分別為51%、29%、7%和6%,加起來是全球總份額的93%。

不久前,2023年10月,Intel宣佈計劃拆分PSG部門,獨立業務運營。

國內FPGA廠商的話,包括復旦微電、紫光國微、安路科技、東土科技、高雲半導體、京微齊力、京微雅格、智多晶、遨格芯等。看上去數量不少,但實際上技術差距很大。

█ASIC和FPGA的區別

接下來,我們重點說說ASIC和FPGA的區別,還有它們和CPU、GPU之間的區別。

ASIC和FPGA,本質上都是晶片。AISC是全定製晶片,功能寫死,沒辦法改。而FPGA是半定製晶片,功能靈活,可玩性強。

我們還是可以通過一個例子,來說明兩者之間的區別。

ASIC就是用模具來做玩具。事先要進行開模,比較費事。而且,一旦開模之後,就沒辦法修改了。如果要做新玩具,就必須重新開模。

而FPGA呢,就像用樂高積木來搭玩具。上手就能搭,花一點時間,就可以搭好。如果不滿意,或者想搭新玩具,可以拆開,重新搭。

ASIC與FPGA的很多設計工具是相同的。在設計流程上,FPGA沒有ASIC那麼複雜,去掉了一些製造過程和額外的設計驗證步驟,大概只有ASIC流程的50%-70%。最頭大的流片過程,FPGA是不需要的。

這就意味著,開發ASIC,可能需要幾個月甚至一年以上的時間。而FPGA,只需要幾周或幾個月的時間。

剛才說到FPGA不需要流片,那麼,是不是意味著FPGA的成本就一定比ASIC低呢?

不一定。

FPGA可以在實驗室或現場進行預製和程式設計,不需要一次性工程費用 (NRE)。但是,作為「通用玩具」,它的成本是ASIC(壓模玩具)的10倍。

如果生產量比較低,那麼,FPGA會更便宜。如果生產量高,ASIC的一次性工程費用被平攤,那麼,ASIC反而便宜。

這就像開模費用。開模很貴,但是,如果銷量大,開模就划算了。

如下圖所示,40W片,是ASIC和FPGA成本高低的一個分界線。產量少於40W,FPGA便宜。多於40W,ASIC便宜。

從性能和功耗的角度來看,作為專用定製晶片,ASIC是比FPGA強的。

FPGA是通用可編輯的晶片,冗餘功能比較多。不管你怎麼設計,都會多出來一些部件。

前面小棗君也說了,ASIC是貼身定製,沒什麼浪費,且採用硬連線。所以,性能更強,功耗更低。

FPGA和ASIC,不是簡單的競爭和替代關係,而是各自的定位不同。

FPGA現在多用於產品原型的開發、設計迭代,以及一些低產量的特定應用。它適合那些開發週期必須短的產品。FPGA還經常用於ASIC的驗證。

ASIC用於設計規模大、複雜度高的晶片,或者是成熟度高、產量比較大的產品。

FPGA還特別適合初學者學習和參加比賽。現在很多大學的電子類專業,都在使用FPGA進行教學。

從商業化的角度來看,FPGA的主要應用領域是通訊、國防、航空、資料中心、醫療、汽車及消費電子。

FPGA在通訊領域用得很早。很多基站的處理晶片(基帶處理、波束賦形、天線收發器等),都是用的FPGA。核心網的編碼和協議加速等,也用到它。資料中心之前在DPU等部件上,也用。

後來,很多技術成熟了、定型了,通訊設備商們就開始用ASIC替代,以此減少成本。

值得一提的是,最近這些年很熱門的Open RAN,其實很多都是採用通用處理器(Intel CPU)進行計算。這種方案的能耗遠遠不如FPGA和ASIC。這也是包括華為等設備商不願意跟進Open RAN的主要原因之一。

汽車和工業領域,主要是看中了FPGA的時延優勢,所以會用在ADAS(高級駕駛輔助系統)和伺服電機驅動上。

消費電子用FPGA,是因為產品迭代太快。ASIC的開發週期太長了,等做出東西來,黃花菜都涼了。

█FPGA、ASIC、GPU,誰是最合適的AI晶片?

首先,單純從理論和架構的角度,ASIC和FPGA的性能和成本,肯定是優於CPU和GPU的。

CPU、GPU遵循的是馮·諾依曼體系結構,指令要經過儲存、譯碼、執行等步驟,共享記憶體在使用時,要經歷仲裁和快取。

而FPGA和ASIC並不是馮·諾依曼架構(是哈佛架構)。以FPGA為例,它本質上是無指令、無需共享記憶體的體系結構。

FPGA的邏輯單元功能在程式設計時已確定,屬於用硬體來實現軟體演算法。對於保存狀態的需求,FPGA中的暫存器和片上記憶體(BRAM)屬於各自的控制邏輯,不需要仲裁和快取。

從ALU運算單元佔比來看,GPU比CPU高,FPGA因為幾乎沒有控制模組,所有模組都是ALU運算單元,比GPU更高。

所以,綜合各個角度,FPGA的運算速度會比GPU更快。

再看看功耗方面。

GPU的功耗,是出了名的高,單片可以達到250W,甚至450W(RTX4090)。而FPGA呢,一般只有30~50W。

這主要是因為記憶體讀取。GPU的記憶體接口(GDDR5、HBM、HBM2)頻寬極高,大約是FPGA傳統DDR接口的4-5倍。但就晶片本身來說,讀取DRAM所消耗的能量,是SRAM的100倍以上。GPU頻繁讀取DRAM的處理,產生了極高的功耗。

另外,FPGA的工作主頻(500MHz以下)比CPU、GPU(1~3GHz)低,也會使得自身功耗更低。FPGA的工作主頻低,主要是受佈線資源的限制。有些線要繞遠,時脈頻率高了,就來不及。

最後看看時延。

GPU時延高於FPGA。

GPU通常需要將不同的訓練樣本,劃分成固定大小的「Batch(批次)」,為了最大化達到並行性,需要將數個Batch都集齊,再統一進行處理。

FPGA的架構,是無批次(Batch-less)的。每處理完成一個資料包,就能馬上輸出,時延更有優勢。

那麼,問題來了。GPU這裡那裡都不如FPGA和ASIC,為什麼還會成為現在AI計算的大熱門呢?

很簡單,在對算力性能和規模的極致追求下,現在整個行業根本不在乎什麼成本和功耗。

在英偉達的長期努力下,GPU的核心數和工作頻率一直在提升,晶片面積也越來越大,屬於硬剛算力。功耗靠工藝製程,靠水冷等被動散熱,反而不著火就行。

他們搗鼓出來的CUDA,是GPU的一個核心競爭力。基於CUDA,初學者都可以很快上手,進行GPU的開發。他們苦心經營多年,也形成了群眾基礎。

相比之下,FPGA和ASIC的開發還是太過複雜,不適合普及。

在接口方面,雖然GPU的接口比較單一(主要是PCIe),沒有FPGA靈活(FPGA的可程式設計性,使其能輕鬆對接任何的標準和非標準接口),但對於伺服器來說,足夠了,插上就能用。

除了FPGA之外,ASIC之所以在AI上幹不過GPU,和它的高昂成本、超長開發週期、巨大開發風險有很大關係。現在AI演算法變化很快,ASIC這種開發週期,很要命。

綜合上述原因,GPU才有了現在的大好局面。

在AI訓練上,GPU的算力強勁,可以大幅提升效率。

在AI推理上,輸入一般是單個對象(圖像),所以要求要低一點,也不需要什麼並行,所以GPU的算力優勢沒那麼明顯。很多企業,就會開始採用更便宜、更省電的FPGA或ASIC,進行計算。

其它一些算力場景,也是如此。看重算力絕對性能的,首選GPU。算力性能要求不那麼高的,可以考慮FPGA或ASIC,能省則省。

█最後的話

關於CPU、GPU、FPGA、ASIC的知識,就介紹到這裡了。

它們是計算晶片的典型代表。人類目前所有的算力場景,基本上都是由它們在負責。

隨著時代的發展,計算晶片也有了新的趨勢。例如,不同算力晶片進行混搭,互相利用優勢。我們管這種方式,叫做異構計算。

另外,還有IBM帶頭搞的類腦晶片,類似於大腦的神經突觸,模擬人腦的處理過程,也獲得了突破,熱度攀升。以後有機會,我再和大家專門介紹。

— The End —

參考文獻:

1、《一文搞懂GPU的概念、工作原理》,開源LINUX;

2、《AI晶片架構體系綜述》,知乎,Garvin Li;

3、《GPU、FPGA、ASIC加速器有什麼區別?》,知乎,胡說漫談;

4、《帶你深入了解GPU、FPGA和ASIC》,汽車產業前線觀察;

5、《為什麼GPU是AI時代的算力核心》,沐曦積體電路;

6、《一文通覽自動駕駛三大主流晶片架構》,數字化轉型;

7、《AIGC算力全景與趨勢報告》,量子位;

8、百度百科、維基百科。

Source

Visited 8 times, 1 visit(s) today
Subscribe
Notify of
guest
0 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x