多核心处理器系统及任务分配方法
【技术领域】
[0001]本发明是有关于多核心(mult1-core)处理器系统中的任务分配,更具体地,是有关于同时交叉参考对应于多个调度类(scheduling classes)的任务分配信息的任务分配。
【背景技术】
[0002]在诸如智能电话,笔记本以及平板电脑等的电子装置中,配备了任务调度器(scheduler),用以在包含多个处理器核心(cores)的多核心处理器系统中调度或分配任务。任务可根据不同的调度算法进行调度,例如,调度算法可包含实时(Real-Time,RT)调度器,及/或完全公平调度器(Completely Fair Scheduler,CFS),及/或任何具体的调度算法。例如,根据RT调度器进行调度的任务可称为RT任务,以及根据CFS进行调度的任务可称为CFS任务。
[0003]当任务调度器分配任务给处理器核心时,指当前分配给多个处理器核心的任务的任务分配信息。另外,任务调度器对RT任务和CFS任务的任务相互独立。具体地,当任务调度器分配RT任务时,任务调度器仅参考当前分配至处理器核心的RT任务的任务分配信息,而不会考虑CFS任务或者与当前分配至处理器核心的RT任务不同的其它任务。类似地,当任务调度器分配CFS任务时,任务调度器不会参考除分配至处理器核心的CFS任务之外的其它任务的任务分配信息。总之,当任务调度器对使用特定调度算法进行调度的任务进行分配时,不会考虑使用与该特定调度算法不同的其它调度算法进行调度的任务。
[0004]然而,经常发生负载不均衡(load imbalance),且处理器核心的性能不佳,因此,解决这些问题以改善多核心处理器系统中的任务分配和系统性能成为值得讨论的主题。
【发明内容】
[0005]有鉴于此,本发明提供至少一种多核心处理器系统及任务分配方法。
[0006]根据本发明一实施例的任务分配方法,适用于多核心处理器系统,其中,所述多核心处理器系统包含多个处理器核心,且所述多个任务中的每一个位于多个调度类中的单独一个之中,所述任务分配方法包含:获取分配给所述多个处理器核心的第一调度类中的多个任务的第一任务分配信息;获取分配给所述多个处理器核心的一个或多个其它调度类中的多个任务的第二任务分配信息,其中,所述一个或多个其它调度类中的每个均不同于所述第一调度类;以及参考所述第一任务分配信息和所述第二任务分配信息,将所述第一调度类中的就绪状态任务分配给所述多个处理器核心中的一个。
[0007]根据本发明一实施例的多核心处理器系统,包含:多个处理器核心,用于执行多个任务,其中,所述多个任务中的每一个位于多个调度类中的单独一个之中,以及任务调度器,用于获取分配给所述多个处理器核心的第一调度类中的多个任务的第一任务分配信息,获取分配给所述多个处理器核心的一个或多个其它调度类中的多个任务的第二任务分配信息,其中,所述一个或多个其它调度类中的每一个均不同于所述第一调度类,以及参考所述第一任务分配信息和所述第二任务分配信息,将所述第一调度类中的就绪状态任务分配给所述多个处理器核心中的一个。
[0008]本发明所提供的多核心处理器系统及任务分配方法,相较于传统任务分配过程中未充分考虑任务分配信息的做法,其优点之一在于参考更多的任务分配信息,也就是说,为了分配就绪状态(runnable)任务,可一并考虑与该就绪状态任务的调度类不同的其它一个或多个调度类中的任务的信息。由于考虑了更多的任务分配信息,因而多个处理器核心的负载可更加均衡,并改善多核心处理器系统的性能。
【附图说明】
[0009]图1为根据本发明一实施例的多核心处理器系统100的方块示意图。
[0010]图2为根据本发明一实施例的优先级范围(pr1rity ranges)的示意图。
[0011]图3为根据本发明一实施例的第一情形中的任务分配的说明示意图。
[0012]图4为根据本发明另一实施例的第二情形中的任务分配说明示意图。
[0013]图5为根据本发明又一实施例的第三情形中的任务分配说明示意图。
[0014]图6为根据本发明又一实施例的第四情形中的任务分配说明示意图。
[0015]图7为根据本发明又一实施例的第五情形中的任务分配说明示意图。
[0016]图8为根据本发明一实施例的任务分配方法300的流程图。
【具体实施方式】
[0017]在说明书及权利要求当中使用了某些词汇来指称特定的组件。本领域技术人员应可理解,硬件制造商可能会用不同的名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。在通篇说明书及权利要求当中所提及的“包含”及“包括”为一开放式的用语,故应解释成“包含但不限定于”。“大致”是指在可接受的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性连接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表该第一装置可直接电性连接于该第二装置,或通过其它装置或连接手段间接地电性连接至该第二装置。以下所述为实施本发明的较佳方式,目的在于说明本发明的精神而非用以限定本发明的保护范围,本发明的保护范围当视后附的权利要求所界定者为准。
[0018]请注意,根据实际设计,用语“多核心处理器系统”可表示多核心系统或多处理器系统。换言之,任何多核心系统和多处理器系统均可使用本发明所提出的任务调度方法。例如,关于多核心系统,所有的处理器核心均可位于一个处理器核心中。对于另一个例子,关于多处理器系统,每个处理器核心均可位于一个处理器核心中。因此,每个丛集(clusters)均可实施为一组处理器。
[0019]图1为根据本发明一实施例的多核心处理器系统100的方块示意图。多核心处理器系统100包含任务调度器110及多个处理器核心120A-120N。图1代表的是简化方块示意图,图中仅显示了与本发明有关的多个元件。然而,本发明并不仅限于图1所示内容。
[0020]处理器核心120A-120N配置用于执行(perform/execute)多个任务和指令,其中,处理器核心120A-120N可以是中央处理单元(Central Processing Units, CPUs)或其它处理元件。多核心处理器系统100可以是对称多处理(Symmetric Mult1-Processing, SMP)类型,或非均勾多处理(Heterogeneous Mult1-Processing, HMP)类型或其它类型的多核心处理器系统。任务调度器110可实施为多核心处理器系统100的操作系统(即Linux,Windows,Mac OS X等)的内核。任务调度器110配置为分配任务给处理器核心120A-120N。
[0021]图2为根据本发明一实施例的优先级范围的示意图。如图所示,多个调度类分别与多个优先级范围有关。例如,调度类0覆盖第一优先级范围(例如0-99),另一调度类1覆盖第二优先级范围(例如100-139)。任务调度器110所分配的任务可以定义为任意/任何调度类。另外,每个任务可被赋予各自的任务优先级,被赋予的任务优先级位于与该任务的调度类有关的优先级范围内。例如,被赋予任务优先级50的任务位于调度类0中,以及被赋予任务优先级110的任务位于调度类1中。因此,调度类0中的任务可具有范围在0-99之间的任务优先级,以及调度类1中的任务可具有范围在100-139之间的任务优先级。具有较小任务优先级的任务意味着该任务具有更高的执行优先级。换言之,当具有任务优先级m的任务和具有任务优先级η的另一任务(m〈n)均分配给一个处理器核心时,相较于具有任务优先级η的任务,具有任务优先级m的任务可被赋予更高的执行优先级。类似地,在同一个处理器上,相较于调度类1中的任务,调度类0中的任务可被赋予更高的执行优先级。
[0022]另外,不同的调度类(数量=M)可分别对应于多个调度算法(数量=N,N<M)。换言之,调度类中的任务可根据对应于该调度类的调度算法进行调度。在本发明的不同实施例中,调度算法包含RT调度器,CFS,最短任务优先(Shortest Job First, SJF),先入先出(First-1n First-Out, FIFO)调度器,脑残调度器(Brain Fuck Scheduler, BFS),停止调度类,截止期(deadline)调度器及其它调度算法。
[0023]在图2所示的非限制性例子中,调度类0可对应于RT调度器,以及调度类1对应于CFS。因此,根据RT调度器进行调度的任务(此后称为RT任务)位于调度类0中,并可具有范围在0-99之间的较高的任务
优先级。类似地,根据CFS进行调度的任务(此后称为CFS任务)位于调度类1中,并具有范围在100-139之间的较低的任务优先级。
[0024]在本发明一实施例中,为了将就绪状态任务分配给处理器核心120A-120N中的一个,任务调度器110可不仅考虑当前分配给处理器核心的该就绪状态任务的调度类(此后称为第一调度类)中的任务,也要考虑当前分配给处理器核心120A-120N的与第一调度类不同的一个或多个调度类中的任务。
[0025]简洁起见,关于分配给处理器核心120A-120N的第一调度类中的任务的信息称为第一任务分配信息,以及关于分配给处理器核心120A-120N的其它一个或多个调度类中的任务的信息称为第二任务分配信息。换言之,为了将就绪状态任务分配给多个处理器核心120A-120N中的一个,任务调度器110可一并考虑第一任务分配信息和第二任务分配信息。
[0026]当获取第一任务分配信息和第二任务分配信息后,任务调度器110可知晓处理器核心120A当前正在运行及/或排队等待运行的一个或多个任务,处理器核心120B当前正在运行及/或排队等待运行的一个或多个任务,…,以及处理器核心120N当前正在运行及/或排队等待运行的一个或多个任务,其中,任务调度器110已知及考虑的任务不仅限于位于与就绪状态任务相同的调度类中。利用当前分配给处理器核心120A-120N的多个任务的信息,因而任务调度器110可将第一调度类中的就绪状态任务分配给处理器核心120A-120N中的适当的一个。
[0027]相较于仅考虑第一任务分配信息而忽略第二任务分配信息的传统方法,该实施例中的任务分配方法与之相反。换言之,与传统方法相比,该实施例通过考虑更多的不同调度类中的分配任务参考了更多全面信息。因此,该实施例对于多个处理器核心可更好地均衡负载,并具有更好的多核心处理器系统性能,以下将进行说明。
[0028]请注意,交叉参考不同调度类中的任务的任务信息可应用于任何数量以及任何具体的任务/调度类/调度算法。例如,待分配的任务不仅限于具有任务优先级的任务或者根据其任务优先级正在顺序执行的任务。在非限制型实施例中,多个任务也可根据其各自的截止期限进行调度,例如可实施为截止期调度器。
[0029]请注意,就绪状态任务可以在之前已分配或未分配至处理器核心。具体地,在图3-5所示的一些实施例中,在分配就绪状态任务之前,就绪状态任务尚未分配给任何处理器核心。在另一些实施例中,如图7中的范例苏轼,在将第一调度类中的就绪状态任务分配给一个处理器核心之前,第一调度类中的可运行行任务当前被分配给多个处理器核心中的一个,单可以重新分配给多个处理器核心中的另一个。
[0030]在多个实施例中,第一调度类中的就绪状态任务当前未分配给处理器核心120A-120N中的任何一个,在任务调度器110将第一调度类中的就绪状态任务分配给一个处理器核心之前,任务调度器110可唤醒该就绪状态任务,然后参考第一任务分配信息和第二任务分配信息,确定将该就绪状态任务分配给处理器核心120A-120N中的哪个比较合适。
[0031]在多个实施例中,第一调度类中的该就绪状态任务已分配给处理器核心120A-120N中的一个处理器核心,任务调度器110可根据第一任务分配信息和第二任务分配信息确定是否将第一调度类中的该就绪状态任务进行重新分配以优化负载均衡。若确定结果为正,则根据第一任务分配信息和第二任务分配信息,任务调度器110可将第一调度类中的就绪状态任务移动至处理器核心120A-120N中的另一个处理器核心。参考更多的任务分配信息的优点之一在于,可防止无法区分未被分配第一调度类中的一个或多个任务但被分配以其它一个或多个不同调度类中的一个或多个任务的处理器核心和未被分配以任何调度类中的任何任务的处理器。更具体地,通过参考第一任务分配信息,任务调度器110可知晓是否存在至少一个处理器核心未被分配第一调度类中的任何任务;以及通过参考第二任务分配信息,任务调度器110可进一步知晓是否存在至少一个其它处理器核心未被分配与第一调度类不同的其它调度类中任何任务。相应地,通过一并参考第一任务分配信息和第二任务分配信息,任务调度器110可知晓是存在至少一个处理器核心未被分配任何任务还是不存在处理器核心未被分配任何任务。由于全面考虑了不同调度类中的分配任务,任务调度器110可以更加均衡的方式分配任务,以下实施例将作进一步说明。
[0032]图3为根据本发明一实施例的第一情形中的任务分配的说明示意图。如图3所示,在多核心处理器系统100中包含四个处理器核心CPU 0-CPU 3。在该实施例中,CPU 0被分配以CFS任务,CPU 1未被分配任何任务,以及CPU 2和CPU 3分别被分配以RT任务。如上所述,RT任务的任务优先级高于CFS任务。当RT任务被唤醒且任务调度器110确定将RT任务分配给一个处理器核心时,任务调度器110可参考对应于CFS任务和RT任务的任务分配信息(即第一任务分配信息和第二任务分配信息)。在知晓CPU 1未被分配任何任务的情况下,任务调度器110可将RT任务分配给处理器CPU 1。
[0033]与传统技术相比,传统任务调度器可参考有关RT任务的第一任务分配信息,而不参考关于CFS任务的第二任务分配信息,且传统任务调度器平等地看待CPU 0和CPU 1。因此,传统任务调度器可能将RT任务分配给CPU 0,而不是CPU 1。换言之,传统任务调度器对待空闲CPU 1和非空闲CPU 0并没有不同,因此,传统任务调度器可安排CPU 0来执行更多的任务,而使得CPU 1保持在未被分配任何任务的状态。
[0034]相比较而言,通过参考更多的全面的任务分配信息,本实施例中的任务调度器110可区别对待被分配以CFS任务的CPU 0以及未被分配以任何任务的CPU 1,因而可将RT任务分配给CPU 1。在本实施例中的任务调度器110可实现更加负载均衡的系统。图4为根据本发明另一实施例的第二情形中的任务分配说明示意图。图4类似于图3,区别仅在于CFS任务被唤醒并等待被任务调度器110分配给多核心处理器系统100中的四个处理器核心CPU 0-CPU 3中的一个,其中CPU 0被分配以RT任务,CPU 1未被分配任何任务,以及CPU 2和CPU 3分别被分配以CFS任务。
[0035]类似于图3中的第一情形,在图4所示的第二情形中,传统任务调度器可参考关于CFS任务的第一任务分配信息,而不参考关于RT任务的第二任务分配信息,因而可能将CFS任务分配给CPU 0而非CPU 1。相反,通过不仅参考第一分配信息,并且也参考第二分配信息,在该实施例中的任务调度器110可在CPU 0和CPU 1之间进行区分,并因此可将RT任务分配给未被分配任何任务的CPU 1。因此,在该实施例中的任务调度器110可实现更加负载均衡的系统。
[0036]总之,图3和图4的相互类似点在于,至少一个处理器核心未被分配任何调度类中的任何任务。更具体地,当第一调度类(图3中的调度类0,图4中的调度类1)中的就绪状态任务(图3中的RT任务,图4中的CFS任务)被唤醒并被分配给处理器核心CPU 0-CPU 3中的一个时,第一任务分配信息和第二任务分配信息指示至少一个CPU 1未被分配任何调度类中的任何任务,以及第二任务分配信息进一步指示一个或多个其它处理器核心,即CPU0被分配除第一调度类(图3中的CFS任务,图4中的RT任务)之外的一个或多个不同调度类中的一个或多个任务。在图3中,该一个或多个任务中的至少一个,即分配给CPU 0的CFS任务,具有低于该就绪状态任务(RT任务)的任务优先级。相反,在图4中,该一个或多个任务中的至少一个,即分配给CPU 0的RT任务,具有高于该就绪状态任务(CFS任务)的任务优先级。在图3和图4的两种情形中,第一调度类中的就绪状态任务可分配给未被分配任何任务的该至少一个处理器核心中的一个,即CPU 1。
[0037]请注意,参考更多全面的任务信息不仅在至少一个处理器核心未被分配任何任务的情形(图3和图4中的情形)下有优点,而且在没有处理器核心未被分配任何任务的情形下也有优点。在这些情形中,由于参考了第二任务分配信息,任务调度器110可进一步考虑与待分配的就绪状态任务的第一调度类不同的其它调度类中的任务的任务优先级。这些优点中的一个是为了防止无法区分未被分配第一调度类中的一个或多个任务但被分配具有较高任务有点机的其它不同调度类中的一个或多个任务的处理器核心和未被分配第一调度类中的一个或多个任务但被分配具有较低任务优先级的一个或多个其它不同调度类中的一个或多个任务的处理器核心。以下将以图5和图6所示实施例进行详细说明。
[0038]图5为根据本发明又一实施例的第三情形中的任务分配说明示意图。如图5所示,在多核心处理器系统100中有四个处理
器核心(CPU 0-CPU 3)CPU 0被分配以CFS任务,CPU 1被分配以另一 CFS任务,以及CPU 2和CPU 3被分配以各自的RT任务,其中,每个RT任务的优先级高于CFS任务,以及分配给CPU 0的CFS任务优先级高于分配给CPU 1的CFS任务。
[0039]当RT任务被唤醒时,通过参考对应于CFS任务和RT任务的任务分配信息(即第一任务分配信息和第二任务分配信息),任务调度器110可将RT任务分配给CPU 1,因为分配给CPU 1的CFS任务在被分配给四个处理器核心CPU0-CPU 3的四个任务中优先级最低。
[0040]相比较而言,在第三种情形中的传统任务调度器仅指第一任务分配信息,也就是关于RT任务的任务分配,这可能无法区分CPU 0和CPU 1,并因而可能将RT任务分配给CPU0和CPU 1中的任意一个。换言之,传统任务调度器有可能将RT任务分配给CPU 0而非CPU
1。相反,在该实施例中的任务调度器110可获取关于CFS任务的第二任务分配信息,因此,任务调度器110可将RT任务分配给具有较低任务优先级的CPU 1。
[0041]图6为根据本发明又一实施例的第四情形中的任务分配说明示意图。如图6所示,在多核心处理器系统100中有四个处理器核心(CPU 0-CPU 3),其中,CPU 0被分配以RT任务,以及CPU 1-CPU 3被分配以各自的CFS任务。当一 CFS任务被唤醒并将被分配给CPU0-CPU 3中的一个时,任务调度器110可参考关于CFS任务的任务分配信息和关于RT任务的任务分配信息。由于RT任务的优先级高于所有的CFS任务,因此,根据CFS的调度方法,任务调度器110可将CFS任务调度至CPU 1-CPU 3中的一个上面运行。
[0042]相比较而言,在此情形中,传统任务调度器仅参考第一任务分配信息(即关于CFS任务的信息),因此,任务调度器因未考虑到RT任务被分配至CPU 0而将CFS任务分配给CPU 0。这将导致该CFS任务在RT任务被完成之前不会被执行的情形。相反,在本实施例中的任务调度器110全面考虑CFS任务和RT任务以及二者的任务优先级,因而能够根据CFS适当地将CFS任务分配给CPU1,CPU 2或CPU 3。
[0043]图5和图6的相似点在于,当第一调度类中的就绪状态任务(图5中的RT任务和图6中的CFS任务)被唤醒并等待被分配至处理器核心CPU 0-CPU 3中的一个时,没有处理器核心未被分配以任何调度类中的任何调度任务。换言之,每个处理器核心均被分配以至少一个任务。图5和图6的不同主要在于,当前分配给CPU 0-CPU 3的任务相较于就绪状态任务的任务优先级。更具体地,在图5中,两个或更多个处理器核心,即CPU 0和CPU1被分配以多个任务(CFS任务),每个任务的任务优先级低于该就绪状态任务(RT任务)。相反,至少一个处理器核心(CPU 0)被分配以至少一个任务,该至少一个任务中的每个的任务优先级高于该就绪状态任务的任务优先级(S卩,CPU 0被分配以至少一个RT任务),且该至少一个处理器核心(CPU 1-CPU 3)未被分配以第一调度类中的任何任务(RT任务)。
[0044]此外,将低于(图5中)或等于(图6中)第一调度类的其它调度类中的任务的任务优先级在分配操作中纳入考虑。具体地,在图5中,第一调度类中的就绪状态任务(RT任务)可优先分配给该两个或更多个处理核心中的一个(CPU 0或CPU 1),根据本发明一实施例,第一调度类中的就绪状态任务(RT任务)可优先分配给具有最低任务优先级的处理器核心(即CPU 1)。另一方面,在图6中,根据对应于第一调度类的调度算法(CFS),该调度算法将CPU 1-CPU3上的CFS任务的任务优先级纳入考虑,第一调度类中的就绪状态任务(CFS任务)可被分配给该至少一个处理器核心(CPU 0)之外的多个处理器核心(CPU1-CPU3)中的一个。
[0045]无论是在情形4还是情形5中,多个候选处理器核心(即图5中的CPU 0和CPU1,以及图6中的CPU 1-CPU 3)可从CPU 0-CPU 3中进行选择,并可进根据多个候选处理器核心上的多个任务的多个任务优先级,从该一个或多个处理器核心中进一步确定最适合的处理器核心。在以上两个步骤中,对关于与被分配的就绪状态任务不同的任务的任务分配信息的额外参考,可缓解负载不均衡的问题,并因此改善多核心处理器系统的性能。
[0046]与图3至图6中的就绪状态任务尚未被分配的情形相反,在分配就绪状态任务之前,图7中的该就绪状态任务已分配给多个处理器核心中的一个。也就是说,对关于与该就绪状态任务不同的任务的任务分配信息的额外参考,也可应用于确定是否将该就绪状态任务重新分配给该多个处理器核心中的另外一个。
[0047]图7为根据本发明又一实施例的第五情形中的任务分配说明示意图。如图7所示,在多核心处理器系统100中有四个处理器核心(CPU 0-CPU 3)。CPU 0被分配以CFS任务,CPU 1未被分配任何任务,CPU 2被分配以RT任务和CFS任务。当需要对CFS任务执行空闲均衡(idle balancing)时,由于CPU 2被分配以(i)至少一个RT任务,以及(ii)任务优先级低于至少一个RT任务的至少一个CFS任务,因而任务调度器110可确定CFS任务可被重新分配给未被分配任何任务的处理器核心CPU 1。
[0048]相比较而言,由于传统任务调度器仅参考关于CFS任务的任务分配信息,未考虑CFS任务在负载均衡操作期间在CPU 2上的RT任务,因此,传统任务调度器可能未考虑需要将CPU 2上的CFS任务重新分配给其它处理器核心。相反,任务调度器110参考关于CFS任务的第一任务分配信息和关于RT任务的第二任务分配信息,因而任务调度器110考虑需要将CPU 2上的CFS任务分配给另一处理器核心。此外,任务调度器110也能够区分处理器核心CPU 1和CPU3,并确定更多适合的未被分配任何任务的处理器核心CPU 1,以接受重新分配的CFS任务。
[0049]总而言之,更多的全面考虑关于多于一个调度类中的多个任务的任务分配信息,可应用于如果存在空闲处理器核心(即,未被分配任何任务)时确定是否重新分配任务。更具体地,可确定具体的调度类(即第一调度类,图7中的类1)以接收空闲均衡操作。以及若第一任务分配信息和第二任务分配信息指示(1)多个处理器核心中的一个未被分配任何调度类中的任何任务(图7中的CPU1),以及(2)该多个处理器核心中的至少一个处理器核心(图7中的CPU 2)被分配以(i)第一调度类中的至少一个任务以接收空闲均衡操作(CFS任务),以及(ii)与第一调度类不同的一调度类中的至少一个任务以及第一调度类中的任务优先级低于该至少一个任务的至少一个任务,则将第一调度类中的该至少一个任务中的一个(CFS任务)(将作为就绪状态任务)重新分配给未被分配任何任务的处理器核心(图7中的CPU 1)。
[0050]请注意,图1至图7所示上述实施例代表只有CFS任务,RT任务以及四个处理器核心(CPU ο-CPU 3)的情形。然而,本发明并不仅限于图1-7所示的情况。上述实施例的讨论可轻易类推至不同数目及/或调度类别的任务和其它不同数目的处理器核心的其它多个实施例。
[0051]图8为根据本发明一实施例的任务分配方法300的流程图。该任务分配方法可应用于多核心处理器系统,并由任务调度器执行以将多个任务调度给多个处理器核心。请注意,此处所显示的多个步骤的顺序并非用以限定目的,而仅用于说明目的。在步骤S310中,获取关于分配给多个处理器核心的第一调度类中的任务的第一任务分配信息。在步骤S320中,获取关于分配给多个处理器核心的一个或多个其它调度类中的任务的第二任务分配信息。该一个或多个其它调度类中的每个均不同于第一调度类。在步骤S330中,可参考第一任务分配信息和第二任务分配信息将第一调度类中的就绪状态任务分配给处理器核心中的一个。更多细节可从图1-7所示多个实施例的讨论进行类推,因而简洁起见,此处不再赘述。
[0052]与此处所公开各方面有关的所述方法的多个步骤可直接嵌入硬件,体现为由处理器执行的软件模块,或二者的结合。软件模块(例如,包含可执行的指令及相关数据)和其它数据可位于数据存储器中,例如随机存取存储器RAM,闪存,只读存储器R0M,电可编程只读存储器EPR0M,电可擦除可编程只读存储器EEPR0M,寄存器,硬盘,可移动磁盘,只读光盘驱动器CD-ROM,或本领域已知的计算机可读取存储介质的任何其它形式。举例而言,存储介质可以耦接于诸如计算机/处理器(方便起见,此处可称为“处理器”)的机器,以便处理器可从存储介质中读取信息及向存储介质中写入信息。举例而言,存储介质可集成于处理器。处理器和存储介质
可位于专用集成电路ASIC之中。ASIC可位于用户设备中。在另一种选择中,处理器和存储介质可作为分离的组件位于用户设备中。此外,在一些方面,任何适合的计算机程序产品可包含计算机可读介质,计算机可读介质包含与本说明书的一个或多个方面有关的代码。在一些方面,计算机软件产品可包含封装材料。
[0053]在传统任务调度器中,作为待分配的任务,任何任务是仅根据同一调度类中的任务的任务分配信息进行分配的(首次分配或重新分配),并未考虑不同调度类的任务的信息。传统调度方法在分配任务时完全独立地考虑不同的调度类,互不借鉴。这种不全面的任务分配信息的参考导致许多问题,例如负载不均衡以及系统性能降级。相反,本发明的多个实施例考虑到更加充分的信息,不仅包含与待分配任务处于同一调度类中的任务的任务分配信息,而且包含与待分配任务的调度类不同的一个或多个调度类中的任务的信息。因此,在该多个实施例中的方法可根据对应于任务的调度类的调度算法而调度任务,并且该方法也可根据多个调度类的信息将任务分配给多个处理器核心。因此,这些实施例可增强处理器核心之间的负载均衡并改善系统性能。
[0054]上述段落描述了许多方面。显然,本发明的教示可通过许多方法来实现,上述多个实施例中的任何具体配置或功能仅表示一种代表条件。本领域技术人员能够理解,本发明的全部公开方面可独立应用或相互结合使用。
[0055]虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何熟习此技艺者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视后附的权利要求所界定者为准。
【主权项】
1.一种任务分配方法,适用于多核心处理器系统,其中,所述多核心处理器系统包含多个处理器核心,且所述多个任务中的每一个位于多个调度类中的单独一个之中,所述任务分配方法包含: 获取分配给所述多个处理器核心的第一调度类中的多个任务的第一任务分配信息; 获取分配给所述多个处理器核心的一个或多个其它调度类中的多个任务的第二任务分配信息,其中,所述一个或多个其它调度类中的每个均不同于所述第一调度类;以及 参考所述第一任务分配信息和所述第二任务分配信息,将所述第一调度类中的就绪状态任务分配给所述多个处理器核心中的一个。2.根据权利要求1所述的任务分配方法,其特征在于,所述多个调度类分别对应于多个调度算法。3.根据权利要求2所述的任务分配方法,其特征在于,所述多个任务中的每个分别是根据对应于所述任务的所述调度类的所述多个调度算法中的一个进行调度的。4.根据权利要求2所述的任务分配方法,其特征在于,所述多个调度算法包含实时调度和完全公平调度。5.根据权利要求1所述的任务分配方法,其特征在于,所述多个调度类分别与多个优先级范围有关,以及所述多个任务中的每一个在所述多个优先级范围中的一个中具有各自的任务优先级,所述多个优先级范围与所述任务的所述调度类有关。6.根据权利要求1所述的任务分配方法,其特征在于,在分配所述就绪状态任务之前,所述就绪状态任务未分配给所述多个处理器核心中的任意一个。7.根据权利要求6所述的任务分配方法,其特征在于,在将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个之前,唤醒所述第一调度类中的任务作为所述就绪状态任务,以及将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个的步骤包含:选择所述多个处理器核心中的一个来运行所述就绪状态任务。8.根据权利要求1所述的任务分配方法,其特征在于,在将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个之前,所述第一调度类中的所述就绪状态任务已分配给所述多个处理器核心中的一个。9.根据权利要求8所述的任务分配方法,其特征在于,将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个的步骤包含: 确定是否将所述第一调度类中的所述就绪状态任务重新分配给所述多个处理器核心中的另一个处理器核心。10.根据权利要求1所述的任务分配方法,其特征在于,在参考所述第一任务分配信息和所述第二任务分配信息,将所述第一调度类中的就绪状态任务分配给所述多个处理器核心中的一个的步骤包含: 所述第一任务分配信息指示至少一个处理器核心未被分配所述第一调度类中的任务,以及所述第二任务分配信息指示所述多个处理器核心中的其它处理器核心中的至少一个被分配位于不同于所述第一调度类的任何调度类中的至少一个任务。11.根据权利要求1所述的任务分配方法,其特征在于,在参考所述第一任务分配信息和所述第二任务分配信息,将所述第一调度类中的就绪状态任务分配给所述多个处理器核心中的一个的步骤包含: 根据所述第一任务分配信息是否指示所述多个处理器核心中的一个或多个未被分配所述第一调度类中的任务,以及所述第二任务分配信息是否指示所述多个处理器核心中的一个或多个未被分配位于不同于所述第一调度类的调度类中的任务,判断所述多个处理器核心中的任意一个或多个是否未被分配任何调度类中的任务。12.根据权利要求11所述的任务分配方法,其特征在于,当所述第一任务分配信息和所述第二任务分配信息指示所述多个处理器核心中的至少一个未被分配任务时,将所述第一调度类中的所述就绪状态任务分配给未被分配任何任务的所述至少一个处理器核心中的一个。13.根据权利要求7所述的任务分配方法,其特征在于,当唤醒所述第一调度类中的所述就绪状态任务,并将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个时,所述第一任务分配信息和所述第二任务分配信息指示至少一个处理器核心未被分配任何调度类中的任务,以及所述第二任务分配信息进一步指示所述多个处理器核心中的其它处理器核心中的一个或多个被分配不同于所述第一调度类的一个或多个其它调度类中的一个或多个任务。14.根据权利要求13所述的任务分配方法,其特征在于,所述一个或多个任务中的至少一个的任务优先级高于或低于所述就绪状态任务的任务优先级。15.根据权利要求13所述的任务分配方法,其特征在于,将所述第一调度类中的所述就绪状态任务分配给未被分配任何任务的所述至少一个处理器核心中的一个。16.根据权利要求7所述的任务分配方法,其特征在于,当唤醒所述第一调度类中的所述就绪状态任务,并将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个时,所述第一任务分配信息和所述第二任务分配信息指示: 没有处理器核心未被分配任何调度类中的任务;以及 所述多个处理器核心中的两个或更多个被分配的任务的任务优先级低于所述就绪状态任务的任务优先级。17.根据权利要求16所述的任务分配方法,其特征在于,将所述第一调度类中的所述就绪状态任务分配给所述两个或更多个处理器核心。18.根据权利要求17所述的任务分配方法,其特征在于,将所述第一调度类中的所述就绪状态任务分配给所述两个或更多个处理器核心中的一个,其中所述两个或更多个处理器核心已被分配具有最低任务优先级的任务中的一个。19.根据权利要求7所述的任务分配方法,其特征在于,当所述第一调度类中的所述就绪状态任务被唤醒并等待被分配至所述多个处理器核心中的一个时,所述第一任务分配信息和所述第二任务分配信息指示: 所述多个处理器核心中的至少一个被分配以至少一个任务,该至少一个任务中的每个的任务优先级高于所述第一调度类中的所述就绪状态任务的任务优先级; 所述至少一个处理器核心未被分配所述第一调度类中的任务;以及 所述多个处理器核心中没有未被分配任何任务的其它处理器核心。20.根据权利要求19所述的任务分配方法,其特征在于,将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中除所述至少一个处理器核心以外的一个。21.根据权利要求20所述的任务分配方法,其特征在于,根据对应于所述第一调度类的调度算法,将所述第一调度类中的所述就绪状态任务进行分配。22.根据权利要求9所述的任务分配方法,其特征在于,在参考所述第一任务分配信息和所述第二任务分配信息,将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个的步骤中,所述第一任务分配信息和所述第二任务分配信息指示所述多个处理器核心中的一个未被分配任何调度类中的任何任务,并将所述就绪状态任务重新分配给未被分配任何任务的所述处理器核心。23.根据权利要求22所述的任务分配方法,其特征在于,在参考所述第一任务分配信息和所述第二任务分配信息,将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个的步骤中,所述第一任务分配信息和所述第二任务分配信息进一步指示所述多个处理器核心中的至少一个处理器核心被分配以所述第一调度类中的至少一个任务,以及与所述第一调度类不同的其它调度类中的至少一个任务,其中所述其它调度类中的所述至少一个任务的任务优先级低于所述第一调度类中的所述至少一个第一任务的任务优先级。24.根据权利要求23所述的任务分配方法,其特征在于,所述第一调度类中的所述就绪状态任务是所述第一调度类中的所述至少一个任
务中的一个。25.—种多核心处理器系统,包含: 多个处理器核心,用于执行多个任务,其中,所述多个任务中的每一个位于多个调度类中的单独一个之中,以及 任务调度器,用于获取分配给所述多个处理器核心的第一调度类中的多个任务的第一任务分配信息,获取分配给所述多个处理器核心的一个或多个其它调度类中的多个任务的第二任务分配信息,其中,所述一个或多个其它调度类中的每一个均不同于所述第一调度类,以及所述任务调度器参考所述第一任务分配信息和所述第二任务分配信息,将所述第一调度类中的就绪状态任务分配给所述多个处理器核心中的一个。26.根据权利要求25所述的多核心处理器系统,其特征在于,所述多个调度类分别对应于多个调度算法。27.根据权利要求26所述的多核心处理器系统,其特征在于,所述多个任务中的每个分别是根据对应于所述任务的所述调度类的所述多个调度算法中的一个进行调度的。28.根据权利要求26所述的多核心处理器系统,其特征在于,所述多个调度算法包含实时调度和完全公平调度。29.根据权利要求25所述的多核心处理器系统,其特征在于,所述多个调度类分别与多个优先级范围有关,以及所述多个任务中的每一个在所述多个优先级范围中的一个中具有各自的任务优先级,所述多个优先级范围与所述任务的所述调度类有关。30.根据权利要求25所述的多核心处理器系统,其特征在于,所述任务调度器在分配所述就绪状态任务之前,未将所述就绪状态任务分配给所述多个处理器核心中的任意一个。31.根据权利要求30所述的多核心处理器系统,其特征在于,所述任务调度器在将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个之前,唤醒所述第一调度类中的任务作为所述就绪状态任务,以及所述任务调度器在将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个时,选择所述多个处理器核心中的一个来运行所述就绪状态任务。32.根据权利要求25所述的多核心处理器系统,其特征在于,所述任务调度器在将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个之前,所述第一调度类中的所述就绪状态任务已分配给所述多个处理器核心中的一个。33.根据权利要求32所述的多核心处理器系统,其特征在于,所述任务调度器在将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个时,确定是否将所述第一调度类中的所述就绪状态任务重新分配给所述多个处理器核心中的另一个处理器核心。34.根据权利要求25所述的多核心处理器系统,其特征在于,所述任务调度器在参考所述第一任务分配信息和所述第二任务分配信息,将所述第一调度类中的就绪状态任务分配给所述多个处理器核心中的一个时,所述第一任务分配信息指示至少一个处理器核心未被分配所述第一调度类中的任务,以及所述第二任务分配信息指示所述多个处理器核心中的其它处理器核心中的至少一个被分配位于不同于所述第一调度类的任意调度类中的至少一个任务。35.根据权利要求25所述的多核心处理器系统,其特征在于,所述任务调度器在参考所述第一任务分配信息和所述第二任务分配信息,将所述第一调度类中的就绪状态任务分配给所述多个处理器核心中的一个时,根据所述第一任务分配信息是否指示所述多个处理器核心中的一个或多个未被分配所述第一调度类中的任务,以及所述第二任务分配信息是否指示所述多个处理器核心中的一个或多个未被分配位于不同于所述第一调度类的调度类中的任务,判断所述多个处理器核心中的任意一个或多个是否未被分配任何调度类中的任务。36.根据权利要求35所述的多核心处理器系统,其特征在于,当所述第一任务分配信息和所述第二任务分配信息指示所述多个处理器核心中的至少一个未被分配任务时,所述任务调度器将所述第一调度类中的所述就绪状态任务分配给未被分配任何任务的所述至少一个处理器核心中的一个。37.根据权利要求31所述的多核心处理器系统,其特征在于,当所述任务调度器唤醒所述第一调度类中的所述就绪状态任务,并将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个时,所述第一任务分配信息和所述第二任务分配信息指示至少一个处理器核心未被分配任何调度类中的任务,以及所述第二任务分配信息进一步指示所述多个处理器核心中的其它处理器核心中的一个或多个被分配不同于所述第一调度类的一个或多个其它调度类中的一个或多个任务。38.根据权利要求37所述的多核心处理器系统,其特征在于,所述一个或多个任务中的至少一个的任务优先级高于或低于所述就绪状态任务的任务优先级。39.根据权利要求37所述的多核心处理器系统,其特征在于,所述任务调度器将所述第一调度类中的所述就绪状态任务分配给未被分配任何任务的所述至少一个处理器核心中的一个。40.根据权利要求32所述的多核心处理器系统,其特征在于,当所述任务调度器唤醒所述第一调度类中的所述就绪状态任务,并将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个时,所述第一任务分配信息和所述第二任务分配信息指示: 没有处理器核心未被分配任何调度类中的任务;以及 所述多个处理器核心中的两个或更多个被分配的任务的任务优先级低于所述就绪状态任务的任务优先级。41.根据权利要求40所述的多核心处理器系统,其特征在于,所述任务调度器将所述第一调度类中的所述就绪状态任务分配给所述两个或更多个处理器核心。42.根据权利要求41所述的多核心处理器系统,其特征在于,所述任务调度器将所述第一调度类中的所述就绪状态任务分配给所述两个或更多个处理器核心中的一个,其中所述两个或更多个处理器核心已被分配具有最低任务优先级的任务中的一个。43.根据权利要求31所述的多核心处理器系统,其特征在于,当所述第一调度类中的所述就绪状态任务被唤醒并等待被所述任务调度器分配至所述多个处理器核心中的一个时,所述第一任务分配信息和所述第二任务分配信息指示: 所述多个处理器核心中的至少一个被分配以至少一个任务,该至少一个任务中的每个的任务优先级高于所述第一调度类中的所述就绪状态任务的任务优先级; 所述至少一个处理器核心未被分配所述第一调度类中的任务;以及 所述多个处理器核心中没有未被分配任何任务的其它处理器核心。44.根据权利要求43所述的多核心处理器系统,其特征在于,所述任务调度器将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中除所述至少一个处理器核心以外的一个。45.根据权利要求44所述的多核心处理器系统,其特征在于,根据对应于所述第一调度类的调度算法,所述任务调度器将所述第一调度类中的所述就绪状态任务进行分配。46.根据权利要求33所述的多核心处理器系统,其特征在于,所述任务调度器在参考所述第一任务分配信息和所述第二任务分配信息,将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个时,所述第一任务分配信息和所述第二任务分配信息指示所述多个处理器核心中的一个未被分配任何调度类中的任何任务,并所述任务调度器将所述就绪状态任务重新分配给未被分配任何任务的所述处理器核心。47.根据权利要求46所述的多核心处理器系统,其特征在于,在所述任务调度器参考所述第一任务分配信息和所述第二任务分配信息,将所述第一调度类中的所述就绪状态任务分配给所述多个处理器核心中的一个时,所述第一任务分配信息和所述第二任务分配信息进一步指示所述多个处理器核心中的至少一个处理器核心被分配以所述第一调度类中的至少一个任务,以及与所述第一调度类不同的其它调度类中的至少一个任务,其中所述其它调度类中的所述至少一个任务的任务优先级低于所述第一调度类中的所述至少一个第一任务的任务优先级。48.根据权利要求47所述的多核心处理器系统,其特征在于,所述第一调度类中的所述就绪状态任务是所述第一调度类中的所述至少一个任务中的一个。
【专利摘要】本发明提供一种多核心处理器系统及任务分配方法,其中一种多核心处理器系统,包含:多个处理器核心,用于执行多个任务,其中,所述多个任务中的每一个位于多个调度类中的单独一个之中,以及任务调度器,用于获取分配给所述多个处理器核心的第一调度类中的多个任务的第一任务分配信息,获取分配给所述多个处理器核心的一个或多个其它调度类中的多个任务的第二任务分配信息,其中,所述一个或多个其它调度类中的每一个均不同于所述第一调度类,以及参考所述第一任务分配信息和所述第二任务分配信息,将所述第一调度类中的就绪状态任务分配给所述多个处理器核心中的一个。本发明的优点之一在于能够使得多个处理器核心的负载可更加均衡,改善多核心处理器系统的性能。
【IPC分类】G06F9/46
【公开号】CN105487919
【申请号】CN201510581261
【发明人】张雅婷, 陈雨廷, 林有明, 陈家明, 周宏霖, 骆子仁
【申请人】联发科技股份有限公司
【公开日】2016年4月13日
【申请日】2015年9月14日
【公告号】US20160098300