《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于UML & SystemC的GPU幾何管線(xiàn)光柵化硬件建模
基于UML & SystemC的GPU幾何管線(xiàn)光柵化硬件建模
2019年電子技術(shù)應(yīng)用第1期
陳 佳1,田 澤1,2,吳曉成1,樓曉強(qiáng)1
1.中航工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安710068; 2.集成電路與微系統(tǒng)設(shè)計(jì)航空科技重點(diǎn)實(shí)驗(yàn)室,陜西 西安710068
摘要: 架構(gòu)與算法是決定GPU性能的重要因素,需要盡可能早地對(duì)其進(jìn)行評(píng)估和驗(yàn)證。提出基于統(tǒng)一建模語(yǔ)言(Unified Modeling Language,UML)的模型,詳述了針對(duì)GPU幾何管線(xiàn)架構(gòu)和線(xiàn)圖元光柵化算法建模的過(guò)程及方法,并采用SystemC語(yǔ)言實(shí)現(xiàn)了事務(wù)級(jí)建模(Transaction-level Modeling,TLM)模型和仿真。驗(yàn)證了架構(gòu)和算法的正確性以及模型的有效性和可行性,為RTL設(shè)計(jì)提供了參考依據(jù)。
關(guān)鍵詞: UML TLM SystemC 建模仿真
中圖分類(lèi)號(hào): TP391
文獻(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.
Hardware modeling of GPU geometric pipeline rasterization based on UML & SystemC
Chen Jia1,Tian Ze1,2,Wu Xiaocheng1,Lou Xiaoqiang1
1.AVIC Computing Technique Research Institute,Xi′an 710068,China; 2.Aviation Key Laboratory of Science and Technology on Integrated Circuit and Micro-System Design,Xi′an 710068,China
Abstract: Architecture and algorithm determine the performance of GPU, and they need be verified as soon as possible. The paper brings forward a method of modeling based on UML(Unified Modeling Language), and describes the process of modeling GPU geometry engine unit architecture and line primitive rasterization algorithm in detail. Model and simulation are implemented in SystemC language. The model verifies the correctness of architecture and algorithm, and its own effectiveness and feasibility, provides reference to RTL design.
Key words : UML;TLM;SystemC;model simulation

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)為接口圖。

wdz2-t1.gif

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所示。

wdz2-t2.gif

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ì)描述。

wdz2-t3.gif

    本文從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)部定義如下:

    wdz2-4.1-x1.gif

    wdz2-4.1-x2.gif

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)程為例描述建模方法。

    wdz2-4.3-x1.gif

    wdz2-4.3-x2.gif

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)于任何硬件。

wdz2-t4.gif

wdz2-t5.gif

    本文模型(圖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)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。