基于Android系统的GPU动态调频方案

2013-12-07 06:18
电子技术应用 2013年9期
关键词:工作频率调频功耗

陈 屴

(福州瑞芯微电子有限公司,福建 福州 350003)

系统级芯片(SoC)是智能移动终端的核心,决定了一款机器的性能水平。目前的中高端嵌入式SoC中普遍集成了嵌入式图形处理器 GPU(Graphic Processing Unit),主要用于处理CPU并不擅长的三维图形任务。但高性能GPU所带来的高功耗对于移动终端是一个严峻的挑战。

动态电压频率调整DVFS(Dynamic Voltage and Frequency Scaling)是降低动态功耗的常用方法,其核心思想是根据当前所运行的任务对计算能力的不同需求来动态调节处理器的工作频率和电压,从而达到节能的目的。DVFS的理论依据是如下动态功耗的计算公式[1]:

其中,Pdynamic代表动态功耗,C为负载电容,V为供电电压,f为工作频率。从式(1)中可以看出,在负载电容一定的情况下,动态功耗与供电电压的平方成正比,与工作频率成正比。同时,电压与频率也存在一定的对应关系,频率越高,所需要的电压也越高。

嵌入式 GPU(下文均简称GPU)的发展时间短,技术更新快,在设计目标、软硬件架构、图形标准、运行系统等方面与PC显卡都有所差异[2],有关降低功耗的研究尚不多见。针对这种现状,本文基于目前最流行的嵌入式操作系统Android,在GPU的内核驱动层提出了一种GPU动态调频方案,使GPU可以根据性能需求自适应地调节运行频率和电压,从而降低GPU的动态功耗。

1 Android应用对GPU的性能需求

Android系统主界面的混合与叠加采用GPU硬件加速[3],除此之外,图库、动态壁纸、3D桌面、3D游戏等多种应用也需要GPU的支持。各种应用对于GPU性能的需求大不相同,例如,动态壁纸的帧率一般被限定在15~20 f/s左右,对GPU的性能需求较低;不同的3D游戏对于GPU性能的需求也大不相同,即使在同一个游戏中,对GPU性能的需求也是随着场景的变化而不断变化的。GPU性能测试软件需要反映GPU的最高性能,对GPU处理能力的要求远超其他应用程序。根据以上分析,如果GPU始终以固定的频率运行,则会出现两种情况:对于低复杂度的任务,若GPU运行在高频,则性能过剩,造成功耗的浪费[4];对于高复杂度的任务,若GPU没有运行在足够高的频率,则无法满足性能需求。因此最理想的情况是GPU能够根据需求快速地调整频率,以提供期望的性能。

2 GPU频率-性能模型

2.1 选择GPU工作频率

Android系统的时钟模块可以为GPU提供多种频率,GPU动态调频的工作频率从这些频率中选出。在备选频率中,选择能满足最低性能需求的最低频率作为最低工作频率,选择GPU能正常工作的最高频率作为最高工作频率。在最低和最高工作频率之间尽可能等间隔地选择工作频率,并且相邻频率的间隔不能太小,否则GPU容易在相邻的两个频率上反复切换。以1 200 MHz的输入时钟为例,通过分频可以得到 75 MHz、100 MHz、120 MHz、150 MHz、200 MHz、240 MHz、300 MHz、400 MHz、600 MHz等频率。根据上述方法首先确定最低工作频率为100 MHz,最高工作频率为400 MHz。考虑到相邻工作频率之间的间隔,在100 MHz~400 MHz之间的频率中选择200 MHz和300 MHz作为工作频率。

2.2 测量GPU相对性能

GPU的性能可以通过运行Nenamark2、GLBenchmark、Basemark等专业的GPU性能测试软件测量得到的帧率反映出来。图1是测量得到的某GPU的频率-帧率对应关系图。不同的测试软件下发给GPU的任务量不同,因此测得的帧率有所差异,但是帧率与频率之间都呈现近似分段线性的关系,且频率越高帧率的增长速度越缓慢。这是因为随着频率的增加,GPU内部某个模块会最先达到性能瓶颈,从而影响整体性能的提升。

图1 GPU频率-帧率图

设 GPU共有 N个工作频率,分别为 fi,i=1,2,…,N,fi对应的帧率为Pi,相对性能 Ri=Pi/P1。表 1是运行性能测试软件得到的3组相对性能值。从表中可看出,通过不同的性能测试软件测得的Ri值是基本一致的。综合Ri值就可以建立该GPU的频率-性能模型,如图2所示。

表1 GPU在各频率下的相对性能

图2 GPU频率-性能模型

3 GPU动态调频算法

在Android系统的主界面切换、动态壁纸、游戏等3D应用场景中,GPU的负载在几帧到几十帧的短时间内具有相关性,因此可以根据过去一段时间内的GPU负载预测将来的GPU性能需求。为了兼顾精确度和复杂度的需求,本文采用一种基于历史值加权平均的动态调频算法,算法可分为4步:

(1)每隔周期T计算GPU的负载。由于只有部分GPU驱动提供了统计负载的专用接口[5],所以本文介绍一种近似估计GPU负载的通用方法。GPU都具有工作状态与空闲状态这两种基本的电源状态,可能还具有其他一些临时状态。在GPU驱动中根据电源状态的转换统计出一个周期内GPU的工作时间Tworking和空闲时间Tidle,估算出GPU负载率L:

如果忽略掉GPU处于临时状态所的一些时间,则可以推导出下式:

