GPU工作原理簡介._第1頁
GPU工作原理簡介._第2頁
免費預(yù)覽已結(jié)束,剩余6頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、GPU 工作原理簡介計算機(jī) 0601 沈凱杰【引言】在 GPU 出現(xiàn)以前,顯卡和 CPU 的關(guān)系有點像“主仆”,簡單地說這時的顯卡就是畫筆,根據(jù)各種有CPU 發(fā)出的指令和數(shù)據(jù)進(jìn)行著色,材質(zhì)的填充、渲染、輸出等。較早的娛樂用的 3D 顯卡又稱“ 3D 加速卡”,由于大部分坐標(biāo)處理的工作及光影特效需要由CPU 親自處理,占用了 CPU 太多的運算時間,從而造成整體畫面不能非常流暢地表現(xiàn)出來。例如,渲染一個復(fù)雜的三維場景,需要在一秒內(nèi)處理幾千萬個三角形頂點和光柵化幾十億的像素。早期的3D 游戲,顯卡只是為屏幕上顯示像素提供一個緩存,所有的圖形處理都是由CPU 單獨完成。圖形渲染適合并行處理,擅長于執(zhí)

2、行串行工作的 CPU 實際上難以勝任這項任務(wù)。 所以,那時在 PC 上實時生成的三維圖像 都很粗糙。不過在某種意義上,當(dāng)時的圖形繪制倒是完全可編程的,只是由CPU 來擔(dān)綱此項重任,速度上實在是達(dá)不到要求。隨著時間的推移,CPU 進(jìn)行各種光影運算的速度變得越來越無法滿足游戲開發(fā)商的要求,更多多邊形以及 特效的應(yīng)用榨干了幾乎所有的 CPU 性能,矛盾產(chǎn)生了.【目錄】第一章.GPU 的誕生3.1 GPU 中數(shù)據(jù)的處理流程3.2 CPU 與 GPU 的數(shù)據(jù)處理關(guān)系3.3 傳統(tǒng) GPU 指令的執(zhí)行3.4 GPU 的多線程及并行計算3.4.1多線程機(jī)制3.4.2并行計算第二章.GPU 的結(jié)構(gòu)第三章.GPU

3、 的工作原理第四章.GPU 未來的展望4.1 GPU 能否包辦一切4.2 GPU 時代即將到來【正文】第一章.GPU 勺誕生NVIDIA 公司在 1999 年 8 月 31 日發(fā)布 GeForce 256 圖形處理芯片時首先提出 GPU 的概念。GPU 之所以被稱為圖形處理器,最主要的原因是因為它可以進(jìn)行幾乎全部與計算機(jī)圖形有關(guān)的數(shù)據(jù)運 算,而這些在過去是 CPU 的專利。目前,計算機(jī)圖形學(xué)正處于前所未有的發(fā)展時期。近年來,GPU 技術(shù)以令人驚異的速度在發(fā)展。渲染速率每 6 個月就翻一番。性能自 99 年, 5 年來翻番了 10 次,也就是( 2 的 10 次方比 2)提高了上千倍! 與此同時

