基于Linux的智能手机省电设计

发布者:chaohuangmeitao最新更新时间:2015-02-06 来源: eefocus关键字:智能手机  省电设计  Linux 手机看文章 扫描二维码
随时随地手机看文章

引言

智能手机中包含了很多耗能设备, 诸如MP3、MPEG- 4、Wi-Fi、数码相机、3D 游戏等等。在手机电池容量还没有实现质的飞跃的前提下, 我们不得不考虑手机电源节能的问题。我主要通过了以下四个方面来阐述在基于Linux 平台上的智能手机的解决方案。

 

CPU 的选择

尽管现在有了各种在不过多加重功耗负担的前提下提高性能的技术, 但用一个芯片来处理这么多各种各样的任务, 恐怕已经不是一个很好的选择了。一是因为这些功能对芯片处理功能的要求可能各不相同, 二是因为一个负担着如此众多任务的芯片势必需要很高的速度, 降低功耗变得很困难。

在这种情况下, 多CPU 系统(MPCore)成为一个必然的趋势。多CPU 系统的一个明显的优势是: 针对不同的任务处理需要, 不同的CPU 可以各尽其职, 将自身的优势充分发挥, 由此带给手机最优化的性能表现。另一个优势显然还是体现在对功耗的控制上: 假如用单CPU 来完成所有的功能, 不可避免地需要一个很高的CPU 速度, 从而造成很高的功耗。用一颗高速CPU 来完成这样的任务, 无疑是大牛拉小车, 同时浪费很多能源。多CPU 系统可以根据不同的任务需要合理地启动、停止相应的CPU 来完成任务,不需要的时候处于停歇状态, 实现最大限度地控制功耗。

既然我们选择了多CPU 的架构, 那么接下来CPU 的性能就是我们要考虑的第二大问题。一般的情况下, 我们是在CPU 的性能( Performance) 和功耗(Power Consumption) 方面进行比较和选择。通常可以采用每执行1M次指令所消耗的能量来进行衡量, 即Watt/MIPS。

我们把CPU 的功率消耗分为两大部分: 内核消耗功率PCORE和外部接口控制器消耗功率PI/O, 总的功率等于两者之和, 即PPCORE+PI/O。对于PCORE, 关键在于其供电电压和时钟频率的高低; 对于PI/O 来讲, 除了留意各个专门I/O 控制器的功耗外, 还必须关注地址和数据总线宽度。

在数字集成电路设计中, CMOS 电路的静态功耗很低, 与其动态功耗相比基本可以忽略不计。CMOS 电路动态功耗的计算公式如下:

Pd=CT*V2*f, 其中Pd 是CMOS 芯片的动态功耗, C是CMOS芯片的负载电容, V 是CMOS 芯片的工作电压, f 是CMOS 芯片的工作频率。

由上可见, 当CPU 确定后, 我可以通过降低频率和电压来减少系统的功耗。

在CPU 的选择方面, 我们推荐采用Intel 的Xscale 芯片, 以及IBM的PowerPC405G 芯片。

 

动态电源管理(DPM)

系统不可能始终处于满负荷状态, 因为系统的工作量随时都在改变。动态电源管理(DPM) 通过选择性的将空闲的系统组件置于低能耗状态实现了系统整体能耗的最优化。

我们更为关注的是DPM在Linux 框架结构下的实现。图1 展示了电源管理和嵌入式Linux 堆栈之间的关系。

 

电源管理和嵌入式Linux 堆栈之间的关系


以下是一些于电源管理相关的接口以及API:

内核接口。在针对Linux 的DPM 架构中, 内核中的DPM 子系统负责维持系统的电源状态, 并把DPM 系统的各个电源得到管理的元件联系在一起。DPM 子系统通过多个API 直接与设备驱动程序通信, 这些API 把驱动程序从完全运行状态转为各种电源得到管理的状态。策略管理器( 或应用软件自身) 通过多个API向DPM 子系统提供指导, 这些API 定义各种策略, 并在定义好的运行点之间转移整个系统。

