版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系我們

[科普中國]-像素處理器

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶提供權(quán)威科普內(nèi)容,打造知識科普陣地
收藏

像素處理器,是指由圖像的小方格即所謂的像素(pixel)組成的,這些小方塊都有一個(gè)明確的位置和被分配的色彩數(shù)值,而這些一小方格的顏色和位置就決定該圖像所呈現(xiàn)的出來的樣子,進(jìn)行運(yùn)算和邏輯運(yùn)算的一種儀器。

基于查找表的像素處理器圖形處理器新算法在基本的像素處理算法的基礎(chǔ)上,提出了一種基于查找表的快速平滑插值算法。該算法不僅運(yùn)算量小、精度較高,而且易于硬件實(shí)現(xiàn),適合于高速顯示處理系統(tǒng)中。1

算法概述綜合考慮圖形顯示的速度和逼真兩方面因素,故該算法的光照明采用Phong模型,明暗處理采用Gouraud算法,選擇三角形面片作為像素處理模型,算法流程采用流水線結(jié)構(gòu),倒數(shù)值通過查找表獲得,加/減法、比較運(yùn)算和乘法等采用并行硬件來實(shí)現(xiàn)。對每個(gè)三角形有:

**·**只需耗時(shí)較少的加法、減法、比較和乘法運(yùn)算;

**·**沒有耗時(shí)較多的除法或求倒數(shù)運(yùn)算;

**·**利用查找表法可以保證灰度的高精度;

**·**不會重復(fù)掃描任何像素。1

算法的流程該算法的處理過程可以分為5個(gè)功能塊,其數(shù)據(jù)流是單向的;同時(shí)5個(gè)功能塊又相對獨(dú)立,于是可以采用流水線操作,并且整個(gè)流程由5級流水組成。

step1: 數(shù)據(jù)輸入接口;

step2: 求dxi、dzi、dσ;

step3: 求dz、dc;

step4: 計(jì)算LR端點(diǎn)、計(jì)算LR掃描線;

step5: 數(shù)據(jù)輸出接口。1

算法的硬件實(shí)現(xiàn)采用FPGA技術(shù)和EPLD技術(shù)來實(shí)現(xiàn)該算法。FPGA(現(xiàn)場可編程邏輯門陣列)和CPLD(復(fù)雜可編程邏輯器件)各有優(yōu)缺點(diǎn):

(1)FPGA和CPLD在資源方面比傳統(tǒng)器件和PLD都要豐富;

(2)FPGA基于RAM工藝,不要求對FPGA母片編程,其編程數(shù)據(jù)寫到EPROM中,上電時(shí)通過引導(dǎo)讀入FPGA中的RAM,從而使FPGA具有所需要的構(gòu)造。這個(gè)過程需要幾十到幾百毫秒。而CPLD基于EPROM或E2 PROM 工藝,無上電引導(dǎo)過程,需要對芯片本身編程;

(3)FPGA適合于寄存器密集型設(shè)計(jì),但延時(shí)很難估計(jì),速度較慢。而CPLD的延時(shí)固定,速度較快。

最后,運(yùn)算器、數(shù)據(jù)輸出接口部分采用一片F(xiàn)PGA器件來實(shí)現(xiàn),F(xiàn)IFO控制、系統(tǒng)控制時(shí)序部分采用一片CPLD器件來實(shí)現(xiàn)。1

查找表的設(shè)計(jì)在分辨率為512×512、256級灰度、216級深度信息的高分辨率灰度圖形顯示系統(tǒng)中,要求坐標(biāo)x、y的位數(shù)各 9位,深度信z的位數(shù)取為16位,灰度信息c的位數(shù)取為8位。此時(shí),查找表的設(shè)計(jì)有如下特點(diǎn):

(1) 采用存儲倒數(shù)型查找表,即插值變化率為分母的倒數(shù)值和分子的乘積,其中分母的倒數(shù)值由查找表獲得。

(2) 僅僅存儲分母的倒數(shù)值,可大大減少對存儲容量的要求。所需的存儲空間可估算如下: 1/(D1ty)所對應(yīng)的查找表存儲容量約為512W(29字),1/(D1tx)所對應(yīng)的查找表存儲容量約為512W(29字);

