文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.181691
中文引用格式: 陳佳,,田澤,,吳曉成,等. 基于UML & SystemC的GPU幾何管線光柵化硬件建模[J].電子技術(shù)應(yīng)用,,2019,,45(1):23-26.
英文引用格式: Chen Jia,Tian Ze,,Wu Xiaocheng,,et al. Hardware modeling of GPU geometric pipeline rasterization based on UML & SystemC[J]. Application of Electronic Technique,2019,,45(1):23-26.
0 引言
隨著微電子技術(shù)的快速發(fā)展以及人們對(duì)顯卡的要求越來越高,,應(yīng)用于圖形處理的計(jì)算機(jī)從圖形工作站逐漸發(fā)展到單芯片圖形處理器芯片(GPU)直到現(xiàn)在可編程大規(guī)模并行處理器,,集成電路的規(guī)模及復(fù)雜度成倍增加。
在GPU的設(shè)計(jì)與開發(fā)中,,需要在RTL設(shè)計(jì)之前盡可能早地對(duì)架構(gòu)和算法進(jìn)行驗(yàn)證,,為RTL設(shè)計(jì)提供參考依據(jù)。雖然RTL模型會(huì)提供更為精確的時(shí)間信息用于分析,,但是開發(fā)比事務(wù)級(jí)建模(Transaction-Level Modeling,TLM)要困難,,當(dāng)進(jìn)行結(jié)構(gòu)優(yōu)化時(shí),,帶有物理細(xì)節(jié)的模型要比TLM更難以更改。
GPU畫圖的核心是幾何管線及光柵化,,畫圖的基本圖元是點(diǎn),、線、三角形,,本文搭建的GPU模型將幾何管線及光柵化封裝為幾何引擎單元,,針對(duì)幾何引擎的架構(gòu)以及線圖元光柵化的算法搭建了基于統(tǒng)一建模語言(Unified Modeling Language,UML)的模型,,并采用SystemC語言實(shí)現(xiàn)了TLM模型和仿真,,通過模型畫出的圖像證明架構(gòu)和算法的正確性,以及模型的有效性和可行性,。
1 UML建模語言
UML是一種定義良好,、易于表達(dá)、功能強(qiáng)大且普遍適用的建模語言,,UML適用于以面向?qū)ο蠹夹g(shù)來描述任何類型的系統(tǒng),,而且適用于系統(tǒng)開發(fā)的不同階段,從需求規(guī)格描述直至系統(tǒng)完成后的測(cè)試和維護(hù),。在UML中,,從任何一個(gè)角度對(duì)系統(tǒng)所做的抽象都可能需要用幾種模型圖來描述,而這些來自不同角度的模型圖最終組成了系統(tǒng)的完整模型,。
2 TLM模型
本文搭建的模型屬于TLM模型,,TLM從更高的層次描述系統(tǒng)的行為,當(dāng)要建模的目標(biāo)系統(tǒng)十分復(fù)雜時(shí),,利用TLM快速建模,,使得設(shè)計(jì)者在做RTL設(shè)計(jì)前就對(duì)目標(biāo)系統(tǒng)有更清楚的理解,有利于硬件體系結(jié)構(gòu)的性能分析和行為分析,、軟硬件劃分和協(xié)同設(shè)計(jì),,并且事務(wù)級(jí)模型可帶有時(shí)間信息可以做周期性能分析,能夠提供非??焖俚挠布抡嫠俣?,是精確到周期的模型,。
3 UML建模
本文針對(duì)GPU的幾何引擎單元搭建UML模型,整個(gè)開發(fā)過程以系統(tǒng)的建模行為為驅(qū)動(dòng),,在進(jìn)行建模之前,,應(yīng)當(dāng)分析系統(tǒng)需求,根據(jù)建模的不同階段,,按照顆粒度從大到小,,將單元的架構(gòu)和算法一層層進(jìn)行梳理。建模的方法和過程主要包括以下視圖,。
3.1 類圖
在面向?qū)ο蟮慕<夹g(shù)中,,類、對(duì)象和它們之間的關(guān)系是最基本的建模元素,。類圖描述了系統(tǒng)中的類及相互之間的各種關(guān)系,,其本質(zhì)反映了系統(tǒng)中包含的各種對(duì)象的類型以及對(duì)象間的各種靜態(tài)關(guān)系。
本文搭建的幾何引擎單元(GEU)是GPU系統(tǒng)的子模塊,,其接口輸入是染色器輸出控制單元(OCU),,輸出是任務(wù)調(diào)度單元(JSU)、深度緩沖區(qū)(ZCACHE)和寄存器接口(SPMU),。染色器輸出控制單元將頂點(diǎn)數(shù)據(jù)發(fā)送給幾何引擎單元,,幾何引擎單元處理完成后形成片元數(shù)據(jù)并輸出給任務(wù)調(diào)度單元,任務(wù)調(diào)度單元按照數(shù)據(jù)屬性類型封裝發(fā)送給下級(jí)單元,,同時(shí)通過深度緩沖區(qū)接口將深度信息寫入深度緩沖區(qū)用來進(jìn)行深度測(cè)試,,以及通過寄存器接口更新寄存器以備后面單元計(jì)算使用。圖1就是幾何引擎單元的類圖,,也稱為接口圖,。
3.2 結(jié)構(gòu)圖
結(jié)構(gòu)圖顯示類元內(nèi)部結(jié)構(gòu),包括此模塊與系統(tǒng)其他部分的交互點(diǎn),,也顯示類里各模塊的關(guān)系,,這些模塊一起執(zhí)行類的行為。用結(jié)構(gòu)圖搭建幾何引擎單元的架構(gòu),,可以清晰地展現(xiàn)出單元內(nèi)部的組成部分,,以及單元內(nèi)部的數(shù)據(jù)通路。幾何引擎單元的架構(gòu)根據(jù)圖形學(xué)的幾何管線和光柵化原理由以下7個(gè)模塊組成,,分別是圖元組裝,、平面剪裁、投影變換,、三維剪裁,、視窗變換、背面消隱以及光柵化單元,,其結(jié)構(gòu)圖建模如圖2所示,。
3.3 行為圖
行為圖是對(duì)類的一種補(bǔ)充描述,,描述了對(duì)象之間動(dòng)態(tài)的交互關(guān)系,展示了此類對(duì)象所具有的可能的狀態(tài)以及某些事件發(fā)生時(shí)其狀態(tài)的轉(zhuǎn)移情況,。對(duì)于計(jì)算機(jī)圖形學(xué)算法的理解首先要求具有較好的數(shù)學(xué)基礎(chǔ),、良好的空間思維和非常清晰的思路。從結(jié)構(gòu)圖可以看出光柵化是幾何引擎單元的最后一步,,由應(yīng)用程序指定的頂點(diǎn)按照結(jié)構(gòu)圖的流程執(zhí)行到光柵化,,完成了一系列空間轉(zhuǎn)換后,由頂點(diǎn)繪制成圖元就是光柵化單元所要做的事情,。
光柵化的算法是整個(gè)模型最復(fù)雜的算法,,行為圖可以準(zhǔn)確有條理地描述算法的思路和實(shí)現(xiàn),邏輯性地表達(dá)出算法的細(xì)節(jié)及其數(shù)據(jù)流和控制流,。本文重點(diǎn)針對(duì)線圖元光柵化算法,采用行為圖搭建了其模型,,圖3是線圖元光柵化算法總體流程,,其細(xì)節(jié)在每個(gè)子模塊的內(nèi)部詳細(xì)描述。
本文從GPU的整體架構(gòu)出發(fā)層次性地搭建模型,,首先針對(duì)幾何引擎單元的外部互聯(lián)建模類圖,,再根據(jù)原理細(xì)化單元內(nèi)部結(jié)構(gòu)圖,最后詳解線圖元光柵化的算法行為圖,,準(zhǔn)確描述出基于UML的模型搭建方法和過程,。
4 SystemC建模及仿真
本文采用SystemC語言實(shí)現(xiàn)了TLM模型以及仿真,SystemC是針對(duì)系統(tǒng)級(jí)和事務(wù)級(jí)設(shè)計(jì)流程的軟/硬件建模和仿真平臺(tái),,它在C++的基礎(chǔ)上擴(kuò)充了硬件庫(kù)和仿真內(nèi)核,,具備硬件描述語言的基本特性。SystemC提供了支持硬件描述的類庫(kù)和解釋硬件描述的調(diào)度器,,并從C++繼承了對(duì)軟件的描述能力,,是一種可描述硬件和軟件的建模語言[1-2]。SystemC的最大特點(diǎn)在于可支持軟/硬件的協(xié)同設(shè)計(jì)和仿真,,且較硬件描述語言有著極高的仿真速度,。TLM將模型間的通信細(xì)節(jié)與函數(shù)單元或通信架構(gòu)的細(xì)節(jié)分離出來,通信機(jī)制被建模成信道,,并且以SystemC接口類的形式向模塊呈現(xiàn)[3-4],。
根據(jù)UML建模的過程,本文通過SystemC語言將模型實(shí)現(xiàn)并仿真,。
4.1 根據(jù)UML類圖建模
SystemC支持對(duì)模塊的定義,,模塊實(shí)際上是一個(gè)類,內(nèi)部包括了輸入/輸出端口,、內(nèi)部信號(hào)以及方法/線程[5],。SystemC定義的模塊可對(duì)應(yīng)RTL代碼中的module,。
在完成各個(gè)模塊的定義和描述后,就需要對(duì)模塊進(jìn)行端口綁定,,以實(shí)現(xiàn)完整的功能架構(gòu),。例如圖1中的任務(wù)調(diào)度單元和幾何引擎單元,任務(wù)調(diào)度單元通過端口向幾何引擎單元傳輸頂點(diǎn)屬性,,則定義一個(gè)接口,。同時(shí)分別在任務(wù)調(diào)度單元和幾何引擎單元定義此接口類型的端口,并在幾何引擎單元內(nèi)部實(shí)現(xiàn)該接口函數(shù),。
幾何引擎單元模塊的內(nèi)部定義如下:
4.2 根據(jù)UML結(jié)構(gòu)圖建模
幾何引擎單元類G3D_GEU 內(nèi)部例化7個(gè)子模塊:
G3D_GEU_PAU *pau;
G3D_GEU_PCU *pcu;
G3D_GEU_PTU *ptu;
G3D_GEU_TDU *tdu;
G3D_GEU_VTU *vtu;
G3D_GEU_BCU *bcu;
G3D_GEU_PRU *pru;
4.3 根據(jù)UML的行為圖建模
模塊內(nèi)部的算法細(xì)節(jié)采用線程實(shí)現(xiàn),,線程則會(huì)在每個(gè)時(shí)鐘變化沿(可以是上升沿,下降沿,,或者上升下降沿)被執(zhí)行,,并且引入了時(shí)序,可用于模型的時(shí)序性能分析[6],。一個(gè)模塊內(nèi)部可以擁有多個(gè)線程,,在光柵化模塊中就分別有實(shí)現(xiàn)點(diǎn)圖元、線圖元,、三角形圖元光柵化的線程,,本文以線圖元的線程為例描述建模方法。
4.4 模型仿真
在完成SystemC建模后,,需要對(duì)模型進(jìn)行仿真調(diào)試,。SystemC庫(kù)自帶仿真內(nèi)核,用于調(diào)度事件與線程的執(zhí)行順序,。與Verilog和VHDL類似,,SystemC的仿真內(nèi)核支持delta cycle、支持立即事件觸發(fā)和延遲事件觸發(fā),。SystemC的仿真內(nèi)核按照一定的規(guī)則對(duì)所有的線程進(jìn)行調(diào)度與執(zhí)行[7-8],。完成對(duì)模型的仿真調(diào)試后,模型可以作為RTL仿真的參考模型,,與RTL進(jìn)行聯(lián)合仿真,,這是下一步的工作。
本文搭建的GPU模型實(shí)現(xiàn)了OpenGL2.0標(biāo)準(zhǔn),,針對(duì)線圖元光柵化算法及幾何引擎單元架構(gòu)做的仿真驗(yàn)證實(shí)例圖如下,,圖4和圖5分別是模型和Mesa啟用了點(diǎn)畫模式的線圖元。Mesa是國(guó)際官方組織發(fā)布的實(shí)現(xiàn)OpenGL應(yīng)用程序接口純軟模型,,不依賴于任何硬件,。
本文模型(圖4)設(shè)置的分辨率是2 048×1 536,Mesa(圖5)設(shè)置的分辨率是1 024×768,,因此從兩個(gè)模型結(jié)果對(duì)比,,圖4基本上是圖5密集度的兩倍,,但是兩幅圖的點(diǎn)畫效果是一致的,說明幾何引擎的架構(gòu)與線圖元光柵化算法正確,。
5 結(jié)論
本文基于UML視圖搭建了GPU幾何管線光柵化的模型,,并通過SystemC語言進(jìn)行了仿真驗(yàn)證,快速地驗(yàn)證系統(tǒng)架構(gòu)和算法,,為RTL設(shè)計(jì)提供參考依據(jù),;同時(shí)為RTL設(shè)計(jì)建立早期的驗(yàn)證平臺(tái),縮短驗(yàn)證時(shí)間,;并且可以作為RTL驗(yàn)證平臺(tái)的參考模型,,提高驗(yàn)證的正確性和完整性;加速了GPU的軟硬件協(xié)同設(shè)計(jì),。
參考文獻(xiàn)
[1] SWAN S.An introduction to system level modeling in SystemC 2.0.cadence design systems[Z].2001.
[2] IEEE 1666-2011,,IEEE standard for standard systemc language reference manual[S].2011.
[3] Open SystemC Initiative,SystemC 2.0 User’s Guide[Z].
[4] 張俊新.基于SystemC的事物級(jí)建模研究[D].武漢:武漢大學(xué),,2004.
[5] 王忠海,,葉以正,喻明艷.使用SystemC 2.0進(jìn)行SoC設(shè)計(jì)建模仿真[J].計(jì)算機(jī)仿真,,2005,22(5):78-81.
[6] 唐進(jìn).SystemC架起了橋梁[J].中國(guó)集成電路,,2005(5):44-46.
[7] 石柯.基于SystemC的嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用研究,,2002,19(6):117-119.
[8] 李揮,,陳曦.SystemC電子系統(tǒng)設(shè)計(jì)[M].北京:科學(xué)出版社,,2010.
作者信息:
陳 佳1,田 澤1,,2,,吳曉成1,樓曉強(qiáng)1
(1.中航工業(yè)西安航空計(jì)算技術(shù)研究所,,陜西 西安710068,;
2.集成電路與微系統(tǒng)設(shè)計(jì)航空科技重點(diǎn)實(shí)驗(yàn)室,陜西 西安710068)