科普:GPU&CPU

首先需要解釋CPU和GPU這兩個(gè)縮寫(xiě)分別代表什么篷牌。CPU即中央處理器,GPU即圖形處理器款票。其次控硼,要解釋兩者的區(qū)別,要先明白兩者的相同之處:兩者都有總線(xiàn)和外界聯(lián)系艾少,有自己的緩存體系卡乾,以及數(shù)字和邏輯運(yùn)算單元园蝠。一句話(huà)栓辜,兩者都為了完成計(jì)算任務(wù)而設(shè)計(jì)谒获。

兩者的區(qū)別在于存在于片內(nèi)的緩存體系和數(shù)字邏輯運(yùn)算單元的結(jié)構(gòu)差異:CPU雖然有多核恶复,但總數(shù)沒(méi)有超過(guò)兩位數(shù),每個(gè)核都有足夠大的緩存和足夠多的數(shù)字和邏輯運(yùn)算單元弧械,并輔助有很多加速分支判斷甚至更復(fù)雜的邏輯判斷的硬件铆农;GPU的核數(shù)遠(yuǎn)超CPU丢习,被稱(chēng)為眾核(NVIDIA Fermi有512個(gè)核)雏吭。每個(gè)核擁有的緩存大小相對(duì)小锁施,數(shù)字邏輯運(yùn)算單元也少而簡(jiǎn)單(GPU初始時(shí)在浮點(diǎn)計(jì)算上一直弱于CPU)。從結(jié)果上導(dǎo)致CPU擅長(zhǎng)處理具有復(fù)雜計(jì)算步驟和復(fù)雜數(shù)據(jù)依賴(lài)的計(jì)算任務(wù)思恐,如分布式計(jì)算沾谜,數(shù)據(jù)壓縮,人工智能胀莹,物理模擬基跑,以及其他很多很多計(jì)算任務(wù)等。GPU由于歷史原因描焰,是為了視頻游戲而產(chǎn)生的(至今其主要驅(qū)動(dòng)力還是不斷增長(zhǎng)的視頻游戲市場(chǎng))媳否,在三維游戲中常常出現(xiàn)的一類(lèi)操作是對(duì)海量數(shù)據(jù)進(jìn)行相同的操作,如:對(duì)每一個(gè)頂點(diǎn)進(jìn)行同樣的坐標(biāo)變換荆秦,對(duì)每一個(gè)頂點(diǎn)按照同樣的光照模型計(jì)算顏色值篱竭。GPU的眾核架構(gòu)非常適合把同樣的指令流并行發(fā)送到眾核上,采用不同的輸入數(shù)據(jù)執(zhí)行步绸。在2003-2004年左右掺逼,圖形學(xué)之外的領(lǐng)域?qū)<议_(kāi)始注意到GPU與眾不同的計(jì)算能力,開(kāi)始嘗試把GPU用于通用計(jì)算(即GPGPU)瓤介。之后NVIDIA發(fā)布了CUDA吕喘,AMD和Apple等公司也發(fā)布了OpenCL,GPU開(kāi)始在通用計(jì)算領(lǐng)域得到廣泛應(yīng)用刑桑,包括:數(shù)值分析氯质,海量數(shù)據(jù)處理(排序,Map-Reduce等)祠斧,金融分析等等闻察。

簡(jiǎn)而言之,當(dāng)程序員為CPU編寫(xiě)程序時(shí)琢锋,他們傾向于利用復(fù)雜的邏輯結(jié)構(gòu)優(yōu)化算法從而減少計(jì)算任務(wù)的運(yùn)行時(shí)間辕漂,即Latency。當(dāng)程序員為GPU編寫(xiě)程序時(shí)吩蔑,則利用其處理海量數(shù)據(jù)的優(yōu)勢(shì)钮热,通過(guò)提高總的數(shù)據(jù)吞吐量(Throughput)來(lái)掩蓋Lantency。目前烛芬,CPU和GPU的區(qū)別正在逐漸縮小隧期,因?yàn)镚PU也在處理不規(guī)則任務(wù)和線(xiàn)程間通信方面有了長(zhǎng)足的進(jìn)步。另外赘娄,功耗問(wèn)題對(duì)于GPU比CPU更嚴(yán)重仆潮。

Cache, local memory: CPU > GPU

Threads(線(xiàn)程數(shù)): GPU > CPU

Registers: GPU > CPU 多寄存器可以支持非常多的Thread,thread需要用到register,thread數(shù)目大,register也必須得跟著很大才行遣臼。

SIMD Unit(單指令多數(shù)據(jù)流,以同步方式性置,在同一時(shí)間內(nèi)執(zhí)行同一條指令): GPU > CPU。

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)需要訪(fǎng)問(wèn)的這些數(shù)據(jù),只要在之前訪(fǎng)問(wèn)過(guò)的季希,如今直接在緩存里面取即可褪那。

