• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      GPU-Hi:GPU RTL 平臺(tái)實(shí)現(xiàn)及效率分析①

      2022-07-26 06:05:18張立志趙士彭章隆兵
      高技術(shù)通訊 2022年5期
      關(guān)鍵詞:著色光柵頂點(diǎn)

      張立志 趙士彭 章隆兵

      (*計(jì)算機(jī)體系結(jié)構(gòu)國(guó)家重點(diǎn)實(shí)驗(yàn)室(中國(guó)科學(xué)院計(jì)算技術(shù)研究所) 北京 100190)

      (**中國(guó)科學(xué)院計(jì)算技術(shù)研究所 北京 100190)

      (***中國(guó)科學(xué)院大學(xué) 北京 100049)

      0 引言

      隨著個(gè)人電腦與智能手機(jī)的普及[1],人們對(duì)細(xì)膩逼真的3D 圖形繪制需求愈發(fā)強(qiáng)烈。圖形處理器(graphics processing unit,GPU)作為處理3D 圖形任務(wù)的專(zhuān)用芯片,其研究與發(fā)展對(duì)提升圖形應(yīng)用繪制效果有重要意義。

      現(xiàn)有的典型GPU 架構(gòu)有Fermi 架構(gòu)[2]與graphics cone next (GCN)架構(gòu)[3]。Fermi 架構(gòu)是Nvidia公司于2008 年提出,該架構(gòu)將頂點(diǎn)著色處理模塊與像素著色處理模塊合并為基于流處理器的統(tǒng)一渲染模塊,統(tǒng)一渲染架構(gòu)的流處理器與專(zhuān)用集成電路(application-specific integrated circuit,ASIC)實(shí)現(xiàn)的固定圖形算法[4-7]處理電路共同實(shí)現(xiàn)整個(gè)圖形處理流水線。GCN 架構(gòu)由超威半導(dǎo)體公司于2012 年提出,該架構(gòu)將原本使用的VLIW+SIMD 改進(jìn)為SIMT架構(gòu)。但因?yàn)樯虡I(yè)原因,Nvidia 與AMD 公司并沒(méi)有披露這兩款架構(gòu)的設(shè)計(jì)細(xì)節(jié),導(dǎo)致研究者無(wú)法直接使用這些架構(gòu)進(jìn)行GPU 研究。

      學(xué)術(shù)界對(duì)GPU 的研究主要集中在通用計(jì)算領(lǐng)域,例如gpgpu-sim[8]、gem5-gpu[9-10]、multi2sim[11]、MIAOW[12]、Accel-Sim[13],通用計(jì)算只涉及到GPU的流處理器模塊,并不涉及ASIC 模塊,這些研究對(duì)GPU 硬件與應(yīng)用行為的分析更多地集中在流處理器與cache 模塊,并沒(méi)有對(duì)圖形應(yīng)用基礎(chǔ)的圖形算法模塊進(jìn)行研究分析。

      學(xué)術(shù)界完整實(shí)現(xiàn)GPU 流處理器模塊與ASIC 固定圖形算法模塊的典型GPU 架構(gòu)有ATTILA[14]與Emerald[15]。ATTILA 是2006 年提出的一款GPU 架構(gòu),該架構(gòu)使用高級(jí)語(yǔ)言模擬器實(shí)現(xiàn)了完整的周期精確模擬,但其很多設(shè)計(jì)已經(jīng)不符合現(xiàn)代GPU 架構(gòu)。Emerald 由英屬哥倫比亞大學(xué)于2019 年提出,在gpgpu-sim 模擬器中增加了圖形算法模塊的實(shí)現(xiàn)。但Emerald 并沒(méi)有對(duì)圖形算法模塊實(shí)現(xiàn)周期精確的模擬。ATTILA 與Emerald 的另一個(gè)不足是缺少RTL 實(shí)現(xiàn),導(dǎo)致其分析結(jié)果不夠準(zhǔn)確。

      統(tǒng)觀學(xué)術(shù)界和工業(yè)界現(xiàn)有的GPU 平臺(tái),有的封鎖實(shí)現(xiàn)方法,有的使用古老的GPU 架構(gòu),有的只使用高級(jí)語(yǔ)言模擬。GPU 研究領(lǐng)域缺少一款開(kāi)放實(shí)現(xiàn)方法、使用現(xiàn)代GPU 架構(gòu)并且進(jìn)行寄存器傳輸級(jí)(register-transfer level,RTL)實(shí)現(xiàn)的GPU 研究平臺(tái)。

      本文主要貢獻(xiàn)為實(shí)現(xiàn)了一個(gè)包含完整圖形功能的RTL 級(jí)的GPU 研究平臺(tái)GPU-Hi,解決了上述問(wèn)題。并使用28 nm 工藝完成物理設(shè)計(jì),該平臺(tái)支持OpenGL 2.0 框架,使用ASIC 電路實(shí)現(xiàn)固定圖形算法模塊,使用SIMT 流處理器實(shí)現(xiàn)統(tǒng)一著色渲染模塊。在實(shí)驗(yàn)?zāi)K本文基于該平臺(tái)對(duì)glmark2[16]測(cè)試集進(jìn)行了應(yīng)用行為分析并對(duì)GPU 進(jìn)行硬件效率分析。結(jié)果證明,圖形應(yīng)用程序在進(jìn)行分辨率提升時(shí),圖形任務(wù)負(fù)載不會(huì)等比例增加;硬件光柵化模塊的真實(shí)性能受到著色程序執(zhí)行效率與訪存效率的影響,單一提升GPU 部分模塊硬件配置,GPU 整體性能并不會(huì)明顯提升。這些結(jié)論對(duì)圖形應(yīng)用開(kāi)發(fā)人員與GPU 結(jié)構(gòu)設(shè)計(jì)人員有借鑒意義。

      本文包含以下幾個(gè)部分。第1 節(jié)介紹了3D 圖形應(yīng)用背景與GPU 架構(gòu)背景;第2 節(jié)描述了GPUHi 的RTL 實(shí)現(xiàn)方法;第3 節(jié)分析了圖形應(yīng)用計(jì)算特性;第4 節(jié)展示了GPU-Hi 的RTL 實(shí)現(xiàn)的參數(shù),并使用glmark2 測(cè)試集進(jìn)行圖形應(yīng)用行為分析與GPU 硬件效率分析;第5 節(jié)提出未來(lái)研究工作并對(duì)本文進(jìn)行總結(jié)。

      1 背景介紹

      1.1 3D 圖形應(yīng)用背景

      目前主流3D 圖形應(yīng)用程序主要使用Open-GL[17]與DirectX[18-19]2 個(gè)圖形庫(kù)進(jìn)行實(shí)現(xiàn)。OpenGL圖形庫(kù)是一個(gè)面向2D 與3D 計(jì)算機(jī)圖形學(xué)的跨平臺(tái)語(yǔ)言的應(yīng)用程序庫(kù),1991 年由SGI 公司提出,后來(lái)由Khronos 組織進(jìn)行版本更新與維護(hù)。DirectX 圖形庫(kù)由微軟公司提出,實(shí)現(xiàn)內(nèi)容與OpenGL 圖形庫(kù)類(lèi)似。

      這2 個(gè)圖形庫(kù)都為3D 圖形程序定義了一條圖形處理流水線,這2 條流水線處理流程基本相同。圖形處理流水線將處理流程分為頂點(diǎn)著色階段、光柵化階段、像素著色階段、后片段處理階段。頂點(diǎn)著色階段以頂點(diǎn)數(shù)據(jù)為處理對(duì)象,對(duì)每一個(gè)頂點(diǎn)數(shù)據(jù)使用頂點(diǎn)著色程序進(jìn)行頂點(diǎn)的位置計(jì)算與屬性計(jì)算。光柵化階段將經(jīng)過(guò)計(jì)算的頂點(diǎn)數(shù)據(jù)組織成以三角形為代表的基本圖元,并以這些基本圖元為處理對(duì)象,將圖元轉(zhuǎn)換生成屏幕像素點(diǎn)。像素著色階段以像素點(diǎn)為基本處理單元,對(duì)每一個(gè)像素點(diǎn)使用像素著色程序進(jìn)行像素點(diǎn)的顏色計(jì)算。OpenGL 圖形庫(kù)使用高級(jí)著色器語(yǔ)言(high-level shading language,HLSL)[20]實(shí)現(xiàn)頂點(diǎn)著色器程序與像素點(diǎn)著色器程序,DirectX 圖形庫(kù)則使用GLSL 語(yǔ)言[21]進(jìn)行實(shí)現(xiàn)。后片段處理階段將經(jīng)過(guò)著色的像素點(diǎn)數(shù)據(jù)進(jìn)行深度剔除或透明混合操作,處理過(guò)后的像素點(diǎn)最終組成在屏幕中顯示的圖像。

      1.2 GPU 架構(gòu)背景

      GPU 是針對(duì)3D 圖形應(yīng)用程序而設(shè)計(jì)的應(yīng)用加速芯片。依據(jù)OpenGL 與DirectX 圖形庫(kù)所定義的圖形處理流水線,同時(shí)為增強(qiáng)自身處理能力,GPU將自身架構(gòu)設(shè)計(jì)為統(tǒng)一渲染架構(gòu)。因?yàn)轫旤c(diǎn)著色階段與片段著色階段都使用著色程序進(jìn)行計(jì)算,所以統(tǒng)一渲染架構(gòu)使用同一塊流處理器實(shí)現(xiàn)這兩階段的處理?;谶@兩個(gè)階段所具有的并行特性,流處理器使用單指令多線程(single instruction multiple threads,SIMT)架構(gòu)。根據(jù)光柵化單元與后片段處理階段的流式數(shù)據(jù)處理特性,使用ASIC 電路對(duì)其進(jìn)行實(shí)現(xiàn)。

      2 GPU-Hi 的RTL 實(shí)現(xiàn)方法

      2.1 GPU-Hi 簡(jiǎn)介

      GPU-Hi 使用本文作者所設(shè)計(jì)的一款GPU 架構(gòu)進(jìn)行RTL 實(shí)現(xiàn),該GPU 架構(gòu)已經(jīng)通過(guò)高級(jí)語(yǔ)言模擬器[22-23]完成了正確性驗(yàn)證。GPU-Hi 支持Open-GL 2.0 渲染框架,流處理器實(shí)現(xiàn)為統(tǒng)一渲染架構(gòu),各個(gè)處理單元支持靈活擴(kuò)展。本文介紹了GPU-Hi的RTL 實(shí)現(xiàn)方法,并使用GPU-Hi 進(jìn)行圖形應(yīng)用行為分析與GPU 硬件性能分析。

      GPU-Hi 包括5 個(gè)部分,即命令處理器(command processor,CP)、全局任務(wù)調(diào)度器(global task scheduler,GTS)、圖形處理集群(graphics processing cluster,GPC)、二級(jí)緩存(level 2 cache,L2 Cache)和內(nèi)存控制器(memory controller,MC)。其中圖形處理集群包括6 個(gè)模塊,即計(jì)算處理引擎(compute engine,CE)、幾何處理引擎(geometry engine,GE)、圖元處理引擎(primitive engine,PE)、局部任務(wù)調(diào)度器(local task scheduler,LTS)、流處理器集群(stream processor cluster,SPC) 和輸出合并單元(output merge unit,OMU)。

      GPU-Hi 結(jié)構(gòu)如圖1 所示。

      圖1 GPU-Hi 架構(gòu)圖

      本節(jié)后續(xù)部分介紹各模塊的具體實(shí)現(xiàn)方法。

      2.2 命令處理器

      命令處理器是GPU 的整體控制模塊,本平臺(tái)通過(guò)在命令處理器模塊嵌入一個(gè)GS132 處理器核進(jìn)行實(shí)現(xiàn)。該處理器核解析來(lái)自主機(jī)中央處理器(central processing unit,CPU)的圖形繪制命令與繪制任務(wù)參數(shù),針對(duì)不同的繪制命令與任務(wù)參數(shù)配置全局任務(wù)調(diào)度器和圖形處理集群。在GPU 流水線完成任務(wù)的繪制后,命令處理器把繪制結(jié)束信息通知給顯示輸出模塊,最終由顯示輸出模塊將結(jié)果數(shù)據(jù)輸出在顯示器屏幕上。

      2.3 全局任務(wù)調(diào)度器

      全局任務(wù)調(diào)度器從命令處理器接受繪制命令,并根據(jù)調(diào)度算法將繪制命令分配到對(duì)應(yīng)的圖形處理集群中。

      2.4 圖形處理集群

      圖形處理集群是GPU-Hi 的核心處理模塊。包括幾何處理引擎、圖元處理引擎、流處理器集群、局部任務(wù)調(diào)度器、輸出合并單元。

      幾何處理引擎主要包括頂點(diǎn)索引數(shù)據(jù)拆分模塊與頂點(diǎn)著色任務(wù)重定序隊(duì)列。頂點(diǎn)索引拆分模塊使用硬件電路實(shí)現(xiàn),解析命令處理發(fā)送來(lái)的命令參數(shù),獲得頂點(diǎn)數(shù)據(jù)索引,將頂點(diǎn)數(shù)據(jù)索引組織為頂點(diǎn)著色任務(wù),并將著色任務(wù)發(fā)送至局部任務(wù)調(diào)度器。著色任務(wù)包括著色程序的指令地址、數(shù)據(jù)地址、寄存器信息。頂點(diǎn)著色任務(wù)重定序隊(duì)列由隨機(jī)存取存儲(chǔ)器(random access memory,RAM)實(shí)現(xiàn),保存著色器任務(wù)的結(jié)果數(shù)據(jù),并按照著色器任務(wù)生成順序?qū)⒔Y(jié)果數(shù)據(jù)發(fā)送到圖元處理引擎。

      圖元處理引擎主要包括固定的光柵化算法模塊、像素著色任務(wù)生成模塊和像素著色任務(wù)重定序模塊。固定光柵化算法模塊實(shí)現(xiàn)了3D 圖形光柵化算法。區(qū)別于通用CPU 對(duì)數(shù)值處理的定點(diǎn)、單精度、雙精度數(shù)值格式,該模塊使用大量定制的運(yùn)算單元提高運(yùn)算效率與數(shù)值精度。這些定制的運(yùn)算單元包括單精度數(shù)據(jù)處理、可變精度數(shù)據(jù)處理、定點(diǎn)數(shù)據(jù)處理、多數(shù)據(jù)融合運(yùn)算處理等。像素著色器任務(wù)生成模塊將固定光柵化算法模塊生成的像素?cái)?shù)據(jù)組織為像素著色任務(wù),并為像素著色任務(wù)提供指令地址與預(yù)賦值的寄存器數(shù)據(jù)。像素著色任務(wù)重定序隊(duì)列由RAM 實(shí)現(xiàn),保存頂點(diǎn)著色任務(wù)的結(jié)果數(shù)據(jù),并且按照像素著色任務(wù)生成順序?qū)⑾袼刂蝿?wù)結(jié)果數(shù)據(jù)發(fā)送給輸出合并單元。

      流處理器集群由多個(gè)流處理器模塊構(gòu)成。流處理器模塊使用順序流水線的單指令多線程(SIMT)架構(gòu),每周期可以發(fā)射一條指令,這條指令可以同時(shí)驅(qū)動(dòng)多個(gè)線程進(jìn)行數(shù)據(jù)的讀寫(xiě)與運(yùn)算。流處理器模塊包括融合乘加運(yùn)算單元、超越函數(shù)單元、紋理單元、便箋式存儲(chǔ)單元、L1 Cache 單元和寄存器單元。融合乘加單元可以執(zhí)行融合乘加運(yùn)算;超越函數(shù)單元可以執(zhí)行正弦、倒數(shù)、指數(shù)、開(kāi)平方等運(yùn)算;紋理單元通過(guò)紋理指令來(lái)獲取紋理數(shù)據(jù)的地址,并通過(guò)L1 Cache 讀取紋理數(shù)據(jù),并且對(duì)讀取得到的紋理數(shù)據(jù)進(jìn)行濾波操作;便箋式存儲(chǔ)單元可以通過(guò)獨(dú)立尋址的方式為各個(gè)運(yùn)算單元提供數(shù)據(jù),減小片外訪存壓力;L1 Cache 為模塊內(nèi)各運(yùn)算單元提供數(shù)據(jù)。寄存器單元是各運(yùn)算模塊最基礎(chǔ)的數(shù)據(jù)存儲(chǔ)單元,流處理器設(shè)計(jì)為所有運(yùn)算單元無(wú)法直接從內(nèi)存進(jìn)行數(shù)據(jù)讀寫(xiě),讀取數(shù)據(jù)時(shí)必須先將數(shù)據(jù)從內(nèi)存load 進(jìn)寄存器,寫(xiě)入數(shù)據(jù)時(shí)必須先將數(shù)據(jù)寫(xiě)入寄存器。流處理器分別從幾何處理引擎與圖元處理引擎接收頂點(diǎn)著色任務(wù)與像素著色任務(wù),并將處理結(jié)果分別返回給幾何處理引擎與圖元處理引擎。

      局部任務(wù)調(diào)度器用于保存流處理器模塊的資源分配與占用情況,并根據(jù)資源占用情況將接收到的頂點(diǎn)著色任務(wù)與像素著色任務(wù)分配調(diào)度至流處理器模塊。

      輸出合并模塊主要包括深度測(cè)試與透明混合模塊。這兩個(gè)模塊使用定制的乘加運(yùn)算單元實(shí)現(xiàn),將從圖元處理引擎接收的像素點(diǎn)數(shù)據(jù)直接進(jìn)行計(jì)算處理,并輸出至片外幀緩沖區(qū),供顯示輸出模塊使用。

      2.5 二級(jí)緩存模塊

      片上二級(jí)緩存使用一個(gè)靜態(tài)RAM(static RAM,SRAM)實(shí)現(xiàn),用于處理流處理器集群中的L1 Cache的訪存請(qǐng)求,使用最近最少使用替換策略,在發(fā)生訪存地址缺失后,通過(guò)一個(gè)crossbar 將缺失的訪存請(qǐng)求發(fā)送至內(nèi)存控制器進(jìn)行處理。

      2.6 內(nèi)存控制器

      內(nèi)存控制器負(fù)責(zé)與片外顯存交互,將L2 Cache的Miss 的訪存請(qǐng)求通過(guò)總線協(xié)議(advanced extensible interface,AXI)發(fā)送到片外顯存進(jìn)行數(shù)據(jù)讀寫(xiě)訪問(wèn)。

      3 圖形應(yīng)用計(jì)算特性分析

      如1.1 節(jié)所述,圖形處理流水線的各個(gè)階段分別使用不同的數(shù)據(jù)對(duì)象作為最小處理單元,這便導(dǎo)致流水線各部分極易產(chǎn)生工作負(fù)載不均衡的問(wèn)題。在早期GPU 中,頂點(diǎn)著色階段與像素著色階段分別由不同的GPU 硬件模塊進(jìn)行處理,但因?yàn)轫旤c(diǎn)著色任務(wù)與像素著色任務(wù)的工作任務(wù)負(fù)載并不相同,很容易出現(xiàn)頂點(diǎn)著色任務(wù)過(guò)多或者像素著色任務(wù)過(guò)多的問(wèn)題,這種負(fù)載不均衡問(wèn)題嚴(yán)重影響了GPU 的工作效率?,F(xiàn)代GPU 通過(guò)統(tǒng)一渲染架構(gòu)來(lái)解決這種問(wèn)題,即使用統(tǒng)一的流處理器架構(gòu)同時(shí)處理頂點(diǎn)著色任務(wù)與像素著色任務(wù)。但統(tǒng)一渲染架構(gòu)只能解決著色器任務(wù)的負(fù)載不均衡,無(wú)法解決光柵化階段與著色器任務(wù)的負(fù)載不均衡問(wèn)題。本節(jié)將對(duì)這一問(wèn)題進(jìn)行分析。

      圖形處理工作分為需要順序執(zhí)行的3 個(gè)階段,即頂點(diǎn)著色階段、光柵化階段和像素點(diǎn)著色階段。

      頂點(diǎn)著色階段對(duì)當(dāng)前任務(wù)中所有頂點(diǎn)數(shù)據(jù)執(zhí)行頂點(diǎn)著色程序,頂點(diǎn)著色任務(wù)的工作負(fù)載與當(dāng)前任務(wù)中頂點(diǎn)數(shù)目與頂點(diǎn)著色程序復(fù)雜度呈正相關(guān)。

      光柵化階段分為以下幾個(gè)步驟。步驟1 將頂點(diǎn)數(shù)據(jù)組織成為圖元數(shù)據(jù);步驟2 將圖元數(shù)據(jù)生成以4×4 pixel 組成的frag(如圖2);步驟3 逐個(gè)處理frag 數(shù)據(jù),確定該frag 是否存在覆蓋圖元的quad 數(shù)據(jù),并計(jì)算這些quad 與pixel 的屬性數(shù)據(jù)。步驟1以頂點(diǎn)數(shù)據(jù)為對(duì)象,每周期讀取一個(gè)頂點(diǎn)數(shù)據(jù),其工作負(fù)載由頂點(diǎn)著色階段傳遞來(lái)的頂點(diǎn)數(shù)目決定;步驟2 與步驟3 以frag數(shù)據(jù)為處理對(duì)象,每周期處理一個(gè)frag 數(shù)據(jù),其工作負(fù)載由多個(gè)因素影響,包括每個(gè)頂點(diǎn)的位置信息、繪制任務(wù)所配置的屏幕分辨率信息。

      圖2 frag 結(jié)構(gòu)示意

      像素點(diǎn)著色階段需要將所有輸入來(lái)的quad(如圖2)數(shù)據(jù)進(jìn)行像素點(diǎn)著色程序處理。則像素點(diǎn)著色階段的工作負(fù)載依賴(lài)于像素著色程序的指令復(fù)雜度,同時(shí)依賴(lài)于光珊化階段第3 步生成的quad 數(shù)據(jù)數(shù)目。

      通過(guò)對(duì)圖形處理工作各階段任務(wù)的分析,可以得出結(jié)論,圖形處理工作在各個(gè)階段,甚至是同一階段的不同步驟,都有著不同的任務(wù)復(fù)雜度。同時(shí)由于頂點(diǎn)著色階段、光珊化階段和像素著色階段需要順序執(zhí)行,任務(wù)復(fù)雜度不同會(huì)導(dǎo)致圖形處理負(fù)載不均衡。例如,當(dāng)頂點(diǎn)著色任務(wù)負(fù)載過(guò)重,則會(huì)出現(xiàn)光柵化階段輸入數(shù)據(jù)供給過(guò)慢的問(wèn)題;當(dāng)像素著色階段處理過(guò)重,則會(huì)出現(xiàn)光柵化階段結(jié)果數(shù)據(jù)輸出被堵塞的問(wèn)題。各個(gè)階段的任務(wù)負(fù)載又依賴(lài)于頂點(diǎn)位置與屏幕分辨率等應(yīng)用行為,而硬件芯片在設(shè)計(jì)完成后各模塊的處理能力又無(wú)法變化,所以各模塊的處理效率將極大地受到圖形處理各階段的工作負(fù)載影響,即硬件模塊的執(zhí)行效率受到圖形應(yīng)用行為的影響。

      4 平臺(tái)實(shí)現(xiàn)及實(shí)驗(yàn)分析

      本節(jié)首先介紹GPU-Hi 平臺(tái)的硬件實(shí)現(xiàn)情況,而后基于本平臺(tái)進(jìn)行了2 組實(shí)驗(yàn)分析。

      兩組實(shí)驗(yàn)分別為:實(shí)驗(yàn)1 為圖形應(yīng)用程序在配置為不同分辨率時(shí),圖形應(yīng)用工作負(fù)載的變化;實(shí)驗(yàn)2為流處理器與內(nèi)存控制器配置為不同規(guī)模時(shí),GPU 光柵化模塊的性能變化。GPU 作為3D 圖形應(yīng)用加速器,圖形應(yīng)用的工作負(fù)載直接影響GPU 各硬件模塊的計(jì)算效率。

      4.1 GPU-Hi 物理設(shè)計(jì)結(jié)果

      本文使用28 nm 工藝對(duì)該平臺(tái)進(jìn)行物理設(shè)計(jì),在目標(biāo)主頻為500 MHz 的情況下,芯片總面積為7.90 μm2,主要模塊實(shí)際面積開(kāi)銷(xiāo)如表1 所示。

      表1 GPU-Hi 在28 nm 下面積開(kāi)銷(xiāo)

      4.2 分辨率對(duì)圖形任務(wù)負(fù)載影響

      本文選取glmark2 測(cè)試集中build-horse 進(jìn)行實(shí)驗(yàn)分析。glmark2 是一款OpenGL 應(yīng)用程序接口(application programming interface,API)程序測(cè)試集。build 測(cè)試是一個(gè)在頂點(diǎn)著色階段進(jìn)行光照渲染的圖形程序。

      首先通過(guò)將分辨率配置為400×300、600×450、800×600、1000×750、1200×900,來(lái)展示分辨率對(duì)圖形應(yīng)用行為的影響。

      由于頂點(diǎn)數(shù)目屬于圖形任務(wù)固有屬性,不隨分辨率變化,所以頂點(diǎn)著色階段的任務(wù)負(fù)載不隨分辨率變化。但圖元數(shù)據(jù)所生成的frag 數(shù)目屬于圖形任務(wù)動(dòng)態(tài)屬性,與分辨率相關(guān),即光珊化任務(wù)負(fù)載會(huì)隨分辨率變化。

      圖3 展示了build-horse 程序在不同分辨率下光珊化階段中frag 數(shù)量與frag_visi 數(shù)量的統(tǒng)計(jì)信息。其中frag 數(shù)量是指需要進(jìn)行像素點(diǎn)遍歷處理的frag數(shù)據(jù)數(shù)目,代表了光柵化階段的工作負(fù)載情況;frag_visi 數(shù)量是指經(jīng)過(guò)像素點(diǎn)遍歷處理后,被標(biāo)記為可見(jiàn)的frag 數(shù)目,代表了有效的frag 數(shù)據(jù);光珊化有效率是frag_visi 數(shù)量與frag 數(shù)量的比值。從圖中可知,雖然frag 數(shù)量與frag_visi 數(shù)量均隨分辨率提高而提高,但兩數(shù)量的比值,即光柵化有效率最終也隨分辨率提高而提高。

      圖4 展示了build-horse 程序在不同分辨率下光柵化階段中quad 數(shù)量與pixel 數(shù)量的統(tǒng)計(jì)信息。其中quad 數(shù)量是指存在可見(jiàn)像素點(diǎn)的quad 數(shù)據(jù)數(shù)目,代表了像素著色階段的工作負(fù)載;pixel 數(shù)量表示真正可見(jiàn)像素點(diǎn)的數(shù)量,代表了圖形應(yīng)用真正需要計(jì)算的像素?cái)?shù)目。由圖2 可知,1 個(gè)quad 數(shù)據(jù)對(duì)應(yīng)4 個(gè)pixel 數(shù)據(jù),所以像素著色有效率是pixel 數(shù)量與4 倍quad 數(shù)量的比值。從圖中可知,quad 數(shù)量與pixel 數(shù)量均隨分辨率提高而提高,同時(shí)像素著色有效率也隨分辨率提高而提高。

      由圖3 和圖4 可知,隨著分辨率的提高,光柵化有效率與像素著色有效率都隨之提高,這是因?yàn)樵谔嵘直媛室院?相同屏幕面積下,每一個(gè)像素點(diǎn)所占屏幕面積更小,圖形應(yīng)用的3D 模型建模更加細(xì)膩,每一個(gè)三角形覆蓋的誤差區(qū)域也就更小。

      圖4 quad 與pixel 數(shù)據(jù)變化

      圖5 展示了在分辨率增大后,以400×300 分辨率為基準(zhǔn),各項(xiàng)數(shù)據(jù)的比例情況,其中代表pixel 的線與代表像素的線完全重合。圖中像素表示當(dāng)前分辨率下屏幕中的像素?cái)?shù)目,例如400×300 分辨率中像素?cái)?shù)目為120 000。frag、quad、pixel 數(shù)據(jù)意義與圖3、圖4 相同??梢钥闯?在分辨率增大后,所有數(shù)據(jù)量都隨之增大,但各個(gè)數(shù)據(jù)增大的比例并不相同。代表光柵化任務(wù)負(fù)載的frag 數(shù)據(jù)小于代表像素著色任務(wù)負(fù)載的quad 數(shù)據(jù)變化趨勢(shì),同時(shí)兩者變化趨勢(shì)均明顯小于像素個(gè)數(shù)的變化趨勢(shì)。

      對(duì)圖3~圖5 的分析可以得出以下結(jié)論:(1)在圖形任務(wù)分辨率提升時(shí),分辨率模塊與像素著色模塊的工作有效率均有明顯提升;(2)在對(duì)圖像分辨率進(jìn)行提高時(shí),即提升畫(huà)質(zhì)時(shí),各項(xiàng)工作負(fù)載并不會(huì)隨分辨率的變化而等比例變化;(3)在圖形任務(wù)分辨率提升時(shí),GPU 各處理模塊的任務(wù)負(fù)載變化比例并不相同,即GPU 各處理模塊會(huì)產(chǎn)生負(fù)載不均衡問(wèn)題。

      圖5 光柵化各項(xiàng)數(shù)據(jù)變化比例

      4.3 硬件配置對(duì)光珊化模塊利用率影響

      如第2 節(jié)對(duì)GPU 硬件結(jié)構(gòu)描述,光柵化模塊負(fù)責(zé)將圖元數(shù)據(jù)生成為像素點(diǎn)數(shù)據(jù),它并不執(zhí)行著色器指令,也不進(jìn)行顯存的讀寫(xiě)操作,指令執(zhí)行能力與顯存讀寫(xiě)能力不會(huì)直接影響光柵化的效率。但是GPU 硬件使用順序的硬件流水線實(shí)現(xiàn)圖形處理算法,所以在執(zhí)行圖形任務(wù)時(shí),GPU 各個(gè)硬件模塊的執(zhí)行時(shí)間是相同的,即光柵化模塊的處理效率會(huì)受到流處理器能力與訪存能力的間接影響。這里對(duì)這一問(wèn)題進(jìn)行實(shí)驗(yàn)分析。

      表2 展示了應(yīng)用程序在配置為不同分辨率時(shí),光柵化模塊的處理效率變化情況。total_time列表示GPU-Hi 的光柵化模塊執(zhí)行當(dāng)前任務(wù)所執(zhí)行的總周期數(shù),frag_num表示對(duì)應(yīng)分辨率下光柵化執(zhí)行的frag 數(shù)據(jù)數(shù)目,ra_rate表示光柵化模塊處理frag的速率,例如第一行表示分辨率為400×300 時(shí),GPU-Hi 的光柵化模塊執(zhí)行了56 239 周期,處理了23 395 個(gè)frag 數(shù)據(jù),平均每周期處理0.415 個(gè)frag數(shù)據(jù)。根據(jù)表2 可以看出,在分辨率與光柵化工作負(fù)載發(fā)生變化時(shí),光柵化速率并沒(méi)有發(fā)生顯著改變,并且光柵化效率均不高,距離理想狀態(tài)下的每周期處理1 個(gè)frag 數(shù)據(jù)的差距很大。這表示光柵化模塊并不是GPU-Hi 的性能瓶頸,處理速率過(guò)低的原因可能是因?yàn)榱魈幚砥骷旱奶幚砟芰Σ蛔?例如頂點(diǎn)著色階段處理頂點(diǎn)數(shù)據(jù)的速度過(guò)慢,導(dǎo)致光柵化模塊接收輸入數(shù)據(jù)的速率太慢;像素著色階段處理像素點(diǎn)數(shù)據(jù)過(guò)慢,導(dǎo)致光柵化模塊生成的frag 數(shù)據(jù)無(wú)法向后級(jí)流水線傳遞。

      表2 分辨率與光柵化速率統(tǒng)計(jì)

      為分析光柵化速率過(guò)慢的原因,本文對(duì)GPU 硬件中流處理器集群與ram 的配置進(jìn)行更改。流處理器集群配置包括1 sp 和2 sp,其中1 sp 表示GPU-Hi中原本的流處理器集群架構(gòu),即整個(gè)GPU-Hi 只有一個(gè)流處理器模塊,所有的頂點(diǎn)著色任務(wù)與像素著色任務(wù)均使用這一組流處理器進(jìn)行處理;2 sp 作為對(duì)照組,表示使用2 組流處理器模塊來(lái)完成頂點(diǎn)著色任務(wù)與像素著色任務(wù),可大幅提高著色任務(wù)處理能力。ram 配置包括small ram 和super ram,其中small ram 表示GPU-Hi 中原本的ram 架構(gòu),即整個(gè)GPU-Hi 只有一個(gè)ram 進(jìn)行顯存讀寫(xiě)處理,所有需要顯存操作的模塊均共享該模塊;super ram 架構(gòu)作為對(duì)照組,表示為GPU-Hi 中所有需要進(jìn)行顯存讀寫(xiě)的模塊均配備獨(dú)立的訪存處理單元,可以大幅提升整個(gè)GPU-Hi 的訪存能力。

      在實(shí)驗(yàn)中,對(duì)每個(gè)分辨率進(jìn)行4 組對(duì)照實(shí)驗(yàn):實(shí)驗(yàn)組1 為1 sp、small ram;對(duì)照組2 為1 sp、super ram;對(duì)照組3 為2 sp、small ram;對(duì)照組4 為2 sp、super ram。4 組對(duì)照實(shí)驗(yàn)的結(jié)果如圖6 和圖7 所示。

      圖6 任務(wù)執(zhí)行總時(shí)間隨硬件配置變化圖

      圖7 光柵化速率隨硬件配置變化圖

      由圖可知,在5 種分辨率下,1 sp 與small ram均表現(xiàn)出最慢的光柵化速率。

      在不更改ram 而單純將1 sp 更改為2 sp 后,所有分辨率下frag 處理能力都發(fā)生了明顯提升,每周期處理數(shù)目分別提升了0.22、0.21、0.17、0.14、0.11,提升比例分別為53.4%、48.3%、40.4%、35.1%、29.1%。這說(shuō)明1sp 與small ram 的配置下,流處理器集群的工作負(fù)載過(guò)重,其計(jì)算能力極大限制了流水線整體的處理效率,并且在分辨率越低的情況下,流處理器集群的計(jì)算能力對(duì)光柵化的限制越明顯,流處理器集群與光柵化模塊的負(fù)載不均衡問(wèn)題也越明顯。但此時(shí)流處理器集群的理論計(jì)算能力增加了100%,光柵化能力雖然有提升,卻沒(méi)有進(jìn)行等比例增加,最高提升比例僅有53%,最低提升比例僅僅為29%,這說(shuō)明在2 sp 與small ram 的配置下,GPU的瓶頸可能是ram 的訪存能力,而不是流處理器集群的計(jì)算能力,下文將增加ram 配置的對(duì)比實(shí)驗(yàn)。

      在不更改流處理器集群配置而單純將small ram 更改為super ram 后,可以看出frag 的計(jì)算能力并沒(méi)有明顯的提升,5 種分辨率下光柵化每周期性能提升比例僅為5.1%、3.7%、6.3%、7.1%、7.8%,這說(shuō)明在1 sp 的配置下,small ram 的處理能力已經(jīng)完全達(dá)到了工作負(fù)載的需求。

      在將1 sp 更改為2 sp 同時(shí)將small ram 更改為super ram 后,相較于2 sp 與small ram 的配置,光柵化每周期性能提升比例分別為28%、28%、35%、38%、37%,可以看出此前2 sp 在配置small ram 時(shí),流處理器集群的計(jì)算能力的確已經(jīng)滿(mǎn)足工作負(fù)載,但ram 的訪存能力無(wú)法滿(mǎn)足工作負(fù)載需求。對(duì)比1 sp與small ram 的配置,性能提升比例分別達(dá)到了97%、90%、90%、87%、77%。光柵化模塊的frag處理速度在600×450 分辨率時(shí)達(dá)到了最高的0.83 個(gè)/s frag 數(shù)據(jù),已經(jīng)接近1 個(gè)/s frag 的理論峰值。

      根據(jù)以上分析可知,GPU 作為圖形應(yīng)用加速器,其內(nèi)部各個(gè)模塊分別使用ASIC 與SIMT 等不同架構(gòu)實(shí)現(xiàn),具有極強(qiáng)的異構(gòu)架構(gòu)特性。光柵化模塊作為流水線一部分,雖然不直接執(zhí)行著色器程序,也不進(jìn)行訪存操作,但工作時(shí)的實(shí)時(shí)處理能力受到流處理器處理能力與訪存能力的影響。

      5 結(jié)論

      工業(yè)界因?yàn)樯虡I(yè)問(wèn)題無(wú)法提出一套完整的寄存器傳輸級(jí)GPU 研究平臺(tái);學(xué)術(shù)界所使用的GPU 研究平臺(tái)中,MIAOW RTL 平臺(tái)沒(méi)有實(shí)現(xiàn)完整的圖形算法,而其他研究平臺(tái)如ATTILA、Emerald、Teapot,沒(méi)有通過(guò)RTL 實(shí)現(xiàn)。

      在這一情況下,本文提出RTL 級(jí)的GPU-Hi 研究平臺(tái),并描述了該平臺(tái)的硬件實(shí)現(xiàn)的方法。使用GS132 處理器核實(shí)現(xiàn)命令控制器,完成CPU 發(fā)送來(lái)的任務(wù)解析與整條流水線的調(diào)度配置;使用ASIC電路實(shí)現(xiàn)圖元處理引擎,完成復(fù)雜的3D 圖形光柵化算法;使用SIMT 架構(gòu)的流處理器實(shí)現(xiàn)流處理器集群,完成頂點(diǎn)著色程序與像素著色程序的執(zhí)行。

      基于前述寄存器傳輸級(jí)GPU 研究平臺(tái)通過(guò)glmark2 測(cè)試集對(duì)3D 圖形應(yīng)用行為分析及GPU 硬件負(fù)載進(jìn)行分析,得到以下結(jié)論。(1)圖形應(yīng)用的分析表明3D 圖形應(yīng)用的分辨率變化與分辨率所帶來(lái)的工作負(fù)載變化并不是等比例相關(guān),并且光柵化任務(wù)負(fù)載與著色器任務(wù)負(fù)載存在明顯的負(fù)載不均衡問(wèn)題;(2)對(duì)GPU 硬件負(fù)載的分析表明,雖然光柵化模塊并不執(zhí)行著色器程序指令,也不直接進(jìn)行顯存的讀寫(xiě)操作,但其工作效率極大地受到流處理器與訪存能力的影響。

      隨著人工智能的飛速發(fā)展,學(xué)術(shù)界越來(lái)越多的關(guān)注點(diǎn)投入到了GPU 在通用計(jì)算領(lǐng)域的研究,本文現(xiàn)有平臺(tái)的實(shí)現(xiàn)集中于GPU 在圖形渲染領(lǐng)域的研究,尚未實(shí)現(xiàn)通用計(jì)算功能。下一步的研究工作需要增加通用計(jì)算如OpenCL 的支持,同時(shí)需要進(jìn)一步完善實(shí)驗(yàn)平臺(tái)的工具鏈與調(diào)試環(huán)境,盡快將GPUHi 平臺(tái)開(kāi)放給研究人員使用。

      猜你喜歡
      著色光柵頂點(diǎn)
      蔬菜著色不良 這樣預(yù)防最好
      過(guò)非等腰銳角三角形頂點(diǎn)和垂心的圓的性質(zhì)及應(yīng)用(下)
      蘋(píng)果膨大著色期 管理細(xì)致別大意
      關(guān)于頂點(diǎn)染色的一個(gè)猜想
      10位畫(huà)家為美術(shù)片著色
      電影(2018年10期)2018-10-26 01:55:48
      CDIO教學(xué)模式在超聲光柵實(shí)驗(yàn)教學(xué)中的實(shí)踐
      基于LabView的光柵衍射虛擬實(shí)驗(yàn)研究
      Thomassen與曲面嵌入圖的著色
      光柵衍射實(shí)驗(yàn)教學(xué)中的體會(huì)
      物理與工程(2014年4期)2014-02-27 11:23:08
      用實(shí)函數(shù)直接計(jì)算光柵衍射的光強(qiáng)分布
      物理與工程(2011年1期)2011-03-25 10:02:44
      龙井市| 进贤县| 平度市| 金阳县| 岳池县| 华坪县| 万荣县| 蚌埠市| 遂川县| 闽侯县| 安陆市| 临武县| 乳源| 锦屏县| 丰都县| 康定县| 宜宾市| 黔西县| 南部县| 中山市| 三穗县| 马龙县| 理塘县| 老河口市| 东方市| 六枝特区| 什邡市| 高雄县| 湄潭县| 砀山县| 连山| 孙吴县| 刚察县| 商水县| 平原县| 绍兴县| 商南县| 义乌市| 余江县| 六枝特区| 奎屯市|