一种移动处理器上cpu与gpu软件功耗测量方法

文档序号:6637648阅读:324来源:国知局
一种移动处理器上cpu与gpu软件功耗测量方法
【专利摘要】本发明公开了一种移动处理器上CPU与GPU软件功耗测量方法,该方法包括建立CPU功耗模型、修改待测程序并重新编译、待测平台设置、运行待测程序和数据处理;本发明提出的移动处理器上CPU和GPU的功耗测量方法有效地解决了目前移动智能终端上软件开发人员难以同时获取程序执行时移动CPU、GPU上的功耗问题。无需任何额外的测量工具,并且无需拆解待测平台,可以直接在移动智能终端上精确的获取程序在移动CPU和GPU上执行的功耗,能够帮助应用程序的开发人员设计低功耗的智能终端应用程序和游戏。
【专利说明】—种移动处理器上CPU与GPU软件功耗测量方法

【技术领域】
[0001]本发明涉及功功耗测量领域,具体涉及一种移动处理器上CPU与GPU软件功耗测量方法。

【背景技术】
[0002]移动计算技术日新月异,以智能手机、平板电脑为代表的手持终端也得到了广泛普及和应用。随着移动计算技术的发展,特别是移动处理器技术的巨大进步,这些手持终端的应用范围从传统的通信、拍照功能发展到今天的智能手机和平板电脑普遍具有的高速上网、3D游戏、高清视频等功能。
[0003]手持智能终端搭载的移动处理器通常包含CPU和GPU两部分,CPU承担通用计算功能,GPU承担2D、3D图形绘制、运算、显示等功能。目前在智能手机、平板电脑等移动终端上运行的应用程序、游戏,播放高清视频对移动处理器的性能要求越来越高,同时带来了更大的功耗开销。由于智能手机、平板电脑等手持智能终端通常由锂电池驱动,因此应用程序、游戏和视频导致的功耗开销对于用户体验起着十分关键的作用。为了更好地开发低功耗的智能终端应用程序,开发人员需要获取程序执行时的功耗信息。然而目前已有的性能剖析软件仅能较为获取应用程序的执行时间,对于程序执行时移动CPU和GPU上的功耗开销缺乏有效、精确的测定方法。人们期待利用功耗测量方法,灵活方便的获得应用程序的执行时间、功耗,进而获取能耗信息,从而帮助开发人员降低程序的执行功耗,提升用户使用体验。
[0004]另外,由于大多数移动智能终端中CPU、GPU等部件集成在同一块SoC芯片中,所以无法直接从硬件上进行方便的功率与能耗测量。


【发明内容】

