複製鏈接
請複製以下鏈接發送給好友

像素處理器

鎖定
像素處理器,是指由圖像的小方格即所謂的像素(pixel)組成的,這些小方塊都有一個明確的位置和被分配的色彩數值,而這些一小方格的顏色和位置就決定該圖像所呈現的出來的樣子,進行運算和邏輯運算的一種儀器。
中文名
像素處理器
外文名
Pixel processor
應    用
電腦自做

像素處理器基於查找表的像素處理器圖形處理器新算法

在基本的像素處理算法的基礎上,提出了一種基於查找表的快速平滑插值算法。該算法不僅運算量小、精度較高,而且易於硬件實現,適合於高速顯示處理系統中。 [1] 

像素處理器算法概述

綜合考慮圖形顯示的速度和逼真兩方面因素,故該算法的光照明採用Phong模型,明暗處理採用Gouraud算法,選擇三角形面片作為像素處理模型,算法流程採用流水線結構,倒數值通過查找表獲得,加/減法、比較運算和乘法等採用並行硬件來實現。對每個三角形有:
·只需耗時較少的加法、減法、比較和乘法運算;
·沒有耗時較多的除法或求倒數運算;
·利用查找表法可以保證灰度的高精度;
·不會重複掃描任何像素。 [1] 

像素處理器算法的流程

該算法的處理過程可以分為5個功能塊,其數據流是單向的;同時5個功能塊又相對獨立,於是可以採用流水線操作,並且整個流程由5級流水組成。
step1: 數據輸入接口;
step2: 求dxi、dzi、dσ
step3: 求dz、dc
step4: 計算LR端點、計算LR掃描線;
step5: 數據輸出接口。 [1] 

像素處理器算法的硬件實現

採用FPGA技術和EPLD技術來實現該算法。FPGA(現場可編程邏輯門陣列)和CPLD(複雜可編程邏輯器件)各有優缺點:
(1)FPGA和CPLD在資源方面比傳統器件和PLD都要豐富;
(2)FPGA基於RAM工藝,不要求對FPGA母片編程,其編程數據寫到EPROM中,上電時通過引導讀入FPGA中的RAM,從而使FPGA具有所需要的構造。這個過程需要幾十到幾百毫秒。而CPLD基於EPROM或E2 PROM 工藝,無上電引導過程,需要對芯片本身編程;
(3)FPGA適合於寄存器密集型設計,但延時很難估計,速度較慢。而CPLD的延時固定,速度較快。
最後,運算器、數據輸出接口部分採用一片FPGA器件來實現,FIFO控制、系統控制時序部分採用一片CPLD器件來實現。 [1] 

像素處理器查找表的設計

在分辨率為512×512、256級灰度、216級深度信息的高分辨率灰度圖形顯示系統中,要求座標xy的位數各 9位,深度信z的位數取為16位,灰度信息c的位數取為8位。此時,查找表的設計有如下特點:
(1) 採用存儲倒數型查找表,即插值變化率為分母的倒數值和分子的乘積,其中分母的倒數值由查找表獲得。
(2) 僅僅存儲分母的倒數值,可大大減少對存儲容量的要求。所需的存儲空間可估算如下: 1/(D1ty)所對應的查找表存儲容量約為512W(29字),1/(D1tx)所對應的查找表存儲容量約為512W(29字);
(3) 考慮到查找表存儲容量很小,所以共安排多個線性查找表,以字為單位進行尋址。這樣像素處理器(圖形處理器)需要約2KW的查找表存貯空間。 [1] 

像素處理器GPU替代CPU崛起中的GPGPU應用

自從GPU於2001年進入可編程時代 以來,`’能否把GPU豐富的資源應用到通用計算中去‘’ 一直是業界討論的話題。畢竟通用計算設計的CPU實力有限。而在進行純CPU操作的時候。有浮點專長的GPU在 一邊睡大覺着實是一種浪費。早在DX8時代就有研究機構嘗試用Ti4200顯卡進行數據庫操作。進入DX9時代 以後此類研究就更多了。 [2] 

像素處理器GPGPU的定義以及特點

1、可編程並行處理器
主流GPU有兩種可編程並行處理器即頂點處理器(Vertex Shader)和像素處理器(圖形處理器)(PixelShader)。在OPenGL中。後者又被稱作FragmentProcessor(片斷或子素處理器)。頂點處理器負責處理頂點數據流(由位置顏色、標準向量和其它屬性)。它們是組成三維幾何模型的元素。根據每個頂點相對於其視點的位置。用Vertex Shader程序對其進行變換。
像素處理器(圖形處理器)將Pixel Shader程序用於處理每個輸出像素以確定最後的顏色。如今無論是PS還是VS都是完全可編程的。可以對四個不同的數值同時執行一條指令。這是因為繪圖的基本要素是向量(X、Y、Z、W)和顏色《紅、綠、藍、alPha)。
Shader程序實際就相當於CPU的內循環,在CPU中。一個循環可以重複使用存在一個矩陣內的一個數據流內的各個元素,用該循環體內的各條指令處理這些元素。而在GPU中。類似的指令可以寫在Shader程序中並自動應用到相應數據流的所有元素上。在這個運算中。並行處理的數量取決於該GPU中並行處理器的數量。
2、光柵處理器(Rasterizer)
在頂點處理器轉換完頂點後,每三個一組的頂點就用來形成 一個三角形。從這個三角形出發,光柵處理器產生一個像素流。實際光柵處理器的功能非常專一,就是表現三角形的。並非可編程,但是可以將其看作一個地址內插器或者數據放大器(因為它根據幾個三角形頂點就可以產生許多像素)。 [2] 

像素處理器GPGPU的發展

進入DX9 SM2.0時代以後,GPGPU進入了新的時代第三代GPU以NVIDIA GeForce Fx和、ATi R3XX為代表,其像素和頂點可編程性更通用化。像素部分支持FP16/24/32浮點。可以包含上千條指令。依賴紋理更為靈活並且可以用作索引進行查找。紋理不再限制在[0.1]範圍,從而可以用作任意數組,這一點是對通用計算的一個重要貢獻。在這一代顯卡中誕生了很多GPGPU的應用,第一個商用的GPGPU應用NVIDIA Gelato就是從這一 代的顯卡開始支持的。這是一款電影后期處理軟件。用於進行電影幀渲染處理等工作。
主流的SM3.0顯卡可以算作第四代GPU畢竟功能相對以前更為豐富和靈活,而且頂點程序可以訪問紋理(VTF)支持動態分支操作(尤其是ATi X1000系列)像素程序開始支持分支操作。包括循環、if/else、重複等。支持子函數調用64位浮點紋理濾波和融合多個繪製目標。同時面向大眾的GPGPU應用終於開始出現了(也就是開頭提到的FAH)。 [2] 

像素處理器GPGPU相關軟件的發展

使用HLSL、CG這樣的繪製語言(shadinglangugae)進行GPGPU編程存在着不少缺陷用户必須編寫控制圖形流水線的許多任務。如分配紋理存儲、讀入繪製程序等,為此程序員對最新的API以及GPU硬件的特點與限制需要有詳細的瞭解。同時,程序員仍然需要利用紋理、三角形等圖形素元表達他們的算法這就使得GPU的通用計算編程工作仍然侷限於只能由資深的圖形開發者進行,嚴重限制了其發展。
GPU中的Shader實際是典型的流處理機(stream processor)結構。流處理機與向量處理機的主要區別在於它不具有大容量的緩存可以讀寫,只是直接在芯片上利用臨時寄存器作流數據的操作。對於GPU而言圖形流數據分別是頂點圖元及光柵化後的像素。根據圖形處理的特點GPU流處理的元素為4個單元的向量。可以用它表示三維齊次座標、三維空間齊次向量、顏色等。正是這種流處理機的並行結構。為通用計算提供了並行計算的平台。其中頂點處理器操作在空間的幾何點上,因而比較適用於除圖形繪製以外的幾何操作類的應用:而像素處理器(圖形處理器)由於是操作在像素一級的單元上,具有較大容量的‘’紋理`’空間。可以模擬紋理數據及其操作。
Brook一for一GpU把Gpu的解構納入了流處理器模型這個通用模型中這使得GPGPU的推廣成為了可能因為廣大程序員不再需要了解GPU的具體物理解構了。此語言由於是為流處理機所設計。因而具有應用於GPU流處理機模型的良好結構與基礎有利於擴充該語言作為通用計算的軟件工具。Brook的設計本身通過流數據類型定義流數據。作用在數據上的操作或計算稱為核(krenel)。核作用於流數據結構實現並行操作,以保證較高的計算效率(即計算操作量相對於帶寬的比率)。Brook具有很好的可移植性除了基於Open G L、DirectX針對NVIDIA和ATi等的GPU編程以外。亦可對普通CPU編程。Brook運行系統是一個與GPU結構無關的程序庫。它允許由編譯器產生的編碼使用該庫函數去運行核。 [2] 
參考資料
  • 1.    郝建新 , 謝劍斌.基於查找表的像素處理器新算法:國防科技大學學報, 1998 (5):81-85
  • 2.    Dr.BT , OCfantasy.GPU替代CPU? 崛起中的GPGPU應用:電腦自做, 2006 (12) :121-128