你的位置:首頁 > 測試測量 > 正文

簡述GPU作用原理及對(duì)比分析CPU和DSP

發(fā)布時(shí)間:2015-05-13 責(zé)任編輯:echolady

【導(dǎo)讀】顯示器的心臟是GPU,其作用相當(dāng)于電腦里的CPU,決定顯卡的性能和檔次。同時(shí)也是2D和3D的區(qū)別依據(jù)。本文主要講解GPU作用和原理,和區(qū)別CPU與DSP的關(guān)鍵。

2D顯示芯片在處理3D圖像和特效時(shí)主要依賴CPU的處理能力,稱為“軟加速”。3D顯示芯片是將三維圖像和特效處理功能集中在顯示芯片內(nèi),也即所謂的“硬件加速”功能。顯示芯片通常是顯示卡上最大的芯片(也是引腳最多的)。GPU使顯卡減少了對(duì)CPU的依賴,并進(jìn)行部分原本CPU的工作,尤其是在3D圖形處理時(shí)。GPU所采用的核心技術(shù)有硬體T&L、立方環(huán)境材質(zhì)貼圖和頂點(diǎn)混合、紋理壓縮和凹凸映射貼圖、雙重紋理四像素256位渲染引擎等,而硬體T&L技術(shù)可以說是GPU的標(biāo)志。

GPU能夠從硬件上支持T&L(TransformandLighting,多邊形轉(zhuǎn)換與光源處理)的顯示芯片,因?yàn)門&L是3D渲染中的一個(gè)重要部分,其作用是計(jì)算多邊形的3D位置和處理動(dòng)態(tài)光線效果,也可以稱為“幾何處理”。一個(gè)好的T&L單元,可以提供細(xì)致的3D物體和高級(jí)的光線特效;只不過大多數(shù)PC中,T&L的大部分運(yùn)算是交由CPU處理的(這就也就是所謂的軟件T&L),由于CPU的任務(wù)繁多,除了T&L之外,還要做內(nèi)存管理、輸入響應(yīng)等非3D圖形處理工作,因此在實(shí)際運(yùn)算的時(shí)候性能會(huì)大打折扣,常常出現(xiàn)顯卡等待CPU數(shù)據(jù)的情況,其運(yùn)算速度遠(yuǎn)跟不上今天復(fù)雜三維游戲的要求。即使CPU的工作頻率超過1GHz或更高,對(duì)它的幫助也不大,由于這是PC本身設(shè)計(jì)造成的問題,與CPU的速度無太大關(guān)系。

主要作用

今天,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廠商老大英特爾為未來而緊張,NVIDIA和英特爾也經(jīng)常為CPU和GPU誰更重要而展開口水戰(zhàn)。GPU通用計(jì)算方面的標(biāo)準(zhǔn)目前有 OPEN CL、CUDA、ATI STREAM。其中,OpenCL(全稱Open Computing Language,開放運(yùn)算語言)是第一個(gè)面向異構(gòu)系統(tǒng)通用目的并行編程的開放式、免費(fèi)標(biāo)準(zhǔn),也是一個(gè)統(tǒng)一的編程環(huán)境,便于軟件開發(fā)人員為高性能計(jì)算服務(wù)器、桌面計(jì)算系統(tǒng)、手持設(shè)備編寫高效輕便的代碼,而且廣泛適用于多核心處理器(CPU)、圖形處理器(GPU)、Cell類型架構(gòu)以及數(shù)字信號(hào)處理器(DSP)等其他并行處理器,在游戲、娛樂、科研、醫(yī)療等各種領(lǐng)域都有廣闊的發(fā)展前景,AMD-ATI、NVIDIA現(xiàn)在的產(chǎn)品都支持OPEN CL。

NV顯卡的芯就用這個(gè)新名字GPU來稱呼。GPU使顯卡減少了對(duì)CPU的依賴,并進(jìn)行部分原本CPU的工作,尤其是在3D圖形處理時(shí)。GPU所采用的核心技術(shù)有硬體T&L、立方環(huán)境材質(zhì)貼圖和頂點(diǎn)混合、紋理壓縮和凹凸映射貼圖、雙重紋理四像素256位渲染引擎等,而硬體T&L技術(shù)可以說是GPU的標(biāo)志。