復(fù)雜的邏輯控制單元。當(dāng)程序含有多個(gè)分支的時(shí)候式塌,它通過(guò)提供分支預(yù)測(cè)的能力來(lái)降低延時(shí)博敬。

數(shù)據(jù)轉(zhuǎn)發(fā)。 當(dāng)一些指令依賴(lài)前面的指令結(jié)果時(shí)峰尝,數(shù)據(jù)轉(zhuǎn)發(fā)的邏輯控制單元決定這些指令在pipeline中的位置并且盡可能快的轉(zhuǎn)發(fā)一個(gè)指令的結(jié)果給后續(xù)的指令偏窝。這些動(dòng)作需要很多的對(duì)比電路單元和轉(zhuǎn)發(fā)電路單元。

GPU是基于大的吞吐量設(shè)計(jì)武学。

GPU的特點(diǎn)是有很多的ALU和很少的cache. 緩存的目的不是保存后面需要訪(fǎng)問(wèn)的數(shù)據(jù)的囚枪,這點(diǎn)和CPU不同,而是為thread提高服務(wù)的劳淆。如果有很多線(xiàn)程需要訪(fǎng)問(wèn)同一個(gè)相同的數(shù)據(jù)链沼,緩存會(huì)合并這些訪(fǎng)問(wèn),然后再去訪(fǎng)問(wèn)dram(因?yàn)樾枰L(fǎng)問(wèn)的數(shù)據(jù)保存在dram中而不是cache里面)沛鸵,獲取數(shù)據(jù)后cache會(huì)轉(zhuǎn)發(fā)這個(gè)數(shù)據(jù)給對(duì)應(yīng)的線(xiàn)程括勺,這個(gè)時(shí)候是數(shù)據(jù)轉(zhuǎn)發(fā)的角色。但是由于需要訪(fǎng)問(wèn)dram曲掰,自然會(huì)帶來(lái)延時(shí)的問(wèn)題疾捍。

GPU的控制單元(左邊黃色區(qū)域塊)可以把多個(gè)的訪(fǎng)問(wèn)合并成少的訪(fǎng)問(wèn)。

GPU的雖然有dram延時(shí)栏妖,卻有非常多的ALU和非常多的thread. 為啦平衡內(nèi)存延時(shí)的問(wèn)題乱豆,我們可以中充分利用多的ALU的特性達(dá)到一個(gè)非常大的吞吐量的效果。盡可能多的分配多的Threads.通常來(lái)看GPU ALU會(huì)有非常重的pipeline就是因?yàn)檫@樣吊趾。

所以與CPU擅長(zhǎng)邏輯控制宛裕,串行的運(yùn)算。和通用類(lèi)型數(shù)據(jù)運(yùn)算不同论泛,GPU擅長(zhǎng)的是大規(guī)模并發(fā)計(jì)算揩尸,這也正是密碼破解等所需要的。所以GPU除了圖像處理屁奏,也越來(lái)越多的參與到計(jì)算當(dāng)中來(lái)岩榆。

GPU的工作大部分就是這樣,計(jì)算量大,但沒(méi)什么技術(shù)含量勇边,而且要重復(fù)很多很多次犹撒。就像你有個(gè)工作需要算幾億次一百以?xún)?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)有什么依賴(lài)性,是互相獨(dú)立的谨敛。很多涉及到大量計(jì)算的問(wèn)題基本都有這種特性究履,比如你說(shuō)的破解密碼,挖礦和很多圖形學(xué)的計(jì)算脸狸。這些計(jì)算可以分解為多個(gè)相同的簡(jiǎn)單小任務(wù)最仑,每個(gè)任務(wù)就可以分給一個(gè)小學(xué)生去做。但還有一些任務(wù)涉及到“流”的問(wèn)題炊甲。比如你去相親泥彤,雙方看著順眼才能繼續(xù)發(fā)展∏浞龋總不能你這邊還沒(méi)見(jiàn)面呢吟吝,那邊找人把證都給領(lǐng)了。這種比較復(fù)雜的問(wèn)題都是CPU來(lái)做的颈娜。

總而言之剑逃,CPU和GPU因?yàn)樽畛跤脕?lái)處理的任務(wù)就不同,所以設(shè)計(jì)上有不小的區(qū)別官辽。而某些任務(wù)和GPU最初用來(lái)解決的問(wèn)題比較相似炕贵,所以用GPU來(lái)算了。GPU的運(yùn)算速度取決于雇了多少小學(xué)生野崇,CPU的運(yùn)算速度取決于請(qǐng)了多么厲害的教授称开。教授處理復(fù)雜任務(wù)的能力是碾壓小學(xué)生的,但是對(duì)于沒(méi)那么復(fù)雜的任務(wù),還是頂不住人多鳖轰。當(dāng)然現(xiàn)在的GPU也能做一些稍微復(fù)雜的工作了清酥,相當(dāng)于升級(jí)成初中生高中生的水平。但還需要CPU來(lái)把數(shù)據(jù)喂到嘴邊才能開(kāi)始干活蕴侣,究竟還是靠CPU來(lái)管的焰轻。

