當前位置: 華文問答 > 數位

為什麽GPU運算速度比CPU的運算速度快

2011-06-16數位

來澄清這個問題,個人認為應該從這兩個方面來看:

1. 首先 CPU 和 GPU 是為了不同的計算任務而設計的:

a)CPU 主要為序列指令而最佳化,而 GPU 則是為大規模的並列運算而最佳化。

b)從並列的角度來看,現代的多核 CPU 針對的是指令集並列(ILP)和任務並列(TLP),而 GPU 則是數據並列(DLP)。

c)在同樣面積的芯片之上,CPU 更多的放置了多級緩存(L1/L2/LLC)和指令並列相關的控制部件(亂序執行,分支預測等等),而 GPU 上則更多的是運算單元(整數、浮點的乘加單元,特殊運算單元等等)

d)GPU 往往擁有更大頻寬的 Memory,也就是所謂的視訊記憶體,因此在大吞吐量的套用中也會有很好的效能。

2. 其次 GPU 真正的速度優勢並沒有宣傳中的那麽大,這主要是因為:

a)我們所看到的這些比較中,並沒有很好的利用上 CPU 中的 SIMD 運算部件。(如 Intel 的 SSE)

b)GPU的運算任務無法獨立於CPU而執行,運算任務與數據也必須透過匯流排在GPU與CPU之間傳輸,因此很多工是無法達到理論加速的。

c)具體可以參考這篇 [ISCA'10] Debunking the 100X GPU vs. CPU myth: an evaluation of throughput computing on CPU and GPU http:// citeseerx.ist.psu.edu/v iewdoc/download?doi=10.1.1.170.2755&rep=rep1&type=pdf

題外話:怎樣更好的綜合這兩者的優勢正是未來的發展方向,可能的思路包括可重構可配置的芯片設計,或者直接將兩者整合在一起(如 AMD 的 APU),以及非對稱的多核設計(比如大核配多個小核)