嵌入式系统的性能优化设计剖析.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.2.2 软件的考虑 3.尽量使用功耗低的硬件来实现任务 完成同样的任务可以选择不同的硬件来实现,然而不同的硬件的功耗开销是不一样,应该选择功耗低的硬件来实现。 一般地,寄存器访问的能耗是最低的,高速缓存访问的能耗比主存访问的能耗低。因此在程序设计时应该尽量遵循以下建议: 尽量有效使用寄存器。 分析高速缓存行为来发现主要的高速缓存冲突。 尽可能在存储系统中使用页模式访问。 8.2.2 软件的考虑 4.轮询是低功耗优化的大敌。 程序在等待状态改变或者访问外设时可能会采用轮询(poll)的方法,此方法有时又称“飞速旋转”(spinning)代码。轮询让处理器重复执行几条指令,其功率消耗与繁重计算任务基本相当,而其作用仅仅是等待状态改变,却无法让等待期进入空闲状态,造成功耗的大量浪费。 因此,在低功耗设计中,应该尽量避免使用轮询,而使用替代方法。例如,对外设的访问使用中断方式来代替轮询;客户-服务器协作模型中,将客户端不停地查询服务,改为服务器主动推(push)服务给客户端;在线程同步时,如果需要查询状态改变,可以使用操作系统提供的事件量(event)、信号量(semaphore)等服务来实现。 8.2.2 软件的考虑 5.事件驱动的程序设计方法 从软件设计方法来说,低功耗程序应该尽量遵循事件驱动的程序设计。所谓事件驱动的程序设计就是程序设计成响应事件的模式:当有事件来就运行处理事件;当没有事件到达,或事件处理完程序放弃处理器处于“休眠”状态。这里说的事件是广义的事件,包括用户的输入、网络通信事件、进程/线程同步时的事件等。在Windows系统中,事件驱动被称为消息驱动。 采用事件驱动设计的程序,使处理器的利用率特别高:只有真正有事情要处理时才运行,无事情处理时,让出处理器,这样操作系统和硬件就能在处理器让出的时间内及时地侦测到处理器处于空闲状态,从而做出降低功耗的操作。 事件驱动的程序设计方法在嵌入式系统的一个特殊分支领域——无线传感器网络——中几乎被当做铁的纪律。 8.2.2 软件的考虑 6.减少程序中类似于轮询的周期性操作 前面说轮询操作使系统消耗不必要的电能,而实际上,程序中一些不必要的周期性触发或运行的操作同样有着与轮询类似的消耗不必要的电能的效果。 Moblin中的Tickless Idle技术实际上是操作系统内核程序遵循此原则采取的改进,即去除内核中周期性的定时操作。此外还有很多Linux应用程序中常见的不必要的周期性触发或运行的操作。 例如鼠标移动(每秒1次,在屏保中常用)、音量改变(每秒10次,在混频器程序中常用)。 这些常见的不必要的周期性触发或运行的操作,会导致系统从空闲状态中不必要地唤醒,应该引起我们的注意,小心地加以避免或改进,否则它们会轻易地抵消掉各种节能技术带来的功耗节省。 8.2.2 软件的考虑 7.通信、数据采集上的低功耗建议 在数据采集中,A/D转换需要消耗功率,采集的速度越快,则消耗的功率越多,而产生的数据量也越大,处理器需要花费越多的时间来处理数据,从而功耗越大。因此数据采集时中尽量降低采集的速率。 在通信模块设计中,尽量地提高传送的波特率(每秒钟串行口传送的数据位数)。提高通信速率,就意味着通信时间的缩短,因而减少了通信时高功耗的时间,降低了总的功耗。 同理,在使用WiFi通信时,应多使用突发(burst)模式来传输数据,这样可以缩短通信(特别是发送数据)的时间,便于WiFi设备尽快进入空闲状态。 传感器网络中,此建议的形式稍微有所变化:减少网络中传输的数据的容量就能节省网络内部处理所消耗的能量。因此在传感器网络中应该尽量减少通信数据量,而不是单纯地缩短通信时间。 8.2.2 软件的考虑 8.外设通信和界面设计上的低功耗建议 如果外设支持动态电源调整,尽量用突发(burst)模式来访问数据 比如本来播放一个大小为2MB的视频文件以每秒200KB读数据的话需要10s的时间,但是如果在第一秒以2MB速率读数据的话,后9秒相应外设可以进入休眠状态。 GUI如果不是一定需要用16位色就够了,24位/32位色意味着更多的计算和内存数据的搬移→更高的功耗 8.2.2 软件的考虑 9.建立电源感知的程序 嵌入式系统(如MID、上网本等)的电源经常在连接外接电源和未连接外接电源(即使用电池电源)状态之间切换,这两种电源状态对软件的功耗要求完全不同,前者对功耗不敏感,但多半也会要求性能优先,而后者对功耗敏感,因此需要在性能和功耗之间进行平衡。 对此,应用程序应当检测出设备当前使用电源的类型,做出与电源相关变化相适应的调整,即达到电源感知(power-aware)的效果。 此外电源管理中存在一些潜在的可能会影响软件行为的因素,如设备电池低于特定阈值时转入关闭状态,以及自动休眠等。应用设计时也应考虑这些电源管理

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档