虚拟机操作中的并行化的制作方法_4

文档序号:9672968阅读:来源:国知局
S对象,这些任务才执行。
[0062]因此,可以看出,虽然存在控制任务执行的0S调度器,但实际上其可以是释放执行任务的ISR或最高优先级的任务。当存在多个不同优先级的任务准备执行时,0S调度器不会产生影响。在这些实例中,较低优先级的任务直到所有较高优先级的任务已经完成其执行才可以执行,并且较低优先级的任务可能被抢占,以便使较高优先级的任务执行。还可注意的是,中断可停止当前任务的执行,并允许ISR执行,这可以是系统如何恢复控制以确定这些任务执行,即使在系统只包括单核处理器以执行指令的实例中。
[0063]用于确定将在中断处执行的任务的常用设计任务的一个示例包括使用使每一帧递增的帧计数,这在示出的示例中可以通过64Hz的速率发生。为了计算可要求0S对象被释放的任务,模数运算可以在帧计数上执行。在这个示例中,帧计数模64可以确定任务要执行。根据模数运算的结果,0可以指示TasklHz已准备好执行;0,31可以指示Task2Hz已准备好执行;0,15,31,47可以指示Task4Hz已准备好执行;0,7,15,23,31,39,47,55可以指示Task8Hz已准备好执行等等。
[0064]上述讨论集中在针对包括单核处理器的目标系统所设计的计算机程序的情况。在目标系统包括多核处理器或另外包括多个核的实例中,当确定性的行为是期望的时任务的调度可变得更加复杂。对称多核处理器(SMP)的0S设计可以调度在任何可用的核上的任务,因此,在给定的任务应该总是先于其他任务来执行的实例中,0S对象可以再一次被用于控制任务之间的执行行为。在所有任务具有相同优先级的实例中,它们可最可能以任何顺序并彼此并行地来执行。
[0065]现在图9-14根据本公开的各种示例实施例示出示例实施例,在该示例实施例中,任务可由VM 114上的虚拟化平台116虚拟化。如上所述和以下所述,这些示例可用于针对包括单核处理器的目标系统而设计的计算机程序122的情况。然而,应当理解,这些示例可以被扩展到针对多核环境而设计的计算机程序。事实上,可以用于识别可被并行化的任务的分析可能已经针对多核环境完成。根据示例实施例的虚拟化层112中的并行化可以再以次为多核环境提供并行化,因为相比于在实际目标硬件平台上可用的核,主机硬件平台102的更多个核可以被使用。本文只为便于说明提供单核目标硬件平台的情况,并且不失本公开的示例实施例的一般性。
[0066]在一些示例中,一个或多个VM 114可以被创建,其匹配目标系统并执行在包括具有多个核(CPU)的处理器(一个或多个)的主机硬件平台上。VM中的虚拟处理器118可以被仿真或与主机硬件平台102的处理器104相同。目标硬件平台的一个或多个计算机程序122可在VM内执行。为了提高计算机程序在VM内执行的性能,可被识别出可并行运行并仍然获得系统的适当操作的任务。在一些示例中,后台任务可与前台任务并行执行。对于图7所示的多个前台任务,识别可并行运行的任务可能需要更多的努力。如果任务具有相同的优先级,可以是这样的情况:任务可以与仍然适当执行的系统并行运行。此外,在抢占式多任务系统诸如图7所示的,可以是这样的情况:较低优先级的任务与其他任务并行运行,因为这些较低优先级的任务可以在任何时间被更高优先级的任务抢占(并行执行的一种形式),并且较低优先级的任务可以容忍与较高优先级的任务并行运行。
[0067]在图9-14所示的示例中,任务Task32Hz、Taskl6Hz和TasklHz可作为可并行运行的任务已经被识别出。一旦已经识别出并行执行的任务,对于每个已识别的任务,用于可执行的计算机程序122的一个或多个符号表可以针对任务的功能的入口点的符号名称来解析,并且该任务的指令指针可以被识别。根据任务功能的性质,附加存根代码可以被创建以处理任务的基本控制功能,但这在许多例子中不是必要的。
[0068]当系统在VM 114启动时,识别为并行执行的任务(Task32Hz、Taskl6Hz和TasklHz)可以在主机硬件平台的处理器104的附加核104b上开始,与其他任务可在其上执行的核104a分离。在图9-14中,附加核中的单独一个核可执行每个已标识的任务,尽管在一些并行调度中,按并行运行的任务献出附加核可能不是必要的。在这些示例中,核0可用于除已识别的任务之外的任务,并且三个附加核1、2和3可被用于并行执行的已识别的任务。
[0069]在执行除已识别的任务以外的任务中,仍然可以遇到已识别的任务,如图10和图11所不的,图10和图11是关于图9的UML序列图。在一些不例中,当遇到并调度执行正在并行运行的任务时,方法存根可以反而被执行。这是可能发生的,因为并行运行的任务在实际的或仿真的处理器上运行之前,其指令指针可在虚拟化层112中被看到。如果方法存根没有要求控制功能,那么随后虚拟处理器118可简单地将控制返回到指示任务已完成的调度器。
[0070]在一些示例中,0S对象诸如信号量可以留在现在正执行在主机硬件平台102的处理器104的附加核104b上的任务中。这些0S对象可以保证这些任务以适当的频率执行并且可以未修正地被使用,因为在虚拟化层112中执行的所有任务可以共享相同的虚拟化平台116,该虚拟化平台116包括可以被用于实现0S对象的存储器。但是应当理解的是,控制并行任务的执行的其他方法也可以被使用。还应当注意的是,0S对象可以在虚拟化层中被拦截并被重定向或者被重新解释(如果有必要),以使用虚拟化层中的并行化创建运行系统。
[0071]图9示出虚拟化层112中的并行化的性能增益,其中可以看出,被调度在第一帧(帧0)中的所有任务现在在第三帧(帧2)中已完成执行。相比于图7中的计算机程序122的正常执行,这可以表示执行完成的性能提升,在图7中,被调度在第一帧中的所有任务未完成其执行,直到第六帧(帧5)为止。
[0072]在图10中,任务的执行顺序与图8相比已经显著地改变。尤其是,任务的抢占可在时间的不同点处发生,相比它们另外在实际目标系统中发生。图11示出具有在明显时间的合适点处发生的抢占的并行化。实现具有适当抢占的并行化可以包括对系统中的所有任务的附加时序分析,以了解最坏情况或平均执行时间,从而创建任务的适当的表观时间的调度。虚拟化层112还可以包括附加表观时间调度的计算机程序,其具有技术例如冻结虚拟处理器执行和可适合于实现调度的那些受限制的执行示例。
[0073]并行运行的任务在图11中可能不会遇到抢占,但系统的分析再次可被完成,以甚至造成抢占并行任务。用于系统中适当抢占的时序分析可以是复杂的,但不可能在许多系统都是感兴趣的。正常操作仍然可以在与物理目标系统相同的没有抢占的许多情况下实现。抢占时序通常在物理目标系统上不是相同的,因为在物理硬件中可存在时序变化,这种时序变化导致不同的抢占时间,使得相同计算机程序运行在不同的硬件上。计算机程序常常容忍不同的抢占时间。
[0074]如图12-14所示,在示例实施例的又一个方面,虚拟化层112中的任务并行化的可以利用从虚拟化系统的处理中移除空闲时间以甚至进一步提高系统的性能增益的技术来执行。这可能是在一些实例中考虑到的特别情况,并行化可以增加在系统中的可移除的空闲时间量。
[0075]在图12中示出通过这两种技术的组合的这些大的性能增益。当将图12中的执行与图9中的执行进行比较时,可以看出,几乎16帧在相同的时间量(例如,来自定时器108)中完成,而在图9中4帧完成。这可表示计算机程序122在VM 114中的执行具有几乎四倍的性能提尚。并彳丁任务的选择可以对利用该方法能够实现多少的性能提尚具有很大的影响。
[0076]在图12中,空闲时间可以在核0(例如,核104a)上移除,而不考虑其如何影响并行运行在其他核1、2和3(附加核104b)上的已识别的任务的执行。根据系统的性质,忽略在核0移除空闲时间对现并行任务的影响可能不会出现任何问题。但是如图12所提到的,对核0上空闲时间的移除可使得Taskl6Hz被调度在以前的Taskl6Hz已完成之前在帧8中运行。Taskl6Hz的调度即使在以前的Taskl6Hz执行未完成时也不可能构成问题,虽然Taskl6Hz直到以前的执行完成才可执行。
[0077]图13和图14示出用于移除空闲时间的两个示例方法。在图13中,一种示例技术着眼于所有核的执行并等待每个核进入空闲状态,在这之后,表观时间可前进到下一帧中断以开始下一帧。但在一些示例中,在现有相同任务完成之前可不再可能调度任务来运行。这种方法在针对总是在空闲时间运行的任务的情况中可能面临困难,在这种情况下,系统不可能进入空闲时间。
[0078]但是,这些情况可以通过多种不同的方式来解决,例如,通过识别这些任务并限制它们的执行,以确保进入空闲时间状态。
[0079]在图14中,用于移除空闲时间的另一示例技术包括确定表观时间是否可以前进到下一个帧开始(移除空闲时间)。针对此的适当方法的一个示例可以是监视所有感兴趣的任务,尤其是现在并行运行的任务,并确保现有任务在允许下一帧开始之前完成。适当方法的另一个示例可以是对所有任务执行最坏情况的时序分析,分析的结果可用于将附件的调度逻辑添加到表观时间前进。根据时序分析,识别该Taskl6Hz以在以前的Taskl6Hz在帧8和其他未来帧中已完成之前被调度执行可以是可能的。附加逻辑可以在虚拟化层112中被添加,以寻找在系统的执行中的这种情况。
[0080]如上所示,程序代码指令可以被存储在存储器106 (计算机可读存储介质),并且由处理器104执行,以实现本文描述的计算机系统100的功能。如将要认识的是,任何合适的程序代码指令可以从存储器被加载到计算机系统,以产生特定的机器,使得特定机器成为用于实现本文所指定的功能的装置。这些程序代码指令也可以被存储在存储器中,其可以指导计算机系统或处理器以特定的方式运行,从而产生特定的机器或制造的特定物品。存储在存储器中的指令可产生制造的物品,其中,该制造的物品成为用于实现在此描述的功能的装置。程序代码指令可以从存储器中检索且被加载到计算机系统或处理器,以配置计算机系统或处理器执行将在计算机系统或处理器上或由计算机系统或处理器执行的操作。
[0081]程序代码指令的检索、加载和执行可以被顺序执行,使得一次一个指令被检索、加载和执行。在一些示例实施例中,检索、装载和/或执
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1