|
技术文库首页
|
编程
|
IC
|
晶体管
|
精解
|
中频
|
其它
|
电源
|
基础
|
电脑
|
无线
|
液晶
|
微波
|
空调
|
手机
|
|
热水器
|
电动车
|
LED屏
|
焊机
|
您现在的位置: 华玉生活网 >> 技术文库 >> 无线 >> 正文>> 繁體中文

源码级和算法级的功耗测试与优化

廖海艳,范明明(1.四川大学计算机学院,成都610065;2.中铁十九局集团有限公司)引言软件设计中,代码优化是一件非常有意义的事情。优化的本质是对代码进行等价变换,使变换前后的代码运行结果相同,但变换后的代码比变换前的代码具有更多优越性能。传统的观点要求变换后的代码运行速度较快或占用较少运行资源,或二者兼备。随着嵌人式系统的快速发展,软件功耗问题显得越来越重要,应该将“省电”作为软件优化的一项技术指标,这

廖海艳,范明明

(1.四川大学 计算机学院,成都 610065;2.中铁十九局集团有限公司)

引言

软件设计中,代码优化是一件非常有意义的事情。优化的本质是对代码进行等价变换,使变换前后的代码运行结果相同,但变换后的代码比变换前的代码具有更多优越性能。传统的观点要求变换后的代码运行速度较快或占用较少运行资源,或二者兼备。随着嵌人式系统的快速发展,软件功耗问题显得越来越重要,应该将“省电”作为软件优化的一项技术指标,这样对软件优化的评价体系才算完整。值得注意的是,大多数情况下性能和功耗并不矛盾,减少程序执行时间同样会使程序功耗减少。

在功耗优化这个问题上,研究者普遍比较关注硬件功耗优化,应用各种技术想方设法改进硬件的功耗,比如在芯片制造工艺上采用更精细的纳米技术,不断降低芯片驱动电压,不断改变片内系统结构等。事实上,整个系统的运行管理是由软件体现的。在硬件基础一定的情况下,只有将软件系统对能量的损耗降至最小,才能使整个系统工作于最佳状态。面向功耗的软件优化方法是当前嵌入式系统低功耗研究领域的热点。掌握软件运行时的能量消耗特征、准确获取能量消耗数据信息,是面向低功耗的软件优化研究的前提。经过多年的努力,许多学者也提出了关于如何减少软件功耗的方法。研究表明,软件优化对降低功耗会有数量级的贡献。针对同一任务,所选择的算法不同或采用不同的实现方式,不仅性能有差别,能耗也大不一样。因此在进行系统优化设计时,除了代码的规模和执行性能之外,功耗也是一个需要认真考虑的问题。

1软件功耗优化方法

常用的软件功耗优化方法大致可分为以下4类:

(1)软件体系结构级

不存在没有体系结构的软件。通常考虑软件体系结构都是注重软件的可修改性、可重用性和可靠性等问题,软件体系结构的好坏直接关系到软件性能的好坏。而且前,关于软件体系结构对软件功耗影响这方面的研究较少,用不同软件体系结构开发出的软件功耗会有差异,怎样选择合适的软件体系结构使软件功耗最小化,将成为软件低功耗优化的重要研究方向。

(2)源程序级

C语言的源程序级功耗优化指的是实现同一功能的不同语句间的选择。比如,同样实现循环功能,有多种选择(for、while、goto等)。这些语句的功耗会有差异,为了实现低功耗的软件,应采用功耗最低的语句来完成相同的功能。这就需要对所有语句的功耗进行测试与研究。同时,对C语言不同数据类型操作的功耗进行分析。比如,同样表示数目,可以用8位int型、16位int型和32位int型。再者,对不同变量的存储类型功耗也要进行分析,如寄存器变量、静态变量、自动变量等。总之,在源码级对软件功耗进行优化是一个重要的研究方向。

(3)算法级

算法是为解决某个特定问题而定义的无二义性的操作序列,算法复杂性分析就是对算法运行时所消耗的计算机资源作量化的分析和预测。以往,程序设计者关心的资源主要是运行时间和存储空间。由于能量消耗已成为软件设计中的关键约束条件,因此本文将能耗作为一项重要资源,对算法运行时所消耗的能量进行分析和比较。