(3) 考慮到查找表存儲容量很小,所以共安排多個(gè)線性查找表,以字為單位進(jìn)行尋址。這樣像素處理器(圖形處理器)需要約2KW的查找表存貯空間。1

GPU替代CPU崛起中的GPGPU應(yīng)用自從GPU于2001年進(jìn)入可編程時(shí)代 以來,`’能否把GPU豐富的資源應(yīng)用到通用計(jì)算中去‘’ 一直是業(yè)界討論的話題。畢竟通用計(jì)算設(shè)計(jì)的CPU實(shí)力有限。而在進(jìn)行純CPU操作的時(shí)候。有浮點(diǎn)專長的GPU在 一邊睡大覺著實(shí)是一種浪費(fèi)。早在DX8時(shí)代就有研究機(jī)構(gòu)嘗試用Ti4200顯卡進(jìn)行數(shù)據(jù)庫操作。進(jìn)入DX9時(shí)代 以后此類研究就更多了。2

GPGPU的定義以及特點(diǎn)1、可編程并行處理器

主流GPU有兩種可編程并行處理器即頂點(diǎn)處理器(Vertex Shader)和像素處理器(圖形處理器)(PixelShader)。在OPenGL中。后者又被稱作FragmentProcessor(片斷或子素處理器)。頂點(diǎn)處理器負(fù)責(zé)處理頂點(diǎn)數(shù)據(jù)流(由位置顏色、標(biāo)準(zhǔn)向量和其它屬性)。它們是組成三維幾何模型的元素。根據(jù)每個(gè)頂點(diǎn)相對于其視點(diǎn)的位置。用Vertex Shader程序?qū)ζ溥M(jìn)行變換。

像素處理器(圖形處理器)將Pixel Shader程序用于處理每個(gè)輸出像素以確定最后的顏色。如今無論是PS還是VS都是完全可編程的。可以對四個(gè)不同的數(shù)值同時(shí)執(zhí)行一條指令。這是因?yàn)槔L圖的基本要素是向量(X、Y、Z、W)和顏色《紅、綠、藍(lán)、alPha)。

Shader程序?qū)嶋H就相當(dāng)于CPU的內(nèi)循環(huán),在CPU中。一個(gè)循環(huán)可以重復(fù)使用存在一個(gè)矩陣內(nèi)的一個(gè)數(shù)據(jù)流內(nèi)的各個(gè)元素,用該循環(huán)體內(nèi)的各條指令處理這些元素。而在GPU中。類似的指令可以寫在Shader程序中并自動應(yīng)用到相應(yīng)數(shù)據(jù)流的所有元素上。在這個(gè)運(yùn)算中。并行處理的數(shù)量取決于該GPU中并行處理器的數(shù)量。

2、光柵處理器(Rasterizer)

在頂點(diǎn)處理器轉(zhuǎn)換完頂點(diǎn)后,每三個(gè)一組的頂點(diǎn)就用來形成 一個(gè)三角形。從這個(gè)三角形出發(fā),光柵處理器產(chǎn)生一個(gè)像素流。實(shí)際光柵處理器的功能非常專一,就是表現(xiàn)三角形的。并非可編程,但是可以將其看作一個(gè)地址內(nèi)插器或者數(shù)據(jù)放大器(因?yàn)樗鶕?jù)幾個(gè)三角形頂點(diǎn)就可以產(chǎn)生許多像素)。2

GPGPU的發(fā)展進(jìn)入DX9 SM2.0時(shí)代以后,GPGPU進(jìn)入了新的時(shí)代第三代GPU以NVIDIA GeForce Fx和、ATi R3XX為代表,其像素和頂點(diǎn)可編程性更通用化。像素部分支持FP16/24/32浮點(diǎn)??梢园锨l指令。依賴紋理更為靈活并且可以用作索引進(jìn)行查找。紋理不再限制在[0.1]范圍,從而可以用作任意數(shù)組,這一點(diǎn)是對通用計(jì)算的一個(gè)重要貢獻(xiàn)。在這一代顯卡中誕生了很多GPGPU的應(yīng)用,第一個(gè)商用的GPGPU應(yīng)用NVIDIA Gelato就是從這一 代的顯卡開始支持的。這是一款電影后期處理軟件。用于進(jìn)行電影幀渲染處理等工作。

主流的SM3.0顯卡可以算作第四代GPU畢竟功能相對以前更為豐富和靈活,而且頂點(diǎn)程序可以訪問紋理(VTF)支持動態(tài)分支操作(尤其是ATi X1000系列)像素程序開始支持分支操作。包括循環(huán)、if/else、重復(fù)等。支持子函數(shù)調(diào)用64位浮點(diǎn)紋理濾波和融合多個(gè)繪制目標(biāo)。同時(shí)面向大眾的GPGPU應(yīng)用終于開始出現(xiàn)了(也就是開頭提到的FAH)。2

GPGPU相關(guān)軟件的發(fā)展使用HLSL、CG這樣的繪制語言(shadinglangugae)進(jìn)行GPGPU編程存在著不少缺陷用戶必須編寫控制圖形流水線的許多任務(wù)。如分配紋理存儲、讀入繪制程序等,為此程序員對最新的API以及GPU硬件的特點(diǎn)與限制需要有詳細(xì)的了解。同時(shí),程序員仍然需要利用紋理、三角形等圖形素元表達(dá)他們的算法這就使得GPU的通用計(jì)算編程工作仍然局限于只能由資深的圖形開發(fā)者進(jìn)行,嚴(yán)重限制了其發(fā)展。

GPU中的Shader實(shí)際是典型的流處理機(jī)(stream processor)結(jié)構(gòu)。流處理機(jī)與向量處理機(jī)的主要區(qū)別在于它不具有大容量的緩存可以讀寫,只是直接在芯片上利用臨時(shí)寄存器作流數(shù)據(jù)的操作。對于GPU而言圖形流數(shù)據(jù)分別是頂點(diǎn)圖元及光柵化后的像素。根據(jù)圖形處理的特點(diǎn)GPU流處理的元素為4個(gè)單元的向量??梢杂盟硎救S齊次坐標(biāo)、三維空間齊次向量、顏色等。正是這種流處理機(jī)的并行結(jié)構(gòu)。為通用計(jì)算提供了并行計(jì)算的平臺。其中頂點(diǎn)處理器操作在空間的幾何點(diǎn)上,因而比較適用于除圖形繪制以外的幾何操作類的應(yīng)用:而像素處理器(圖形處理器)由于是操作在像素一級的單元上,具有較大容量的‘’紋理`’空間??梢阅M紋理數(shù)據(jù)及其操作。

