-
1 # 繁星落石
-
2 # 賤賤科技館
首先需要解釋CPU和GPU這兩個縮寫分別代表什麼。CPU即中央處理器,GPU即圖形處理器。
其次,要解釋兩者的區別,要先明白兩者的相同之處:兩者都有匯流排和外界聯絡,有自己的快取體系,以及數字和邏輯運算單元。一句話,兩者都為了完成計算任務而設計。
兩者的區別在於存在於片內的快取體系和數字邏輯運算單元的結構差異:
CPU雖然有多核,但總數沒有超過兩位數,每個核都有足夠大的快取和足夠多的數字和邏輯運算單元,並輔助有很多加速分支判斷甚至更復雜的邏輯判斷的硬體;
GPU的核數遠超CPU,被稱為眾核(NVIDIA Fermi有512個核)。每個核擁有的快取大小相對小,數字邏輯運算單元也少而簡單(GPU初始時在浮點計算上一直弱於CPU)。
從結果上導致CPU擅長處理具有複雜計算步驟和複雜資料依賴的計算任務,如分散式計算,資料壓縮,人工智慧,物理模擬,以及其他很多很多計算任務等。
GPU由於歷史原因,是為了影片遊戲而產生的(至今其主要驅動力還是不斷增長的影片遊戲市場),在三維遊戲中常常出現的一類操作是對海量資料進行相同的操作,如:對每一個頂點進行同樣的座標變換,對每一個頂點按照同樣的光照模型計算顏色值。
GPU的眾核架構非常適合把同樣的指令流並行傳送到眾核上,採用不同的輸入資料執行。在2003-2004年左右,圖形學之外的領域專家開始注意到GPU與眾不同的計算能力,開始嘗試把GPU用於通用計算(即GPGPU)。
之後NVIDIA釋出了CUDA,AMD和Apple等公司也釋出了OpenCL,GPU開始在通用計算領域得到廣泛應用,包括:數值分析,海量資料處理(排序,Map-Reduce等),金融分析等等。
簡而言之,當程式設計師為CPU編寫程式時,他們傾向於利用複雜的邏輯結構最佳化演算法從而減少計算任務的執行時間,即Latency。當程式設計師為GPU編寫程式時,則利用其處理海量資料的優勢,透過提高總的資料吞吐量(Throughput)來掩蓋Lantency。
目前,CPU和GPU的區別正在逐漸縮小,因為GPU也在處理不規則任務和執行緒間通訊方面有了長足的進步。另外,功耗問題對於GPU比CPU更嚴重。
總的來講,GPU和CPU的區別是個很大的話題,甚至可以花一個學期用32個學時十幾次講座來講,所以如果提問者有更具體的問題,可以進一步提出。我會在我的知識範圍內嘗試回答。
回覆列表
CPU負責處理指令,使用者的幾乎所有的操作都會經由CPU處理,轉化為系統呼叫來執行。GPU決定手機的渲染效能,主要體現在打遊戲方面,大型遊戲對GPU效能的需求非常高,如果手機的GPU效能較弱的話,遊戲畫面會頻繁出現卡頓。