什麼是 CPU,GPU,TPU和NPU: 深入了解處理器
中央處理器 (CPU)、圖形處理器 (GPU) 和張量處理器 (TPU) 傻傻分不清楚?本指南將帶您深入了解處理器核心,助您選擇合適的處理器應付各種運算需求
CPU(中央處理器)、GPU(圖形處理器)和 TPU(張量處理單元)之間的區別對於掌握各種計算任務的處理方式至關重要,尤其是在人工神經網路中。這些處理單元中的每一個都具有針對特定操作和應用的獨特特性和優勢。
中央處理器的作用
中央處理器通常被稱為電腦的 "大腦",負責執行通用指令和基本操作。它通過執行軟體 程式來處理各種任務。雖然中央處理器的用途非常廣泛,但對於某些現代應用(如神經網路訓練)所需的大量並行處理,中央處理器並沒有進行優化。
主要功能:
- 通用性**: 通過更改軟體,能夠運行數百萬個不同的應用 程式。
- 通用速度**: 標量運算效率高,但在訪問記憶體時會遇到瓶頸。
- 有限並行**: 通常每個周期處理幾十個操作。
GPU 的作用
GPU 最初是為渲染 2D 和 3D 圖形而設計的,如今已發展成為需要並行處理的任務中的佼佼者。這使得它們在涉及大規模數據處理的應用中特別有效,例如機器學習中使用的人工神經網路。
主要功能:
- 並行處理**: 配備數千個算術邏輯單元 (ALU),可處理大規模並行任務。
- 效率: 對於涉及並行任務(如渲染圖形或訓練模型)的應用,具有超高的效率。
- 性能: 每個周期可處理數千次運算,將矩陣運算作為矢量處理。
TPU 的作用
TPU 是專為神經網路處理而設計的最新創新技術,在效率和性能方面取得了顯著進步。作為一種特定領域的架構,TPU 專門用於處理神經網路計算中固有的大量乘法和加法運算。
主要功能:
- 專業化: 針對神經網路負載進行了優化,不同於通用 CPU 或面向圖形的 GPU。
- 能效: 無需頻繁訪問記憶體即可執行計算,從而以較低的功耗實現較高的計算吞吐量。
- 性能: 擅長將參數和數據載入到乘法器和加法器矩陣中,簡化神經網路運算的計算過程。
處理單元和神經網路
神經網路使用大量稱為函數的數學公式,根據相關輸入確定神經元的開通。這一過程需要大量的乘法和加法運算,因此高效的處理單元對運行至關重要。
神經網路中的 CPU
雖然中央處理器可用於訓練和運行神經網路,但其通用性和有限的並行處理能力使其不太適合這一目的。它們面臨記憶體訪問瓶頸,大大降低了處理速度。
神經網路中的 GPU
GPU 具有處理並行處理的超強能力,在訓練和運行神經網路方面的性能明顯優於 CPU。它們可以同時處理數千個操作,因此非常適合發揮這一作用。
神經網路中的 TPU
TPU 專為神經網路設計,具有無與倫比的效率和性能。它們能有效管理神經網路運行所需的大量乘法和加法運算,從而最大限度地降低功耗,提高計算吞吐量。在對能效和高性能要求極高的數據中心,TPU 尤其有效。
- CPU即中央處理器(Central Processing Unit)
- GPU即圖形處理器(Graphics Processing Unit)
- TPU即Google的張量處理器(Tensor Processing Unit)
- NPU即神經網路處理器(Neural network Processing Unit)
概括三者區別:
CPU雖然有多核,但一般也就幾個,每個核都有足夠大的緩存和足夠多的數字和邏輯運算單元,需要很強的通用性來處理各種不同的數據類型,同時又要邏輯判斷又會引入大量的分支跳轉和中斷的處理,並輔助有很多加速分支判斷甚至更複雜的邏輯判斷的硬體;
GPU的核數遠超CPU,被稱為眾核(NVIDIA Fermi有512個核)。每個核擁有的緩存大小相對小,數字邏輯運算單元也少而簡單(GPU初始時在浮點計算上一直弱於CPU),面對的則是類型高度統一的、相互無依賴的大規模數據和不需要被打斷的純凈的計算環境。
TPU是一款為機器學習而定製的晶元,經過了專門深度機器學習方面的訓練,它有更高效能(每瓦計算能力)。大致上,相對於現在的處理器有7年的領先優勢,寬容度更高,每秒在晶元中可以擠出更多的操作時間,使用更複雜和強大的機器學習模型,將之更快的部署,用戶也會更加迅速地獲得更智能的結果。
所謂NPU, 即神經網路處理器,用電路模擬人類的神經元和突觸結構。
想更深理解的讀者,可以往下面看,接下來詳細說明。若不想深入了解,直接跳到文末有驚喜總結:
CPU
中央處理器(CPU,Central Processing Unit),是電子電腦的主要設備之一,電腦中的核心配件。其功能主要是解釋電腦指令以及處理電腦軟體中的數據。電腦中所有操作都由CPU負責讀取指令,對指令解碼並執行指令的核心零件。
CPU的結構主要包括運算器(ALU, Arithmetic and Logic Unit)、控制單元(CU, Control Unit)、寄存器(Register)、高速緩存器(Cache)和它們之間通訊的數據、控制及狀態的匯流排。
CPU遵循的是馮諾依曼架構,其核心就是:存儲 程式,順序執行。
另外,因為遵循馮諾依曼架構(存儲 程式,順序執行),CPU就像是個一板一眼的管家,人們吩咐的事情它總是一步一步來做。但是隨著人們對更大規模與更快處理速度的需求的增加,這位管家漸漸變得有些力不從心。
於是,大家就想,能不能把多個處理器放在同一塊晶元上,讓它們一起來做事,這樣效率不就提高了嗎?
沒錯,GPU便由此誕生了。
GPU
在正式講解GPU之前,我們先來講講上文中提到的一個概念:並行計算。
並行計算(Parallel Computing)是指同時使用多種計算資源解決計算問題的過程,是提高電腦系統計算速度和處理能力的一種有效手段。它的基本思想是用多個處理器來共同求解同一問題,即將被求解的問題分解成若幹個部分,各部分均由一個獨立的處理機來並行計算。
並行計算可分為時間上的並行和空間上的並行。
時間上的並行是指流水線技術,比如說工廠生產食品的時候分為四步:清洗-消毒-切割-包裝。
如果不採用流水線,一個食品完成上述四個步驟后,下一個食品才進行處理,耗時且影響效率。但是採用流水線技術,就可以同時處理四個食品。這就是並行演演算法中的時間並行,在同一時間啟動兩個或兩個以上的操作,大大提高計算性能。
空間上的並行是指多個處理機併發的執行計算,即通過網路將兩個以上的處理機連接起來,達到同時計算同一個任務的不同部分,或者單個處理機無法解決的大型問題。
比如小李準備在植樹節種三棵樹,如果小李1個人需要6個小時才能完成任務,植樹節當天他叫來了好朋友小紅、小王,三個人同時開始挖坑植樹,2個小時后每個人都完成了一顆植樹任務,這就是並行演演算法中的空間並行,將一個大任務分割成多個相同的子任務,來加快問題解決速度。
所以說,如果讓CPU來執行這個種樹任務的話,它就會一棵一棵的種,花上6個小時的時間,但是讓GPU來種樹,就相當於好幾個人同時在種。
GPU全稱為Graphics Processing Unit,中文為圖形處理器,就如它的名字一樣,GPU最初是用在個人電腦、工作站、遊戲機和一些 行動裝置(如平板電腦、智能手機等)上運行繪圖運算工作的微處理器。
為什麼GPU特別擅長處理圖像數據呢?這是因為圖像上的每一個像素點都有被處理的需要,而且每個像素點處理的過程和方式都十分相似,也就成了GPU的天然溫床。
但GPU無法單獨工作,必須由CPU進行控制調用才能工作。CPU可單獨作用,處理複雜的邏輯運算和不同的數據類型,但當需要大量的處理類型統一的數據時,則可調用GPU進行並行計算。
GPU的工作大部分都計算量大,但沒什麼技術含量,而且要重複很多很多次。
借用知乎上某大神的說法,就像你有個工作需要計算幾億次一百以內加減乘除一樣,最好的辦法就是雇上幾十個小學生一起算,一人算一部分,反正這些計算也沒什麼技術含量,純粹體力活而已;而CPU就像老教授,積分微分都會算,就是工資高,一個老教授資頂二十個小學生,你要是富士康你雇哪個?
但有一點需要強調,雖然GPU是為了圖像處理而生的,但是我們通過前面的介紹可以發現,它在結構上並沒有專門為圖像服務的零件,只是對CPU的結構進行了優化與調整,所以現在GPU不僅可以在圖像處理領域大顯身手,它還被用來科學計算、密碼破解、數值分析,海量數據處理(排序,Map-Reduce等),金融分析等需要大規模並行計算的領域。
TPU
張量處理單元(TPU)是一種定製化的 ASIC 晶元,它由Google從頭設計,並專門用於機器學習工作負載。TPU 為Google的主要產品提供了計算支持,包括翻譯、照片、搜索助理和 Gmail 等。Cloud TPU 將 TPU 作為可擴展的雲計算資源,併為所有在 Google Cloud 上運行尖端 ML 模型的開發者與數據科學家提供計算資源。
按照上文所述,CPU和GPU都是較為通用的晶元,但是有句老話說得好:萬能工具的效率永遠比不上專用工具。
隨著人們的計算需求越來越專業化,人們希望有晶元可以更加符合自己的專業需求,這時,便產生了ASIC(專用整合電路)的概念。
ASIC是指依產品需求不同而定製化的特殊規格整合電路,由特定使用者要求和特定電子系統的需要而設計、製造。
而TPU(Tensor Processing Unit, 張量處理器)就是Google專門為加速深層神經網路運算能力而研發的一款晶元,其實也是一款ASIC。
據稱,TPU與同期的CPU和GPU相比,可以提供15-30倍的性能提升,以及30-80倍的效率(性能/瓦特)提升。初代的TPU只能做推理,要依靠Google雲來即時收集數據併產生結果,而訓練過程還需要額外的資源;而第二代TPU既可以用於訓練神經網路,又可以用於推理。
NPU
所謂NPU(Neural network Processing Unit), 即神經網路處理器。用電路模擬人類的神經元和突觸結構。
神經網路中存儲和處理是一體化的,都是通過突觸權重來體現。而馮·諾伊曼結構中,存儲和處理是分離的,分別由記憶體和運算器來實現,二者之間存在巨大的差異。當用現有的基於馮·諾伊曼結構的經典電腦(如X86處理器和英偉達GPU)來跑神經網路應用時,就不可避免地受到存儲和處理分離式結構的制約,因而影響效率。這也就是專門針對人工智慧的專業晶元能夠對傳統晶元有一定先天優勢的原因之一。
NPU的典型代表有國內的寒武紀晶元和IBM的TrueNorth。以中國的寒武紀為例,DianNaoYu指令直接面對大規模神經元和突觸的處理,一條指令即可完成一組神經元的處理,並對神經元和突觸數據在晶元上的傳輸提供了一系列專門的支持。
用數字來說話,CPU、GPU與NPU相比,會有百倍以上的性能或能耗比差距–以寒武紀團隊過去和Inria聯合發表的DianNao論文為例–DianNao為單核處理器,主頻為0.98GHz,峰值性能達每秒4520億次神經網路基本運算,65nm工藝下功耗為0.485W,面積3.02平方毫米mm。
BPU
BPU(Brain Processing Unit,大腦處理器)是由地平線科技提出的嵌入式人工智慧處理器架構。第一代是高斯架構,第二代是伯努利架構,第三代是貝葉斯架構。目前地平線已經設計出了第一代高斯架構,並與英特爾在2017年CES展會上聯合推出了ADAS系統(高級駕駛輔助系統)。
DPU
DPU(Deep learning Processing Unit, 即深度學習處理器)最早由國內深鑒科技提出,基於Xilinx可重構特性的FPGA晶元,設計專用的深度學習處理單元(可基於已有的邏輯單元,設計並行高效的乘法器及邏輯電路,屬於IP範疇),且抽象出定製化的指令集和編譯器(而非使用OpenCL),從而實現快速的開發與產品疊代。事實上,深鑒提出的DPU屬於半定製化的FPGA。
總結
APU – Accelerated Processing Unit, 加速處理器,AMD公司推出加速圖像處理晶元產品。
BPU – Brain Processing Unit,地平線公司主導的嵌入式處理器架構。
CPU – Central Processing Unit 中央處理器, 目前PC core的主流產品。
DPU – Deep learning Processing Unit, 深度學習處理器,最早由國內深鑒科技提出;另說有Dataflow Processing Unit 數據流處理器, Wave Computing 公司提出的AI架構;Data storage Processing Unit,深圳大普微的智能固態硬碟處理器。
FPU – Floating Processing Unit 浮點計算單元,通用處理器中的浮點運算模塊。
GPU – Graphics Processing Unit, 圖形處理器,採用多線程SIMD架構,為圖形處理而生。
HPU – Holographics Processing Unit 全息圖像處理器, 微軟出品的全息計算晶元與設備。
IPU – Intelligence Processing Unit, Deep Mind投資的Graphcore公司出品的AI處理器產品。
MPU/MCU – Microprocessor/Micro controller Unit, 微處理器/微控制器,一般用於低計算應用的RISC電腦體系架構產品,如ARM-M系列處理器。
NPU – Neural Network Processing Unit,神經網路處理器,是基於神經網路演演算法與加速的新型處理器總稱,如中科院計算所/寒武紀公司出品的diannao系列。
RPU – Radio Processing Unit, 無線電處理器, Imagination Technologies 公司推出的集合集Wifi/藍牙/FM/處理器為單片的處理器。
TPU – Tensor Processing Unit 張量處理器, Google 公司推出的加速人工智慧演演算法的專用處理器。目前一代TPU面向Inference,二代面向訓練。
VPU – Vector Processing Unit 矢量處理器,Intel收購的Movidius公司推出的圖像處理與人工智慧的專用晶元的加速計算核心。
WPU – Wearable Processing Unit, 可穿戴處理器,Ineda Systems公司推出的可穿戴片上系統產品,包含GPU/MIPS CPU等IP。
XPU – 百度與Xilinx公司在2017年Hotchips大會上發布的FPGA智能雲加速,含256核。
ZPU – Zylin Processing Unit,由挪威Zylin 公司推出的一款32位開放原始碼處理器。
結論
深入了解 CPU、GPU 和 TPU 的差異,有助於理解它們在現代計算中的獨特作用和應用。CPU 具有多功能性和通用性,擅長處理各種任務;GPU 擅長並行處理大量數據,因此非常適合圖形處理和機器學習等任務;TPU 則專為神經網路運算而設計,具有更高的效率。每個處理器單元在各自領域都發揮著至關重要的作用,推動著計算技術的不斷發展,並促進了人工智慧和機器學習等領域的進步。