至少部分基于共享相同数据及/或存取相同存储地址的任务分布的任务调度方法以及多 ...的制作方法
【专利说明】至少部分基于共享相同数据及/或存取相同存储地址的任务分布的任务调度方法以及多核处理器系统中用于分配任务的相关非暂时性计算机可读介质
[0001]交叉引用
[0002]本发明要求如下优先权:编号为61/904,072,申请日为2013年11月14日的美国临时专利申请。上述美国临时专利申请在此一并作为参考。
技术领域
[0003]本发明揭露的实施例涉及一种任务调度方案。特别地,本发明揭露的实施例涉及一种多核处理器系统(mult1-core processor system)中用于调度任务(例如,普通任务)的任务调度方法以及相关非暂时性计算机可读介质(non-transitory computer readablemedium),其中上述任务调度方法至少部分基于共享相同特定数据及/或存取相同特定存储地址的任务分布。
【背景技术】
[0004]现今,由于对运算能力的越来越多需求,多核系统变得普及。因此,多核系统的操作系统(operating system,OS)需要决定不同处理器核心调度的任务以维持较好的负载平衡及/或较高的系统资源利用。上述处理器核心可按照不同集群(cluster)进行分类,并且上述集群可分别随着在高速缓存层中同级的分立高速缓存(cache)进行分配。例如,可配置不同集群以分别使用不同第二层(leVel-2,L2)的高速缓存。通常,在多核系统中实施高速缓存一致性互联(cache coherent interconnect)以管理致力于不同集群的高速缓存之间的高速缓存一致性。然而,当L2高速缓存读未命中或L2高速缓存书写发生时,上述高速缓存一致性互联具有一致性开销(coherency overhead)。传统任务调度设计简单地找出最忙处理器核心,并且将最忙处理器核心的运行队列中的任务移动至最空闲处理器核心的运行队列。因此,传统调度设计在不考虑高速缓存一致性开销的情况下控制将任务从一个集群到另一个集群的转移。
[0005]总之,需要创新的任务调度设计,其当将任务分配至集群中运行队列时考虑高速缓存一致性开销,这样可缓解或避免高速缓存一致性开销从而取得改善的任务调度性能。
【发明内容】
[0006]依据本发明实施例,提出至少部分基于共享相同特定数据及/或存取相同特定存储地址的任务分布在多核处理器系统中分配任务的任务调度方法与非暂时性计算机可读介质以解决上述问题。
[0007]根据本发明第一方面,揭露一种多核处理器系统的示例任务调度方法。该示例任务调度方法包含:当第一任务属于当前在该多核处理器系统中的线程组时,其中,该线程组具有共享相同特定数据的多个任务,并且该多个任务包含该第一任务与至少一个第二任务,至少部分基于该至少一个第二任务的分布决定该多核处理器系统中的目标处理器核心,其中该至少一个第二任务位于该多核处理器系统中至少一个处理器核心的至少一个运行队列中;以及将该第一任务分配至该目标处理器核心的运行队列。
[0008]根据本发明第二方面,揭露一种多核处理器系统的示例任务调度方法。该示例任务调度方法包含:当第一任务属于当前在该多核处理器系统中的线程组时,其中,该线程组具有存取相同特定存储地址的多个任务,并且该多个任务包含该第一任务与至少一个第二任务,至少部分基于该至少一个第二任务的分布决定该多核处理器系统中的目标处理器核心,其中该至少一个第二任务位于该多核处理器系统中至少一个处理器核心的至少一个运行队列中;以及将该第一任务分配至该目标处理器核心的运行队列。
[0009]此外,本发明也提供一种存储任务调度程序代码的非短暂计算机可读介质,其中当多核处理器系统执行该任务调度程序代码时,该任务调度程序代码引发该多核处理器系统执行上述任务调度方法。
[0010]在读了用各种示图描述的较佳实施例的详细描述后,本领域技术人员可理解本发明的宗旨。
【附图说明】
[0011]图1是根据本发明实施例描述的多核处理器系统的示意图;
[0012]图2是根据本发明实施例描述的非暂时性计算机可读介质的示意图;
[0013]图3是描述第一任务调度操作的示意图,其中上述操作将一个单线程进程的任务分配入处理器核心的运行队列;
[0014]图4是描述第二任务调度操作的示意图,其中上述操作将属于线程组的一个任务分配入处理器核心的运行队列;
[0015]图5是描述第三任务调度操作的示意图,其中上述操作将属于线程组的一个任务分配入处理器核心的运行队列;
[0016]图6是描述第四任务调度操作的示意图,其中上述操作将属于线程组的一个任务分配入处理器核心的运行队列;
[0017]图7是描述第五任务调度操作的示意图,其中上述操作将属于线程组的一个任务分配入处理器核心的运行队列;
[0018]图8是描述第六任务调度操作的示意图,其中上述操作将属于线程组的一个任务从一集群中处理器核心的运行队列转移至另一集群中处理器核心的运行队列;
[0019]图9是描述第七任务调度操作的示意图,其中上述操作将一个单线程进程的任务从一集群中处理器核心的运行队列转移至另一集群中处理器核心的运行队列;
[0020]图10是描述第八任务调度操作的示意图,其中上述操作将一个单线程进程的任务从一集群中处理器核心的运行队列转移至另一集群中处理器核心的运行队列;
[0021]图11是描述第九任务调度操作的示意图,其中上述操作将一个单线程进程的任务从一集群中处理器核心的运行队列转移至相同集群中处理器的运行队列。
【具体实施方式】
[0022]在说明书及权利要求书当中使用了某些词汇来指称特定的元件。所属技术领域的技术人员应可理解,硬件制造商可能会用不同的名词来称呼同一个元件。本说明书及权利要求书并不以名称的差异作为区分元件的方式,而是以元件在功能上的差异作为区分的准贝1J。在通篇说明书及权利要求项中所提及的“包含”为一开放式的用语,故应解释成“包含但不限定于”。此外,“耦接”一词在此包含任何直接及间接的电气连接手段。因此,若文中描述一个装置耦接于另一装置,则代表该一个装置可直接电气连接于该另一装置,或通过其它装置或连接手段间接地电气连接至该另一装置。
[0023]图1是根据本发明实施例描述的多核处理器系统的示意图。多核处理器系统10可在可携式装置中进行实施,例如移动电话、平板电脑、可穿戴式设备等。然而,上述说明并非对本发明的限制。即,任何使用所述任务调度方法的电子装置皆落入本发明的保护范围。在本实施例中,多核处理器系统10可具有多个集群112_1-112_N,其中N为正整数并且可基于实际设计考虑进行调整。即,本发明不限制多核处理器系统10中配置的集群数量。
[0024]对于集群112_1_112_N,每个集群可为一组处理器核心。例如,集群112_1可包含一个或多个处理器核心117,其中每个处理器核心117具有运算能力相同的相同处理器结构;以及集群112_N可包含一个或多个处理器核心118,其中每个处理器核心118具有运算能力相同的相同处理器结构。在一示例中,处理器核心117可具有运算能力不同的不同处理器结构。在另一示例中,处理器核心118可具有运算能力不同的不同处理器结构。在一示例设计中,多核处理器系统10可使用所述任务调度方法以及对称多处理(symmetricmult1-processing, SMP)结构。因此,多核处理器系统10中的每个处理器核心可具有运算能力相同的相同处理器结构。在另一示例设计中,多核处理器系统10可使用所述任务调度方法以及异构多核(heterogeneous mult1-core)结构。例如,集群112_1的每个处理器核心117可具有支持第一运算能力的第一处理器结构,并且集群112_N的每个处理器核心Il8可具有支持第二运算能力的第二处理器结构,其中第二处理器结构与第一处理器结构不同,并且第二运算能力与第一运算能力不同。
[0025]值得注意的是,可基于实际设计考虑调整集群112_1_112_N的处理器核心数量。例如,集群112_1中的处理器核心117的数量可与集群112_N中的处理器核心118的数量相同或不同。
[0026]可配置集群112_1_112_N在同级的高速缓存层各自使用不同的高速缓存。在本示例中,可将一个专用L2高速缓存分配至每个集群。如图1所示,多核处理器系统10可具有多个L2高速缓存114_1-114_N。因此,集群112_1可使用一个L2高速缓存114_1用于缓存数据,以及集群112_N可使用另一个L2高速缓存114_N用于缓存数据。另外,可使用高速缓存一致性互联116管理集群112_1-112_N各自存取的L2高速缓存114_1_114_N之间的一致性。如图1所示,存在通过高速缓存一致性互联116耦接L2高速缓存114_1-114_N的主存储器119。当L2高速缓存的高速缓存未命中发生时,从主存储器119中重新得到请求数据然后存储于L2高速缓存中。当L2高速缓存的高速缓存命中发生时,这意味着在L2高速缓存中请求数据是可用的,从而不需要存取主存储器119。
[0027]在主存储器119中的相同数据可存储在相同存储地址中。此外,可基于处理器核心产生的读/写请求中的存储地址,存取L2高速缓存114_l-114_N的每一个中的高速缓存条目。所述任务调度方法可增加用于集群的L2高速缓存的高速缓存命中率,其中上述任务调度方法分配共享主存储器119中的相同特定数据及/或存取主存储器119中的相同特定存储地址的多个任务至相同集群。例如,当运行在集群的一个处理器核心中的一个任务首先发出存储地址处的请求数据的读/写请求时,L2高速缓存的高速缓存未命中可发生,并且从主存储器119中重新取得存储地址处的请求数据然后将其缓存入L2高速缓存中。接着,当运行在相同集群的一个处理器核心中的另一任务发出相同存储地址处的相同请求数据的读/写请求时,L2高速缓存的高速缓存命中可发生,并且L2高速缓存可直接输出缓存其中的请求数据以响应读/写请求,而不需要存取主存储器119。当将共享主存储器119中的相同特定数据及/或存取主存储器119中的相同特定存储地址的任务分配至相同集群时,可提高集群的L2高速缓存的高速缓存命中率。既然触发高速缓存一致性的高速缓存未命中(读/写未命中)可引起高速缓存一致性开销,所以,提高的高速缓存命中率可帮助减少高速缓存一致性开销。因此,在本发明中,例如,可定义线程组(thread group)为具有共享主存储器119中相同特定数据及/或存取主存储器119中相同特定存储地址的多个任务。一个任务可为单线程进程或多线程进程的一个线程。当将属于相同线程组的大多数或所有任务安排在相同集群用于执行时,由于改进的高速缓存局部