CN101699368B - Cpu的自适应动态调频或调压方法及装置 - Google Patents
Cpu的自适应动态调频或调压方法及装置 Download PDFInfo
- Publication number
- CN101699368B CN101699368B CN2009102368426A CN200910236842A CN101699368B CN 101699368 B CN101699368 B CN 101699368B CN 2009102368426 A CN2009102368426 A CN 2009102368426A CN 200910236842 A CN200910236842 A CN 200910236842A CN 101699368 B CN101699368 B CN 101699368B
- Authority
- CN
- China
- Prior art keywords
- cpu
- frequency
- processes
- efficiency
- working time
- 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.)
- Withdrawn - After Issue
Links
Images
Landscapes
- Power Sources (AREA)
Abstract
本发明涉及一种CPU的自适应动态调频或调压方法及装置,所述调频方法主要包括:实时记录CPU中所有进程的运行时间;检测到CPU中只有空进程在运行时,根据所记录的运行时间,确定CPU中各个进程的频率利用率;再根据所述频率利用率中的最大值,调整CPU的工作频率。本发明CPU的自适应动态调频方法及装置有效的保证了CPU中各个进程的顺利运行,不会为CPU增加额外的运行负担,可有效提高CPU的利用率,且有利于节约CPU的系统功耗,增加CPU供给电源的使用时长。本发明可以用于存在CPU进程调度的各种操作系统中,尤以用有限电量的电源供电的嵌入式系统为佳。
Description
技术领域
本发明涉及一种嵌入式设备低功耗技术领域,尤其涉及一种用于节能的CPU的自适应动态调频或调压方法及装置。
背景技术
移动手持设备在近几年内发展迅速,已成为继个人电脑(PC,PersonalComputer)之后的又一大市场领域。目前,移动手持设备大多数由电池供电,相对于市电供电的台式机,这类设备的电源供应是有限的。尤其对于各种具有PC功能的智能手机来说,电池工作时间的长短直接决定了其性能的优劣。为了延长电池的工作时间,一种办法是利用各种存储介质,来改进电池的性能,以提高电池的比能量。但,由于各种因素的影响,电池的实际比能量总是远小于理论比能量。尽管人们付出了很大的努力,提高比能量的工作仍进展缓慢。而另一种更现实的办法就是降低系统运行的功耗,以最大化的延长电池的工作时间,而延长电池的工作时间的关键在于节省电量。
低功耗算法包括许多针对不同对象、采用不同原理的算法,但其中最典型的是针对中央处理单元(CPU,Central Processing Unit)的动态调压(DVS,Dynamic Voltage Scaling)算法。概括地说,DVS算法是操作系统层用来产生CPU的工作频率的调度方案,即利用一定的判定条件来动态调整CPU的工作频率,从而调节CPU的供给电压,以达到节能的目的。DVS算法的硬件实现中,电源电压VDD经过DC-DC转换器调整为CPU的供给电压V,由操作系统采用DVS算法实时调整CPU的工作频率,并通过调整后的工作频率来实时控制CPU的供给电压V。在DVS算法中,合理的频率调度方案能保证各个进程的实时性,同时,又能降低执行这些进程的总功耗。
目前,现有的DVS算法通过计算每个采样周期内CPU的利用率来动态调整CPU的工作频率。具体做法是,将时间划分为一个一个相同时间长度的采样周期,这些采样周期称为窗口。CPU利用率等于1减去每个窗口空进程(IDLE进程)的运行时间占总时间的比例。通过计算过去的一个或多个窗口的CPU利用率,预测下一个窗口的CPU利用率,再根据CPU利用率的预测结果实时调整CPU的工作频率。CPU利用率低,则将工作频率降低以减少功耗;反之,则将工作频率升高,以保证系统实时性的要求。最后,在预先设定的系统配置表中查找当前CPU的工作频率对应的系统性能等级,根据查找结果,通过写寄存器的方式将CPU的供给电压调整为当前CPU的工作频率所对应系统性能等级中的电压值。
现有的DVS算法的缺陷主要集中于两点:首先,上述DVS算法中利用CPU利用率实时调整CPU工作频率的方法,降低了CPU利用率,因为:根据经典的实时调度算法(RM,Rate Monotonic)可调度充分条件,要确保系统内的所有进程的实时性,必须保证30%的CPU空闲时间。也就是说,在采用上述DVS算法时,CPU的利用率不能超过70%,造成了CPU 30%的功耗浪费。其次,在上述DVS算法中,通过窗口统计CPU的利用率时,只有在窗口长度刚好和进程周期相同时,DVS算法才能达到最佳效果。如果周期长度有变化,或者同时存在几个不同周期的进程,则无法确定最佳窗口长度,从而会影响CPU的工作频率的准确确定。
发明内容
有鉴于此,本发明的主要目的在于提供一种CPU的自适应动态调频或调压方法及其装置,以解决现有DVS算法中调整CPU工作频率的方法降低CPU利用率的问题。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供一种CpU的自适应动态调频方法,所述方法包括:
实时记录CPU中所有进程的运行时间;
检测到CPU中只有空进程在运行时,根据所记录的运行时间,确定CPU中各个进程的频率利用率;
根据所述频率利用率的最大值,调整CPU的工作频率;
所述根据所记录的运行时间,确定CPU中各个进程的频率利用率,具体为:在本次调频与上次调频期间的任一进程的一个进程周期内,得到优先级不低于所述进程的所有其他进程在该进程周期内的运行时间的总和;将所得到的运行时间的总和与在所述进程周期内所记录的所有进程的运行时间总和之间的比值确定为所述进程的频率利用率;
所述根据所述频率利用率中的最大值,调整CPU的工作频率,具体为:确定CPU中所有进程的频率利用率中的最大值及CPU当前的工作频率;根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率;将CPU的工作频率调整为所述预调频率;
其中,所述根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率,为:根据所确定的CPU当前的工作频率f及所有进程的频率利用率的最大值k,根据公式f′=f*k+Δ确定CPU的预调频率f′,Δ为非负常数,取值在区间(0,f*(1-k))的范围内。
在上述方案中,所述调整CPU的工作频率之前,还包括:计算本次CPU调频与上次CPU调频之间的时间间隔;如果所计算的时间间隔不小于预设的检测阈值,则调整CPU的工作频率。
在上述方案中,所述方法还包括:在检测到进程的实时性被破坏时,或在检测到CPU中新增进程时,将CPU的工作频率调整为调频前的工作频率。
本发明还提供一种CPU的自适应动态调压方法,所述方法包括:
实时记录CPU中所有进程的运行时间;
检测CPU中只有空进程在运行时,根据所记录的运行时间,确定CPU中各个进程的频率利用率;
根据所述频率利用率的最大值,调整CPU的工作频率;
在CPU中预设的系统配置表中,查找调整后CPU的工作频率所对应的系统性能等级;
将CPU当前的供给电压调整为所查找的系统性能等级中的电压;
所述根据所记录的运行时间,确定CPU中各个进程的频率利用率,具体为:在本次调频与上次调频期间的任一进程的一个进程周期内,得到优先级不低于所述进程的所有其他进程在该进程周期内的运行时间的总和;将所得到的运行时间的总和与在所述进程周期内所记录的所有进程的运行时间总和之间的比值确定为所述进程的频率利用率;
所述根据所述频率利用率中的最大值,调整CPU的工作频率,具体为:确定CPU中所有进程的频率利用率中的最大值及CPU当前的工作频率;根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率;将CPU的工作频率调整为所述预调频率;
其中,所述根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率,为:根据所确定的CPU当前的工作频率f及所有进程的频率利用率的最大值k,根据公式f′=f*k+Δ确定CPU的预调频率f′,Δ为非负常数,取值在区间(0,f*(1-k))的范围内。
另外,本发明还提供一种CPU的自适应动态调频装置,所述装置包括:
记录单元,用于实时记录CPU中所有进程的运行时间;
检测单元,用于检测CPU中是否只有空进程在运行;
确定单元,用于在所述检测单元的检测结果为只有空进程在运行时,根据所记录的运行时间确定CPU中各个进程的频率利用率;
调频单元,用于根据所述频率利用率的最大值,调整CPU的工作频率;
所述确定单元,具体用于在本次调频与上次调频期间的任一进程的一个进程周期内,得到优先级不低于所述进程的所有其他进程在该进程周期内的运行时间的总和;将所得到的运行时间的总和与在所述进程周期内所记录的所有进程的运行时间总和之间的比值确定为所述进程的频率利用率;
所述调频单元包括:处理模块,用于确定CPU中所有进程的频率利用率中的最大值及CPU当前的工作频率;确定模块,用于根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率;调整模块,用于将CPU的工作频率调整为所述预调频率;
其中,所述确定模块确定CPU的预调频率具体为:根据所确定的CPU当前的工作频率f及所有进程的频率利用率的最大值k,根据公式f′=f*k+Δ确定CPU的预调频率f′,Δ为非负常数,取值在区间(0,f*(1-k))的范围内。
在上述方案中,所述检测单元,还用于检测CPU中的进程的实时性是否被破坏;和/或,所述检测单元还用于检测CPU中是否有新增的进程;所述调频单元还用于:在所述检测单元检测到实时性被破坏时,或检测到CPU中有新增进程时,将CPU的工作频率调整为调频前的工作频率。
在上述方案中,所述装置还包括:计算单元,用于在检测到只有空进程运行时,计算本次CPU调频与上次CPU调频之间的时间间隔;判断单元,用于判断所述计算单元得到的时间间隔是否不小于预设的检测阈值,判断结果为是时,触发所述调频单元调整CPU的工作频率。
本发明还提供了一种CPU的自适应动态调压装置,所述装置包括:
记录单元,用于实时记录CPU中所有进程的运行时间;
检测单元,用于检测CPU中是否只有空进程在运行;
确定单元,用于在所述检测单元的检测结果为只有空进程在运行时,根据所记录的运行时间确定CPU中各个进程的频率利用率;
调频单元,用于根据所述频率利用率中的最大值,调整CPU的工作频率;
查找单元,用于根据调整后的CPU的工作频率,在CPU中预设的系统配置表中查找对应的系统性能等级;
调压单元,用于将CPU当前的供给电压调整为所查找的系统性能等级中的电压;
所述确定单元,具体用于在本次调频与上次调频期间的任一进程的一个进程周期内,得到优先级不低于所述进程的所有其他进程在该进程周期内的运行时间的总和;将所得到的运行时间的总和与在所述进程周期内所记录的所有进程的运行时间总和之间的比值确定为所述进程的频率利用率;
所述调频单元包括:处理模块,用于确定CPU中所有进程的频率利用率中的最大值及CPU当前的工作频率;确定模块,用于根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率;调整模块,用于将CPU的工作频率调整为所述预调频率;
其中,所述确定模块确定CPU的预调频率具体为:根据所确定的CPU当前的工作频率f及所有进程的频率利用率的最大值k,根据公式f′=f*k+Δ确定CPU的预调频率f′,Δ为非负常数,取值在区间(0,f*(1-k))的范围内。
本发明根据CPU中各个进程的“频率利用率”动态调节CPU的工作频率,达到降低CPU功耗的目的。
在本发明中,通过在CPU的操作系统中增加一个新的数据结构来记录各个进程用于计算频率利用率的时间条件,并将计算进程的频率利用率以及对CPU动态调频的操作放在IDLE进程中来实现,使得CPU的利用率不需保证30%的空闲,从而可有效提高CPU的利用率。另外,由于受高优先级进程的影响,同一个进程在不同进程周期的频率利用率不相同,因此,一般会连续统计所有进程在其多个进程周期的频率利用率并且以其最大者为准。这样有利于减少进程周期和运行时间波动对CPU调频的影响,从而可以较为准确的确定CPU的工作频率。
本发明CPU的自适应动态调频方法及装置有效的保证了CPU中各个进程的顺利运行,不会增加额外的系统运行负担,有利于各个进程的实时性。
另外,本发明基于CPU的自适应动态调频方法及装置进行的调压,有利于节约CPU系统功耗,增加CPU中电源的使用时长。本发明可以用于存在CPU进程调度的各种操作系统中,尤以用有限电量电源供电的嵌入式系统为佳。
附图说明
图1为本发明CPU的自适应动态调频方法的方法流程图;
图2为本发明uC/OS-II操作系统中IDLE进程处理Q队列的流程图;
图3为本发明CPU的自适应动态调频装置的结构图;
图4为本发明CPU的自适应动态调压方法的方法流程图;
图5为本发明CPU的自适应动态调压装置的结构框图。
具体实施方式
下面将结合附图对本发明的具体实施方式做详细描述。
参照图1,本发明的CPU的自适应动态调频方法,主要包括以下步骤:
步骤101:CPU的操作系统实时记录CPU中所有进程的运行时间;
这里,实时记录CPU中所有进程的运行时间,具体可以为:在CPU的操作系统中,一般会为每个进程均设置一个或多个用于实时记录其运行时间的时间记录节点。
在检测到CPU中发生进程调度时,在CPU的操作系统中为旧进程插入一个时间记录节点,并把旧进程的进程号、和该进程由开始运行到发生进程调度的运行时间写入该时间记录节点中。CPU发生进程调度时旧进程将中止运行,被调度的进程将开始运行。所述中止运行是指旧进程并未完全结束运行,而只是因为需要调度其他进程,暂时性地停止运行,直至旧进程再次被调度时,将继续运行。旧进程继续运行后,直到再发生进程调度或旧进程结束,再为其插入一个时间记录节点,以记录旧进程从继续运行直到再发生进程调度或结束的运行时间。如此,便完成相应进程运行时间的记录。
如果在某一进程运行的过程中发生了中断,并且中断后仍然继续执行被中断的进程,那么会在CPU中为同一进程连续插入两个时间记录节点,分别记录进程从开始运行到中断之前的运行时间和中断后继续进行到结束的运行时间,从而避免将中断过程的时间计入进程的运行时间内。
如果处于挂起或等待状态的进程是CPU操作系统中特殊的IDLE进程,为保证能正确推算出其他各个进程的频率利用率,也会在CPU的操作系统中插入IDLE进程的时间记录节点,记录IDLE进程在开始运行到处于挂起或等待状态之间的运行时间。
步骤102:CPU的操作系统检测CPU中是否只有空进程在运行,如果是,则继续步骤103,如果否,则返回步骤101;
步骤103:根据所记录的运行时间,确定CPU中各个进程的频率利用率;
这里,频率利用率可以是在一个进程周期中,该进程和比其优先级高的进程的运行时间的总和与该进程周期内所记录的所有进程的运行时间的比值。
这里,根据所记录的运行时间,确定CPU中各个进程的频率利用率具体可以这样实现:在本次调频与上次调频期间的任一进程的一个进程周期内,得到所有优先级高于所述进程的所有进程在该进程周期内的运行时间与该进程在该进程周期内运行时间的总和;将所得到的所述进程周期内运行时间的总和与在所述进程周期内所记录的所有进程的运行时间之间的比值作为所述进程的频率利用率。
例如,对于本次调频与上次调频之间发生的任一进程Pi,在进程Pi的一个进程周期内,将优先级低于进程Pi的所有其他进程的所有时间记录节点所记录的运行时间进行累加,得到进程Pi的空闲时间总和;
同时,在所述进程周期内,将优先级不低于Pi的所有进程(包括进程Pi)的所有时间记录节点所记录的运行时间进行累加,得到进程Pi的运行时间总和;
那么,进程Pi在该进程周期内的频率利用率可由下式得到:Pi的频率利用率=Pi的运行时间总和/(Pi的运行时间总和+Pi的空闲时间总和)
步骤104:根据所述频率利用率的最大值,调整CPU的工作频率。
这里,根据所述频率利用率中的最大值,调整CPU的工作频率具体可以为:确定步骤103中所得到的CPU中所有进程的频率利用率中的最大值及CPU当前的工作频率;并,根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率;再将CPU的工作频率调整为所述预调频率。
其中,根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率可以这样实现:
在调整CPU的工作频率之前,对于CPU中任意一个进程Pi来说,可能存在一个或多个进程周期。在进程Pi的每个进程周期结束时,CPU的操作系统都会计算进程Pi的频率利用率。
因此,需要统计CPU中各个进程在其一个或多个进程周期的频率利用率,并记录各个进程取值最大的频率利用率,根据统计后各个进程的频率利用率确定其中的最大值k,及确定CPU当前的工作频率f,根据公式
f′=f*k+Δ (1)
其中,Δ为非负常数。确定CPU的预调频率f′后,再将CPU的工作频率f降低为该预调频率f′。
其中,非负常数Δ是为在一个进程P的进程周期内,运行的高优先级进程考虑的。因为,在CPU工作频率降低时,CPU中各个进程的运行时间都会延长,在实际运行中高优先级进程的运行时间可能会延至进程周期完成之后,导致用于确定预调频率的频率利用率与实际的计算结果不相符,从而影响了CPU频率调整的准确性。因此,需要在此次频率调整时,预留一定的调整余量Δ,来提高CPU频率调整的准确性。其中Δ的具体大小,可视不同的进程情况而定,但Δ的取值必须在区间(0,f*(1-k))的范围内才有意义。
如果在检测到CPU中有进程的实时性被破坏时,或在检测到CPU中有新增进程时,则直接将CPU的工作频率调整为调频前的工作频率,来保证CPU中各个进程的正常运行。在当进程的实时性被破坏,或新增进程的时候,CPU的操作系统内核会运行Quicken子程序,执行一些清空的操作,例如将得到所有进程的频率利用率等清空,并将CPU的工作频率调回调频前的工作频率f。
其中,Quicken是将这一段代码封装起来的函数的名字,也可以是任何其他有意义的名字,这样封装的目的在于可复用,增强代码可读性而已。
这里,IDLE进程是CPU操作系统中优先级最低的进程,当CPU的操作系统中没有其他进程运行时,IDLE进程就会运行。
另外,在步骤104中CPU的操作系统调整CPU的工作频率之前,还可以包括:
CPU的操作系统计算本次CPU调频与上次CPU调频之间的时间间隔;如果所计算的时间间隔不小于预设的检测阈值,则调整CPU的工作频率。
这里,检测阈值I是设定的两次调频的最小时间间隔。如果本次CPU调频与上次CPU调频之间的时间间隔小于检测阈值I,则不需要进行对CPU调频,以免频繁的调频反而给CPU增加额外的负担。
为证明本发明方案的有效性,以下将详细介绍将本发明的自适应动态调频方法应用于uC/OS-II操作系统中,对其进程调度部分进行改进的过程。
其中,uC/OS-II是一种开放源码的嵌入式实时操作系统,它的进程调度算法主要在函数OSSched()中实现。
由于操作系统无法知道进程的一个进程周期是否开始,也无法知道进程是否已经完成了一个进程周期里的工作,所以要为每个进程都增加两个事件:到达事件和完成事件。到达事件标志着新进程周期的开始,它可以是中断,也可以是来自其他进程的消息。完成事件表示进程已经完成一个周期里的工作,是由进程自身产生的消息。
由于在CPU的操作系统中最多允许64个实时进程,因此,在操作系统内核中增加一个含128个节点的环形队列Q,Q队列中包含了每个进程的时间记录节点和完成标志节点。当收到完成事件时,操作系统向Q队列里插入一个完成标志节点,并把相应进程的进程号写入该节点,表示该进程完成了一个进程周期的运行。在收到到达事件时,向Q队列中插入一个时间记录节点,将进程号和该进程的运行时间写入到该节点中,以记录所述进程从开始运行到插入时间记录节点的运行时间。其中,时间记录节点和完成标志节点通过节点里的标志位来区分。
在uC/OS-II操作系统中增加4个数组,用来描述进程的状态(bFlag)、空闲时间总和(wFressTime)、运行时间总和(wRunTime)和频率利用率的最大值(fU)。若不包括IDLE进程,系统中共允许运行64个进程,因此这些数据均包括64个元素,代码表示如下:
Bool bFlag[64];
word wFreeTime[64];
word wRunTime[64];
float fU[64];
其中,对于本次调频与上次调频期间的任意进程Pi,其进程状态bFlag[Pi]为0时,表示进程Pi已完成其在一个进程周期的运行,否则表示进程Pi还未完成其在一个进程周期的运行。根据进程状态bFlag[Pi]的值来决定进程Pi是继续进行运行时间的记录和累加还是进行频率利用率的计算。
这里,操作系统在每次收到进程Pi的完成事件时,都会把bFlag[Pi]置0;而在收到进程Pi的到达事件时,如果bFlag[Pi]的值为0则把bFlag[Pi]置1,否则说明时间约束被破坏即进程的实时性被破坏或有新增程序,执行Quicken子程序,Quicken子程序则将CPU的工作频率调回调频前的工作频率,并将Q队列清空以及其4个数组清0,来保证CPU中各个进程的正常运行。
其中,进程Pi的频率利用率的最大值fU[Pi]、空闲时间总和wFreeTime[Pi]及运行时间总和wRunTime[Pi]的初始值均设为0。
请参照图2所示uC/OS-II操作系统中的IDLE进程处理Q队列的流程图,具体流程如下:
在检测到CPU中只有IDLE进程运行时,读取Q队列中的节点数据;
所读取的Q队列是否为空;
如果读取的Q队列不为空,则将Q队列中记录的进程Pi的运行时间进行累加操作或计算进程Pi的频率利用率,具体操作如下:
在进程Pi的进程状态bFlag[Pi]为1即进程Pi未完成在其一个进程周期的运行时,所读取的Q队列的节点数据为进程Pi的运行时间t,对于CPU中的每一个其他的进程Pj,如果Pj的优先级比Pi高,则把Pi的运行时间t累加到进程Pj的空闲时间总和wFreeTime[Pj]上,否则把运行时间t累加到进程Pj的运行时间总和wRunTime[Pj]上。而对于进程Pi来说,如果任意其他进程Pj的优先级比Pi高,则将进程Pj的运行时间累加到进程Pi的运行时间总和wRunTime[Pi]上,否则把进程Pj的运行时间累加到Pi的空闲时间总和wFreeTime[Pi]上。进程Pi本身的运行时间t也会累加到其运行时间总和wRunTime[Pi]上。
在bFlag[Pi]为0即进程Pi完成其在一个进程周期的运行时,所读取的是进程Pi的完成标志节点的数据,则可以根据下公式(2)计算进程Pi的频率利用率U′:
U′=wRunTime[Pi]/(wRunTime[Pi]+wFreeTime[Pi])(2)
如果U′>fU[Pi],则令fU[Pi]=U′。
如果读取的Q队列为空,则调整CPU的工作频率,具体操作如下:
如果Q队列中已被IDLE进程读空,那么IDLE进程本身会计算本次调频距离上次调频的时间间隔。如果时间间隔不小于预先设定的检测阈值I,IDLE进程就会从频率利用率的数组fU[]中找出所有进程的频率利用率中的最大值k,再根据公式(1)将CPU当前的工作频率f调整为f*k+Δ。否则,执行空循环。
这里,自适应动态调频方法选择在IDLE进程运行时来调整频率,没有进程(IDLE进程除外)在运行,而且Q队列又是空的。此时调整频率,无论对进程的运行还是Q队列中统计数据的正确性都没有影响。操作系统中的调度器OSSched()是操作系统中执行最频繁的部分,到达事件和完成事件也是频繁发生的事件,自适应动态调频方法给这三部分所增加的时间复杂度都是O(1)复杂度。本发明的方法中大部分的时间开销是在IDLE进程中,而IDLE进程是在CPU其他进程空闲时执行的,所以这些时间开销是可以忽略的。因此,本发明CPU的自适应动态调频方法中,以各个进程的频率利用率来代替传统DVS算法中的“CPU利用率”作为CPU调频的判定条件,绕开了RM可调度充分条件的限制,不需要将CPU的空闲率保证在30%,同时没有硬性的测量窗口,不会为CPU增加额外的运行负担,从而可以有效保证CPU中各个进程的顺利运行,可大大提高CPU的利用率。
其中,O(1)是指CPU的操作系统中所采用的算法进行过程的时间复杂度,是评判该算法好坏的一个标准。
另外,自适应动态调频方法实际上仍使用“面向过去”的预测算法,即认为下一个进程周期的频率利用率不会超过前面几个进程周期中最大的频率利用率。所以,和其他在线调度算法一样,自适应动态调频方法不能绝对保证进程的实时性。它适合应用于弱实时系统,如移动终端的多媒体播放软件、网络电话、网络视频、手写输入等系统。
请参照图3,本发明CPU的自适应动态调频装置,主要包括:
记录单元31,用于实时记录CPU中所有进程的运行时间;
检测单元32,用于检测CPU中是否只有空进程在运行;
确定单元33,用于在检测单元32的检测结果为只有空进程在运行时,根据记录单元31所记录的运行时间确定CPU中各进程的频率利用率;
调频单元34,用于根据确定单元33中所确定的频率利用率的最大值,调整CPU的工作频率。
其中,所述检测单元32,还用于检测CPU中的进程的实时性是否被破坏;
及或,所述检测单元32还用于检测CPU中是否有新增的进程。
其中,所述确定单元33具体用于在本次调频与上次调频期间的任一进程的一个进程周期内,得到所有优先级不低于所述进程的所有进程在所述进程周期内的运行时间的总和;并将所得到的运行时间的总和与在进程周期内所记录的所有进程的运行时间总和之间的比值确定为所述进程的频率利用率。
其中,在所述检测单元32检测到实时性被破坏时,或检测到CPU中有新增进程时,所述调频单元34还可以用于将CPU的工作频率调整为调频前的工作频率,以保证CPU中各进程的正常运行。
其中,所述调频单元34主要包括:
处理模块341,用于确定CPU中所有进程的频率利用率中的最大值及CPU当前的工作频率;
确定模块342,用于根据处理模块341所确定的CPU当前的工作频率及所有进程频率利用率中的最大值,确定CPU的预调频率;
调整模块343,用于将CPU的工作频率调整为确定模块342所确定的预调频率。
其中,所述CPU的自适应动态调频装置,还可以包括:
计算单元35,用于计算本次CPU调频与上次CPU调频之间的时间间隔;
判断单元36,用于判断所述计算单元35得到的时间间隔是否不小于预设的检测阈值。
其中,在判断单元36的判断结果为时间间隔不小于预设的检测阈值时,触发调频单元34调整CPU的工作频率,然后调频单元34才根据确定单元33中所确定的频率利用率的最大值,调整CPU的工作频率。
本发明CPU的自适应动态调压方法,请参照图4,主要包括以下步骤:
步骤401:实时记录CPU中所有进程的运行时间;
步骤402:检测CPU中是否只有空进程在运行,如果是,则继续步骤403,如果否,则返回步骤401;
步骤403:根据所记录的运行时间,确定CPU中各个进程的频率利用率;
步骤404:根据所述频率利用率中的最大值,调整CPU的工作频率。
步骤405:在CPU中预设的系统配置表中,查找调整后CPU的工作频率所对应的系统性能等级;
步骤406:将CPU当前的供给电压调整为所查找的系统性能等级中的电压。
其中,步骤405-406中,在预设的系统配置标中,查找调整后CPU的工作频率所对应的系统性能等级,再根据系统性能等级中的电压值,根据具体硬件提供的具体寄存器设定的某个或某几个标志位,将查找到的电压等级数值写入这些标志位,之后再由CPU底层硬件完成CPU电压的调整。
本发明CPU的自适应动态调压装置,请参照图5,主要包括:
记录单元51,用于实时记录CPU中所有进程的运行时间;
检测单元52,用于检测CPU中是否只有空进程在运行;
确定单元53,用于在检测单元52的检测结果为只有空进程在运行时,根据记录单元51所记录的运行时间确定CPU中各个进程的频率利用率;
调频单元54,用于根据确定单元53所确定频率利用率中的最大值,调整CPU的工作频率;
查找单元55,用于根据调频单元54调整后的CPU的工作频率,在预设的CPU的系统配置表中查找对应的系统性能等级;
调压单元56,用于将CPU当前的供给电压调整为查找单元55所查找的系统性能等级中的电压。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种CPU的自适应动态调频方法,其特征在于,所述方法包括:
实时记录CPU中所有进程的运行时间;
检测到CPU中只有空进程在运行时,根据所记录的运行时间,确定CPU中各个进程的频率利用率;
根据所述频率利用率的最大值,调整CPU的工作频率;
所述根据所记录的运行时间,确定CPU中各个进程的频率利用率,具体为:在本次调频与上次调频期间的任一进程的一个进程周期内,得到优先级不低于所述进程的所有其他进程在该进程周期内的运行时间的总和;将所得到的运行时间的总和与在所述进程周期内所记录的所有进程的运行时间总和之间的比值确定为所述进程的频率利用率;
所述根据所述频率利用率中的最大值,调整CPU的工作频率,具体为:确定CPU中所有进程的频率利用率中的最大值及CPU当前的工作频率;根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率;将CPU的工作频率调整为所述预调频率;
其中,所述根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率,为:根据所确定的CPU当前的工作频率f及所有进程的频率利用率的最大值k,根据公式f′=f*k+Δ确定CPU的预调频率f′,Δ为非负常数,取值在区间(0,f*(1-k))的范围内。
2.根据权利要求1所述CPU的自适应动态调频方法,其特征在于,所述调整CPU的工作频率之前,还包括:
计算本次CPU调频与上次CPU调频之间的时间间隔;
如果所计算的时间间隔不小于预设的检测阈值,则调整CPU的工作频率。
3.根据权利要求1所述CPU的自适应动态调频方法,其特征在于,所述方法还包括:
在检测到进程的实时性被破坏时,或在检测到CPU中新增进程时,将CPU的工作频率调整为调频前的工作频率。
4.一种CPU的自适应动态调压方法,其特征在于,所述方法包括:
实时记录CPU中所有进程的运行时间;
检测CPU中只有空进程在运行时,根据所记录的运行时间,确定CPU中各个进程的频率利用率;
根据所述频率利用率的最大值,调整CPU的工作频率;
在CPU中预设的系统配置表中,查找调整后CPU的工作频率所对应的系统性能等级;
将CPU当前的供给电压调整为所查找的系统性能等级中的电压;
所述根据所记录的运行时间,确定CPU中各个进程的频率利用率,具体为:在本次调频与上次调频期间的任一进程的一个进程周期内,得到优先级不低于所述进程的所有其他进程在该进程周期内的运行时间的总和;将所得到的运行时间的总和与在所述进程周期内所记录的所有进程的运行时间总和之间的比值确定为所述进程的频率利用率;
所述根据所述频率利用率中的最大值,调整CPU的工作频率,具体为:确定CPU中所有进程的频率利用率中的最大值及CPU当前的工作频率;根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率;将CPU的工作频率调整为所述预调频率;
其中,所述根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率,为:根据所确定的CPU当前的工作频率f及所有进程的频率利用率的最大值k,根据公式f′=f*k+Δ确定CPU的预调频率f′,Δ为非负常数,取值在区间(0,f*(1-k))的范围内。
5.一种CPU的自适应动态调频装置,其特征在于,所述装置包括:
记录单元,用于实时记录CPU中所有进程的运行时间;
检测单元,用于检测CPU中是否只有空进程在运行;
确定单元,用于在所述检测单元的检测结果为只有空进程在运行时,根据所记录的运行时间确定CPU中各个进程的频率利用率;
调频单元,用于根据所述频率利用率的最大值,调整CPU的工作频率;
所述确定单元,具体用于在本次调频与上次调频期间的任一进程的一个进程周期内,得到优先级不低于所述进程的所有其他进程在该进程周期内的运行时间的总和;将所得到的运行时间的总和与在所述进程周期内所记录的所有进程的运行时间总和之间的比值确定为所述进程的频率利用率;
所述调频单元包括:处理模块,用于确定CPU中所有进程的频率利用率中的最大值及CPU当前的工作频率;确定模块,用于根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率;调整模块,用于将CPU的工作频率调整为所述预调频率;
其中,所述确定模块确定CPU的预调频率具体为:根据所确定的CPU当前的工作频率f及所有进程的频率利用率的最大值k,根据公式f′=f*k+Δ确定CPU的预调频率f′,Δ为非负常数,取值在区间(0,f*(1-k))的范围内。
6.根据权利要求5所述自适应动态调频装置,其特征在于,
所述检测单元,还用于检测CPU中的进程的实时性是否被破坏;
和/或,所述检测单元还用于检测CPU中是否有新增的进程;
所述调频单元还用于:在所述检测单元检测到实时性被破坏时,或检测到CPU中有新增进程时,将CPU的工作频率调整为调频前的工作频率。
7.根据权利要求5或6所述自适应动态调频装置,其特征在于,所述装置还包括:
计算单元,用于在检测到只有空进程运行时,计算本次CPU调频与上次CPU调频之间的时间间隔;
判断单元,用于判断所述计算单元得到的时间间隔是否不小于预设的检测阈值,判断结果为是时,触发所述调频单元调整CPU的工作频率。
8.一种CPU的自适应动态调压装置,其特征在于,所述装置包括:
记录单元,用于实时记录CPU中所有进程的运行时间;
检测单元,用于检测CPU中是否只有空进程在运行;
确定单元,用于在所述检测单元的检测结果为只有空进程在运行时,根据所记录的运行时间确定CPU中各个进程的频率利用率;
调频单元,用于根据所述频率利用率中的最大值,调整CPU的工作频率;
查找单元,用于根据调整后的CPU的工作频率,在CPU中预设的系统配置表中查找对应的系统性能等级;
调压单元,用于将CPU当前的供给电压调整为所查找的系统性能等级中的电压;
所述确定单元,具体用于在本次调频与上次调频期间的任一进程的一个进程周期内,得到优先级不低于所述进程的所有其他进程在该进程周期内的运行时间的总和;将所得到的运行时间的总和与在所述进程周期内所记录的所有进程的运行时间总和之间的比值确定为所述进程的频率利用率;
所述调频单元包括:处理模块,用于确定CPU中所有进程的频率利用率中的最大值及CPU当前的工作频率;确定模块,用于根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率;调整模块,用于将CPU的工作频率调整为所述预调频率;
其中,所述确定模块确定CPU的预调频率具体为:根据所确定的CPU当前的工作频率f及所有进程的频率利用率的最大值k,根据公式f′=f*k+Δ确定CPU的预调频率f′,Δ为非负常数,取值在区间(0,f*(1-k))的范围内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102368426A CN101699368B (zh) | 2009-11-02 | 2009-11-02 | Cpu的自适应动态调频或调压方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102368426A CN101699368B (zh) | 2009-11-02 | 2009-11-02 | Cpu的自适应动态调频或调压方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101699368A CN101699368A (zh) | 2010-04-28 |
CN101699368B true CN101699368B (zh) | 2012-05-23 |
Family
ID=42147828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102368426A Withdrawn - After Issue CN101699368B (zh) | 2009-11-02 | 2009-11-02 | Cpu的自适应动态调频或调压方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101699368B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591443A (zh) * | 2011-12-29 | 2012-07-18 | 华为技术有限公司 | 一种虚拟化集群整合方法、装置及系统 |
US9116181B2 (en) | 2011-12-29 | 2015-08-25 | Huawei Technologies Co., Ltd. | Method, apparatus, and system for virtual cluster integration |
US10061374B2 (en) * | 2012-03-07 | 2018-08-28 | Taiwan Semiconductor Manufacturing Co., Ltd. | Dynamic frequency scaling |
CN104424031B (zh) * | 2013-08-23 | 2021-01-26 | 中兴通讯股份有限公司 | 一种处理器工作频率的控制方法及装置 |
WO2016058149A1 (zh) * | 2014-10-16 | 2016-04-21 | 华为技术有限公司 | 一种预测处理器利用率的方法、处理装置和终端设备 |
CN104768208A (zh) * | 2015-03-17 | 2015-07-08 | 广东欧珀移动通信有限公司 | 一种调频模式切换方法及移动终端 |
CN104731304B (zh) * | 2015-03-20 | 2018-01-19 | 广东欧珀移动通信有限公司 | 一种终端中cpu调频模式的调整方法及装置 |
CN105335233B (zh) * | 2015-09-24 | 2019-04-16 | 广州视源电子科技股份有限公司 | 一种处理器动态变频的方法和装置 |
CN105955823B (zh) * | 2016-04-21 | 2020-02-11 | 深圳市万普拉斯科技有限公司 | 确定运算资源的运算频率的方法及系统 |
CN107368363A (zh) * | 2017-07-20 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种周期管理方法及装置 |
CN107844177A (zh) * | 2017-10-18 | 2018-03-27 | 歌尔科技有限公司 | 设备参数调整方法、装置及电子设备 |
CN108038029B (zh) * | 2017-11-06 | 2021-02-09 | 中标软件有限公司 | Cpu变频能力检测方法及装置 |
EP3748961B1 (en) | 2018-03-26 | 2022-01-19 | Huawei Device Co., Ltd. | Frame rate adjustment method and terminal |
CN108984469A (zh) * | 2018-06-06 | 2018-12-11 | 北京嘉楠捷思信息技术有限公司 | 计算设备的芯片调频方法、装置、算力板、计算设备及存储介质 |
CN110647401B (zh) * | 2019-09-30 | 2022-07-08 | Oppo(重庆)智能科技有限公司 | 调频方法、调频装置、存储介质与电子设备 |
CN112231016A (zh) * | 2020-10-27 | 2021-01-15 | 山东云缦智能科技有限公司 | 基于应用启动频率的Android进程管理机制处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1359041A (zh) * | 2000-12-18 | 2002-07-17 | 联想(北京)有限公司 | 根据cpu的利用率调节cpu频率的方法 |
CN1773423A (zh) * | 2004-11-08 | 2006-05-17 | 佛山市顺德区顺达电脑厂有限公司 | 调整中央处理器工作频率及其供电电压的方法 |
CN101201689A (zh) * | 2006-12-13 | 2008-06-18 | 上海晨兴电子科技有限公司 | 一种多任务系统中自动管理cpu功耗的方法 |
-
2009
- 2009-11-02 CN CN2009102368426A patent/CN101699368B/zh not_active Withdrawn - After Issue
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1359041A (zh) * | 2000-12-18 | 2002-07-17 | 联想(北京)有限公司 | 根据cpu的利用率调节cpu频率的方法 |
CN1773423A (zh) * | 2004-11-08 | 2006-05-17 | 佛山市顺德区顺达电脑厂有限公司 | 调整中央处理器工作频率及其供电电压的方法 |
CN101201689A (zh) * | 2006-12-13 | 2008-06-18 | 上海晨兴电子科技有限公司 | 一种多任务系统中自动管理cpu功耗的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101699368A (zh) | 2010-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101699368B (zh) | Cpu的自适应动态调频或调压方法及装置 | |
CN101290585B (zh) | 一种嵌入式系统实时任务的调度方法 | |
CN1890636B (zh) | 用于低功率程序调整的功率性能监视器的装置和方法 | |
US8261112B2 (en) | Optimizing power consumption by tracking how program runtime performance metrics respond to changes in operating frequency | |
CN101379453B (zh) | 使用动态工作负载特征来控制cpu频率和电压调节的方法和装置 | |
US8589709B2 (en) | Systems and methods for managing power consumption and performance of a processor | |
KR101029414B1 (ko) | 프로세서 상태 천이를 검출하기 위해 제공되는 장치 및방법과 머신 액세스 가능 매체와 컴퓨팅 시스템 | |
US10078357B2 (en) | Power gating functional units of a processor | |
TWI534599B (zh) | 用於配合動態電壓脈波結構而改良電力遞送效能的裝置、方法與系統 | |
US20090158067A1 (en) | Saving power in a computer system | |
CN100465857C (zh) | 一种面向嵌入式系统低功耗实时任务调度的简化方法 | |
MX2008011653A (es) | Manejo de energia adaptable. | |
CN101495958A (zh) | 用于控制处理器低功率状态的系统和方法 | |
CN101216727A (zh) | 嵌入式低功耗操作系统中动态频率调整的映射方法 | |
Shoukourian et al. | Power variation aware configuration adviser for scalable HPC schedulers | |
CN103345296B (zh) | 动态电压频率调整触发装置和方法 | |
Rumi et al. | CPU power consumption reduction in android smartphone | |
CN1979179A (zh) | 多费率电能表中对停电事件的判断和处理方法及装置 | |
CN115904679A (zh) | 一种芯片调整方法及装置 | |
CN101847044B (zh) | 一种适用于千万亿次计算机机群的低功耗管理方法 | |
KR100753469B1 (ko) | 배터리의 화학적 특성을 이용한 이동기기의 전력 관리 방법 | |
CN103544003A (zh) | 基于数据管理功率的设备和方法 | |
CN104978006B (zh) | 一种多线程模式下的低功耗空闲等待方法 | |
Kluge et al. | Optimisation of energy consumption of soft real-time applications by workload prediction | |
US20230393637A1 (en) | Hilite: hierarchical and lightweight imitation learning for power management of embedded socs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
AV01 | Patent right actively abandoned |
Granted publication date: 20120523 Effective date of abandoning: 20120611 |
|
C20 | Patent right or utility model deemed to be abandoned or is abandoned |