动态调整中央处理单元的频率的装置和方法

文档序号:6364236阅读:207来源:国知局
专利名称:动态调整中央处理单元的频率的装置和方法
技术领域
本发明涉及计算机系统领域,且更具体地说涉及动态调整中央处理单元的频率的装置和方法以及计算机系统。
背景技术
在当前的计算机系统中,通常都会设定CPU(中央处理单元)的利用率的目标值,从而使CPU尽量保持在较高的利用率。一般而言,在计算机系统中完成同一件任务有两种选择:一是在较低的CPU频率下,以较高的CPU负载率(利用率)来运行;第二是在较高的CPU频率下,以较低的CPU负载率(利用率)来运行。由于在当前的计算机系统中,CPU的功耗主要与其频率相关,即与其频率的平方成比例,CPU的频率越低,则功耗通常越低。近年来,主流的处理器,例如X86,ARM等都支持动态频率调节(DVFS =DynamicVoltage Frequency Scaling)技术。例如,在Linux系统中,就提出了一种CPU控制算法,其是基于动态频率调节的动态CPU频率调节框架。在该方法中,设置两个CPU频率的阈值,并且,如果当前的CPU利用率高于“高阈值”,则调高CPU频率;如果当前CPU的利用率低于“低阈值”,则降低CPU频率,从而达到动态调节CPU的频率以降低功耗的目的。但是,随着计算机系统的复杂化,其功耗有进一步增大的趋势,因此仍需要继续研究通过动态调整CPU频率来使得功耗降低的装置和方法。

