您的位置:首页 > 其它

/LGC图形渲染/PXA300平台2D图形加速器性能测试与分析

2010-12-28 16:16 411 查看
PXA300平台2D图形加速器性能测试与分析


[日期:2009-3-10]作者:来源:

引言

消费类电子产品的快速发展使得人们对嵌入式多媒体系统的性能要求也随之提升。随着消费电子产品性能的不断增强,人们希望有更
多的嵌入式多媒体系统能够支持速度快,性能强劲的图形系统,嵌入式图形加速器在嵌入式多媒体系统中的应用开始崭露头角,并在嵌入式多媒体系统中得到更加广
泛,更加深入的应用。

硬件加速技术对比软件加速技术有很大的优势:速度快、功能强和CPU占用率低。硬件加速技术和软件加速技术
相比的最大优势在处理速度上,如一个简单的浮点运算协处理器,其浮点运算的性能就可以达到通用CPU的30倍。硬件图形加速器能比软件加速提供更多的效果
和功能,例如PC图形加速器中的HDR(高动态范围)效果,它使得画面在细微变化时更加自然,但由于消耗太多的运算资源,对于实时渲染场景难以使用软件实
现,而借助先进的图形加速硬件就可以完成。CPU占用率低,比如在PC系统中,只有使用中高端双核CPU才能流畅播放1080P
H.264视频,而且CPU占有率也高达70%~90%;但是启用图形加速卡的硬件加速功能之后,CPU占用率降低到了10%。

图形硬件
加速器在嵌入式多媒体系统中应用越来越广泛。硬件图形加速器能够让嵌入式平台完成一些计算量特别复杂的任务,比如说实时视频音频的编解码和3D游戏
[2]。由于嵌入式通用CPU特别注重低功耗和移动性,因此频率一般不是很高,其性能也很难满足高质量实时视频、音频的编解码和3D游戏,如果要完成上述
的任务就需要硬件加速器的支持。

1 测试平台简介

1.1 Marvell PXA300集成2D图形加速器


次测试平台是采用Marvell最新的PXA300应用处理器(Monahans
L系列)的嵌入式应用平台。MarvellPXA300处理器内部集成了2D图形加速器,它的加速功能包括绘制直线、填充矩形、矩形区域的缩放、旋转、复
制和Alpha混合。这是一款为图形窗口操作量身定制的硬件图形加速器。



本文附图描述了2D图形加速器的结构。它拥有一个图形控制核心和多个缓冲区。图形控制核心从指令缓冲区里面取得图形指令,并从数据缓冲区中取得数据,对数据进行处理后把结果写入目的数据缓冲区。这些指令和数据的读取、写入都是独立于CPU进行的。

2D图形加速器的缓冲区分两种:

一种是指令缓冲区。指令缓冲区是存放图形指令的区域,它在逻辑上是一个队列结构。图形加速器内部则维护了一个头指针,一个尾指针和一个执行指针,以先进先出的方式读取和执行缓冲区里的指令。

另一种是数据缓冲区。数据缓冲区又分源缓冲区和目的缓冲区。源缓冲区是指在进行二元和多元运算时,源数据的存放地址,目的缓冲区则是运算结果存放的地址,一般来说目的缓冲区就是LCD控制器指定的Frame buffer。

1.2 基于Uboot的测试环境搭建

Uboot是一个开源的Bootloader项目,它支持Pow-erPC、ARM、Xscale、X86等体系结构,PXA300就是Xs-cale架构的成员。在Uboot下实现硬件测试功能,基本方法是向Uboot中添加用户自定义的测试命令[3]。

2 2D图形加速器驱动原理

2.1 2D图形加速器体系结构

PXA300集成2D图形加速器基本操作流程如下:

(1)初始化2D图形控制器:初始化源数据缓冲区和目的数据缓冲区,即填写这些缓冲区的首地址、像素位宽、每行占字节数和像素格式。一般初始化这两种缓冲区后就不再改变了。

(2)向指令缓冲区中填充指令:向指令缓冲区中填充图形指令指令。

(3)重置图形控制器:通过写控制寄存器,把所有状态寄存器、中断寄存器和和指令缓冲区相关的寄存器全部重置。

(4)配置指令缓冲区寄存器:即配置指令缓冲区的首地址,长度和尾地址。

Pxa300
集成2D图形加速器有个特点,当指令缓冲区相关寄存器配置完成后,就会自动启动图形引擎,依次执行指令缓冲区的图形指令直到缓冲区尾部。当执行完所有指
令,要想重新执行图形指令必须重置图形控制器,在执行时更改指令缓冲区寄存器是无效的。为配合这种硬件体系结构,特意设计了两个底层函数,用于填充指令和
启动执行引擎。填充指令函数内部维护了当前指令缓冲区的所有信息,将图形指令以整型数组的形式写入缓冲区。启动执行引擎的函数的关键代码如下:



