談GPU的作用、原理及與CPU、DSP的區(qū)別
GPU是顯示卡的“心臟”,也就相當(dāng)于CPU在電腦中的作用,它決定了該顯卡的檔次和大部分性能,同時也是2D顯示卡和3D顯示卡的區(qū)別依據(jù)。2D顯示芯片在處理3D圖像和特效時主要依賴CPU的處理能力,稱為“軟加速”。3D顯示芯片是將三維圖像和特效處理功能集中在顯示芯片內(nèi),也即所謂的“硬件加速”功能。顯示芯片通常是顯示卡上最大的芯片(也是引腳最多的)。GPU使顯卡減少了對CPU的依賴,并進行部分原本CPU的工作,尤其是在3D圖形處理時。GPU所采用的核心技術(shù)有硬體T
本文引用地址:http://m.butianyuan.cn/article/274881.htmGPU能夠從硬件上支持T&L(TransformandLighting,多邊形轉(zhuǎn)換與光源處理)的顯示芯片,因為T&L是3D渲染中的一個重要部分,其作用是計算多邊形的3D位置和處理動態(tài)光線效果,也可以稱為“幾何處理”。一個好的T&L單元,可以提供細(xì)致的3D物體和高級的光線特效;只不過大多數(shù)PC中,T&L的大部分運算是交由CPU處理的(這就也就是所謂的軟件T&L),由于CPU的任務(wù)繁多,除了T&L之外,還要做內(nèi)存管理、輸入響應(yīng)等非3D圖形處理工作,因此在實際運算的時候性能會大打折扣,常常出現(xiàn)顯卡等待CPU數(shù)據(jù)的情況,其運算速度遠(yuǎn)跟不上今天復(fù)雜三維游戲的要求。即使CPU的工作頻率超過1GHz或更高,對它的幫助也不大,由于這是PC本身設(shè)計造成的問題,與CPU的速度無太大關(guān)系。
主要作用
今天,GPU已經(jīng)不再局限于3D圖形處理了,GPU通用計算技術(shù)發(fā)展已經(jīng)引起業(yè)界不少的關(guān)注,事實也證明在浮點運算、并行計算等部分計算方面,GPU可以提供數(shù)十倍乃至于上百倍于CPU的性能,如此強悍的“新星”難免會讓CPU廠商老大英特爾為未來而緊張,NVIDIA和英特爾也經(jīng)常為CPU和GPU誰更重要而展開口水戰(zhàn)。GPU通用計算方面的標(biāo)準(zhǔn)目前有OPEN CL、CUDA、ATI STREAM.其中,OpenCL(全稱Open Computing Language,開放運算語言)是第一個面向異構(gòu)系統(tǒng)通用目的并行編程的開放式、免費標(biāo)準(zhǔn),也是一個統(tǒng)一的編程環(huán)境,便于軟件開發(fā)人員為高性能計算服務(wù)器、桌面計算系統(tǒng)、手持設(shè)備編寫高效輕便的代碼,而且廣泛適用于多核心處理器(CPU)、圖形處理器(GPU)、Cell類型架構(gòu)以及數(shù)字信號處理器(DSP)等其他并行處理器,在游戲、娛樂、科研、醫(yī)療等各種領(lǐng)域都有廣闊的發(fā)展前景,AMD-ATI、NVIDIA現(xiàn)在的產(chǎn)品都支持OPEN CL.NVIDIA公司在1999年發(fā)布GeForce 256圖形處理芯片時首先提出GPU的概念。從此NV顯卡的芯就用這個新名字GPU來稱呼。GPU使顯卡減少了對CPU的依賴,并進行部分原本CPU的工作,尤其是在3D圖形處理時。GPU所采用的核心技術(shù)有硬體T
工作原理
簡單說GPU就是能夠從硬件上支持T&L(Transform and Lighting,多邊形轉(zhuǎn)換與光源處理)的顯示芯片,因為T&L是3D渲染中的一個重要部分,其作用是計算多邊形的3D位置和處理動態(tài)光線效果,也可以稱為“幾何處理”。一個好的T&L單元,可以提供細(xì)致的3D物體和高級的光線特效;只不過大多數(shù)PC中,T&L的大部分運算是交由CPU處理的(這就也就是所謂的軟件T&L),由于CPU的任務(wù)繁多,除了T&L之外,還要做內(nèi)存管理、輸入響應(yīng)等非3D圖形處理工作,因此在實際運算的時候性能會大打折扣,常常出現(xiàn)顯卡等待CPU數(shù)據(jù)的情況,其運算速度遠(yuǎn)跟不上今天復(fù)雜三維游戲的要求。即使CPU的工作頻率超過1GHz或更高,對它的幫助也不大,由于這是PC本身設(shè)計造成的問題,與CPU的速度無太大關(guān)系。
GPU與DSP區(qū)別
GPU在幾個主要方面有別于DSP(Digital Signal Processing,簡稱DSP(數(shù)字信號處理)架構(gòu)。其所有計算均使用浮點算法,而且目前還沒有位或整數(shù)運算指令。此外,由于GPU專為圖像處理設(shè)計,因此存儲系統(tǒng)實際上是一個二維的分段存儲空間,包括一個區(qū)段號(從中讀取圖像)和二維地址(圖像中的X、Y坐標(biāo))。此外,沒有任何間接寫指令。輸出寫地址由光柵處理器確定,而且不能由程序改變。這對于自然分布在存儲器之中的算法而言是極大的挑戰(zhàn)。最后一點,不同碎片的處理過程間不允許通信。實際上,碎片處理器是一個SIMD數(shù)據(jù)并行執(zhí)行單元,在所有碎片中獨立執(zhí)行代碼。
盡管有上述約束,但是GPU還是可以有效地執(zhí)行多種運算,從線性代數(shù)和信號處理到數(shù)值仿真。雖然概念簡單,但新用戶在使用GPU計算時還是會感到迷惑,因為GPU需要專有的圖形知識。這種情況下,一些軟件工具可以提供幫助。兩種高級描影語言CG和HLSL能夠讓用戶編寫類似C的代碼,隨后編譯成碎片程序匯編語言。Brook是專為GPU計算設(shè)計,且不需要圖形知識的高級語言。因此對第一次使用GPU進行開發(fā)的工作人員而言,它可以算是一個很好的起點。Brook是C語言的延伸,整合了可以直接映射到GPU的簡單數(shù)據(jù)并行編程構(gòu)造。經(jīng)GPU存儲和操作的數(shù)據(jù)被形象地比喻成“流”(stream),類似于標(biāo)準(zhǔn)C中的數(shù)組。核心(Kernel)是在流上操作的函數(shù)。在一系列輸入流上調(diào)用一個核心函數(shù)意味著在流元素上實施了隱含的循環(huán),即對每一個流元素調(diào)用核心體。Brook還提供了約簡機制,例如對一個流中所有的元素進行和、最大值或乘積計算。Brook還完全隱藏了圖形API的所有細(xì)節(jié),并把GPU中類似二維存儲器系統(tǒng)這樣許多用戶不熟悉的部分進行了虛擬化處理。用Brook編寫的應(yīng)用程序包括線性代數(shù)子程序、快速傅立葉轉(zhuǎn)換、光線追蹤和圖像處理。利用ATI的X800XT和Nvidia的GeForce 6800 Ultra型GPU,在相同高速緩存、SSE匯編優(yōu)化Pentium 4執(zhí)行條件下,許多此類應(yīng)用的速度提升高達(dá)7倍之多。
對GPU計算感興趣的用戶努力將算法映射到圖形基本元素。類似Brook這樣的高級編程語言的問世使編程新手也能夠很容易就掌握GPU的性能優(yōu)勢。訪問GPU計算功能的便利性也使得GPU的演變將繼續(xù)下去,不僅僅作為繪制引擎,而是會成為個人電腦的主要計算引擎。
c語言相關(guān)文章:c語言教程
評論