网站首页  词典首页

请输入您要查询的论文:

 

标题 Linux中CPU的低能耗管理技术分析
范文

    

    摘 要:Linux是一个优秀的开源操作系统,广泛应用于各类计算设备,如基于X86处理器的台式机和笔记本电脑、基于ARM处理器的智能手机以及各类嵌入式系统。Android系统作为智能手机中市场占有率最大的手机操作系统,其内核使用的是Linux。智能手机依靠锂电池供电,一次充电后可供使用的电能有限,因此需要在满足良好用户体验前提下尽可能地节省电能的使用。智能手机有众多的硬件部件,CPU是消耗电能的大户。本文简要分析了Linux中的CPU的以降低电能使用量为目标的能耗管理技术。

    关键词:Linux;Android;处理器;能耗

    基金项目:四川省软科学研究计划项目资助(项目编号:2019JDR0042)。

    1 引言

    根据全球领先的信息技术研究和顾问公司Gartner发布的数据,2017年第一至四季度智能手机的销售量分别为3.8亿台、3.662亿台、3.83亿台和4.08亿台,全年的总销售量达到了15.372亿台。根据美国加州大学圣地亚哥分校GreenDroid项目组2009年的调研报告,当时上市销售的基于Android 2.2的HTC G7智能手机标配电池是1400mAh,處理器使用的是高通公司的骁龙QSD8250,主频只有1GHz,正常使用时平均功率为0.6W,可连续工作8.63h,基本上需要一天一充;空闲时平均功率为0.05W,可正常待机103.6h,大约为4.32天。若按此耗电量计算,全年新销售的智能手机每天需要消耗的电能是79.62696亿瓦时,即7900000度电。这还不包括在每天在充电过程中由220 伏交流电转换为5伏直流电的过程中的电能损失。2020年上市销售的小米10手机,处理器使用的是高通公司的骁龙865,内置的电池容量高达4780mAh,是HTC G7手机电池容易的3.4倍。手机的平均更换周期为12个月,考虑到未来移动互联网的快速发展和广泛应用,预计到2020年,90%以上的手机都将是智能手机,如果不加以改进的话,智能手机等智能嵌入式系统将占ICT 行业总电能消耗的25%以上。

    此外,智能手机电池管理对用户使用体验影响很大。Alex Shye等研究人员通过一个持续6个月、涉及25个用户的研究发现,电池管理是用户体验的一个重要组成部分,包括几乎是每天一充以及频繁的低电量指示。对于外出工作或旅游的人,通常会携带体积较大的充电宝来临时解决低电量的窘境,极大影响了手机使用的体验。

    软件肆无忌惮地使用CPU计算资源的日子将终结,软件需要以尽可能节能的方式使用计算资源,否则会带来高能耗的后果。1965年,戈登·摩尔(Gordon Moore)提出摩尔定律,同时也指出“集成电路特征尺寸的缩小,使得在相同的功耗密度下,芯片能更高速地运行”。大约10年后,这个创新途径被IBM的罗伯特·登纳德(Robert Dennard)归纳为“登纳德按比例缩小定律”,从而开创了以指数方式降低器件工作电压和提高时钟频率的可能性。但是登纳德按比例缩小定律在2004年失效,导致CMOS(互补金属氧化物半导体)逻辑系统出现功耗-频率危机。

    因此,有效地使用CPU的计算能力进而提高电池电量的使用的有效性变得越来越重要。Linux内核提供了一些技术手段来实现这一目的。

    2 CPU的能耗管理技术与Linux内核的支持

    1997年由Intel等公司共同制定了ACPI(Advanced Configuration Power Interface)规范,它的主要目标是使整个计算机系统能够动态地管理电源。ACPI定义了计算机系统的全局状态、设备电源状态和处理器电源状态。计算机系统的全局状态为G0,G1,G2,G3,其中睡眠状态G1又细分为S1到S4共4种状态。设备状态D0,D1,D2,D3是与设备相关的状态,对用户来说往往是不可见的。其中D0是工作状态,D1,D2是中间状态,D3是关闭状态。处理器电源状态C0到Cn是指在全局状态G0下(只对G0状态有效)处理器的状态,只有C0状态下CPU才会执行指令,C1到Cn状态下CPU都处于各种不同程度的睡眠状态。处理器性能状态(即Px状态)是在C0状态下定义的电源消耗和性能的状态。当处理器在运行时,它可以处于P状态中的一个状态中。每一个P状态指明一个特定的DVFS设置组合。P状态与实现有关,但P0始终是最高性能状态,而P1到Pn是连续的较低运行性能的状态,直到实现所指定的限制。

    在Linux中,CPU处于C0状态时,若当前没有就绪进程可供调度执行,则任务调度器会调度空闲任务来执行。CPU在运行状态时,可以根据需要使用CPU支持的DVFS技术设置到不同的运行频率,即不同的P状态。在Linux中,空闲任务是由cpuidle模块负责的,而频率的调节工作是由cpufreq模块负责的。下文以ZTE Blade V880智能手机所使用的2.6.35版本的Linux内核为例,分析这两个模块。

    1)cpuidle。cpuidle是一个通用的内核基础设施,用于分隔开空闲策略(governors)与空闲机制(drivers),并提供一个标准化的基础设施来支持governors和drivers的独立开发。cpuidle的总体架构如图1所示。cpuidle core负责实现cpuidle的整体框架。cpuidle drivers负责idle机制的实现,不同的硬件平台及CPU会使用不同的cpuidle驱动程序。不同的空闲机制会带来不同的能耗效果以及不同的空闲状态退出延迟,通常高能耗的空闲状态退出延迟较低,而低能耗的空闲状态退出延迟较高,这将可能导致用户体验的不同。

    空闲进程程序的主函数是cpu_idle(),它主要工作是间接调用msm_pm_swfi()将CPU设置“等待中断”低能耗状态,直至接收到一个中断或调试请求。

    2)cpufreq。当CPU在运行时,选择一个合适而不是过高的频率可以需要满足性能需求又可以降低电能消耗。与cpuidle的结构类似,cpufreq也由core部分,governors部分与drivers部分组成。drivers部分与硬件平台相关,使用CPU支持的DVFS技术进行CPU频率动态设置。governors提供CPU频率的选定策略,即使用何种算法来确定合适的CPU频率。core部分协调governors与drivers。在cpufreq中,将CPU执行频率的上下界和使用的governor一起称为policy。driver部分的注册由cpufreq_register_driver()在驱动程序加载时完成。governor是可以选择的,可以编写自己的governor。在drivers\cpufreq\makefile编译文件配置需要编译到内核的governors。内核中常见的governor有: Performance,Powersave,Userspace,Ondemand和Conservative。Performance总是将CPU频率设置在最高可用频率上,以达到最高性能,而与之相反,Powersave总是将频率设置在最低频率,以达到最低的能耗。Userspace通过sys提供接口供运行在用户空间中的应用程序直接设置CPU的运行频率,为应用程序使用自己的频率设置算法提供了支持。Ondemand和Conservative在确定CPU频率时都依据定时检测的CPU利用率。前者在检查到利用率超过预设的临界值时,将设置CPU运行在最高频率上,否则设置CPU为当前频率的下一个更低频率;后者在检查到利用率超过预设的较高临界值时,将设置CPU运行在当前频率的下一个更高频率上,而不是直接设置到最高频率。一些定制的内核还会包括其它的governors,如Interactive、SmartassV2等。

    3 结语

    Android系统使用的是Linux内核。智能手机依靠锂电池供电,一次充电后可供使用的电能有限,因此需要在满足良好用户体验前提下尽可能地节省电能的使用。智能手机有众多的硬件部件,CPU是消耗电能的大户。Linux中CPU的能耗管理技术,主要是通过cpuidle和cpufreq来实现的,前者解决在CPU空闲时设置CPU到何种低能耗状态,后者解决的是CPU在执行非空闲任务时CPU应设置到何种频率,以能满足用户需求同时能以最低能耗为代价。

    参考文献

    [1]Linux cpuidle framework(1)_概述和软件架构[OL].http://www.wowotech.net/pm_subsystem/cpuidle_overview.html,2020-05-31.

    [2]林锦标.Android移动终端的电源管理策略的研究与实现[D].广州:华南理工大学[硕士论文],2015.6.

    作者简介

    刘云本(1981-),男,汉族,湖北大冶人,讲师,硕士学位,研究方向:绿色计算。

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2024/12/22 16:15:53