(4)编译级

对于某个硬件来说,执行程序所产生的功耗取决于它的机器代码,而机器代码是从源代码编译而来的,这就说明编译过程也影响了硬件的功耗。既然编译器可以很大程度上控制硬件的运行轨迹,除了性能这一传统的优化目标之外,编译器也可以通过适当的调度优化,使得硬件执行某一个程序时的功耗变小。国际上对于低功耗编译的历史并不长,是从20世纪90年代初才开始研究的,这方面的文章最早出现于文献[4-5],Tiwari等人在这些文章中提出了对软件进行功耗分析的一些基本概念,建立了基本的指令级功耗模型,以486DX为例初步探讨了低功耗编译技术。

本文主要从源程序级和算法级这两个方面对软件功耗特征进行测试与分析,并根据分析结果对μC/OS-II进行源码级的功耗优化。

2源码级和算法级的功耗测试

测试环境是T.K.Tan等人研发的EMSIM,它是一个基于指令级的嵌入式软件功耗模拟器,其主要的功耗估算思想是累计函数中所有单条指令的功耗作为该函数的总功耗。嵌入式硬件平台是ARM公司的StrongARM110。EMSIM测试功耗的单位为函数,即它只能测试某个函数的功耗。在本文的测试中,将要测试的语句放入函数中,测得整个函数的功耗,记为E1,然后测试同样参数及返回值的空语句函数的功耗,记为E2,最后计算得到语句的功耗为:E=E1-E2。

2.1源码级的功耗测试

本小节对C语言的源码级功耗进行测试,测试过程分为以下几步:

①对每种数据类型的不同操作的功耗进行测试。要测试8位整型、16位整型、32位整型以及32位浮点型和64位浮点型的基本操作功耗。基本操作有:加、减、乘、除、取余、赋值、移位、与、或、非。此处测试的结果与处理器的位数有关,StrongARM110为32位精简指令集系统,在此基础上测试的结果如表1所列。



从表1可知,对于相同数据类型,加、减、乘、除和取余操作的功耗一样,与、或、非操作的功耗一样,而移位功耗最低。对于不同数据类型来说,32位数比16位数的操作功耗低,16位数比8位数的操作功耗低。32位浮点数与32位整形数的操作功耗一样。在所有数据类型中64位浮点数的操作功耗最高。

测试环境的处理器StrongARM110为32位处理器,对8位数和16位数的处理要考虑字节对齐问题,而对32位就不用考虑该问题。

②对函数、内联函数和宏定义的功耗进行测试。如表2所列,内联函数和宏定义的功耗比一般函数的功耗低,CPU周期数及指令数也小。



③对相同功能不同实现语句的功耗进行测试。主要针对循环语句、选择语句(二元和多元)、乘法、移位、除法、移位进行测试,测试结果如表3所列。


从表3可知,同样实现循环功能,for循环的功耗比while、goto的要大,goto语句的功耗明显最低;二元选择运算中三目运算比if语句的功耗低,但是只能在单条赋值语句中使用三目运算,在复杂的多条语句的情况下,两者功耗一样;多元选择运算中,switch语句比if…elseif…语句功耗低;寄存器变量的操作比自动变量的操作功耗低近50%,因为处理器从寄存器里直接读取变量省去了反复从内存读取变量的过程,从而达到降低功耗的目的。

2.2算法级功耗测试

算法级功耗测试是比源码级功耗测试更高一层次的测试,不同的算法针对同一问题的考虑方面不同,如可靠性、易用性、时间复杂度、空间复杂度、功耗等。以往对软件算法的研究着重在性能上面,本文把功耗作为主要考虑对象,研究算法对功耗的影响。为了便于讨论,本文提出一具体问题,针对该问题提出5种不同的算法,然后分析这些算法对软件功耗的影响。

问题描述:对于1字节的变量v,求其二进制表示中1的个数。

算法1:用除法和取余实现。对于二进制操作,除以2,原来的数将会减少1个0,如果在除的过程中有余,就表示当前位置为1。

