文献标识码:A
文章编号: 0258-7998(2014)07-0040-04
为打破国外垄断,研发拥有自主知识产权的图形处理器GPU(Graphics Processing Unit)对国民经济以及增强国防力量具有极其重要的意义。西安邮电大学GPU项目组2009年研发了GPU及其配套软件OpenGL。为了验证设计的GPU,并为GPU应用开发建立平台,本文研发了一个异构多核片上系统SoC(System on Chip)平台。
本文在分析了嵌入式开源LEON3处理器[1]、Linux操作系统和西安邮电大学自主研发的可编程图形处理器的基础上,提出异构多核SoC图形系统[2]的设计,最后在DNV6_F2PCIE FPGA开发板进行系统验证。
1 系统论证
1.1 研究路线
首先构建一个C++的GPU算法仿真平台,并在其上进行图像渲染算法的研究;其次设计搭建System Verilog[3]建立验证平台,并开始Verilog语言设计硬件和OpenGL相关软件的开发,为了加快硬件设计速度,采用了第三方IP;由于此系统电路规模较大,选择Xilinx公司的XC6VLX550T[4]进行原型开发,并运行大量裸机OpenGL应用程序;最后加上嵌入式LEON3处理器、Linux操作系统,通过软件驱动和硬件接口完成CPU与GPU的数据交互,实现了一个完整的移动异构多核SoC图形处理系统,通过外部可编程的方式在FPGA上验证整个SoC系统,进而验证硬件设计的正确性。
1.2 关键技术与可行性分析
本系统采取软硬件协同设计技术、IP设计和复用技术、超深亚微米设计技术。涉及的关键技术包括系统描述、高层次的算法分析与设计、软硬件的划分、语言和编译器设计、微处理器设计、Linux操作系统在LEON3处理器上的运行、驱动软件和硬件接口设计、图形处理器的软硬件协同设计、异构系统的协同仿真验证以及图形界面的生成。针对上述涉及的关键技术提出了理论分析与仿真、验证和原型测试相结合的研究方法,制订了从系统的算法级到电路的RTL级,再到原型系统实现,逐级细化、逐级验证的技术路线。
采用Top-to-Down方法[5]设计SoC芯片,充分考虑了异构多核SoC可编程图形处理器设计过程中所面临的挑战,保证了芯片功能和性能技术指标达到设计要求,有利于缩短开发周期,降低开发成本及产品的单片价格,符合SoC研究设计的客观规律。
2 系统的硬件设计
系统的硬件设计主要包括作为系统主机的嵌入式开源LEON3处理器设计和作为从机的可编程图形处理器设计。系统的整体硬件结构如图1所示。
系统主要数据流向:
(1)2D程序:上位机将镜像文件通过JTAG传到CPU-DDR中,CPU从中取出相应2D数据进行运算,将运算结果通过AHB/APB Bridge传到VGA,再将VGA的数据发送到GPU中的显控,最终传到显示器上显示。
(2)3D程序:CPU从CPU-DDR中取出相应的3D命令数据环,将数据环通过AHB Bridge传到GPU;GPU经过各级渲染,将渲染结果存储到GPU-DDR中;显控通过存储管理器从中取出数据,传到显示器上显示。
2.1 嵌入式LEON3处理器的设计
LEON3(basic version)作为整个系统的主机,是一款由欧洲航天总局旗下的Gaisler Research公司开发研制的32 bit、符合SPARC V8[6]架构的、可配置、可综合适用于SoC设计中的开源处理器IP核[7],遵循GNU LGPL协议。LEON3内部包含7级整数流水线,具有可配置的TLB的内存管理MMU(Memory Management Unit)单元,支持硬件乘/除法器以及分立的指令与数据缓存,并将其设计为4核。它的源代码由可综合的VHDL代码构成,同时LEON系列处理器的性能也比较理想,可以达到大约0.85 MIPS/MHz。更大的好处是LEON处理器是一个公开源代码,遵循GNU。通过高速的AMBA AHB[8]总线链接内存控制器及高速外部接口,低速的AMBA APB总线实现片上外设的接口,如定时器、串口、VGA等。
作为整个系统的主机,其功能如下:
(1)处理上位机发来的命令,并在主存中设置命令数据环,将处理命令放入环中;
(2)采用Linux操作系统作为系统运行平台,完成图形驱动处理;
(3)管理系统内存和输入/输出设备(键盘、鼠标、显示器);
(4)运行2D程序;
(5)支持Sparc V8指令集、多核运行;
(6)支持以太网、串口、PS2、GPIO、WatchDog、Timer等外设,支持AHB总线扩展。
LEON3结构如图2所示。
2.2 可编程图形处理器硬件设计
可编程图形处理器采用传统GPU架构,并结合了可编程技术,经过9级流水线处理后,完成了一个3D基本图元的渲染过程。作为整个系统的从机,各级流水线及功能如下:
(1)命令处理器(CMD,1 core):CPU在主存中设置命令数据环,将处理命令放入环中,命令处理器通过总线接口、DMA引擎从环中获取命令、数据或向量地址并进行解析,如果获得的命令是3D处理命令,则将命令下发给3D引擎;如果是命令处理器需要处理的命令(缓冲区对象操作、显示列表操作等),则在命令处理器中进行处理,而不发送给3D引擎。
(2)顶点染色器(VS,2 core):完成几何变换(平移、缩放、旋转)、光照染色等功能。
(3)图元装配器(AS,1 ASIC):图元装配将从VS发送出来的带有属性的顶点根据用户指定装配模式(由glBegin指定)装配为点、线、三角形。经过AS处理后,GPU后续的流水部件将不会识别顶点,而是识别基本图元点、线和三角形。
(4)平面裁剪(CLIP-Plane,1 core):根据用户自定义裁剪平面(最多支持6个自定义裁剪平面)对基本图元进行裁剪。
(5)视景体裁剪(CLIP-3D,1 core):根据用户所定义的视景体对基本图元进行视景体裁剪操作。
(6)视窗变换(HCW,1 core):完成3D坐标向屏幕坐标的转换,经过HCW的处理后,基本图元将转变为屏幕上所见到的图元,为后续的光栅化做准备。
(7)光栅化(Rasterization,5 core):Rasterization根据图元的屏幕坐标计算图元内部的所有像素值,并将像素传送给像素染色器。
(8)像素染色器(PS,4 core):根据Rasterization所发送的片段信息计算片段的具体颜色,如果启用了纹理操作,则根据纹理函数参数信息对片段进行像素染色,最终将片段染色的值传送给段操作部件。
(9)片段操作(Fragment,1 ASIC):接收PS所发送的片段信息,对片段进行后期的FOP等处理,处理完毕后将最终的像素值写入Frame Buffer中。
可编程图形处理器由15个处理器以及图元装配、片断操作、内部图像处理子集、MMU和直接内存存取DMA(Direct Memory Access)5个专用图形加速单元所构成。15个处理器均为可编程处理器,其中CMD和PS为定点处理器,其他的处理器为浮点处理器。图像处理子集、MMU和DMA功能如下:
(1)图像处理子集(PS_IMG_PROC, 1 ASIC):完成对像素数据的处理,以及纹理和雾相关信息的存储。
(2)内存管理[9](MMU,1 ASIC):实现对GPU存储空间分配、存储读/写控制、存储空间回收以及存储保护、地址映射等,对有访存要求的SoC图形处理芯片渲染管线部件进行仲裁并予以实时响应,协调各模块对存储的访问,保证各个模块能够顺利地对存储器进行读/写操作;
(3)直接存储访问(DMA,1 ASIC):从命令处理器那完全接管对总线的控制,数据交换不再经过命令处理器、图像处理子集,而直接在DDR或片上存储与CPU内存之间进行数据传送。可编程图形处理器结构图如图3所示。
可编程图形处理器功能如下:
(1)支持OpenGL 1.3;
(2)支持3D图元及相应几何变换;
(3)支持缓冲区对象、顶点数组和显示列表;
(4)每个时钟周期可同时支持4个像素的处理;
(5)支持6个平面裁剪、三维裁剪;
(6)支持多达8盏灯的方向性光照和位置性光照;
(7)支持Phong和Gouraud两种光照模型;
(8)采用32位深度缓冲,实现隐藏面消除;
(9)支持6幅纹理贴图;
(10)支持颜色、深度、累计、帧缓冲区;
(11)支持位图、图像绘制、图像读取、图像复制等图像操作。
3 实验数据
采用DINI公司DNV6_F2PCIE FPGA开发板验证系统,将LEON3集成到A片,ISE14.4综合频率为86.895 MHz,所占Slice为33%。将可编程图形处理器集成到B片,综合频率为97.032 MHz,所占Slice为76%。在Dini公司配套的EMU软件下,GPU实际工作频率最高为120 MHz(高于综合频率),每个时钟周期可同时支持4个像素的处理,其图形渲染速度为120×4=480 MPixels/s,显示窗口为800×600,显示图像大小为640×480,38个时钟渲染完一个像素,如图4所示。
本文对异构SoC可编程图像系统硬件设计进行深入分析,并在FPGA上验证,得出了以下结论:
(1)采用开源LEON3处理器,大大降低了系统硬件开发成本,加快了硬件开发速度。
(2)CPU和GPU之间采用AHB总线通信,满足高性能、高时钟频率的系统模块之间的数据交互。
(3)采用自主研发的并行多核处理器架构,由15个微处理器和硬件加速协处理器构成可编程GPU。
(4)为了优化系统性能和节省芯片面积,部分微处理器的运算单元采用了定点设计,而其他处理器采用浮点设计,支持处理器并行SIMT运算,通过软件协调图形系统运行精度、性能、面积和功耗的平衡。
(5)为了加速图形运算,设计了GPU的图元装配、片段操作、图像处理子集、MMU和DMA 5个专用图形加速单元。
参考文献
[1] Aeroflex Gaisler.LEON/GRLIB configuration and development guide[EB/OL].(2014-04)[2014-05-08].http://gaisler.com/products/grlib/guide.pdf.
[2] 王超.异构多核可重构片上网络系统关键技术研究[D].合肥:中国科学技术大学,2011.
[3] 山蕊,蒋林,李涛.基于System Verilog的可重用验证平台[J].电子技术应用,2013,39(5):128-131.
[4] Xlinx中文官方网址[EB/OL].(2014)[2014].http://china.xilinx.com/products/boards-and-kits/1-2BIW6U.htm.
[5] 沈理.SOC/ASIC设计验证和测试方法学[M].广州:中山大学出版社,2006.
[6] SPARC International.The SPARC architecture manual,version 8[M].Prentice Hall,1992.
[7] Aeroflex Gaisler.GRLIB IP library user′s manual version 1.3.0-B4133[EB/OL].(2013-01)[2014-05].http://gaisler.com.
[8] Aeroflex Gaisler.GRLIB IP core user′s manual version 1.3.0-B4133[EB/OL].(2013-07)[2014-05].http://gaisler.com.
[9] 肖灵芝.异构多核图形处理器存储系统设计与实现[J].电子技术应用,2013(5):38-40.