在实时系统中测量中央处理器任务占用率的方法和装置的制作方法

文档序号:6588614阅读:127来源:国知局
专利名称:在实时系统中测量中央处理器任务占用率的方法和装置的制作方法
技术领域
本发明涉及实时系统,特别涉及在实时系统中测量任务的CPU占用率的装置和方法。
应用在实时系统中的调度机制分为根据相应任务优先级的速率单调(RM)调度、最早截止期优先(EDF)调度和加权整形队列(WFQ)调度,其根据调度比率共享CPU。


图1显示了根据现有技术的采用速率单调调度的实时系统的示意结构图。如图1所示,实时系统10,即DCS包括用于存储与调度相关程序的ROM 11,用于下载由ROM 11读取的程序的RAM 12以及根据下载到RAM 12中的程序来执行多个任务的CPU 13。DCS与外部传输系统20实现了数据通信。
在上述实时系统的操作中,CPU 13从ROM 11下载与速率单调调度相关的程序到RAM 12中,然后根据所下载相应程序来执行一项与速率单调调度系统相关联的任务。
如果有多项任务与该速率单调调度系统相关,图2中所示的任务A、B和C的优先级由速率单调调度设定为任务A>任务B>任务C。CPU 13依次执行最高优先级的任务A,然后执行任务B,继而执行任务C。当正在执行任务C、但优先级高于任务C的任务B需要被执行时,CPU 13将中止执行任务C而先去执行任务B,然后执行任务C的剩余部分,即先前已经被处理但没被处理完的部分。同样,当有多个任务等待速率单调调度系统去执行时,实时系统应该设计成根据任务的优先级、周期以及其执行内容数量来平衡地执行所有的任务。
比如说,参照图3,如果这些任务的执行周期被称为Ta、Tb和Tc,而其执行时间分别定为ta、tb和tc,这样任务A、B、C的CPU占用率就分别为ta/Ta、tb/Tb、tc/Tc。在这种情况下所有任务的CPU总占有率(ta/Ta+tb/Tb+tc/Tc)将小于1。
然而,总的CPU占有率小于1就不能保证每一项任务在其周期内正确地执行。这是因为低优先级的任务不能在其周期内执行,而且如果拥有高优先级的任务占用了其相应周期,那么该任务就极可能被延迟。比如,如果拥有更高优先级的任务A和B已经占用了CPU 13,在图3所示的所有任务中具有最低优先级的任务C就不能在其周期Tc中被执行,而且这种失效是很难被检测到的。
此外,即使在现有技术的实时系统中若干任务被正确地执行了,但要测量每一项任务的CPU占用率却是不可能的。在需要CPU执行许多工作或生成辅助例程时来测量CPU的占用率也是很困难的。这项任务通常不能和其它任务共享CPU。
遗憾的是,现有技术的实时系统不能检测到是否根据调度正确地执行了每项任务或者探测到相应任务的CPU占用率是多少。因而,该实时系统就不能获得每一项任务的精确平衡,也不能用任务设计和调试来反映CPU的占用率。
在此引用上述参考文献以帮助更好地理解附加或可选的细节、特征和/或技术背景。
本发明的一个目的是提供一种能够在实时系统中测量CPU任务占用率的装置和方法。
本发明的另一个目的是提供一种能够检测是否每一项任务都在各自执行周期内被正确执行了的装置和方法。
为了全部或部分地实现至少上述目的,在此提供了一种在实时系统中测量CPU任务占用率的装置,包括用于在标志位中注册待测任务的任务注册单元,用于在标志位中选择和输出具有高优先级标志位的任务的位地址的任务选择模块,用于处理由任务选择模块输入的位地址从而生成计数信号的计数信号发生单元。该装置还包括根据计数信号来计数任务执行时间的计数单元,以及用于在任务执行时设置标志位并计算执行次数的CPU。CPU任务占用率可以根据计数单元的计数值计算出来。
从本发明的另一方面来说,用于测量实时系统CPU任务占用率的装置包括用以在标志位中注册待测任务的任务注册单元,用于存储已注册任务位地址的寄存器单元,用于出在标志位中选择和输具有高优先级标志位的任务的位地址的任务选择模块,其中在任务注册单元中设置标志位。该装置还包括通过运算从寄存器单元输出的位地址与从任务选择模块输出的地址来生成计数信号的逻辑运算单元,根据计数信号来计算任务执行时间的计数单元,以及用于在任务执行时设置标志位并计算执行次数的CPU。CPU任务占用率可以根据计数单元的计数值计算出来。
从本发明的下一方面来说,用于测量实时系统CPU任务占用率的装置包括用以在标志位中注册待测任务的任务注册单元,用于在标志位中选择和输出具有高优先级的标志位地址的任务选择模块,其中在任务注册单元中设置标志位。在此还提供了对由任务选择模块输出的位地址进行解码以生成计数信号的解码器,根据解码器的计数信号来计算任务执行时间的计数单元,以及用于在任务执行时设置标志位并计算执行次数的CPU。CPU任务占用率可以根据计数单元的计数值计算出来。
从本发明的另一方面来说,一种用于测量实时系统CPU任务占用率的方法包括在标志位中注册任务,在任务执行时设置标志位,在至少一组标志位中的至少一个地址中输出更接近于最低有效位(LSB)的标志位的地址。该方法还包括通过对输出地址解码来生成计数信号,以及根据计数信号通过计算任务执行时间来计算CPU任务占用率。
本发明的其它优点、目的和特征有一部分将在以下的说明书中进行阐述,有一部分则对于本领域的技术人员经过对以下内容的考察后会变得明了,或者通过本发明的实践而体验到。通过在说明书及其权利要求书以及附图具体指出的结构可以实现和获得本发明的目的和其它优点。
附图为本发明提供了更深入的了解,并组成本申请的一部分,它们图示了本发明的优选实施例,并且和说明书一起解释本发明的原理。附图中图1是根据现有技术的RM调度的实时系统的示意结构图;图2是根据图1中优先级的所有任务的优选执行操作的时序图;图3是根据图2中任务执行周期的所有任务的非优选执行操作的时序图;图4是根据本发明第一优选实施例的用于测量实时系统CPU任务占用率的装置的结构方框图;图5是显示图4中测量实时系统CPU任务占用率操作的时序图;以及图6显示的是根据本发明第二个优选实施例的用于测量实时系统CPU任务占用率装置的结构方框图。
优选实施例详细说明现在对本发明的优选实施例进行具体阐述,实例将结合附图进行说明。
在实时系统中,每一项任务都应该在各自执行周期中执行。为了检测到每项任务是否在每个周期中均被执行,就必须每当一项任务在一个周期内被执行时,计数一个执行次数。比如说,如果任务A、B和C的周期分别是10ms、20ms和1s,那么在整个1000秒执行时间内任务A、B和C应该被执行100000、50000和1000次。因此本发明使用一个公共变量来计数任务执行次数并检测每一任务的执行次数。
此外,本发明首先实际地测量每项任务的执行时间,并测量出被测执行时间和非执行时间之间的比例;然后计算出每项任务的系统执行占用率,即CPU占用率。
图4是根据本发明的一个优选实施例的用于测量实时系统CPU任务占用率装置的结构方框图。如图4所示,用于测量实时系统中CPU任务占用率的装置包括用于注册待测任务的任务注册单元100,用于选择和输出任务位地址的任务选择模块110,其中的任务具有在任务注册单元100中由CPU 140设置的诸位中的高的优先级。该装置还包括用于处理由任务选择模块110输入的位地址以生成计数信号的计数信号发生单元120,用于根据计数信号发生单元110的计数信号来计数任务执行时间的计数单元130,以及用于设置任务注册单元100的任务注册位并根据计数单元140的计数值计算执行次数和CPU任务占用率的CPU 140。此外,该装置还分别包括键输入单元150和显示器160。
如图4所示,任务注册单元100包含从0到2n-1的2n个标志位,它们可以根据优先级注册待测任务。当任务被执行时每个标志位由CPU140置值或复位。
计数信号发生单元120包括多个寄存器11a到11N,和多个“同”门(exclusive NOR gate)21a至21n;其中寄存器11a到11N用于存储在任务注册单元100中被寄存任务的位地址,“同”门21a至21n用于对通过由任务注册单元100和寄存器11a到11N输出的位地址的运算来输出计数信号。从而,多个寄存器11a到11N与多个“同”门21a至21n可以分别称为寄存器单元和逻辑运算单元。
计数单元130包括多个“与”门31a至31N,用于将“同”门21a至21n的输出信号与计数使能信号CEN相加。多个计数器32a至32N根据通过“与”门31a至31N和存储着计数器32a至32N的计数值的多个寄存器33a至33N传来的计数信号执行计数操作。该装置用于测量上述实时系统中CPU 140任务占用率的操作将结合附图加以解释。为了方便解释,被测任务将分别被称为A、B和C。
用户通过键输入单元为任务输入优先级A>B>C并输入任务A、B和C。CPU 140根据各自优先级将待测任务A、B和C分配到任务注册单元100。即CPU 140根据任务A、B和C的优先级分别为它们分配若干标志位。这样具有越高优先级的任务将被分配到越靠近最低有效位(LSB)的位中。从而任务A分配到位0,而任务B和任务C分别被分配到位1和位2。
一旦待测任务被注册,CPU 140依次将分配给任务A、B和C的位0到位2的地址(“000”、“001”和“010”)存储到计数信号发生单元120的寄存器11a到11c中去。当待测任务地址的注册与相应任务完成后,CPU140就向计数单元130输出一个复位信号RST和一个计数使能信号CEN来起动计数器31a至31N的复位和使能操作。从而,如图5所示,任务A、B和C就根据其各自优先级被执行。
一旦任务的执行被启动,CPU 140就在执行任务A、B和C时将任务注册单元100的位0到位2置位成“1”。当执行完成时,CPU 140将这些位复位为“0”。具体而论,当任务执行被启动,如图5所示CPU 140将使分配给任务C的位2置位,并且如图5所示任务选择模块110最后输出位2的地址“010”。
计数信号发生单元120从任务选择模块110中接收这个地址来选择计数器31a至3 1N以便计数任务执行时间。即当任务选择模块110和寄存器11a到11N输入相同的地址时,计数信号发生单元120的“同”门21a至21N生成计数信号。
当从当前任务选择模块110输出的地址与从寄存器11c中输出的地址一致时,图5中的“同”门21c就生成高电平的计数信号。而图5中“同”门21a,21b,21d,......,21N将复位生成如图5所示的低电平的计数信号。这样,高电平计数信号就通过计数单元130的“与”门31c输入到计数器32c中。而后当高电平计数信号被输入时,计数器32c就计数任务C的执行时间并将计数出的执行时间存入寄存器33c。但是其余的计数器31a,31b,31d,......,31N将不会执行计数动作。
随后,当图5中拥有高优先级的任务B的执行时间在执行任务C的过程中出现时,CPU 140将使“位1”置位。位1和位2可能同时被置位。然而,由于任务选择模块110输出被分配给具有高优先级任务的标志位的地址,那么接近LSB的标志位的地址,比如说,图5中位1的地址“001”,将会从任务选择模块110中输出。因此,计数信号发生单元120的“同”门21b生成高电平计数信号;并且为了将计数的执行时间存储到寄存器33c中,计数器31b将计数任务B的执行时间。
此外,如图5所示,当具有高优先级的任务A的执行时间在任务B的执行过程中紧急出现时,CPU 140将位0的值置位给所有的三个位,即位0,位1和位2。同时,任务选择模块110输出三个位中被分配给任务A的位0的地址“000”。因此,“同”门21a生成类似图5中的高电平计数信号;当该计数信号被输入时计数器31a将计数任务A的执行时间,并把计数出的执行时间存储到寄存器33c中去。
随后,当任务A执行完毕,任务选择模块110输出位1的地址“001”,该位保持当前设置状态以便启动计数器32b来计数任务B的执行时间。CPU 140没能先执行任务B。进而当任务B执行完毕,任务选择模块110输出位2的地址“010”,该位保持置位状态以便启动计数器32c来计数任务C的执行时间。CPU 140也没能先执行任务C。这样,本发明在预定寄存器中存储待测任务地址,然后当具有和存储在寄存器中的地址相同的标志位在任务注册单元100中被置位时,启动计数器32a至32N来计数任务A、B、C的执行时间。
当任务A、B、C完全执行完毕,CPU 140就读取存储在计数单元130的寄存器33a至33N中的计数值,同时为了计算任务A、B、C各自的CPU占用率,CPU 140将相应的计数值与被测时间相比较。这样,计数值与被测时间的比率就是任务A、B、C各自的CPU占用率。此外,全部任务的CPU总占用率可以通过将任务A、B、C的CPU占用率相加来获得。完成计算后,CPU将在显示器170上显示出每项任务各自的CPU占用率和总的CPU占用率以及每项任务是否在每个周期均被执行的信息。
图6显示的是根据本发明的另一个优选实施例的用于测量实时系统CPU任务占用率装置的结构方框图。在这个第二优选实施例中,计数信号发生单元200被用作解码器。与本发明第一个优选实施例中相同的元件将用相同的数字表示。
参照图6,计数信号发生单元200包括一个解码器,它可以根据从任务选择模块110输入的地址来选择计数器31a至31N去计数任务的执行时间。当一个位地址由任务选择模块110输入时,计数信号发生单元200对相关地址进行解码来生成计数信号。相应的计数信号通过计数单元130的“与”门31a至31N被输入计数器32a至32N。随后接收高电平计数信号的计数器32a至32N被启动以计数当前被执行任务的执行时间。
因此,根据本发明的测量实时系统CPU任务占用率的装置测量每一项任务的CPU占用率,从而能更有效完成任务设计和调试。此外,本发明可精确地测量将应用于实时系统中的CPU任务占用率。因此,即使有多个任务被装载在任务例程中并需要附加例程,本发明也能够与其他任务一起有效地分配CPU占用率。除此之外,本发明还可以提高任务处理的精确性。
上述的实施例和优点仅仅是示例性的,并不对本发明构成限制。本发明可以容易地应用于其它类型的装置。本发明的说明书是用于进行说明,不限制权利要求的范围。对于本领域的技术人员,很显然可以有很多的替换、改进和变化。在权利要求书中,装置加功能的语句旨在涵盖实现所述功能的结构,其不仅包括结构的等同,也包括等同的结构。
权利要求
1.一种用于测量实时系统中任务的CPU占用率的装置,包括用于在标志位中注册待测任务的任务注册单元;用于在设置的标志位中选择具有高优先级的标志位的地址的任务选择模块;用于处理由任务选择模块输入的位地址并生成计数信号的计数信号发生单元;用于根据计数信号来计数任务执行时间的计数单元;以及用于在任务执行时设定标志位并根据由计数单元生成的计数值计算执行次数和任务的CPU占用率的CPU。
2.根据权利要求1所述的装置,其中,任务注册单元包括用于根据优先级来注册待测任务的2n个标志位。
3.据据权利要求1所述的装置,其中,具有高优先级的任务被分配在最低有效标志中。
4.根据权利要求1所述的装置,其中,计数信号发生单元包括用于存储在任务注册单元中注册的任务的位地址的寄存器单元;以及通过对任务注册单元输出的位地址进行运算而输出计数信号的逻辑运算单元。
5.根据权利要求4所述的装置,其中,当寄存器单元与任务选择模块输出相同地址时,逻辑运算单元生成计数信号。
6.根据权利要求4所述的装置,其中,逻辑运算单元包括多个“同”门。
7.根据权利要求1所述的装置,其中,计数单元包括多个用于根据使能信号来传输计数信号的“与”门;多个用于根据从“与”门传来的计数信号执行计数操作的计数器;以及多个用于存储计数器的输出值的寄存器。
8.根据权利要求1所述的装置,其中,计数信号发生单元包括一个解码器。
9.一种用于在实时系统中测量任务的CPU占用率的装置,包括用于在标志位中注册待测任务的任务注册单元;用于存储已注册任务的位地址的寄存器单元;用于在任务注册单元内的设置标志位中选择和输出具有高优先级的标志位的地址的任务选择模块;用于运算由寄存器单元输出的位地址和由任务选择模块输出的地址从而生成计数信号的逻辑运算单元;用于根据计数信号来计数任务执行时间的计数单元;以及用于在任务执行时设定标志位并根据计数单元生成的计数值计算执行次数和任务的CPU占用率的CPU。
10.据权利要求9所述的装置,其中,当寄存器单元与任务选择模块输出相同的地址时,逻辑运算单元生成计数信号。
11.据权利要求10所述的装置,其中逻辑运算单元包括多个“同”门。
12.根据权利要求9所述的装置,其中,计数单元包括多个用于根据使能信号来传输计数信号的“与”门;多个用于根据从“与”门传来的计数信号执行计数操作的计数器;以及多个用于存储计数器的输出值的寄存器。
13.一种用于在实时系统中测量任务的CPU占用率的装置,包括用于在标志位中注册待测任务的任务注册单元;用于在任务注册单元内的设置标志位中选择和输出具有高优先级的标志位的地址的任务选择模块;用于对任务选择模块输出的位地址进行解码以生成计数信号的解码器;用于根据解码器的计数信号计数任务执行时间的计数单元;以及用于在任务执行时设定标志位并根据计数单元生成的计数值计算执行次数和任务的CPU占用率的CPU。
14.根据权利要求13所述的装置,其中,计数单元包括多个用于生成计数信号和使能信号的“与”门;多个用于根据从“与”门传来的计数信号执行计数操作的计数器;以及多个用于存储计数器的输出值的寄存器。
15.一种在实时系统中测量任务的CPU占用率的方法,包括根据优先级在标志位中注册待测任务;存储已注册任务的位地址;在执行任务时设置标志位;输出所设置的标志位中具有高优先级的标志位的地址;通过比较所输出的位地址和所存储的位地址来计数任务的执行时间;以及用计数值来计算相应任务的CPU占用率。
16.根据权利要求15所述的方法,还包括显示计算出的CPU占用率。
17.根据权利要求15所述的方法,其中,按优先级的升序把任务分配到最低有效位(LSB)的标志位。
18.根据权利要求15所述的方法,其中,当输出的位地址与存储的位地址相同时,计数执行时间。
19.一种在实时系统中测量任务的CPU占用率的方法,包括在标志位中注册任务;在执行任务时设置标志位;输出并分配更接近于至少一组标志位中的最低有效位(LSB)的标志位的地址;通过对输出地址进行解码而生成计数信号;以及根据计数信号计数任务的执行时间,以计算任务的CPU占用率。
20.根据权利要求19所述的方法,还包括通过多个“与”门生成计数信号和使能信号;根据从“与”门传来的计数信号,由多个计数器来执行计数操作;以及在多个寄存器中存储计数器的输出值。
全文摘要
一种用于在实时系统中测量任务的CPU占用率的装置。该装置包括用于在标志位中注册待测任务的任务注册单元,以及用于在设置的标志位中选择和输出具有高优先级的任务的位地址的任务选择模块。还包括用于处理由任务选择模块输入的位地址以生成计数信号的计数信号发生单元,以及根据计数信号计数任务执行时间的计数单元。CPU可以在任务执行时设定标志位并根据由计数单元生成的计数值计算执行次数和任务的CPU占用率。
文档编号G06F11/34GK1403912SQ0213224
公开日2003年3月19日 申请日期2002年9月3日 优先权日2001年9月6日
发明者李弘途, 廓荣璟 申请人:Lg电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1