在計(jì)算方面,CPU核心和GPU核心有什么區(qū)別?
PC在剛誕生的時(shí)候,其實(shí)是沒有GPU的,所有的圖形計(jì)算都由CPU來計(jì)算。后來人們意識(shí)到CPU做圖形計(jì)算太慢了,于是他們設(shè)計(jì)了專門的圖形加速卡用來幫忙處理圖形計(jì)算,再后來,NVIDIA提出了GPU的概念,將GPU提升到了一個(gè)單獨(dú)的計(jì)算單元的地位。
由于兩者面向的計(jì)算不同,CPU面對的是人們各種各樣的需求,比如你打開一個(gè)網(wǎng)頁的時(shí)候,CPU要負(fù)責(zé)網(wǎng)絡(luò)交互,要解析HTML文件和JS腳本,要構(gòu)建DOM樹,要加載各種各樣的資源,而最后才輪到GPU的事情:渲染畫面并輸出。
再舉個(gè)例子,玩游戲的時(shí)候,CPU負(fù)責(zé)完成游戲程序的邏輯、從硬盤里面加載游戲數(shù)據(jù),然后才開始把圖形相關(guān)的東西挑出來交給GPU做,而游戲中的各種運(yùn)算還是離不開CPU的幫助,比如常見的NPC,他們怎么運(yùn)動(dòng),還是需要CPU來運(yùn)算。
從上述兩個(gè)例子中就可以看出,CPU負(fù)責(zé)的是各種各樣的計(jì)算,為了應(yīng)對這么多種類的計(jì)算,它的通用性要求非常高,而這就必定會(huì)造成設(shè)計(jì)上的復(fù)雜,比如要支持if-else這類條件語句就要針對性加入一些控制單元。而GPU從誕生開始,面對的就是單一種類的計(jì)算,早期的GPU為了更好的應(yīng)對單一的圖形計(jì)算任務(wù),采用的是流水管線形式的設(shè)計(jì),通過在芯片規(guī)模上的大量堆疊,就可以獲得在圖形處理速度上的提升,從而提供更好的畫質(zhì),簡單粗暴。
所以問題的答案很明顯了,在計(jì)算上,CPU的通用性更強(qiáng),什么活都能接,但是速度都不咋地;GPU只能接圖形計(jì)算這類活,速度非常快,或者也可以接特別寫給它來計(jì)算的任務(wù),這也就是GPGPU(在圖形計(jì)算單元上進(jìn)行的通用計(jì)算)的由來。