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

文档序号:8516038阅读:来源:国知局
12中运行的第一(如图示在最上面)SWInt不是等待时间敏感的,而第二 SWInt (如图示从上面第三个)是等待时间敏感的。类似地,(多个)线程结构308可以被分析来确定准备好运行的第一线程(如图示从上面第二个)不是等待时间敏感的,而准备好运行的第二线程(如图示的底部动作)是等待时间敏感的。虽然该讨论按照是否等待时间敏感来表征任务和/或动作,但是将被意识到和理解的是,可以以类似的方式使用任务和/或动作的其他特征。
[0043]在识别了与一个或多个任务相关联的(多个)特征时,一些实施例诸如通过分析(多个)核数据结构310来进一步确定与一个或多个处理器核相关联的信息和/或特征。包含在(多个)核数据结构310中的信息可以被用来识别处理器O和I当前分别正在忙于运行SWInt和线程。这个信息也可以被用来识别处理器核2至η-1当前是空闲的。可替换地或附加地,一些实施例使用软件中断结构306来识别在处理器核“O”上运行的SWInt是否是等待时间敏感的。类似地,线程结构308可以被用来识别在处理器核“I”上运行的线程是否是等待时间敏感的,该正在运行的线程拥有什么优先次序等。因此,应该指出,可以获得多种信息:表征(多个)处理器核的信息、表征运行在处理器核上的(多个)任务的信息,以及表征准备好被指派到处理器核的(多个)任务的信息。基于这个信息,一个或多个任务可以被(重新)指派到处理器核。例如,任务312的等待时间敏感的SWInt和等待时间敏感的线程可能已经被原始指派到处理器核O或1,但是由于(多个)任务的等待时间敏感性质和/或由于被原始指派的(多个)处理器核的忙碌状态,其被重新指派到空闲的处理器核。非等待时间敏感的SWInt和/或线程或者可以被(重新)指派到空闲的处理器核,或者可以被指派到忙碌的处理器核以便保证空闲的(多个)处理器核容易地可用于等待时间敏感的任务。因此,不仅基于任务的特性,也基于(多个)处理器核的特性以及基于(多个)处理器核可能当前正在运行什么(例如,中断,任务等),来将任务(重新)指派给(多个)处理器核。
[0044]应该指出,图3图示在时间上的某个捕获处的计算设备的状态。在这个捕获时间期间,处理器核“O”和处理器核“ I”被图示为处于忙碌状态,而其他(多个)处理器核被图示为处于空闲状态。但是,由于(多个)处理器核开始和完成各种不同的状态,其状态可以随着时间推移而变化。一些实施例搜集和/或保持与计算设备的系统状态相关联的信息,比如处理器核何时变得忙碌、处理器核何时变得空闲、处理器核何时在运行高优先级任务(和/或机器级指令分组)、处理器核何时在运行可中断的任务等等。这个信息可以以任何合适的格式进行存储,比如与图3所讨论的各种不同的数据结构。但是,为了保持该系统状态的精确表示,一些实施例多于一次地和/或以连续的方式来搜集信息。
[0045]考虑图4,其图示与处理器核相关联的时间线。这里,处理器核被指代为核“X”来指示哪个处理核执行这个功能的一般性质。一系列记号(tick)402被标记在时间线上。尽管该系列记号402被图示为本质上是周期性的,但是将被意识到和被理解的是,在不偏离要求保护的主题的范围的情况下该系列标记402可以本质上是非周期性的。记号402可以以任何合适方式生成,例如与核“X”相关联的时钟记号、可编程的定时器中断等等。另外,记号之间的时间可以是任何合适的持续时间,从纳秒、微秒、毫秒、秒等。每次记号一出现,核“X”就执行任务404以搜集与该系统状态相关联的信息,比如系统中的(多个)处理器核是忙碌还是空闲,(多个)处理器核是否正在处理中断、(多个)处理器核正在什么模式(中断模式、特许模式、用户模式、空闲模式)中运行、处理器核正在被如何使用、处理器核使用率随时间推移的百分比等等。在一些实施例中,如此处在图4中所图示的,核“X”可以被专门用于保持系统状态信息。但是,其他实施例在空闲时段期间在核“X”上调度任务。
[0046]作为任务404的一部分,一些实施例保持跟踪处理器核花费多少时间来执行硬件和/或软件中断。该时间可以以任何合适的方式来测量,诸如以与执行的处理器核相关联的时钟周期等方式。可替换地或附加地,可以将该时间与阈值相比较来确定随时间推移处理器核处理中断的忙碌程度和/或“负载繁重”程度。类似地,随着测量的处理时间降到给定阈值以下,这些值可以被调整。因此,根据数据搜集的频繁程度,可以保持该系统状态的相当准确的表示。在确定处理器核的特性(例如,“负载繁重”、忙于处理中断、空闲等)时,一些实施例可以更新和/或存储这个信息,例如存储于在图3中所讨论的(多个)核数据结构310中的数据。通过随时间推移重复地继续搜集信息,可以基于描述系统状态的当前信息来将任务指派给处理器核。
[0047]为了进一步演示,考虑图5,其图示了描述根据一个或多个实施例的方法中的步骤的流程图。该方法可以通过任何合适的硬件、软件、固件或它们的组合来执行。在至少一些实施例中,该方法的各方面可以由在一个或多个计算设备上执行的一个或多个被合适地配置的软件模块来实现,例如图1的处理器核加载模块112。
[0048]步骤500接收软件中断。响应于接收该软件中断,步骤502确定该软件中断是否是等待时间敏感的。这可以通过任何合适的方式被确定。例如,该软件中断的通知可以包括描述该软件中断是否是等待时间敏感的特征。可替换地或附加地,在结构中的一个或多个标志可以被分析,例如在图3中所描述的软件中断结构306。响应于确定该软件中断不是等待时间敏感的,步骤504在当前的处理器核或指定的目标处理器核上执行该软件中断。当前的处理器核表示做出等待时间敏感判断的处理器核。指定的目标处理器核可以是预先指派的处理器核,如前进一步描述的,其可以是当前的处理器核,也可以不是当前的处理器核。
[0049]响应于确定该软件中断是等待时间敏感的,步骤506确定当前处理器核或指定的目标处理器核是否是中断繁重的。这可以以任何合适的方式来被确定,其示例由上文所提供。响应于确定当前的处理器核和/或指定的目标处理器核不是中断繁重的,该流程过程进行到步骤504并且在该当前处理器核或该指定的目标核上执行软件中断。
[0050]响应于确定当前的处理器核或指定的目标处理器核是中断繁重的,步骤508为该软件中断确定期望的处理器核。例如,该期望的处理器核可以简单地是空闲的处理器核。可替换地或附加地,该期望的处理器核可以基于诸如处理器速度、软件中断在其上运行的最后的处理器核、功率消耗和/或平衡等之类的附加特性来选择。例如,基于哪个处理器核最后运行软件中断和/或任务来选择处理器核有时可以增加在处理器核高速缓冲存储器(cache)中拥有相关日期的机会。响应于确定该期望的处理器核,步骤510在该确定的处理器核上执行该软件中断。
[0051]作为附加的示例,考虑图6,其图示了描述根据一个或多个实施例的方法中的步骤的流程图。该方法可以通过任何合适的硬件、软件、固件或它们的组合来执行。在至少一些实施例中,该方法的各方面可以由在一个或多个计算设备上执行的一个或多个被合适地配置的软件模块来实现,例如图1的处理器核加载模块112。
[0052]步骤600准备要运行的软件线程。响应于准备要运行的软件线程,步骤602确定该软件线程是否是等待时间敏感的。这可以以任何合适的方式来确定,例如通过分析存储在和图3 —起所描述的线程结构308中的数据。
[0053]响应于确定该软件线程不是等待时间敏感的,步骤604从可用的处理器核中确定期望的处理器核来运行该软件线程。这可以包括基于被搜集和/或存储在图2的核数据结构310中的信息来选择期望的处理器、通过选择当前运行的处理器核来选择期望的处理器核、基于预先确定的指派来选择期望的处理器核等等。响应于确定期望的处理器核,步骤606在所确定的处理器核上运行该软件线程。
[0054]响应于确定该软件线程是等待时间敏感的,步骤608搜集处理器核使用率信息。在一些实施例中,这需要访问存储在结构中的预先搜集的信息,比如如前所述的处理器核中断繁重状态信息,和或需要执行一个或多个任务来探查(probe)系统状态。可替换地或附加地,这可以包括确定处理器核百分比使用率信息。
[0055]响应于搜集处理器使用率信息,步
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1