CPU,GPU,Memory调度
CPU,GPU,Memory調(diào)度
HDD&Memory&CPU調(diào)度機(jī)制(I/O硬件性能瓶頸)
圖1. HDD&Memory&CPU調(diào)度圖
CPU主要就是三部分:計(jì)算單元、控制單元和存儲(chǔ)單元,其架構(gòu)如下圖所示:
圖2. CPU微架構(gòu)示意圖
換一種CPU表示方法:
圖3. CPU微架構(gòu)示意圖
從字面上,也很容易理解,上面的計(jì)算單元主要執(zhí)行計(jì)算機(jī)的算術(shù)運(yùn)算、移位等操作以及地址運(yùn)算和轉(zhuǎn)換;而存儲(chǔ)單元主要用于保存計(jì)算機(jī)在運(yùn)算中產(chǎn)生的數(shù)據(jù)以及指令等;控制單元?jiǎng)t對(duì)計(jì)算機(jī)發(fā)出的指令進(jìn)行譯碼,并且還要發(fā)出為完成每條指令所要執(zhí)行的各個(gè)操作的控制信號(hào)。
所以在CPU中執(zhí)行一條指令的過(guò)程基本是這樣的:指令被讀取到后,通過(guò)控制器(黃色區(qū)域)進(jìn)行譯碼被送到總線的指令,并會(huì)發(fā)出相應(yīng)的操作控制信號(hào);然后通過(guò)運(yùn)算器(綠色區(qū)域),按照操作指令對(duì)輸入的數(shù)據(jù)進(jìn)行計(jì)算,并通過(guò)數(shù)據(jù)總線,將得到的數(shù)據(jù)存入數(shù)據(jù)緩存器(大塊橙色區(qū)域)。過(guò)程如下圖所示:
圖4. CPU執(zhí)行指令圖
CPU遵循的是馮諾依曼架構(gòu),其核心就是:存儲(chǔ)計(jì)算程序,按照順序執(zhí)行。
在上面的這個(gè)結(jié)構(gòu)圖中,負(fù)責(zé)計(jì)算的綠色區(qū)域占的面積似乎太小了,而橙色區(qū)域的緩存Cache和黃色區(qū)域的控制單元占據(jù)了大量空間。
結(jié)構(gòu)決定性質(zhì),CPU的架構(gòu)中需要大量的空間去放置存儲(chǔ)單元(橙色部分)和控制單元(黃色部分),相比之下計(jì)算單元(綠色部分)只占據(jù)了很小的一部分,所以,在大規(guī)模并行計(jì)算能力上極受限制,而更擅長(zhǎng)于邏輯控制。
另外,因?yàn)樽裱T諾依曼架構(gòu)(存儲(chǔ)程序,順序執(zhí)行),CPU就像是個(gè)一板一眼的管家,總是一步一步來(lái)做,當(dāng)做完一件事情才會(huì)去做另一件事情,從不會(huì)同時(shí)做幾件事情。但是隨著社會(huì)的發(fā)展,大數(shù)據(jù)和人工智能時(shí)代的來(lái)臨,對(duì)更大規(guī)模與更快處理速度的需求急速增加,這位管家漸漸變得有些力不從心。
能不能把多個(gè)處理器都放在同一塊芯片上,一起來(lái)做事,相當(dāng)于有了多位管家,這樣效率不就提高了嗎?
GPU便由此而誕生了。
GPU
并行計(jì)算
并行計(jì)算(Parallel Computing),指同時(shí)使用多種計(jì)算資源解決計(jì)算問(wèn)題的過(guò)程,提高計(jì)算機(jī)系統(tǒng)計(jì)算速度和數(shù)據(jù)處理能力的一種有效手段。基本思想是用多個(gè)處理器來(lái)共同求解同一個(gè)問(wèn)題,即將被求解的問(wèn)題分解成若干個(gè)部分,各部分均由一個(gè)獨(dú)立的處理機(jī)來(lái)并行計(jì)算完成。
并行計(jì)算可分為時(shí)間上的并行和空間上的并行。
時(shí)間上的并行是指流水線技術(shù),比如說(shuō)工廠生產(chǎn)食品的時(shí)候分為四步:清洗-消毒-切割-包裝。
如果不采用流水線,一個(gè)食品完成上述四個(gè)步驟后,下一個(gè)食品才進(jìn)行處理,耗時(shí)且影響效率。但是采用流水線技術(shù),就可以同時(shí)處理四個(gè)食品。這就是并行算法中的時(shí)間并行,在同一時(shí)間啟動(dòng)兩個(gè),或兩個(gè)以上的操作,大大提高計(jì)算性能。
空間上的并行是指多個(gè)處理機(jī)并發(fā)的執(zhí)行計(jì)算,即通過(guò)網(wǎng)絡(luò)將兩個(gè)以上的處理機(jī)連接起來(lái),達(dá)到同時(shí)計(jì)算同一個(gè)任務(wù)的不同部分,或者單個(gè)處理機(jī)無(wú)法解決的大型問(wèn)題。
為了解決CPU在大規(guī)模并行運(yùn)算中遇到的困難, GPU應(yīng)運(yùn)而生,GPU全稱為Graphics Processing Unit,中文為圖形處理器,GPU最初是用在個(gè)人電腦、工作站、游戲機(jī)和一些移動(dòng)設(shè)備(如平板電腦、智能手機(jī)等)上運(yùn)行繪圖運(yùn)算工作的微處理器。
GPU采用數(shù)量眾多的計(jì)算單元和超長(zhǎng)的流水線,善于處理圖像領(lǐng)域的運(yùn)算加速。但GPU無(wú)法單獨(dú)工作,必須由CPU進(jìn)行控制調(diào)用才能工作。CPU可單獨(dú)作用,處理復(fù)雜的邏輯運(yùn)算和不同的數(shù)據(jù)類型,但當(dāng)需要大量的處理類型統(tǒng)一的數(shù)據(jù)時(shí),則可調(diào)用GPU進(jìn)行并行計(jì)算。近年來(lái),人工智能的興起主要依賴于大數(shù)據(jù)的發(fā)展、算法模型的完善和硬件計(jì)算能力的提升。其中,硬件的發(fā)展歸功于GPU的出現(xiàn)。
為什么GPU特別擅長(zhǎng)處理圖像數(shù)據(jù)呢?這是因?yàn)閳D像上的每一個(gè)像素點(diǎn),都有被處理的需要,而且,每個(gè)像素點(diǎn)處理的過(guò)程和方式都十分相似,也就成了GPU的天然溫床。
GPU簡(jiǎn)單架構(gòu)如下圖所示:
圖5. GPU微架構(gòu)示意圖
GPU的構(gòu)成相對(duì)簡(jiǎn)單,有數(shù)量眾多的計(jì)算單元和超長(zhǎng)的流水線,特別適合處理大量的類型統(tǒng)一的數(shù)據(jù)。
但GPU無(wú)法單獨(dú)工作,必須由CPU進(jìn)行控制調(diào)用才能工作。CPU可單獨(dú)作用,處理復(fù)雜的邏輯運(yùn)算和不同的數(shù)據(jù)類型,但當(dāng)需要大量的處理類型統(tǒng)一的數(shù)據(jù)時(shí),則可調(diào)用GPU進(jìn)行并行計(jì)算。
注:GPU中有很多的運(yùn)算器ALU和很少的緩存cache,緩存的目的不是保存后面需要訪問(wèn)的數(shù)據(jù)的,這點(diǎn)和CPU不同,而是為線程thread提高服務(wù)的。如果有很多線程需要訪問(wèn)同一個(gè)相同的數(shù)據(jù),緩存會(huì)合并這些訪問(wèn),然后再去訪問(wèn)dram。
再把CPU和GPU兩者放在一張圖上看下對(duì)比,就非常一目了然了。
圖6. CPU微架構(gòu)
GPU的工作大部分都計(jì)算量大,但沒(méi)什么技術(shù)含量,而且要重復(fù)很多很多次。
有個(gè)工作需要計(jì)算幾億次一百以內(nèi)加減乘除一樣,最好的辦法就是雇上幾十個(gè)小學(xué)生一起算,一人算一部分,反正這些計(jì)算也沒(méi)什么技術(shù)含量,純粹體力活而已;而CPU就像老教授,積分微分都會(huì)算,就是工資高,一個(gè)老教授能頂二十個(gè)小學(xué)生,要是富士康,雇哪個(gè)?
GPU就是用很多簡(jiǎn)單的計(jì)算單元去完成大量的計(jì)算任務(wù),純粹的人海戰(zhàn)術(shù)。這種策略基于一個(gè)前提,就是小學(xué)生A和小學(xué)生B的工作沒(méi)有什么依賴性,是互相獨(dú)立的。
但有一點(diǎn)需要強(qiáng)調(diào),雖然GPU是為了圖像處理而生的,但是,通過(guò)前面的介紹可以發(fā)現(xiàn),它在結(jié)構(gòu)上并沒(méi)有專門為圖像服務(wù)的部件,只是對(duì)CPU的結(jié)構(gòu)進(jìn)行了優(yōu)化與調(diào)整,所以,現(xiàn)在GPU不僅可以在圖像處理領(lǐng)域大顯身手,還被用來(lái)科學(xué)計(jì)算、密碼破解、數(shù)值分析,海量數(shù)據(jù)處理(排序,Map-Reduce等),金融分析等需要大規(guī)模并行計(jì)算的領(lǐng)域。
所以,GPU也可以認(rèn)為是一種較通用的芯片。
TPU
CPU和GPU都是較為通用的芯片:萬(wàn)能工具的效率永遠(yuǎn)比不上專用工具。
隨著計(jì)算需求越來(lái)越專業(yè)化,希望有芯片可以更加符合自己的專業(yè)需求,這時(shí),便產(chǎn)生了ASIC(專用集成電路)的概念。
ASIC是指依產(chǎn)品需求不同而定制化的,特殊規(guī)格集成電路,由特定使用者要求和特定電子系統(tǒng)的需要而設(shè)計(jì)、制造。簡(jiǎn)單來(lái)說(shuō),就是定制化芯片。
因?yàn)锳SIC很“專一”,只做一件事,所以,就會(huì)比CPU、GPU等能做很多件事的芯片,在某件事上做的更好,實(shí)現(xiàn)更高的處理速度和更低的能耗。但相應(yīng)的,ASIC的生產(chǎn)成本也非常高。
TPU(Tensor Processing Unit, 張量處理器),就是谷歌專門為加速深層神經(jīng)網(wǎng)絡(luò)運(yùn)算能力,研發(fā)的一款芯片,其實(shí)也是一款A(yù)SIC。
人工智能旨,在為機(jī)器賦予人的智能,機(jī)器學(xué)習(xí)是實(shí)現(xiàn)人工智能的強(qiáng)有力方法。所謂機(jī)器學(xué)習(xí),即研究如何讓計(jì)算機(jī)自動(dòng)學(xué)習(xí)的學(xué)科。TPU就是這樣一款專用于機(jī)器學(xué)習(xí)的芯片,Google于2016年5月提出的一個(gè)針對(duì)Tensorflow平臺(tái)的可編程AI加速器,其內(nèi)部的指令集在Tensorflow程序變化,或者更新算法時(shí),也可以運(yùn)行。TPU可以提供高吞吐量的低精度計(jì)算,用于模型的前向運(yùn)算而不是模型訓(xùn)練,且能效(TOPS/w)更高。在Google內(nèi)部,CPU,GPU,TPU均獲得了一定的應(yīng)用,相比GPU,TPU更加類似于DSP,盡管計(jì)算能力略有遜色,但是,其大大降低,計(jì)算速度非常的快。然而,TPU,GPU的應(yīng)用都要受到CPU的控制。
一般公司很難承擔(dān)為深度學(xué)習(xí)開(kāi)發(fā)專門ASIC芯片的成本和風(fēng)險(xiǎn)的。
谷歌提供的很多服務(wù),包括谷歌圖像搜索、谷歌照片、谷歌云視覺(jué)API、谷歌翻譯等產(chǎn)品和服務(wù)都需要用到深度神經(jīng)網(wǎng)絡(luò)。基于谷歌自身龐大的體量,開(kāi)發(fā)一種專門的芯片開(kāi)始具備規(guī)模化應(yīng)用(大量分?jǐn)傃邪l(fā)成本)的可能。
如此看來(lái),TPU登上歷史舞臺(tái)也順理成章了。
原來(lái)很多的機(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í)收集數(shù)據(jù)并產(chǎn)生結(jié)果,而訓(xùn)練過(guò)程還需要額外的資源;而第二代TPU既可以用于訓(xùn)練神經(jīng)網(wǎng)絡(luò),又可以用于推理。
為什么TPU會(huì)在性能上這么牛逼呢?TPU是怎么做到如此之快呢?
(1)深度學(xué)習(xí)的定制化研發(fā):TPU 是谷歌專門為加速深層神經(jīng)網(wǎng)絡(luò)運(yùn)算能力而研發(fā)的一款芯片,其實(shí)也是一款 ASIC(專用集成電路)。
(2)大規(guī)模片上內(nèi)存:TPU 在芯片上使用了高達(dá) 24MB 的局部?jī)?nèi)存,6MB 的累加器內(nèi)存,以及用于與主控處理器進(jìn)行對(duì)接的內(nèi)存。
(3)低精度 (8-bit) 計(jì)算:TPU 的高性能還來(lái)源于對(duì)于低運(yùn)算精度的容忍,TPU 采用了 8-bit 的低精度運(yùn)算,也就是說(shuō),每一步操作 TPU 將會(huì)需要更少的晶體管。
圖7. TPU 各模塊的框圖
TPU在芯片上使用了高達(dá)24MB的局部?jī)?nèi)存,6MB的累加器內(nèi)存以及用于與主控處理器進(jìn)行對(duì)接的內(nèi)存,總共占芯片面積的37%。
這表示谷歌充分意識(shí)到了片外內(nèi)存訪問(wèn)是GPU能效比低的罪魁禍?zhǔn)?#xff0c;因此不惜成本的在芯片上放了巨大的內(nèi)存。相比之下,英偉達(dá)同時(shí)期的K80只有8MB的片上內(nèi)存,因此需要不斷地去訪問(wèn)片外DRAM。
另外,TPU的高性能還來(lái)源于對(duì)于低運(yùn)算精度的容忍。研究結(jié)果表明,低精度運(yùn)算帶來(lái)的算法準(zhǔn)確率損失很小,但是在硬件實(shí)現(xiàn)上卻可以帶來(lái)巨大的便利,包括功耗更低、速度更快、占芯片面積更小的運(yùn)算單元、更小的內(nèi)存帶寬需求等…TPU采用了8比特的低精度運(yùn)算。
參考鏈接:
https://images2015.cnblogs.com/blog/430057/201511/430057-20151102143747180-1940496572.jpg
https://baijiahao.baidu.com/s?id=1706639922409916892&wfr=spider&for=pc
總結(jié)
以上是生活随笔為你收集整理的CPU,GPU,Memory调度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。