999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向頂點染色算法的專用指令集優化處理器

2014-06-09 05:53:22杜慧敏
西安郵電大學學報 2014年2期
關鍵詞:指令模型

杜慧敏,李 萌

(1.西安郵電大學 電子工程學院,陜西 西安710121; 2.西安郵電大學 計算機學院,陜西 西安710121)

圖形處理器(Graphics Processing Unit,GPU)的發展主要集中于3D圖形渲染領域,如PowerVR、Nvidia、ATI和 BitBoys[1]等產品中都具有3D引擎所必備的高性能染色處理單元。頂點染色器(Vertex Shader)作為GPU的一個重要組成,是高性能染色處理單元不可缺少的部分,主要完成圖形處理過程中幾何變換、法向量標準化、光照處理等階段的運算,其性能的提高將有利于改善圖形處理器的性能。

目前已經提出的頂點染色器的結構包括:單指令多數據流(Single Instruction Multiple Data,SIMD)、超長指令字(Very Long Instruction Word,VLIW)、VLIW+SIMD、VLIW+SIMD+多線程(Multithreading)以及多核處理機制[2-3]。SIMD 結構通過對功能單元的復制,提高了向量處理的速度,便于實現矩陣運算,但是其對于性能的提高依賴于功能單元的個數,效果有限;VLIW著眼于通過指令級并行提高處理器性能,一條指令往往包含多個操作,雖然它在一定程度上提高了執行效率,但是編譯起來比較困難;VLIW+SIMD結合了兩者的優點,進一步提高了運算速度,但處理器的復雜度也相應提高;VLIW+SIMD+SMT在VLIW+SIMD基礎上加入了SMT技術,充分利用了空閑資源,實現數據處理的并行化,但是硬件復雜度相對較高;多核處理器旨在用多個簡單的核實現復雜運算,提高并行性的同時降低了單個內核的復雜度,但是難以對其進行程序的編寫。

本文擬在分析頂點染色器功能和常用染色算法基礎上,設計一款支持OpenGL命令處理的可編程頂點染色器(Programmable Vertex Shader),引入一種針對頂點染色處理的專用指令集,通過使用該指令集編程實現不同算法的移植,同時,為了提高硬件的運算速度,采用SIMD向量處理、多執行部件的流水結構等技術進行硬件設計。

1 頂點染色器的功能及算法分析

1.1 頂點染色器功能

頂點染色器主要功能是實現幾何變換、法向量標準化以及頂點的光照處理。所謂光照處理就是利用一些特定的算法模擬現實世界中物體被光線照射后,反映到人眼中的樣子,使最終描繪的場景看起來更加逼真,目前圖形界最常用的經典光照模型是 Gouraud模型和 Phong模型[4-5]。

1.2 算法分析

1.2.1 幾何變換

幾何變換主要完成模型視圖變換,通過對圖形使用平移、旋轉、縮放的操作,將模型坐標系下的圖形轉換為視圖坐標系下的圖形,便于在屏幕上顯示。這種坐標系間的轉換是通過頂點坐標乘以平移、縮放或旋轉矩陣來實現的,涉及的矩陣有[6]平移矩陣

縮放矩陣

繞X軸旋轉矩陣

繞Y軸旋轉矩陣

繞Z軸旋轉矩陣

1.2.2 法向量標準化

法向量標準化就是將一個長度不為1的法向量單位化,使其變為一個單位法向量[5],即

其中N代表歸一化前的法向量,|N|代表該法向量的長度,NV代表單位化以后得到的單位法向量。

1.2.3 光照模型

在光照處理的過程中,無論是Gouraud模型還是Phong模型,都需要使用光照方程[5-6]來計算頂點的光照強度,即

其中I代表擬染色頂點的最終光照強度,Ia代表環境光強度,Id表示漫反射光強度,Is表示鏡面反射光強度,Ip代表聚光燈光照強度,ka,kd和ks分別代表環境光系數、漫反射光系數和鏡面反射光系數,N代表頂點單位法向量,L代表反射光單位法向量,V代表進入人眼的光的單位法向量,R代表鏡面反射光的單位法向量,n代表鏡面反射指數,而f(d)為衰減因子,是一個跟光源與頂點的距離d相關的函數[5],即

其中d為頂點到光源的距離,kc為常量衰減因子,kl為線性衰減因子,kq為二次衰減因子。

由于實際計算時可能存在多盞聚光燈對頂點進行照射,因此式(2)需要修改為

以將所有的聚光燈的光照結果進行累加,求得頂點的最終光照結果。

對于Gouraud模型,其核心思想是對頂點的法向量和與頂點相鄰的多邊形的法向量求一個平均值,使用該平均值代替頂點的法向量,并將其代入式(4)計算頂點的最終光照強度。

下面采用類pascal偽代碼描述Gouraud模型計算頂點光照的流程,其中PV代表當前擬染色頂點坐標,為一個實數四元組(xV,yV,zV,wV),其中xV,yV,zV分別表示X 軸、Y 軸、Z軸的坐標,wV為齊次因子,通常取1。P1和P2代表與當前擬染色頂點相鄰的多邊形的另兩個頂點,和PV一起構成一個三角形,均為實數四元組,分別表示為(x1,y1,z1,w1)和(x2,y2,z2,w2)。偽代碼表示如下。

A:=P1-PV;//得到邊〈v,1〉的向量 A(a1,a2,a3)

B:=P2-P1;//得到邊〈1,2〉的向量B(b1,b2,b3)

N:=A×B;//求三角形的法向量N(a2b3-a3b2,a3b1-a1b3,a1b2-a2b1)

|N|:=sqrt[(a2b3-a3b2)2+(a3b1-a1b3)2+

(a1b2-a2b1)2];//對三角形法向量 N求模

|NV|:=sqrt(x2,y2,z2);//對PV法向量 NV求模

Nm:=(NV+N)/(|NV|+|N|);//求所有法向量的平均值 Nm,即實數三元組(x,y,z)

cosα:=Nm·L;//代表入射角的余弦值

cosβ:=V·R;//代表入人眼的光和鏡面反射光夾角的余弦值

cosnβ:=exp{n ln(cosβ)};

max:=max(cosφ,0);//cosφ為聚光燈切角,代表了聚光燈可以照射的范圍

if(max?。海?)//判斷一個特定的頂點是否位于光錐的內部

then[It:=It+Ip];//It為所有聚光燈強度的和,初始值為0

else[It:=It]

I:=kaIa+f(d)It(kdcosα+kscosnβ)

與Gouraud模型不同,Phong模型不需要求平均法向量,而是將頂點的法向量直接帶入光照方程(4),計算頂點光照強度。該模型下頂點的光照強度計算流程可表示如下。

根據以上分析可以看出,Gouraud模型需要先求平均法向量,再計算頂點光照強度,而Phong模型可以根據已知的頂點法向量直接計算頂點的光照強度,似乎Phong模型的計算量更小,但是,對于整個圖形繪制的過程來說,Gouraud模型對三角形內部各點采用雙線性插值的方法求光照強度,而Phong模型則需要先利用頂點的法向量對三角形內部各點的法向量進行插值,然后逐點代入式(4)進行光照計算,實際上比Gouraud模型計算量更大。不過,Gouraud模型不能很好地反映物體的高光部分,而且由于使用了平均法向量,在圖形繪制過程中還可能出現馬赫帶效應,即在物體表面出現過亮或過暗的條紋。在實際應用中,可以根據不同的需要對兩種光照模型進行選擇。

1.3 專用指令集定義

根據對算法的分析結果,定義如表1所示的專用指令集并統計指令的使用頻度[7-9]。需要注意的是,由于執行單元是多周期的,且很多情況下前面的執行結果需要作為后面操作的輸入,因此,在編寫程序時需要適當加入空指令NOP。

表1 頂點染色器專用指令集

在引入的指令集基礎上,制定如下規則。

(1)可編程處理器采用64位固定長度的指令系統,其中低36位為有效指令格式,高28位為保留位,以便今后根據不同需求對指令集進行擴展。

(2)尋址方式包括:立即數尋址、寄存器直接尋址、絕對尋址、寄存器間接尋址四種尋址方式。

2 專用處理器設計

2.1 流水線設計

流水線[7,9]是利用執行指令所需要的操作之間的并行性,實現多條指令重疊執行的一種技術,傳統的五級流水線結構如圖1所示,包括取指、譯碼、執行、存儲和回寫五個階段。

圖1 傳統五級流水線結構

采用五級宏流水線結構,如圖2所示,包括取指階段、譯碼1階段、譯碼2階段、執行階段和回寫階段。

取指階段訪問指令存儲器,獲取將要執行的指令;譯碼階段1對指令寄存器中的指令進行譯碼,并通過訪問寄存器組獲取操作數;譯碼階段2根據指令的結構完成執行階段需要的操作數的選擇,產生LDQ和STQ操作訪問數據存儲器的數據和地址,使得存儲訪問階段與執行階段處于同一執行周期,跳轉指令也在本級處理并通過對不同跳轉指令產生的跳轉PC值進行選擇產生新的PC值;執行階段為多周期操作,包括定點處理單元、浮點處理單元和向量處理單元,執行周期可以從最低的單周期操作到最高的二十多周期操作?;貙戨A段將計算結果按照指定的規則寫入寄存器文件。

圖2 五級宏流水線結構

流水線設計中還采用前遞(Forwarding)技術[9],使得前一條指令的計算結果可以直接給下一條指令使用,而不用等到前一條指令將結果寫回寄存器后再從寄存器中讀取結果,以此緩解數據相關所帶來的影響,如圖3所示。

圖3 使用前遞技術的五級宏流水線

2.2 處理器結構設計

頂點染色器的整體結構如圖4所示,共分為四個模塊:命令分配器模塊、存儲管理模塊、可編程處理器模塊和指令存儲結構模塊。這四個模塊分別完成以下功能。

(1)命令分配器

用于解析來自命令處理器的各種OpenGL命令,按照單參數、環境類、矩陣類、頂點類和透傳將不同命令分類;提取命令中的參數并將參數存儲于片上數據存儲器中;根據不同的命令處理方式啟動相應的處理程序;裝配并發送新的OpenGL命令。

(2)存儲管理

用于管理可編程頂點染色器所涉及的片上數據存儲區、統一編址寄存器以及Dcache。

(3)可編程處理器

本模塊是一個基于SIMD架構的復雜核處理器,具有五級宏流水線結構;擁有一個向量處理單元、一個標量處理單元和一個特殊函數處理單元;可以處理固定的幾何變換和光照程序也可以處理用戶自定義的程序[10-13]。

(4)指令存儲結構

指令存儲區包含了兩部分,一部分為固定程序存儲區,這部分存儲區用于存放固定染色程序;另一部分為Icache存儲區,用于存放用戶自定義染色程序。

圖4 可編程頂點染色器頂層結構

可編程處理器采用程序與數據分離存儲的方式,結合五級宏流水線技術,以SIMD結構加速向量類命令處理,以定點和浮點通用結構處理標量類命令,以特殊功能結構加速超越函數處理(圖5)。指令序列來源于指令Cache和指令固定程序存儲區,數據來源于片上數據存儲區和統一編制寄存器。

圖5 可編程頂點染色器流水線設計

為了加速向量運算,特別設計了4路SIMD架構的向量功能單元,完成向量加減乘運算和向量點乘運算。每組浮點乘法單元和浮點加法單元都擁有4個完全相同的處理單元,根據數據輸入時的標記不同,可以分別實現四維向量和三維向量乘法的相關操作,并根據向量指令的目的寄存器選擇信號對處理結果進行重新分配。這樣的結構可以大大縮短向量計算花費的時鐘周期數,以四維向量的乘法為例,如果不采用SIMD架構,需要做4次浮點乘法,共花費28個周期,而在SIMD架構下可以同時做4個浮點乘法,7個時鐘周期就可以得到結果,具體結構如圖6所示。

圖6 向量處理單元設計

除了采用SIMD結構外,處理器還擁有一個特殊函數運算單元來實現超越的運算。該單元采用CORDIC算法,通過對參數的設置,使用簡單的移位操作和加法運算,以迭代的方式,實現復雜的超越函數運算,便于硬件實現,精度較高[14]。在保證設計需求的前提下,將浮點特殊函數運算單元采用浮點數-定點數轉換模塊和具有串行迭代結構的定點CORDIC單元實現,迭代次數為13次。由于使用定點加法器代替浮點加法器完成迭代過程中的加法操作,每一次迭代都減少了4個時鐘周期(本設計中浮點加法花費5個時鐘周期,定點加法在1個時鐘周期內就可以完成),減少了運算周期數,提高了運算速度。

3 仿真結果及分析

3.1 仿真結果

本設計采用SystemVerilog搭建驗證平臺,在工作站上使用Linux環境下QuestaSim6.5b作為仿真工具,使用基于JAVA的圖形轉換軟件對生成的數據進行圖形繪制。整體功能驗證平臺如圖7所示,該驗證平臺具有自動對比功能,包含輸入單元、輸出單元、參考模型和DUT四個部分。

圖7 整體功能驗證平臺

采用不同圖形仿真所得結果如圖8所示??梢钥闯?,可編程頂點染色器功能正確,可以完成對頂點的染色處理,繪制出真實的圖形。

圖8 仿真結果

3.2 性能分析

采用Xilinx公司Virtex6-760對可編程頂點染色器電路進行邏輯綜合,綜合報告如圖9所示,占用了3%的LUT以及1%的Slice寄存器,資源消耗適中。

圖9 電路綜合報告

電路的最大工作頻率為197MHz,不加光照的情況下,可編程頂點染色器處理一個頂點大約需要40個周期,頂點處理能力達到5Mvertexx/s,能夠滿足設計要求。

4 結語

設計了一種基于SIMD架構的可編程頂點染色器,定義了專用的指令集,更適于進行向量類操作,不僅提高了頂點染色的速度,而且可編程的設計也提高了頂點染色器的靈活性,通過程序的移植,能夠實現除頂點染色算法之外的其他算法。

[1]Moya V,Gonzalez C,Roca J,et al.A Single(Unified)Shader GPU Microarchitecture for Embedded Systems[C]//Proceedings of 1st International Conference on High Performance Embedded Architectures and Compilers(HiPEAC 2005).Spanish Barcelona:Springer-Verlag,2005:286-301.

[2]Lee Y,Avizienis R,Bishara A,et al.Exploring the tradeoffs between programmability and efficiency in data-parallel accelerators[C]// Proceedings of 38th Annual International Symposium on Computer Architecture(ISCA 2011).US CA San Jose:Institute of E-lectrical and Electronics Engineers Inc, 2011:129-140.

[3]李濤,肖靈芝.面向圖形和圖像處理的輕核陣列機結構:螢火蟲2號[J].西安郵電學院學報,2012,17(3):41-47.

[4]Edward Angel.交互式計算機圖形學:基于OpenGL的自頂向下方法[M].吳文國,譯.4版.北京:清華大學出版社,2007:255-288.

[5]Shreiner D.OpenGL編程指南[M].李軍,徐波,劉金華,等譯.7版.北京:機械工業出版社,2010:123-148.

[6]孫剛德.基于自動線程和超長指令的統一架構著色器的設計研究[D].杭州:浙江大學電氣工程學院,2012:11-15.

[7]Aasaraai K.,Moshovos A..Design Space Exploration of Instruction Schedulers for Out-of-Order Soft Processors[C]//Proceedings of 2010International Conference on Field-Programmable Technology(FPT’10).China Beijing: IEEE Computer Society, 2010:385-388.

[8]Munoz D M,Sánchez D F,Llanos C H,et al.Tradeoff of FPGA Design of Floating-point Transcendental Functions[C]//Proceedings of 17th IFIP International Conference on Very Large Scale Integration(VLSI-SoC 2009).Brazil Florianopolis:IEEE Computer Society,2011:239-242.

[9]胡偉武,陳云霽,肖俊華,等.計算機體系結構[M].北京:清華大學出版社,2011:55-139.

[10]Kubosawa H,Higaki N,Ando S,et al.A 2.5-GFLOPS,6.5Million Polygons per Second,Four-Way VLIW Geometry Processor with SIMD Instructions and a Software Bypass Mechanism[J].IEEE Journal of Solid-State Circuits,1999,11 (34):1619-1625.

[11]Jones A K,Hoare R,Kourtev I S,et al.A 64-way VLIW/SIMD FPGA Architecture and Design Flow[C]//Proceedings of 11th IEEE International Conference on Electronics,Circuits and Systems(ICECS 2004).Isreal Tel Aviv:Institute of Electrical and E-lectronics Engineers Computer Society, 2004:499-502.

[12]Hennessy J L,Patterson D A.計算機體系結構:量化研究方法(影印版)[M].4版.北京:機械工業出版社,2010:A2-B47.

[13]韓俊剛,蔣林,杜慧敏,等.一種圖形加速器和著色器的體系結構[J].計算機輔助設計與圖形學學報,2010,22(3):363-372.

[14]李全.浮點反正切函數的FPGA實現[J].電子技術應用,2010,36(8):9-10.

猜你喜歡
指令模型
一半模型
聽我指令:大催眠術
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
一種基于滑窗的余度指令判別算法
主站蜘蛛池模板: 国产91九色在线播放| 国产在线精彩视频二区| 久久无码免费束人妻| 亚洲有无码中文网| 国产专区综合另类日韩一区 | 久久夜色精品| 亚洲免费福利视频| 欧美国产在线看| 国产成人综合久久精品尤物| 99re精彩视频| 国产情精品嫩草影院88av| 亚洲精品麻豆| 99视频在线精品免费观看6| 欧美亚洲日韩中文| 四虎成人在线视频| 亚洲天堂久久| 国产欧美在线| 老色鬼欧美精品| 色噜噜狠狠狠综合曰曰曰| 91精品伊人久久大香线蕉| 成年人国产视频| www.91在线播放| 亚洲成综合人影院在院播放| 狠狠做深爱婷婷久久一区| 综合人妻久久一区二区精品 | 亚洲乱码在线视频| 四虎在线高清无码| 无码在线激情片| 欧美三級片黃色三級片黃色1| 日韩福利视频导航| 特级精品毛片免费观看| 色久综合在线| 免费又黄又爽又猛大片午夜| 91丝袜在线观看| 久久国产亚洲欧美日韩精品| 欧美精品v| 精品国产香蕉伊思人在线| 午夜无码一区二区三区| 亚洲大尺码专区影院| 亚洲精品国产综合99久久夜夜嗨| 免费亚洲成人| av大片在线无码免费| 亚洲资源站av无码网址| 国产精品2| 亚洲天堂视频在线观看| 久久久久无码精品| 亚洲精品国偷自产在线91正片| 亚洲欧美日韩视频一区| 国产成人精品午夜视频'| 中文字幕亚洲第一| 亚洲最猛黑人xxxx黑人猛交| 99热这里只有精品2| 日韩精品久久久久久久电影蜜臀| 欧美日本激情| 呦系列视频一区二区三区| 免费jjzz在在线播放国产| 日本午夜视频在线观看| 99青青青精品视频在线| 免费播放毛片| 国产成人区在线观看视频| 亚洲第一黄色网址| 永久免费无码日韩视频| 亚洲国产综合第一精品小说| 58av国产精品| 四虎AV麻豆| 日韩不卡高清视频| 在线精品欧美日韩| 在线免费观看a视频| 乱人伦视频中文字幕在线| 国产91视频免费观看| 香蕉久久国产精品免| 国产色伊人| 91免费国产高清观看| 激情乱人伦| 午夜三级在线| 国产成人夜色91| 国产一在线观看| 97超级碰碰碰碰精品| 国产资源免费观看| 色男人的天堂久久综合| 国产福利一区在线| 天天摸天天操免费播放小视频|