為什麼需要顯示卡?
看了顯示卡的結構之後可以發現,其實顯示卡的組成與電腦其他元件的組成很像,有著地位類似 CPU 的 GPU、類似記憶體的顯示記憶體、類似主機板背板的顯示輸出介面、類似 ATX 電源輸入的額外供電插座等,於是很自然而然地就會產生這個疑問了:為什麼我們還需要額外裝一張顯示卡?
在回答這個問題之前,站長想先提一個概念:聽說過「鼯鼠五技而窮」嗎?雖然鼯鼠的技能很多,但卻不能專一,進而導致「能飛不能上屋,能緣不能窮木,能遊不能渡谷,能穴不能掩身,能走不能先人」的情況,其實在半導體晶片上也有類似的現象出現。
以中央處理器 CPU 來說,只要是運算的事情,幾乎不論是甚麼它都能做,實際上顯示卡負責的圖形演算它也能做,但是相對於專精圖形運算的 GPU 來說,CPU 用來進行圖形演算的速度之慢,現今最強的 Xeon E5-2699 v4 大概甚至不及於十年前的低階顯示卡。
至於為什麼會有這樣的現象?其實並不難理解,為了達成通用的運算能力,所以實際上 CPU 的電路與指令架構是非常複雜的,但對於專精於特定用途的 GPU 來說,電路結構上其實相對簡單需多,在這樣的狀況下廠商可以較低的成本與技術能力就能在單一 GPU 晶片上建置大量的運算單元,也能夠比較容易針對特定用途來對電路進行優化,這兩大因素疊加起來之後,自然顯示卡在處理圖形演算等特定演算項目時的運算速度就比通用用途的中央處理器來得快很多了。
最顯而易見的差異就出現在運算單元的數量上,近代的 GPU 通常都內建數百個甚至 1000 ~ 2000 個圖形運算單元,但由於這些運算單元的電路本身比通用用途的 CPU 來得簡單許多,因此儘管數量增加上百倍最終導致的結果在功耗上其實只比 CPU 高出一些而已,也因此 GPU 在平行運算上的能力非常強大,遠遠超過 CPU 的平行演算能力。
上面這個影片就是 NVIDIA 在 nVISION 08 大會上以「漆彈」繪圖用來比喻 GPU 與單核心 CPU 的運算方式差異,不過當然 NVIDIA 只會提對其有利的那一面,也就是 GPU 在特定用途 (特別是平行運算比例高的工作) 上確實比 CPU 要快得多,但我們也不能忘記 CPU 的用途遠比 GPU 廣泛,且實際上有不少工作並無法平行運作這兩個事實。
GPU 取代 CPU,可行嗎?
這個問題的答案並不是簡單的非 A 則 B 可以回答的,實際上要看領域,以我們一般人使用的電腦來說,由於我們使用的功能非常多樣,連帶的電腦需要進行的運算種類也相當多樣,反而真正平行運算的量並不多,因此在一般電腦領域中,現階段 GPU 是無法取代 CPU 的。
但在超級電腦領域就不見得是這樣了,以大規模圖形運算或是物理、生物基因演算等資料量大到有平行運算需求可言的 High Performance Computing (HPC) 領域來說,GPU 的平行運算能力就相當獲得青睞,因此現今已有許多超級電腦其實是由極大量的 GPU 組成,並且讓 GPU 負責最主要的運算工作,也就是所謂的通用用途圖形處理器 (General Purposes Graphics Processing Unit, GPGPU),關於這部分在之後如果有時間的話我應該會在談到 CUDA、OpenCL 等技術時進一步說明。