驱动程序接口。启用了DPM 的设备驱动程序比默认驱动程序具有更多“状态”: 由外部事件通过各种状态来驱动它们, 或通过来自内核DPM 子系统的回调来驱动它们, 从而反映并遵循运行策略。驱动程序API 还允许驱动程序登记它们连接和管理的各个设备的基本运行特征, 从而实现更精细的策略决策。

用户程序API, 用户程序( 应用软件) 分为三类:

(1)可感知电源管理的应用软件;

(2)可感知电源管理的“包装器”中的传统应用软件;

(3)不带电源管理的传统应用软件。

可感知电源管理的应用软件能够充分利用来自策略管理器的API, 从而建立各自的基础约束, 并强制电源管理策略发生变化, 以便匹配各自的执行要求。不直接带有电源管理功能的传统应用软件可以“包装”到代码或补丁中, 从而实现相当的效果, 它们还可以按照默认行为来运行, 这取决于更宽范围的默认策略管理。

嵌入式Linux DPM 下的实际机制包括各种API, 比如dpm_set_os ()( 内核) 、assert_constraint ()、remove_constraint () 和set_operating_state () ( 内核和驱动程序) 、set_policy () 和set_task_state()( 经由系统调用的用户级接口) , 以及/proc 接口。

电源管理策略在系统电源管理中扮演了极为关键的角色。DPM的策略抽象模型的执行体系类似于状态机。在DPM中有2个概念很重要: 一个是执行点(operating points), 另一个是执行状态( operating states) 。DPM的执行点来自一些独立的系统参数, 包括执行电压, 频率, 以及总线带宽等等。随着事件的改变, 系统的状态也不断的改变( 如图2 所示) 。在DPM中, 每个系统状态都是一个执行状态, 包括空闲态、活动态和睡眠态。

 

系统的状态不断的改变

自适应电压调整(AVS)

在CPU 的选择部分, 我们知道了系统能耗是与电压和频率紧密相关的。现在我们来探讨一下调整电压在降低能耗方面的作用。在电压调整方面, 自适应电压调整是一种很有效的方法。自适应电压调整AVS(Adaptive Voltage Scaling)是通过反馈机制将电源电压调整到给定工作负载(处理量)所需的最小值。这种闭环方式可进一步减小功耗, 但需要将部分电源管理电路置入主处理器。[page]

成功实现AVS 的关键是在基带芯片中集成部分系统电源管理电路, 即内置AVS 控制器(图3)。这一关键模块包含专门的电路和算法, 用来确定给定处理量下的最优电压。通过向电压调整器的参考端输入馈送误差信号, 可以生成最优的VDD, 无需提供不必要的电压余量, 从而减少了电能损耗。对任何闭环方法来说, 环路带宽都是很重要的。环路快速跟踪并稳定的能力决定了基带电源动态调整以自适应工作负载突变的能力。

 

内置AVS 控制器

通过软件方法降低设备功耗

低能耗软件优化对于基于处理器系统的应用程序而言, 是最有发展前途的降低系统能耗的技术方法。这种方法对于那些计算复杂度较高的应用程序最为有效。因为只有在应用程序执行的时候, 才会消耗大量电源。

这项技术的最终目的是在执行较为复杂的应用程序时, 尽量降低能耗。我们的程序用于降低计算的复杂度, 但不能改变程序原本的行为。现在我们通过图4(A) 中的例子, 来阐述一下一些有关软件优化的想法。

 

通过软件方法降低设备功耗

考虑主函数中第一次调用过程test。如果档参数a 和差数k都是0 的概率为90%, 我们可以将源代码改写为图4(B) , 通过改写, 我们减少了test 过程中的循环数。但在现实中, 参数a 和k 并不是总是为0。那么test 的过程调用不能被新的过程sp_test 所完全替代。我们用一个条件语句来限定过程的调用, 所有的过程调用依赖于cvd_test()的结果。当过程cvd_test()检测为一般情况( a,k同时为0) , 符合此条件的修正后的代码被执行。如果当过程cvd_test()检测为非一般情况( a,k 非同时为0) , 原有的代码被执行。在另一方面, 当过程cvd_test()检测为非一般情况, 我们提升了程序的计算复杂度, 也相应提高了能耗。

