《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于UML & SystemC的GPU几何管线光栅化硬件建模
基于UML & SystemC的GPU几何管线光栅化硬件建模
2019年电子技术应用第1期
陈 佳1,田 泽1,2,吴晓成1,楼晓强1
1.中航工业西安航空计算技术研究所,陕西 西安710068; 2.集成电路与微系统设计航空科技重点实验室,陕西 西安710068
摘要: 架构与算法是决定GPU性能的重要因素,需要尽可能早地对其进行评估和验证。提出基于统一建模语言(Unified Modeling Language,UML)的模型,详述了针对GPU几何管线架构和线图元光栅化算法建模的过程及方法,并采用SystemC语言实现了事务级建模(Transaction-level Modeling,TLM)模型和仿真。验证了架构和算法的正确性以及模型的有效性和可行性,为RTL设计提供了参考依据。
关键词: UML TLM SystemC 建模仿真
中图分类号: TP391
文献标识码: 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.
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 引言

    随着微电子技术的快速发展以及人们对显卡的要求越来越高,应用于图形处理的计算机从图形工作站逐渐发展到单芯片图形处理器芯片(GPU)直到现在可编程大规模并行处理器,集成电路的规模及复杂度成倍增加。

    在GPU的设计与开发中,需要在RTL设计之前尽可能早地对架构和算法进行验证,为RTL设计提供参考依据。虽然RTL模型会提供更为精确的时间信息用于分析,但是开发比事务级建模(Transaction-Level Modeling,TLM)要困难,当进行结构优化时,带有物理细节的模型要比TLM更难以更改。

    GPU画图的核心是几何管线及光栅化,画图的基本图元是点、线、三角形,本文搭建的GPU模型将几何管线及光栅化封装为几何引擎单元,针对几何引擎的架构以及线图元光栅化的算法搭建了基于统一建模语言(Unified Modeling Language,UML)的模型,并采用SystemC语言实现了TLM模型和仿真,通过模型画出的图像证明架构和算法的正确性,以及模型的有效性和可行性。

1 UML建模语言

    UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言,UML适用于以面向对象技术来描述任何类型的系统,而且适用于系统开发的不同阶段,从需求规格描述直至系统完成后的测试和维护。在UML中,从任何一个角度对系统所做的抽象都可能需要用几种模型图来描述,而这些来自不同角度的模型图最终组成了系统的完整模型。

2 TLM模型

    本文搭建的模型属于TLM模型,TLM从更高的层次描述系统的行为,当要建模的目标系统十分复杂时,利用TLM快速建模,使得设计者在做RTL设计前就对目标系统有更清楚的理解,有利于硬件体系结构的性能分析和行为分析、软硬件划分和协同设计,并且事务级模型可带有时间信息可以做周期性能分析,能够提供非常快速的硬件仿真速度,是精确到周期的模型。

3 UML建模

    本文针对GPU的几何引擎单元搭建UML模型,整个开发过程以系统的建模行为为驱动,在进行建模之前,应当分析系统需求,根据建模的不同阶段,按照颗粒度从大到小,将单元的架构和算法一层层进行梳理。建模的方法和过程主要包括以下视图。

3.1 类图

    在面向对象的建模技术中,类、对象和它们之间的关系是最基本的建模元素。类图描述了系统中的类及相互之间的各种关系,其本质反映了系统中包含的各种对象的类型以及对象间的各种静态关系。

    本文搭建的几何引擎单元(GEU)是GPU系统的子模块,其接口输入是染色器输出控制单元(OCU),输出是任务调度单元(JSU)、深度缓冲区(ZCACHE)和寄存器接口(SPMU)。染色器输出控制单元将顶点数据发送给几何引擎单元,几何引擎单元处理完成后形成片元数据并输出给任务调度单元,任务调度单元按照数据属性类型封装发送给下级单元,同时通过深度缓冲区接口将深度信息写入深度缓冲区用来进行深度测试,以及通过寄存器接口更新寄存器以备后面单元计算使用。图1就是几何引擎单元的类图,也称为接口图。

wdz2-t1.gif

3.2 结构图

    结构图显示类元内部结构,包括此模块与系统其他部分的交互点,也显示类里各模块的关系,这些模块一起执行类的行为。用结构图搭建几何引擎单元的架构,可以清晰地展现出单元内部的组成部分,以及单元内部的数据通路。几何引擎单元的架构根据图形学的几何管线和光栅化原理由以下7个模块组成,分别是图元组装、平面剪裁、投影变换、三维剪裁、视窗变换、背面消隐以及光栅化单元,其结构图建模如图2所示。

wdz2-t2.gif

