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