嵌入式系统的低功耗设计内容低功耗设计概述功耗控制技术Moblin的功耗控制技术8.1低功耗设计概述嵌入式低功耗的重要性嵌入式系统的功耗组成CMOS电路的基本功耗模型8.1.1嵌入式低功耗的重要性11010010001980199020002010PowerDensity(W/cm2)HotPlateNuclearReactor386486PentiumPentiumProPentium2Pentium3Pentium4(Prescott)Pentium4为什么功耗问题这么重要?电池容量不遵循摩尔定律增长Processor(MIPS)HardDisk(capacity)Memory(capacity)Battery(energystored)012345616x14x12x10x8x6x4x2x1xImprovement(comparedtoyear0)Time(years)8.1.2嵌入式系统的功耗组成CPU不再是唯一的功耗的组成处理器、无线通信、屏幕是嵌入式系统的3个主要功耗部件8.1.3CMOS电路的基本功耗模型分为静态功耗和动态功耗——回顾第3章关于处理器的知识,实际上这一点对所有CMOS电路都适用。静态功耗曾经微不足道,但现在随着工艺制程(130nm、90nm、60nm)向深纳米发展,问题已经变得非常突出。动态功耗=aCFV2a为与电路有关的一个调整参数;C为一个时钟周期内的总栅电容,对于一个处理器来说它是固定的。V最关键,因为动态功耗与其平方成正比。此外随着工艺制程(130nm、90nm、60nm)的发展,工作电压要求越来越低。F为时钟频率。V与F的制约关系V越高,可以支持的F越高8.2功耗控制技术功耗控制可以从不同层次来实现,根据实现效果,从高到低可分为:系统设计软件算法设计硬件的设计8.2.1系统设计的低功耗考虑待机模式的设计卸载计算密集任务到专用硬件动态电源管理(DynamicPowerManagement)动态电压/频率调整(DynamicVoltage/FrequencyScaling)时钟门控(ClockGating)技术8.2.1.1待机模式的设计对于大多数家电希望能用遥控器控制开关所以待机时,不能完全断电。常用的实现方法包括两种:伪待机方案待机时就是程序不运行,关闭显示待机功耗很大备份MCU方案用一个非常低功耗的MCU来负责遥控器的响应,并且控制主CPU的电源待机时主CPU完全断电8.2.1.2卸载计算密集任务到专用硬件通过把复杂的计算卸载(offloading)到专门的硬件上,放低对主处理器的主频要求比如一视频播放器里的YUV→RGB转换环节如果用CPU来做,对于720p的可能要用掉一个嵌入式处理器(400Mhz左右)的全部计算能力,功耗10瓦左右。但是如果用一个专门的硬件电路来做(并行的多个乘加单元),可能10Mhz的工作频率就够了,也许几十个mW功耗就够了采用具有专门对你的计算密集应用有专门加速模块的SoC比如TIOMAP2420里的Imaging/VideoAccelerator模块如果价格不敏感,可以直接利用FPGA设计加速模块8.2.1.3动态电源管理(DynamicPowerManagement)很多处理器或者外设支持多种不同的睡眠模式一般是通过关断部分电路的电源实现睡眠不同的睡眠模式下,关断的范围不一样,从而从睡眠恢复所需的时间也不一样尽量让系统在没有活动任务时进入尽可能深的睡眠模式需要操作系统和应用软件的配合才能实现模式切换的频度的折中从睡眠模式恢复到正常状态的这个过程往往比正常模式还要费电比如硬盘从静止→启动到规定的转速过于激进的切换,可能导致频繁的恢复,所以反而更耗电过于保守的切换,节电效果也不好8.2.1.3动态电源管理处理器功耗管理策略处理器的运行方式可以用一个电源状态机来描述:运行睡眠ttststPsleepPrun8.2.1.3动态电源管理处理器功耗管理策略(续)处理器的电源(即功耗)有两种不同类型的管理策略:一种是静态电源管理机制。它由用户调用,不依赖于处理器活动。一个静态机制的例子是通过节电模式来节省电源。这种方式用一条指令来进入,通过接收一个中断或其他事件来结束。另一种是动态电源管理机制。它是基于处理器的动态活动来对功耗来进行控制的。例如,当指令运行时,如果处理器某些部分的逻辑不需运行,那么处理器也许会关掉这些特定部分。8.2.1.3动态电源管理APM、ACPI标准实现嵌入式计算系统的低功耗,需要硬件和操作系统协同地工作。为协调操作系统和硬件对功耗和电源的管理,需要为两者制定一套统一的接口规范。最早的规范是APM(Advancedpowermanagement,高级功耗管理),它是由Intel和微软联手发布的一组API,使运行于与IBM兼容的个人计算机上的操作系统能与BIOS协同实现功耗管理。目前的规范是ACPI(AdvancedConfigurationandPowerInterface,高级配置和电源接口),它是从APM发展过来的。ACPI是一个电源管理服务的开放工业标准。它与多种操作系统兼容,最初目标是针对个人计算机的。ACPI提供了一些电源管理的基本工具并抽象出硬件层。操作系统有自己的电源管理模型,它通过ACPI向硬件发送需求控制,然后观察硬件状态将其作为电源管理的输入,从而实现对计算机和外围设备的电源的控制。8.2.1.3动态电源管理APM、ACPI标准应用硬件平台设备驱动程序内核ACPI驱动程序AML(高级管理语言)解释器ACPIACPI表ACPI寄存器ACPIBIOS电源管理ACPI在整个计算机系统中结构目前一些流行操作系统和软件平台,如WindowsXP、Moblin等,都是支持ACPI。8.2.1.3动态电源管理操作系统支持的常见低功耗状态当任务空闲(或称处于非活跃状态)时,计算机系统可通过进入各种低功耗的工作模式的方式来节能,这些低功耗的工作模式有时又统称为“睡眠”模式。系统的这些低功耗工作模式,介于系统完全启动和完全关闭状态之间,拥有多种形式,每种形式拥有自己的特点,能满足不同角度的用户需求。这些工作模式包括:待机(Standby)系统处于“待机(Standby)”模式时,将切断所用硬件组件的电源,从而减少计算机的电源消耗。“待机”可切断外围设备、显示器甚至硬盘驱动器的电源,但会保留计算机内存的电源,以不至于丢失工作数据。8.2.1.3动态电源管理操作系统支持的常见低功耗状态待机(Standby)(续)待机模式的主要优点在于恢复时间短,只需数秒时间系统就可恢复到之前的状态。缺点在于待机模式仍需要对内存供电。这样内存内容将不会被保存到文件夹中,因而也就不会因为内存重新加载而影响运行速度。但是,如果在该模式下发生电源中断,所有未保存的内存内容都将丢失。因此,待机又称为挂起到内存(SuspendtoRAM,简称STR)。处于待机状态的系统,除硬盘外,其他设备还是处于加电等待状态(也就是说唤醒时无须重新加电,通俗地说就是原地待命),所以电源、处理器、显卡等设备的风扇还是处于工作中,键盘指示灯也是亮着的。我们可以通过按键盘任意键或动一下鼠标来唤醒电脑,这时硬盘就会重新加电并启动,然后和内存、处理器等设备交换数据,从而完成返回到原来工作模式的任务。8.2.1.3动态电源管理操作系统支持的常见低功耗状态休眠(Hibernate)系统处于“休眠(Hibernate)”模式时,将保存运行状态的一份映像到外部存储器中,然后关闭计算机电源。这样重启电源时,运行就会恢复到按原来离开时的样子,如文件和文档就会按原来离开时的样子在桌面上打开。休眠模式比待机模式的脱机程度更深,因此有助于节省更多的电量,但重启时间更长。此外,休眠模式还具备更高的安全性。这是因为该模式不仅会像睡眠模式那样关闭对外设和硬盘的供电,而且还会切断对RAM内存芯片的供电。因此,又称为挂起到硬盘(SuspendtoDisk,简称STD)。8.2.1.3动态电源管理操作系统支持的常见低功耗状态休眠(Hibernate)(续)由于休眠模式会在关闭电源之前,将内存中的所有数据保存至(写入)外部存储器(一般是硬盘)上的参考文件中。退出休眠模式时,系统将恢复(读取)该文件,并将相应的数据重新加载到内存中。这样,系统就恢复到了之前的工作模式。由于休眠模式需要保存内存数据,因此与睡眠模式相比,该模式的恢复(唤醒)时间要更长。这种模式的优势在于其完全不耗电,因此不怕休眠后供电异常,但代价是需要一块和物理内存一样大小的硬盘空间。而这种模式的恢复速度较待机模式慢。休眠状态的计算机系统几乎和通常关机一样安静,用户还可以完全切断电源,而内存的数据(即运行状态)不会由于断电而丢失。与待机相比,休眠一般难以通过外部设备来唤醒的,它需要和正常开机一样启动系统;不过和开机相比,休眠后启动系统无需一个一个进程地来启动,只须要将硬盘中的内存镜像读取到内存中即可,因此速度较开机还是快得多。8.2.1.3动态电源管理操作系统支持的常见低功耗状态睡眠(Sleep)“睡眠(Sleep)”模式结合了待机和休眠的所有优点。将系统切换到睡眠状态后,系统会将内存中的数据全部转存到硬盘上的休眠文件中,然后关闭除了内存外所有设备的供电,让内存中的数据依然维持着。这样,当用户想要恢复的时候,如果在睡眠过程中供电没有发生过异常,就可以直接从内存中的数据恢复,速度很快;但如果睡眠过程中供电异常,内存中的数据已经丢失了,还可以从硬盘上恢复,只是速度会慢一点。不过无论如何,这种模式都不会导致数据丢失。此外,睡眠模式也不是一直不变地持续下去的,如果系统进入睡眠模式一段时间后没有被唤醒,那么还会自动被转入休眠状态,并关闭对内存的供电,进一步节约能耗。8.2.1.3动态电源管理操作系统支持的常见低功耗状态实现这些低功耗状态节能,一方面需要操作系统的支持,另一方面也要求硬件提供相应的支持,如支持高级配置和电源接口(ACPI),这样的协同才能实现上述功能。当空闲时间(又称非活跃时间)达到指定长度,或者检测出电池电量不足时,操作系统可自动将计算机系统置于各种相应的低功耗状态,从而达到整个系统节能的目的。8.2.1.4动态电压/频率调整(DynamicVoltage/FrequencyScaling)某些新的CPU可以让软件动态的改变工作电压和频率通常两者按一定比例同步的修改,电压上升,可以运行的最高频率上升某些时候CPU上执行的任务并不一定要求很快完成比如在Windows事件循环中idle阶段的一些处理此时可以将CPU频率改慢,同时CPU电压改低→两者都对降低功耗有贡献8.2.1.4动态电压/频率调整动态电压/频率调整技术实例:SpeedStep、EIST、C&Q技术SpeedStep是由Intel公司推出的,对IntelCPU进行功耗控制的一项技术。后来Intel发展了该技术,现在一般统称为EIST(EnhancedIntelSpeedStepTechnology,增强型智能变频)。此技术最早用在IntelPentium3-M处理器上,现在IntelPentium46xx、PentiumM、PentiumD、酷睿(Core)、Atom等多种系列上都采用了此技术。此技术的基本原理是通过调整处理器的电压和频率,来减少其功耗和发热,当然随着电压和频率的降低,处理器的处理速度也会随之有所降低。采用此技术的系统,不仅更加节能,而且不需要安装大功率散热器来散热,也不用担心长时间使用因温度过高导致电脑不稳定。8.2.1.4动态电压/频率调整动态电压/频率调整技术实例:SpeedStep、EIST、C&Q技术对于AMD处理器,该公司推出了两种与EIST类似的CPU节流技术。一个是C&Q(Cool'n'Quiet)技术,俗称“凉又静”。该技术用在了它的桌面和服务器处理器生产线上。其目标不是去延