文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.181691
中文引用格式: 陳佳,田澤,吳曉成,等. 基于UML & SystemC的GPU幾何管線(xiàn)光柵化硬件建模[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ì)顯卡的要求越來(lái)越高,應(yīng)用于圖形處理的計(jì)算機(jī)從圖形工作站逐漸發(fā)展到單芯片圖形處理器芯片(GPU)直到現(xiàn)在可編程大規(guī)模并行處理器,集成電路的規(guī)模及復(fù)雜度成倍增加。
在GPU的設(shè)計(jì)與開(kāi)發(fā)中,需要在RTL設(shè)計(jì)之前盡可能早地對(duì)架構(gòu)和算法進(jìn)行驗(yàn)證,為RTL設(shè)計(jì)提供參考依據(jù)。雖然RTL模型會(huì)提供更為精確的時(shí)間信息用于分析,但是開(kāi)發(fā)比事務(wù)級(jí)建模(Transaction-Level Modeling,TLM)要困難,當(dāng)進(jìn)行結(jié)構(gòu)優(yōu)化時(shí),帶有物理細(xì)節(jié)的模型要比TLM更難以更改。
GPU畫(huà)圖的核心是幾何管線(xiàn)及光柵化,畫(huà)圖的基本圖元是點(diǎn)、線(xiàn)、三角形,本文搭建的GPU模型將幾何管線(xiàn)及光柵化封裝為幾何引擎單元,針對(duì)幾何引擎的架構(gòu)以及線(xiàn)圖元光柵化的算法搭建了基于統(tǒng)一建模語(yǔ)言(Unified Modeling Language,UML)的模型,并采用SystemC語(yǔ)言實(shí)現(xiàn)了TLM模型和仿真,通過(guò)模型畫(huà)出的圖像證明架構(gòu)和算法的正確性,以及模型的有效性和可行性。
1 UML建模語(yǔ)言
UML是一種定義良好、易于表達(dá)、功能強(qiáng)大且普遍適用的建模語(yǔ)言,UML適用于以面向?qū)ο蠹夹g(shù)來(lái)描述任何類(lèi)型的系統(tǒng),而且適用于系統(tǒng)開(kāi)發(fā)的不同階段,從需求規(guī)格描述直至系統(tǒng)完成后的測(cè)試和維護(hù)。在UML中,從任何一個(gè)角度對(duì)系統(tǒng)所做的抽象都可能需要用幾種模型圖來(lái)描述,而這些來(lái)自不同角度的模型圖最終組成了系統(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è)開(kāi)發(fā)過(guò)程以系統(tǒng)的建模行為為驅(qū)動(dòng),在進(jìn)行建模之前,應(yīng)當(dāng)分析系統(tǒng)需求,根據(jù)建模的不同階段,按照顆粒度從大到小,將單元的架構(gòu)和算法一層層進(jìn)行梳理。建模的方法和過(guò)程主要包括以下視圖。
3.1 類(lèi)圖
在面向?qū)ο蟮慕<夹g(shù)中,類(lèi)、對(duì)象和它們之間的關(guān)系是最基本的建模元素。類(lèi)圖描述了系統(tǒng)中的類(lèi)及相互之間的各種關(guān)系,其本質(zhì)反映了系統(tǒng)中包含的各種對(duì)象的類(lèi)型以及對(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ù)屬性類(lèi)型封裝發(fā)送給下級(jí)單元,同時(shí)通過(guò)深度緩沖區(qū)接口將深度信息寫(xiě)入深度緩沖區(qū)用來(lái)進(jìn)行深度測(cè)試,以及通過(guò)寄存器接口更新寄存器以備后面單元計(jì)算使用。圖1就是幾何引擎單元的類(lèi)圖,也稱(chēng)為接口圖。
3.2 結(jié)構(gòu)圖
結(jié)構(gòu)圖顯示類(lèi)元內(nèi)部結(jié)構(gòu),包括此模塊與系統(tǒng)其他部分的交互點(diǎn),也顯示類(lèi)里各模塊的關(guān)系,這些模塊一起執(zhí)行類(lèi)的行為。用結(jié)構(gòu)圖搭建幾何引擎單元的架構(gòu),可以清晰地展現(xiàn)出單元內(nèi)部的組成部分,以及單元內(nèi)部的數(shù)據(jù)通路。幾何引擎單元的架構(gòu)根據(jù)圖形學(xué)的幾何管線(xiàn)和光柵化原理由以下7個(gè)模塊組成,分別是圖元組裝、平面剪裁、投影變換、三維剪裁、視窗變換、背面消隱以及光柵化單元,其結(jié)構(gòu)圖建模如圖2所示。
3.3 行為圖
行為圖是對(duì)類(lèi)的一種補(bǔ)充描述,描述了對(duì)象之間動(dòng)態(tài)的交互關(guān)系,展示了此類(lèi)對(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ì)線(xiàn)圖元光柵化算法,采用行為圖搭建了其模型,圖3是線(xiàn)圖元光柵化算法總體流程,其細(xì)節(jié)在每個(gè)子模塊的內(nèi)部詳細(xì)描述。
本文從GPU的整體架構(gòu)出發(fā)層次性地搭建模型,首先針對(duì)幾何引擎單元的外部互聯(lián)建模類(lèi)圖,再根據(jù)原理細(xì)化單元內(nèi)部結(jié)構(gòu)圖,最后詳解線(xiàn)圖元光柵化的算法行為圖,準(zhǔn)確描述出基于UML的模型搭建方法和過(guò)程。
4 SystemC建模及仿真
本文采用SystemC語(yǔ)言實(shí)現(xiàn)了TLM模型以及仿真,SystemC是針對(duì)系統(tǒng)級(jí)和事務(wù)級(jí)設(shè)計(jì)流程的軟/硬件建模和仿真平臺(tái),它在C++的基礎(chǔ)上擴(kuò)充了硬件庫(kù)和仿真內(nèi)核,具備硬件描述語(yǔ)言的基本特性。SystemC提供了支持硬件描述的類(lèi)庫(kù)和解釋硬件描述的調(diào)度器,并從C++繼承了對(duì)軟件的描述能力,是一種可描述硬件和軟件的建模語(yǔ)言[1-2]。SystemC的最大特點(diǎn)在于可支持軟/硬件的協(xié)同設(shè)計(jì)和仿真,且較硬件描述語(yǔ)言有著極高的仿真速度。TLM將模型間的通信細(xì)節(jié)與函數(shù)單元或通信架構(gòu)的細(xì)節(jié)分離出來(lái),通信機(jī)制被建模成信道,并且以SystemC接口類(lèi)的形式向模塊呈現(xiàn)[3-4]。
根據(jù)UML建模的過(guò)程,本文通過(guò)SystemC語(yǔ)言將模型實(shí)現(xiàn)并仿真。
4.1 根據(jù)UML類(lèi)圖建模
SystemC支持對(duì)模塊的定義,模塊實(shí)際上是一個(gè)類(lèi),內(nèi)部包括了輸入/輸出端口、內(nèi)部信號(hào)以及方法/線(xiàn)程[5]。SystemC定義的模塊可對(duì)應(yīng)RTL代碼中的module。
在完成各個(gè)模塊的定義和描述后,就需要對(duì)模塊進(jìn)行端口綁定,以實(shí)現(xiàn)完整的功能架構(gòu)。例如圖1中的任務(wù)調(diào)度單元和幾何引擎單元,任務(wù)調(diào)度單元通過(guò)端口向幾何引擎單元傳輸頂點(diǎn)屬性,則定義一個(gè)接口。同時(shí)分別在任務(wù)調(diào)度單元和幾何引擎單元定義此接口類(lèi)型的端口,并在幾何引擎單元內(nèi)部實(shí)現(xiàn)該接口函數(shù)。
幾何引擎單元模塊的內(nèi)部定義如下:
4.2 根據(jù)UML結(jié)構(gòu)圖建模
幾何引擎單元類(lèi)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é)采用線(xiàn)程實(shí)現(xiàn),線(xiàn)程則會(huì)在每個(gè)時(shí)鐘變化沿(可以是上升沿,下降沿,或者上升下降沿)被執(zhí)行,并且引入了時(shí)序,可用于模型的時(shí)序性能分析[6]。一個(gè)模塊內(nèi)部可以擁有多個(gè)線(xiàn)程,在光柵化模塊中就分別有實(shí)現(xiàn)點(diǎn)圖元、線(xiàn)圖元、三角形圖元光柵化的線(xiàn)程,本文以線(xiàn)圖元的線(xiàn)程為例描述建模方法。
4.4 模型仿真
在完成SystemC建模后,需要對(duì)模型進(jìn)行仿真調(diào)試。SystemC庫(kù)自帶仿真內(nèi)核,用于調(diào)度事件與線(xiàn)程的執(zhí)行順序。與Verilog和VHDL類(lèi)似,SystemC的仿真內(nèi)核支持delta cycle、支持立即事件觸發(fā)和延遲事件觸發(fā)。SystemC的仿真內(nèi)核按照一定的規(guī)則對(duì)所有的線(xiàn)程進(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ì)線(xiàn)圖元光柵化算法及幾何引擎單元架構(gòu)做的仿真驗(yàn)證實(shí)例圖如下,圖4和圖5分別是模型和Mesa啟用了點(diǎn)畫(huà)模式的線(xiàn)圖元。Mesa是國(guó)際官方組織發(fā)布的實(shí)現(xiàn)OpenGL應(yīng)用程序接口純軟模型,不依賴(lài)于任何硬件。
本文模型(圖4)設(shè)置的分辨率是2 048×1 536,Mesa(圖5)設(shè)置的分辨率是1 024×768,因此從兩個(gè)模型結(jié)果對(duì)比,圖4基本上是圖5密集度的兩倍,但是兩幅圖的點(diǎn)畫(huà)效果是一致的,說(shuō)明幾何引擎的架構(gòu)與線(xiàn)圖元光柵化算法正確。
5 結(jié)論
本文基于UML視圖搭建了GPU幾何管線(xiàn)光柵化的模型,并通過(guò)SystemC語(yǔ)言進(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)