什么類(lèi)型的程序適合在GPU上運(yùn)行?

(1)計(jì)算密集型的程序昆雀。所謂計(jì)算密集型(Compute-intensive)的程序辱志,就是其大部分運(yùn)行時(shí)間花在了寄存器運(yùn)算上,寄存器的速度和處理器的速度相當(dāng)狞膘,從寄存器讀寫(xiě)數(shù)據(jù)幾乎沒(méi)有延時(shí)揩懒。可以做一下對(duì)比挽封,讀內(nèi)存的延遲大概是幾百個(gè)時(shí)鐘周期已球;讀硬盤(pán)的速度就不說(shuō)了,即便是SSD, 也實(shí)在是太慢了辅愿。

(2)易于并行的程序智亮。GPU其實(shí)是一種SIMD(Single Instruction Multiple Data)架構(gòu), 他有成百上千個(gè)核点待,每一個(gè)核在同一時(shí)間最好能做同樣的事情阔蛉。

gpu與cpu的本質(zhì)區(qū)別是前者擁有為視頻運(yùn)算專(zhuān)門(mén)設(shè)計(jì)的運(yùn)算單元: 光柵單元和紋理填充單元。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末癞埠,一起剝皮案震驚了整個(gè)濱河市馍忽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌燕差,老刑警劉巖遭笋,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異徒探,居然都是意外死亡瓦呼,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)测暗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)央串,“玉大人,你說(shuō)我怎么就攤上這事碗啄≈屎停” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵稚字,是天一觀(guān)的道長(zhǎng)饲宿。 經(jīng)常有香客問(wèn)我厦酬,道長(zhǎng),這世上最難降的妖魔是什么瘫想? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任仗阅,我火速辦了婚禮,結(jié)果婚禮上国夜,老公的妹妹穿的比我還像新娘减噪。我一直安慰自己,他們只是感情好车吹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布筹裕。 她就那樣靜靜地躺著,像睡著了一般窄驹。 火紅的嫁衣襯著肌膚如雪朝卒。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,604評(píng)論 1 305
  • 那天馒吴,我揣著相機(jī)與錄音,去河邊找鬼瑟曲。 笑死饮戳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的洞拨。 我是一名探鬼主播扯罐,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼烦衣!你這毒婦竟也來(lái)了歹河?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤花吟,失蹤者是張志新(化名)和其女友劉穎秸歧,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體衅澈,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡键菱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了今布。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片经备。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖部默,靈堂內(nèi)的尸體忽然破棺而出侵蒙,到底是詐尸還是另有隱情,我是刑警寧澤傅蹂,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布纷闺,位于F島的核電站算凿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏急但。R本人自食惡果不足惜澎媒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望波桩。 院中可真熱鬧戒努,春花似錦、人聲如沸镐躲。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)萤皂。三九已至撒穷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間裆熙,已是汗流浹背端礼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留入录,地道東北人蛤奥。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像僚稿,于是被迫代替她去往敵國(guó)和親凡桥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自:https://www.zhihu.com/question/19903344/answer/918746...
    馮諾依曼閱讀 7,777評(píng)論 4 7
  • 學(xué)號(hào):17101223364 姓名:張海潮 轉(zhuǎn)載自:http://www.cnblogs.com/biglucky...
    M張Z閱讀 412評(píng)論 0 0
  • 1. CPU vs. GPU 1.1 四種計(jì)算機(jī)模型 GPU設(shè)計(jì)的初衷就是為了減輕CPU計(jì)算的負(fù)載蚀同,將一部分圖形計(jì)...
    王偵閱讀 20,898評(píng)論 3 20
  • 看了蘇小懶的全世愛(ài)三部曲缅刽,同一個(gè)作者的東西一口氣看的太多了,就有點(diǎn)麻木了蠢络。從第一部到第二部絲婚四年第三部的家有虎崽...
    采采二小乙閱讀 474評(píng)論 0 2
  • 2017年8月11日 星期五 晴 今天女兒挺乖的衰猛,想想前兩天剛開(kāi)始預(yù)習(xí)新課,還不情愿刹孔,今天學(xué)的還挺開(kāi)心腕侄,...
    仲蕊蕊媽媽閱讀 222評(píng)論 0 7