1 软件低功耗措施
1.1 全动态切换处理器的工作模式
嵌入式处理器是硬件系统的核心,运行功耗占系统功耗的大部分。目前,嵌入式处理器一般采用RISC体系结构,通过简化指令设计、引人流水线技术、指令预取、大量寄存器操作和高速缓存等技术提高运行效率,并采用低电压工作模式以降低运行功耗。嵌入式处理器一般为应用开发提供了三种工作模式:运行模式(Run)、空闲模式(Idle)和休眠模式(Standby)。运行模式即正常工作模式,CPU全速运行;空闲模式时CPU是静态的,但LCD刷新电路和晶振都工作;休眠模式时CPU的I/O端口禁止,但外部晶振工作。在不同运行模式下,处理器工作时功耗数值差别较大。
全动态切换处理器工作模式的目的是在不影响系统正常工作时,通过软件控制策略尽最大可能使嵌入式处理器工作在空闲或者休眠模式来降低系统功耗。用户使用产品过程中,人机交互时间较短,CPU需要全速运行时间较少,大部分时间是不需要工作的。基于产品使用模式,人机交互或者有外部中断事件需要处理时,控制嵌入式处理器处于运行模式;在其他状况下,控制嵌入式处理器处于空闲模式或者休眠模式。
嵌入式GIs系统采用消息驱动机制:系统有消息分发表明有任务需要处理器完成,嵌入式处理器工作于运行模式;一旦在一定时间间隔(如2 s)系统未能获得任何新消息,且其他任务已经完成,则通过软件编程控制处理器从运行模式切换到空闲模式;如果时问更长(如5 s),还可以进一步切换到休眠模式;在空闲或休眠模式,一旦系统通过外部事件被唤醒,则转入运行模式。如此反复,构成如图1所示的处理器工作模式切换图。
1.2 合理调度数据
嵌入式GIS系统中程序代码和数据存放在存储器中,存储器访问也是嵌入式系统功耗的一大部分。有资料统计表明,内存传输是迄今为止CPU完成的操作中代价最高的——一次内存传输消耗的能量是一次加法运算的33倍,因此降低系统能量消耗的最主要工作在于,合理组织存储器中的数据和指令代码,尽量做到寄存器访问和缓存访问,减少CPU访问外部存储器。随着存储技术理论的发展和工艺水平的提高,现在存储器体系结构一般都是三级,而且支持虚拟存储技术,如图2所示。
从图2可以看出,当处理器访问数据时,离CPU越近的地方,数据存取速度越快,功耗越低。基于这种特性,应该启用高速缓存,并将嵌入式GIS系统频繁访问的代码和数据在系统启动后读入内存并常驻,具体安排如下:
①嵌入式处理器支持MMU(Memory ManagementUnit)功能,设置启动代码时将相应的寄存器开关C打开,使系统高速缓存Cache处于有效状态;
②系统初始化后,将系统运行频繁访问的关键数据一次性地从外存读人内存并驻留内存,如中断服务程序、地图符号库资源、点阵字体资源等,以后相关的操作直接从内存取用;
③当读写Flash存储介质时,需要照顾到Flash写操作时间长和功耗高的特点,尽量降低直接写Flash的次数。如果需要保存运行轨迹,可事先在内存中开辟1片缓存区,周期性地(如每隔30 s)写FIash,而不是每次新增位置数据都执行1次写F1ash操作。
1.3 坐标数据处理
空间坐标数据是GIS数据的基本组成部分,数据量大且计算负荷重。有效减少坐标记录个数是提高系统运行效率的有效措施,因此嵌入式GIS系统中需要对采集到的曲线和面边界坐标集合进行压缩处理,即在一定精度范围内通过坐标压缩算法减少坐标存储个数。目前,道格拉斯一普克算法和“滤点压缩”法是减小曲线坐标数据的有效方法,应用范围较广。坐标数据压缩可以在生成嵌入式GIS系统数据时在台式PC机上调用实现。
嵌入式GIS空间坐标数据通过坐标压缩和采用定点运算规则,提高系统运行效率,降低运行功耗。
1.5 优化关键算法
求解同一个问题,软件编程实现时有许多不同的算法。查找线性表有顺序查找、二分查找和分块查找等算法。评价一个算法好坏的常用参数是算法时间复杂度和空间复杂度等。算法时间复杂度定义为算法的时间耗费,即所求解问题规模(求解问题的输入量)的函数。在空间复杂度允许条件下讨论系统功耗问题更关注算法时间复杂度,因为时间复杂度越小,执行效率越高,执行时间越短,软件运行功耗越低。嵌入式GIS系统中关键算法与具体功能实现有关,如路径分析算法、信息检索算法和导航滤波算法等等。