上一篇文章(鏈接),小棗君給大家介紹了 CPU 和 GPU。今天,我繼續(xù)介紹計算芯片領(lǐng)域的另外兩位主角 ——ASIC 和 FPGA。
█ ASIC(專用集成電路)
上篇提到,GPU 的并行算力能力很強,但是它也有缺點,就是功耗高,體積大,價格貴。
進(jìn)入 21 世紀(jì)后,算力需求呈現(xiàn)兩個顯著趨勢:一,算力的使用場景,開始細(xì)分;二,用戶對算力性能的要求,越來越高。通用的算力芯片,已經(jīng)無法滿足用戶的需求。
于是,越來越多的企業(yè),開始加強對專用計算芯片的研究和投資力度。而 ASIC(Application Specific Integrated Circuit,專用集成電路),就是一種專用于特定任務(wù)的芯片。
ASIC 的官方定義,是指:應(yīng)特定用戶的要求,或特定電子系統(tǒng)的需要,專門設(shè)計、制造的集成電路。
ASIC 起步于上世紀(jì) 70-80 年代。早期的時候,曾用于計算機(jī)。后來,主要用于嵌入式控制。這幾年,如前面所說,開始崛起,用于 AI 推理、高速搜索以及視覺和圖像處理等。
說到 ASIC,我們就不得不提到 Google 公司大名鼎鼎的 TPU。
TPU,全稱 Tensor Processing Unit,張量處理單元。所謂“張量(tensor)”,是一個包含多個數(shù)字(多維數(shù)組)的數(shù)學(xué)實體。
目前,幾乎所有的機(jī)器學(xué)習(xí)系統(tǒng),都使用張量作為基本數(shù)據(jù)結(jié)構(gòu)。所以,張量處理單元,我們可以簡單理解為“AI 處理單元”。
2015 年,為了更好地完成自己的深度學(xué)習(xí)任務(wù),提升 AI 算力,Google 推出了一款專門用于神經(jīng)網(wǎng)絡(luò)訓(xùn)練的芯片,也就是 TPU v1。
相比傳統(tǒng)的 CPU 和 GPU,在神經(jīng)網(wǎng)絡(luò)計算方面,TPU v1 可以獲得 15~30 倍的性能提升,能效提升更是達(dá)到 30~80 倍,給行業(yè)帶來了很大震動。
2017 年和 2018 年,Google 又再接再厲,推出了能力更強的 TPU v2 和 TPU v3,用于 AI 訓(xùn)練和推理。2021 年,他們推出了 TPU v4,采用 7nm 工藝,晶體管數(shù)達(dá)到 220 億,性能相較上代提升了 10 倍,比英偉達(dá)的 A100 還強 1.7 倍。
除了 Google 之外,還有很多大廠這幾年也在搗鼓 ASIC。
英特爾公司在 2019 年底收購了以色列 AI 芯片公司 Habana Labs,2022 年,發(fā)布了 Gaudi 2 ASIC 芯片。IBM 研究院,則于 2022 年底,發(fā)布了 AI ASIC 芯片 AIU。
三星早幾年也搞過 ASIC,當(dāng)時做的是礦機(jī)專用芯片。沒錯,很多人認(rèn)識 ASIC,就是從比特幣挖礦開始的。相比 GPU 和 CPU 挖礦,ASIC 礦機(jī)的效率更高,能耗更低。
除了 TPU 和礦機(jī)之外,另外兩類很有名的 ASIC 芯片,是 DPU 和 NPU。
DPU 是數(shù)據(jù)處理單元(Data Processing Unit),主要用于數(shù)據(jù)中心。小棗君之前曾經(jīng)專門介紹過,可以看這里:火遍全網(wǎng)的 DPU,到底是個啥?
NPU 的話,叫做神經(jīng)網(wǎng)絡(luò)處理單元(Neural Processing Unit),在電路層模擬人類神經(jīng)元和突觸,并用深度學(xué)習(xí)指令集處理數(shù)據(jù)。
NPU 專門用于神經(jīng)網(wǎng)絡(luò)推理,能夠?qū)崿F(xiàn)高效的卷積、池化等操作。一些手機(jī)芯片里,經(jīng)常集成這玩意。
說到手機(jī)芯片,值得一提的是,我們手機(jī)現(xiàn)在的主芯片,也就是常說的 SoC 芯片,其實也是一種 ASIC 芯片。
ASIC 作為專門的定制芯片,優(yōu)點體現(xiàn)在哪里?只是企業(yè)獨享,專用 logo 和命名?
不是的。
定制就是量體裁衣?;谛酒嫦虻膶m椚蝿?wù),芯片的計算能力和計算效率都是嚴(yán)格匹配于任務(wù)算法的。芯片的核心數(shù)量,邏輯計算單元和控制單元比例,以及緩存等,整個芯片架構(gòu),也是精確定制的。
所以,定制專用芯片,可以實現(xiàn)極致的體積、功耗。這類芯片的可靠性、保密性、算力、能效,都會比通用芯片(CPU、GPU)更強。
大家會發(fā)現(xiàn),前面我們提到的幾家 ASIC 公司,都是谷歌、英特爾、IBM、三星這樣的大廠。
這是因為,對芯片進(jìn)行定制設(shè)計,對一家企業(yè)的研發(fā)技術(shù)水平要求極高,且耗資極為巨大。
做一款 ASIC 芯片,首先要經(jīng)過代碼設(shè)計、綜合、后端等復(fù)雜的設(shè)計流程,再經(jīng)過幾個月的生產(chǎn)加工以及封裝測試,才能拿到芯片來搭建系統(tǒng)。
大家都聽說過“流片(Tape-out)”。像流水線一樣,通過一系列工藝步驟制造芯片,就是流片。簡單來說,就是試生產(chǎn)。
ASIC 的研發(fā)過程是需要流片的。14nm 工藝,流片一次需要 300 萬美元左右。5nm 工藝,更是高達(dá) 4725 萬美元。
流片一旦失敗,錢全部打水漂,還耽誤了大量的時間和精力。一般的小公司,根本玩不起。
那么,是不是小公司就無法進(jìn)行芯片定制了呢?
當(dāng)然不是。接下來,就輪到另一個神器出場了,那就是 ——FPGA。
█ FPGA(現(xiàn)場可編程門陣列)
FPGA,英文全稱 Field Programmable Gate Array,現(xiàn)場可編程門陣列。
FPGA 這些年在行業(yè)里很火,勢頭比 ASIC 還猛,甚至被人稱為“萬能芯片”。
其實,簡單來說,F(xiàn)PGA 就是可以重構(gòu)的芯片。它可以根據(jù)用戶的需要,在制造后,進(jìn)行無限次數(shù)的重復(fù)編程,以實現(xiàn)想要的數(shù)字邏輯功能。
之所以 FPGA 可以實現(xiàn) DIY,是因為其獨特的架構(gòu)。
FPGA 由可編程邏輯塊(Configurable Logic Blocks,CLB)、輸入 / 輸出模塊(I / O Blocks,IOB)、可編程互連資源(Programmable Interconnect Resources,PIR)等三種可編程電路,以及靜態(tài)存儲器 SRAM 共同組成。
CLB 是 FPGA 中最重要的部分,是實現(xiàn)邏輯功能的基本單元,承載主要的電路功能。
它們通常規(guī)則排列成一個陣列(邏輯單元陣列,LCA,Logic Cell Array),散布于整個芯片中。
IOB 主要完成芯片上的邏輯與外部引腳的接口,通常排列在芯片的四周。
PIR 提供了豐富的連線資源,包括縱橫網(wǎng)狀連線、可編程開關(guān)矩陣和可編程連接點等。它們實現(xiàn)連接的作用,構(gòu)成特定功能的電路。
靜態(tài)存儲器 SRAM,用于存放內(nèi)部 IOB、CLB 和 PIR 的編程數(shù)據(jù),并形成對它們的控制,從而完成系統(tǒng)邏輯功能。
CLB 本身,又主要由查找表(Look-Up Table,LUT)、多路復(fù)用器(Multiplexer)和觸發(fā)器(Flip-Flop)構(gòu)成。它們用于承載電路中的一個個邏輯“門”,可以用來實現(xiàn)復(fù)雜的邏輯功能。
簡單來說,我們可以把 LUT 理解為存儲了計算結(jié)果的 RAM。當(dāng)用戶描述了一個邏輯電路后,軟件會計算所有可能的結(jié)果,并寫入這個 RAM。每一個信號進(jìn)行邏輯運算,就等于輸入一個地址,進(jìn)行查表。LUT 會找出地址對應(yīng)的內(nèi)容,返回結(jié)果。
這種“硬件化”的運算方式,顯然具有更快的運算速度。
用戶使用 FPGA 時,可以通過硬件描述語言(Verilog 或 VHDL),完成的電路設(shè)計,然后對 FPGA 進(jìn)行“編程”(燒寫),將設(shè)計加載到 FPGA 上,實現(xiàn)對應(yīng)的功能。
加電時,F(xiàn)PGA 將 EPROM(可擦編程只讀存儲器)中的數(shù)據(jù)讀入 SRAM 中,配置完成后,F(xiàn)PGA 進(jìn)入工作狀態(tài)。掉電后,F(xiàn)PGA 恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失。如此反復(fù),就實現(xiàn)了“現(xiàn)場”定制。
FPGA 的功能非常強大。理論上,如果 FPGA 提供的門電路規(guī)模足夠大,通過編程,就能夠?qū)崿F(xiàn)任意 ASIC 的邏輯功能。
我們再看看 FPGA 的發(fā)展歷程。
FPGA 是在 PAL(可編程陣列邏輯)、GAL(通用陣列邏輯)等可編程器件的基礎(chǔ)上發(fā)展起來的產(chǎn)物,屬于一種半定制電路。
它誕生于 1985 年,發(fā)明者是 Xilinx 公司(賽靈思)。后來,Altera(阿爾特拉)、Lattice(萊迪思)、Microsemi(美高森美)等公司也參與到 FPGA 這個領(lǐng)域,并最終形成了四巨頭的格局。
2015 年 5 月,Intel(英特爾)以 167 億美元的天價收購了 Altera,后來收編為 PSG(可編程解決方案事業(yè)部)部門。
2020 年,Intel 的競爭對手 AMD 也不甘示弱,以 350 億美元收購了 Xilinx。
于是,就變成了 Xilinx(AMD 旗下)、Intel、Lattice 和 Microsemi 四巨頭(換湯不換藥)。
2021 年,這四家公司的市占率分別為 51%、29%、7% 和 6%,加起來是全球總份額的 93%。
不久前,2023 年 10 月,Intel 宣布計劃拆分 PSG 部門,獨立業(yè)務(wù)運營。
國內(nèi) FPGA 廠商的話,包括復(fù)旦微電、紫光國微、安路科技、東土科技、高云半導(dǎo)體、京微齊力、京微雅格、智多晶、遨格芯等??瓷先?shù)量不少,但實際上技術(shù)差距很大。
█ ASIC 和 FPGA 的區(qū)別
接下來,我們重點說說 ASIC 和 FPGA 的區(qū)別,還有它們和 CPU、GPU 之間的區(qū)別。
ASIC 和 FPGA,本質(zhì)上都是芯片。AISC 是全定制芯片,功能寫死,沒辦法改。而 FPGA 是半定制芯片,功能靈活,可玩性強。
我們還是可以通過一個例子,來說明兩者之間的區(qū)別。
ASIC 就是用模具來做玩具。事先要進(jìn)行開模,比較費事。而且,一旦開模之后,就沒辦法修改了。如果要做新玩具,就必須重新開模。
而 FPGA 呢,就像用樂高積木來搭玩具。上手就能搭,花一點時間,就可以搭好。如果不滿意,或者想搭新玩具,可以拆開,重新搭。
ASIC 與 FPGA 的很多設(shè)計工具是相同的。在設(shè)計流程上,F(xiàn)PGA 沒有 ASIC 那么復(fù)雜,去掉了一些制造過程和額外的設(shè)計驗證步驟,大概只有 ASIC 流程的 50%-70%。最頭大的流片過程,F(xiàn)PGA 是不需要的。
這就意味著,開發(fā) ASIC,可能需要幾個月甚至一年以上的時間。而 FPGA,只需要幾周或幾個月的時間。
剛才說到 FPGA 不需要流片,那么,是不是意味著 FPGA 的成本就一定比 ASIC 低呢?
不一定。
FPGA 可以在實驗室或現(xiàn)場進(jìn)行預(yù)制和編程,不需要一次性工程費用 (NRE)。但是,作為“通用玩具”,它的成本是 ASIC(壓模玩具)的 10 倍。
如果生產(chǎn)量比較低,那么,F(xiàn)PGA 會更便宜。如果生產(chǎn)量高,ASIC 的一次性工程費用被平攤,那么,ASIC 反而便宜。
這就像開模費用。開模很貴,但是,如果銷量大,開模就劃算了。
如下圖所示,40W 片,是 ASIC 和 FPGA 成本高低的一個分界線。產(chǎn)量少于 40W,F(xiàn)PGA 便宜。多于 40W,ASIC 便宜。
從性能和功耗的角度來看,作為專用定制芯片,ASIC 是比 FPGA 強的。
FPGA 是通用可編輯的芯片,冗余功能比較多。不管你怎么設(shè)計,都會多出來一些部件。
前面小棗君也說了,ASIC 是貼身定制,沒什么浪費,且采用硬連線。所以,性能更強,功耗更低。
FPGA 和 ASIC,不是簡單的競爭和替代關(guān)系,而是各自的定位不同。
FPGA 現(xiàn)在多用于產(chǎn)品原型的開發(fā)、設(shè)計迭代,以及一些低產(chǎn)量的特定應(yīng)用。它適合那些開發(fā)周期必須短的產(chǎn)品。FPGA 還經(jīng)常用于 ASIC 的驗證。
ASIC 用于設(shè)計規(guī)模大、復(fù)雜度高的芯片,或者是成熟度高、產(chǎn)量比較大的產(chǎn)品。
FPGA 還特別適合初學(xué)者學(xué)習(xí)和參加比賽?,F(xiàn)在很多大學(xué)的電子類專業(yè),都在使用 FPGA 進(jìn)行教學(xué)。
從商業(yè)化的角度來看,F(xiàn)PGA 的主要應(yīng)用領(lǐng)域是通信、國防、航空、數(shù)據(jù)中心、醫(yī)療、汽車及消費電子。
FPGA 在通信領(lǐng)域用得很早。很多基站的處理芯片(基帶處理、波束賦形、天線收發(fā)器等),都是用的 FPGA。核心網(wǎng)的編碼和協(xié)議加速等,也用到它。數(shù)據(jù)中心之前在 DPU 等部件上,也用。
后來,很多技術(shù)成熟了、定型了,通信設(shè)備商們就開始用 ASIC 替代,以此減少成本。
值得一提的是,最近這些年很熱門的 Open RAN,其實很多都是采用通用處理器(Intel CPU)進(jìn)行計算。這種方案的能耗遠(yuǎn)遠(yuǎn)不如 FPGA 和 ASIC。這也是包括華為等設(shè)備商不愿意跟進(jìn) Open RAN 的主要原因之一。
汽車和工業(yè)領(lǐng)域,主要是看中了 FPGA 的時延優(yōu)勢,所以會用在 ADAS(高級駕駛輔助系統(tǒng))和伺服電機(jī)驅(qū)動上。
消費電子用 FPGA,是因為產(chǎn)品迭代太快。ASIC 的開發(fā)周期太長了,等做出東西來,黃花菜都涼了。
█ FPGA、ASIC、GPU,誰是最合適的 AI 芯片?
最后,我們還是要繞回到 AI 芯片的話題。
上一期,小棗君埋了一個雷,說 AI 計算分訓(xùn)練和推理。訓(xùn)練是 GPU 處于絕對領(lǐng)先地位,而推理不是。我沒有說原因。
現(xiàn)在,我來解釋一下。
首先,大家要記住,單純從理論和架構(gòu)的角度,ASIC 和 FPGA 的性能和成本,肯定是優(yōu)于 CPU 和 GPU 的。
CPU、GPU 遵循的是馮?諾依曼體系結(jié)構(gòu),指令要經(jīng)過存儲、譯碼、執(zhí)行等步驟,共享內(nèi)存在使用時,要經(jīng)歷仲裁和緩存。
而 FPGA 和 ASIC 并不是馮?諾依曼架構(gòu)(是哈佛架構(gòu))。以 FPGA 為例,它本質(zhì)上是無指令、無需共享內(nèi)存的體系結(jié)構(gòu)。
FPGA 的邏輯單元功能在編程時已確定,屬于用硬件來實現(xiàn)軟件算法。對于保存狀態(tài)的需求,F(xiàn)PGA 中的寄存器和片上內(nèi)存(BRAM)屬于各自的控制邏輯,不需要仲裁和緩存。
從 ALU 運算單元占比來看,GPU 比 CPU 高,F(xiàn)PGA 因為幾乎沒有控制模塊,所有模塊都是 ALU 運算單元,比 GPU 更高。
所以,綜合各個角度,F(xiàn)PGA 的運算速度會比 GPU 更快。
再看看功耗方面。
GPU 的功耗,是出了名的高,單片可以達(dá)到 250W,甚至 450W(RTX4090)。而 FPGA 呢,一般只有 30~50W。
這主要是因為內(nèi)存讀取。GPU 的內(nèi)存接口(GDDR5、HBM、HBM2)帶寬極高,大約是 FPGA 傳統(tǒng) DDR 接口的 4-5 倍。但就芯片本身來說,讀取 DRAM 所消耗的能量,是 SRAM 的 100 倍以上。GPU 頻繁讀取 DRAM 的處理,產(chǎn)生了極高的功耗。
另外,F(xiàn)PGA 的工作主頻(500MHz 以下)比 CPU、GPU(1~3GHz)低,也會使得自身功耗更低。FPGA 的工作主頻低,主要是受布線資源的限制。有些線要繞遠(yuǎn),時鐘頻率高了,就來不及。
最后看看時延。
GPU 時延高于 FPGA。
GPU 通常需要將不同的訓(xùn)練樣本,劃分成固定大小的“Batch(批次)”,為了最大化達(dá)到并行性,需要將數(shù)個 Batch 都集齊,再統(tǒng)一進(jìn)行處理。
FPGA 的架構(gòu),是無批次(Batch-less)的。每處理完成一個數(shù)據(jù)包,就能馬上輸出,時延更有優(yōu)勢。
那么,問題來了。GPU 這里那里都不如 FPGA 和 ASIC,為什么還會成為現(xiàn)在 AI 計算的大熱門呢?
很簡單,在對算力性能和規(guī)模的極致追求下,現(xiàn)在整個行業(yè)根本不在乎什么成本和功耗。
在英偉達(dá)的長期努力下,GPU 的核心數(shù)和工作頻率一直在提升,芯片面積也越來越大,屬于硬剛算力。功耗靠工藝制程,靠水冷等被動散熱,反而不著火就行。
除了硬件之外,上篇文章小棗君也提到,英偉達(dá)在軟件和生態(tài)方面很會布局。
他們搗鼓出來的 CUDA,是 GPU 的一個核心競爭力。基于 CUDA,初學(xué)者都可以很快上手,進(jìn)行 GPU 的開發(fā)。他們苦心經(jīng)營多年,也形成了群眾基礎(chǔ)。
相比之下,F(xiàn)PGA 和 ASIC 的開發(fā)還是太過復(fù)雜,不適合普及。
在接口方面,雖然 GPU 的接口比較單一(主要是 PCIe),沒有 FPGA 靈活(FPGA 的可編程性,使其能輕松對接任何的標(biāo)準(zhǔn)和非標(biāo)準(zhǔn)接口),但對于服務(wù)器來說,足夠了,插上就能用。
除了 FPGA 之外,ASIC 之所以在 AI 上干不過 GPU,和它的高昂成本、超長開發(fā)周期、巨大開發(fā)風(fēng)險有很大關(guān)系?,F(xiàn)在 AI 算法變化很快,ASIC 這種開發(fā)周期,很要命。
綜合上述原因,GPU 才有了現(xiàn)在的大好局面。
在 AI 訓(xùn)練上,GPU 的算力強勁,可以大幅提升效率。
在 AI 推理上,輸入一般是單個對象(圖像),所以要求要低一點,也不需要什么并行,所以 GPU 的算力優(yōu)勢沒那么明顯。很多企業(yè),就會開始采用更便宜、更省電的 FPGA 或 ASIC,進(jìn)行計算。
其它一些算力場景,也是如此??粗厮懔^對性能的,首選 GPU。算力性能要求不那么高的,可以考慮 FPGA 或 ASIC,能省則省。
█ 最后的話
關(guān)于 CPU、GPU、FPGA、ASIC 的知識,就介紹到這里了。
它們是計算芯片的典型代表。人類目前所有的算力場景,基本上都是由它們在負(fù)責(zé)。
隨著時代的發(fā)展,計算芯片也有了新的趨勢。例如,不同算力芯片進(jìn)行混搭,互相利用優(yōu)勢。我們管這種方式,叫做異構(gòu)計算。另外,還有 IBM 帶頭搞的類腦芯片,類似于大腦的神經(jīng)突觸,模擬人腦的處理過程,也獲得了突破,熱度攀升。以后有機(jī)會,我再和大家專門介紹。
希望小棗君的芯片系列文章對大家有所幫助。喜歡的話,求關(guān)注,求轉(zhuǎn)發(fā),求點贊。
感謝!
參考文獻(xiàn):
1、《一文搞懂 GPU 的概念、工作原理》,開源 LINUX;
2、《AI 芯片架構(gòu)體系綜述》,知乎,Garvin Li;
3、《GPU、FPGA、ASIC 加速器有什么區(qū)別?》,知乎,胡說漫談;
4、《帶你深入了解 GPU、FPGA 和 ASIC》,汽車產(chǎn)業(yè)前線觀察;
5、《為什么 GPU 是 AI 時代的算力核心》,沐曦集成電路;
6、《一文通覽自動駕駛?cè)笾髁餍酒軜?gòu)》,數(shù)字化轉(zhuǎn)型;
7、《AIGC 算力全景與趨勢報告》,量子位;
8、百度百科、維基百科。
本文來自微信公眾號:鮮棗課堂 (ID:xzclasscom),作者:小棗君
廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。