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