3.3 行为图

    行为图是对类的一种补充描述,描述了对象之间动态的交互关系,展示了此类对象所具有的可能的状态以及某些事件发生时其状态的转移情况。对于计算机图形学算法的理解首先要求具有较好的数学基础、良好的空间思维和非常清晰的思路。从结构图可以看出光栅化是几何引擎单元的最后一步,由应用程序指定的顶点按照结构图的流程执行到光栅化,完成了一系列空间转换后,由顶点绘制成图元就是光栅化单元所要做的事情。

    光栅化的算法是整个模型最复杂的算法,行为图可以准确有条理地描述算法的思路和实现,逻辑性地表达出算法的细节及其数据流和控制流。本文重点针对线图元光栅化算法,采用行为图搭建了其模型,图3是线图元光栅化算法总体流程,其细节在每个子模块的内部详细描述。

wdz2-t3.gif

    本文从GPU的整体架构出发层次性地搭建模型,首先针对几何引擎单元的外部互联建模类图,再根据原理细化单元内部结构图,最后详解线图元光栅化的算法行为图,准确描述出基于UML的模型搭建方法和过程。

4 SystemC建模及仿真

    本文采用SystemC语言实现了TLM模型以及仿真,SystemC是针对系统级和事务级设计流程的软/硬件建模和仿真平台,它在C++的基础上扩充了硬件库和仿真内核,具备硬件描述语言的基本特性。SystemC提供了支持硬件描述的类库和解释硬件描述的调度器,并从C++继承了对软件的描述能力,是一种可描述硬件和软件的建模语言[1-2]。SystemC的最大特点在于可支持软/硬件的协同设计和仿真,且较硬件描述语言有着极高的仿真速度。TLM将模型间的通信细节与函数单元或通信架构的细节分离出来,通信机制被建模成信道,并且以SystemC接口类的形式向模块呈现[3-4]

    根据UML建模的过程,本文通过SystemC语言将模型实现并仿真。

4.1 根据UML类图建模

    SystemC支持对模块的定义,模块实际上是一个类,内部包括了输入/输出端口、内部信号以及方法/线程[5]。SystemC定义的模块可对应RTL代码中的module。

    在完成各个模块的定义和描述后,就需要对模块进行端口绑定,以实现完整的功能架构。例如图1中的任务调度单元和几何引擎单元,任务调度单元通过端口向几何引擎单元传输顶点属性,则定义一个接口。同时分别在任务调度单元和几何引擎单元定义此接口类型的端口,并在几何引擎单元内部实现该接口函数。

    几何引擎单元模块的内部定义如下:

    wdz2-4.1-x1.gif

    wdz2-4.1-x2.gif

4.2 根据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 根据UML的行为图建模

    模块内部的算法细节采用线程实现,线程则会在每个时钟变化沿(可以是上升沿,下降沿,或者上升下降沿)被执行,并且引入了时序,可用于模型的时序性能分析[6]。一个模块内部可以拥有多个线程,在光栅化模块中就分别有实现点图元、线图元、三角形图元光栅化的线程,本文以线图元的线程为例描述建模方法。

    wdz2-4.3-x1.gif

    wdz2-4.3-x2.gif

4.4 模型仿真

    在完成SystemC建模后,需要对模型进行仿真调试。SystemC库自带仿真内核,用于调度事件与线程的执行顺序。与Verilog和VHDL类似,SystemC的仿真内核支持delta cycle、支持立即事件触发和延迟事件触发。SystemC的仿真内核按照一定的规则对所有的线程进行调度与执行[7-8]。完成对模型的仿真调试后,模型可以作为RTL仿真的参考模型,与RTL进行联合仿真,这是下一步的工作。

    本文搭建的GPU模型实现了OpenGL2.0标准,针对线图元光栅化算法及几何引擎单元架构做的仿真验证实例图如下,图4和图5分别是模型和Mesa启用了点画模式的线图元。Mesa是国际官方组织发布的实现OpenGL应用程序接口纯软模型,不依赖于任何硬件。

wdz2-t4.gif

wdz2-t5.gif

    本文模型(图4)设置的分辨率是2 048×1 536,Mesa(图5)设置的分辨率是1 024×768,因此从两个模型结果对比,图4基本上是图5密集度的两倍,但是两幅图的点画效果是一致的,说明几何引擎的架构与线图元光栅化算法正确。

5 结论

    本文基于UML视图搭建了GPU几何管线光栅化的模型,并通过SystemC语言进行了仿真验证,快速地验证系统架构和算法,为RTL设计提供参考依据;同时为RTL设计建立早期的验证平台,缩短验证时间;并且可以作为RTL验证平台的参考模型,提高验证的正确性和完整性;加速了GPU的软硬件协同设计。

参考文献

[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的嵌入式系统软硬件协同设计[J].计算机应用研究,2002,19(6):117-119.

[8] 李挥,陈曦.SystemC电子系统设计[M].北京:科学出版社,2010.



作者信息:

陈  佳1,田  泽1,2,吴晓成1,楼晓强1

(1.中航工业西安航空计算技术研究所,陕西 西安710068;

2.集成电路与微系统设计航空科技重点实验室,陕西 西安710068)