等待时间敏感的软件中断和线程调度的制作方法_2

文档序号:8516038阅读:来源:国知局
应用。
[0021]处理器核加载模块112表示可以将(多个)任务指派和/或重新指派给(多个)处理器核104(0) —(η-1)的功能,比如(重新)指派一个或多个应用110。尽管在图1中被图示为与(多个)操作系统模块108分开的模块,但是将会意识到和理解在不偏离要求保护的主题的范围的情况下可以将处理器核加载模块112包括作为(多个)操作系统模块108的一部分。在一些情况下,处理器核加载模块112可以基于处理器核的特性来将任务指派到一个或多个处理器核。可替换地或附加地,如下文进一步所描述的,处理器核加载模块112可以基于正在被指派的任务的特性来将任务(重新)指派给一个或多个处理器核。这包括搜集数据来识别在给定时刻处理器核的“负载”或“忙碌”程度,和/或将任务指派给各种不同的处理器核来作为在计算设备102上更平均地分配处理工作量的手段。
[0022](多个)数据结构114表示包含诸如标志(flag)、数字、字符串等之类信息的一个或多个数据结构。在一些实施例中,某个或某些数据结构114可以包括描述与一个或多个处理器核相关联的特性的信息。可替换地或附加地,某个或某些数据结构114可以包括与一个或多个应用110、(多个)操作系统模块108和/或处理器核加载模块112相关联的信息。在任一和/或两种情况下,(多个)数据结构114可以以任何合适的格式来存储信息,该信息可以被用来传送诸如处理器速度、处理器核加载百分比、处理器核重负载状态标志、应用是否包括(多个)时间敏感特性、时序测量等之类的任何合适的关联的特性。
[0023]计算设备102也包括一个或多个内部设备116,并且拥有一个或多个附接的外部设备118。在这个示例中,多个内部和/或外部设备使用符号m-Ι和k-Ι进行指示,其中“m”指示内部设备的数量,以及“k”指示所附接的外部设备的数量。除了其他能力之外,(多个)内部设备116和(多个)外部设备118包括在(多个)处理器核104上中断和/或请求任务执行的能力,比如中断服务例程。尽管图1将“m”和“k”图示为具有大于I的数值,但是可以意识到和理解,在不偏离要求保护的主题的范围的情况下,计算设备可以简单地包括一个内部设备和/或一个外部设备。
[0024]一般来说,本文所描述的功能中的任一个都可以使用软件、固件、硬件(例如,固定逻辑电路)、人工处理或这些实现方式的组合来实现。本文所使用的术语“模块”、“功能”和“逻辑”通常表示软件、固件、硬件或它们的组合。在软件实现方式的情况下,模块、功能或逻辑表示当在处理器(例如,一个或多个CPU)上被执行或被处理器(例如,一个或多个CPU)执行时执行指定任务的程序代码。该程序代码可以被存储在一个或多个计算机可读存储器设备中。下文所述的手势技术的特征是与平台无关的,从而意味着这些技术可以在具有多种处理器的多种商业计算平台上来被实现。
[0025]已经描述了各种不同的实施例可以在其中被使用的示例操作环境,现在考虑对于根据一个或多个实施例调度等待时间敏感的任务的讨论。
[0026]调度等待时间敏感的任务
通常现今,计算设备包括多任务能力,比如并行运行多个应用,并行监控来自多个设备的输入等等。随着技术进步,用户不仅期望计算设备支持多任务,另外还希望在进行多任务时来自计算设备的无缝性能。这意味着用户希望并行运行若干应用,并且在正工作的应用之间进行平滑的切换。当多任务未被无缝地执行时,用户可以感知到在(多个)应用如何执行中的故障和/或停止。为了使得能够实现更加稳健的性能,作为一种促进多任务和/或并行处理的方式,一些计算设备包含多个处理器核。但是,在给定系统中的一些处理器核在一些时候可能变得比其他处理器核更加重负载。在不监控系统中处理器核如何负载的情况下,当任务被指派给更加重负载的(多个)处理器核时,任务可能在运行中停止。
[0027]作为一个示例,考虑图2a_d,其图示了计算设备的多个处理器核在如上所述的若干任务和/或应用之间进行多任务的时序图。这些图示捕获了与诸如图1的计算设备102之类的计算设备的“核O”和“核I”相关联的时序图。尽管这些示例图示了两个处理器核,但是可以被意识到和理解,在不偏离要求保护的主题的范围的情况下,关于图2a_d所描述的概念可以被应用到任何数量的处理器核。为了简洁起见,这些图将核图示为简单地是“忙碌”或“空闲”。但是,其他实施例可以将处理器核忙碌的程度区分到更精细的粒度(即,处理器核为45%忙碌)等。图2a和2b讨论关于调度软件中断的示例时序图,而图2c和2d描述了关于调度任务的示例时序图。
[0028]为了讨论的目的,图2a将核O和核I图示为在O时刻是空闲的,其中O时刻表示时间上任意起始点。尽管此处将每个核图示为在时刻O空闲,但是可以被意识到,替代地,一个和/或两个核可以交替地忙于处理指令。在点202处,核O开始处理和/或执行任务1,并且转换到“忙碌”状态。任务I表示任何合适的处理器核指令集,比如线程、应用、处理器核指令分组等。在一些情况下,任务I另外还可以具有指派的优先次序(pr1ritizat1n),该优先次序相对于其他任务将任务I访问处理器核的优先级进行分级。例如,相对于任务I具有更尚优先级的任务可以潜在地先占和/或临时挂起任务I对核O的访冋。
[0029]在点204处,核I开始处理任务2,并且在点206处完成处理任务2。与在任务I的情况下一样,任务2可以是具有如前所述的等级和/或优先次序的任何合适的处理器指令分组。也可以观察到在点204处和点206处的时间之间,核O和核I两者都并行活跃地忙于处理任务。在完成任务2时,核I没有其他任务指派,并转换到“空闲”状态。
[0030]在点208处,到达的中断被检测到并被指派为在核O上运行。此处,核O已经被预先识别和/或被指派来处理该到达的中断。由于任务I尚未运行完成,其在核O上被临时挂起,并且替代地,运行中断服务例程。此处,在从点208到点210所标记的时间量期间,该到达的中断由核O来服务。该时间长度表示任意的持续时间。因此,此处被图示为与该到达的中断相关联的中断服务例程的先占任务可以潜在地占用几纳秒、几微秒、几毫秒、几秒等来执行。当该先占的中断服务例程已经完成(此处在点210处图示)时,该中断已经被服务并且核O继续执行处理任务I直到在点212处完成。因此,任务I的总共被感知的执行时间可以被计算为点202到点212之间的时间。根据在点208到点210之间的完成中断服务例程所花的持续时间,用户可以在任务I的执行中注意到延迟,尤其是如果任务I具有时间敏感特性的话。另外可以指出的是,核I在时间208与210之间保持空闲和未使用。一些实施例可以识别一个处理器核在何时比另一个更加重负载,并且相应地将任务(重新)指派给不同的处理器核。
[0031]考虑图2b,其图示了任务如何被重新指派给不同处理器核的替换的时序图。与在图2a的情况下一样,图2b包括在任意起始时间O处对处理器核O和I的观察。核O在点202处开始处理任务1,而核I分别在点204处和点206处开始和完成处理任务2。在完成任务2时,核I转换为“空闲”状态,而核O继续忙于处理任务I。如在图2a的情况下所同样描述的,在点208处检测到达的中断。但是,在这种情况下,给出另外的考虑以便将该中断服务任务指派给“空闲”的或者负载较少的处理器核。
[0032]在将任务指派和/或调度给处理器核时,一些实施例至少部分基于(多个)处理器核的使用率度量来调度任务。例如,在图2b中当检测到该到达的中断时,核O正忙于处理任务I而核I处于空闲。一些实施例监控处理器核何时处于忙碌和/或空闲,并且基于这个度量来(重新)指派任务。此处,由于核O已经被识别为忙碌,所以该中断服务任务被(重新)指派给核I。这允许相关联的计算设备在整体上更加高效地处理任务。通过将该中断服务任务(重新)指派给核1,不仅该中断服务任务立刻被执行,而且该计算设备可以继续并行地在核O上执行任务I。此处,可以测量在开始点202和结束点214之间任务I总共的执行时间。当将图2a和图2b比较时,可以指出,使用在图2b中采用的被讨论的技术,所有任务都比图2a所图示的任务更快地完成。
[0033]现在考虑图2c,其图示了处理器核O处理始于点
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1