本文是嵌入式企鹅圈原创团队成员、NVIDIA资深开发工程师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、龙芯、炬力、拓尔思等资深工程师组成。百分百原创,每周两篇,分享嵌入式、Linux、物联网、GPU、Android、自动驾驶等技术。欢迎扫码关注微信公众号:嵌入式企鹅圈,实时推送原创文章!
共同学习,写下你的评论
评论加载中...
作者其他优质文章