工作原理

簡單說GPU就是能夠從硬件上支持T&L(Transform and Lighting,多邊形轉(zhuǎn)換與光源處理)的顯示芯片,因?yàn)門&L是3D渲染中的一個(gè)重要部分,其作用是計(jì)算多邊形的3D位置和處理動(dòng)態(tài)光線效果,也可以稱為“幾何處理”。一個(gè)好的T&L單元,可以提供細(xì)致的3D物體和高級(jí)的光線特效;只不過大多數(shù)PC中,T&L的大部分運(yùn)算是交由CPU處理的(這就也就是所謂的軟件T&L),由于CPU的任務(wù)繁多,除了T&L之外,還要做內(nèi)存管理、輸入響應(yīng)等非3D圖形處理工作,因此在實(shí)際運(yùn)算的時(shí)候性能會(huì)大打折扣,常常出現(xiàn)顯卡等待CPU數(shù)據(jù)的情況,其運(yùn)算速度遠(yuǎn)跟不上今天復(fù)雜三維游戲的要求。即使CPU的工作頻率超過1GHz或更高,對(duì)它的幫助也不大,由于這是PC本身設(shè)計(jì)造成的問題,與CPU的速度無太大關(guān)系。

GPU與DSP區(qū)別

GPU在幾個(gè)主要方面有別于DSP(Digital Signal Processing,簡稱DSP(數(shù)字信號(hào)處理)架構(gòu)。其所有計(jì)算均使用浮點(diǎn)算法,而且目前還沒有位或整數(shù)運(yùn)算指令。此外,由于GPU專為圖像處理設(shè)計(jì),因此存儲(chǔ)系統(tǒng)實(shí)際上是一個(gè)二維的分段存儲(chǔ)空間,包括一個(gè)區(qū)段號(hào)(從中讀取圖像)和二維地址(圖像中的X、Y坐標(biāo))。此外,沒有任何間接寫指令。輸出寫地址由光柵處理器確定,而且不能由程序改變。這對(duì)于自然分布在存儲(chǔ)器之中的算法而言是極大的挑戰(zhàn)。最后一點(diǎn),不同碎片的處理過程間不允許通信。實(shí)際上,碎片處理器是一個(gè)SIMD數(shù)據(jù)并行執(zhí)行單元,在所有碎片中獨(dú)立執(zhí)行代碼。

盡管有上述約束,但是GPU還是可以有效地執(zhí)行多種運(yùn)算,從線性代數(shù)和信號(hào)處理到數(shù)值仿真。雖然概念簡單,但新用戶在使用GPU計(jì)算時(shí)還是會(huì)感到迷惑,因?yàn)镚PU需要專有的圖形知識(shí)。這種情況下,一些軟件工具可以提供幫助。兩種高級(jí)描影語言CG和HLSL能夠讓用戶編寫類似C的代碼,隨后編譯成碎片程序匯編語言。Brook是專為GPU計(jì)算設(shè)計(jì),且不需要圖形知識(shí)的高級(jí)語言。因此對(duì)第一次使用GPU進(jìn)行開發(fā)的工作人員而言,它可以算是一個(gè)很好的起點(diǎn)。

