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