顯卡的發(fā)展可以說是非常的快,人們對于視覺化上的要求也越來越高,隨著用戶對于圖像處理上面的要求不斷超出處理器的計算能力。另一方面CPU處理能力也不斷強大,但在進入3D時代后,人們發(fā)現(xiàn)龐大的3D圖像處理數(shù)據(jù)計算使得CPU越來越不堪重荷,并且遠遠超出其計算能力。圖形計算需求日益增多,作為計算機的顯示芯片也飛速發(fā)展。隨后人們發(fā)現(xiàn)顯示芯片的計算能力也無法滿足快速增長的圖形計算需求時,圖形,圖像計算等計算的功能被脫離出來單獨成為一塊芯片設(shè)計,這就是現(xiàn)在的圖形計算處理器——GPU(Graphics Processing Unit),也就是顯卡。
1999年8月,NVIDIA終于正式發(fā)表了具有跨世紀意義的產(chǎn)品NV10——GeForce 256。GeForce256是業(yè)界第一款256bit的GPU,也是全球第一個集成T&L(幾何加速/轉(zhuǎn)換)、動態(tài)光影、三角形設(shè)置/剪輯和四像素渲染等3D加速功能的圖形引擎。通過T&L技術(shù),顯卡不再是簡單像素填充機以及多邊形生成器,它還將參與圖形的幾何計算從而將CPU從繁重的3D管道幾何運算中解放出來。在這代產(chǎn)品中,NVIDIA推出了兩個全新的名詞——GPU以GeForce。所以從某種意義上說,GeForce 256開創(chuàng)了一個全新的3D圖形時代,NVIDIA終于從追隨者走向了領(lǐng)導(dǎo)者。再到后來GeForce 3開始引出可編程特性,能將圖形硬件的流水線作為流處理器來解釋,基于GPU的通用計算也開始出現(xiàn)。
到了Nvidia GeForce6800這一代GPU,功能相對以前更加豐富、靈活。頂點程序可以直接訪問紋理,支持動態(tài)分支;象素著色器開始支持分支操作,包括循環(huán)和子函數(shù)調(diào)用,TMU支持64位浮點紋理的過濾和混合,ROP(象素輸出單元)支持MRT(多目標渲染)等。象素和頂點可編程性得到了大大的擴展,訪問方式更為靈活,這些對于通用計算而言更是重要突破。
真正意義的變革,是G80的出現(xiàn),真正的改變隨著DX10到來發(fā)生質(zhì)的改變,基于DX10統(tǒng)一渲染架構(gòu)下,顯卡已經(jīng)拋棄了以前傳統(tǒng)的渲染管線,取而代之的是統(tǒng)一流處理器,除了用作圖像渲染外,流處理器自身有著強大的運算能力。我們知道CPU主要采用串行的計算方式,由于串行運算的局限性,CPU也正在向并行計算發(fā)展,比如目前主流的雙核、四核CPU,如果我們把這個概念放到現(xiàn)在的GPU身上,核心的一個流處理相當(dāng)于一個“核”,GPU的“核”數(shù)量已經(jīng)不再停留在單位數(shù),而是幾十甚至是上百個。下面看看G80的架構(gòu)圖:
步入DX10時代,shader(流處理器)單元數(shù)量成為衡量顯卡級別的重要參數(shù)之一
G80中擁有128個單獨的ALU,因此非常適合并行計算,而且數(shù)值計算的速度遠遠優(yōu)于CPU。
GPU運算能力越來越快,甚至超越CPU
早期的3D游戲,顯卡只是為屏幕上顯示像素提供一個緩存,所有的圖形處理都是由CPU單獨完成。圖形渲染適合并行處理,擅長于執(zhí)行串行工作的CPU實際上難以勝任這項任務(wù)。直到1995年,PC機領(lǐng)域第一款GPU 3dfx Voodoo出來以后,游戲的速度、畫質(zhì)才取得了一個飛躍。GPU的功能更新很迅速,平均每一年多便有新一代的GPU誕生,運算速度也越來越快。
綜上所述,GPU并行處理的理論性能要遠高于CPU。同時,我們也可以通過上面這組NVIDIA統(tǒng)計的近兩年來GPU與CPU之間浮點運算能力提升對比表格來看一下。
Intel Core2Due G80 Chip 運算能力比較
24 GFLOPS 520 GFLOPS GPU快21.6倍
雖然我們看到CPU和GPU在運算能力上面的巨大差距,但是我們要看看他們設(shè)計之初所負責(zé)的工作。CPU設(shè)計之初所負責(zé)的是如何把一條一條的數(shù)據(jù)處理玩,CPU的內(nèi)部結(jié)構(gòu)可以分為控制單元、邏輯單元和存儲單元三大部分,三個部分相互協(xié)調(diào),便可以進行分析,判斷、運算并控制計算機各部分協(xié)調(diào)工作。其中運算器主要完成各種算術(shù)運算(如加、減、乘、除)和邏輯運算( 如邏輯加、邏輯乘和非運算); 而控制器不具有運算功能,它只是讀取各種指令,并對指令進行分析,作出相應(yīng)的控制。通常,在CPU中還有若干個寄存器,它們可直接參與運算并存放運算的中間結(jié)果。CPU的工作原理就像一個工廠對產(chǎn)品的加工過程:進入工廠的原料(程序指令),經(jīng)過物資分配部門(控制單元)的調(diào)度分配,被送往生產(chǎn)線(邏輯運算單元),生產(chǎn)出成品(處理后的數(shù)據(jù))后,再存儲在倉庫(存儲單元)中,最后等著拿到市場上去賣(交由應(yīng)用程序使用)。在這個過程中,從控制單元開始,CPU就開始了正式的工作,中間的過程是通過邏輯運算單元來進行運算處理,交到存儲單元代表工作的結(jié)束。數(shù)據(jù)從輸入設(shè)備流經(jīng)內(nèi)存,等待CPU的處理。
而GPU卻從最初的設(shè)計就能夠執(zhí)行并行指令,從一個GPU核心收到一組多邊形數(shù)據(jù),到完成所有處理并輸出圖像可以做到完全獨立。由于最初GPU就采用了大量的執(zhí)行單元,這些執(zhí)行單元可以輕松的加載并行處理,而不像CPU那樣的單線程處理。另外,現(xiàn)代的GPU也可以在每個指令周期執(zhí)行更多的單一指令。例如,在某些特定環(huán)境下,Tesla架構(gòu)可以同時執(zhí)行MAD+MUL or MAD+SFU。
CPU和GPU的架構(gòu)區(qū)別
可以看到GPU越來越強大,GPU為顯示圖像做了優(yōu)化之外,在計算上已經(jīng)超越了通用的CPU。如此強大的芯片如果只是作為顯卡就太浪費了,因此NVidia推出CUDA,讓顯卡可以用于圖像計算以外的目的,也就是超于游戲,使得GPU能夠發(fā)揮其強大的運算能力。
N年前NVIDIA發(fā)布CUDA,這是一種專門針對GPU的C語言開發(fā)工具。與以往采用圖形API接口指揮GPU完成各種運算處理功能不同,CUDA的出現(xiàn)使研究人員和工程師可以在熟悉的C語言環(huán)境下,自由地輸入代碼調(diào)用GPU的并行處理架構(gòu)。這使得原先需要花費數(shù)天數(shù)周才能出結(jié)果的運算大大縮短到數(shù)幾小時,甚至幾分鐘之內(nèi)。
CUDA是用于GPU計算的開發(fā)環(huán)境,它是一個全新的軟硬件架構(gòu),可以將GPU視為一個并行數(shù)據(jù)計算的設(shè)備,對所進行的計算進行分配和管理。在CUDA的架構(gòu)中,這些計算不再像過去所謂的GPGPU架構(gòu)那樣必須將計算映射到圖形API(OpenGL和Direct 3D)中,因此對于開發(fā)者來說,CUDA的開發(fā)門檻大大降低了。CUDA的GPU編程語言基于標準的C語言,因此任何有C語言基礎(chǔ)的用戶都很容易地開發(fā)CUDA的應(yīng)用程序。
那么,如何使得CPU與GPU之間很好的進行程序之間的銜接呢?以GPGPU的概念來看,顯卡仍然需要以傳統(tǒng)的DirectX和OpenGL這樣的API來實現(xiàn),對于編程人員來說,這樣的方法非常繁瑣,而CUDA正是以GPGPU這個概念衍生而來的新的應(yīng)用程序接口,不過CUDA則提供了一個更加簡便的方案——C語言。
-
芯片
+關(guān)注
關(guān)注
459文章
52061瀏覽量
435121 -
cpu
+關(guān)注
關(guān)注
68文章
11026瀏覽量
215696 -
gpu
+關(guān)注
關(guān)注
28文章
4900瀏覽量
130560
發(fā)布評論請先 登錄
同時DSP2812的源文件,命名不同,到底有什么區(qū)別?
KEIL、uVision、MDK、KEIL C51、RealView它們到底有什么區(qū)別?
CPU和GPU與TPU是如何工作的到底有什么區(qū)別
CAN通訊中摩托羅拉格式與英特爾格式到底有什么區(qū)別

評論