算法2:使用与&(即移位>>)操作。&操作,把8位数字v与00000001进行与操作,如果结果为1,表示当前8位的最后1位为1,否则为0,然后再将v右移1位,循环进行。

算法3:使用与&操作,仅考虑v中1的个数。

算法4:使用分支操作,直接把0~255的情况都罗列出来,使用switch…case…,即可得到答案。

算法5:使用查表法,将0~255中1的个数直接存储在数组Array中,v作为数组的下标,则Array[v]就是v中1的个数。

测试结果如表4所列。


其中,M是v中1的个数,log2v为v的位数。

由表4可知,算法1~5的执行效率越来越高,算法5的查表法比算法1节省80%的功耗,其CPU周期数也相应减少,但是它们的指令数却有所增加,所以算法5的查表法是以空间换取时间和功耗的算法。在内存充分大的嵌入式系统中,为尽量降低功耗,算法5是很好的选择。

3 μC/OS-II的源码级功耗优化

μC/OS-II是一种可移植、可固化、可裁减及可剥夺型的多任务实时内核(RTOS),适用于各种微处理器和微控制器。所有代码用ANSI C语言编写,具有良好的可移植性。对μC/OS-II的源码级功耗优化分以下几步实行:

①对计数器数据类型的改进。由表1可知,32位数据类型的加1操作比8位数据类型的加1操作能耗低27nJ,将μC/OS-II中常用数据的数据类型改为INT32U,如任务控制块OS_TCB中的prio、OSTCBDly、OSTCBX、OSTCBY、OSTCBBitX、OSTCBBitY等。

②对循环控制语句的改进。由表3可知,while、goto循环语句的功耗比for循环语句的功耗低。将μC/OS-II中for循环句换成while循环语句,经查看μC/OS-II的源码,发现μC/OS-II在设计时已考虑到该问题,多数循环使用while实现。在此只对OSInit()函数改进,同时μC/OS-II中固定的任务(如OS_TaskIdle、OS_TaskStat中的控制)改为goto语句,减少应用程序的功耗。

③对内联函数和宏的使用。对简短的常用函数加上inline关键字,或用宏来实现,内联函数和宏的使用使软件功耗降低。读RAM比读Flash功耗更大。处理器进入子程序时,会首先将当前处理器的寄存器推入堆栈(RAM),在离开时又将处理器的寄存器弹出堆栈,这样至少两次对RAM操作。而宏在编译时展开,处理器顺序执行指令,避免了调用子程序,同时减少了系统的功耗。μC/OS-II中常用的短函数改为内联函数,如每个时钟都要执行的OSTimeTick()和开关中断等,同时μC/OS-II中采用条件编译,也会在一定程度上降低功耗。

④对变量存储类型的优化。对于大部分嵌入式系统来说,为了提高运行速度,通常寄存器做得很大,如ARM系列处理器有31个通用寄存器。有时许多寄存器空着没使用,可以将程序中常用的常量或变量直接置于寄存器中,而不是置于内存的静态存储区或动态存储区中。这样做不仅提高了软件运行速度,而且也节省能量消耗。由表3可知,使用寄存器变量能省近50%的功耗,μC/OS-II中每个时钟周期都要使用的计数变量OSTime,将其用关键字register声明即可。还有循环控制语句的计数变量,将其声明为寄存器变量,降耗效果明显。

⑤算法级的改进。从算法级功耗的算法5可以看出,将一些运算的结果预先算好,放在Flash中,用查表的方法替代实时的计算,减少微控制器的运算工作量,可以有效地降低微控制器的功耗;不可避免的实时计算,达到精度就结束,避免“过度”计算;在精度允许的情况下,使用简单函数代替复杂函数作近似,也可以减少功耗。μC/OS-II中的任务调度和事件管理模块都采用查找就绪表的方式来提高性能和降低功耗。为此,针对μC/OS-II的内存管理机制采用查表算法,借用任务管理中的就绪表实现内存块的分配,这样不但不会增加额外的空间需求,而且使内存管理的功耗更低。

对μC/OS-II的部分功能函数进行源码级功耗优化,其优化前后的结果如图1所示。图中,纵轴表示能耗(nJ),横轴表示改进前后的功能函数。



