CPU、GPU、NPU等芯片架構、特點研究


概述

隨着人工智能的熱潮和AI算法的廣泛應用,深度學習已成為當前AI研究的重點,在自動駕駛領域,環境感知、傳感器融合、控制決策等等都會多少涉及到深度學習,而自動駕駛性能的優劣直接和AI算法相關,說白了就是深度學習算法的優劣。要想在面對海量數據的並行運算的同時做到高效、可靠,那就意味着承載AI算法的計算平台需要提供足夠的性能加速,也就是AI芯片的算力要足夠用,同時考慮其他因素,功耗還不能超標,能效比越高越好。在AI芯片領域,可供選擇的,首先是需要一個CPU或者ARM內核來執行調度處理,然后大量的並行計算靠GPU、FPGA或者ASIC來完成,而ASIC里面有多種架構,谷歌的TPU、地平線BPU、寒武紀和華為都推出的NPU等。

之前看過一篇文章,關於GPU等AI芯片如何處理深度學習的,簡單整理一下加深記憶。

CPU和GPU都屬於通用芯片,不過GPU在近幾年專門針對AI算法加強了並行計算單元,因此除CPU外,GPU、NPU、FPGA等芯片作為AI算法的硬件加速器在不同的應用場景和深度學習算法中發揮着各自的優勢,且聽一一道來。

在自動駕駛算法中,感知算法是作為一切自動駕駛控制處理的基礎,環境感知中主要是靠攝像頭和激光雷達,而且以攝像頭視覺處理居多,因此以攝像頭視覺深度學習算法中的人臉識別為例,其基本處理流程及對應功能模塊所需的算力需求分布如下:

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

視覺算法中,先是攝像頭獲取圖像,然后經過CPU或GPU進行預處理,也就是基本的判斷識別和任務分配,然后就需要進行大量的數據計算分析,這時候GPU、NPU或者FPGA等AI芯片開始派上用場。之所以會這樣,這就涉及到了作為通用芯片CPU和AI計算芯片GPU等的原理架構方面的區別了。

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

CPU和GPU的原理/架構對比

CPU(CentralProcessing Unit)中央處理器,是一塊超大規模的集成電路,主要邏輯架構包括控制單元Control,運算單元ALU和高速緩沖存儲器(Cache)及實現它們之間聯系的數據(Data)、控制及狀態的總線(Bus)。簡單說,就是計算單元、控制單元和存儲單元。

架構圖如下所示:

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

CPU遵循的是馮·諾依曼架構,其核心是存儲程序/數據、串行順序執行。因此CPU的架構中需要大量的空間去放置存儲單元(Cache)和控制單元(Control),相比之下計算單元(ALU)只占據了很小的一部分,所以CPU在進行大規模並行計算方面受到限制,相對而言更擅長於處理邏輯控制。

CPU無法做到大量數據並行計算的能力,但GPU可以。

GPU(GraphicsProcessing Unit),即圖形處理器,是一種由大量運算單元組成的大規模並行計算架構,早先由CPU中分出來專門用於處理圖像並行計算數據,專為同時處理多重並行計算任務而設計。

GPU中也包含基本的計算單元、控制單元和存儲單元,但GPU的架構與CPU有很大不同,其架構圖如下所示。

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

與CPU相比,CPU芯片空間的不到20%是ALU,而GPU芯片空間的80%以上是ALU。即GPU擁有更多的ALU用於數據並行處理。這就是為什么GPU可以具備強大的並行計算能力的原因。

從硬件架構分析來看,CPU和GPU似乎很像,都有內存、Cache、ALU、CU,都有着很多的核心,但是CPU的核心占比比較重,相對計算單元ALU很少,可以用來處理非常復雜的控制邏輯,預測分支、亂序執行、多級流水任務等等。相對而言GPU的核心就是比較輕,用於優化具有簡單控制邏輯的數據並行任務,注重並行程序的吞吐量。

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

簡單來說就是CPU的核心擅長完成多重復雜任務,重在邏輯,重在串行程序;GPU的核心擅長完成具有簡單的控制邏輯的任務,重在計算,重在並行。

再來看一張NVIDIA公開的關於GPU的架構圖

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 
CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

上圖NVIDIAGPU擁有4個SM(streaming multiprocessor),每個SM有4*8=32個Core,一共有4*4*8=128個Core。再對比一下CPU的Haswell的Core微架構圖,可以看到,其有20多種“執行單元”(ExecutionUnits),如ALU、FMA、FP add和FP mul等。每個“執行單元”用於處理不同的指令以 FP mul“執行單元為例”,一個CPU的Core中有2個,六核心的CPU有12個。所以在執行單元方面,128:12。

(僅做參考,此處GPU的Core並不可以和CPU結構圖中的Core對等,它只能相當於CPU微架構中的一個“執行單元”。)

關於CPU和GPU可以比喻成:CPU是一個擁有多種功能的優秀領導者,其的強項在於“調度”而非純粹的計算;而GPU則可以被看成一個接受CPU調度的“擁有大量計算能力”的員工。

總結GPU具有如下特點:

1) 多線程,提供了多核並行計算的基礎結構,且核心數非常多,可以支撐大量數據的並行計算,處理神經網絡數據遠遠高效於CPU。

2) 擁有更高的訪存速度。

3) 更高的浮點運算能力。

因此,GPU比CPU更適合深度學習中的大量訓練數據、大量矩陣、卷積運算。

GPU雖然在並行計算能力上盡顯優勢,但並不能單獨工作,需要CPU的協同處理,對於神經網絡模型的構建和數據流的傳遞還是在CPU上進行。

但是GPU也有天生缺陷,那就是功耗高,體積大,價格貴。

性能越高的GPU體積越大,功耗越高,價格也昂貴,對於一些小型設備、移動設備來說將無法使用。

因此,一種體積小、功耗低、計算性能高、計算效率高的ASIC專用芯片NPU誕生了。

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

NPU原理和AI計算優勢

NPU (NeuralNetworks Process Units)神經網絡處理單元。NPU工作原理是在電路層模擬人類神經元和突觸,並且用深度學習指令集直接處理大規模的神經元和突觸,一條指令完成一組神經元的處理。相比於CPU和GPU,NPU通過突出權重實現存儲和計算一體化,從而提高運行效率。

國內寒武紀是最早研究NPU的企業,並且華為麒麟970曾采用寒武紀的NPU架構,不過從2018年開始華為發布自研昇騰芯片專為達芬奇架構。

NPU是模仿生物神經網絡而構建的,CPU、GPU處理器需要用數千條指令完成的神經元處理,NPU只要一條或幾條就能完成,因此在深度學習的處理效率方面優勢明顯。

據說,同等功耗下NPU 的性能是 GPU 的 118 倍。(數據來源網絡)

與GPU一樣,NPU同樣需要CPU的協同處理才能完成特定的任務。

說道這里提一下手機芯片,作為移動端的專用SoC,內部集成了CPU、GPU和NPU。

以麒麟990 5G版為例說明,在CPU方面共有8核心,分別是兩顆2.86GHz的A76架構大核,兩顆2.36GHz的A76架構中核以及四顆1.95GHz的A55架構小核。在GPU方面,則是采用了16核的Mali-G76 GPU,而在NPU方面,集成2顆大核和一顆小核,采用的是華為自研達芬奇架構的NPU。

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

其中CPU負責手機應用流暢切換、GPU支持游戲畫面快速加載,而NPU(神經網絡處理器)就專門負責實現AI運算和AI應用的實現。也就是說CPU是負責計算和整體協調的,而GPU是負責和圖像有關的部分,NPU負責和AI有關的部分。其工作流程則是,任何工作都要先通過CPU,CPU再根據這一塊的工作的性質來決定分配給誰。如果是圖形方面的計算,就會分配給GPU,如果是AI方面的計算需求,就分配給NPU。

本文借用一下華為麒麟官方發布的《看懂芯片原來這么簡單》系列漫畫介紹華為自研達芬奇架構NPU,相比傳統標量、矢量運算模式,華為自研架構NPU采用3D Cube針對矩陣運算做加速,因此,單位時間計算的數據量更大,單位功耗下的AI算力也更強,相對傳統的CPU和GPU實現數量級提升,實現更優能效。

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

由此可以看出,在手機SOC中,CPU是至關重要的部分,同樣在自動駕駛行業處理深度學習AI算法方面,GPU和NPU都需要和CPU協同才能發揮其性能優勢。

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

CPU如何輔助GPU實現加速

GPU當前只是單純的並行矩陣的乘法和加法運算,對於神經網絡模型的構建和數據流的傳遞還是在CPU上進行。

CPU加載權重數據,按照代碼構建神經網絡模型,將每層的矩陣運算通過CUDA或OpenCL等類庫接口傳送到GPU上實現並行計算,輸出結果;CPU接着調度下層神經元組矩陣數據計算,直至神經網絡輸出層計算完成,得到最終結果。

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

