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