Brook一for一GpU把Gpu的解構(gòu)納入了流處理器模型這個(gè)通用模型中這使得GPGPU的推廣成為了可能因?yàn)閺V大程序員不再需要了解GPU的具體物理解構(gòu)了。此語言由于是為流處理機(jī)所設(shè)計(jì)。因而具有應(yīng)用于GPU流處理機(jī)模型的良好結(jié)構(gòu)與基礎(chǔ)有利于擴(kuò)充該語言作為通用計(jì)算的軟件工具。Brook的設(shè)計(jì)本身通過流數(shù)據(jù)類型定義流數(shù)據(jù)。作用在數(shù)據(jù)上的操作或計(jì)算稱為核(krenel)。核作用于流數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)并行操作,以保證較高的計(jì)算效率(即計(jì)算操作量相對于帶寬的比率)。Brook具有很好的可移植性除了基于Open G L、DirectX針對NVIDIA和ATi等的GPU編程以外。亦可對普通CPU編程。Brook運(yùn)行系統(tǒng)是一個(gè)與GPU結(jié)構(gòu)無關(guān)的程序庫。它允許由編譯器產(chǎn)生的編碼使用該庫函數(shù)去運(yùn)行核。2

本詞條內(nèi)容貢獻(xiàn)者為:

肖志勇 - 副教授 - 江南大學(xué)