中央处理单元调度方法和装置 【发明领域】
本发明涉及一种使功耗最小的中央处理单元(此后称为“CPU”)调度方法。
背景技术
现有技术中微处理器的功率管理通常需要额外的硬件或需要向微处理器提供大量电力,而不考虑微处理器的功耗。图1表示一个微处理器和用于控制MSM系列芯片的功耗的额外硬件的现有技术组合。图1中显示了:CPU1,10,100,例如由高通公司(Qualcomm Co.)制造的MSM 3100;监视部分50,用于监视CPU 1,10,100的操作状态;和控制部分40,例如PM 100,用于响应从监视部分50产生的输出信号控制CPU 1,10,100。而且,在该现有技术例子中,商业操作系统(OS)和其它部分实时操作系统并不考虑CPU 1,10,100地功耗。
图1中表示的系统的操作开始于,由监视部分50监视CPU 1,10,100的操作状态,然后根据监视结果把来自监视部分的输出信号施加到控制部分40。然后,控制部分40接收来自监视部分50的输出信号,并根据所接收的数据控制多个CPU 1,10,100的操作状态以调节CPU的电力(电源)使用,其中操作状态可以是运行(Run),等待(Wait),休眠(Sleep)或就绪(Ready)等等。
但是,如果使用这种用于调节CPU功耗的现有技术方法,监视部分50从多个CPU 1,10,100接收表示它们的操作状态的输出信号,然后把输出信号施加到单独的硬件,其中控制部分40控制CPU的功耗。这个附加的控制部分40由于这个额外的硬件而导致制造成本增加,并且导致制造过程的复杂性增加。
上述参考内容被适当地结合于此,用于对其它或备择细节、特征和/或技术背景进行适当的说明。
【发明内容】
本发明的一个目的是至少解决上述问题和/或缺点并至少提供下面描述的优点。
本发明的一个目的是通过提供一种CPU调度方法和装置来至少解决上述问题和/或缺点,其中区域变量Wk,Tk,Ck,Ek等等和一个嵌入式系统的时钟被输入到装置中以依据多个进程的操作状态(即,运行,等待,休眠)控制CPU的时钟,根据进程的状态使用区域变量的值来改变功耗。
本发明的另一个目的是提供CPU调度,其中依据进程的状态控制CPU的时钟以减小功耗,包括:把一个嵌入式系统的时钟函数代入调度器函数(scheduler function),把调度完成时为止的等待时间与给定来满足实时条件的执行时间和允许误差范围之和进行比较,依据比较结果改变一个进程的时钟状态,针对改变的调度时钟和时钟改变之前的调度时钟之间的差来计算逝去时间以控制等待时间,并使用新确定的时钟的值设置CPU的时钟。
本发明的另一个目的是提供一种用于调度CPU的装置,具有:一个适于控制一个嵌入式系统的整体操作的CPU,配备有PLL以设置CPU的操作时钟;和一操作软件(S/W),由控制器控制,并包括一个进程形式的应用程序和一个操作系统(OS),其中操作系统(OS)具有一个调度器,适于监视CPU上执行的所有进程的状态并依据进程状态的监视结果控制CPU的时钟,并且可以把一个存储器连接到CPU和操作S/W。
本发明的另一个目的是提供一种方法,其中通过使用一个嵌入式系统的时钟函数来监视由调度器确定和管理的各进程的操作状态,以向每个进程提供有差别的电力,使得在满足进程的实时条件的同时保持最小时钟,从而有可能在嵌入式系统中长时间地使用电源。
本发明的另一个目的是提供一种调度CPU的方法,其中依据各进程的状态控制CPU的时钟速度以减小功耗,包括:把一嵌入式系统的时钟函数代入调度器函数,把调度完成时为止的等待时间与给定来满足实时条件的执行时间和允许调度误差的误差范围之和进行比较,依据比较结果改变一个进程的时钟速度状态,针对改变的调度时钟和时钟速度状态改变之前的调度时钟之间的差来计算逝去时间以控制等待时间,并使用新确定的时钟速度的值设置CPU的时钟速度。
本发明的另一个目的是提供一种用于调度CPU的装置,具有:一个适于控制嵌入式系统的整体操作的CPU,该CPU配备有PLL以控制嵌入式系统的操作时钟和保持一个用于CPU内实时控制的时钟;一个操作软件,包括一个进程形式的应用程序和一个操作系统(OS),该操作系统(OS)具有一个调度器,用于监视CPU上执行的所有进程的状态和依据进程状态的监视结果控制CPU的时钟;和一个存储器,连接到CPU和操作S/W。
本发明的另一个目的是提供一种控制CPU以控制功耗的方法,包括:把时钟速度设置到预定值;测量完成调度所需的等待时间;测量用于满足实时条件的执行时间;确定等待时间是否大于执行时间;并且改变提供给CPU的电力量,其中如果等待时间大于执行时间,则增加提供的电力,而如果等待时间小于执行时间,则降低提供给CPU的电力。
本发明的另一个目的是提供一种通过调度CPU来控制CPU中功耗的方法,包括:把一个进程的系统检查函数代入时钟的调度器函数;确定执行时钟的调度器函数所需的第一数量时间;确定满足实时条件所需的第二数量时间;确定第一数量时间是否大于第二数量时间;并改变一个进程的时钟速度,其中如果第一数量时间大于第二数量时间,则降低时钟速度,而如果第一数量时间小于第二数量时间,则增加时钟速度。
本发明的其它优点、目的和特征将部分地在下面的说明中提出,部分地可以由本领域技术人员在审看了以下说明后了解,或者可以通过本发明的实践获得。可以通过所附权利要求中特别指出的方式实现和获得本发明的目的和优点。
【附图说明】
将参考附图对本发明进行详细说明,其中相同标号表示相同单元:
图1是表示根据现有技术的CPU操作控制系统的方框图;
图2是表示实现本发明优选实施例的嵌入式系统的结构的方框图;
图3是表示根据本发明优选实施例的CPU调度方法的流程图。
优选实施例的详细说明
图2是表示根据本发明优选实施例的嵌入式系统1的结构的方框图。参考图2,嵌入式系统1优选包括:CPU2,例如一个内置的微处理器,用于控制嵌入式系统1的整体操作;操作软件/系统S/W3,用于操作嵌入式系统1;和存储器5,用于存储信息,时间条件,队列,和调度器队列。
CPU2可以配备有PLL4以控制嵌入式系统1的操作时钟。PLL4还可以用于保持一个用于CPU2中实时控制的时钟。
操作S/W可以包括以一个使用CPU2的进程形式的应用程序3b和操作系统(OS)3a,其可以具有一个调度器,该调度器可以是操作S/W3的核心部分。操作系统(OS)3a的调度器可以监视CPU2上执行的所有进程的状态并可以依据进程状态的识别结果控制CPU的时钟。可以依据操作系统(OS)3a中的各进程的每个状态(运行,等待,休眠,空闲等等)保持一个独立的状态队列,即,运行,等待,或休眠。
多个进程可以在嵌入式系统1的操作S/W3中执行CPU2的操作,并且这些进程可以包括在图2的操作S/W3的操作系统3a的调度器中。为此原因,为了保持具有不同状态的多个进程的性能,可以使用操作系统3a的调度器和CPU2来保持CPU2的时钟的性能。同时,当产生每个进程Pj,Pk等等时,可以指定一个用于调度的时间量子(Time Quantum),该时间量子可以被认为是调度器的调度变量。
图3是表示用于执行CPU调度方法的本发明优选实施例的流程图。首先,可以执行根据本发明的多个进程的运行、等待、休眠状态的转换。最初,在操作系统(OS)3a的调度器函数的执行完成之前,可以添加一个用于确定嵌入式系统1的时钟的函数,使得调度器根据调度时间的监视结果改变进程的状态。这可以通过以下方式完成:把主电源电压施加到一个改变的进程(即,一个运行状态的进程),并把第二电源电压施加到一个对应于等待或休眠状态的进程,使得可以有效地使用电源。
可以使用各种CPU时钟,因为功率集中不是由所使用的时钟类型确定,本发明通过从预先确定的时钟设置中可调整地进行选择来使用一个时钟。例如,可以使用一个全球变量CLKt作为本发明的系统中可用的CPU时钟的变量,与具有任意进程Pk的时钟相关联的作为区域变量的信息还可以包括变量CLKk,Tk,Ck,Wk,Ek等等。此处,CLKk可以表示对应于进程k的一组CPU时钟,Tk可以表示给定来满足实时条件的执行时间,Ck可以表示一个进程已经被执行的时间期间,Wk可以表示完成一个调度所需的等待时间,Ek可以表示一个调度的允许误差。
基于上述变量,可以使用进程时钟的控制函数Clock_up()来控制对应的进程时钟。如果函数Clock_up()增加并变成Clock_up(+1),那么可以使用CLKk之后的(一个进程Pk在当前等待队列中具有的)第一时钟元素(clock element)来增加时钟速度。另一方面,如果函数Clockup()降低并变成Clock_up(-1),那么使用CLKk之前的(进程Pk已经使用的)第二时钟元素来降低时钟速度。从上述可以看出,当系统在进程时钟的控制函数增加时使用第一时钟元素时,时钟可以变快,而当进程时钟的控制函数降低时使用第二时钟元素时,时钟可以变慢。
另一个控制函数是实时时钟的控制函数Clock advance(),其可以用于控制存在于运行队列、休眠队列、和等待队列中的每个进程的实时时钟。即,函数Clock_advance()可以是这样一个函数,其中可以在计算了前一调度时钟和在扫描所有现存进程期间确定的当前调度时钟之间的逝去时间后,控制每个进程的等待时间Wk。第三控制函数是一个用于设置时钟的控制函数Clock_set(),其可以是这样一个函数,即使用新确定的时钟CLKs值设置CPU的时钟,以改变嵌入式系统1的时钟。
第四函数是函数Insert_new_process(),其可以用于在选择一个新进程时初始化一个对应的区域变量并因此进入嵌入式系统1中的运行队列。函数Insert_new_process()可以是这样一个函数,其中可以针对一个新插入的进程Ps把区域变量CLKs初始化为一个CLK0值,并且Ts可以从一个用户给出,并且Ws也被设置为0。
图3中显示的系统的操作首先是在以下假设下设置调度算法,即第一进程Pj可以是一个当前运行的进程,第二进程Pk可以是一个能从休眠队列或等待队列取出的进程。在步骤301,用于操作本发明算法的时钟函数Tk,Ck,Wk和Ek,一个嵌入式系统的Clock_up(1),Clock_advance(),Clocl_set()和insert_new_process()可以被代入一个调度器函数。然后可以使用这些时钟函数来控制包括在图2的操作S/W的操作系统3a的调度器中的所有进程的时钟,并且可以在CPU2上执行这些时钟函数。
在步骤302,可以使用步骤301的代入时钟函数把一个等待时间Wk(完成一个调度的时间)与给定来满足实时条件的执行时间Tk和调度的允许误差范围Ek之和进行比较。在步骤302,如果等待时间Wk大于执行时间Tk和允许误差的误差范围Ek之和,那么在步骤303,对应于进程CLKk的CPU时钟的设置把进程时钟的控制函数增加到Clock_up(+1),使得在步骤305中设置一个比当前时钟状态(Pj:一个一直运行到现在的进程)高一个步长的时钟(Pj:等待/休眠进程)。
另一方面,在步骤302,如果等待时间Wk不大于执行时间Tk和允许误差的误差范围Ek之和,那么在步骤304,对应于进程CLKk的CPU时钟的设置降低进程时钟的控制函数Clock_up(-1),使得在步骤305中设置一个比当前时钟状态(Pk:等待或休眠进程)低一个步长的时钟(Pk:运行进程)。结果,可以改变进程的时钟状态。
在步骤306,可以把实时时钟的控制函数Clock_advance()设置为一个函数,其中可以在前一调度时钟和在扫描所有现存进程期间确定的当前调度时钟之间计算一个差值的逝去时间。由用于控制运行队列、休眠队列和等待队列中存在的每个进程的实时时钟的控制函数Clock_advance()确定该计算,使得可以控制每个进程的等待时间Wk来执行步骤302。
在步骤307,可以使用在步骤306控制的等待时间Wk和作为新确定时钟值的区域变量Tk,Ck,Ek或CLKk的值,把CPU的时钟设置为用于改变嵌入式系统1的时钟的Clock_set()。然后,在步骤308,当新插入的进程是Ps时,可以针对新插入的进程Ps把系统时钟函数中的区域变量CLKs初始化为CLK0,Ts可以由用户给出,并且当一个进程进入嵌入式系统1中的运行队列时,可以通过用于初始化一个对应区域变量的函数Insert_new_process()把Ws设置为0。
从以上可以看出,根据本发明的优选实施例,可以通过使用嵌入式系统的时钟函数,依据各进程的状态控制CPU的时钟,使得可以向每个进程提供不同的电力。这避免了向所有进程提供大量电力,从而有效使用CPU的电源以使功耗最小。
上述实施例仅是示例性的,不应理解为对本发明的限制。本发明的教导可以容易地应用于其它类型的装置。本发明的描述是示意性的,不是为了限制权利要求的范围。本领域技术人员可以进行很多替换,修改和变型。在权利要求中,装置加功能的语句是为了涵盖执行所述功能的结构,不仅包括结构的等同物,也包括等同物的结构。