专利名称:Cpu的自适应动态调频或调压方法及装置的制作方法
技术领域:
本发明涉及一种嵌入式设备低功耗技术领域,尤其涉及一种用于节能的CPU的自
适应动态调频或调压方法及装置。
背景技术:
移动手持设备在近几年内发展迅速,已成为继个人电脑(PC, PersonalComputer)之后的又一大市场领域。目前,移动手持设备大多数由电池供电,相对于市电供电的台式机,这类设备的电源供应是有限的。尤其对于各种具有PC功能的智能手机来说,电池工作时间的长短直接决定了其性能的优劣。为了延长电池的工作时间,一种办法是利用各种存储介质,来改进电池的性能,以提高电池的比能量。但,由于各种因素的影响,电池的实际比能量总是远小于理论比能量。尽管人们付出了很大的努力,提高比能量的工作仍进展缓慢。而另一种更现实的办法就是降低系统运行的功耗,以最大化的延长电池的工作时间,而延长电池的工作时间的关键在于节省电量。 低功耗算法包括许多针对不同对象、采用不同原理的算法,但其中最典型的是针对中央处理单元(CPU, Central Processing Unit)的动态调压(DVS, Dynamic VoltageScaling)算法。概括地说,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,RateMonotonic)可调度充分条件,要确保系统内的所有进程的实时性,必须保证30 %的CPU空闲时间。也就是说,在采用上述DVS算法时,CPU的利用率不能超过70X,造成了 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的预调频率;将CPU的工作频
率调整为所述预调频率。
在上述方案中,所述调整CPU的工作频率,具体为在检测到进程的实时性被破坏时,或在检测到CPU中新增进程时,将CPU的工作频率调整为调频前的工作频率。
本发明还提供一种CPU的自适应动态调压方法,所述方法包括
实时记录CPU中所有进程的运行时间; 检测CPU中只有空进程在运行时,根据所记录的运行时间,确定CPU中各个进程的频率利用率; 根据所述频率利用率的最大值,调整CPU的工作频率; 在CPU中预设的系统配置表中,查找调整后CPU的工作频率所对应的系统性能等级; 将CPU当前的供给电压调整为所查找的系统性能等级中的电压。
另外,本发明还提供一种CPU的自适应动态调频装置,所述装置包括
记录单元,用于实时记录CPU中所有进程的运行时间;
检测单元,用于检测CPU中是否只有空进程在运行; 确定单元,用于在所述检测单元的检测结果为只有空进程在运行时,根据所记录的运行时间确定CPU中各个进程的频率利用率; 调频单元,用于根据所述频率利用率的最大值,调整CPU的工作频率。 在上述方案中,所述检测单元,还用于检测CPU中的进程的实时性是否被破坏;及或,所述检测单元还用于检测CPU中是否有新增的进程;所述调频单元还用于在所述检测 单元检测到实时性被破坏时,或检测到CPU中有新增进程时,将CPU的工作频率调整为调频 前的工作频率。 在上述方案中,所述确定单元,具体用于在本次调频与上次调频期间的任一进程 的一个进程周期内,得到优先级不低于所述进程的所有其他进程在该进程周期内的运行时 间的总和;将所得到的运行时间的总和与在所述进程周期内所记录的所有进程的运行时间 总和之间的比值确定为所述进程的频率利用率。 在上述方案中,所述装置还包括计算单元,用于在检测到只有空进程运行时,计 算本次CPU调频与上次CPU调频之间的时间间隔;判断单元,用于判断所述计算单元得到的 时间间隔是否不小于预设的检测阈值,判断结果为是时,触发所述调频单元调整CPU的工
作频率。 在上述方案中,所述调频单元包括处理模块,用于确定CPU中所有进程的频率利 用率中的最大值及CPU当前的工作频率;确定模块,用于根据所确定的CPU当前的工作频率 及所有进程的频率利用率的最大值,确定CPU的预调频率;调整模块,用于将CPU的工作频 率调整为所述预调频率。
本发明还提供了一种CPU的自适应动态调压装置,所述装置包括
记录单元,用于实时记录CPU中所有进程的运行时间;
检测单元,用于检测CPU中是否只有空进程在运行; 确定单元,用于在所述检测单元的检测结果为有空进程在运行时,根据所记录的 运行时间确定CPU中各个进程的频率利用率; 调频单元,用于根据所述频率利用率中的最大值,调整CPU的工作频率; 查找单元,用于根据调整后的CPU的工作频率,在CPU中预设的系统配置表中查找
对应的系统性能等级; 调压单元,用于将CPU当前的供给电压调整为所查找的系统性能等级中的电压。
本发明根据CPU中各个进程的"频率利用率"动态调节CPU的工作频率,达到降低 CPU功耗的目的。 在本发明中,通过在CPU的操作系统中增加一个新的数据结构来记录各个进程用 于计算频率利用率的时间条件,并将计算进程的频率利用率以及对CPU动态调频的操作放 在IDLE进程中来实现,使得CPU的利用率不需保证30X的空闲,从而可有效提高CPU的 利用率。另外,由于受高优先级进程的影响,同一个进程在不同进程周期的频率利用率不 相同,因此,一般会连续统计所有进程在其多个进程周期的频率利用率并且以其最大者为 准。这样有利于减少进程周期和运行时间波动对CPU调频的影响,从而可以较为准确的确 定CPU的工作频率。 本发明CPU的自适应动态调频方法及装置有效的保证了 CPU中各个进程的顺利运 行,不会增加额外的系统运行负担,有利于各个进程的实时性。 另外,本发明基于CPU的自适应动态调频方法及装置进行的调压,有利于节约CPU 系统功耗,增加CPU中电源的使用时长。本发明可以用于存在CPU进程调度的各种操作系 统中,尤以用有限电量电源供电的嵌入式系统为佳。
图1为本发明CPU的自适应动态调频方法的方法流程图; 图2为本发明uC/OS-II操作系统中IDLE进程处理Q队列的流程图; 图3为本发明CPU的自适应动态调频装置的结构图; 图4为本发明CPU的自适应动态调压方法的方法流程图; 图5为本发明CPU的自适应动态调压装置的结构框图。
具体实施例方式
下面将结合附图对本发明的具体实施方式
做详细描述。
参照图l,本发明的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) 其中,A为非负常数。确定CPU的预调频率f'后,再将CPU的工作频率f降低为 该预调频率f'。 其中,非负常数A是为在一个进程P的进程周期内,运行的高优先级进程考虑的。 因为,在CPU工作频率降低时,CPU中各个进程的运行时间都会延长,在实际运行中高优先 级进程的运行时间可能会延至进程周期完成之后,导致用于确定预调频率的频率利用率与 实际的计算结果不相符,从而影响了 CPU频率调整的准确性。因此,需要在此次频率调整 时,预留一定的调整余量A,来提高CPU频率调整的准确性。其中A的具体大小,可视不同 的进程情况而定,但A的取值必须在区间(0,f*(l_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/0S-II操作系统中增加4个数组,用来描述进程的状态(bFlag)、空闲时间总 和(wFressTime)、运行时间总和(wRunTime)和频率利用率的最大值(fU)。若不包括IDLE 进程,系统中共允许运行64个进程,因此这些数据均包括64个元素,代码表示如下
Bool bFlag[64];
word wFreeTime[64];
word wR皿Time[64];
float fU[64]; 其中,对于本次调频与上次调频期间的任意进程Pi,其进程状态bFlag[Pi]为O 时,表示进程Pi已完成其在一个进程周期的运行,否则表示进程Pi还未完成其在一个进程 周期的运行。根据进程状态bFlag [Pi]的值来决定进程Pi是继续进行运行时间的记录和 累加还是进行频率利用率的计算。 这里,操作系统在每次收到进程Pi的完成事件时,都会把bFlag [Pi]置0 ;而在收 到进程Pi的到达事件时,如果bFlag[Pi]的值为O则把bFlag[Pi]置l,否则说明时间约 束被破坏即进程的实时性被破坏或有新增程序,执行Quicken子程序,Quicken子程序则将 CPU的工作频率调回调频前的工作频率,并将Q队列清空以及其4个数组清0,来保证CPU 中各个进程的正常运行。 其中,进程Pi的频率利用率的最大值fU[Pi]、空闲时间总和wFreeTime[Pi]及运 行时间总和wR皿Time[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的运行时间总和wR皿Time[Pj]上。 而对于进程Pi来说,如果任意其他进程Pj的优先级比Pi高,则将进程Pj的运行时间累 加到进程Pi的运行时间总和wRunTime[Pi]上,否则把进程Pj的运行时间累加到Pi的空 闲时间总和wFreeTime[Pi]上。进程Pi本身的运行时间t也会累加到其运行时间总和 wR皿Time[Pi]上。 在bFlag[Pi]为O即进程Pi完成其在一个进程周期的运行时,所读取的是进程Pi 的完成标志节点的数据,则可以根据下公式(2)计算进程Pi的频率利用率U':
U' = wR皿Time[Pi]/(wR皿Time[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(l)复杂度。本发明的方法中大部分的时间开销是在IDLE进程中, 而IDLE进程是在CPU其他进程空闲时执行的,所以这些时间开销是可以忽略的。因此,本发 明CPU的自适应动态调频方法中,以各个进程的频率利用率来代替传统DVS算法中的"CPU 利用率"作为CPU调频的判定条件,绕开了 RM可调度充分条件的限制,不需要将CPU的空闲 率保证在30%,同时没有硬性的测量窗口,不会为CPU增加额外的运行负担,从而可以有效 保证CPU中各个进程的顺利运行,可大大提高CPU的利用率。 其中,0(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所查找的系统性能等 级中的电压。 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在 本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护 范围之内。
权利要求
一种CPU的自适应动态调频方法,其特征在于,所述方法包括实时记录CPU中所有进程的运行时间;检测到CPU中只有空进程在运行时,根据所记录的运行时间,确定CPU中各个进程的频率利用率;根据所述频率利用率的最大值,调整CPU的工作频率。
2. 根据权利要求1所述CPU的自适应动态调频方法,其特征在于,所述根据所记录的运行时间,确定CPU中各个进程的频率利用率,具体为在本次调频与上次调频期间的任一进程的一个进程周期内,得到优先级不低于所述进程的所有其他进程在该进程周期内的运行时间的总和;将所得到的运行时间的总和与在所述进程周期内所记录的所有进程的运行时间总和之间的比值确定为所述进程的频率利用率。
3. 根据权利要求1所述CPU的自适应动态调频方法,其特征在于,所述调整CPU的工作频率之前,还包括计算本次CPU调频与上次CPU调频之间的时间间隔;如果所计算的时间间隔不小于预设的检测阈值,则调整CPU的工作频率。
4. 根据权利要求1至3任一所述CPU的自适应动态调频方法,其特征在于,根据所述频率利用率中的最大值,调整CPU的工作频率,具体为确定CPU中所有进程的频率利用率中的最大值及CPU当前的工作频率;根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率;将CPU的工作频率调整为所述预调频率。
5. 根据权利要求4所述CPU的自适应动态调频方法,其特征在于,所述调整CPU的工作频率,具体为在检测到进程的实时性被破坏时,或在检测到CPU中新增进程时,将CPU的工作频率调整为调频前的工作频率。
6. —种CPU的自适应动态调压方法,其特征在于,所述方法包括实时记录CPU中所有进程的运行时间;检测CPU中只有空进程在运行时,根据所记录的运行时间,确定CPU中各个进程的频率利用率;根据所述频率利用率的最大值,调整CPU的工作频率;在CPU中预设的系统配置表中,查找调整后CPU的工作频率所对应的系统性能等级;将CPU当前的供给电压调整为所查找的系统性能等级中的电压。
7. —种CPU的自适应动态调频装置,其特征在于,所述装置包括记录单元,用于实时记录CPU中所有进程的运行时间;检测单元,用于检测CPU中是否只有空进程在运行;确定单元,用于在所述检测单元的检测结果为只有空进程在运行时,根据所记录的运行时间确定CPU中各个进程的频率利用率;调频单元,用于根据所述频率利用率的最大值,调整CPU的工作频率。
8. 根据权利要求7所述自适应动态调频装置,其特征在于,所述检测单元,还用于检测CPU中的进程的实时性是否被破坏;及或,所述检测单元还用于检测CPU中是否有新增的进程;所述调频单元还用于在所述检测单元检测到实时性被破坏时,或检测到CPU中有新增进程时,将CPU的工作频率调整为调频前的工作频率。
9. 根据权利要求8所述自适应动态调频装置,其特征在于,所述确定单元,具体用于在本次调频与上次调频期间的任一进程的一个进程周期内,得到优先级不低于所述进程的所有其他进程在该进程周期内的运行时间的总和;将所得到的运行时间的总和与在所述进程周期内所记录的所有进程的运行时间总和之间的比值确定为所述进程的频率利用率。
10. 根据权利要求7至9任一所述自适应动态调频装置,其特征在于,所述装置还包括计算单元,用于在检测到只有空进程运行时,计算本次CPU调频与上次CPU调频之间的时间间隔;判断单元,用于判断所述计算单元得到的时间间隔是否不小于预设的检测阈值,判断结果为是时,触发所述调频单元调整CPU的工作频率。
11. 根据权利要求7至9任一所述CPU的自适应动态调频装置,其特征在于,所述调频单元包括处理模块,用于确定CPU中所有进程的频率利用率中的最大值及CPU当前的工作频率;确定模块,用于根据所确定的CPU当前的工作频率及所有进程的频率利用率的最大值,确定CPU的预调频率;调整模块,用于将CPU的工作频率调整为所述预调频率。
12. —种CPU的自适应动态调压装置,其特征在于,所述装置包括记录单元,用于实时记录CPU中所有进程的运行时间;检测单元,用于检测CPU中是否只有空进程在运行;确定单元,用于在所述检测单元的检测结果为有空进程在运行时,根据所记录的运行时间确定CPU中各个进程的频率利用率;调频单元,用于根据所述频率利用率中的最大值,调整CPU的工作频率;查找单元,用于根据调整后的CPU的工作频率,在CPU中预设的系统配置表中查找对应的系统性能等级;调压单元,用于将CPU当前的供给电压调整为所查找的系统性能等级中的电压。
全文摘要
本发明涉及一种CPU的自适应动态调频或调压方法及装置,所述调频方法主要包括实时记录CPU中所有进程的运行时间;检测到CPU中只有空进程在运行时,根据所记录的运行时间,确定CPU中各个进程的频率利用率;再根据所述频率利用率中的最大值,调整CPU的工作频率。本发明CPU的自适应动态调频方法及装置有效的保证了CPU中各个进程的顺利运行,不会为CPU增加额外的运行负担,可有效提高CPU的利用率,且有利于节约CPU的系统功耗,增加CPU供给电源的使用时长。本发明可以用于存在CPU进程调度的各种操作系统中,尤以用有限电量的电源供电的嵌入式系统为佳。
文档编号G06F1/32GK101699368SQ20091023684
公开日2010年4月28日 申请日期2009年11月2日 优先权日2009年11月2日
发明者欧阳慧琴 申请人:中兴通讯股份有限公司