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

為什麽 CPU 的浮點運算能力比 GPU 差,為什麽不提高 CPU 的浮點運算能力?

2013-05-25數碼
@Clones

的答案是一個常見的說法,但是沒有觸及到本質。

首先,「速度區別主要是來自於架構上的區別」是一個表面化的解釋。對,架構是不同。但是這種不同是目前各個廠家選擇的現狀,還是由於本質的原因決定的?CPU 能不能增加核?GPU 那張圖為什麽不需要 cache?

首先,CPU 能不能像 GPU 那樣去掉 cache?不行。GPU 能去掉 cache 關鍵在於兩個因素:數據的特殊性(高度對齊,pipeline 處理,不符合局部化假設,很少回寫數據)、高速度的總線。對於後一個問題,CPU 受制於落後的數據總線標準,理論上這是可以改觀的。對於前一個問題,從理論上就很難解決。因為 CPU 要提供通用性,就不能限制處理數據的種類。這也是 GPGPU 永遠無法取代 CPU 的原因。

其次,CPU 能不能增加很多核?不行。首先 cache 占掉了面積。其次,CPU 為了維護 cache 的一致性,要增加每個核的復雜度。還有,為了更好的利用 cache 和處理非對齊以及需要大量回寫的數據,CPU 需要復雜的最佳化(分支預測、out-of-order 執行、以及部份模擬 GPU 的 vectorization 指令和長流水線)。所以一個 CPU 核的復雜度要比 GPU 高的多,進而成本就更高(並不是說蝕刻的成本高,而是復雜度降低了成片率,所以最終成本會高)。所以 CPU 不能像 GPU 那樣增加核。

至於控制能力,GPU 的現狀是差於 CPU,但是並不是本質問題。而像遞迴這樣的控制,並不適合高度對齊和 pipeline 處理的數據,本質上還是數據問題。