CPU 與 GPU 的差異:結構、擅長的運算、用途比較

CPU 是為了盡可能快速完成單一工作而設計,擁有少量強大的核心、大型快取與聰明的控制電路。GPU 則是為了同時處理大量相似的工作而設計,配備數千個簡單的運算單元,並藉由切換龐大數量的執行緒來隱藏記憶體的等待時間。CPU 適合複雜且分支多的循序處理,GPU 則適合影像處理與深度學習這類大規模的平行運算。

項目CPUGPU
設計目的低延遲。盡可能快速完成單一執行緒高傳輸量。整體盡可能完成最多的工作
核心數數個至數百個複雜的核心數千個簡單的運算單元,並分成數個群組
執行模型每個核心具備推測執行(亂序執行)與分支預測,也使用 SIMD 指令SIMT。執行緒群組(例如 32 個)同步執行相同的指令
控制電路與快取大型快取與高階控制電路佔去晶片面積的大部分將大部分面積用於運算單元。每個執行緒的快取較小
隱藏記憶體延遲的方式主要靠快取與預取主要是從等待中的執行緒切換到其他可執行的執行緒
記憶體DDR 與 LPDDR。頻寬一般為數十至數百 GB/sGDDR 與 HBM。頻寬一般為數百 GB/s 至數 TB/s
分支擅長處理分支與不規則的程式碼若群組內的執行緒走向不同分支就會變慢(分歧,divergence)
資料的存放位置直接處理主記憶體外接式 GPU 擁有專用記憶體,因此需要透過 PCIe 等複製資料
程式設計大部分的語言與工具都能使用CUDA、HIP、OpenCL、著色器語言等專用模型
擅長的運算作業系統、資料庫、控制邏輯、一般應用程式圖形、矩陣與向量運算、深度學習、模擬

數值為具代表性的大致參考值,會因世代或產品而異。

適用於什麼情況

CPU
處理為循序且分支多,或單一執行緒需要快速回應時。例如作業系統的執行、應用程式的邏輯、資料庫等。
GPU
要將相同的運算套用到大量資料時。例如影像渲染、神經網路的訓練與推論、科學技術模擬等。
搭配使用
大部分系統兩者都會使用。CPU 執行程式並準備資料,GPU 負責繁重的平行運算。若交給 GPU 的工作太少,複製資料會花費時間,有時甚至比只用 CPU 還慢。

常見問題

為什麼深度學習中 GPU 比 CPU 快?

深度學習以可拆分成相同運算的矩陣運算為主。GPU 擁有數千個簡單的運算單元,記憶體頻寬也非常高,因此比擁有少量複雜核心的 CPU 更擅長處理這類平行工作。

GPU 可以取代 CPU 嗎?

不能。GPU 不擅長分支多的循序程式碼,作業系統的執行與資料的供應仍需要 CPU。兩者是合作運作的。

GPU 的 SIMT 是什麼?

SIMT(單指令多執行緒)是讓例如 32 個執行緒的群組,對不同的資料同步執行相同指令的方式。若群組內走向不同的分支,就會變成依序執行,這稱為分歧(divergence)。

為什麼處理量小時使用 GPU 有時反而會變慢?

資料必須透過 PCIe 等匯流排,在 CPU 的記憶體與 GPU 的記憶體之間複製。處理量少時,複製所花的時間可能比 GPU 所能節省的時間還要多。

理解度檢測

GPU 適合矩陣運算以及 AI 訓練與推論的主要原因為何?

  1. A因為時脈頻率是 CPU 的 100 倍以上
  2. B因為具有大量單純的運算單元,能平行處理大量資料
  3. C因為沒有記憶體
查看答案與解析

正確答案:B. 因為具有大量單純的運算單元,能平行處理大量資料

GPU 原本是為了同時處理螢幕上的大量像素,因此其結構是並排數千〜上萬個以上的單純運算單元。像矩陣運算這種對大量資料重複相同計算的處理,可藉由這種平行性發揮高效能。近年來 GPU 配備了矩陣運算專用單元(Tensor Core 等)與高頻寬的 HBM,已成為 AI 訓練的主角。分支多的循序處理則是 CPU 較為擅長。

前往GPU程式設計的練習題

相關名詞的解說

GPU
為 Graphics Processing Unit 的縮寫。擁有大量簡單運算單元,平行處理大量資料的處理器。除影像處理外,也廣泛用於 AI 的訓練與推論。
SIMD
為 Single Instruction, Multiple Data 的縮寫。以 1 個指令對多筆資料同時進行相同運算的方式。可加速影像處理與 AI 的計算。
快取記憶體
設置在 CPU 附近的高速、小容量記憶體。保存常用資料,以緩和與主記憶體之間的速度差。主要由 SRAM 製成。
HBM(高頻寬記憶體)
以TSV堆疊多個DRAM晶粒,藉由非常寬的匯流排寬度實現高頻寬的記憶體。

相關的比較