随着对移动和有线设备的能源效率需求的增长,系统开发人员会越来越多地使用功率智能型硬件解决方案,而更加节能的代码能使之如虎添翼。

 

最前沿的功率智能型硬件技术就是多核 SoC,它能够工作在各种各样的频率及电压下。还有一些 CPU 和外设也支持多种功耗模式。我们已经看到硬件方面的进展,但是要真正地从这些进展中得到好处,还需要一种新型的操作系统。


在功率高效型嵌入式设计迎来曙光的今天,前辈们所使用的实时操作系统(RTOS)已经不再满足需要。这时所需要的是节能型 RTOS,它更加注重处理 CPU 的各种模式,同时均衡系统总响应度及功耗。

 

硬件技术趋势

现在,电池的体积越来越小,但提供的容量却越来越大。而大量的电子设备开始采用比以往更大的、由触摸屏控制的、具备高级特性的背光 LCD 显示器,这样提高了产品的易用性,其代价是功耗更大,并且当 LCD 技术获得重大进展时,就会推动背光需求,这就需要更多的功率。

 

现代 SoC 设计采用了动态的电压和频率调节(DVFS)。在最简单的情况下,降低频率就能够降低功耗,并且系统也能够降低供给 CPU 的电压,给节能带来倍增的效果。CPU 内核提供了各式各样的功耗状态:运行(run)、睡眠(sleep)、打盹(doze)和小睡(snooze)。

 

CPU 功耗状态的功耗越小,唤醒 CPU 所需要的时间就越长。最深的节能等级会保存硬件的寄存器状态,并使 DRAM 进入自保持模式,但较深的节能等级也会表现为在系统刚被唤醒时反应缓慢。

 

今天的设计通常会加入支持 DVFS 中动态电压部分的电源管理 IC(PMIC)。当 SoC 的频率达到最大时,电压也必须达到最大,以维持转换时间,并且在较低频率时,电压可以降低。

 

如果系统没有针对功耗进行调整,处理器将快速完成作业,比实际需要更快。频率的降低使得降低所需电压成为可能,这意味着能够在满足时间限制的同时节省功耗。

 

有了上述硬件技术的进步,软件就当仁不让地占据了控制系统总体功耗的位置。要想尽可能地节省所有嵌入式设备的功耗,就需要一套相当复杂的电源管理系统。用于电源管理的软件可以分为被动电源管理和主动电源管理。

 

被动电源管理

最基本的电源管理方法是被动电源管理。被动电源管理通过将电源域置于低功耗状态来监视设备何时被使用,检测设备何时停止活动,并做出反应。

 

例如,当设备的用户界面被激活——用户接触触摸屏——设备就处于活动状态并保持在全功耗模式。如果触摸屏不活动,随着定时器计时结束,电源域的状态机将转换到低功耗状态。第一次超时事件可能会将背光降至 50%亮度。第二次超时事件可以将其完全关闭。

 

主动电源管理

主动电源管理采用的理念就是系统可以预测将来的资源使用,但这实际上是不可能的。对于系统而言,能够做到的是分析每个任务,并引入复杂的调度技术,以便预测当系统在工作时任务需要什么,并相应地调节电压和频率。通过分析数据,根据实际功率使用状况以及系统正在执行的动态测量来进行手动编程,或者通过动态测量该系统正在执行的任务来进行手动编程。

 

监视任务时,可以监视它们访问哪些 API,使用哪些设备以及每次准备好接受调度所消耗的时间。接着,这些数据连同最近每项任务执行调度的历史会被搜集并存储起来,以便用于分析完成这项作业需要多少处理资源。

 

通过使用 DVFS,系统开发人员可以节省大量功耗,但这样做是有代价的,因为在低功耗和高功耗状态之间的切换会消耗额外的功率。低频到高频的切换意味着我们需要首先将电压调节至 CPU 频率可以承受的预定电压水平。降低频率的过程是瞬时的,但是电压的调节过程受限于转换速率,需要一定时间才能达到最佳设置。

 

考虑到电源管理结构,有时,与其降低 DVFS 之后再重新调高以满足新任务的需要,还不如让系统保持在高功耗状态。

 

用于对称多处理(SMP)系统

对称多处理(SMP,SymmetricalMulti-Processing)技术,是指在一台计算机上使用两个或两个以上处理器去进行计算处理。如果有两个内核,两项待运行任务,这两项任务可同时运行。如果 DVFS 设置为相同频率,每项任务都可以运行在任意内核上。实际上,如果我们在单独调节的每个内核上使用不同的 DVFS 设置,情况会变得更加复杂。

 

随着今天 SoC 中 SMP 复杂度的增加,遇到支持 4 个或更多个对称内核的系统并不罕见。这就需要调度多个可能工作在不同频率上的内核,增加了管理每个内核的 DVFS 方面以及调度每个内核上任务的复杂度。