动态降低cpu功耗的方法

文档序号:6563726阅读:346来源:国知局
专利名称:动态降低cpu功耗的方法
技术领域
本发明涉及CPU,特别涉及降低CPU功耗的方法。
背景技术
出于节约能源的目的,在嵌入式系统的应用领域,特别是嵌入式系统应用到通信的领域, 各个厂家对产品的功耗越来越关注,都在想方设法降低产品的功耗。现在很多电子设备在使 用过程中的大部分时间都处于待机状态,例如手机、便携式计算机等, 一般都会处于待机状
态,如果能让设备在待机情况下的功耗减少,那将节约很大一部分能源,而台式机由于CPU 功耗比较大,若可以降低CPU不繁忙时的功耗一样可以节约很多能源,所以如何使设备能够
在业务不繁忙的情况下能够以较低的功耗来运行是目前面临的一个问题。
目前,在嵌入式设备中,当CPU在较高的指令运行速度下运行的时候,CPU的功耗就比 较大,CPU基本是在满负荷的状态下运行,通过降低CPU的指令运行速度,就可以降低CPU 的功耗。目前各类CPU都提供了降低CPU指令执行速度的方法,例如使CPU处于休眠状态,
但在移动通信领域,所用服务器系统的设计要求设备能随时快速响应用户的业务需求,所以
即使在晚上没有用户业务的情况下,CPU也不能运行在休眠等低功耗模式下,只能保持在跟
白天业务繁忙时候一样的状态下运行,准备随时响应用户的业务需求,所以这些方法在移动
通信领域一般没有被采用。另外,由于CPU的芯片设计方面的原因,CPU长时间在高功耗下 运行对CPU的可靠性和使用寿命有较大的降低,从而增加设备提供商的维护成本并降低设备
的使用寿命。所以我们现在面临的另外一个问题是如何在不影响业务需求的情况下,能够使
CPU在尽量长的时间内运行在低功耗模式下。

发明内容
为克服上述缺陷,本发明的目的在于提供一种能在业务较少的情况下降低CPU功耗,且 不影响业务需求的动态降低CPU功耗的方法。
为达到上述发明目的,本发明动态降低CPU功耗的方法包括-
(1) 在CPU占有率低于下限值时降低CPU的指令运行速度;
(2) 在CPU占有率高于上限值时提高CPU的指令运行速度。
其中,所述的步骤(1)具体为
(11) 计算CPU占有率基准;
(12) 利用计算出的CPU占有率基准计算CPU占有率;
(13) 判断CPU占有率是否低于下限值,若CPU占有率低于下限值,执行步骤(14);若
CPU占有率不低于下限值,返回执行步骤(12);
(14) 降低CPU的指令运行速度。 其中,所述的步骤(2)具体为
(21) 重新计算cra占有率基准;
(22) 利用重新计算出的CPU占有率基准计算CPU占有率;
(23) 判断CPU占有率是否高于上限值,若CPU占有率高于上限值,执行步骤(24);若 CPU占有率不高于上限值,返回执行步骤(22);
(24) 提高CPU的指令运行速度;
(25) 返回执行步骤(1)。
其中,所述步骤(14)具体为关闭数据高速缓存器接口和指令高速缓存器接口,增加 处理器内核和高速缓存器之间的读写时延。
其中,所述步骤(24)具体为打开数据高速缓存器接口和指令高速缓存器接口,减小 处理器内核和高速缓存器之间的读写时延。
其中,所述的CPU占有率上限值和下限值由系统设定。
由上述技术方案中所描述的动态降低CPU功耗的方法周期性地计算CPU占有率,并在CPU 占有率低于下限值时修改CPU的运行配置以达到降低CPU的指令运行速度,而当CPU占有率 高于上限值时恢复CPU的运行配置以达到恢复CPU的指令运行速度。通过这种动态调整CPU 的指令执行速度的方法,可以使CPU的空闲的时候处于低功耗的模式下运行,而绝大部分的 移动通信基站的单板有50%时间处于空闲状态,在不影响系统性能和应用的情况下,通过降 低CPU的指令执行速度使这些基站的单板处于低功耗模式下运行可以节约很多能源,另外, CPU的功耗降低之后,CPU散热会明显下降,防止CPU长期处在高温环境向运行,从而提高 CPU的使用寿命。


图1为移动通信领域的嵌入式CPU系统的最简架构图2为本发明动态降低CPU功耗的方法的原理图3为本发明动态降低CPU功耗的方法在通信单板CPU上的具体实施流程图。
具体实施例方式
如图1所示为移动通信领域的嵌入式CPU系统的最简架构图,移动通信领域嵌入式CPU 系统最少包含处理器内核,高速缓存器(cache)和随机存储器(RAM)等部分,其中高速缓 存器为处理器内核跟外设之间接口的高速缓存,RAM是CPU系统中用来存放程序指令或者数 据的易失性存储器。
处理器内核跟Cache之间的接口是高速接口 ,处理器内核和Cache分别跟外部RAM都有 接口,但都是较低速的接口,其中处理器内核和外部RAM之间的低速接口的形成方式为当 Cache关闭的时候相当於一个通道,把处理器内核和外部RAM直接连接起来了;当Cache打 开的时候,它是一个高速缓存,从外部RAM读取指令或者数据到Cache中缓存起来,供CPU 直接取用。CPU在高速运行过程中需要从外部RAM把指令和数据搬到Cache中,通过处理器 内核访问Cache以达到指令和数据的高速运行。
为了降低CPU功耗,但又不影响CPU的正常业务需求,本发明动态降低CPU功耗的方法 基本思想是在CPU占有率低于下限值时降低CPU的指令运行速度;在CPU占有率高于上限 值时提高CPU的指令运行速度。
上述思想可以通过以下操作来实现在CPU的业务处理比较少的情况下,比如晚上,通 过关闭,让处理器内核通过与外部的RAM低速接口进行通信,可以实现降低CPU指令运行速 度,从而降低CPU的功耗;当CPU的业务处理较多时,可以通过打开Cache或者提高处理器 内核跟Cache之间的接口速率,使得CPU的指令运行速率加快,以满足业务处理的需求。其 中CPU业务处理的多少一般通过CPU的占有率来表示,CPU占有率越高,CPU业务处理的就越 多。CPU占有率的解释如下CP(J在指令运行过程中有些时候是处理系统业务需求,有些时候 是处于Idle状态(空闲状态),等待处理系统业务,我们统计一个固定时间内CPU处理系统 业务需求时间占固定统计时间的比例,就称为CPU占有率。
本发明通过计算软件的CPU占有率在CPU的占有率低于一定门限值的情况下,降低CPU 的运行速度,重新计算CPU的占有率,在新的CPU占有率高于一定的门限值的情况下,提高 CPU的运行速度,达到动态调整CPU的指令运行速度的目的,从而实现降低CPU功耗。
如图2所示,本发明动态降低CPU功耗的方法流程如下
第一步系统加电启动后CPU正常运行,运行该硬件所使用的操作系统;
第二步计算CPU占有率基准,CPU占有率基准是指在CPU不处理业务功能的时候,也
就是CPU处于空闲状态,执行某个固定函数的时间,用1秒除以这个时间就得出CPU占有率
的基准,也就是说CPU占有率基站的单位为次/秒;
第三步利用CPU占有率基准动态周期性计算CPU占有率,当CPU占有率低于下限值A 的时候,保存CPU的当前运行配置,并修改CPU的运行配置,该修改后CPU的运行配置必须
能够降低CPU的指令运行速度;
第四步重新计算CP(J占有率的基准,利用第二步中的方法计算CPU占有率的基准;
第五步利用重新计算的CPU占有率基准动态周期性计算和检测CPU占有率情况,当CPU 占有率高于上限值B的时候,恢复在第三步保存的CPU运行配置,从而恢复CPU的指令运行 速度;其实在实际操作的时候可以将CPU的运行配置再次进行修改,不过这个修改需要朝加 快CPU的指令运行速度的方向调整;
第六步返回第二步执行,以保证该方法能够多次改变CPU的指令运行速度。 通过执行上述流程,可以根据CPU的忙闲状态来调整CPU的指令运行速度,从而使得CPU 能够有一部分时间处于低速率运行状态,达到降低功耗的效果,并延长CPU的使用寿命。
在上述的流程的第三歩中,可以调整为当CPU的占有率连续超过一个预设的次数都低于下限值A的时候,保存CPU的当前运行配置,并修改CPU的运行配置。这里修改CPU运行 配置的要求和原来的第三步的修改要求一样,即必须能够降低CPU的指令运行速度。这样可 以避免因为CPU —次偶然的占有率降低而改变了 CPU的指令执行速度,导致CPU需要多次频 繁地改变运行配置,反而增加了CPU的工作量,增加CPU的功耗。
在上述流程第五步中,也可以按照第三步那样在一定次数以后再去调整CPU的运行配置, 但一般情况下不建议这样执行,主要是防止由于过长时间的CPU占有率太高导致业务处理的
速度减低,影响业务需求,有可能出现更坏的情况就是死机。
下面通过介绍本发明动态降低CPU功耗的方法在某移动通讯基站中通信单板的PPC755 CPU上应用的具体实现过程。
该通信单板采用的CPU为Freescale(飞思卡尔半导体公司)生产的型号为PPC755的CPU
或者IBM(国际商业机器公司)生产的型号为750的CPU(下面描述的PPC755指的这两款CPU),
这块单板主要是处理跟语音呼叫相关的软件实现,随着在线呼叫用户数目的增加,CPU占有
率也相应的增加。但是在比较偏远地区的基站中,每年有超过99%的时间PPC755的CPU占
有率低于10%,在业务繁忙的都市及其周边地区,晚上12点到凌晨7点这段时间,PPC755 的CPU占有率也低于10%。
在这个实施例中,我们将CPU占有率的下限值A定为10%,将CPU占有率的上限值B定 为80%,而将计算CPU占有率的周期定为2秒。在单板上电运行后,计算PPC755的CPU占有 率基准值,每2秒钟计算一次CPU占有率,如果发现CPU占有率连续30次(也就是60秒, 这是为了确保CPU是长期处于空闲状态,防止一些偶尔出现较低CPU占有率改变CPU的指令 运行速度)小于10%,关闭PPC755的数据Cache和指令Cache,,增加处理器内核和Cache 之间的读写时延15个时钟(clock),可以通过增大ICTC (指令缓存节流控制寄存器)寄存 器的设置值实现读写时延的增加。ICTC寄存器是32bit的寄存器(bit0 bit31),此寄存器 的bit23 bit31共9bit的值是有效的,其中bit23 bit30共8bit表示CPU运行过程中每 次取指令前等待的时间间隔(也就是读写时延),最小是0,最大是每次取指令前先等待255 个时钟周期,Bit31表示bit23 bit30的设置是否有效。重新计算CPU占有率的基站值,每 两秒钟计算一次CPU占有率,如果发现CPU占有率一旦大于80%,打开数据Cache和指令 Cache,同样通过设置ICTC寄存器来减少处理器内核和Cache之间的读写时延15个clock。
该具体实施例的操作步骤如图3所示。
首先该系统设定好CPU占有率的上限值和下限值,然后进入如下的控制步骤
101、 PPC755 CPU加电后Vxworks操作系统正常运行;
102、 在软件进入usrAppInit函数后计算PPC755上CPU占有率基准,该CPU占有率基准 是指在CPU不处理业务功能的时候(也就是CPU处于空闲状态),执行某个固定函数(比如是 函数A)的时间,用1秒除以这个时间就得出CPU占有率的基准,也就是说CPU占有率基站 的单位为次/秒,假设这个基准时间是X;
103、 监控器(Monitor)每2秒钟检测和计算一次CPU占有率,具体方法为在CPU正常 处理业务过程中, 一旦CPU空闲下来就执行函数A,通过统计连续的单位时间比如2秒钟内 函数A的执行次数(假如是Y), Y除以X在乘以100^就是CPU占有率;
104、 监控器判断CPU占有率是否连续30次低于10%的时候,若CPU占有率连续30次 低于10%,执行步骤105;若CPU占有率不是连续30次低于10W,返回执行步骤103;
105、 保存CPU现在的运行配置,然后关闭数据Cache和指令Cache,设置ICTC寄存器, 增加处理器内核跟Cache之间的读写15个clock的延时;此处的保存CPU现在的运行配置主 要是保存数据cache和指令cache的状态,ICTC寄存器的设置,以及处理器内核跟Cache之 间的读写延时;106、 重新计算PPC755上CPU占有率的基准,方法步骤和步骤102中一样;107、 监控器(Monitor)每两秒钟检测并计算一次CPU占有率,利用106步骤中计算出 的CPU占有率基准和步骤103种的方法计算CPU占有率;108、 监控器判断CPU占有率是否高于80%,若CPU占有率高于80%,执行步骤109; 若CPU占有率不高于80% ,返回执行步骤107;109、 恢复CPU先前保存的运行配置,即打开数据Cache和指令Cache,重新设置ICTC 寄存器,将ICTC寄存器的值恢复到在步骤105中保存的状态,减小处理器内核跟Cache之间 的读写15个clock的延时;110、 返回执行步骤102。本实施例在CPU占有率连续30次低于下限值10%时,修改CPU的运行配置以达到降低CPU 的指令运行速度,而当CPU占有率高于上限值80%时恢复CPU的运行配置以达到恢复CPU的 指令运行速度。通过这种控制CPU的指令运行速度方法可以有效地降低CPU的功耗,特别是 在一些长期处于空闲状态的CPU运用中,可以节约大量的能源,并且CPU的功耗降低之后, CPU散热会明显下降,防止CPU长期处在高温环境向运行,从而提高CPU的使用寿命。其中 所用的降低CPU的指令运行速度的方法为关闭数据Cache和指令Cache,设置ICTC寄存器, 增加处理器内核跟Cache之间的读写15个clock的延时。
权利要求
1、一种动态降低CPU功耗的方法,其特征在于包括如下步骤(1)在CPU占有率低于下限值时降低CPU的指令运行速度;(2)在CPU占有率高于上限值时提高CPU的指令运行速度。
2、 按照权利要求1所述的动态降低CPU功耗的方法,其特征在于所述的步骤(1)具 体为(11) 计算CPU占有率;(12) 判断CPU占有率是否低于下限值,若CPU占有率低于下限值,执行步骤(13);若CPU占有率不低于下限值,返回执行步骤(11);(13) 降低CPU的指令运行速度。
3、 按照权利要求2所述的动态降低CPU功耗的方法,其特征在于所述的步骤(2)具体为-(21) 重新计算CPU占有率;(22) 判断CPU占有率是否高于上限值,若CPU占有率高于上限值,执行步骤(23);若CPU占有率不高于上限值,返回执行歩骤(21);(23) 提高CPU的指令运行速度;(24) 返回执行步骤(11)。
4、 按照权利要求2所述的动态降低CPU功耗的方法,其特征在于所述步骤(13)具体为关闭数据高速缓存器接口和指令高速缓存器接口,增加处理器内核和高速缓存器之间的读写时延。
5、 按照权利要求3所述的动态降低CPU功耗的方法,其特征在于所述步骤(23)具体为打开数据高速缓存器接口和指令高速缓存器接口,减小处理器内核和高速缓存器之间的 读写时延。
6、 按照权利要求2或3所述的动态降低CPU功耗的方法,其特征在于所述的CPU占有 率上限值和下限值由系统设定。
全文摘要
本发明公开了一种动态降低CPU功耗的方法,为解决现有技术中不能根据CPU的业务处理量来调整CPU功耗的问题而发明。该动态降低CPU功耗的方法依据CPU占有率动态调整CPU的指令运行速度。在CPU运行过程中,如果CPU的占有率低于设定的下限值就将CPU的指令运行速度降低,如果CPU的占有率高于设定的上限值就将CPU的指令运行速度提高,其中CPU的指令运行速度的调整主要通过开关数据高速缓存器接口和指令高速存器接口,以及改变传输时延来实现的。本发明主要用于嵌入式系统的CPU设计,特别是运用在通信领域的基站单板的CPU设计中。
文档编号G06F1/32GK101162405SQ200610162110
公开日2008年4月16日 申请日期2006年12月5日 优先权日2006年12月5日
发明者赵少伟, 邹同亮 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1