一般而言, 对代码优化有各种各样不同的方法。如果我不考虑参数k, 我们可以将源代码转化为图4(C) 所示。a 为0 的概率大于a 和k 同时为0 的概率。在不同情况下, 对原有代码所做的修改有不同的效果。

最后, 我们必须检验修改过的代码对原有代码的影响, 是不是改变了原有代码的行为, 在任何条件下我们都不能去擅自改变原有代码的行为。代码质量的提升也是相当的重要的。对于C 语言来说, 将一些简单的函数转换为宏定义时一种比较有效的方法。

综上所述, 我们可以将一般情况下代码优化分为4 个步骤:

(1)一般案例的选择。选择最有效的、最长被调用的案例。

(2)一般案例的提炼。为给出的一般案例建立一个过程。

(3)全局检测。检测改变后的调用对于全局的影响。

(4)提高代码质量。使用一些编程语言中的基本技巧, 以提高代码质量。

总结

在移动终端设备设计方面, 节能成为了一个很重要的设计指标。我们选取了更高效的CPU 以降低能耗。对于交互式应用程序而言, 我们使用DPM策略降低处于空闲态的能耗, 这种方法主要使用于OS 层。而AVS 技术是通过电压调整来实现减少能耗。在应用程序层, 我们通过对软件的优化来达到降低能耗的目的。在Intel? PXA27x 处理芯片环境下, 通过以上方法, 我们降低了26%的能耗, 提高了30%的系统性能以及增加了7%的代码量。

关键字:智能手机  省电设计  Linux 引用地址:基于Linux的智能手机省电设计

上一篇:太阳能光伏的无变压器逆变器构造
下一篇:风力发电系统的电能变换装置设计方案

推荐阅读最新更新时间:2024-05-02 23:29

OK6410裸机程序之开始模板(Linux环境)
一、 裸机程序的构成 1. 基本的裸机程序由启动代码和C函数文件构成。而启动代码包括:硬件设备初始化、调用C函数。 本次分析中代码文件有: start.S 启动代码,都是汇编写的 commom.h 一些通用的函数,比如设置某寄存器的某位为1或0 irq.c 中断初始化,中断处理等 regs.h 6410的寄存器地址,需要哪些寄存器可以在本文件中声明和定义 sdram.c 有关sdram的一些操作,如sdram初始化等 time.c 系统时钟的有关设置,如PLLclock等 led.c 这个就是主函数了,主程序就在这里编写,本次只是演示,控制开发板的led
[单片机]
OK6410裸机程序之开始模板(<font color='red'>Linux</font>环境)
linux2.6.18内核S3C2410平台移植笔记
我使用的实验箱是Embest EDUKIT-III,板上资源CPU:SAMSUNG S3C2410A、FLASH:K9F5608U0(Samsung NAND 32MiB),烧录工具:embest flash programmer。因为厂家自带的是2.4的内核,目前学习开发用的基本上都是2.6内核,这两者改动还是比较大的。电话咨询过技术支持后,对方说只想在板子上跑系统的话还是比较好移植的。于是决心自己动手移植内核。不然今后的驱动编写,都没有合适的运行环境,影响进度。所以工欲善其事,必先 利其器,前期的这些准备还是很有必要的。那几天刚好ubuntu10.10发布,满怀期待的我升完级后,结果悲剧了,中文显示变得发虚模糊,主题颜色也极度
[单片机]
Fairchild微型、低功率USB Type-C方案首次应用于乐视网智能手机
Type-C USB 协议实现完全集成,包括功率传输、检测和定向,有利于下一代移动设备的通信 美国加州圣何塞 2015 年 5月 19日 全球领先的高性能功率半导体解决方案供应商Fairchild (NASDAQ: FCS)今日宣布其首款商用 USB Type-C 器件应用于乐视网最新推出的 MAX1、X1 和 S1 系列智能手机中。Fairchild 的最新 USB 解决方案将新型 Type-C 接口的全部关键特性集成到一个仅 1.2 mm x 1.2 mm 的超小型 WLCSP 封装中。由于具有体积小巧、待机功耗极低的特点,该解决方案非常适合具有新型 USB 接口特性的下一波移动产品、软件狗、旅行适配器、PC
[手机便携]
Fairchild微型、低功率USB Type-C方案首次应用于乐视网<font color='red'>智能手机</font>
人民日报:国产手机打响“攻芯战”
    手机产业,一个让中国制造引以为傲的领域,全世界前十大手机品牌中,中国品牌已占7席。芯片制造,一个让中国手机困惑的领域,绝大多数国产手机制造商仍完全依赖芯片进口。目前,中国芯片年进口额约为2000 亿美元,是国内最大宗进口产品,而作为市场需求接近全球的1/3国家,中国自己的芯片产值却仅占全球的6%至7%。   一块指甲盖大小的芯片,就这样卡住了中国手机制造的脖子。中国手机要全面迈上中高端,解决这块“芯病”是必由之路。   “核芯”技术受制于人   芯片,是一部手机的“心脏”,是手机产业链上最为核心的技术。由于芯片设计和制造大多由同一家厂商完成,产业链条封闭性强,技术和资金门槛更高,因此,业内已形成寡头垄断的格局,
[手机便携]
一加超越三星成印度第二大高端智能手机品牌 三星不服
凤凰科技讯 据timesnownews北京时间11月1日报道,印度《经济时报》刊文称,在印度高端智能手机市场,一加已经超越三星,成为仅次于苹果的第二大品牌。不过三星对相关数据提出了异议。 今年7-9月,三星不仅仅被苹果超越,把印度市场第一大高端智能手机品牌宝座拱手送给后者,它还被一加超越,沦为第三大品牌——对于三星来说这还是首次。 但三星对市场研究公司Counterpoint Research(以下简称“Counterpoint”)的数据提出了异议,称按最终销量计算,它仍然是印度高端智能手机市场第一大品牌。 分析师指出,随着谷歌、小米和诺基亚等公司加入战团,11月份印度高端智能手机市场冠军争夺战会更加激烈,使得苹果和三
[手机便携]
嵌入式定位系统的实用设计与软件算法实现
  定位系统自问世后便得到了蓬勃发展,其应用已渗入到各行各业。个人消费领域引领移动定位类型科技产品集中涌现,其他领域和行业也有大量技术更新。目前各领域的定位系统主要集中在平台和地图的研发上,平台配合应用要求选用硬件,地图根据显示要求实现软件算法。因而,它们在定位系统的研究工作中各成体系,兼容性不强。   近年来,在定位系统设计中,硬件选择越来越集中在几个品牌的几个型号上。而软件设计方面比较分散。因而在一个兼容性强的平台上实现软件的集中研发,将是未来的研发方向。   这里提出一种系统构造模式,弱化硬件平台的影响而力求最大限度的统一软件设计。    1 系统整体设计方案   这里提出一种实用的设计方案,通过对系统的各方
[嵌入式]
OK6410A 开发板 (八) 15 linux-5.11 OK6410A start_kernel 打印角度 第一阶段 vfs
打印信息 Dentry cache hash table entries: 32768 (order: 5, 131072 bytes, linear) Inode-cache hash table entries: 16384 (order: 4, 65536 bytes, linear) memblock_alloc_try_nid: 131072 bytes align=0x40 nid=-1 from=0x00000000 max_addr=0x00000000 alloc_large_system_hash+0x17c/0x2c0 memblock_reserve: memblock_alloc_range_ni
[单片机]
XScale PXA270在Linux下的FPGA设备驱动
引言 Intel公司推出的XScale采用ARM V5TE结构,是Strong ARM的升级换代产品。XScale PXA270处理器最高主频可达到624M赫兹,加入了Wireless MMX、Intel SpeedStep等新技术,以其高性能、低功耗、多功能等特点在信息家电、工业控制等领域得到了广泛的应用。在嵌入式控制中,“微处理器+FPGA”是一种常用的解决方案,FPGA(现场可编程门阵列)有编程方便、集成度高、速度快等特点,电子设计人员可以通过硬件编程的方法来实现FPGA芯片各种功能的开发,在我们的一个数控平台的研究项目中,采用XScale PXA270作为主CPU,并对其进行FPGA扩展,使其具有插补、电机驱动、信号处
[应用]
小广播
热门活动
换一批
更多
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved