本文是嵌入式企鹅圈原创团队成员、NVIDIA资深开发project师Terry发表的第一篇文章,其将对“移动智能设备功耗优化”这个专题展开一个系列的总结分享。

Terry毫无保留地总结分享其在主导NVIDIA多个项目开发中的移动设备功耗优化经验,极具价值。

随着智能移动设备的功能越来越多。CPU/Memory频率也越来越高。随之带来的功耗问题也越来越严重,怎样延长手机的待机以及使用时间一直以来都是各个手机厂商不得不面对的问题。本专题将逐一为各位读者解说一下当前主流的功耗优化策略以及一些有用的优化调试方法,希望能够起到抛砖引玉的作用。

如今主流的移动CPU最高频率动辄1-2GHz。更高的频率带来更高的功耗。因此我们并不须要CPU时时刻刻工作在最高频率上。大部分时间里。CPU实际是工作在轻负载状态下,依据不同的系统负载,CPU能够工作在多核/单核。高频/低频,或者在FCPU(比方A57)和SCPU(比方A53)之间切换。假设负载更轻,比方关屏待机。CPU能够切换到LP0,使得CPU功耗趋近于0。以上过程涉及到下面技术。

一、 LinuxCPUquite机制

对于多核CPU,执行游戏须要将全部Core online。浏览网页或许1个核就足够了,怎样评估当前须要几个Core online? 怎样实现CPU core 的hot plug?

因为这个技术是Nvidia独有的。涉及到商业秘密。故不能展开写。假设有须要的朋友请自行Google。

二、 LinuxCPUfreq机制

用户场景不同。对性能的需求也不同。CPU应该执行在什么频率?频率低了会卡,高了费电。假设有突发事件,怎样升频降频既保证系统流畅又只是多消耗能量?下面是软件系统框架。后面会具体解说。

三、 LinuxCPUIdle机制

假设负载很轻。系统能够进入更低的Pstate(比方LP0/SC7),关闭CPU。Memory,外设以降低功耗。怎样实现?系统怎样唤醒?下面是软件系统框架,后面会具体解说。

四、 DVFS动态电压频率调节

这个大家应该不陌生,这是一种实时电压频率调节技术,因为CMOS制成的需求,CPU想稳定的跑到更高的频率须要更高的电压,而这个电压又跟芯片的Speedo和Iddq以及温度相关,怎样确定?下面是软件系统框架,后面会具体解说。

当然,因为功耗需求越来越高,优化技术也越来越复杂。各个厂商都有一些各自独到的技术。假设有兴趣也欢迎读者朋友留言丰富内容。或者发邮件给我讨论:terrywang0712@qq.com,谢谢。

本篇文章为移动设备功耗优化的概述部分,接下来将会深入分析各个部分的原理和实践。敬请关注!

      嵌入式企鹅圈原创团队由阿里、魅族、nvidia、龙芯、炬力、拓尔思等资深project师组成。百分百原创,每周两篇。分享嵌入式、Linux、物联网、GPU、Android、自己主动驾驶等技术。

      欢迎扫码关注微信公众号:嵌入式企鹅圈。实时推送原创文章!

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="border: none; max-width: 100%;" />

