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