GPU全稱是GraphicProcessing Unit--圖形處理器,其最大的作用就是進行各種繪制計算機圖形所需的運算,包括頂點設置、光影、像素操作等。GPU實際上是一組圖形函數的集合,而這些函數有硬件實現,只要用于3D游戲中物體移動時的坐標轉換及光源處理。在很久以前,這些工作都是由CPU配合特定軟件進行的,后來隨著圖像的復雜程度越來越高,單純由CPU進行這項工作對于CPU的負荷遠遠超出了CPU的正常性能范圍,這個時候就需要一個在圖形處理過程中擔當重任的角色,GPU也就是從那時起正式誕生了。
從GPU的結構示意圖上來看,一塊標準的GPU主要包括通用計算單元、控制器和寄存器,從這些模塊上來看,是不是跟和CPU的內部結構很像呢?
事實上兩者的確在內部結構上有許多類似之處,但是由于GPU具有高并行結構(highly parallel structure),所以GPU在處理圖形數據和復雜算法方面擁有比CPU更高的效率。上圖展示了GPU和CPU在結構上的差異,CPU大部分面積為控制器和寄存器,與之相比,GPU擁有更多的ALU(Arithmetic Logic Unit,邏輯運算單元)用于數據處理,而非數據高速緩存和流控制,這樣的結構適合對密集型數據進行并行處理。CPU執行計算任務時,一個時刻只處理一個數據,不存在真正意義上的并行,而GPU具有多個處理器核,在一個時刻可以并行處理多個數據。
GPU采用流式并行計算模式,可對每個數據進行獨立的并行計算,所謂“對數據進行獨立計算”,即,流內任意元素的計算不依賴于其它同類型數據,例如,計算一個頂點的世界位置坐標,不依賴于其他頂點的位置。而所謂“并行計算”是指“多個數據可以同時被使用,多個數據并行運算的時間和1個數據單獨執行的時間是一樣的”。
簡而言之,GPU的圖形(處理)流水線完成如下的工作:(并不一定是按照如下順序)
頂點處理:這階段GPU讀取描述3D圖形外觀的頂點數據并根據頂點數據確定3D圖形的形狀及位置關系,建立起3D圖形的骨架。在現有的GPU中,這些工作由硬件實現的Vertex Shader(定點著色器)完成。
光柵化計算:顯示器實際顯示的圖像是由像素組成的,我們需要將上面生成的圖形上的點和線通過一定的算法轉換到相應的像素點。把一個矢量圖形轉換為一系列像素點的過程就稱為光柵化。例如,一條數學表示的斜線段,最終被轉化成階梯狀的連續像素點。
紋理帖圖:頂點單元生成的多邊形只構成了3D物體的輪廓,而紋理映射(texture mapping)工作完成對多變形表面的帖圖,通俗的說,就是將多邊形的表面貼上相應的圖片,從而生成“真實”的圖形。TMU(Texture mapping unit)即是用來完成此項工作。
像素處理:這階段(在對每個像素進行光柵化處理期間)GPU完成對像素的計算和處理,從而確定每個像素的最終屬性。在支持DX8和DX9規格的GPU中,這些工作由硬件實現的Pixel Shader(像素著色器)完成。
最終輸出:由ROP(光柵化引擎)最終完成像素的輸出,1幀渲染完畢后,被送到顯存幀緩沖區。
GPU的工作通俗的來說就是完成3D圖形的生成,將圖形映射到相應的像素點上,對每個像素進行計算確定最終顏色并完成輸出。
不過需要注意的是,無論多牛的游戲家用顯卡,光影都是CPU計算的,GPU只有2個工作,1多邊形生成。2為多邊形上顏色。
實際應用中圖像的生成流程大致如下:
首先從硬盤中讀取模型, CPU分類后將多邊形信息交給GPU,GPU再時時處理成屏幕上可見的多邊形,但是沒有紋理只有線框。CPU計算出模型后,GPU將模型數據放進顯存,顯卡同時也為模型貼材質,給模型上顏色。CPU相應從顯存中獲取多邊形的信息。然后CPU計算光照后產生的影子的輪廓。等CPU計算出后,顯卡的工作又有了,那就是為影子中填充深的顏色。周而復始,完成CPU與GPU之間的數據交換。
-
cpu
+關注
關注
68文章
10825瀏覽量
211150 -
gpu
+關注
關注
28文章
4701瀏覽量
128705
原文標題:計算機基礎之GPU結構及工作原理簡析
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論