更新事件列表算法代码如下:
显式资源需要对驱动程序作一些修改,即在驱动程序发送执行命令前和硬件完成服务并通过驱动程序告诉内核设备就绪后这两个时间点,插入一个NotifyEvent()函数调用。具体的代码插入点根据不同类型的设备和对服务开始与结束的不同定义而不同。
根据观测器得到的系统资源访问历史记录计算出优化策略之后,控制模块将在通过电源管理机发出控制命令给相应的硬件完成服务,并通过驱动程序告诉内核设备就绪后这两个时间点插入一个NotifyEvent()函数调用。
(2)DVS策略
目前,嵌入式系统降低功耗多采用动态电压缩放技术Ⅲ,即系统运行时可以通过设置可编频率寄存器控制处理器的工作频率。实验观察发现,系统的运行负荷具有明显的非平稳特性,短时间内可能具有很高的执行负荷,但绝大部分时间维持轻负荷状态。DVS技术根据嵌入式系统这一特点,在系统负荷较重时将处理器设置为最高执行速度,以保证系统的计算能力;而在系统负荷较轻时动态降低处理器的工作频率,以降低处理器的执行功耗,从而实现系统计算性能与功耗的优化控制,如图 6所示。DVS的预测通过采用了基于时间间隔AVGn算法的cpu_dvs函数实现。该函数读取CPU使用信息,按照AVGn算法来估算系统的运行负荷,并根据返回给cpu_scan函数的结果实现具体的动态电压缩放。
AVGn算法分析了多种简单或复杂的估计算法和平滑技术。其基本思想是采用指数平滑平均值方法,即预测即将到来的间隔的n个运行百分比的加权平均值。但AVGn算法存在一个问题就是,逐档改变频率导致系统不能及时地响应负载变化,还需要大量深入细致的研究。
2.3 应用程序层
在基于微处理器、微控制器的系统中,软件起到了引导硬件活动的主导作用。也就是说,软件对系统的能量消耗有很大的影响。直到目前,还没有有效且精确的方法可用来评估软件设计对能量消耗所起的效应。没有能量评估,就无法对软件进行优化进而减少电能消耗。引起CPU电能消耗的众多因素中,至少有2个受软件的影响极大——存储系统与系统总线。在嵌入式系统的低功耗软件设计中,主要考虑这2个因素。
3 总 结
功耗已经成为嵌入式系统设计中优先要考虑的问题,随着处理器速度越来越快,如何降低功耗已经成为衡量嵌入式系统性能优良的一个重要方面。因此,在低功耗嵌入式系统设计过程中要考虑各部分具体的低功耗设计方法,同时也要充分发挥各抽象层的低功耗技术优势。
本文介绍的低功耗嵌入式系统中仍有很多不足,有待进一步探索:①DPM随机决策模型和求解算法,并没有解答最优策略是否存在、若存在最优策略具有什么特性等基本问题,也没能从理论上解释“实践中超时策略可以取得优良节能效果”的原因。②本文的DVS策略采用与AVGn算法类似的假设条件,在实际应用中这些条件过于苛刻。如何将本文DVS策略的思想应用到特定的非理想情况的嵌入式系统中,尚需进一步研究。