-
1 # IT數碼大排檔
-
2 # 熊貓愛飛行
CPU(central processing unit)叫做中央處理器,它是一塊超大規模的積體電路,是一臺計算機的控制於運算的核心,它的主要功能是解釋計算機指令和處理計算機軟體中的資料,相當於計算機的大腦。
GPU(graphics processing unit)叫做圖形處理器,又可稱為顯示晶片,是一種專門在個人電腦、工作站、遊戲機和一些移動裝置(如平板電腦、智慧手機等)上影象運算工作的微處理器。GPU能夠把計算機所需要顯示的資訊進行轉換,並向顯示器提供掃描訊號,控制顯示器的正確顯示,是連線顯示器和個人電腦主機板的重要元件,是人機對話的重要裝置之一。
它們兩者由於針對不同的應用場景,因此設計目標不同,架構也大不相同。CPU的內部結構異常複雜,因為CPU需要很強的通用性來處理各種不同的資料型別,同時又要邏輯判斷、又會引入大量的分支跳轉和中斷的處理。而GPU面對計算環境相對來說結構單一,因而架構比CPU要簡單些。兩者架構如下圖。
其中綠色的是計算單元,紅色的是儲存單元,橙黃色的是控制單元。
快取:
CPU快取結構龐大,目前主流的CPU晶片上都有三級快取,快取結構消耗了大量的電晶體,在執行的時候耗電非常厲害。而GPU晶片最多兩級快取,多出來的晶體空間GPU都可以用來做成ALU單元,也因此GPU比CPU的效率要高一些。
浮點運算:
CPU除了負責浮點整形運算外,還有很多其他的指令集的負載,比如硬體解碼、多媒體解碼等,所以CPU是個多面手。而GPU基本上就是隻做浮點運算的,也正是因為如此,所以架構簡單,因而速度更快。
響應方式:
CPU要求的是實時響應,對單任務的速度要求很高,所以就要用很多層快取的辦法來保證單任務的速度。對GPU來說大家不關心第一個畫素什麼時候計算完成,而是都關心最後一個畫素什麼時候計算出來,所以GPU就把所有的任務都排好,然後再批處理,這樣對快取的要求就很低了。舉個不恰當的例子,你敲擊10次鍵盤,CPU要每一次敲擊都要及時響應,而GPU會等第10次全部敲擊完成後,再一次性批處理響應。
應用方向:
像作業系統這一類應用,需要快速響應實時資訊,需要針對延遲最佳化,所以電晶體數量和能耗都需要用在分支預測,亂序執行上,低延遲快取等控制部分,而這都是CPU的所擅長的。對於像矩陣一類的運算,具有極高的可預測性和大量相似運算的,這種高延遲,高吞吐的架構運算,就非常適合GPU。
總結一下,CPU和GPU因為最初用來處理的任務就不同,所以設計上有不小的區別。CPU擅長處理複雜問題,但是對於某些機械化程度較高且又繁重的任務,GPU比CPU更有優勢。
回覆列表
(在下才疏淺薄或有理解不當的,說錯舉例錯誤敬請諒解)
CPU、GPU晶片內電晶體是由二極體、三極體、電容、電阻等組成的集合體,屬於一個總稱,不全是純二極體組成。
二極體是電晶體的一種,但電晶體並不單指二極體。二極體具有僅允許電流從正極到負極單方向透過的特性,所以可以用二極體作為晶片的電流控制“逆止閥”。
CPU和GPU發展那麼多年,都有很詳細的工作原理圖,所以不再說明其工作過程。
這裡主要說他們的計算區別。
英偉達在CUDA文件裡有提到:CPU和GPU之間浮點能力差異背後的原因是GPU專門用於計算密集型,高度平行計算 ,這正是圖形渲染的關鍵 。 因此GPU設計更多電晶體用於資料處理而不是資料快取和流量控制。
△GPU為資料處理提供了更多的電晶體(綠色是計算單元,橙色是儲存單元,黃色是控制單元)
從上圖可以看出,CPU內單個ALU比GPU的ALU更為強大,所以在一個時鐘週期計算能力更為強大。CPU不僅被儲存單元佔據了大量空間,並且還擁有強大的控制單元(控制邏輯單元),相較而言計算能力只是CPU很小的一部分。這些設計和各種最佳化電路讓CPU擁有非常全面並且強大的計算能力,但有個缺點是無論簡單還是複雜的任務CPU都會一視同仁用心去完成,採用任務排隊的順序處理的序列計算方式——即每個時鐘週期只處理一個任務直到完成後才執行下個任務的計算。
GPU的設計是一個時鐘週期儘可能完成多而簡單的任務,計算方式是非常多的任務同時處理的計算方式。更詳細地說,GPU特別適合解決資料平行計算的問題 , 在許多資料上並行執行相同的程式 。因為對每個資料執行相同的程式,所以對複雜控制要求較低,並且因為它在許多資料上執行擁有高計算強度,所以可以不需要儲存單元來降低訪問延遲。
GPU平行計算將資料對映到並行處理執行緒,在3D渲染中大量畫素和頂點被對映到並行執行緒。類似諸如渲染影象的後處理、影片編碼和解碼、影象縮放、立體視覺和模式識別的影象和媒體處理應用可以將影象塊和畫素對映到並行處理執行緒。
因為GPU和GPU計算方式差異,所以CPU的計算範圍幾乎無所不能並且高質高量,而GPU計算範圍較為單一但簡單快速粗暴。
此段來自英偉達官方:理解 GPU 和 CPU 之間區別的一種簡單方式是比較它們如何處理任務。CPU 由專為順序序列處理而最佳化的幾個核心組成,而 GPU 則擁有一個由數以千計的更小、更高效的核心(專為同時處理多重任務而設計)組成的大規模平行計算架構。CPU是通用計算,GPU是專用計算。不過隨著GPU計算方式更新改進最佳化,目前已經實現了影象渲染和處理領域之外的更多領域的計算應用。
唔~網友形容的CPU就是學校裡的老教授,微分積分啥都懂啥都會。GPU就是一大群小學生只會簡單的加減。
這天學校派了個任務,要求計算十萬個100個加減法的結果。老教授那是搞微積分怎能掉份呢?雖然轉念一想就可以搞定一個,但尼瑪有十萬個得花費多少時間呀。於是老教授把這些計算任務交給了那群小學生去計算,每個小學生各負責計算一部分不能互相干涉,最後把結果彙總呈報上來等待下一個多數量的簡單計算任務即可。
在大學教授豐富淵博的知識影響薰陶下,那群小學生慢慢地已經不止會做簡單的加減,還會做簡單的乘法除法……再再再後來,大學教授發現那群小學生已經成長為高中生了,正在攻讀《三年高考五年模擬》……
△深度學習圖示