Brook是C語言的延伸,整合了可以直接映射到GPU的簡單數(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還提供了約簡機(jī)制,例如對(duì)一個(gè)流中所有的元素進(jìn)行和、最大值或乘積計(jì)算。Brook還完全隱藏了圖形API的所有細(xì)節(jié),并把GPU中類似二維存儲(chǔ)器系統(tǒng)這樣許多用戶不熟悉的部分進(jìn)行了虛擬化處理。用Brook編寫的應(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í)編程語言的問世使編程新手也能夠很容易就掌握GPU的性能優(yōu)勢。訪問GPU計(jì)算功能的便利性也使得GPU的演變將繼續(xù)下去,不僅僅作為繪制引擎,而是會(huì)成為個(gè)人電腦的主要計(jì)算引擎。

GPU和CPU的區(qū)別是什么?

要解釋兩者的區(qū)別,要先明白兩者的相同之處:兩者都有總線和外界聯(lián)系,有自己的緩存體系,以及數(shù)字和邏輯運(yùn)算單元。一句話,兩者都為了完成計(jì)算任務(wù)而設(shè)計(jì)。

兩者的區(qū)別在于存在于片內(nèi)的緩存體系和數(shù)字邏輯運(yùn)算單元的結(jié)構(gòu)差異:CPU雖然有多核,但總數(shù)沒有超過兩位數(shù),每個(gè)核都有足夠大的緩存和足夠多的數(shù)字和邏輯運(yùn)算單元,并輔助有很多加速分支判斷甚至更復(fù)雜的邏輯判斷的硬件;GPU的核數(shù)遠(yuǎn)超CPU,被稱為眾核(NVIDIA Fermi有512個(gè)核)。每個(gè)核擁有的緩存大小相對(duì)小,數(shù)字邏輯運(yùn)算單元也少而簡單(GPU初始時(shí)在浮點(diǎn)計(jì)算上一直弱于CPU)。從結(jié)果上導(dǎo)致CPU擅長處理具有復(fù)雜計(jì)算步驟和復(fù)雜數(shù)據(jù)依賴的計(jì)算任務(wù),如分布式計(jì)算,數(shù)據(jù)壓縮,人工智能,物理模擬,以及其他很多很多計(jì)算任務(wù)等。

GPU由于歷史原因,是為了視頻游戲而產(chǎn)生的(至今其主要驅(qū)動(dòng)力還是不斷增長的視頻游戲市場),在三維游戲中常常出現(xiàn)的一類操作是對(duì)海量數(shù)據(jù)進(jìn)行相同的操作,如:對(duì)每一個(gè)頂點(diǎn)進(jìn)行同樣的坐標(biāo)變換,對(duì)每一個(gè)頂點(diǎn)按照同樣的光照模型計(jì)算顏色值。GPU的眾核架構(gòu)非常適合把同樣的指令流并行發(fā)送到眾核上,采用不同的輸入數(shù)據(jù)執(zhí)行。在2003-2004年左右,圖形學(xué)之外的領(lǐng)域?qū)<议_始注意到GPU與眾不同的計(jì)算能力,開始嘗試把GPU用于通用計(jì)算(即GPGPU)。之后NVIDIA發(fā)布了CUDA,AMD和Apple等公司也發(fā)布了OpenCL,GPU開始在通用計(jì)算領(lǐng)域得到廣泛應(yīng)用,包括:數(shù)值分析,海量數(shù)據(jù)處理(排序,Map-Reduce等),金融分析等等。

簡而言之,當(dāng)程序員為CPU編寫程序時(shí),他們傾向于利用復(fù)雜的邏輯結(jié)構(gòu)優(yōu)化算法從而減少計(jì)算任務(wù)的運(yùn)行時(shí)間,即Latency。當(dāng)程序員為GPU編寫程序時(shí),則利用其處理海量數(shù)據(jù)的優(yōu)勢,通過提高總的數(shù)據(jù)吞吐量(Throughput)來掩蓋Lantency。目前,CPU和GPU的區(qū)別正在逐漸縮小,因?yàn)镚PU也在處理不規(guī)則任務(wù)和線程間通信方面有了長足的進(jìn)步。另外,功耗問題對(duì)于GPU比CPU更嚴(yán)重。

相關(guān)閱讀:

誰還對(duì)系統(tǒng)級(jí)芯片SoC與傳統(tǒng)CPU傻傻分不清?
賜你火眼金睛!一眼便知CPU“真八核”在哪
基礎(chǔ)盤點(diǎn):工控機(jī)CPU的那些知識(shí),你都了解嗎?

要采購工具么,點(diǎn)這里了解一下價(jià)格!
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
?

關(guān)閉

?

關(guān)閉