2.2软件接口设计


了方便应用层使用,并屏蔽硬件的细节,必须设计一个和硬件无关的软件接口,因此提供了一系列绘图函数接口,比如画矩形的函数gc_rect()以及一个特
殊的启动图形引擎的函数start_excute(),通过调用这些接口使2D图形加速器工作。硬件绘制矩形的关键代码如下:



3 测试步骤与结果

3.1性能测试指标

2D
图形加速性能最基本的指标的每秒完成的图形操作次数。当前PC系统上进行图形性能测试一般有两种性能指标,一种是渲染固定场景所得到的每秒帧数(这种方法
适合于3D性能测试),另一种是绘制固定数目的图形的时间,来得到每秒钟绘制图形的数目。这两种性能指标,其本质都是单位时间内完成的图形操作次数,在本
文中以后者为性能指标。

3.2性能测试方法

本次测试选择了计算绘制65536条直线和16384个矩形区域的填充、旋转、复制、缩放和Alpha操作的时间来得到绘制的速度。因为绘制直线的速度比较快,所以绘制直线的数量相比其他操作要多一点,以达到比较好的效果。

为模拟正常应用的情况,本文利用随机函数来生成各种图形参数,随机函数采用普遍应用的乘线性同余函数。


次测试测试了纯软件加速——即依赖CPU计算的软件绘图和硬件加速进行对比(本次测试只实现了一部分图形指令)。由于2D图形加速器是基于成批的图形指令
工作的,而生成图形指令本身也需要一定的开销,因此在测试硬件加速时,也分为两种情况:第一种情况是事先把绘图指令填充到指令缓冲区中,然后启动图形引擎
并计时;另一种情况是边填充图形指令边绘图,然后计算总时间。故在测试结果中,每种指令都有3组数据。

3.3 测试结果与分析


次测试共得到了11组数据,限于篇幅无法全部列出。在得到的11组数据中,有10组数据的结果比较接近,只有一组数据(Seed=360)在旋转、复制和
Alpha混合方面和其他10组数据相比有明显差距。考虑到随机函数的固有缺陷[4],偶尔出现这样的数据是可能的,可视为特殊情况下的表现,故剔除出有
效数据之列。把10组有效数据取得平均值以后,得到如下结果(参见本文附表):

综合各组有效测试数据,除了Alpha混合预先填充情况下,最大偏差达到2.1%以外,各项数值和平均值的最大偏均差不超过1.4%,说明测试数据分布比较均匀且集中,能够有效地反映一般情况下2D图形加速器的绘图速度。

对比软件绘图和硬件绘图的差别,可以发现2D硬件加速器在绘制速度上的优势非常明显,其中绘制直线和绘制矩形比软件加速快10倍左右,而复制区域和Alpha混合则比软件加速快20倍左右。


件绘制直线的实现选择了DDA算法[5],矩形填充、复制和Alpha混合的实现都是先行后列的顺序读写内存,这样符合ARM体系结构中的缓存机制
[6]。2D图形加速器则通过私有的DMA通道来操作内存数据,利用自身向量处理单元进行矩阵运算。从以上测试数据看,该DMA通道的速度和效率都很不
错,比软件使用CPU传输要快得多(CPU开启了数据和指令缓存),而且矩阵数据的运算能力也超过CPU。

再对比预先填充和即时填充两种
模式,从结果上看两者差距很小,绘制直线比预计填充多用了3.5%的时间,绘制矩形则多用了1.7%的时间,其余差距均在1%以内。这个结果说明越是耗时
的绘图操作填充指令的开销占的比例越小,这是因为不同种类的图形指令填充指令所用的时间差不多,但执行时间却相差很多。由此可认为图形硬件的CPU占用率
在3.5%以下,因为硬件加速器在绘制图形的时候,只有填充指令这一步是需要CPU来完成的,其余时间CPU都是空闲状态,因此在测试环境下,硬件加速器
的CPU占用率是相当低的。

综合以上分析结果,2D图形加速器在计算能力、数据传输速度和CPU占用率上,对比软件加速都存在非常明显的优势。

4 结论

本文实现了基于Bootloader的pxa300处理器集成2D图形加速器的驱动,并在此基础上,通过一系列测试,测定了2D图形加速器的图形性能,并与软件图形加速进行了比较,体现了硬件加速的优势。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: