CN104102321B - 降低cpu能耗的方法 - Google Patents
降低cpu能耗的方法 Download PDFInfo
- Publication number
- CN104102321B CN104102321B CN201310117827.6A CN201310117827A CN104102321B CN 104102321 B CN104102321 B CN 104102321B CN 201310117827 A CN201310117827 A CN 201310117827A CN 104102321 B CN104102321 B CN 104102321B
- Authority
- CN
- China
- Prior art keywords
- cpu
- interrupt
- report
- external interrupt
- external
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Power Sources (AREA)
Abstract
本申请公开了一种降低CPU能耗的方法。包括如下步骤:第1步,CPU配置中断控制器,将所有外部中断源都配置为禁止报告。第2步,CPU开启定时器的计时。此时,中断控制器仍正常接收外部中断,但停止向CPU报告。第3步,当定时器的定时周期到达,CPU配置中断控制器,将所有外部中断源都配置为允许报告。此时,中断控制器将这一段时间的所有已经发生的外部中断报告给CPU;待CPU处理完毕后,回到第1步。本申请还可根据外部中断的类型选择性地配置禁止报告和允许报告的外部中断源。由此,本申请可使CPU延长睡眠时间,并有利于CPU进入较深的睡眠模式,从而达到降低能耗的目的。
Description
技术领域
本申请涉及一种计算机、平板电脑、手机等智能电子设备中降低CPU能耗的方法及装置。
背景技术
智能电子设备中的CPU或处于运行状态,或处于睡眠状态。CPU的睡眠状态通常分为由浅到深的多种睡眠模式,睡眠模式越深,功耗越低,但同时唤醒的代价(苏醒时间、功耗)也越大。当操作系统发现当前无事可做、准备将CPU置于睡眠状态时,会权衡各种因素,将CPU置于合适的睡眠模式。
各种CPU的睡眠模式在数量和含义上有所区别,但原理大体相同。以德州仪器(TI)公司的OMAP4460芯片为例,这是一款采用了ARM Cortex A9内核的双核CPU,有四种睡眠模式C1~C4。操作系统根据预期睡眠时间来决定CPU进入哪种睡眠模式,如下表1所示:
表1OMAP4460芯片的四种睡眠模式
谷歌Galaxy Nexus手机的CPU正是OMAP4460芯片,该款手机除显示屏以外的整体功耗为:运行状态下1W;C1睡眠模式下0.62W;C2睡眠模式下0.15W;C3睡眠模式下0.12W;C4睡眠模式下0.08W。显然,如果能在保证系统性能的同时延长CPU处于睡眠状态的时间、或者将CPU的睡眠模式由浅变深,就能够显著降低能耗。
在智能电子设备中,操作系统通常将中断分为硬件中断和软件中断两大类,其中的硬件中断又分为外部中断和内部中断两小类。所述外部中断是由指外部设备(即除CPU和内存以外的硬件设备)发出的中断请求。外部中断由中断控制器负责报告给CPU,目前广泛使用的是可编程中断控制器(PIC,Programmable Interrupt Controller)。早期的中断控制器是与CPU独立封装的一块硬件芯片,如今通常与CPU集成在一个封装内。
请参阅图1,这是一种现有的中断控制器。其一方面连接多个外部设备,接收它们所发出的外部中断;另一方面连接CPU,向CPU报告外部中断,即向CPU发出中断信号。在中断控制器内,对每一个外部中断源(即外部设备)都有一个中断禁止位(disable bit)。目前通用的中断控制器完全由CPU控制,CPU可以配置各个中断禁止位,从而让中断控制器禁止报告某些外部中断。通常情况下,中断控制器在收到外部中断后,如果来自于未被禁止报告的外部中断源就立即将该外部中断报告给CPU,如果来自于被禁止报告的外部中断源则不将该外部中断报告给CPU。如果多个未被禁止报告的外部中断同时发生,中断控制器会根据优先级依次报告给CPU。CPU一旦接收到外部中断,就会调用相应的中断处理函数进行处理。
请参阅图2,外部中断在时间上并无规律,中断控制器采用的实时报告机制并不考虑CPU是处于运行状态还是睡眠状态。处于睡眠状态的CPU一旦接收到中断信号,就会被唤醒为运行状态。各种外部中断使得CPU的睡眠时间碎片化,并使CPU难以进入深度睡眠模式。
发明内容
本申请所要解决的技术问题是通过约束外部中断的报告时机,来降低CPU能耗的方法。
为解决上述技术问题,本申请降低CPU能耗的方法包括如下步骤:
第1’步,CPU配置中断控制器,将可推迟的外部中断和连续型外部中断所对应的外部中断源配置为禁止报告,将不可推迟的外部中断所对应的外部中断源配置为允许报告;
第2’步,CPU开启定时器的计时;
此时,中断控制器正常接收外部中断,如果来自于禁止报告的外部中断源则不向CPU报告;如果来自于允许报告的外部中断源则立即报告给CPU;
第3’步,当中断控制器收到的外部中断来自于允许报告的外部中断源、或者定时器的定时周期到达,CPU配置中断控制器,将所有外部中断源都配置为允许报告;
此时,中断控制器将该外部中断立即报告给CPU,并将这一段时间的所有已经发生的外部中断报告给CPU;待CPU处理完毕后,回到第1’步。
本申请在定时器的每个定时周期中,CPU不接收外部中断,这样CPU将延长睡眠时间,并有利于进入较深的睡眠模式,从而达到降低能耗的目的。
附图说明
图1是现有的中断控制器的结构和连接关系示意图;
图2是外部中断将CPU的睡眠时间碎片化的示意图;
图3~图5是本申请延长CPU睡眠时间的方法的三个实施例的流程图。
具体实施方式
请参阅图3,这是本申请降低CPU能耗的方法的第一实施例,包括如下步骤:
第3.1步,CPU配置中断控制器,将所有外部中断源都配置为禁止报告。
第3.2步,CPU开启定时器的计时。所述定时器可以是CPU内部的。所述定时器的定时周期可以在此时设置,也可以是默认设置好的,通常在1~500ms的范围内设置,例如设为50ms。
此时,中断控制器仍正常接收外部中断,但停止向CPU报告。
第3.3步,当定时器的定时周期到达,CPU配置中断控制器,将所有外部中断源都配置为允许报告。
此时,中断控制器将这一段时间的所有已经发生的外部中断按照优先级高低、或发生顺序的先后依次报告给CPU。待CPU处理完毕后,回到第3.1步。
该第一实施例所述方法中,CPU周期性地屏蔽中断控制器向CPU报告外部中断,那么CPU在这段时间内就可不受外部中断的打扰,这便可以延长CPU处于睡眠状态的时间,从而有利于CPU进入较深睡眠模式,达到降低CPU能耗的目的。
请参阅图4,这是本申请降低CPU能耗的方法的第二实施例,包括如下步骤:
第4.1步,CPU配置中断控制器,将可推迟的外部中断和连续型外部中断所对应的外部中断源配置为禁止报告,将不可推迟的外部中断所对应的外部中断源配置为允许报告。
第4.2步,CPU开启定时器的计时。所述定时器的溢出时间可以在此时设置,也可以是默认设置好的,通常在1~500ms的范围内设置,例如设为50ms。
此时,中断控制器正常接收外部中断后,如果来自于禁止报告的外部中断源则不向CPU报告;如果来自于允许报告的外部中断源则立即报告给CPU。
第4.3步,当中断控制器收到的外部中断来自于允许报告的外部中断源、或者定时器的定时周期到达,CPU配置中断控制器,将所有外部中断源都配置为允许报告。
此时,中断控制器将该外部中断立即报告给CPU,并将这一段时间的所有已经发生的外部中断按照优先级高低、或发生顺序的前后依次报告给CPU。待CPU处理完毕后,回到第4.1步。
在所述方法第4.1步中,涉及到判断外部中断的类型。本申请将所有外部中断分为三种类型:不可推迟的、可推迟的、连续型。例如可采用穷举法对所有外部中断进行分类,并通过多次测试得到可推迟的外部中断的最大可推迟时间。详述如下:
对每一个外部中断进行多个不同测试时间的推迟测试,测试时间优选在1~500ms的范围内选取。
如果每次推迟该外部中断都导致操作系统崩溃,则将该外部中断归类为不可推迟的,典型代表为某些与GPU(图形处理单元)相关的外部中断。
如果至少有一次推迟该外部中断并未导致操作系统崩溃、并且该外部中断相关的功能可以实现,则将该外部中断归类为可推迟的。所选取的多个测试时间中符合上述条件的最大值作为该可推迟的外部中断的最大可推迟时间。
可推迟的外部中断的典型代表为某些DMA(Direct Memory Access,直接内存存取)中断。例如某些操作系统中,背景音乐的功能是通过DMA实现的。如果推迟DMA中断,操作系统不会崩溃,但会造成背景音乐的失真和/或噪声。失真的程度与推迟时间相关,10ms以内的小的推迟,几乎不会让人感觉到失真。又如某些实现触摸屏功能的外部中断被推迟后,操作系统对触摸操作仍然能够响应,只是响应速度变慢。这些例子都被认为是相关的功能可以实现。
如果推迟该外部中断并未导致操作系统崩溃、但是该外部中断相关的功能也无法实现,则将该外部中断归类为连续型。
连续型外部中断的典型代表为I2C(Inter-Integrated Circuit)相关的一些外部中断。例如某些I2C相关的中断被推迟后,操作系统并不会崩溃,但是相关功能也并未实现。这是因为为了完成一次任务,需要产生连续的几次外部中断。在外部中断第一次出现并被处理后,在很短的时间内又会产生第二次,又被处理;再产生第三次,再处理;直到任务完成。
以谷歌的Galaxy Nexus手机和HTC的Desire手机作为硬件平台、并基于Linux操作系统所进行的实验结果表明,大多数外部中断都是可推迟的,并且推迟时间小于100ms对系统性能几乎没有影响。
以谷歌Galaxy Nexus手机为例,其外部中断的数量约在200个以内,对这些外部中断以穷举法进行上述分类和测试最大可推迟时间可以在很短的时间内完成。
在本申请的第一实施例所述方法中,CPU在定时器的定时周期内对于所有类型的外部中断不加区分地一律使中断控制器停止报告给CPU。如果遇到不可推迟的外部中断,就会导致操作系统崩溃,这是不希望发生的。而本申请的第二实施例就增加了对于不可推迟的外部中断的处理方法,但仍无法满足连续型外部中断的响应需求。
请参阅图5,这是本申请降低CPU能耗的方法的第三实施例,包括如下步骤:
第5.1步,CPU配置中断控制器,将可推迟的外部中断和连续型外部中断所对应的外部中断源配置为禁止报告,将不可推迟的外部中断所对应的外部中断源配置为允许报告。
第5.2步,CPU开启定时器的计时。所述定时器的定时周期可以在此时设置,也可以是默认设置好的,,通常在1~500ms的范围内设置,例如为50ms。
此时,中断控制器正常接收外部中断后,如果来自于禁止报告的外部中断源则不向CPU报告;如果来自于允许报告的外部中断源则立即报告给CPU。
第5.3步,当中断控制器收到的外部中断来自于允许报告的外部中断源、或者定时器的定时周期到达,CPU配置中断控制器,将所有外部中断源都配置为允许报告。
此时,中断控制器将该外部中断立即报告给CPU、并将这一段时间的所有已经发生的外部中断按照优先级高低、或发生顺序的前后依次报告给CPU,由CPU处理完毕。
第5.4步,CPU设定第一时长,在该第一时长的时间段内如果中断控制器接收到外部中断则立即报告给CPU,由CPU处理完毕,并重复第5.4步。如果在该第一时长的时间段内中断控制器没有再接收到外部中断,则回到第5.1步。所述第一时长的范围是0.5ms-4ms,例如在这里设为3ms。
该第三实施例在第二实施例的基础上又增加了对连续型的外部中断的处理方法,从而既可以处理所有的外部中断而不导致操作系统崩溃或功能无法实现,又能为CPU争取到较为充裕的睡眠时间而降低其能耗。
仍以谷歌Galaxy Nexus手机的处理器OMAP4460芯片为例,通过修改Linux操作系统的内核实现本申请的第三实施例所述方法,在Android/Linux中运行游戏水果忍者60秒。进行了测试,以原有的、该第三实施例所述方法分别记录了这段时间内CPU的总睡眠时间以及处于各种睡眠状态的时间,其结果如下表2所示。
表2原始的、本申请第三实施例所述方法比较
可以看出,本申请第三实施例所述方法延长了CPU的睡眠时间,并且深度睡眠(C4)的占比显著上升。根据各种睡眠模式下的功耗,估计本申请的第三实施例可使能耗从39.7W降至23.1W,节能约41.8%。
在前述的三个实施例中,计时器的定时周期总被设置为一个固定值。根据经验,该固定值应在1~500ms的范围内。优选地,该固定值还应≤所有可推迟的外部中断的最大可推迟时间的最小值。
然而,设置固定的定时周期存在如下缺陷:
其一,如果操作系统很长时间都没有外部中断发生,如10秒,那么CPU仍需要按照固定的定时周期进行定时器的开启、设定中断控制器中的中断禁止位等操作,增加不必要的能耗。
其二,如果操作系统频繁地发生外部中断,那么以固定的定时周期来屏蔽外部中断,将导致操作系统对外部中断的响应不及时,影响系统性能。
为此,在前述三个实施例中,计时器的定时周期还可以是可调的。如果上一个定时周期中发生外部中断的数量≤第一阈值,则接下来的定时周期变长。如果上一个定时周期中发生外部中断的数量≥第二阈值,则接下来的定时周期变短。但定时周期的取值仍应在1~500ms的范围内。
在一个具体的实施例中,第一阈值例如设为0,第二阈值例如设为1。
增加定时周期例如采用增加常量α的方式,α>0。减少定时周期例如采用乘以常量β的方式,0<β<1。这种调整方法称为AIMD(加法增加、乘法减少additive increasemultiplicative decrease),该方法以保守策略增加(加法)、以激进策略减小(乘法)。作为示例,α可取10ms,β可取0.4。除此之外,还可采用MIMD(乘法增加、乘法减少multiplicativeincrease multiplicative decrease)、AIAD(加法增加、加法减少additive increaseadditive decrease)、MIAD(乘法增加、加法减少multiplicative increase additivedecrease)等调整方法。
以上仅为本申请的优选实施例,并不用于限定本申请。对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (8)
1.一种降低CPU能耗的方法,其特征是,包括如下步骤:
第1’步,CPU配置中断控制器,将可推迟的外部中断和连续型外部中断所对应的外部中断源配置为禁止报告,将不可推迟的外部中断所对应的外部中断源配置为允许报告;
第2’步,CPU开启定时器的计时;
此时,中断控制器正常接收外部中断,如果来自于禁止报告的外部中断源则不向CPU报告;如果来自于允许报告的外部中断源则立即报告给CPU;
第3’步,当中断控制器收到的外部中断来自于允许报告的外部中断源、或者定时器的定时周期到达,CPU配置中断控制器,将所有外部中断源都配置为允许报告;
此时,中断控制器将该外部中断立即报告给CPU,并将这一段时间的所有已经发生的外部中断报告给CPU;待CPU处理完毕后,回到第1’步。
2.根据权利要求1所述的降低CPU能耗的方法,其特征是,所述方法第3’步改为:
第3”步,当中断控制器收到的外部中断来自于允许报告的外部中断源、或者定时器的定时周期到达,CPU配置中断控制器,将所有外部中断源都配置为允许报告;
此时,中断控制器将该外部中断立即报告给CPU、并将这一段时间的所有已经发生的外部中断报告给CPU,由CPU处理完毕;
第4”步,CPU设定第一时长,在该第一时长的时间段内如果中断控制器接收到外部中断则立即报告给CPU,由CPU处理完毕,并重复第4”步;如果在该第一时长的时间段内中断控制器没有再接收到外部中断,则回到第1’步。
3.根据权利要求1或2所述的降低CPU能耗的方法,其特征是,所述方法在第1’步之前还包括:将所有外部中断归类为三种类型之一:不可推迟的、可推迟的、连续型。
4.根据权利要求3所述的降低CPU能耗的方法,其特征是,所述方法在第1’步之前还包括:对于可推迟的外部中断还通过多次测试得到最大可推迟时间。
5.根据权利要求1或2所述的降低CPU能耗的方法,其特征是,所述定时周期可调;当上一个定时周期中发生外部中断的数量≤第一阈值,则接下来的定时周期变长;当上一个定时周期中发生外部中断的数量≥第二阈值,则接下来的定时周期变短。
6.根据权利要求5所述的降低CPU能耗的方法,其特征是,调整定时周期采用如下算法之一:AIMD(加法增加、乘法减少)算法、MIMD(乘法增加、乘法减少)算法、AIAD(加法增加、加法减少)算法、MIAD(乘法增加、加法减少)算法。
7.根据权利要求1或2所述的降低CPU能耗的方法,其特征是,所述定时周期的取值在1~500ms的范围内。
8.根据权利要求4所述的降低CPU能耗的方法,其特征是,所述定时周期的取值≤所有可推迟的外部中断的最大可推迟时间的最小值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310117827.6A CN104102321B (zh) | 2013-04-07 | 2013-04-07 | 降低cpu能耗的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310117827.6A CN104102321B (zh) | 2013-04-07 | 2013-04-07 | 降低cpu能耗的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104102321A CN104102321A (zh) | 2014-10-15 |
CN104102321B true CN104102321B (zh) | 2018-06-26 |
Family
ID=51670532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310117827.6A Expired - Fee Related CN104102321B (zh) | 2013-04-07 | 2013-04-07 | 降低cpu能耗的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104102321B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110007739B (zh) | 2017-12-29 | 2023-09-12 | 华为技术有限公司 | 一种噪声屏蔽电路及芯片 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7093036B2 (en) * | 2003-12-11 | 2006-08-15 | International Business Machines Corporation | Processor state aware interrupts from peripherals |
CN101639726A (zh) * | 2008-07-29 | 2010-02-03 | 辉达公司 | 基于平台的闲置时间处理 |
EP2166457A1 (en) * | 2008-09-12 | 2010-03-24 | Telefonaktiebolaget LM Ericsson (publ) | Interrupt controller and methods of operation |
-
2013
- 2013-04-07 CN CN201310117827.6A patent/CN104102321B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7093036B2 (en) * | 2003-12-11 | 2006-08-15 | International Business Machines Corporation | Processor state aware interrupts from peripherals |
CN101639726A (zh) * | 2008-07-29 | 2010-02-03 | 辉达公司 | 基于平台的闲置时间处理 |
EP2166457A1 (en) * | 2008-09-12 | 2010-03-24 | Telefonaktiebolaget LM Ericsson (publ) | Interrupt controller and methods of operation |
Also Published As
Publication number | Publication date |
---|---|
CN104102321A (zh) | 2014-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104102322B (zh) | 延长cpu睡眠时间的方法及装置 | |
US9142001B2 (en) | Performance allocation method and apparatus | |
CN105302637B (zh) | 系统进程运行异常引起卡顿的恢复方法、装置及移动终端 | |
WO2016101099A9 (en) | Techniques for power management associated with processing received packets at a network device | |
TW200745810A (en) | Method for increasing data processing capability of a computer system | |
CN103324546B (zh) | 一种延时喂狗的方法及装置 | |
WO2008078564A1 (ja) | 情報処理装置、集積回路、方法、およびプログラム | |
CN111007931B (zh) | 温度控制方法、装置、存储介质及电子设备 | |
CN102156584B (zh) | 触摸屏终端及其解决触摸屏死锁的方法 | |
CN107729216B (zh) | 应用程序管控方法、装置、存储介质及电子设备 | |
CN102597912A (zh) | 用于平台功率节省的协调设备和应用程序中断事件 | |
CN106412664B (zh) | 多媒体同步播放方法、装置、终端及系统 | |
CN106648326B (zh) | 调整熄屏时间的方法及移动终端 | |
KR20210005636A (ko) | 가속기 요청을 서비스할 때의 중앙 처리 유닛의 서비스 품질 보장 강화 | |
EP3494505A1 (en) | A mechanism for throttling untrusted interconnect agents | |
JP6746791B2 (ja) | クロックゲーティングイネーブルの生成 | |
CN104102321B (zh) | 降低cpu能耗的方法 | |
WO2022199370A1 (zh) | 护眼提示方法、装置、存储介质和计算机设备 | |
CN109992314B (zh) | 数据上报方法、装置、终端和存储介质 | |
CN116932248A (zh) | 一种基于线程和协程的事件处理方法、装置和终端设备 | |
CN108307060A (zh) | 电子设备、跌落保护方法及相关产品 | |
CN113055532B (zh) | 跌落保护方法、装置、设备及存储介质 | |
CN114898300A (zh) | 投饵方法、装置、存储介质及电子设备 | |
CN202230469U (zh) | 缓冲器及看门狗电路系统 | |
CN203894745U (zh) | 接口控制电路以及相关输入系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180626 |