GPU,學名可編程圖形處理單元,俗稱可編圖形硬件,一般被行外稱為顯卡(GPU不是顯卡,它是顯卡中的核心處理單元)。
GPU概念產(chǎn)生于20世紀70、80年代交替年間,主要用于游戲和視頻游戲方面,那時的全部戰(zhàn)力僅僅能夠快速合成幾張圖片。十年后,80、90年代交替時,出現(xiàn)了基于數(shù)字信號處理芯片,它的主要特點就是貴,當然性能得到了極大提高。1991、1995年對2D加速器的支持得到升級。

1998年是劃時代的一年, NVIDIA(英偉達)宣布modern GPU研發(fā)成功,進入GPU可編程時代,是歷史性突破。與之前的GPU不同,程序員可以將代碼運行在GPU的處理單元中,而之前的GPU僅僅能處理固定功能,一旦設計完成,用戶不能根據(jù)需求擴展功能,最多可以參與簡單的設置(固定管線著色器)。
1998年后,modern GPU的發(fā)展又分為四個階段:
第一代,代表者有NVIDIA的TNT2、 ATI的Grage 、3Dfx的Voodoo3。這一時期的GPU功能很有限,只能用于紋理組合的數(shù)學計算,或者像素值的計算。
第二代,1999年到2000年(都是時代之交),這一時期的GPU具備了三維坐標轉(zhuǎn)換和光照計算能力,OpenGL和DirectX7(圖形接口簇)相繼支持應用程序通過硬件進行坐標變換。同時對紋理的操作擴展到3維的CubeMap。代表作有NVIDDIA的GeForce256、MAX, ATI的Radeon 7500等。
第三代,2001年,支持頂點編程能力的顯卡面世(暫不支持像素編程能力)。
第四代,至今,市面的顯卡同時支持了頂點(vertex)和片段(fragment,也可翻譯成片元)編程能力。當前課程中的重要一環(huán)就是“頂點和片段著色器”。
那么同學們想一想,為什么要發(fā)展GPU呢?CPU不是也能執(zhí)行程序嗎?還要顯卡做什么呢?
先來看一張圖:

GPU:控制器少,計算單元多。
CPU:控制器很大,計算單元則很少。這里不要糾結(jié)計算單元的面積大小,這只是示意圖。
GPU采用流式并行計算模式,每一個計算單元可以單獨負責一個像素點,每個像素點不依賴旁邊像素點的數(shù)據(jù),所以每個計算單元都是獨立并行的,不需要控制器額外干涉。
CPU處理則與之不同,線性處理較多,這條數(shù)據(jù)的可能依賴上一條數(shù)據(jù)的結(jié)果,同時還需要控制器參與取指令,指出下一條指令在內(nèi)存中的位置。所以CPU的結(jié)構(gòu)不適合獨立的像素運算(像素一個一個的算效率極低)。
GPU在控制方面弱于CPU,但在并發(fā)算力方面遠遠勝于CPU。例如黑客們破解密碼時,需要大量的嘗試性計算,他們首選必是GPU。
所以,但看計算能力,GPU由于高并發(fā)能力,算力遠遠大于CPU;但說到分布、有序、控制力上,CPU要勝過GPU。