国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種GPU多線程紋理映射SystemC建模結(jié)構(gòu)的制作方法

      文檔序號:11922439閱讀:355來源:國知局
      一種GPU多線程紋理映射SystemC建模結(jié)構(gòu)的制作方法與工藝
      本發(fā)明屬于計算機圖形領(lǐng)域,尤其涉及一種GPU多線程紋理映射SystemC建模結(jié)構(gòu)。
      背景技術(shù)
      :紋理映射是給計算機產(chǎn)生的3D圖形表面貼上各種紋理圖像,以提高圖形的真實感。紋理映射屬于像素處理階段,用于加速計算密集性和存儲訪問密集性的紋理操作,一個主要的運算就是找出屏幕空間像素(x,y,z)在紋理空間所對應(yīng)的紋理元素所在存儲空間的地址(即紋素地址),然后將所選中的紋理元素顏色進行濾波,并用這個值替換屏幕空間的像素顏色,從而完成紋理映射。也就是說,先將屏幕空間的像素坐標轉(zhuǎn)換到參數(shù)空間(u,v),再由參數(shù)空間轉(zhuǎn)換到紋理圖像空間,其特點就是計算量大,且有實時性要求。對于系統(tǒng)的軟/硬件協(xié)調(diào)設(shè)計和協(xié)同驗證(Co-verification),模擬速度非常重要。為了提高效率,必須在設(shè)計過程的早期階段啟用有效的硬件/軟件系統(tǒng)模擬。為了克服在傳統(tǒng)RTL級建模速度慢的的局限性,又鑒于SystemC支持硬件/軟件協(xié)同設(shè)計,能夠描述由硬件和軟件組成的復雜系統(tǒng)的結(jié)構(gòu),支持在C++環(huán)境下對硬件、軟件和接口的描述。本文使用SystemC2.0的事務(wù)級模型(TransactionLevelModels,TLM)進行不同抽象級別建模。SystemC最基本的結(jié)構(gòu)單元是模塊(module),模塊可以包含其他模塊或過程(process)和方法(method),通過在其中加入時序細節(jié),可以實現(xiàn)功能模塊、通信模塊、軟件模塊和硬件模塊在各種系統(tǒng)級層次上的抽象,其引進的端口和信號的數(shù)據(jù)類型描述、時鐘和延時的概念,可以評估系統(tǒng)的性能、探索系統(tǒng)的結(jié)構(gòu)。技術(shù)實現(xiàn)要素:本發(fā)明的目的是:提供一種GPU多線程紋理映射SystemC建模結(jié)構(gòu),用于加速計算密集性和存儲訪問密集性的紋理操作,實現(xiàn)了“4個fragment的紋理操作”以及每個fragment內(nèi)部“多個分量”的操作并行執(zhí)行,可以避免繁瑣的電路信號設(shè)計、快速評估大規(guī)模硬件系統(tǒng)的架構(gòu)。本發(fā)明的解決方案是:一種GPU多線程紋理映射SystemC建模結(jié)構(gòu),包括:紋理參數(shù)獲取和Level計算單元(1)、紋素地址計算單元(2)、數(shù)據(jù)組裝與任務(wù)分配單元單元(3)、紋素數(shù)據(jù)提取和格式轉(zhuǎn)換單元(4)、紋素過濾、紋素數(shù)據(jù)歸一化單元(5)和紋理映射狀態(tài)與控制參數(shù)單元(6);紋理參數(shù)獲取和Level計算單元(1)輸出接口與紋素地址計算單元(2)的輸入接口相連接,紋理參數(shù)獲取和Level計算單元(1)的根據(jù)統(tǒng)一染色體陣列(USA)輸入的紋理Quad請求的紋理單元ID信息,從紋理映射狀態(tài)與控制參數(shù)單元(6)讀取紋理映射類型mapType和過濾模式filterMode、baselevel以及baselevel層的紋理圖像分辨率參數(shù)width、height、depth、lod_bias參數(shù),并和統(tǒng)一染色體陣列輸入的紋理Quad請求Quad_mask與坐標變量s,t,r一起代入Level計算流程中,得到常駐紋理的level層的值,并從紋理映射狀態(tài)與控制參數(shù)單元(6)讀取level層紋理圖像分辨率參數(shù)的width、height、depth,將所述常駐紋理的level層的值、level層紋理圖像分辨率參數(shù)的width、height、depth、紋理映射類型mapType、紋理過濾模式filterMode和統(tǒng)一染色體陣列輸入的紋理Quad請求坐標變量s,t,r,輸入給紋素地址計算單元(2);紋素地址計算單元(2)根據(jù)紋理參數(shù)獲取和Level計算單元(1)輸入的統(tǒng)一染色體陣列輸入的紋理Quad請求坐標變量s,t,r和level層紋理圖像分辨率參數(shù)的width、height、depth,首先計算指定Level層的紋理坐標,得到第Level層紋素坐標地址(i0,j0,k0),(i1,j1,k1);其次,紋素地址計算單元(2)將紋素坐標地址(i0,j0,k0),(i1,j1,k1)帶入wrap模式對Level層的坐標調(diào)整算法中,得到每個小分量wrap調(diào)整處理后的紋理坐標地址(i0,j0,k0),(i1,j1,k1);再次,紋素地址計算單元(2)根據(jù)輸入的紋理過濾模式filterMode和紋理映射類型mapType,對紋理坐標進行紋素采樣處理,并產(chǎn)生1到n個紋素坐標;并根據(jù)wrap模式對Level層的坐標調(diào)整算法對多個紋素坐標進行處理,最后,并將最終的包含紋素采樣坐標的紋素采樣請求輸出給數(shù)據(jù)組裝與任務(wù)分配單元(3);數(shù)據(jù)組裝與任務(wù)分配單元(3),根據(jù)當前外部紋理存儲器的ready狀態(tài),如果ready狀態(tài)為1,總是允許本單元向紋理存儲L1TCache發(fā)送紋素采樣請求;否則,將整個紋理流水線停滯;同時,通過與外部紋理存儲器的接口將紋素采樣請求傳送給外部紋理存儲器進行請求尋址處理,并設(shè)置請求完成標識,數(shù)據(jù)組裝與任務(wù)分配單元(3)通過內(nèi)部進程不斷檢測外部紋理存儲器返回的完成標識狀態(tài),如果返回數(shù)據(jù)有效,則將外部紋理存儲器處理后的請求結(jié)果按照請求的先后順序進行排序,輸出給紋素數(shù)據(jù)提取和格式轉(zhuǎn)換單元(4);紋素數(shù)據(jù)提取和格式轉(zhuǎn)換單元(4),先從紋理映射狀態(tài)與控制參數(shù)單元(6)讀取當前紋理請求在紋理Cache內(nèi)部存儲格式internalformat,根據(jù)外部紋理存儲器返回的存儲格式,從紋素數(shù)據(jù)提取和格式轉(zhuǎn)換單元(4)獲取的請求結(jié)果中提取出紋理格式中的R、G、B、A、Lum、Int和Depth,將不同內(nèi)部格式轉(zhuǎn)換為RGBA格式的顏色數(shù)據(jù),并結(jié)果輸出給紋素過濾操作、紋素數(shù)據(jù)歸一化單元(5);紋素過濾操作、紋素數(shù)據(jù)歸一化單元(5),當紋理過濾模式為臨近采樣模式,意味著不需要執(zhí)行過濾操作,這種類型的紋理請求在過濾模塊被“透傳”;否則,需要根據(jù)紋理過濾模式filterMode,對多個紋理采樣值通過線性、或雙線性,或三線性插值計算,得到一個過濾后的紋素值,將結(jié)果進行紋素數(shù)據(jù)歸一化,最后,將所述結(jié)果通過與統(tǒng)一染色陣列之間的接口函數(shù)輸出給外部統(tǒng)一染色陣列。本發(fā)明的優(yōu)點是:本發(fā)明使用SystemC進行事務(wù)級周期精確建模,同時用C++語言來描述軟件,可以使得系統(tǒng)設(shè)計的硬件和軟件建模統(tǒng)一采用C++語言來實現(xiàn);基于SystemC的設(shè)計方法支持設(shè)計者在不同層次上建模,減小了代碼量和工作量,提供了更高的工作效率;實現(xiàn)了“4個fragment的紋理操作”以及每個fragment內(nèi)部“多個分量”的操作并行執(zhí)行,可以避免繁瑣的電路信號設(shè)計、快速評估大規(guī)模硬件系統(tǒng)的架構(gòu),適用于電路早期的系統(tǒng)級設(shè)計開發(fā),對同類產(chǎn)品、功能實現(xiàn)提供有效參考。附圖說明圖1是本發(fā)明中一種GPU多線程紋理映射SystemC建模結(jié)構(gòu)的原理框圖;圖2是本發(fā)明紋理映射單元的事務(wù)級建模實現(xiàn)框圖;圖3是對圖2和圖3的圖標識說明示意圖;圖4是level計算流程示意圖;注釋:1、Quad不完整:指quad包含了不足4個的fragment,可以通過quad_mask的有效位數(shù)得知;2、啟用mipmap:縮小過濾器被設(shè)置為使用mipmap,其對應(yīng)相應(yīng)的過濾模式有:nearest_mipmap_nearest,linear_mipmap_nearest,nearest_mipmap_linear,和linear_mipmap_linear;圖5是紋理Nearest模式下Level紋素坐標計算示意圖;圖6是紋理Linear模式下Level紋素坐標計算示意圖;圖7是wrap模式對Level層紋素坐標I的調(diào)整示意圖。圖8是紋素過濾流程圖。具體實施方式下面結(jié)合附圖和具體實施例,對本發(fā)明的技術(shù)方案進行清楚、完整地表述。顯然,所表述的實施例僅是本發(fā)明一部分實施例,而不是全部的實施例,基于本發(fā)明中的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提所獲得的所有其他實施例,都屬于本發(fā)明的保護范圍。本發(fā)明提供一種GPU多線程紋理映射SystemC建模結(jié)構(gòu),如圖1所示,包括:紋理參數(shù)獲取和Level計算單元(1)、紋素地址計算單元(2)、數(shù)據(jù)組裝與任務(wù)分配單元單元(3)、紋素數(shù)據(jù)提取和格式轉(zhuǎn)換單元(4)、紋素過濾、紋素數(shù)據(jù)歸一化單元(5)和紋理映射狀態(tài)與控制參數(shù)單元(6);紋理參數(shù)獲取和Level計算單元(1)輸出接口與紋素地址計算單元(2)的輸入接口相連接,紋理參數(shù)獲取和Level計算單元(1)的根據(jù)統(tǒng)一染色體陣列(USA)輸入的紋理Quad請求的紋理單元ID信息,從紋理映射狀態(tài)與控制參數(shù)單元(6)讀取紋理映射類型mapType和過濾模式filterMode、baselevel以及baselevel層的紋理圖像分辨率參數(shù)width、height、depth、lod_bias參數(shù),并和統(tǒng)一染色體陣列輸入的紋理Quad請求Quad_mask與坐標變量s,t,r一起代入如圖4所示的Level計算流程中,主要包括:紋理坐標預(yù)處理、scalar計算、λ計算和mimap層level計算,得到常駐紋理的level層的值,并從紋理映射狀態(tài)與控制參數(shù)單元(6)讀取level層紋理圖像分辨率參數(shù)的width、height、depth,將所述常駐紋理的level層的值、level層紋理圖像分辨率參數(shù)的width、height、depth、紋理映射類型mapType、紋理過濾模式filterMode和統(tǒng)一染色體陣列輸入的紋理Quad請求坐標變量s,t,r,輸入給紋素地址計算單元(2);紋素地址計算單元(2)根據(jù)紋理參數(shù)獲取和Level計算單元(1)輸入的統(tǒng)一染色體陣列輸入的紋理Quad請求坐標變量s,t,r和level層紋理圖像分辨率參數(shù)的width、height、depth,首先計算指定Level層的紋理坐標,具體算法過程如圖5和圖6所示,得到第Level層紋素坐標地址(i0,j0,k0),(i1,j1,k1);其次,紋素地址計算單元(2)將紋素坐標地址(i0,j0,k0),(i1,j1,k1)帶入如圖7所示的“wrap模式對Level層的坐標調(diào)整算法”中,得到每個小分量wrap調(diào)整處理后的紋理坐標地址(i0,j0,k0),(i1,j1,k1);再次,紋素地址計算單元(2)根據(jù)輸入的紋理過濾模式filterMode和紋理映射類型mapType,對紋理坐標進行紋素采樣處理(紋素采樣規(guī)則參見表1的openGL2.0的紋素過濾模式),并產(chǎn)生1到n個紋素坐標;并根據(jù)上文提到的如圖7所示的wrap模式對Level層的坐標調(diào)整算法對多個紋素坐標進行處理,最后,并將最終的包含紋素采樣坐標的紋素采樣請求輸出給數(shù)據(jù)組裝與任務(wù)分配單元(3);表1注:當放大過濾和縮小過濾器被設(shè)置為nearest模式,則紋理映射操作僅使用baselevel的圖像;nearest_mipmap_nearest(臨近采樣)和linear_mipmap_nearest(線性采樣)都使用d個mipmap層數(shù)據(jù),d,k的值來自紋理映射狀態(tài)與控制參數(shù)單元;nearest_mipmap_linear和linear_mipmap_linear需要獲取2個臨近mipmap層的紋理值,以2D為例,nearest_mipmap_linear需要從2個mipmap層各讀取1個紋素值,2個層之間執(zhí)行一次線性插值,linear_mipmap_linear需要從2個mipmap層各讀取4個紋素值,執(zhí)行雙線性插值之后,2個層之間的結(jié)果再執(zhí)行1次線性插值。數(shù)據(jù)組裝與任務(wù)分配單元(3),根據(jù)當前外部紋理存儲器(紋理L1Cache)的ready狀態(tài),如果ready狀態(tài)為1,總是允許本單元向紋理存儲L1TCache發(fā)送紋素采樣請求;否則,將整個紋理流水線停滯;同時,通過與外部紋理存儲器(紋理L1Cache)的接口將紋素采樣請求傳送給外部紋理存儲器進行請求尋址處理,并設(shè)置請求完成標識,數(shù)據(jù)組裝與任務(wù)分配單元(3)通過內(nèi)部進程不斷檢測外部紋理存儲器返回的完成標識狀態(tài),如果返回數(shù)據(jù)有效,則將外部紋理存儲器(紋理L1Cache)處理后的請求結(jié)果按照請求的先后順序進行排序,輸出給紋素數(shù)據(jù)提取和格式轉(zhuǎn)換單元(4);紋素數(shù)據(jù)提取和格式轉(zhuǎn)換單元(4),先從紋理映射狀態(tài)與控制參數(shù)單元(6)讀取當前紋理請求在紋理Cache內(nèi)部存儲格式internalformat(參照OpenGl2.0支持的內(nèi)部紋理格式),根據(jù)外部紋理存儲器(紋理L1Cache)返回的存儲格式(如表2所示),從紋素數(shù)據(jù)提取和格式轉(zhuǎn)換單元(4)獲取的請求結(jié)果中提取出紋理格式中的R、G、B、A、Lum、Int和Depth,根據(jù)表3將不同內(nèi)部格式轉(zhuǎn)換為RGBA格式的顏色數(shù)據(jù),并結(jié)果輸出給紋素過濾操作、紋素數(shù)據(jù)歸一化單元(5);表2Cache輸出的紋素數(shù)據(jù)格式表3各種顏色到RGBA的轉(zhuǎn)換規(guī)則基本內(nèi)部格式RGBAAlpha000AlphaLuminanceLumLumLum1Luminance_alphaLumLumLumAlphaIntensityIntIntIntIntRGBRGB1RGBARGBA紋素過濾操作、紋素數(shù)據(jù)歸一化單元(5),當紋理過濾模式為臨近采樣模式,意味著不需要執(zhí)行過濾操作,這種類型的紋理請求在過濾模塊被“透傳”;否則,需要根據(jù)紋理過濾模式filterMode,對多個紋理采樣值通過線性、或雙線性,或三線性插值計算,得到一個過濾后的紋素值,將結(jié)果進行紋素數(shù)據(jù)歸一化,即,本模塊輸入為RGBA格式,每個分量為8bit的紋素數(shù)據(jù),經(jīng)過歸一化操作后的紋素數(shù)據(jù)每個分量寬度為32bit,取值范圍為[0,1]之間,最后,將所述結(jié)果通過與統(tǒng)一染色陣列之間的接口函數(shù)輸出給外部統(tǒng)一染色陣列。實施例下面結(jié)合附圖和具體實施例對本發(fā)明的技術(shù)方案做進一步詳細描述。如圖1所示,一種GPU多線程紋理映射SystemC建模結(jié)構(gòu),采用SystemC語言和TransactionLevelModeling(TLM,事務(wù)級建模)方法,模型中各功能模塊通過事務(wù)級接口的函數(shù)、而不是通過硬件信號的連接來實現(xiàn)通信的,各個模塊內(nèi)部都包含了各自獨立、并行執(zhí)行的進程,每個進程都只有一個共同的事件觸發(fā)——時鐘上升沿,對紋理映射單元進行周期精確的硬件建模;每個進程都可以調(diào)用各自模塊的事務(wù)級接口中的函數(shù),來相互傳遞信息。映射單元包括紋理參數(shù)獲取和Level計算單元(1)、紋素地址計算單元(2)、紋理存儲訪問數(shù)據(jù)組裝與任務(wù)分配單元單元(3)、紋素數(shù)據(jù)提取和格式轉(zhuǎn)換單元(4)、紋素過濾操作、紋素數(shù)據(jù)歸一化(5)和紋理映射狀態(tài)與控制參數(shù)單元(6)。如圖3所示,紋理參數(shù)獲取和Level計算單元(1),用于根據(jù)USA紋理請求輸入的QUAD的“紋理單元ID”從(6)紋理映射狀態(tài)與控制參數(shù)單元獲取相關(guān)紋理參數(shù),確定紋理映射類型(maptype),然后計算level層次的值,確定紋理的過濾模式(filtermode)等。如圖2所示,模型設(shè)計時采用“Level計算進程”(level_compute_Thread)和流水pipeline_0實現(xiàn),其中USA請求標識信息(usa_access_request)過調(diào)用usa_access_tau_export接口函數(shù)實現(xiàn),當“Level計算進程”檢測到usa_access_request有效時,將指針data_pointer_level_compute指向USA輸入請求的數(shù)據(jù)首地址,為“Level計算進程”提供必要的數(shù)據(jù)信息,“Level計算進程”主要完成算法功能主要有:紋理坐標預(yù)處理(computer_texture_coordinate)、scalar計算(computer_scalar)、λ計算(computer_lambda)和mimap層level計算(compute_level_and_alpha)等,并將最后的運算結(jié)果輸入到pipeline_0實現(xiàn)流水操作傳遞給下一級紋素地址計算單元(2);如圖4所示,紋素地址計算單元(2),用于根據(jù)(1)紋理參數(shù)獲取和Level計算單元輸入的紋理映射類型(maptype)、過濾模式(filtermode)計算指定level的紋理坐標;根據(jù)wrapmode對超出[0,1]范圍的歸一化紋理坐標做進一步處理;在指定filtermode,產(chǎn)生1到n個紋素坐標;然后根據(jù)wrapmode對多個紋素坐標進行處理。如圖2所示,建模設(shè)計時采用“紋素地址計算進程”(address_compute_Thread)和流水pipeline_1實現(xiàn),其中當“紋素地址計算進程”檢測到流水pipeline_0[n-1]非空時,將pipeline_0[n-1]的數(shù)據(jù)指針傳遞給紋素地址計算指針(data_pointer_address_compute),為“紋素地址計算進程”提供必要的數(shù)據(jù)信息,“紋素地址計算進程”主要完成算法功能主要有:坐標wrapmode處理(wrap_mode_adjust)、過濾系統(tǒng)計算(compute_whd_prameter)、紋素地址采樣計算(compute_level_coordinate)等,并將最后的運算結(jié)果輸入到pipeline_1實現(xiàn)流水操作傳遞給下一級紋理存儲訪問數(shù)據(jù)組裝與任務(wù)分配單元單元(3);紋理存儲訪問數(shù)據(jù)組裝與任務(wù)分配單元單元(3),如圖2所示,用于當紋理存儲器(L1紋理cache)的ready狀態(tài),如果ready狀態(tài)為1,通過cache_read_port總是允許本單元向紋理存儲器發(fā)送紋素采樣請求(一個quad多個紋素坐標)。否則,將整個紋理流水線停滯;同時,通過與紋理存儲器(L1紋理cache)的接口函數(shù),通過進程不斷檢測cache_return_export接口函數(shù)返回結(jié)果有效情況,如果返回數(shù)據(jù)有效,則將結(jié)果按照請求的先后順序進行排序,并將結(jié)果通過數(shù)據(jù)指針data_pointer賦值給下一級送給紋素數(shù)據(jù)提取和格式轉(zhuǎn)換單元(4)的數(shù)據(jù)指針data_pointer_format_convert;紋素數(shù)據(jù)提取和格式轉(zhuǎn)換單元(4),用于根據(jù)紋理的內(nèi)部格式internalformat從cache獲取的32bit紋素數(shù)據(jù)中提取紋素各分量的值,將不同內(nèi)部格式轉(zhuǎn)換為RGBA格式的顏色數(shù)據(jù)。如圖2所示,建模設(shè)計時采用“紋素地址計算進程”(format_convert_Thread)和流水pipeline_2實現(xiàn),其中當“紋素格式轉(zhuǎn)換進程”檢測到由cache_return_export接口函數(shù)返回的變量cache_return_request有效時,則讀取數(shù)據(jù)指針data_pointer_format_convert的數(shù)據(jù),為“紋素格式轉(zhuǎn)換進程”提供必要的數(shù)據(jù)信息,“紋素格式轉(zhuǎn)換進程”主要完成算法功能主要有:通過texture_parameter_read_port讀取紋理寄存器狀態(tài)參數(shù)數(shù)據(jù)、紋素格式RGBA轉(zhuǎn)換(format_convert)計算等,并將最后的運算結(jié)果輸入到pipeline_3實現(xiàn)流水操作傳遞給下一紋素過濾操作、紋素數(shù)據(jù)歸一化(5);如圖5所示,紋素過濾操作、紋素數(shù)據(jù)歸一化單元(5),當紋理的過濾模式(filtermode)為臨近采樣模式(nearest),意味著不需要執(zhí)行過濾操作,這種類型的紋理請求在過濾模塊被“透傳”。否則,需要根據(jù)過濾模式,對多個紋理采樣值通過線性、或雙線性,或三線性插值計算,得到一個過濾后的紋素值,將結(jié)果進行紋素數(shù)據(jù)歸一化,即將輸入RGBA格式,每個分量為8bit的紋素數(shù)據(jù),經(jīng)過歸一化操作之后的紋素數(shù)據(jù)每個分量的寬度為32bit,取值范圍:[0,1]之間。如圖2所示,建模設(shè)計時采用“紋素過濾進程”(data_filtert_Thread)和流水pipeline_3實現(xiàn),其中,如圖8所示,當“紋素過濾進程”檢測到流水pipeline_3[n-1]非空時,讀取將pipeline_3[n-1]的數(shù)據(jù)指針,為“紋素過濾進程”提供必要的數(shù)據(jù)信息,“紋素過濾進程”主要完成算法功能主要有:根據(jù)不同的紋理映射類型(maptype)、過濾模式(filtermode)進行紋素值過濾和歸一化計算等,并將最后的結(jié)果通過與統(tǒng)一染色陣列(USA)之間的接口函數(shù)輸出給USA。最后應(yīng)說明的是,以上事實例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解;其依然可以對前述各實施例記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。當前第1頁1 2 3 
      當前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1