來源:公司資(zī)訊 | 2021.08.16
1.CPU
CPU(CentralProcessingUnit,中(zhōng)央處理器)就是機器的“大(dà)腦”,也是布局謀略、發号施令、控制行動的“總司令官”。
CPU的結構主要包括運算器(ALU,ArithmeticandLogicUnit)、控制單元(CU,ControlUnit)、寄存器(Register)、高速緩存器(Cache)和它們之間通訊的數據、控制及狀态的總線。
簡單來說就是:計算單元、控制單元和存儲單元
計算單元主要執行算術運算、移位等操作以及地址運算和轉換;存儲單元主要用于保存運算中(zhōng)産生(shēng)的數據以及指令等;控制單元則對指令譯碼,并且發出爲完成每條指令所要執行的各個操作的控制信号。
所以一(yī)條指令在CPU中(zhōng)執行的過程是這樣的:讀取到指令後,通過指令總線送到控制器(黃色區域)中(zhōng)進行譯碼,并發出相應的操作控制信号;然後運算器(綠色區域)按照操作指令對數據進行計算,并通過數據總線将得到的數據存入數據緩存器(大(dà)塊橙色區域)
是不是有點兒複雜(zá)?沒關系,這張圖完全不用記住,我(wǒ)們隻需要知(zhī)道,CPU遵循的是馮諾依曼架構,其核心就是:存儲程序,順序執行。
講到這裏,有沒有看出問題,沒錯——在這個結構圖中(zhōng),負責計算的綠色區域占的面積似乎太小(xiǎo)了,而橙色區域的緩存Cache和黃色區域的控制單元占據了大(dà)量空間。
高中(zhōng)化學有句老生(shēng)常談的話(huà)叫:結構決定性質,放(fàng)在這裏也非常适用。
因爲CPU的架構中(zhōng)需要大(dà)量的空間去(qù)放(fàng)置存儲單元(橙色部分(fēn))和控制單元(黃色部分(fēn)),相比之下(xià)計算單元(綠色部分(fēn))隻占據了很小(xiǎo)的一(yī)部分(fēn),所以它在大(dà)規模并行計算能力上極受限制,而更擅長于邏輯控制。
另外(wài),因爲遵循馮諾依曼架構(存儲程序,順序執行),CPU就像是個一(yī)闆一(yī)眼的管家,人們吩咐的事情它總是一(yī)步一(yī)步來做。但是随着人們對更大(dà)規模與更快處理速度的需求的增加,這位管家漸漸變得有些力不從心。
于是,大(dà)家就想,能不能把多個處理器放(fàng)在同一(yī)塊芯片上,讓它們一(yī)起來做事,這樣效率不就提高了嗎(ma)?
沒錯,GPU便由此誕生(shēng)了。
2.GPU
在正式講解GPU之前,我(wǒ)們先來講講上文中(zhōng)提到的一(yī)個概念——并行計算。
并行計算(ParallelComputing)是指同時使用多種計算資(zī)源解決計算問題的過程,是提高計算機系統計算速度和處理能力的一(yī)種有效手段。它的基本思想是用多個處理器來共同求解同一(yī)問題,即将被求解的問題分(fēn)解成若幹個部分(fēn),各部分(fēn)均由一(yī)個獨立的處理機來并行計算。
并行計算可分(fēn)爲時間上的并行和空間上的并行。
時間上的并行是指流水線技術,比如說工(gōng)廠生(shēng)産食品的時候分(fēn)爲四步:清洗-消毒-切割-包裝。
如果不采用流水線,一(yī)個食品完成上述四個步驟後,下(xià)一(yī)個食品才進行處理,耗時且影響效率。但是采用流水線技術,就可以同時處理四個食品。這就是并行算法中(zhōng)的時間并行,在同一(yī)時間啓動兩個或兩個以上的操作,大(dà)大(dà)提高計算性能。
空間上的并行是指多個處理機并發的執行計算,即通過網絡将兩個以上的處理機連接起來,達到同時計算同一(yī)個任務的不同部分(fēn),或者單個處理機無法解決的大(dà)型問題。
比如小(xiǎo)李準備在植樹(shù)節種三棵樹(shù),如果小(xiǎo)李1個人需要6個小(xiǎo)時才能完成任務,植樹(shù)節當天他叫來了好朋友小(xiǎo)紅、小(xiǎo)王,三個人同時開(kāi)始挖坑植樹(shù),2個小(xiǎo)時後每個人都完成了一(yī)顆植樹(shù)任務,這就是并行算法中(zhōng)的空間并行,将一(yī)個大(dà)任務分(fēn)割成多個相同的子任務,來加快問題解決速度。
所以說,如果讓CPU來執行這個種樹(shù)任務的話(huà),它就會一(yī)棵一(yī)棵的種,花上6個小(xiǎo)時的時間,但是讓GPU來種樹(shù),就相當于好幾個人同時在種。
GPU全稱爲GraphicsProcessingUnit,中(zhōng)文爲圖形處理器,就如它的名字一(yī)樣,GPU最初是用在個人電腦、工(gōng)作站、遊戲機和一(yī)些移動設備(如平闆電腦、智能手機等)上運行繪圖運算工(gōng)作的微處理器。
爲什麽GPU特别擅長處理圖像數據呢?這是因爲圖像上的每一(yī)個像素點都有被處理的需要,而且每個像素點處理的過程和方式都十分(fēn)相似,也就成了GPU的天然溫床。
從架構圖我(wǒ)們就能很明顯的看出,GPU的構成相對簡單,有數量衆多的計算單元和超長的流水線,特别适合處理大(dà)量的類型統一(yī)的數據。
但GPU無法單獨工(gōng)作,必須由CPU進行控制調用才能工(gōng)作。CPU可單獨作用,處理複雜(zá)的邏輯運算和不同的數據類型,但當需要大(dà)量的處理類型統一(yī)的數據時,則可調用GPU進行并行計算。
注:GPU中(zhōng)有很多的運算器ALU和很少的緩存cache,緩存的目的不是保存後面需要訪問的數據的,這點和CPU不同,而是爲線程thread提高服務的。如果有很多線程需要訪問同一(yī)個相同的數據,緩存會合并這些訪問,然後再去(qù)訪問dram。
GPU的工(gōng)作大(dà)部分(fēn)都計算量大(dà),但沒什麽技術含量,而且要重複很多很多次。
借用知(zhī)乎上某大(dà)神的說法,就像你有個工(gōng)作需要計算幾億次一(yī)百以内加減乘除一(yī)樣,最好的辦法就是雇上幾十個小(xiǎo)學生(shēng)一(yī)起算,一(yī)人算一(yī)部分(fēn),反正這些計算也沒什麽技術含量,純粹體(tǐ)力活而已;而CPU就像老教授,積分(fēn)微分(fēn)都會算,就是工(gōng)資(zī)高,一(yī)個老教授資(zī)頂二十個小(xiǎo)學生(shēng),你要是富士康你雇哪個?
GPU就是用很多簡單的計算單元去(qù)完成大(dà)量的計算任務,純粹的人海戰術。這種策略基于一(yī)個前提,就是小(xiǎo)學生(shēng)A和小(xiǎo)學生(shēng)B的工(gōng)作沒有什麽依賴性,是互相獨立的。
但有一(yī)點需要強調,雖然GPU是爲了圖像處理而生(shēng)的,但是我(wǒ)們通過前面的介紹可以發現,它在結構上并沒有專門爲圖像服務的部件,隻是對CPU的結構進行了優化與調整,所以現在GPU不僅可以在圖像處理領域大(dà)顯身手,它還被用來科學計算、密碼破解、數值分(fēn)析,海量數據處理(排序,Map-Reduce等),金融分(fēn)析等需要大(dà)規模并行計算的領域。
所以GPU也可以認爲是一(yī)種較通用的芯片。
3.TPU
按照上文所述,CPU和GPU都是較爲通用的芯片,但是有句老話(huà)說得好:萬能工(gōng)具的效率永遠比不上專用工(gōng)具。
随着人們的計算需求越來越專業化,人們希望有芯片可以更加符合自己的專業需求,這時,便産生(shēng)了ASIC(專用集成電路)的概念。
ASIC是指依産品需求不同而定制化的特殊規格集成電路,由特定使用者要求和特定電子系統的需要而設計、制造。當然這概念不用記,簡單來說就是定制化芯片。
因爲ASIC很“專一(yī)”,隻做一(yī)件事,所以它就會比CPU、GPU等能做很多件事的芯片在某件事上做的更好,實現更高的處理速度和更低的能耗。但相應的,ASIC的生(shēng)産成本也非常高。
而TPU(TensorProcessingUnit,張量處理器)就是谷歌專門爲加速深層神經網絡運算能力而研發的一(yī)款芯片,其實也是一(yī)款ASIC。
原來很多的機器學習以及圖像處理算法大(dà)部分(fēn)都跑在GPU與FPGA(半定制化芯片)上面,但這兩種芯片都還是一(yī)種通用性芯片,所以在效能與功耗上還是不能更緊密的适配機器學習算法,而且Google一(yī)直堅信偉大(dà)的軟件将在偉大(dà)的硬件的幫助下(xià)更加大(dà)放(fàng)異彩,所以Google便想,我(wǒ)們可不可以做出一(yī)款專用機機器學習算法的專用芯片,TPU便誕生(shēng)了。
據稱,TPU與同期的CPU和GPU相比,可以提供15-30倍的性能提升,以及30-80倍的效率(性能/瓦特)提升。初代的TPU隻能做推理,要依靠Google雲來實時收集數據并産生(shēng)結果,而訓練過程還需要額外(wài)的資(zī)源;而第二代TPU既可以用于訓練神經網絡,又(yòu)可以用于推理。
看到這裏你可能會問了,爲什麽TPU會在性能上這麽牛逼呢?
嗯,谷歌寫了好幾篇論文和博文來說明這一(yī)原因,所以僅在這裏抛磚引玉一(yī)下(xià)。
這表示谷歌充分(fēn)意識到了片外(wài)内存訪問是GPU能效比低的罪魁禍首,因此不惜成本的在芯片上放(fàng)了巨大(dà)的内存。相比之下(xià),英偉達同時期的K80隻有8MB的片上内存,因此需要不斷地去(qù)訪問片外(wài)DRAM。
另外(wài),TPU的高性能還來源于對于低運算精度的容忍。研究結果表明,低精度運算帶來的算法準确率損失很小(xiǎo),但是在硬件實現上卻可以帶來巨大(dà)的便利,包括功耗更低、速度更快、占芯片面積更小(xiǎo)的運算單元、更小(xiǎo)的内存帶寬需求等...TPU采用了8比特的低精度運算。
其它更多的信息可以去(qù)翻翻谷歌的論文。
到目前爲止,TPU其實已經幹了很多事情了,例如機器學習人工(gōng)智能系統RankBrain,它是用來幫助Google處理搜索結果并爲用戶提供更加相關搜索結果的;還有街景StreetView,用來提高地圖與導航的準确性的;當然還有下(xià)圍棋的計算機程序AlphaGo!
4.NPU
講到這裏,相信大(dà)家對這些所謂的“XPU”的套路已經有了一(yī)定了解,我(wǒ)們接着來。
所謂NPU(NeuralnetworkProcessingUnit),即神經網絡處理器。顧名思義,這家夥是想用電路模拟人類的神經元和突觸結構啊!
怎麽模仿?那就得先來看看人類的神經結構——生(shēng)物(wù)的神經網絡由若幹人工(gōng)神經元結點互聯而成,神經元之間通過突觸兩兩連接,突觸記錄了神經元之間的聯系。
如果想用電路模仿人類的神經元,就得把每個神經元抽象爲一(yī)個激勵函數,該函數的輸入由與其相連的神經元的輸出以及連接神經元的突觸共同決定。
爲了表達特定的知(zhī)識,使用者通常需要(通過某些特定的算法)調整人工(gōng)神經網絡中(zhōng)突觸的取值、網絡的拓撲結構等。該過程稱爲“學習”。
在學習之後,人工(gōng)神經網絡可通過習得的知(zhī)識來解決特定的問題。
這時不知(zhī)道大(dà)家有沒有發現問題——原來,由于深度學習的基本操作是神經元和突觸的處理,而傳統的處理器指令集(包括x86和ARM等)是爲了進行通用計算發展起來的,其基本操作爲算術操作(加減乘除)和邏輯操作(與或非),往往需要數百甚至上千條指令才能完成一(yī)個神經元的處理,深度學習的處理效率不高。
這時就必須另辟蹊徑——突破經典的馮·諾伊曼結構!
神經網絡中(zhōng)存儲和處理是一(yī)體(tǐ)化的,都是通過突觸權重來體(tǐ)現。而馮·諾伊曼結構中(zhōng),存儲和處理是分(fēn)離(lí)的,分(fēn)别由存儲器和運算器來實現,二者之間存在巨大(dà)的差異。當用現有的基于馮·諾伊曼結構的經典計算機(如X86處理器和英偉達GPU)來跑神經網絡應用時,就不可避免地受到存儲和處理分(fēn)離(lí)式結構的制約,因而影響效率。這也就是專門針對人工(gōng)智能的專業芯片能夠對傳統芯片有一(yī)定先天優勢的原因之一(yī)。
NPU的典型代表有國内的寒武紀芯片和IBM的TrueNorth。以中(zhōng)國的寒武紀爲例,DianNaoYu指令直接面對大(dà)規模神經元和突觸的處理,一(yī)條指令即可完成一(yī)組神經元的處理,并對神經元和突觸數據在芯片上的傳輸提供了一(yī)系列專門的支持。
用數字來說話(huà),CPU、GPU與NPU相比,會有百倍以上的性能或能耗比差距——以寒武紀團隊過去(qù)和Inria聯合發表的DianNao論文爲例——DianNao爲單核處理器,主頻(pín)爲0.98GHz,峰值性能達每秒4520億次神經網絡基本運算,65nm工(gōng)藝下(xià)功耗爲0.485W,面積3.02平方毫米mm。
文章開(kāi)頭所說的mate10中(zhōng)所用的麒麟970芯片,就集成了寒武紀的NPU,所以才可以實現所謂的照片優化功能,以及保證你的手機用了很長時間後還能不卡(當然也得真正用了才能知(zhī)道有沒有宣傳的這麽好)。
PS,中(zhōng)星微電子的“星光智能一(yī)号”雖說對外(wài)号稱是NPU,但其實隻是DSP,僅支持網絡正向運算,無法支持神經網絡訓練。
5.ASIC
ASIC(ApplicationSpecificIntegratedCircuit)是一(yī)種爲專門目的而設計的集成電路。無法重新編程,效能高功耗低,但價格昂貴。近年來湧現出的類似TPU、NPU、VPU、BPU等令人眼花缭亂的各種芯片,本質上都屬于ASIC。ASIC不同于GPU和FPGA的靈活性,定制化的ASIC一(yī)旦制造完成将不能更改,所以初期成本高、開(kāi)發周期長的使得進入門檻高。目前,大(dà)多是具備AI算法又(yòu)擅長芯片研發的巨頭參與,如Google的TPU。由于完美适用于神經網絡相關算法,ASIC在性能和功耗上都要優于GPU和FPGA,TPU1是傳統GPU性能的14-16倍,NPU是GPU的118倍。寒武紀已發布對外(wài)應用指令集,預計ASIC将是未來AI芯片的核心。
6.BPU(BrainProcessingUnit,大(dà)腦處理器)
是由地平線科技提出的嵌入式人工(gōng)智能處理器架構。第一(yī)代是高斯架構,第二代是伯努利架構,第三代是貝葉斯架構。目前地平線已經設計出了第一(yī)代高斯架構,并與英特爾在2017年CES展會上聯合推出了ADAS系統(高級駕駛輔助系統)。
7.DPU(DeeplearningProcessingUnit,即深度學習處理器)
最早由國内深鑒科技提出,基于Xilinx可重構特性的FPGA芯片,設計專用的深度學習處理單元(可基于已有的邏輯單元,設計并行高效的乘法器及邏輯電路,屬于IP範疇),且抽象出定制化的指令集和編譯器(而非使用OpenCL),從而實現快速的開(kāi)發與産品叠代。事實上,深鑒提出的DPU屬于半定制化的FPGA。
嵌入式神經網絡處理器(NPU)采用“數據驅動并行計算”的架構,特别擅長處理視頻(pín)、圖像類的海量多媒體(tǐ)數據。
NPU處理器專門爲物(wù)聯網人工(gōng)智能而設計,用于加速神經網絡的運算,解決傳統芯片在神經網絡運算時效率低下(xià)的問題。
在GX8010中(zhōng),CPU和MCU各有一(yī)個NPU,MCU中(zhōng)的NPU相對較小(xiǎo),習慣上稱爲SNPU。
NPU處理器包括了乘加、激活函數、二維數據運算、解壓縮等模塊。
乘加模塊用于計算矩陣乘加、卷積、點乘等功能,NPU内部有64個MAC,SNPU有32個。
激活函數模塊采用最高12階參數拟合的方式實現神經網絡中(zhōng)的激活函數,NPU内部有6個MAC,SNPU有3個。
二維數據運算模塊用于實現對一(yī)個平面的運算,如降采樣、平面數據拷貝等,NPU内部有1個MAC,SNPU有1個。
解壓縮模塊用于對權重數據的解壓。爲了解決物(wù)聯網設備中(zhōng)内存帶寬小(xiǎo)的特點,在NPU編譯器中(zhōng)會對神經網絡中(zhōng)的權重進行壓縮,在幾乎不影響精度的情況下(xià),可以實現6-10倍的壓縮效果。
不,據說每過18天,集成電路領域就會多出一(yī)個XPU,直到26個字母被用完。
這被戲稱爲AI時代的XPU版摩爾定律。
據不完全統計,已經被用掉的有:
APU--AcceleratedProcessingUnit,加速處理器,AMD公司推出加速圖像處理芯片産品。
BPU--BrainProcessingUnit,地平線公司主導的嵌入式處理器架構。自動駕駛
CPU--CentralProcessingUnit中(zhōng)央處理器,目前PCcore的主流産品。
DPU--DeeplearningProcessingUnit,深度學習處理器,最早由國内深鑒科技提出;另說有DataflowProcessingUnit數據流處理器,WaveComputing公司提出的AI架構;DatastorageProcessingUnit,深圳大(dà)普微的智能固态硬盤處理器。
FPU--FloatingProcessingUnit浮點計算單元,通用處理器中(zhōng)的浮點運算模塊。
GPU--GraphicsProcessingUnit,圖形處理器,采用多線程SIMD架構,爲圖形處理而生(shēng)。
HPU--HolographicsProcessingUnit全息圖像處理器,微軟出品的全息計算芯片與設備。
IPU--IntelligenceProcessingUnit,DeepMind投資(zī)的Graphcore公司出品的AI處理器産品。
MPU/MCU--Microprocessor/MicrocontrollerUnit,微處理器/微控制器,一(yī)般用于低計算應用的RISC計算機體(tǐ)系架構産品,如ARM-M系列處理器。
NPU--NeuralNetworkProcessingUnit,神經網絡處理器,是基于神經網絡算法與加速的新型處理器總稱,如中(zhōng)科院計算所/寒武紀公司出品的diannao系列。
RPU--RadioProcessingUnit,無線電處理器,ImaginationTechnologies公司推出的集合集Wifi/藍(lán)牙/FM/處理器爲單片的處理器。
TPU--TensorProcessingUnit張量處理器,Google公司推出的加速人工(gōng)智能算法的專用處理器。目前一(yī)代TPU面向Inference,二代面向訓練。另外(wài),
VPU--VectorProcessingUnit矢量處理器,Intel收購的Movidius公司推出的圖像處理與人工(gōng)智能的專用芯片的加速計算核心。
WPU--WearableProcessingUnit,可穿戴處理器,InedaSystems公司推出的可穿戴片上系統産品,包含GPU/MIPSCPU等IP。
XPU--百度與Xilinx公司在2017年Hotchips大(dà)會上發布的FPGA智能雲加速,含256核。
ZPU--ZylinProcessingUnit,由挪威Zylin公司推出的一(yī)款32位開(kāi)源處理器。
當26個字母被用完後,即将出現XXPU,XXXPU,并以更快的速度占領起名界。
————————————————
版權聲明:本文爲CSDN博主「陳洪偉」的原創文章,遵循CC4.0BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u013171226/article/details/119674193