4、,不僅性能得到了提高,計算質(zhì)量和圖形編程的靈活性也逐漸得以改善。以前,PC 和計算機(jī)工作站只有圖形加速器,沒有圖形處理器( GPU,而圖形加速器只能簡單的加速 圖形渲染。而 GPU 取代了圖形加速器之后,我們就應(yīng)該摒棄圖形加速器的舊觀念。第二章.GPU 勺結(jié)構(gòu)GPU 全稱是 GraphicProcessing Unit圖形處理器,其最大的作用就是進(jìn)行各種繪制計算機(jī)圖形所需的運算,包括頂點設(shè)置、光影、像素操作等。GPU 實際上是一組圖形函數(shù)的集合,而這些函數(shù)有硬件實現(xiàn),只要用于 3D 游戲中物體移動時的坐標(biāo)轉(zhuǎn)換及光源處理。以前,這些工作都是有 CPU 配合特定軟件進(jìn)行的,GPU 從某種意義上講就

5、是為了在圖形處理過程中充當(dāng)主角而出現(xiàn)的。下圖就是一個簡單的GPU 結(jié)構(gòu)示意圖,一塊標(biāo)準(zhǔn)的GPU 主要包括 2D Engine、3D Engine、VideoProcessing Engine、FSAAEngine、顯存管理單元等。其中,3D 運算中起決定作用的是3DEngine,這是現(xiàn)代 3D 顯卡的靈魂,也是區(qū)別GPU 等級的重要標(biāo)志。3DEnglne 在各公司的產(chǎn)品中都是宣傳攻勢的重點照顧對象,名字一個比一個響,像NVIDIA 的 nFjnjtFX 系列、CineFX 系列,ATI 的 SmoothVision 系列。一個3DEngine 通常包含著 T&L 單元、VertexPr

6、oeessingEngine 、SetupEngine、PiexlShader 等部分。第三章.GPU 勺工作原理3.1 GPU 中數(shù)據(jù)的處理流程現(xiàn)在讓我們來看看第二代 GPU 是如何完整處理一個畫面的吧!首先,來自 CPU 的各種物理參數(shù)進(jìn)入 GPUVertex shader 將對頂點數(shù)據(jù)進(jìn)行基本的判斷。如果沒有需要處理的Vertex 效果,則頂點數(shù)據(jù)直接進(jìn)入T&L Unit 進(jìn)行傳統(tǒng)的 T&L 操作以節(jié)約時間提高效率。如果需要處理各種Vertex 效果,則 Vertex shader將先對各種 Vertex Programs 的指令進(jìn)行運算,一般的 Vertex Progr

7、ams 中往往包含了過去轉(zhuǎn)換、剪切、 光照運算等所需要實現(xiàn)的效果,故經(jīng)由Vertex shader 處理的效果一般不需要再進(jìn)行T&L 操作。另外,當(dāng)遇到涉及到曲面鑲嵌(把曲面,比如弓形轉(zhuǎn)換成為多邊形或三角形)的場合時。CPU 可以直接將數(shù)據(jù)交給Vertex shader 進(jìn)行處理。另外,在 DireetX8.0 的 Transform 過程中,Vertex shader 可以完成 Z 值的剔除,也就是 Back Face Culling 陰面隱去。這就意味粉除了視野以外的頂點,視野內(nèi)坡前面項點遮住的頂點也會被一并剪除, 這大大減輕了需要進(jìn)行操作的頂點數(shù)目。接下來,經(jīng)由 VertexSh

8、ader 處理完成的各種數(shù)據(jù)將流入 SetupEngine,在這里,運算單元將進(jìn)行三角形的 設(shè)置工作,這是整個繪圖過程中最重要的一個步驟,Setup Engine 甚至直接影響著一塊 GPU 勺執(zhí)行效能。三角形的設(shè)置過程是由一個個多邊形組成的,或者是用更好的三角形代替原來的三角形。在三維圖象中可 能會有些三角形被它前面的三角形擋住,但是在這個階段 3D 芯片還不知道哪些三角形會被擋住,所以三角形建立單元接收到是一個個由3 個頂點組成的完整三角形。三角形的每個角(或頂點)都有對應(yīng)的 X 軸、Y軸、Z 軸坐標(biāo)值,這些坐標(biāo)值確定了它們在3D 景物中的位置。同時,三角形的設(shè)置也確定了像素填充的范 圍。

9、,至此,VertexShader 的工作就完成了。過去第一代,設(shè)置好的三角形本來應(yīng)該帶著各自所有的參數(shù)進(jìn)入像素流水線內(nèi)進(jìn)行紋理填充和演染, 但現(xiàn)在則不同,在填充之前我們還播要進(jìn)行PiexlShader 的操作。其實,PieXIShader 并非獨立存在的,它位于紋理填充單元之后,數(shù)據(jù)流入像紊流水線后先進(jìn)入紋理填充單元進(jìn)行紋理填充,然后便是Piex!Shader 單元,經(jīng)由 PiexlShader 單元進(jìn)行各種處理運算之后再進(jìn)入像素填充單元進(jìn)行具體的粉色, 再經(jīng)由霧化等操作后,一個完整的畫面就算完成了。值得注意的是,第二代GPU 中普遮引入了獨立的顯示數(shù)據(jù)管理機(jī)制,它們位于 VertexShad

10、er、SetuPEngine 以及像素流水線之間,負(fù)資數(shù)據(jù)更有效率地傳輸和 組合、各種無效值的剔除、數(shù)據(jù)的壓縮以及寄存器的管理等工作,這個單元的岀現(xiàn)對整個GPU 工作效率的保證起到了至關(guān)重要的作用。簡而言之,GPU 的圖形(處理)流水線完成如下的工作:(并不一定是按照如下順序)頂點處理:這階段 GPU 讀取描述 3D 圖形外觀的頂點數(shù)據(jù)并根據(jù)頂點數(shù)據(jù)確定3D 圖形的形狀及位置關(guān)系,建立起 3D 圖形的骨架。在支持 DX8 和 DX9 規(guī)格的 GPU 中,這些工作由硬件實現(xiàn)的 Vertex Shader (定 點著色器)完成。光柵化計算:顯示器實際顯示的圖像是由像素組成的,我們需要將上面生成的圖

11、形上的點和線通過一 定的算法轉(zhuǎn)換到相應(yīng)的像素點。把一個矢量圖形轉(zhuǎn)換為一系列像素點的過程就稱為光柵化。例如,一條數(shù) 學(xué)表示的斜線段,最終被轉(zhuǎn)化成階梯狀的連續(xù)像素點。紋理帖圖:頂點單元生成的多邊形只構(gòu)成了3D 物體的輪廓,而紋理映射(texture mapping )工作完成對多變形表面的帖圖,通俗的說,就是將多邊形的表面貼上相應(yīng)的圖片,從而生成“真實”的圖形。TMU(Texture mapping unit)即是用來完成此項工作。像素處理:這階段(在對每個像素進(jìn)行光柵化處理期間)GPU 完成對像素的計算和處理,從而確定每個像素的最終屬性。 在支持 DX8 和 DX9 規(guī)格的 GPU 中,這些工作

12、由硬件實現(xiàn)的 Pixel Shader (像素著色器) 完成。最終輸岀:由 ROP(光柵化引擎)最終完成像素的輸岀,1 幀渲染完畢后,被送到顯存幀緩沖區(qū)。總結(jié):GPU 的工作通俗的來說就是完成 3D 圖形的生成,將圖形映射到相應(yīng)的像素點上,對每個像素進(jìn) 行計算確定最終顏色并完成輸岀。GPU 流程示意圖3.2 CPU 與 GPU 的數(shù)據(jù)處理關(guān)系如今的游戲,單單從圖象的生成來說大概需要下面四個步驟:1、Homogeneous coordinates (齊次坐標(biāo))2、Shading models (陰影建模)3、Z-Buffering ( Z-緩沖)4、Texture-Mapping (材質(zhì)貼圖)在

13、這些步驟中,顯示部分(GPU 只負(fù)責(zé)完成第三、四步,而前兩個步驟主要是依靠CPU 來完成。而且,這還僅僅只是 3D 圖象的生成,還沒有包括游戲中復(fù)雜的AI 運算。場景切換運算等等無疑,這些元素還需要 CPU 去完成,這就是為什么在運行魔獸世界的時候,當(dāng)場景切換時再強(qiáng)勁的顯卡都會岀現(xiàn) 停頓的現(xiàn)象。接下來,讓我們簡單的看一下 CPU 和 GPU 之間的數(shù)據(jù)是如何交互的。首先從硬盤中讀取模型,CPU 分類后將多邊形信息交給 GPU GPI 再時時處理成屏幕上可見的多邊形, 但是沒有紋理只有線框。模型出來后,GPU 將模型數(shù)據(jù)放進(jìn)顯存,顯卡同時也為模型貼材質(zhì),給模型上顏色。CPU 相應(yīng)從顯存中獲取多邊

14、形的信息。然后 CPU 計算光照后產(chǎn)生的影子的輪廓。等CPU 計算岀后,顯卡的工作又有了,那就是為影子中填充深的顏色這一點要注意的是,無論多牛的游戲家用顯卡,光影都是CPU 計算的,GPU 只有 2 個工作,1 多邊形生成。2 為多邊形上顏色。3.3 傳統(tǒng) GPU 指令的執(zhí)行傳統(tǒng)的 GPU 基于 SIMD 的架構(gòu)。SIMD 即卩 Single Instruction Multiple Data,單指令多數(shù)據(jù)。其實這很好理解,傳統(tǒng)的 VS 和 PS 中的 ALU(算術(shù)邏輯單元,通常每個 VS 或 PS 中都會有一個 ALU,但這不是一 定的,例如 G70 和 R5X)有兩個)都能夠在一個周期內(nèi)(

15、即同時)完成對矢量4 個通道的運算。比如執(zhí)行一條4D 指令,PS 或 VS 中勺 ALU 對指令對應(yīng)定點和像素的 4 個屬性數(shù)據(jù)都進(jìn)行了相應(yīng)的計算。這便是 SIMD 勺由來。這種 ALU 我們暫且稱它為 4D ALUo需要注意的是,4D SIMD 架構(gòu)雖然很適合處理 4D 指令,但遇到 1D 指令的時候效率便會降為原來的 1/4。此時CPUcrju用程序幾材處湮光櫥處理像索老舍眾頂貞君矩眾來栩牛咸器+單元單 元三角形魅綠沖器丟統(tǒng)內(nèi)存視頻內(nèi)存光欄操作單元ALU 3/4 的資源都被閑置。 為了提高 PS VS 執(zhí)行 1D 2D 3D 指令時的資源利用率, DirectX9 時代的 GPU 通常采用

16、 1D+3D或 2D+2D ALU 這便是 Co-issue 技術(shù)。 這種 ALU 寸 4D 指令的計算時仍然效能與傳統(tǒng)的 ALU 相同, 但當(dāng)遇 到 1D 2D 3D指令時效率則會高不少,例如如下指令:ADD RO.xyz , R0,R1 /此指令是將 R0,R1 矢量的 x,y,z 值相加 結(jié)果賦值給 R0ADD R3.x , R2,R3 /此指令是將 R2 R3 矢量的 W 直相加 結(jié)果賦值給 R3對于傳統(tǒng)的 4D ALU,顯然需要兩個周期才能完成,第一個周期ALU 利用率 75%,第二個周期利用率 25%。而對于 1D+3的 ALU 這兩條指令可以融合為一條4D 指令,因而只需要一個周

17、期便可以完成,ALU 利用率 100%。但當(dāng)然,即使采用 co-issue,ALU 利用率也不可能總達(dá)到 100%這涉及到指令并行的相關(guān)性等問題,而且, 更直觀的,上述兩條指令顯然不能被2D+2D ALI 一周期完成,而且同樣,兩條 2D 指令也不能被 1D+3D ALU 一周期完成。傳統(tǒng) GPU 在對非 4D 指令的處理顯然不是很靈活。3.4 GPU 的多線程及并行計算引言:GPU 勺功能更新很迅速,平均每一年多便有新一代的 GP 誕生,運算速度也越來越快。2004 年,2004 年推出的 GPU Nvidia GeForce 6800 Ultra可達(dá)到峰值 40 Gigaflops( 1

18、GigaFLOPS = 1 秒鐘進(jìn)行 10 億次的浮點運算),2005 年剛發(fā)布的 Nvidia GeForce 7800 GTXI 是將峰值提高至令人驚訝的169 Gigaflops。而 Intel3GHzPentium 4 采用 SSE 旨令集也只能達(dá)到 6 Gigaflops (見圖 2)。GP 的運算速度如此之快,主要得益于GPU是對圖形實時渲染量身定制的,具有兩點主要特征:超長流水線與并行計算。GPU和CPU浮點運算能力對比為了結(jié)合課程,這里只對“多線程機(jī)制及并行計算”展開討論。3.4.1 多線程機(jī)制GPU 勺執(zhí)行速度很快,但是當(dāng)運行從內(nèi)存中獲取紋理數(shù)據(jù)這樣的指令時(由于內(nèi)存訪問是瓶

19、頸, 此操作比較緩慢),整個流水線便出現(xiàn)長時間停頓。在CPC 內(nèi)部,使用多級 Cache 來提高訪問內(nèi)存的速度。GPU 中也使用 Cache,不過 Cache 命中率不高,只用 Cache 解決不了這個問題。所以,為了保持流水線保持忙碌,GPU的設(shè)計者使用了多線程機(jī)制(multi-threading)。當(dāng)像素著色器針對某個像素的線程 A 遇到存取紋理的指令時,GPI 會馬上切換到另外一個線程 B,對另一個像素進(jìn)行處理。等到紋理從內(nèi)存中取回時,可再切換到線 程 Ao例如:如果裝配一臺汽車需要,10 個時間單元,將它分成 10 個流水線階段,每個階段分配一個時間單 元,那么一條裝配線每一個時間單元

20、就可以生產(chǎn)一輛汽車。顯然流水線模式的生產(chǎn)在理想狀況下要比串行方式快了十倍。但是使用這種方法有一個前提,線程 A 與線程 B 沒有數(shù)據(jù)依賴性,也就是說兩線程之間無需通訊。如果 線程 B需要線程 A 提供某些數(shù)據(jù),那么即使切換到線程 B,線程 B 仍是無法運行,流水線還是處于空閑狀態(tài)。 不過幸運的是,圖形渲染本質(zhì)上是一個并行任務(wù)。342 并行計算無論是 CPU 送給 GPU 勺頂點數(shù)據(jù),還是 GPU 光柵生成器產(chǎn)生的像素數(shù)據(jù)都是互不相關(guān)的,可以并行地獨立處理。而且頂點數(shù)據(jù)(xyzw),像素數(shù)據(jù)(RGBA 一般都用四元數(shù)表示,適合于并行計算。在GPI 中專門設(shè)置了 SIMD 旨令來處理向量,一次可同

21、時處理四路數(shù)據(jù)。SIMD 旨令使用起來非常簡潔。此外,紋理片要么只能讀取,要么只能寫入,不允許可讀可寫,從而解決了存貯器訪問的讀寫沖突。GPI 這種對內(nèi)存使用的約束也進(jìn)一步保證了并行處理的順利完成。為了進(jìn)一步提高并行度,可以增加流水線的條數(shù)。在GeForce 6800 Ultra 中,有多達(dá) 16 組像素著色器流水線,6 組頂點著色器流水線。多條流水線可以在單一控制部件的集中控制下運行,也可以獨立運行。在單指令多數(shù)據(jù)流(SIMD 的結(jié)構(gòu)中,GPUS過單指令多數(shù)據(jù)(SIMD)指令類型來支持?jǐn)?shù)據(jù)并行計算。參見圖在單指令多數(shù)據(jù)流的結(jié)構(gòu)中,單一控制部件向每條流水線分派指令,同樣的指令被所有處理部件同時

22、執(zhí)行。例如 NVIDIA8800GT 顯卡中包含有 14 組多處理器(MultiProcessor),每組處理器有 8 個處理單元(Processor),但每組多處理器只包含一個指令單元(InstruetionUnit) 。紋理內(nèi)存另外一種控制結(jié)構(gòu)是多指令多數(shù)據(jù)流(MIMD,每條流水線都能夠獨立于其他流水線執(zhí)行不同的程序。GeForce 6800 Ultra 的頂點著色器流水線使用 MIM式控制,像素著色器流水線使用SIMD 吉構(gòu)。 MIM 能自比較有效率地執(zhí)行分支程序,而 SIMD 體系結(jié)構(gòu)運行條件語句時會造成很低的資源利用率。不過SIMD 需要硬件少,這是一個優(yōu)勢。CPI 中大部分晶體管主

23、要用于構(gòu)建控制電路(象分支預(yù)測等)和 Cache,只有少部分的晶體管來完成實 際的運算工作。而 GPU 勺控制相對簡單,而且對 Cache 的需求小,所以大部分晶體管可以組成各類專用電路、 多條流水線,使得 GPU 勺計算速度有了突破性的飛躍,擁有了驚人的處理浮點運算的能力?,F(xiàn)在CPC 的技術(shù)進(jìn)步正在慢于摩爾定律,而 GPU(視頻卡上的圖形處理器)的運行速度已超過摩爾定律,每6 個月其性能加倍。第四章.GPU 未來的展望4.1 GPU 能否包辦一切無論是電影畫面的離線渲染、地球物理學(xué)數(shù)據(jù)處理,還是水庫建模,這些運算原本都應(yīng)該由CPU 完成,那么 GPU 有沒有可能包辦一切呢?答案是肯定的。DirectX 10 和統(tǒng)一 Shader 架構(gòu)的出現(xiàn),讓 GPU 在可編程性上有了大幅度的 提升。不僅如此,飛速發(fā)展的制造工藝令GPU 可以整合更多的晶體

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論