CPU 與GPU的交互流程:

1) 獲取GPU信息,配置GPU id

2) 加載神經元參數到GPU

3) GPU加速神經網絡計算

4) 接收GPU計算結果

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

CPU如何輔助NPU實現加速

NPU與GPU加速不同,主要體現為每層神經元計算結果不用輸出到主內存,而是按照神經網絡的連接傳遞到下層神經元繼續計算,因此其在運算性能和功耗上都有很大的提升。

CPU將編譯好的神經網絡模型文件和權重文件交由專用芯片加載,完成硬件編程。

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

CPU在整個運行過程中,主要是實現數據的加載和業務流程的控制,其交互流程為:

1) 打開NPU專用芯片設備

2) 傳入模型文件,得到模型task

3) 獲取task的輸入輸出信息

4) 拷貝輸入數據到模型內存中

5) 運行模型,得到輸出數據

除NPU外,在功耗及計算能力上有一拼的還有FPGA。

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

FPGA原理和AI計算優勢

說完了GPU、NPU以及他們的領導CPU,再來看看另一個火熱芯片FPGA。

FPGA(Field-Programmable Gate Array)稱為現場可編程門陣列,用戶可以根據自身的需求進行重復編程。與 CPU、GPU 相比,具有性能高、功耗低、可硬件編程的特點。

FPGA基本原理是在芯片內集成大量的數字電路基本門電路以及存儲器,而用戶可以通過燒入FPGA 配置文件來定義這些門電路以及存儲器之間的連線。這種燒入不是一次性的,可重復編寫定義,重復配置。

FPGA的內部結構如下圖所示:

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

FPGA的編程邏輯塊(Programable Logic Blocks)中包含很多功能單元,由LUT(Look-up Table)、觸發器組成。FPGA是直接通過這些門電路來實現用戶的算法,沒有通過指令系統的翻譯,執行效率更高。

對比一下CPU/GPU/NPU/FPGA各自的特點

CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 
CPU、GPU、NPU、FPGA等芯片架構特點分析
 
 

各芯片架構特點總結

CPU

70%晶體管用來構建Cache,還有一部分控制單元,計算單元少,適合邏輯控制運算。

GPU

是單指令、多數據處理,晶體管大部分構建計算單元,運算復雜度低,適合大規模並行計算。主要應用於大數據、后台服務器、圖像處理。GPU善於處理圖像領域的運算加速。但GPU無法單獨工作,必須由CPU進行控制調用才能工作。CPU可單獨作用,處理復雜的邏輯運算和不同的數據類型,但當需要大量的處理類型統一的數據時,則可調用GPU進行並行計算。

NPU

NPU在電路層模擬神經元,通過突觸權重實現存儲和計算一體化,一條指令完成一組神經元的處理,提高運行效率。主要應用於通信領域、大數據、圖像處理。NPU作為專用定制芯片ASIC的一種,是為實現特定要求而定制的芯片。除了不能擴展以外,在功耗、可靠性、體積方面都有優勢,尤其在高性能、低功耗的移動端。

FPGA

可編程邏輯,計算效率高,更接近底層IO,通過冗余晶體管和連線實現邏輯可編輯。本質上是無指令、無需共享內存,計算效率比CPU、GPU高。主要應用於智能手機、便攜式移動設備、汽車。FPGA是用硬件實現軟件算法,因此在實現復雜算法方面有一定的難度,缺點是價格比較高。將FPGA和GPU對比發現,一是缺少內存和控制所帶來的存儲和讀取部分,速度更快。二是因為缺少讀取的作用,所以功耗低,劣勢是運算量並不是很大

CPU作為最通用的部分,協同其他處理器完成着不同的任務。GPU適合深度學習中后台服務器大量數據訓練、矩陣卷積運算。NPU、FPGA在性能、面積、功耗等方面有較大優勢,能更好的加速神經網絡計算。而FPGA的特點在於開發使用硬件描述語言,開發門檻相對GPU、NPU高。

ASIC芯片是全定制芯片,長遠看適用於人工智能。現在很多做AI算法的企業也是從這個點切入。因為算法復雜度越強,越需要一套專用的芯片架構與其進行對應,ASIC基於人工智能算法進行定制,其發展前景看好。類腦芯片是人工智能最終的發展模式,但是離產業化還很遙遠。

可以說,每種處理器都有它的優勢和不足,在不同的應用場景中,需要根據需求權衡利弊,選擇合適的芯片。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM