国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

多核并行訪問紋理單元的預(yù)處理方法?

2019-11-29 05:13劉世豪杜慧敏黃虎才
關(guān)鍵詞:紋理預(yù)處理模塊

劉世豪 杜慧敏 黃虎才 王 可 盧 通

(西安郵電大學(xué) 西安 710121)

1 引言

隨著計(jì)算機(jī)圖形學(xué)技術(shù)的快速發(fā)展,用戶對動畫、游戲開發(fā)、虛擬現(xiàn)實(shí)等圖形場景的真實(shí)感[1~3]的要求越來越高。紋理映射是GPU(Graphics Processing Unit,圖形處理器)實(shí)現(xiàn)逼真效果的重要方法[4~5]。

紋理單元是GPU 中實(shí)現(xiàn)紋理映射的模塊,可分為紋理前處理和紋理后處理,前處理部分讀取紋理數(shù)據(jù),包含紋理地址計(jì)算和紋理cache模塊,后處理部分過濾紋理數(shù)據(jù)后將數(shù)據(jù)輸出,包含紋理過濾和紋理數(shù)據(jù)輸出模塊。紋理單元接收SP(SIMT Processor,單指令多線程處理器)發(fā)來的紋理數(shù)據(jù)采樣請求,地址計(jì)算模塊根據(jù)紋理坐標(biāo)計(jì)算出紋理數(shù)據(jù)的地址,再由地址訪問紋理cache,讀出紋理數(shù)據(jù),最后根據(jù)紋理采樣方式對紋理數(shù)據(jù)濾波處理,將過濾后的紋理數(shù)據(jù)返回給SP,紋理單元流水線如圖1所示。

基 于tile 渲 染 模 式(Tile-based Rendering,TBR)將一幀圖像劃分為多個tile[6~7],為提升圖像的渲染速度,通常采用多核并行渲染不同tile。當(dāng)渲染的場景中存在大量重復(fù)紋理圖片時(shí),如教室內(nèi)的課桌、草地、鳥群或軍隊(duì)等,不同tile 可能用相同的紋理進(jìn)行貼圖。如圖2 所示,圖中每個tile 對應(yīng)的紋理圖像都是兔子。

圖1 紋理單元流水線

圖2 重復(fù)貼圖的兔子

在基于tile 的GPU 設(shè)計(jì)中,對于只有一個紋理單元的架構(gòu),多個SP 同時(shí)訪問紋理單元。本文提出了固定處理模式與預(yù)處理模式兩種方法實(shí)現(xiàn)SP對紋理單元的訪問。其中,預(yù)處理模式可實(shí)現(xiàn)多個SP 用相同的紋理數(shù)據(jù)采樣請求,紋理單元只執(zhí)行一次操作,減少了紋理單元的功耗,提升了紋理映射的速度。本文用System Verilog 語言在VCS 環(huán)境下驗(yàn)證了兩種方法,測試了4 類數(shù)據(jù)集。測試結(jié)果表明當(dāng)存在大量重復(fù)紋理貼圖的情況下,本文提出的預(yù)處理方法能夠較好提升紋理映射性能。

2 相關(guān)研究工作

紋理映射作為提升圖像真實(shí)感的重要處理方式,國內(nèi)外進(jìn)行了深入的研究。

在紋理映射綜述方面,張英杰[8]等較早地介紹了紋理映射技術(shù)的發(fā)展歷史和紋理映射中的圖形反混淆算法,盧張平[9]等對紋理映射的算法進(jìn)行分類,從二維紋理映射和三維紋理映射兩個大類分別進(jìn)行闡述。曾成強(qiáng)[10]系統(tǒng)地總結(jié)紋理映射技術(shù)的發(fā)展歷史和紋理映射的幾種經(jīng)典算法,并比較了其中幾種算法的優(yōu)劣。

在紋理映射算法方面,謝豐等人采用mipmap濾波對凹凸映射進(jìn)行優(yōu)化[11],在保證紋理凹凸感的前提下,減少了凹凸映射的計(jì)算量。Wanghai Qing等針對紋理數(shù)據(jù)大傳輸粒度導(dǎo)致CPU 無法訪問內(nèi)存和空轉(zhuǎn)的情況,提出了一種數(shù)據(jù)預(yù)取的方法[12],有效提升了渲染速度。杜慧敏和徐啟超等提出了采用線性逼近的方法實(shí)現(xiàn)各向同性逼近各項(xiàng)異性濾波器[13],該算法易于硬件實(shí)現(xiàn),且誤差較小。

在紋理映射架構(gòu)方面董梁等提出一種實(shí)用型流水線設(shè)計(jì)結(jié)構(gòu)[14],分析紋理單元的功能,并提出了一種紋理映射的設(shè)計(jì)方法,通過軟件進(jìn)行了功能驗(yàn)證。趙國宇等提出了一種高效紋理單元的硬件架構(gòu)[15],采用查找表和二次多項(xiàng)式逼近算法優(yōu)化浮點(diǎn)除法運(yùn)算,并且動態(tài)配置紋理cache的映射方式,優(yōu)化了紋理單元運(yùn)算和存儲帶寬的性能。沈春江完成了紋理單元各模塊的設(shè)計(jì),紋理載入速率達(dá)到了每秒30 幀[16]。韓立敏等提出了一種多模式并行處理硬件專用紋理引擎[17],并行實(shí)施多模式的紋理操作,顯著提升了紋理貼圖的執(zhí)行效率。

高分辨率的圖片意味著更真實(shí)的效果,但是會增加存儲容量,研究人員以減少數(shù)據(jù)大小和帶寬,同時(shí)以最小化視覺影響為目的提出各種紋理壓縮方案[18~19]?,F(xiàn)在常用的紋理壓縮格式有S3 公司發(fā)布 的S3TC(S3 Texture Compression),Imagination Technologies 公 司 發(fā) 布 的 PVRTC/PVRTC2(PowerVR Texture Compression),Khronos Group 組織發(fā)布的ETC/ETC2,ARM 公司發(fā)布的ASTC(Adaptive Scalable Texture Compression)等。不同存儲格式對紋理映射性能也會產(chǎn)生影響,可利用紋理數(shù)據(jù)的局部性提升紋理數(shù)據(jù)訪問效率[20]。Baokang Wang 等提出一種Z 型布局的存儲格式[21],縮小了地址跨度,減少了cache沖突缺失,紋理數(shù)據(jù)可根據(jù)紋理像素坐標(biāo)將Z 型區(qū)域內(nèi)的地址設(shè)置為連續(xù)地址。

紋理單元實(shí)現(xiàn)了紋理映射復(fù)雜算法,在多核并行訪問紋理單元的情況下,若存在一種檢測機(jī)制,將多核發(fā)送的相同紋理數(shù)據(jù)采樣請求合并為一個請求,可減少紋理單元的執(zhí)行次數(shù),降低紋理單元功耗,并提升紋理映射的速度。業(yè)界對于紋理單元并行訪問機(jī)制的處理方法并沒有詳細(xì)的公開資料,而多核并行訪問紋理單元的預(yù)處理方法對紋理映射性能有很大提升,因此該方向的研究具有重要意義。

3 紋理映射的兩種方法

3.1 固定處理模式

多個處理器核對應(yīng)同一紋理單元的固定處理模式結(jié)構(gòu)如圖3所示。設(shè)定8個SP對應(yīng)1個紋理單元,當(dāng)多個SP 同時(shí)訪問紋理單元時(shí),紋理單元首先對多個請求進(jìn)行仲裁,采用自適應(yīng)輪詢調(diào)度算法選出當(dāng)前優(yōu)先級最高的SP 請求。輪詢調(diào)度算法[22]設(shè)定每個SP 的優(yōu)先級相同,防止固定優(yōu)先級導(dǎo)致的低優(yōu)先級餓死情況。

圖3 固定處理模式結(jié)構(gòu)

GPU 在處理圖像時(shí),所有的SP 不是每拍都會同時(shí)發(fā)出請求,針對此類情況采用自適應(yīng)輪詢調(diào)度算法。當(dāng)全部SP同時(shí)發(fā)出請求時(shí),第一拍執(zhí)行SP0請求,第二拍執(zhí)行SP1 請求,依次輪詢。但是由于SP執(zhí)行的tile場景可能不同,因此不一定全部SP同時(shí)發(fā)起紋理請求,如果當(dāng)前拍只有SP1、SP2 和SP6訪問紋理單元,那么當(dāng)前的優(yōu)先級為SP1→SP2→SP6,如果下一拍的請求為SP1、SP2、SP4 和SP6,那么當(dāng)前優(yōu)先級為SP2→SP4→SP6→SP1。優(yōu)先級按照0-7 的順序依次輪詢,剛被執(zhí)行的SP 在下一拍的優(yōu)先級最低,當(dāng)前拍的優(yōu)先級排序只在有紋理請求的SP中進(jìn)行。

紋理單元對仲裁出的請求進(jìn)行處理,當(dāng)多個SP 訪問相同紋理坐標(biāo)的情況,該模式仍然對每一個訪問請求進(jìn)行處理,在單幀重復(fù)貼圖基數(shù)大的模型場景中,紋理單元會存在大量的重復(fù)性操作,導(dǎo)致功耗大并且處理內(nèi)容冗余。

3.2 預(yù)處理方法

3.2.1 預(yù)處理方法的基本思想

根據(jù)自適應(yīng)輪詢調(diào)度算法確定當(dāng)前SP 訪問請求的優(yōu)先級,當(dāng)出現(xiàn)多個SP 的紋理采樣點(diǎn)相同時(shí),合并相同紋理采樣請求,使紋理單元只執(zhí)行一次紋理數(shù)據(jù)采樣操作。預(yù)處理結(jié)構(gòu)圖如圖4所示。

預(yù)處理方法是在紋理單元的前處理部分(Tex_pre_process 模塊)增加外圍電路,包括Arbiter模塊、Req_buf 模塊和Data_buf 模塊。預(yù)處理方法通過兩次比較解決了同一時(shí)刻和某段時(shí)間內(nèi)出現(xiàn)相同紋理數(shù)據(jù)采樣請求的情況,減少了紋理單元重復(fù)冗余的操作。

圖4 預(yù)處理結(jié)構(gòu)圖

3.2.2 各模塊功能及處理流程

1)發(fā)出采樣請求

圖中各個SP用于渲染不同tile內(nèi)場景,SP下發(fā)紋理映射請求給Arbiter模塊,請求數(shù)據(jù)包含紋理映射的狀態(tài)信息(如紋理坐標(biāo)、SP 的ID、每個SP 的請求ID、紋理圖片大小、紋理數(shù)組使能和陰影貼圖使能等)。

2)仲裁并處理采樣請求

Arbiter 模塊接收各個SP 發(fā)來的紋理映射請求,根據(jù)自適應(yīng)輪詢調(diào)度算法得到當(dāng)前拍優(yōu)先級最高的SP請求,并送給Req_buf模塊。

Arbiter模塊將優(yōu)先級最高的SP請求與其他SP請求進(jìn)行比較,如果紋理坐標(biāo)相等,說明同一拍中不同SP 有相同的紋理數(shù)據(jù)采樣請求,這里規(guī)定其他的紋理數(shù)據(jù)采樣請求為副本請求。當(dāng)前節(jié)拍仲裁出的紋理請求經(jīng)Req_buf送給Tex_pre_process模塊,然后通過Data_buf,再由Tex_post_process 模塊把采樣點(diǎn)處的紋理數(shù)據(jù)送給Arbiter 模塊。優(yōu)先級最高的紋理請求和所有副本請求對應(yīng)的SP 都接收該次采樣的紋理數(shù)據(jù),上述處理過程如圖5所示。

圖5 合并相同SP請求示意圖

Arbiter 模塊解決了同一拍中多個SP 的紋理數(shù)據(jù)采樣請求相同的問題,并行地將紋理數(shù)據(jù)返回給所有發(fā)出相同紋理坐標(biāo)請求的SP。

3)緩存不同紋理數(shù)據(jù)采樣請求

Req_buf 模塊接收Arbiter 模塊發(fā)送的紋理數(shù)據(jù)采樣請求,并緩存最近n 次無副本請求的紋理坐標(biāo)。Req_buf深度為n,緩存的數(shù)據(jù)為紋理坐標(biāo)。

Req_buf每接收到一個新請求都會與其內(nèi)部緩存的舊請求進(jìn)行坐標(biāo)比較,如果新請求的坐標(biāo)和Req_buf 某行存儲的紋理坐標(biāo)不相同,則緩存本次新請求,并且將新請求發(fā)送給Tex_pre_process模塊讀取紋理數(shù)據(jù)。如果新請求和Req_buf 某行存儲的紋理坐標(biāo)相同,說明在n 次訪問內(nèi)已經(jīng)讀取了該紋理坐標(biāo)對應(yīng)的數(shù)據(jù),那么本次的請求無需發(fā)送給Tex_pre_process 模塊,將紋理坐標(biāo)直接發(fā)送到Data_buf,讀取該坐標(biāo)對應(yīng)行的數(shù)據(jù),比較方式如圖6所示。

當(dāng)buffer 內(nèi)數(shù)據(jù)存滿并且新的紋理請求與buffer 中任意一行不匹配,則采用先入先出的替換策略,替換n行中最先存入buffer的數(shù)據(jù),如圖7所示。

圖7 替換策略

4)讀取紋理數(shù)據(jù)

Tex_pre_process 模塊實(shí)現(xiàn)紋理數(shù)據(jù)讀取功能。該模塊接收紋理采樣請求,在經(jīng)過紋理地址計(jì)算和讀取紋理cache數(shù)據(jù)后得到對應(yīng)坐標(biāo)的紋理數(shù)據(jù),將紋理數(shù)據(jù)和紋理坐標(biāo)送給Data_buf。

5)緩存紋理坐標(biāo)與紋理數(shù)據(jù)

Data_buf 每一行存放的數(shù)據(jù)為紋理坐標(biāo)和紋理數(shù)據(jù)。Data_buf深度為n,當(dāng)buffer數(shù)據(jù)存滿時(shí)采用先入先出的替換策略。

Data_buf 將Tex_pre_process 模塊輸出的紋理坐標(biāo)和數(shù)據(jù)緩存到buffer 內(nèi),然后將接收到的紋理數(shù)據(jù)送給Tex_post_process 模塊。并且Data_buf 會與Req_buf 發(fā)送的坐標(biāo)進(jìn)行匹配,為未經(jīng)過Tex_pre_process 模塊處理的請求讀取數(shù)據(jù),如果坐標(biāo)命中,將相應(yīng)buffer 行的數(shù)據(jù)送給Tex_post_process 模塊,如果坐標(biāo)未命中,則將該坐標(biāo)存入Data_buf中的失靶buffer中,Data_buf每接收一組紋理坐標(biāo)與數(shù)據(jù)都會與失靶buffer 中的坐標(biāo)進(jìn)行匹配,直到讀出紋理數(shù)據(jù)。

6)紋理后處理

Tex_post_process 模塊根據(jù)紋理映射模式對紋理數(shù)據(jù)進(jìn)行過濾和格式轉(zhuǎn)換等操作,由該模塊得到采樣點(diǎn)處紋理數(shù)據(jù),然后輸出給Arbiter模塊。

4 性能評價(jià)

本文對紋理映射的兩種方法進(jìn)行抽象,將方法一與方法二的性能進(jìn)行比較。在存在大量重復(fù)紋理圖像的場景中,量化地統(tǒng)計(jì)方法二相較于方法一的性能提升比率。

采用System verilog 進(jìn)行建模,在VCS 平臺仿真,時(shí)鐘頻率為100MHz,測試數(shù)據(jù)2048個,每個SP對應(yīng)16*16的像素塊,處理256個數(shù)據(jù),不同測試集下預(yù)處理方法的速率提升結(jié)果如表1所示。

表1 預(yù)處理模式的性能提升比率

A 類測試集:16*16的像素塊內(nèi)貼4個8*8的紋理圖像,每個SP隨機(jī)發(fā)送紋理坐標(biāo)。

B 類測試集:16*16 的像素塊內(nèi)貼16 個4*4 的紋理圖像,每個SP隨機(jī)發(fā)送紋理坐標(biāo)。

C 類測試集:16*16 的像素塊內(nèi)貼64 個2*2 的紋理圖像,每個SP隨機(jī)發(fā)送紋理坐標(biāo)。

D 類測試集:8 個SP 向Arbiter 模塊發(fā)送紋理請求,每個發(fā)送256個,每個SP發(fā)送的紋理坐標(biāo)相同。

5 結(jié)語

紋理映射是圖形渲染管線中極其重要的一部分,它是圖像真實(shí)性的有效保證,性能優(yōu)越的紋理單元不僅能夠保障圖像的真實(shí)性,也能提升紋理映射的處理速度。對于多核并行訪問紋理單元的架構(gòu),應(yīng)該根據(jù)渲染圖像的特點(diǎn),合并相同的紋理數(shù)據(jù)采樣請求,減少紋理單元的冗余操作,本文據(jù)此提出了一種多核并行訪問紋理單元的預(yù)處理方法,對預(yù)處理模式的各個模塊進(jìn)行介紹,核心思路為采用兩次比較的方式減少了冗余操作,提升了紋理單元的性能。實(shí)驗(yàn)結(jié)果表明,在存在大量重復(fù)紋理貼圖的情況下,能夠較好提升紋理映射性能。

猜你喜歡
紋理預(yù)處理模塊
KR預(yù)處理工藝參數(shù)對脫硫劑分散行為的影響
28通道收發(fā)處理模塊設(shè)計(jì)
“選修3—3”模塊的復(fù)習(xí)備考
求解奇異線性系統(tǒng)的右預(yù)處理MINRES 方法
手術(shù)器械預(yù)處理在手術(shù)室的應(yīng)用
污泥預(yù)處理及其在硅酸鹽制品中的運(yùn)用
基于BM3D的復(fù)雜紋理區(qū)域圖像去噪
肺紋理增多是病嗎?
TEXTURE ON TEXTURE質(zhì)地上的紋理
必修模塊相關(guān)知識過關(guān)訓(xùn)練
珠海市| 荥阳市| 静安区| 高台县| 石首市| 华宁县| 广州市| 松溪县| 咸阳市| 锡林郭勒盟| 东宁县| 曲麻莱县| 庐江县| 贞丰县| 永定县| 和顺县| 大田县| 郸城县| 东莞市| 兴国县| 滦平县| 贡觉县| 望城县| 兴安盟| 丽江市| 绍兴县| 体育| 上思县| 张家口市| 琼结县| 丰县| 新建县| 南雄市| 吉隆县| 绥滨县| 茂名市| 遂宁市| 综艺| 泾阳县| 琼海市| 张家港市|