通俗易懂告诉你CPU/GPU是什么?
通俗易懂告訴你CPU/GPU是什么?
CPU
CPU( Central Processing Unit, 中央處理器)就是機器的“大腦”,也是布局謀略、發(fā)號施令、控制行動的“總司令官”。
CPU的結構主要包括運算器(ALU, Arithmetic and Logic Unit)、控制單元(CU, Control Unit)、寄存器(Register)、高速緩存器(Cache)和它們之間通訊的數(shù)據(jù)、控制及狀態(tài)的總線。
簡單來說就是:計算單元、控制單元和存儲單元,架構如下圖所示:
圖:CPU微架構示意圖
什么?架構記不住?來,我們換種表示方法:
圖:CPU微架構示意圖(改)
嗯,大概就是這個意思。
從字面上我們也很好理解,計算單元主要執(zhí)行算術運算、移位等操作以及地址運算和轉換;存儲單元主要用于保存運算中產(chǎn)生的數(shù)據(jù)以及指令等;控制單元則對指令譯碼,并且發(fā)出為完成每條指令所要執(zhí)行的各個操作的控制信號。
所以一條指令在CPU中執(zhí)行的過程是這樣的:讀取到指令后,通過指令總線送到控制器(黃色區(qū)域)中進行譯碼,并發(fā)出相應的操作控制信號;然后運算器(綠色區(qū)域)按照操作指令對數(shù)據(jù)進行計算,并通過數(shù)據(jù)總線將得到的數(shù)據(jù)存入數(shù)據(jù)緩存器(大塊橙色區(qū)域)。過程如下圖所示:
圖:CPU執(zhí)行指令圖
是不是有點兒復雜?沒關系,這張圖完全不用記住,我們只需要知道,CPU遵循的是馮諾依曼架構,其核心就是:存儲程序,順序執(zhí)行。
講到這里,有沒有看出問題,沒錯——在這個結構圖中,負責計算的綠色區(qū)域占的面積似乎太小了,而橙色區(qū)域的緩存Cache和黃色區(qū)域的控制單元占據(jù)了大量空間。
高中化學有句老生常談的話叫:結構決定性質,放在這里也非常適用。
因為CPU的架構中需要大量的空間去放置存儲單元(橙色部分)和控制單元(黃色部分),相比之下計算單元(綠色部分)只占據(jù)了很小的一部分,所以它在大規(guī)模并行計算能力上極受限制,而更擅長于邏輯控制。
另外,因為遵循馮諾依曼架構(存儲程序,順序執(zhí)行),CPU就像是個一板一眼的管家,人們吩咐的事情它總是一步一步來做。但是隨著人們對更大規(guī)模與更快處理速度的需求的增加,這位管家漸漸變得有些力不從心。
于是,大家就想,能不能把多個處理器放在同一塊芯片上,讓它們一起來做事,這樣效率不就提高了嗎?
沒錯,GPU便由此誕生了。
GPU
在正式講解GPU之前,我們先來講講上文中提到的一個概念——并行計算。
并行計算(Parallel Computing)是指同時使用多種計算資源解決計算問題的過程,是提高計算機系統(tǒng)計算速度和處理能力的一種有效手段。它的基本思想是用多個處理器來共同求解同一問題,即將被求解的問題分解成若干個部分,各部分均由一個獨立的處理機來并行計算。
并行計算可分為時間上的并行和空間上的并行。
時間上的并行是指流水線技術,比如說工廠生產(chǎn)食品的時候分為四步:清洗-消毒-切割-包裝。
如果不采用流水線,一個食品完成上述四個步驟后,下一個食品才進行處理,耗時且影響效率。但是采用流水線技術,就可以同時處理四個食品。這就是并行算法中的時間并行,在同一時間啟動兩個或兩個以上的操作,大大提高計算性能。
圖:流水線示意圖
空間上的并行是指多個處理機并發(fā)的執(zhí)行計算,即通過網(wǎng)絡將兩個以上的處理機連接起來,達到同時計算同一個任務的不同部分,或者單個處理機無法解決的大型問題。
比如小李準備在植樹節(jié)種三棵樹,如果小李1個人需要6個小時才能完成任務,植樹節(jié)當天他叫來了好朋友小紅、小王,三個人同時開始挖坑植樹,2個小時后每個人都完成了一顆植樹任務,這就是并行算法中的空間并行,將一個大任務分割成多個相同的子任務,來加快問題解決速度。
所以說,如果讓CPU來執(zhí)行這個種樹任務的話,它就會一棵一棵的種,花上6個小時的時間,但是讓GPU來種樹,就相當于好幾個人同時在種。
GPU全稱為Graphics Processing Unit,中文為圖形處理器,就如它的名字一樣,GPU最初是用在個人電腦、工作站、游戲機和一些移動設備(如平板電腦、智能手機等)上運行繪圖運算工作的微處理器。
為什么GPU特別擅長處理圖像數(shù)據(jù)呢?這是因為圖像上的每一個像素點都有被處理的需要,而且每個像素點處理的過程和方式都十分相似,也就成了GPU的天然溫床。
GPU簡單架構如下圖所示:
圖:GPU微架構示意圖
從架構圖我們就能很明顯的看出,GPU的構成相對簡單,有數(shù)量眾多的計算單元和超長的流水線,特別適合處理大量的類型統(tǒng)一的數(shù)據(jù)。
但GPU無法單獨工作,必須由CPU進行控制調用才能工作。CPU可單獨作用,處理復雜的邏輯運算和不同的數(shù)據(jù)類型,但當需要大量的處理類型統(tǒng)一的數(shù)據(jù)時,則可調用GPU進行并行計算。
注:GPU中有很多的運算器ALU和很少的緩存cache,緩存的目的不是保存后面需要訪問的數(shù)據(jù)的,這點和CPU不同,而是為線程thread提高服務的。如果有很多線程需要訪問同一個相同的數(shù)據(jù),緩存會合并這些訪問,然后再去訪問dram。
再把CPU和GPU兩者放在一張圖上看下對比,就非常一目了然了。
GPU的工作大部分都計算量大,但沒什么技術含量,而且要重復很多很多次。
借用知乎上某大神的說法,就像你有個工作需要計算幾億次一百以內加減乘除一樣,最好的辦法就是雇上幾十個小學生一起算,一人算一部分,反正這些計算也沒什么技術含量,純粹體力活而已;而CPU就像老教授,積分微分都會算,就是工資高,一個老教授資頂二十個小學生,你要是富士康你雇哪個?
GPU就是用很多簡單的計算單元去完成大量的計算任務,純粹的人海戰(zhàn)術。這種策略基于一個前提,就是小學生A和小學生B的工作沒有什么依賴性,是互相獨立的。
但有一點需要強調,雖然GPU是為了圖像處理而生的,但是我們通過前面的介紹可以發(fā)現(xiàn),它在結構上并沒有專門為圖像服務的部件,只是對CPU的結構進行了優(yōu)化與調整,所以現(xiàn)在GPU不僅可以在圖像處理領域大顯身手,它還被用來科學計算、密碼破解、數(shù)值分析,海量數(shù)據(jù)處理(排序,Map-Reduce等),金融分析等需要大規(guī)模并行計算的領域。
所以GPU也可以認為是一種較通用的芯片。
總結
以上是生活随笔為你收集整理的通俗易懂告诉你CPU/GPU是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【深度学习】图解 9 种PyTorch中
- 下一篇: 公众号推荐:Python入门、统计学、推