可以认为GPU的相对负载W等于GPU负载率L与GPU处于当前频率点fcur时的相对性能Rcur的乘积,这样可以得出下式:

假设 LCD的显示帧率为 60 f/s,则T值可在 16 ms~50 ms范围取值,即LCD显示1~3帧的时间。这样计算出的GPU负载值包含了1~3帧的统计信息,且算法的跟踪速度较快。

(2)预测下一周期GPU负载。预测GPU负载W[n+1]由历史值加权计算得出[6]:

其中,W[n-k],k=0,1,…,K-1为前 K 个周期的 GPU 负载,K为大于0的常数。h[k]为预测系数,离当前时刻越近的GPU负载值的权重越大,即满足0≤h[K-1]<h[K-2]…<h[0]<1,且通过对GPU历史负载值的加权平均,可以平滑GPU负载在某些时段的剧烈波动,避免频繁、无意义的调频。基于算法复杂度的考虑,采用线性预测算法,即h[k]为常数,且K的取值不应太大。h[k]的具体取值可根据GPU的特性设定。

表2 动态调频预测误差

(3)将预测GPU负载代入性能-频率模型,预测GPU工作频率。 设定一个性能门限值 β,0<β<1,且满足 Ri<Ri+1β,i=1,2, …,N-1。 设 GPU 当前工作在频率 fcur上,将 W[n+1]与 Riβ,i=1,2,…,N 依次做比较。 如果 W[n+1]<Riβ,则终止比较,根据 i值做如下处理:

①若fi<fcur,则说明 GPU工作在当前频率上性能过剩,降低频率到fi就可以满足需求;

②若 fi=fcur,则说明 GPU工作在当前频率最合适,继续保持在当前频率;

③若 fi>fcur且 cur≠N,则说明 GPU在当前频率上接近满负荷工作,下一时段需要工作在更高的频率fi上。

(4)调整GPU频率和电压。在调频调压时需要遵循以下原则[7]:提高GPU频率时,应先提高电压再提高频率;降低GPU频率时,应先降低频率再降低电压。为了避免频率的变化过大,可以只允许调整到相邻的工作频率。

4 实验结果

本文在Android4.1系统上,选择了界面切换、动态壁纸(bubbles)、捕鱼达人游戏和 Nenamark2 4种典型的应用场景测试动态调频的效果。作为测试对象的某GPU有4 种工作频率:100 MHz、200 MHz、300 MHz和 400 MHz。实验参数选择如下:GPU负载的统计周期T=30 ms,式(5)中 K=4,预测系数 h[0]=0.4,h[1]=0.3,h[2]=0.2,h[3]=0.1,性能门限β=0.9。在每个应用场景下随机抽取 10 s的统计数据,如表2所示。

表2中,预测负载误差是指预测负载值与实际负载值的平均误差。由于GPU只有4个离散的工作频率,因此预测频率的错误率比预测负载误差小很多。预测频率的准确率不仅与预测负载误差的大小有关,还与应用对GPU性能的需求范围有关。如果应用对GPU性能的需求变化大,GPU可能的工作频率多,频率的调整比较频繁,则预测频率的准确率就会降低。实验结果表明,4种典型场景下预测GPU工作频率的准确性都达到了95%以上。

GPU负载统计周期为30 ms时,在最差情况下,即GPU的初始频率为100 MHz、需求工作频率为400 MHz时,动态调频算法只需要8个周期,即240 ms就可以完成调频的过程。因此对于各种3D应用,动态调频算法都能快速跟踪GPU负载的变化,及时调整频率以满足需求。

本文介绍了一种基于Android系统的GPU动态调频方案,可以有效降低GPU的动态功耗,延长移动终端的工作时间。通过调整动态调频算法的系数,方案适用于多种GPU,且易于移植到不同版本的Android系统上。针对特定的GPU,还可以通过GPU驱动中提供的其他一些有用信息以及GPU厂商提供的开发工具对方案进行优化。本方案已申请国家发明专利,并在多款平板电脑产品上应用实施。

[1]Kim K,AGISA I.Impact of microwave interference on dynamic operation and power dissipation of CMOS inverters[J].Electromagnetic Compatibility,IEEE Transactions,2007,49(2):329-338.

[2]CAPIN T,PULLI K,AKENINE-MOLLER T.The state of the art in mobile graphics research[J].IEEE Computer Graphics and Applications,2008,28(4):74-84.

[3]韩超,梁泉.Android系统原理及开发要点详解[M].北京:电子工业出版社,2010.

[4]YOU D,CHUNG K S.Dynamic voltage and frequency scaling framework for low-power embedded GPUs[J].Electronics Letters,2012,48(21):1333-1334.

[5]HARIHARAKRISHNAN K.Novel approaches for GPU performance analysis[C].ACM SIGGRAPH 2012 Mobile,New York,2012.

[6]张立,袁小龙,韩银和.基于线性预测的移动终端LPDVFS策略[J].计算机工程,2012,38(12):239-242.

[7]卢春鹏.动态电压与频率调节在降低功耗中的作用[J].单片机与嵌入式系统应用,2007(5):12-17.

猜你喜欢
工作频率调频功耗
基于任务映射的暗硅芯片功耗预算方法
考虑频率二次跌落抑制的风火联合一次调频控制
无线话筒的原理与使用
揭开GPU功耗的面纱
CPU故障的处理技巧
数字电路功耗的分析及优化
调频发射机技术改造
调频激励器干扰的排除方法
IGBT模型优化及其在Buck变换器中的功耗分析
一种工作频率可变的双向DC-DC变换器