天天看點

CPU、GPU、TPU、NPU等到底是什麼

GPU即圖形處理器,Graphics Processing Unit的縮寫。

CPU即中央處理器,Central Processing Unit的縮寫。

TPU即谷歌的張量處理器,Tensor Processing Unit的縮寫。

三者差別:

CPU雖然有多核,但一般也就幾個,每個核都有足夠大的緩存和足夠多的數字和邏輯運算單元,需要很強的通用性來處理各種不同的資料類型,同時又要邏輯判斷又會引入大量的分支跳轉和中斷的處理,并輔助有很多加速分支判斷甚至更複雜的邏輯判斷的硬體;

GPU的核數遠超CPU,被稱為衆核(NVIDIA Fermi有512個核)。每個核擁有的緩存大小相對小,數字邏輯運算單元也少而簡單(GPU初始時在浮點計算上一直弱于CPU),面對的則是類型高度統一的、互相無依賴的大規模資料和不需要被打斷的純淨的計算環境。

TPU是一款為機器學習而定制的晶片,經過了專門深度機器學習方面的訓練,它有更高效能(每瓦計算能力)。大緻上,相對于現在的處理器有7年的領先優勢,寬容度更高,每秒在晶片中可以擠出更多的操作時間,使用更複雜和強大的機器學習模型,将之更快的部署,使用者也會更加迅速地獲得更智能的結果。

CPU

中央處理器(CPU,英語:Central Processing Unit / Processor),是電子計算機的主要裝置之一,電腦中的核心配件。其功能主要是解釋計算機指令以及處理計算機軟體中的資料。電腦中所有操作都由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 晶片,它由谷歌從頭設計,并專門用于機器學習工作負載。TPU 為谷歌的主要産品提供了計算支援,包括翻譯、照片、搜尋助理和 Gmail 等。Cloud TPU 将 TPU 作為可擴充的雲計算資源,并為所有在 Google Cloud 上運作尖端 ML 模型的開發者與資料科學家提供計算資源。在 Google Next’18 中,我們宣布 TPU v2 現在已經得到使用者的廣泛使用,包括那些免費試用使用者,而 TPU v3 目前已經釋出了内部測試版。

按照上文所述,CPU和GPU都是較為通用的晶片,但是有句老話說得好:萬能工具的效率永遠比不上專用工具。

随着人們的計算需求越來越專業化,人們希望有晶片可以更加符合自己的專業需求,這時,便産生了ASIC(專用內建電路)的概念。

ASIC是指依産品需求不同而定制化的特殊規格內建電路,由特定使用者要求和特定電子系統的需要而設計、制造。當然這概念不用記,簡單來說就是定制化晶片。

而TPU(Tensor Processing Unit, 張量處理器)就是谷歌專門為加速深層神經網絡運算能力而研發的一款晶片,其實也是一款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位開源處理器。

參考:

https://www.cnblogs.com/shiyublog/p/10987755.html

https://www.360kuai.com/pc/9f5b7dc65d30c0316?cota=4&tj_url=so_rec&sign=360_57c3bbd1&refer_scene=so_1

http://www.elecfans.com/d/776906.html

https://blog.csdn.net/qq_40695642/article/details/101602284