发明内容
因此,针对上述现有技术中存在的问题和需求做出本发明。本发明实施例·的目的是提供一种动态调整CPU的频率的装置和方法,其能够基于访问存储器的指令的比例来动态调整CPU的频率,从而降低CPU的功耗。根据本发明实施例的一个方面,提供了一种动态调整中央处理单元CPU频率的装置,用于一计算机系统,所述计算机系统执行CPU密集型应用程序和存储器密集型应用程序,所述装置包括:比例获取单元,用于在执行一应用程序任务集时获取访问存储器的指令的比例;频率计算单元,与所述比例获取单元连接,用于基于所述比例获取单元所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率;频率调整单元,与所述频率计算单元连接,以将CPU的频率调整为所述新CPU频率。在上述动态调整CPU频率的装置中,所述频率计算单元采用负反馈机制,以通过下式计算调整之后的新CPU频率:fn = fnow+Pl*(-m);其中,fnow是CPU的当前频率,fnew是调整之后的新CPU频率,m是访问存储器的指令的比例,且P1是控制参数。在上述动态调整CPU频率的装置中,进一步包括:比例阈值设置单元,用于设置访问存储器的指令的比例阈值;其中,所述频率计算单元进一步包括:第一差值计算单元,与所述比例阈值设置单元和所述比例获取单元连接,用于计算访问存储器的指令的比例与所述访问存储器的指令的比例阈值之间的差值;且所述频率计算单元采用负反馈机制,以通过下式计算调整之后的新CPU频率:fn = fnow+P!* (mt-m);其中,fnow是CPU的当前频率,fnew是调整之后的新的CPU频率,m是访问存储器的指令的比例,mt是访问存储器的指令的比例阈值,且P1是控制参数。在上述动态调整CPU频率的装置中,进一步包括:利用率获取单元,用于获取CPU的利用率;利用率阈值设置单元,用于设置CPU利用率的阈值;比例阈值设置单元,用于设置访问存储器的指令的比例阈值;其中,所述频率计算单元进一步包括:第一差值计算单元,与所述比例阈值设置单元和所述比例获取单元连接,用于计算访问存储器的指令的比例与所述访问存储器的指令的比例阈值之间的差值;第二差值计算单元,与所述利用率获取单元和所述利用率阈值设置单元连接,用于计算所述CPU的利用率与所述CPU利用率的阈值之间的差值;且所述频率计算单元采用负反馈机制,以通过比例控制器以下式计算调整之后的新CPU频率:fnew = Up1* (U-U0) +P2* (mt-m);其中,fnow是CPU的当前频率,fnew是调整之后的新的CPU频率,m是访问存储器的指令的比例,mt是访问存储器的指令的比例阈值,u是CPU利用率,U0是CPU利用率的阈值,且P1和P2是控制参数。在上述动态调整CPU频率的装置中,所述比例获取单元进一步包括:指令数读取单元,用于读取CPU的性能计数器,以获得访问缓存失败的指令数miss ;比例计算单元,将访问缓存失败的指令数Nmwss除以总的指令数Ninsfe _。以计算出访问存储器的指令的比例m。在上述动态调整CPU频率的装置中,所述频率调整单元具体包括:频率调节器,用于基于所述调整之后的新CPU频率从CPU能够支持的频率列表中选择与所述调整之后的新CPU频率最接近的且大于所 述调整之后的新CPU频率的频率值,并将CPU的频率调整为所述
频率值。在上述动态调整CPU频率的装置中,以控制周期T周期性地调整CPU的频率。根据本发明实施例的另一方面,提供了一种动态调整CPU频率的方法,用于一计算机系统,所述计算机系统执行CPU密集型应用程序和存储器密集型应用程序,所述方法包括:在执行一应用程序任务集时获取访问存储器的指令的比例;基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率;以及将CPU的频率调整为所述新CPU频率。在上述动态调整CPU频率的方法中,所述基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率的步骤具体包括:采用负反馈机制以通过下式计算调整之后的新CPU频率:fn = fnow+Pl*(-m);其中,fnow是CPU的当前频率,fnew是调整之后的新CPU频率,m是访问存储器的指令的比例,且P1是控制参数。在上述动态调整CPU频率的方法中,在所述基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率的步骤之前进一步包括:设置访问存储器的指令的比例阈值;以及所述基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率的步骤具体包括:计算访问存储器的指令的比例与所述访问存储器的指令的比例阈值之间的差值;采用负反馈机制以通过下式计算调整之后的新CPU频率:fnOT =fnow+Pl*(mt-m);其中,fnow是CPU的当前频率,fnew是调整之后的新的CPU频率,m是访问存储器的指令的比例,mt是访问存储器的指令的比例阈值,且P1是控制参数。在上述动态调整CPU频率的方法中,在所述基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率的步骤之前进一步包括:获取CPU的利用率;设置CPU利用率的阈值;设置访问存储器的指令的比例阈值;以及所述基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率的步骤具体包括:计算访问存储器的指令的比例与所述访问存储器的指令的比例阈值之间的差值;计算所述CPU的利用率与所述CPU利用率的阈值之间的差值;采用负反馈机制以通过下式计算调整之后的新CPU频率:fnew = fnOT+Pi* (U-Utl)+P2* (mt-m);其中,fn 是CPU的当前频率,fnew是调整之后的新的CPU频率,m是访问存储器的指令的比例,mt是访问存储器的指令的比例阈值,u是CPU利用率,U0是CPU利用率的阈值,且P1和P2是控制参数。在上述动态调整CPU频率的方法中,所述获取访问存储器的指令的比例的步骤进一步包括:读取CPU的性能计数器以获得访问缓存失败的指令数N_te miss ;访问缓存失败的指令数NMC:hf;—miss除以总的指令数Ninstl^M。以计算出访问存储器的指令的比例m。在上述动态调整CPU频率的方法中,所述将CPU的频率调整为所述新CPU频率的步骤具体包括:基于所述调整之后的新CPU频率从CPU能够支持的频率列表中选择与所述调整之后的新CPU频率最接近的且大于所述调整之后的新CPU频率的频率值,并将CPU的频率调整为所述频率值。在上述动态调整CPU频率的方法中,以控制周期T周期性地调整CPU的频率。根据本发明实施例的又一方面,提供了一种计算机系统,用于执行CPU密集型应用程序和存储器密集型应用程序,所述计算机系统包括:控制器,用于在执行一应用程序任务集时获取访问存储器的指令的比例,基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率,并将CPU的频率调整为所述新CPU频率。通过根据本发明实施例的调整CPU频率的装置和方法以及计算机系统,可以通过考虑访存指令的比例来调低CPU的频率,从而降低计算机系统的功耗。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是根据本发明实施例的动态调整CPU频率的装置的框图;图2是根据本发明实施例的另一动态调整CPU频率的装置的框图;图3是示出根据本发明实施例的动态调整CPU频率的方法的示意性框图;图4是示出根据本发明实施例的动态调整CPU频率的系统的示意性框图。
具体实施例方式下面,将结合附图详细描述根据本发明实施例的动态调整CPU的频率的装置和方
法。 在当前的计算机系统中,主要有两种类型的应用程序,即CPU密集型应用程序(CPU bound)和存储器密集型(Memory bound)应用程序。CPU密集型应用程序绝大部分时间在使用CPU,而存储器密集型应用程序需要频繁地访问存储器,通常为计算机的内存。相应地,执行上述程序的CPU指令也可以分为“访问存储器(access memory)指令”和其它指令,例如“计算指令(加减等)”。并且,由于在计算机系统中,存储器频率通常远低于CPU频率,因此当执行访问存储器的指令(以下也简称为访存指令)时,并不需要太高的CPU频率。这里,计算机系统中芯片的功耗主要分为静态功耗(static power)与动态功耗(dynamic power,或switching power),并且动态功耗远大于静态功耗。,动态功耗与频率和电压的关系如下:P = a*CV2f其中,C为每个时钟周期内切换的电容值,V为电压,f为切换频率(也就是芯片的频率)。具体可以参考 J.M.Rabaey,Digital Integrated Circuits.Prentice Hall, 1996。如上所述,由于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的频率,从而显著降低了计算机系统的功耗。图1是根据本发 明实施例的动态调整CPU频率的装置的框图。如图1所示,该动态调整CPU频率的装置10用于一计算机系统,该计算机系统执行CPU密集型应用程序和存储器密集型应用程序,装置10包括:比例获取单元100,用于在执行一应用程序任务集时获取访问存储器的指令的比例;以及频率计算单元110,与比例获取单元100连接,用于基于比例获取单元100所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率;以及频率调整单元120,与频率计算单元110连接,以将CPU的频率调整为该新CPU频率。。下面,将对该装置10中的比例获取单元100和频率计算单元110进行更详细的说明。首先说明根据本发明实施例的比例获取单元。在当前的计算机系统当中,主流的处理器,例如X86、ARM都提供有性能计数器(Performance Counter),从而能够提供指令的统计信息。在本发明实施例的比例获取单元中,可以通过上述性能计数器直接获得一时间周期内访存指令的数目以及所有指令的数目,从而计算出该访存指令的比例。此外,由于在某些计算机系统的架构当中,并不能直接得到一时间周期内访问存储器的指令的数目,也可以采用其它间接的方式来获得访存指令的比例。例如,在计算机系统中,在执行一应用程序任务集时 ,通常首先访问计算机系统的缓存,其后再访问计算机系统的存储器。因此,如果访问缓存失败,则必然导致访问存储器,所以可以将访问缓存失败的指令数(cache missinstructions,记为Neaehejliss)认为是访存指令的数目。这样,假定该时间周期内的总指令数是Ninsta—_。,且访存指令的比例以m表示,则满足下式:m = Ncache_miss/Ninstr_exec公式 I也就是说,根据本发明实施例的比例获取单元100可以进一步包括:指令数读取单元,用于读取CPU的性能计数器,以获得访问缓存失败的指令数Ncacte miss ;以及比例计算单元,将访问缓存失败的指令数Jliss除以总的指令数Nins& _。以计算出访问存储器的指令的比例m。接下来,将说明根据本发明实施例的频率计算单元。如上所述,在根据本发明实施例的动态调整CPU频率的装置中,是与访存指令的比例成反比地调整CPU的频率。具体地说,可以采用负反馈系统来实现根据本发明实施例的频率计算单元,即,假定当前的CPU频率为,而调整之后的新CPU频率为,则应该满足下式:fnew = Up1* (-m)公式 2这里,m是在比例获取单元中获得的访存指令的比例,而P1是相应的系数。在实际的计算机系统中,以MiBench为例,访存指令的比例m的范围通常在0.00015到0.015之间。因此,假定当前计算机系统的CPU频率为f,则P1的取值优选地在60*f到300*f的范围之间。以TI OMAP 4430CPU为例,P1为30000MHz。这里,本领域技术人员可以理解,控制参数P1依赖于具体的硬件即CPU和存储器参数以及驱动程序的实现,本发明实施例并不意在进行特别的限制。根据控制理论,负反馈系统并不需要被控对象的具体信息,并且,对于当前计算机系统的嵌入式系统下执行的任务集来说,也很难知道其具体信息,因此采用负反馈系统来进行频率调整是很合适的。当然,这里本领域技术人员可以理解,只要与访存指令的比例成反比地调整CPU的频率,本发明实施例的频率计算单元也可以采用其它机制,这里本发明的实施例并不意在对此进行任意限制。另外,在上述根据本发明实施例的比例获取单元中,可以进一步包括一比例阈值设置单元,用于设置一访存指令的比例阈值mt,并在访存指令的比例m大于该比例阈值mt的情况下,调整CPU的频率。同样,在频率计算单元采用如上所述的负反馈机制的情况下,假定当前的CPU频率为fnOT,而调整之后的新CPU频率为fnOT,则应该满足下式:fnew = Up1* (mt-m)公式 3具体地说,在根据本发明实施例的频率计算单元中,可以包括一第一差值计算单元,与比例获取单元和比例阈值设置单元连接,以计算访存指令的比例m与访存指令比例的阈值mt之间的差值,这样,可以基于该差值来计算出调整之后的新CPU频率。设置该访存指令的阈值mt的用意在于,仅在访存指令的比例m大于该访存指令的阈值mt的情况下,降低CPU的频率。具体地说,如果访存指令的比例m小于该访存指令的阈值mt,则此段时间的任务集很有可能为“CPU密集型”的任务集,在这种情况下,应该适当地增加CPU频率,从而缩短“任务集”执行时间,以降低执行时间内的存储器能耗,从而降低系统级能耗。并且 ,由于CPU频率的提高,系统的性能也可以得到提升。相对地,如果访存指令的比例m该访存指令的阈值mt,则此段时间的任务集很有可能为“存储器密集型”的,也就意味着任务集的执行时间更多地由存储器访问时间而不是CPU频率决定,在这种情况下,如上所述,可通过适当降低CPU频率来降低CPU的功耗,从而降低整个计算机系统的功耗。如上所述,同样以MiBench为例,在该实际的计算机系统中,访存指令的比例m的范围大约在0.00015到0.015之间,因此在本发明的实施例中,将访存指令的阈值mt设置为最小访存指令比例m的十倍,即,0.0015。同样,在其它计算机系统中,优选地也将访存指令的阈值mt设置为最小访存指令比例m的十倍,即mt = 10*mfflin,实验证明该mt的取值具有较好的节能效果。之前提到,在现有技术部分中采用CPU的利用率作为指标来调整CPU频率,从而达到节省功耗的目的,在根据本发明实施例的调整CPU频率的装置中,也可以结合CPU的利用率来进行频率调整。在根据本发明实施例的调整CPU频率的装置中,可以进一步包括CPU利用率获取单元,用于在执行一应用程序任务集时获取CPU的利用率。并且,该频率计算单元进一步与CPU利用率获取单元连接,用于基于比例获取单元所获取的访问存储器的指令的比例和CPU利用率获取单元获取的CPU利用率来调整CPU的频率。图2是示出根据本发明实施例的另一动态调整CPU频率的装置的框图。如图2所示,该动态调整CPU频率的装置20用于一计算机系统,该计算机系统执行CPU密集型应用程序和存储器密集型应用程序,装置20包括:利用率获取单元200,用于在执行一应用程序任务集时获取CPU的利用率;比例获取单元210,用于在执行一应用程序任务集时获取访问存储器的指令的比例;频率计算单元220,与利用率获取单元200和比例获取单元210连接,用于基于利用率获取单元200获取的CPU利用率和比例获取单元210获取的访存指令的比例来计算调整之后的新CPU频率;以及频率调整单元230,与频率计算单元220连接,以将CPU的频率调整为所述新CPU频率。关于上述装置20的利用率获取单元,在现有技术当中,已经提到了可以获取一时间周期内CPU的利用率,例如,在Linux中,对于CPU或者多核CPU的每个核,通过计算/proc/stat的值来计算CPU的利用率。此外,也可以预先设置一 CPU利用率的控制目标,即CPU利用率的阈值%。
此外,与上述仅基于访存指令的比例来调整CPU频率的频率计算单元110类似,在基于CPU利用率和访存指令的比例两者来调整CPU频率的频率计算单元220中,也可以采用负反馈机制。具体地说,假设当前的CPU频率为fnOT,而调整之后的新CPU频率为fnOT,则可以采用比例控制器来计算调整之后的新CPU频率,其满足下式:fnew = Up1* (U-U0) +P2* (mt-m)公式 4具体地说,在根据本发明实施例的调整CPU频率的装置20中,进一步包括:利用率阈值设置单元,用于设置CPU利用率的阈值;比例阈值设置单元,用于设置访问存储器的指令的比例阈值。并且,频率计算单元220可以进一步包括:第一差值计算单元,与比例阈值设置单元和比例获取单元连接,用于计算访问存储器的指令m与访问存储器的指令的比例阈值mt之间的差值;第二差值计算单元,与利用率获取单元和利用率阈值设置单元连接,用于计算CPU的利用率u与CPU利用率的阈值Utl之间的差值,这样,可以基于上述第一差值和第二差值来计算调整之后的新CPU频率。与上述频率计算单元110类似,频率计算单元2201中的控制参数P1和P2也均为正数,并且,优选地,假设CPU的频率为f,则P1的取值范围为f/5到10*。而?2的范围为60*f到300*f。同样,以TI OMAP 4430CPU为例,优选的一组控制参数推荐值为P1 = 600MHz且P2 = 30000MHz。同样,控制参数依赖于具体的硬件即CPU和存储器参数以及驱动程序的实现,本发明的实施例并不意在对此进行任意限制。在经典的Linux系统的CPU控制算法中,通常配置如果CPU的利用率大于95%,则在下一个周期内 ,调高CPU频率。而考虑到可调度性,即CPU负载过高时,可能响应不够及时,在本发明的实施例中,优选地将目标利用率设为低于95%。以Panda Board为例,其CPU为0MAP4430(ARM Cortex A9双核),如果在上面运行UBUNTU11.04,则试验结果显示,将U0设置为85%效果较好。比例控制器是经典的控制器,由于比例控制器用于控制现在,其具有高度的收敛性,从而稳定性较佳,考虑计算机系统任务集的不确定性,采用比例控制器来控制CPU的频率可以获得稳定的输出,从而实现CPU频率的稳定控制。此外,本领域技术人员可以理解,在根据本发明实施例的频率计算单元220中,也可以采用其它机制来对CPU的频率进行调整,例如,假设当前的CPU频率为fnOT,而调整之后的新CPU频率为fn ,则可以采用如下式所示的机制来计算调整之后的新CPU频率:
ffnew = f— +Pl^iU-U0) +P2 ** (mt -所)公式 5
J mem其中,fmem是存储器的工作频率。此外,根据本发明实施例的频率计算单元220也可以米用比例积分微分控制器(PID:Proportional Integral Derivative Controller)来计算调整之后的新CPU频率,其中,该比例积分微分控制器除包含如上所述的用于控制现在的比例控制器之外,还包括用于消除累积的误差的积分控制器和用于控制将来的微分控制器。这里,本领域技术人员可以理解,根据本发明实施例的频率计算单元只要满足随着访存指令的比例m增大而调低CPU频率的要求即可,并不需要对于具体的调整方式进行任何不必要的限定。在上述根据本发明实施例的调整CPU频率的装置中,在频率计算单元基于访存指令的比例或者访存指令的比例和CPU利用率两者计算出调整之后的新CPU频率之后,由频率调整单元来控制调整计算机系统的CPU的频率。具体地说,根据本发明实施例的频率调整单元可包括一频率调节器,用于基于计算出新的CPU频率值来调整CPU的频率。在当前的计算机系统中,CPU能够支持的频率是离散的,并且作为CPU能够支持的频率存储在一频率列表中,因此,频率调节器可以基于计算出的新的CPU频率fMW,在频率列表中选择与fMW最接近并大于的值作为新的CPU频率。在根据本发明实施例的调整CPU频率的装置中,可以设置CPU频率的动态调整为周期性的,也可以按照其它具体情况,例如基于用户的指令来动态调整CPU的频率。优选地,在根据本发明实施例的调整CPU频率的装置中,基于任务集的运行周期性地调整CPU的频率,例如,可以将调整CPU频率的周期设置为T。在上述根据本发明实施例的调整CPU频率的装置中,由于更改CPU的频率需要一定的时间才能生效,这被称为转换时延(TransitionLatency,记为Tj,考虑更改CPU频率本身也需要消耗一定的能量,因此在本发明的实施例中,优选地将控制周期T选择为秒级,即几秒至几十秒。而在如上所述的Linux中的频率调节方法中,通常将控制周期设置为I;的一千倍到十秒。通过根据本发明实施例的调整CPU频率的装置,可以通过考虑访存指令的比例来调低CPU的频率,从而降低计算机系统的功耗。实验证明,当采用公式4来计算调整之后的新CPU频率,并以此进行频率调整的情况下,以TI OMAP 4430CPU为例,如果选择控制参数为 P1 = 600MHz 且 p2 = 30000MHz,且 mt = 0.0015,U。= 85%,则可以实现大约 15% -30%的功耗减少的效果,从而显著提高了计算机系统的性能。根据本发明实施例的另一方面,提供了一种动态调整CPU频率的方法,用于一计算机系统,所述计算机系统执行CPU密集型应用程序和存储器密集型应用程序,所述方法包括:在执行一应用程序任务集时获取访问存储器的指令的比例;基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率;以及将CPU的频率调整为所述新CPU频率。

在上述动态调整CPU频率的方法中,基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率的步骤具体包括:采用负反馈机制以通过下式计算调整之后的新CPU频率:fn = fnOT+Pl* (-m);其中,fnow是CPU的当前频率,fnew是调整之后的新CPU频率,m是访问存储器的指令的比例,且P1是控制参数。在上述动态调整CPU频率的方法中,在所述基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率的步骤之前进一步包括:设置访问存储器的指令的比例阈值;以及所述基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率的步骤具体包括:计算访问存储器的指令的比例与所述访问存储器的指令的比例阈值之间的差值;采用负反馈机制以通过下式计算调整之后的新CPU频率:fnOT =fnow+Pl*(mt-m);其中,fnow是CPU的当前频率,fnew是调整之后的新的CPU频率,m是访问存储器的指令的比例,mt是访问存储器的指令的比例阈值,且P1是控制参数。在上述动态调整CPU频率的方法中,在所述基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率的步骤之前进一步包括:获取CPU的利用率;设置CPU利用率的阈值;设置访问存储器的指令的阈值;以及所述基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率的步骤具体包括:计算访问存储器的指令的比例与所述访问存储器的指令的比例阈值之间的差值;计算所述CPU的利用率与所述CPU利用率的阈值之间的差值;采用负反馈机制以通过下式计算调整之后的新CPU频率:fnew = 4 +Ρι* (u-uQ)+p2* (mt-m);其中,fn 是CPU的当前频率,fnew是调整之后的新的CPU频率,m是访问存储器的指令的比例,mt是访问存储器的指令的比例阈值,u是CPU利用率,U0是CPU利用率的阈值,且P1和P2是控制参数。在上述动态调整CPU频率的方法中,所述获取访问存储器的指令的比例的步骤进一步包括:读取CPU的性能计数器以获得访问缓存失败的指令数N_te miss ;访问缓存失败的指令数NMC:hf;—miss除以总的指令数Ninstl^M。以计算出访问存储器的指令的比例m。在上述动态调整CPU频率的方法中,所述将CPU的频率调整为所述新CPU频率的步骤具体包括:基于所述调整之后的新CPU频率从CPU能够支持的频率列表中选择与所述调整之后的新CPU频率最接近的且大于所述调整之后的新CPU频率的频率值,并将CPU的频率调整为所述频率值。在上述动态调整CPU频率的方法中,以控制周期T周期性地调整CPU的频率,且控制周期T为秒级。图3是示出根据本发明实施例的动态调整CPU频率的方法的示意性框图。如图3所示,该方法用于一计算机系统,该计算机系统执行CPU密集型应用程序和存储器密集型应用程序,该方法包括:S1,在执行一应用程序任务集时获取访问存储器的指令的比例;S2,基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率;以及S3,将CPU的频率调整为所述新CPU频率。如上所述,通过根据本发明实施例的调整CPU频率的方法,可以通过考虑访存指令的比例来调低CPU的频率,从而降低计算机系统的功耗。另外,之前关于根据本发明实施例的调整CPU频率的装置所做的其它细节描述也可以等效地应用于这里所述的根据本发明实施例的调整CPU频率的方法,为了简洁便不再重复。如上所述,在根据本发明实施例的动态调整CPU频率的装置和方法中,优选地采用负反馈系统和比例控制器来实现CPU频率的动态调整。图4是示出根据本发明实施例的动态调整CPU频率的系统的示意性框图。如图4所示,在根据本发明实施例的系统运行时,设定一 CPU利用率的控制目标,如Utl,并假定Utl为最优值,并设定一访问存储器指令的门限值,如mt。随后,在每一个控制周期T,检测CPU或者CPU的每个核在周期T内的利用率U,比如在Linux中,这通过计算/proc/stat的值来计算。然后,通过利用软件读取CPU的性能计数器,来统计周期T内访问存储器的指令比例m,这里O < m < 1,如上所述,比如访问缓存失败的指令数N_temiss可认为是访存指令,因为访问缓存失败必然导致访问存储器,这样将m计算为访问缓存失败的指令数除以总的指令数
Ninstr—exec,艮P ^ Ncache—miss/Ninstr—execο
并且,将U-Utl作为比例控制器的输入,并将mt-m作为比例控制器的输入,比例控制器基于方程式fnew = UP1* (u-u0) +p2* (mt-m)来输出新的CPU频率值f。之后,频率调节器在CPU能支持的频率列表中选择与f最接近且大于f的值,作为CPU新的频率。这样,任务集基于该调整之后的CPU的新的频率运行,并持续一周期T,直到接收到下一个新的CPU频率。如上所述,当采用如图4所示的系统时,以TI OMAP 4430CPU为例,如果选择控制参数为P1 = 600MHz且p2 = 30000MHz,且设置mt = 0.0015,则可以实现大约15% -30%的功耗减少的效果,从而显著地减少了系统的功耗。通过根据本发 明实施例的调整CPU频率的装置和方法,可以通过考虑访存指令的比例来相应地调低CPU的频率,从而降低计算机系统的功耗。另外,本领域技术人员可以理解,根据本发明实施例的调整CPU频率的装置和方法可以具体实现为一计算机系统,该计算机系统执行CPU密集型应用程序和存储器密集型应用程序,且包括:控制器,用于在执行一应用程序任务集时获取访问存储器的指令的比例,基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率,并将CPU的频率调整为所述新CPU频率。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM, Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
权利要求
1.一种动态调整中央处理单元CPU频率的装置,用于一计算机系统,所述计算机系统执行CPU密集型应用程序和存储器密集型应用程序,所述装置包括: 比例获取单元,用于在执行一应用程序任务集时获取访问存储器的指令的比例;频率计算单元,与所述比例获取单元连接,用于基于所述比例获取单元所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率; 频率调整单元,与所述频率计算单元连接,以将CPU的频率调整为所述新CPU频率。
2.如权利要求1所述的动态调整CPU频率的装置,其中,所述频率计算单元采用负反馈机制,以通过下式计算调整之后的新CPU频率:fnew = fnow+Pl* (I); 其中,fnOT是CPU的当前频率,fnew是调整之后的新CPU频率,m是访问存储器的指令的比例,且P1是控制参数。
3.如权利要求1所述的动态调整CPU频率的装置,进一步包括: 比例阈值设置单元,用于设 置访问存储器的指令的比例阈值; 其中,所述频率计算单元进一步包括: 第一差值计算单元,与所述比例阈值设置单元和所述比例获取单元连接,用于计算访问存储器的指令的比例与所述访问存储器的指令的比例阈值之间的差值; 且所述频率计算单元采用负反馈机制,以通过下式计算调整之后的新CPU频率: fnew = fnow+Pl* (mt1) 其中,fnOT是CPU的当前频率,fnew是调整之后的新的CPU频率,m是访问存储器的指令的比例,mt是访问存储器的指令的比例阈值,且P1是控制参数。
4.如权利要求1所述的动态调整CPU频率的装置,进一步包括: 利用率获取单元,用于获取CPU的利用率; 利用率阈值设置单元,用于设置CPU利用率的阈值; 比例阈值设置单元,用于设置访问存储器的指令的比例阈值; 其中,所述频率计算单元进一步包括: 第一差值计算单元,与所述比例阈值设置单元和所述比例获取单元连接,用于计算访问存储器的指令的比例与所述访问存储器的指令的比例阈值之间的差值; 第二差值计算单元,与所述利用率获取单元和所述利用率阈值设置单元连接,用于计算所述CPU的利用率与所述CPU利用率的阈值之间的差值; 且所述频率计算单元采用负反馈机制,以通过比例控制器以下式计算调整之后的新CPU频率: fnew = fnow+Pl* (u~U0) +P2* (HltH); 其中,fnOT是CPU的当前频率,fnew是调整之后的新的CPU频率,m是访问存储器的指令的比例,mt是访问存储器的指令的比例阈值,u是CPU利用率,Utl是CPU利用率的阈值,且P1和P2是控制参数。
5.如权利要求1到4中任意一项所述的动态调整CPU频率的装置,其中,所述比例获取单元进一步包括: 指令数读取单元,用于读取CPU的性能计数器,以获得访问缓存失败的指令数Ncactemiss *比例计算单元,将访问缓存失败的指令数NMcte—-3除以总的指令数Ninsta—_以计算出访问存储器的指令的比例m。
6.如权利要求1到4中任意一项所述的动态调整CPU频率的装置,其中,所述频率调整单元具体包括: 频率调节器,用于基于所述调整之后的新CPU频率从CPU能够支持的频率列表中选择与所述调整之后的新CPU频率最接近的且大于所述调整之后的新CPU频率的频率值,并将CPU的频率调整为所述频率值。
7.如权利要求1到4中任意一项所述的动态调整CPU频率的装置,其中,以控制周期T周期性地调整CPU的频率。
8.一种动态调整CPU频率的方法,用于一计算机系统,所述计算机系统执行CPU密集型应用程序和存储器密集型应用程序,所述方法包括: 在执行一应用程序任务集时获取访问存储器的指令的比例; 基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率;以及 将CPU的频率调整为所述新CPU频率。
9.如权利要求8所述的动态调整CPU频率的方法,其中,所述基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率的步骤具体包括: 采用负反馈机制以通过下式计算调整之后的新CPU频率:fnew = fnow+Pl* (I); 其中,fnOT是CPU的当前频率,fnew是调整之后的新CPU频率,m是访问存储器的指令的比例,且P1是控制参数。
10.如权利要求8所述的动态调整CPU频率的方法,其中,在所述基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率的步骤之前进一步包括: 设置访问存储器的指令的比例阈值;以及 所述基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率的步骤具体包括: 计算访问存储器的指令的比例与所述访问存储器的指令的比例阈值之间的差值; 采用负反馈机制以通过下式计算调整之后的新CPU频率:fnew = fnow+Pl* (mt1); 其中,fnOT是CPU的当前频率,fnew是调整之后的新的CPU频率,m是访问存储器的指令的比例,mt是访问存储器的指令的比例阈值,且P1是控制参数。
11.如权利要求8所述的动态调整CPU频率的方法,其中,在所述基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率的步骤之前进一步包括: 获取CPU的利用率; 设置CPU利用率的阈值; 设置访问存储器的指令的比例阈值;以及 所述基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率的步骤具体包括: 计算访问存储器的指令的比例与所述访问存储器的指令的比例阈值之间的差值; 计算所述CPU的利用率与所述CPU利用率的阈值之间的差值;采用负反馈机制以通过下式计算调整之后的新CPU频率: fnew = fnow+Pl* (u~U0) +P2* (HltH); 其中,fnOT是CPU的当前频率,fnew是调整之后的新的CPU频率,m是访问存储器的指令的比例,mt是访问存储器的指令的比例阈值,u是CPU利用率,Utl是CPU利用率的阈值,且P1和P2是控制参数。
12.如权利要求8到11中任意一项所述的动态调整CPU频率的方法,其中,所述获取访问存储器的指令的比例的步骤进一步包括: 读取CPU的性能计数器以获得访问缓存失败的指令数miss ; 访问缓存失败的指令数NcacteJliss除以总的指令数Nins& _。以计算出访问存储器的指令的比例m。
13.如权利要求8到11中任意一项所述的动态调整CPU频率的方法,其中,所述将CPU的频率调整为所述新CPU频率的步骤具体包括: 基于所述调整之后的新CPU频率从CPU能够支持的频率列表中选择与所述调整之后的新CPU频率最接近的且大于所述调整之后的新CPU频率的频率值,并将CPU的频率调整为所述频率值。
14.如权利要求8到11中任意一项所述的动态调整CPU频率的方法,其中,以控制周期T周期性地调整CPU的频率。
15.一种计算机系统,用于执行CPU密集型应用程序和存储器密集型应用程序,所述计算机系统包括: 控制器,用于在执行一应用程序任务集时获取访问存储器的指令的比例,基于所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率,并将CPU的频率调整为所述新CPU频 率。
全文摘要
提供了动态调整中央处理单元CPU频率的装置和方法。该装置用于一计算机系统,该计算机系统执行CPU密集型应用程序和存储器密集型应用程序,该装置包括比例获取单元,用于在执行一应用程序任务集时获取访问存储器的指令的比例;频率计算单元,与所述比例获取单元连接,用于基于所述比例获取单元所获取的访问存储器的指令的比例成反比地计算调整之后的新CPU频率;频率调整单元,与所述频率计算单元连接,以将CPU的频率调整为所述新CPU频率。通过根据本发明实施例的调整CPU频率的装置和方法,可以通过考虑访存指令的比例来调低CPU的频率,从而降低计算机系统的功耗。
文档编号G06F1/32GK103246340SQ20121002494
公开日2013年8月14日 申请日期2012年2月6日 优先权日2012年2月6日
发明者陈虎 申请人:索尼公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1