结语

功耗较大的软件,使用了较多功耗大的操作指令或是使用了不必要的指令。本文的创新之处在于,对软件功耗优化中的源码级和算法级的功耗优化进行分析,对用不同语句实现相同功能的情况进行分类讨论,测试其功耗特征,最后将功耗测试与分析结果运用到嵌入式操作系统μC/OS-II中,对其进行源码级的功耗优化,实验结果证明,源码级的功耗优化能明显降低软件的功耗。


瑞达币购买
桂山秋竹_唐年桂2023年
桂北云雾图_唐年桂202

  • 扩展阅读
  • 上一个文章:
  • 【返回网站首页】 【返回无线】
  • 下一个文章:
  • 【字体: 】【】【发表评论】【加入收藏】【告诉好友】【打印此文
    文章 软件 电影 商品

    相关文章

    • 没有相关文章

    本站公告

    • 扫一扫,打赏给我们,谢谢!

      本站2016年12月16日起取消ruida.org.cn域名,该域名正式作废,该域名发布任何信息与本站无关。


      启用ruida.orghy928.net域名;

      瑞达网,瑞达科技网宣

    附页内镶内容
    健康养生 商场新品 股市K线、指标知识
     六种药酒配制法[11月7日]
     国公酒_散风祛湿,舒筋活络[3月8日]
     气血双补党参、麦冬、黄芪炖[11月29日]
     参桂再造丸_臂丛神经痛[11月29日]
     臂丛神经痛该怎样治疗[11月29日]
     舒筋络酊、百宝丹擦剂、参桂[11月29日]
     臂丛神经痛针灸治疗[11月29日]
     枳椇子_利水渗湿药[11月29日]
     三七、丹参、西洋参_颈椎病[8月17日]
     枸杞泡姜芽(嫩姜)的做法及功[5月20日]
     瑞达币购买
     桂山秋竹_唐年桂2023年新作品
     桂北云雾图_唐年桂2023年新作品
     广西2019年《高考指南》+《招生计
     金士科前置过滤器
     金牛前置过滤器
     USB口24系列编程器第二版含USB延
     液晶电视、液晶显示器图纸、维修
     彩电、显示器、DVD、EVD打印机等
     高清CRT彩电、显示器图纸刻录 4G
     [理财]各种短视频赚钱方法
     [会员]专业交易实战控制系统
     [理财]1分2分5分硬币回收价格表(20250123)
     [理财]1分2分5分硬币回收价格表(20230928)
     [理财]1分2分5分硬币回收价格表(20230624)
     [理财]2022 年新版1分2分5分硬币回收价格表…
     [理财]微信收款码如何开通商业版收信用卡费…
     [指标]R平方_基金指标
     [指标]标准差_基金指标
     [指标]平均回报_基金指标
    装修案例 网站建设 电器维修
     一般水电安装几个常用尺寸[1月29日]
     三相电表接法及度数的正确读…[5月8日]
     万能通用卧室房门锁更换步骤…[2月22日]
     乳胶漆的八大施工步骤及涂刷…[2月14日]
     旧墙翻新步骤及注意事项[2月14日]
     屋面防水施工工艺流程及注意…[1月16日]
     专利产品“防污吸气帽”新产…[1月8日]
     鲁班尺吉数对照表高清图片查…[10月29日]
     砂浆胶作用与危害[9月21日]
     4种处理水泥地面起砂方法[9月21日]
     网页html点击切换显示内容完[11月7日]
     动易SiteWeaver6.6网站管理系[7月31日]
     中国阴历农历JS支持 HTML网页[2月26日]
     java script error 容错处理[2月15日]
     几款还不错的网页特效显示日[2月14日]
     图片可以调大小的代码[12月14日]
     动易SW6.8网站系统改自适应支[11月20日]
     网站建设_套餐服务[12月4日]
     网站建设-费用明细[12月4日]
     不显示出来的代码[12月3日]
     联想 小新Air 14 2019笔记本…[6月15日]
     滚筒洗衣机脱水声音大原因及…[4月17日]
     智能电视不能开机强制恢复出…[1月16日]
     各大品牌智能电视机恢复出厂…[1月16日]
     洗衣机自己排水或不存水漏水…[6月15日]
     海尔冰箱出现-03还滴滴报警[5月29日]
     TCL电视通用教程安装教程[2月2日]
     TCL L43V7300A-3D液晶彩电出…[2月2日]
     先锋液晶电视LED-32B550无光…[1月17日]
     智能电视主板的应用与维修(…[1月11日]
    电器资料 下载 读书
     三个代码让电脑提速畅通秘籍[3月13日]
     视得安750D6对讲门铃工作原理…[9月13日]
     什么是量子芯片和光子芯片[5月14日]
     沃尔沃S90汽车遥控钥匙失灵的…[1月19日]
     LED显示屏瑞合信PLus单双色全…[12月22日]
     Windows 照片查看器无法显示…[8月6日]
     已经设置IE主页,但是打开还…[7月6日]
     如何调整空压机压力?空压机…[6月8日]
     剪映-视频编辑软件手机版使用…[5月28日]
     锂电池保护板作用及同口和分…[3月18日]
     [书籍]滕王阁序_原文_注释译文_白
     [书籍]《天工开物》明代宋应星初
     [电影]《抓娃娃》高清电影
     [联想]Lenovo S540-14API Compl 
     [书籍]《墨子》原文注释译文
     [LED条屏]瑞合信单双色/全彩控制系统
     [LED条屏]LED显示屏瑞合信手机APP6.
     [书籍]全本新注聊斋志异
     [书籍]广西2023年高考指南 招生计
     [书籍]个人防护手册(第二版)
     广西高考2024~2022年历史类([6月25日]
     凤阳花鼓[3月8日]
     《滕王阁序》[3月2日]
     卷一百二十八 艺文_杂记[2月24日]
     卷一百二十七 艺文_杂记[2月24日]
     卷一百二十六 艺文_国朝[2月24日]
     卷一百二十五 艺文_国朝[2月24日]
     卷一百二十四 艺文_五言排律[2月24日]
     卷一百二十三 艺文_历朝[2月24日]
     卷一百二十二 艺文_历朝[2月24日]
    珠宝玉器 在线电视台
     鸡血石与鸡血玉有什么区别[6月12日]
     鸡血玉[6月12日]
     鸡血石 (bloodstone)[6月12日]
     什么是莫桑石(Moissanite)[6月12日]
     可以戴钻石洗澡吗[1月22日]
     钻石如何保养才好呢?[1月22日]
     PT容易花的问题和钻戒保养问…[1月22日]
     切工 钻石的雕刻艺术[1月22日]
     如何保养好钻戒[1月22日]
     钻戒保养方法[1月22日]
     中央体育台
     中央新闻台
     宁夏卫视
     湖北卫视
     西藏卫视
     辽宁卫视
     河北卫视
     北京卫视
     政法频道
     农民频道
     湖南经视
     湖 南 台
     河南频道
     湖南卫视
     兵团卫视
     江苏卫视
     旅游卫视
     湖南都市
     七彩戏剧
     动漫秀场
     游戏风云
     法制天地
     魅力音乐
     新 娱 乐
     南 方 TV
     浙江卫视
     齐鲁频道
     山西影视
     东南卫视
     上海卫视
     贵州电视台
     重庆电视台
     山东卫视
     哪吒之魔童闹海《哪吒2》在线
     《抓娃娃》在线电影
     流浪地球2剧情介绍
     《万里归途》完整版
     《阿凡达2:水之道》耗资3.1
     2021港剧《梅艳芳》5集全.HD
     误杀2 -电影-完整版视频在线
     亲爱的/亲爱的小孩/打拐/家之
     《第一炉香》-电影-完整版视
     《扬名立万》-电影-完整版视
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论

    | 服务声明 | 充值中心| 华安五金电器 | 收费标准| 论坛| 留言| 实用查询| 会员中心| 下载帮助| 设为首页|

    技术支持:瑞达科技 即时交谈QQ:237013889 QQ群:13810759 E-Mail:237013889@qq.com
    非盈利网站,如有侵权,请来信来电告知,第一时间处理,谢谢!
    桂ICP备17008104号 华玉生活网网站统计
    tj