無聊的時候看到一個CPU和GPU感覺長得好像,CPU與GPU一個字母之差,但是在實物上去相差很多。CPU是電腦的中央處理器,GPU是圖形處理器。但有網友會問,到底CPU是什么?GPU是什么?GPU與CPU的區別有哪些?下面小編帶大家走進CPU,走進GPU,來更多的了解一下GPU與CPU的區別。
GPU與CPU的區別 圖1
一、CPU是什么?
CPU全稱Central Processing Unit中文名:中央處理器
CPU一般由邏輯運算單元、控制單元和存儲單元組成。在邏輯運算和控制單元中包括一些寄存器,這些寄存器用于CPU在處理數據過程中數據的暫時保存。
GPU與CPU的區別 圖2
CPU雖然有多核,但總數沒有超過兩位數,每個核都有足夠大的緩存;CPU有足夠多的數字和邏輯運算單元,并輔助有很多加速分支判斷甚至更復雜的邏輯判斷的硬件。CPU擁有超強的邏輯能力。CPU擅長處理具有復雜計算步驟和復雜數據依賴的計算任務,如分布式計算,數據壓縮,人工智能,物理模擬,以及其他很多很多計算任務等。
GPU與CPU的區別 圖3
二、GPU是什么?
GPU全稱Graphic Processing Unit中文名為:圖形處理器
GPU能夠從硬件上支持T&L(TransformandLighting,多邊形轉換與光源處理)的顯示芯片,因為T&L是3D渲染中的一個重要部分,其作用是計算多邊形的3D位置和處理動態光線效果,也可以稱為“幾何處理”。一個好的T&L單元,可以提供細致的3D物體和高級的光線特效;只不過大多數PC中,T&L的大部分運算是交由CPU處理的(這也就是所謂的軟件T&L),由于CPU的任務繁多,除了T&L之外,還要做內存管理、輸入響應等非3D圖形處理工作,因此在實際運算的時候性能會大打折扣,常常出現顯卡等待CPU數據的情況,其運算速度遠跟不上復雜三維游戲的要求。即使CPU的工作頻率超過3GHz或更高,對它的幫助也不大,由于這是PC本身設計造成的問題,與CPU的速度無太大關系。
GPU與CPU的區別 圖4
GPU是作為一個附屬型處理器出現存在的,它主要處理計算機中與圖形計算有關的工作。
GPU的核數遠超CPU,被稱為眾核,但每個核擁有的緩存大小相對小。GPU的數字邏輯運算單元也少而簡單(GPU初始時在浮點計算上一直弱于CPU)。gpu擁有超高的運算速度。GPU擅長于圖像處理,所以gpu主要是用在圖像、視頻游戲等領域。GPU的功耗遠遠超過CPU。
GPU與CPU的區別 圖5
三、GPU與CPU的區別
CPU和GPU之所以大不相同,是由于其設計目標的不同,它們分別針對了兩種不同的應用場景。CPU需要很強的通用性來處理各種不同的數據類型,同時又要邏輯判斷又會引入大量的分支跳轉和中斷的處理。這些都使得CPU的內部結構異常復雜。而GPU面對的則是類型高度統一的、相互無依賴的大規模數據和不需要被打斷的純凈的計算環境。
GPU與CPU的區別 圖6
1、CPU和GPU的架構不同
GPU與CPU的區別 圖7
其中綠色的是計算單元,橙紅色的是存儲單元,橙黃色的是控制單元。
GPU采用了數量眾多的計算單元和超長的流水線,但只有非常簡單的控制邏輯并省去了Cache。而CPU不僅被Cache占據了大量空間,而且還有有復雜的控制邏輯和諸多優化電路,相比之下計算能力只是CPU很小的一部分。
GPU如何加快軟件應用程序的運行速度
GPU加速計算可以提供非凡的應用程序性能,能將應用程序計算密集部分的工作負載轉移到GPU,同時仍由CPU運行其余程序代碼。從用戶的角度來看,應用程序的運行速度明顯加快。
GPU與CPU的區別 圖8
GPU與CPU的區別 圖9
2、GPU與CPU性能比較
理解GPU和CPU之間區別的一種簡單方式是比較它們如何處理任務。CPU由專為順序串行處理而優化的幾個核心組成,而GPU則擁有一個由數以千計的更小、更高效的核心(專為同時處理多重任務而設計)組成的大規模并行計算架構。
GPU與CPU的區別 圖10
從上圖可以看出:
Cache, local memory:CPU>GPU
Threads(線程數): GPU>CPU
Registers: GPU>CPU多寄存器可以支持非常多的Thread,thread需要用到register,thread數目大,register也必須得跟著很大才行。
SIMD Unit(單指令多數據流,以同步方式,在同一時間內執行同一條指令): GPU>CPU。
CPU基于低延時的設計:
GPU與CPU的區別 圖11
CPU有強大的ALU(算術運算單元),它可以在很少的時鐘周期內完成算術計算。
當今的CPU可以達到64bit雙精度。執行雙精度浮點源算的加法和乘法只需要1~3個時鐘周期。
CPU的時鐘周期的頻率是非常高的,達到1.532~3gigahertz(千兆HZ, 10的9次方)。
大的緩存也可以降低延時。保存很多的數據放在緩存里面,當需要訪問的這些數據,只要在之前訪問過的,如今直接在緩存里面取即可。
復雜的邏輯控制單元。當程序含有多個分支的時候,它通過提供分支預測的能力來降低延時。
數據轉發。當一些指令依賴前面的指令結果時,數據轉發的邏輯控制單元決定這些指令在pipeline中的位置并且盡可能快的轉發一個指令的結果給后續的指令。這些動作需要很多的對比電路單元和轉發電路單元。
GPU是基于大的吞吐量設計
GPU與CPU的區別 圖12
GPU的特點是有很多的ALU和很少的cache。緩存的目的不是保存后面需要訪問的數據的,這點和CPU不同,而是為thread提高服務的。如果有很多線程需要訪問同一個相同的數據,緩存會合并這些訪問,然后再去訪問dram(因為需要訪問的數據保存在dram中而不是cache里面),獲取數據后cache會轉發這個數據給對應的線程,這個時候是數據轉發的角色。但是由于需要訪問dram,自然會帶來延時的問題。
GPU的控制單元(左邊黃色區域塊)可以把多個的訪問合并成少的訪問。
GPU的雖然有dram延時,卻有非常多的ALU和非常多的thread. 為拉平衡內存延時的問題,可以充分利用多的ALU的特性達到一個非常大的吞吐量的效果。盡可能多的分配多的Threads。通常來看GPU ALU會有非常重的pipeline就是因為這樣。
所以與CPU擅長邏輯控制,串行的運算。和通用類型數據運算不同,GPU擅長的是大規模并發計算,這也正是密碼pojie等所需要的。所以GPU除了圖像處理,也越來越多的參與到計算當中來。
GPU的工作大部分就是這樣,計算量大,但沒什么技術含量,而且要重復很多很多次。
總而言之,CPU和GPU因為最初用來處理的任務就不同,所以設計上有不小的區別。
什么類型的程序適合在GPU上運行?
(1)計算密集型的程序。
所謂計算密集型(Compute-intensive)的程序,就是其大部分運行時間花在了寄存器運算上,寄存器的速度和處理器的速度相當,從寄存器讀寫數據幾乎沒有延時。可以做一下對比,讀內存的延遲大概是幾百個時鐘周期;讀硬盤的速度就不說了,即便是SSD, 也實在是太慢了。
(2)易于并行的程序。
GPU其實是一種SIMD(Single Instruction Multiple Data)架構, 他有成百上千個核,每一個核在同一時間最好能做同樣的事情。
CPU會利用較高的主頻、cache、分支預測等技術,使處理每條指令所需的時間盡可能少,從而減低具有復雜跳轉分支程序執行所需的時間。GPU則通過數量喪心病狂的流處理器實現大量線程并行,使同時走一條指令的數據變多,從而提高數據的吞吐量。
通過以上介紹,想必大家對CPU和GPU有個更多的了解,都知道GPU與CPU的區別了吧。簡單的說就是,一個是通用計算,一個是專用計算。CPU主要負責操作系統和應用程序,GPU主要負責跟顯示相關的數據處理,GPU的活CPU一般都可以干,但是效率低下,現在也有GPGPU,可以干點CPU的活。
|