[0005]发明目的:为了解决现有技术的不足,通过外部程序对移动设备的CPU和GPU直接进行功耗测量,克服了现有技术缺乏有效、精准测量方法的问题。
[0006]技术方案:一种移动处理器上CPU与GPU软件功耗测量方法,其特征在于,该方法包括建立CPU功耗模型、修改待测程序并重新编译、待测平台设置、运行待测程序和数据处理;该方法包括以下步骤:
[0007]I)建立基于使用率的CPU功率模型:
[0008]P= Σ Ui X β i
[0009]式中:
[0010]P为CPU的动态功率;
[0011]Ui为第i个CPU核心的使用率;
[0012]β i为第i个CPU核心的功耗系数;
[0013]运行计算密集型测试集,在运行过程中采样从待测平台的操作系统得到的电池瞬时电流电压值和CPU的使用频率并记录,通过线性规约方式处理所得数据,得到CPU功率模型中的β i;
[0014]2)依据待测平台的各个程序模块的功能和功耗测试需求,将其划分一个以上的待测代码段;在各个待测代码段的首尾和整个程序代码的首尾加入相关性能剖析代码gtickO,并重新编译待测程序;
[0015]3)运行步骤2)中重新编译的待测程序:该重新编译的待测程序在运行过程中记录执行到各个代码段的时刻和执行完各个代码段的时刻;同时,持续采样从待测平台的操作系统得到的电池瞬时电流电压值和CPU的使用率并记录;该重新编译的待测程序在开始执行前和结束执行前休眠一段时间,在休眠期间仍然持续采样电池瞬时电流电压值和CPU使用率;休眠是为了使CPU/GPU处于Idle状态一段时间,以便测量背景功耗。
[0016]4)处理步骤3)中记录的数据,具体包括以下步骤:
[0017]4.1)将各个采样点的瞬时电流值与瞬时电压值相乘,得到各个采样时刻的瞬时功耗值;取瞬时功耗最小值为背景功耗,所述背景功耗包括各个采样时刻CPU与GPU处于Idle状态的功耗;
[0018]4.2)将各个采样点的瞬时功耗值减去背景功耗,得到各个采样时刻CPU与GPU的实际总功耗;
[0019]4.3)使用步骤I)中的CPU功耗模型与步骤3)中各采样时刻的CPU使用率信息,将步骤4.2)得到的CPU与GPU实际总功耗减去步骤I)中CPU功率模型公式计算出的功耗,得到各采样时刻的CPU功耗,进而可以计算出各采样时刻的GPU功耗;
[0020]4.4)通过步骤3)重新编译的待测程序在运行过程中记录执行到各个代码段的时刻和执行完各个代码段的时刻,计算出各个代码段上耗费的执行时间;利用步骤4.1)计算出的各个采样时刻的瞬时功耗值,计算出在各个代码段上耗费的平均功率与总能耗。
[0021]进一步的,步骤4)中,对待测程序进行多次测量取平均值。
[0022]有益效果:
[0023]本发明提出的移动处理器上CPU和GPU的功耗测量方法有效地解决了目前移动智能终端上软件开发人员难以同时获取程序执行时移动CPU、GPU上的功耗问题。
[0024]本发明提出了一种在移动智能终端上,如智能手机、平板电脑,进行移动CPU和GPU的程序执行时间、功耗的测量方法。
[0025]利用本发明的技术方案,无需任何额外的测量工具,并且无需拆解待测平台,可以直接在移动智能终端上精确的获取程序在移动CPU和GPU上执行的功耗,能够帮助应用程序的开发人员设计低功耗的智能终端应用程序和游戏。
[0026]本发明可以对需要设计低功耗的应用程序和硬件的开发人员带来明显效益。

【专利附图】

【附图说明】
[0027]图1为代码流程示意图
[0028]图2为本发明的流程图
[0029]图3为10次测试数据处理后的执行时间、功耗和能耗的输出示意图
[0030]图4为20次测试数据处理后的执行时间、功耗和能耗的输出示意图