移动智能设备功耗优化系列--前言(NVIDIA资深project师分享)的更多相关文章

  1. 推荐:Java性能优化系列集锦

    Java性能问题一直困扰着广大程序员,由于平台复杂性,要定位问题,找出其根源确实很难.随着10多年Java平台的改进以及新出现的多核多处理器,Java软件的性能和扩展性已经今非昔比了.现代JVM持续演 ...

  2. Mysql优化系列之查询性能优化前篇1

    前言 这是优化系列的最后一篇的第1小篇,我们其实可以直接从sql怎么写讲起,why not?但是我还是决定花2个篇幅 问一些问题,带着几个问题循序渐进的往下走. 一个sql语句是怎么被执行的? sql ...

  3. [MySQL性能优化系列]提高缓存命中率

    1. 背景 通常情况下,能用一条sql语句完成的查询,我们尽量不用多次查询完成.因为,查询次数越多,通信开销越大.但是,分多次查询,有可能提高缓存命中率.到底使用一个复合查询还是多个独立查询,需要根据 ...

  4. [MySQL性能优化系列]巧用索引

    1. 普通青年的索引使用方式 假设我们有一个用户表 tb_user,内容如下: name age sex jack 22 男 rose 21 女 tom 20 男 ... ... ... 执行SQL语 ...

  5. Expert 诊断优化系列------------------内存不够用么?

    现在很多用户被数据库的慢的问题所困扰,又苦于花钱请一个专业的DBA成本太高.软件维护人员对数据库的了解又不是那么深入,所以导致问题迟迟不能解决,或只能暂时解决不能得到根治.开发人员解决数据问题基本又是 ...

  6. Expert 诊断优化系列------------------冤枉磁盘了

    现在很多用户被数据库的慢的问题所困扰,又苦于花钱请一个专业的DBA成本太高.软件维护人员对数据库的了解又不是那么深入,所以导致问题迟迟不能解决,或只能暂时解决不能得到根治.开发人员解决数据问题基本又是 ...

  7. Expert 诊断优化系列------------------语句调优三板斧

    前面三篇通过CPU.内存.磁盘三巨头,讲述了如何透过现在看本质,怎样定位服务器三巨头反映出的问题.为了方便阅读给出链接: SQL SERVER全面优化-------Expert for SQL Ser ...

  8. Expert 诊断优化系列------------------透过等待看系统

    上一篇我们简单的介绍了,语句优化的三板斧,大部分语句三板斧过后,就算不成为法拉利也能是个宝马了.为了方便阅读给出系列文章的导读链接: SQL SERVER全面优化-------Expert for S ...

  9. Expert 诊断优化系列------------------给TempDB 降温

    前面文章针对CPU.内存.磁盘.语句.等待讲述了SQL SERVER的一些基本的问题诊断与调优方式.为了方便阅读给出导读文章链接方便阅读: SQL SERVER全面优化-------Expert fo ...

随机推荐

  1. cocos2d-x win7 部署

    1. 安装 下载python  https://www.python.org/downloads/release/python-279/ 2.从官网下载cocos2d-x  http://www.co ...

  2. FCC 基础JavaScript 练习7

    1. Math.random()用来生成一个在0(包括0)到1(不包括1)之间的随机小数,因此Math.random()可能返回0但绝不会返回1. 提示随后的函数都会在return执行前调用,所以我们 ...

  3. 在Redux中使用插件createAction之后

    我们知道在React的Redux的中的action在项目开发过程中,一般时使用createAction来生成 举个栗子,小李子: const createTodo=createACtion('CREA ...

  4. ORA-01033:ORACLE initialization or shutdown in process

    Oracle遇到问题 :在PL/SQL当输入用户名和密码后 竟然出现标题上错误,我一项目数据库数据库全都没有备份,还有很多很多数据,该不会让我重装数据库吧,想到这个我汗那个流啊. 在网上查了下 看了看 ...

  5. WinRT ListView间隔变色(二)

    上文说到,WinRt中,我们不能在Style的Setter使用Binding.这个问题其实从SL5之前,一直都不可以.但是,为了使用强大的Binding,人们也一直想使用各种方法来达到Binding ...

  6. 你的宽带ip地址被100.64了吗?

    你的宽带ip地址被100.64了吗?   最近需要用外网的时候发现,宿舍路由wan口的ip变成了100.64.X.X,本以为是一个外网的ip,可事实上并不是,并且从外网无法直接访问.   首先,我们都 ...

  7. PHPStorm+XDebug进行调试

    笔者的开发环境如下: Windows8.1+Apache+PhpStorm+XDebug+Firefox(XDebug helper 1.4.3插件). 一.XDebug安装配置 (1)下载XDebu ...

  8. 使用CAShapeLayer的path属性与UIBezierPath画出扫描框

    1.CAShapeLayer CAShapeLayer具有path属性,(是CGPath对象),可以使用这个属性与UIBezierPath画出想要的图形.该子类根据其fill color和stroke ...

  9. 在CorelDRAW中的自定义彩虹笔刷创建迷幻背景

    在60年代的艺术形式中,迷幻艺术对设计和图形艺术的影响尤为重要.在下面这个CorelDRAW教程中我们主要使用图形纸工具和艺术笔工具创建一个迷幻风格的背景,在这之前我们需要先创建出一个彩虹笔刷. 1. ...

  10. 观察者模式在Foundation框架通知中的应用

    GitHub传送门 1.何为观察者模式? 观察者设计模式定义了对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新. 举个简单的例子:你和你的舍友都订阅了 ...