半導體晶片通常分為數字晶片和模擬晶片。其中,數字晶片的市場規模佔比較大,達到70%左右。
數字晶片,還可以進一步細分,分為:邏輯晶片、儲存晶片以及微控制單元(MCU)。
邏輯晶片,其實說白了就是計算晶片。它包含了各種邏輯閘電路,可以實現運算與邏輯判斷功能,是最常見的晶片之一。
大家經常聽說的CPU、GPU、FPGA、ASIC,全部都屬於邏輯晶片。而現在特別火爆的AI,用到的所謂「AI晶片」,也主要是指它們。
█CPU(中央處理器)
先說說大家最熟悉的CPU,英文全稱Central Processing Unit,中央處理器。
CPU
但凡是個人都知道,CPU是計算機的心臟。
現代計算機,都是基於1940年代誕生的馮·諾依曼架構。在這個架構中,包括了運算器(也叫邏輯運算單元,ALU)、控制器(CU)、儲存器、輸入設備、輸出設備等組成部分。
馮·諾依曼架構
資料來了,會先放到儲存器。然後,控制器會從儲存器拿到相應資料,再交給運算器進行運算。運算完成後,再把結果返回到儲存器。
運算器和控制器這兩個核心功能,都是由CPU負責承擔的。
具體來說,運算器(包括加法器、減法器、乘法器、除法器),負責執行算術和邏輯運算,是真正幹活的。控制器,負責從記憶體中讀取指令、解碼指令、執行指令,是指手畫腳的。
除了運算器和控制器之外,CPU還包括時鐘模組和暫存器(高速快取)等元件。
時鐘模組負責管理CPU的時間,為CPU提供穩定的時基。它通過週期性地發出信號,驅動CPU中的所有操作,排程各個模組的工作。
暫存器是CPU中的高速儲存器,用於暫時保存指令和資料。它的CPU與記憶體(RAM)之間的「緩衝」,速度比一般的記憶體更快,避免記憶體「拖累」CPU的工作。
暫存器的容量和存取性能,可以影響CPU到對記憶體的訪問次數,進而影響整個系統的效率。後面我們講儲存晶片的時候,還會提到它。
CPU一般會基於指令集架構進行分類,包括x86架構和非x86架構。x86基本上都是複雜指令集(CISC),而非x86基本為精簡指令集(RISC)。
PC和大部分伺服器用的是x86架構,英特爾和AMD公司佔據主導地位。非x86架構的類型比較多,這些年崛起速度很快,主要有ARM、MIPS、Power、RISC-V、Alpha等。以後會專門介紹。
█GPU(圖形處理器)
再來看看GPU。
GPU是顯示卡的核心部件,英文全名叫Graphics Processing Unit,圖形處理單元(圖形處理器)。
GPU並不能和顯示卡劃等號。顯示卡除了GPU之外,還包括視訊記憶體、VRM穩壓模組、MRAM晶片、總線、風扇、外圍設備接口等。
顯示卡
1999年,英偉達(NVIDIA)公司率先提出了GPU的概念。
之所以要提出GPU,是因為90年代遊戲和多媒體業務高速發展。這些業務給計算機的3D圖形處理和渲染能力提出了更高的要求。傳統CPU搞不定,所以引入了GPU,分擔這方面的工作。
根據形態,GPU可分為獨立GPU(dGPU,discrete/dedicated GPU)和集成GPU(iGPU,integrated GPU),也就是常說的獨顯、集顯。
GPU也是計算晶片。所以,它和CPU一樣,包括了運算器、控制器和暫存器等元件。
但是,因為GPU主要負責圖形處理任務,所以,它的內部架構和CPU存在很大的不同。
如上圖所示,CPU的核心(包括了ALU)數量比較少,最多只有幾十個。但是,CPU有大量的快取(Cache)和複雜的控制器(CU)。
這樣設計的原因,是因為CPU是一個通用處理器。作為計算機的主核心,它的任務非常複雜,既要應對不同類型的資料計算,還要響應人機互動。
複雜的條件和分支,還有任務之間的同步協調,會帶來大量的分支跳轉和中斷處理工作。它需要更大的快取,保存各種任務狀態,以降低任務切換時的時延。它也需要更復雜的控制器,進行邏輯控制和排程。
CPU的強項是管理和排程。真正幹活的功能,反而不強(ALU佔比大約5%~20%)。
如果我們把處理器看成是一個餐廳的話,CPU就像一個擁有幾十名高級廚師的全能型餐廳。這個餐廳什麼菜系都能做,但是,因為菜系多,所以需要花費大量的時間協調、配菜,上菜的速度相對比較慢。
而GPU則完全不同。
GPU為圖形處理而生,任務非常明確且單一。它要做的,就是圖形渲染。圖形是由海量像素點組成的,屬於類型高度統一、相互無依賴的大規模資料。
所以,GPU的任務,是在最短的時間裡,完成大量同質化資料的並行運算。所謂排程和協調的「雜活」,反而很少。
平行計算,當然需要更多的核啊。
如前圖所示,GPU的核心數,遠遠超過CPU,可以達到幾千個甚至上萬個(也因此被稱為「眾核」)。
RTX4090有16384個流處理器
GPU的核,稱為流式多處理器(Stream Multi-processor,SM),是一個獨立的任務處理單元。
在整個GPU中,會劃分為多個流式處理區。每個處理區,包含數百個核心。每個核心,相當於一顆簡化版的CPU,具備整數運算和浮點運算的功能,以及排隊和結果收集功能。
GPU的控制器功能簡單,快取也比較少。它的ALU佔比,可以達到80%以上。
雖然GPU單核的處理能力弱於CPU,但是數量龐大,非常適合高強度平行計算。同等電晶體規模條件下,它的算力,反而比CPU更強。
還是以餐廳為例。GPU就像一個擁有成千上萬名初級廚師的單一型餐廳。它只適合做某種指定菜系。但是,因為廚師多,配菜簡單,所以大家一起炒,上菜速度反而快。
CPU vs GPU
█GPU與AI計算
大家都知道,現在的AI計算,都在搶購GPU。英偉達也因此賺得盆滿缽滿。為什麼會這樣呢?
原因很簡單,因為AI計算和圖形計算一樣,也包含了大量的高強度平行計算任務。
深度學習是目前最主流的人工智慧演算法。從過程來看,包括訓練(training)和推理(inference)兩個環節。
在訓練環節,通過投餵大量的資料,訓練出一個複雜的神經網路模型。在推理環節,利用訓練好的模型,使用大量資料推理出各種結論。
訓練環節由於涉及海量的訓練資料,以及複雜的深度神經網路結構,所以需要的計算規模非常龐大,對晶片的算力性能要求比較高。而推理環節,對簡單指定的重複計算和低延遲的要求很高。
它們所採用的具體演算法,包括矩陣相乘、卷積、循環層、梯度運算等,分解為大量並行任務,可以有效縮短任務完成的時間。
GPU憑藉自身強悍的平行計算能力以及記憶體頻寬,可以很好地應對訓練和推理任務,已經成為業界在深度學習領域的首選解決方案。
目前,大部分企業的AI訓練,採用的是英偉達的GPU集群。如果進行合理最佳化,一塊GPU卡,可以提供相當於數十其至上百臺CPU伺服器的算力。
NVIDIA HGX A100 8 GPU 元件
不過,在推理環節,GPU的市場份額佔比並沒有那麼高。具體原因我們後面會講。
將GPU應用於圖形之外的計算,最早源於2003年。
那一年,GPGPU(General Purpose computing on GPU,基於GPU的通用計算)的概念首次被提出。意指利用GPU的計算能力,在非圖形處理領域進行更通用、更廣泛的科學計算。
GPGPU在傳統GPU的基礎上,進行了進一步的最佳化設計,使之更適合高性能平行計算。
2009年,史丹佛的幾位學者,首次展示了利用GPU訓練深度神經網路的成果,引起了轟動。
幾年後,2012年,神經網路之父傑弗裡·辛頓(Geoffrey Hinton)的兩個學生——亞歷克斯·克里切夫斯基(Alex Krizhevsky)、伊利亞·蘇茨克沃(Ilya Sutskever),利用「深度學習+GPU」的方案,提出了深度神經網路AlexNet,將識別成功率從74%提升到85%,一舉贏得Image Net挑戰賽的冠軍。
左起:伊利亞·蘇茨克沃,亞歷克斯·克里切夫斯基,傑弗裡·辛頓
這徹底引爆了「AI+GPU」的浪潮。英偉達公司迅速跟進,砸了大量的資源,在三年時間裡,將GPU性能提升了65倍。
除了硬剛算力之外,他們還積極構建圍繞GPU的開發生態。他們建立了基於自家GPU的CUDA(Compute Unified Device Architecture)生態系統,提供完善的開發環境和方案,幫助開發人員更容易地使用GPU進行深度學習開發或高性能運算。
這些早期的精心佈局,最終幫助英偉達在AIGC爆發時收穫了巨大的紅利。目前,他們市值高達1.22萬億美元(英特爾的近6倍),是名副其實的「AI無冕之王」。
參考文獻:
1、《一文搞懂GPU的概念、工作原理》,開源LINUX;
2、《AI晶片架構體系綜述》,知乎,Garvin Li;
3、《GPU、FPGA、ASIC加速器有什麼區別?》,知乎,胡說漫談;
4、《帶你深入了解GPU、FPGA和ASIC》,汽車產業前線觀察;
5、《為什麼GPU是AI時代的算力核心》,沐曦積體電路;
6、《一文通覽自動駕駛三大主流晶片架構》,數字化轉型;
7、《AIGC算力全景與趨勢報告》,量子位;
8、百度百科、維基百科。