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