【具体实施方式】
[0031]下面结合附图对本发明做更进一步的解释。
[0032]一种移动处理器上CPU与GPU软件功耗测量方法,其特征在于,该方法包括建立CPU功耗模型、修改待测程序并重新编译、待测平台设置、运行待测程序和数据处理;该方法包括以下步骤:
[0033]I)建立基于使用率的CPU功率模型:
[0034]P= Σ Ui X β i
[0035]式中:
[0036]P为CPU的动态功率;
[0037]Ui为第i个CPU核心的使用率;
[0038]β i为第i个CPU核心的功耗系数;
[0039]运行计算密集型测试集,在运行过程中采样从待测平台的操作系统得到的电池瞬时电流电压值和CPU的使用频率并记录,通过线性规约方式处理所得数据,得到CPU功率模型中的β i;
[0040]2)依据待测平台的各个程序模块的功能和功耗测试需求,将其划分一个以上的待测代码段;在各个待测代码段的首尾和整个程序代码的首尾加入相关性能剖析代码gtickO,并重新编译待测程序;
[0041]3)运行步骤2)中重新编译的待测程序:该重新编译的待测程序在运行过程中记录执行到各个代码段的时刻和执行完各个代码段的时刻;同时,持续采样从待测平台的操作系统得到的电池瞬时电流电压值和CPU的使用率并记录;该重新编译的待测程序在开始执行前和结束执行前会休眠一段时间,在休眠期间仍然持续采样电池瞬时电流电压值和CPU使用率;
[0042]4)处理步骤3)中记录的数据,具体包括以下步骤:
[0043]4.1)将各个采样点的瞬时电流值与瞬时电压值相乘,得到各个采样时刻的瞬时功耗值;取瞬时功耗最小值为背景功耗,得到各个采样时刻CPU与GPU处于Idle状态的功耗;
[0044]4.2)将各个采样点的瞬时功耗值减去背景功耗,得到各个采样时刻CPU与GPU的实际总功耗;
[0045]4.3)使用步骤I)中的CPU功耗模型与步骤3)中各采样时刻的CPU使用率信息,推算出各采样时刻的CPU功耗,进而可以计算出各采样时刻的GPU功耗;
[0046]4.4)通过步骤3)重新编译的待测程序在运行过程中记录执行到各个代码段的时刻和执行完各个代码段的时刻,计算出各个代码段上耗费的执行时间;利用步骤4.1)计算出的各个采样时刻的瞬时功耗值,计算出在各个代码段上耗费的平均功率与总能耗,对待测程序进行多次测量取平均值。
[0047]如图1所示,为对待测程序进行代码段划分并在各个代码段的首尾和整个程序的首尾加入相关性能剖析代码的示意图。此处以一种基于OpenCL的异构计算测试程序为例来说明本发明方案,但本方案并不局限于OpenCL程序。该测试程序包含了在CPU和GPU上执行的计算任务,并依据程序的功能和性能剖析需求进行了代码段划分。测试程序可以划分为4个代码段,其中A、D是在CPU上执行,B、C是在GPU上执行。本发明提出的程序执行时间、功耗测量均是基于代码段划分进行,从而最终获得各个代码段的执行时间和功耗性
[0048]如图2所示,为测量运行在移动处理器CPU和GPU上程序的执行时间、功耗和能耗方法的流程图。该流程图略去了 CPU功耗建模的过程。从图中可知,所述测量方法由修改待测程序并重新编译、待测平台设置、运行待测程序和数据处理几个部分组成。首先,需要对待测程序进行修改并重新编译。具体来说,在代码段划分得到的各个功能模块代码段的开始、结束处加上gtick函数;在待测程序的main函数首尾处分别加上gticki和gticke函数;如果程序运行的时间很长,需要在适当的地方加上gtickr和gtickp函数,以使得程序每运行一段时间就更新测量数据日志。gtick函数用于记录当前的时刻,并在后面的环节用于记录各个功能模块的执行时间。gticki是初始化函数,同时负责启动Linux内核编程接口提供的电流、电压采样sampler线程,gticke是终止函数。此外,为了功耗测量本身带来过多额外的执行时间以及功耗开销,本发明测量的数据均记录在内存中,并在测量结束时或运行gtickp函数时写入外存。同时,程序会在初始化时完成内存分配,不会在测量过程中出现realloc,以避免其带来的内存分配功耗对测量造成的干扰。为了测量时上述内存空间不够存放中间数据的情况,设计引入gtickr和gtickp两个函数用于实现电流、电压采样sampler线程和待测程序的暂停和重启,并在在暂停的间隙将数据日志写入外存。其次,需要对待测平台的进行适当的设置,如固定移动处理器CPU主频、核心数以及显示屏幕亮度,从而消除影响功耗测量的不确定因素。通过修改Android操作系统的初始化脚本可以实现上述目的。接下来,在待测平台上运行测试程序,同时得到移动处理器CPU和GPU的执行时间和功耗性能结果。如前所述,gtick函数用于记录程序执行的当前时刻,gticki函数用于启动电流、电压采样sampler线程。此外,为了精准地测量移动处理器的功耗,对于不使用显示屏的待测程序,将会关闭待测平台的显示屏,然后这有可能导致待测平台进入sleepmode。针对此问题,运行Launcher程序可以保证测试程序一直不被操作系统ki 11,同时保证待测平台显示屏关闭时,如果待测程序还未运行结束,则阻止待测平台进入sle印mode。为了得到更为精确的执行时间和功耗测量数据,bench函数用于重复调用待测程序,最终的数据可以取平均值作为最终结果。最后,对gtick函数记录的执行时刻和电流、电压的采样数据进行处理,绘制出执行时间和功耗的性能表格,并计算出能耗结果。在待测程序运行结束后,需要将记录下来的数据日志传送回PC进行统计,fig函数用于执行时间、功耗以及能耗的计算、统计和表格绘制。
[0049]具体数据处理方法如下:
[0050]I)将各个采样点的瞬时电流值与瞬时电压值相乘可以得到各个采样时刻的瞬时功耗值。
[0051]2)取各个采样时刻的瞬时功耗的最小值为背景功耗,即移动平台CPU、GPU处于Idle状态的功耗。将各个采样时刻的瞬时功耗值减去背景功耗,即可得到各个采样时刻CPU与GPU的总功耗。
[0052]3)借助CPU功耗模型与各采样时刻的CPU使用率信息,可以推算出各采样时刻的CPU功耗,利用总功耗值减去CPU功耗值,进而计算出各采样时刻的GPU功耗。
[0053]4)通过步骤3所记录的执行到和执行完各个代码段的时刻,可以计算出各个代码段上耗费的执行时间。在利用上面计算出的各个采样时刻的瞬时功耗值,可以计算出在各个代码段上耗费的平均功率与总能耗。
[0054]如图3、图4所示,分别为数据处理之后得到的移动处理器CPU、GPU上的测试程序执行时间、功耗和能耗的输出示意图。虚线上方的数据为测试程序的整体性能,下方为节选部分重点功能模块(代码段)的性能剖析。测试程序的整体性能包括了执行时间、测量功耗和基准功耗、能耗信息,部分模块的性能剖析包括了各部分的执行时间、功耗、能耗和所占比例值。图4所示的移动处理器GPU测量结果还包括了 GPU初始化(init)、CPU和GPU的数据传输(mems)等操作性能结果。
[0055]以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种移动处理器上CPU与GPU软件功耗测量方法,其特征在于,该方法包括建立CPU功耗模型、修改待测程序并重新编译、待测平台设置、运行待测程序和数据处理;该方法包括以下步骤: 1)建立基于使用率的CPU功率模型:
P= Σ Ui X β i 式中: P为CPU的动态功率; Ui为第i个CPU核心的使用率; β i为第i个CPU核心的功耗系数; 运行计算密集型测试集,在运行过程中采样从待测平台的操作系统得到的电池瞬时电流电压值和CPU的使用频率并记录,通过线性规约方式处理所得数据,得到CPU功率模型中的β?; 2)依据待测平台的各个程序模块的功能和功耗测试需求,将其划分一个以上的待测代码段;在各个待测代码段的首尾和整个程序代码的首尾加入相关性能剖析代码gtickO,并重新编译待测程序; 3)运行步骤2)中重新编译的待测程序:该重新编译的待测程序在运行过程中记录执行到各个代码段的时刻和执行完各个代码段的时刻;同时,持续采样从待测平台的操作系统得到的电池瞬时电流电压值和CPU的使用率并记录;该重新编译的待测程序在开始执行前和结束执行前休眠一段时间,在休眠期间仍然持续采样电池瞬时电流电压值和CPU使用率; 4)处理步骤3)中记录的数据,具体包括以下步骤: 4.1)将各个采样点的瞬时电流值与瞬时电压值相乘,得到各个采样时刻的瞬时功耗值;取瞬时功耗最小值为背景功耗,所述背景功耗包括各个采样时刻CPU与GPU处于Idle状态的功耗; 4.2)将各个采样点的瞬时功耗值减去背景功耗,得到各个采样时刻CPU与GPU的实际总功耗; 4.3)使用步骤I)中的CPU功耗模型与步骤3)中各采样时刻的CPU使用率信息,将步骤4.2)得到的CPU与GPU实际总功耗减去步骤I)中CPU功率模型公式计算出的功耗,得到各采样时刻的CPU功耗,进而可以计算出各采样时刻的GPU功耗; 4.4)通过步骤3)重新编译的待测程序在运行过程中记录执行到各个代码段的时刻和执行完各个代码段的时刻,计算出各个代码段上耗费的执行时间;利用步骤4.1)计算出的各个采样时刻的瞬时功耗值,计算出在各个代码段上耗费的平均功率与总能耗。
2.如权利要求1所述的一种移动处理器上CPU与GPU软件功耗测量方法,其特征在于,步骤4)中,对待测程序进行多次测量取平均值。
【文档编号】G06F11/34GK104461849SQ201410741891
【公开日】2015年3月25日 申请日期:2014年12月8日 优先权日:2014年12月8日
【发明者】齐志, 孟炜, 温闻, 时龙兴, 吴建辉, 杨军 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1