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