用于多核系统的动态核心调度方法和装置转让专利

申请号 : CN202211713283.5

文献号 : CN115686800B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 请求不公布姓名

申请人 : 摩尔线程智能科技(北京)有限责任公司

摘要 :

公开了一种用于多核系统的动态核心调度方法和装置。该方法包括:从目标应用接收任务执行请求,任务执行请求包括待执行任务的任务负载级别;获取多核系统的可调度核心区域中各个核心的任务分配情况和调度优先级;获取分级任务分配模式,分级任务分配模式包括与预期分配的多个任务负载级别中至少一个任务负载级别对应的预期调度核心满足的动态预设条件;根据待执行任务的任务负载级别、可调度核心区域中各个核心的任务分配情况和调度优先级以及分级任务分配模式,从可调度核心区域中确定用于处理待执行任务的目标核心。

权利要求 :

1.一种用于多核系统的动态核心调度方法,其特征在于,所述方法包括:

从目标应用接收任务执行请求,所述任务执行请求包括待执行任务的任务负载级别;

响应于所述任务执行请求,获取多核系统的可调度核心区域中各个核心的任务分配情况和调度优先级,所述任务分配情况包括所述可调度核心区域中各个核心的任务分配状态和承载的任务负载级别,所述调度优先级是根据所述可调度核心区域中各个核心的位置确定的;

获取针对所述多核系统的分级任务分配模式,所述分级任务分配模式包括与预期分配的多个任务负载级别中至少一个任务负载级别对应的预期调度核心满足的动态预设条件,所述预期分配的多个任务负载级别是与所述目标应用相关的,所述动态预设条件包括:所述预期调度核心的每一个相邻核心处于未分配任务状态或承载的任务负载级别低于所述至少一个任务负载级别;

根据所述待执行任务的任务负载级别、所述可调度核心区域中各个核心的任务分配情况和调度优先级以及所述分级任务分配模式,从所述可调度核心区域中确定用于处理所述待执行任务的目标核心。

2.根据权利要求1所述的方法,其特征在于,所述根据所述待执行任务的任务负载级别、所述可调度核心区域中各个核心的任务分配情况和调度优先级以及所述分级任务分配模式,从所述可调度核心区域中确定用于处理所述待执行任务的目标核心,包括:根据所述可调度核心区域中各个核心的任务分配情况和调度优先级,从所述可调度核心区域中选取候选核心;

判断所述待执行任务的任务负载级别是否与所述分级任务分配模式中所述至少一个任务负载级别之一相同;

响应于所述待执行任务的任务负载级别与所述至少一个任务负载级别之一相同,根据所述可调度核心区域中各个核心的任务分配情况,判断所述候选核心是否满足所述动态预设条件;响应于所述候选核心满足所述动态预设条件,将所述候选核心确定为所述目标核心。

3.根据权利要求2所述的方法,其特征在于,所述根据所述待执行任务的任务负载级别、所述可调度核心区域中各个核心的任务分配情况和调度优先级以及所述分级任务分配模式,从所述可调度核心区域中确定用于处理所述待执行任务的目标核心,进一步包括:响应于所述待执行任务的任务负载级别与所述至少一个任务负载级别中每一个任务负载级别都不同,将候选核心确定为目标核心。

4.根据权利要求1所述的方法,其中所述分级任务分配模式是根据所述预期分配的多个任务负载级别获取的。

5.根据权利要求4所述的方法,其特征在于:

在所述预期分配的多个任务负载级别包括第一任务负载级别和第二任务负载级别且第一任务负载级别低于第二任务负载级别的情况下,所述分级任务分配模式为第一分级任务分配模式,在第一分级任务分配模式中,所述动态预设条件包括:所述第二任务负载级别对应的预期调度核心的每一个相邻核心处于未分配任务状态或者承载的任务负载级别为第一任务负载级别。

6.根据权利要求4所述的方法,其特征在于,在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且第二任务负载级别和第三任务负载级别均高于第一任务负载级别的情况下,所述分级任务分配模式为第二分级任务分配模式,在第二分级任务分配模式中,所述动态预设条件包括第一动态预设条件和第二动态预设条件,所述第一动态预设条件包括:所述第二任务负载级别对应的预期调度核心的每一个相邻核心处于未分配任务状态或者承载的任务负载级别为第一任务负载级别;

所述第二动态预设条件包括:所述第三任务负载级别对应的预期调度核心的相邻核心处于未分配任务状态或者承载的任务负载级别为第一任务负载级别。

7.根据权利要求6所述的方法,其特征在于,第三任务负载级别高于第二任务负载级别,并且所述第二分级任务分配模式包括第一子模式,在第一子模式中,第二动态预设条件包括:除了与第三任务负载级别对应的预期调度核心之外,在与该预期调度核心的至少一个横向相邻核心和至少一个纵向相邻核心都相邻的所有核心中,承载第三任务负载级别的核心数量占比小于或等于第一阈值。

8.根据权利要求6所述的方法,其特征在于,所述第二分级任务分配模式包括第二子模式,在第二子模式中,第一动态预设条件进一步包括:除了与第二任务负载级别对应的预期调度核心之外,在与该预期调度核心的至少一个横向相邻核心和至少一个纵向相邻核心都相邻的所有核心中,承载第二任务负载级别的核心数量与承载第三任务负载级别的核心数量之和占比小于或等于第二阈值。

9.根据权利要求8所述的方法,其特征在于,所述第三任务负载级别高于第二任务负载级别,并且在第二子模式中,第二动态预设条件进一步包括:除了与第三任务负载级别对应的预期调度核心之外,在与该预期调度核心的至少一个横向相邻核心和至少一个纵向相邻核心都相邻的所有核心中,承载第二任务负载级别的核心数量占比小于或等于第三阈值,且承载第三任务负载级别的核心数量占比小于或等于第四阈值。

10.根据权利要求9所述的方法,其特征在于,所述第四阈值为0。

11.根据权利要求7所述的方法,其特征在于,在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差小于第一极差阈值的情况下,所述分级任务分配模式为第二分级任务分配模式的第一子模式,所述极差指示所述预期分配多个任务负载级别中最高任务负载级别与最低任务负载级别对应的任务复杂程度之间的差异。

12.根据权利要求9或10所述的方法,其特征在于,在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差大于或等于第二极差阈值的情况下,所述分级任务分配模式为第二分级任务分配模式的第二子模式,所述极差指示所述预期分配多个任务负载级别中最高任务负载级别与最低任务负载级别对应的任务复杂程度之间的差异。

13.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:

获取所述目标应用对应的区域调度参数,所述区域调度参数基于所述目标应用运行所需的核心数量确定;

根据所述区域调度参数,从所述多核系统的核心阵列中确定可调度核心区域。

14.根据权利要求1所述的方法,其特征在于,所述获取多核系统的可调度核心区域中各个核心的任务分配情况和调度优先级进一步包括:根据所述可调度核心区域中各个核心的位置的横向排列顺序和纵向排列顺序,确定可调度核心区域中各个核心的调度优先级;或者根据所述可调度核心区域中每一个核心与预定核心的位置关系,确定所述可调度核心区域中各个核心的调度优先级。

15.根据权利要求14所述的方法,其特征在于,所述根据所述可调度核心区域中每一个核心与预定核心之间的位置关系,确定所述可调度核心区域中各个核心的调度优先级,包括:将所述可调度核心区域划分为多个可调度核心子区域,所述多个可调度核心子区域包括所述预定核心所在的基准可调度核心子区域;

基于每一个可调度核心子区域与基准可调度核心子区域之间的距离,确定每一个可调度核心子区域的第一调度顺序;

至少根据每一个可调度核心子区域的第一调度顺序,确定每一个可调度核心子区域中各个核心的调度优先级。

16.根据权利要求14所述的方法,其特征在于,同一个可调度核心子区域中的各个核心共享同一个电源域。

17.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:

响应于目标核心被确定,将目标核心的任务分配状态更新为已分配任务状态且开启目标核心的电源域。

18.根据权利要求17所述的方法,其特征在于,所述方法进一步包括:

响应于目标核心完成所述待执行任务,将目标核心的任务分配状态更新为未分配任务状态;响应于目标核心的电源域相关的所有核心都处于未分配任务状态,关断目标核心的电源域。

19.一种用于多核系统的动态核心调度装置,其特征在于,所述装置包括:

接收模块,其配置成从目标应用接收任务执行请求,所述任务执行请求包括待执行任务的任务负载级别;

第一获取模块,其配置成响应于所述任务执行请求,获取多核系统的可调度核心区域中各个核心的任务分配情况和调度优先级,所述任务分配情况包括所述可调度核心区域中各个核心的任务分配状态和承载的任务负载级别,所述调度优先级是根据所述可调度核心区域中各个核心的位置确定的;

第二获取模块,其配置成获取针对所述多核系统的分级任务分配模式,所述分级任务分配模式包括与预期分配的多个任务负载级别中至少一个任务负载级别对应的预期调度核心满足的动态预设条件,所述预期分配的多个任务负载级别与所述目标应用相关,所述动态预设条件包括:所述预期调度核心的每一个相邻核心处于未分配任务状态或承载的任务负载级别低于所述至少一个任务负载级别;以及确定模块,其配置成根据所述待执行任务的任务负载级别、所述可调度核心区域中各个核心的任务分配情况和调度优先级以及所述分级任务分配模式,从所述可调度核心区域中确定用于处理所述待执行任务的目标核心。

20.一种计算设备,其特征在于,包括:

存储器和处理器,

其中所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时促使所述处理器执行权利要求1‑18中任一项所述的方法。

21.一种计算机可读存储介质,其特征在于,其上存储计算机可读指令,所述计算机可读指令在被执行时实现权利要求1‑18中任一项所述的方法。

说明书 :

用于多核系统的动态核心调度方法和装置

技术领域

[0001] 本申请涉及计算机技术领域,更具体地涉及一种用于多核系统的动态核心调度方法和装置、计算设备、计算机可读存储介质及计算机程序产品。

背景技术

[0002] 随着计算机技术发展,越来越多的人认识到,仅仅提高单核处理器芯片的速度会产生过多热量,散热问题面临瓶颈,且无法带来与之匹配的性能改善;另外,即便不考虑散热问题,由于当前单核处理器的速度提升所带来的性能改进与其所耗费的巨大成本完全不成比例,即性价比令人难以接受。在这种情况下,多核处理器或多核系统应运而生。与单核处理器的芯片速度提升不同,多核处理器主要是通过增加芯片内处理器内核的个数来提升处理器整体性能。多核处理器技术除了在应用上为计算机带来更强大的计算性能之外,更重要的是可以满足多任务并行处理和多任务计算环境的要求。
[0003] 然而,当使用多核系统处理任务时,如果多核系统中各个核心调度不当,可能造成在系统核心阵列的某一核心区域中过多核心都被(例如同一时段)调度执行相对复杂的或计算开销较大的任务(即负载过大的任务),即高负载任务在该核心区域过度聚集,迫使该区域中邻近排布的多个核心需要同时进行高速运算或处于高负荷状态,导致这一核心区域功率密度大幅上升,从而引起区域高发热;同时也可能由于物理位置邻近的各核心的任务负载过重,导致核心任务延时升高(甚至呈指数型增长),显著影响系统的整体性能。

发明内容

[0004] 本申请提供了一种用于多核系统的动态核心调度方法和装置、计算设备、计算机可读存储介质及计算机程序产品,期望缓解、减轻或甚至消除上述问题中的一些或全部以及其它可能的问题。
[0005] 根据本申请的一个方面,提出一种用于多核系统的动态核心调度方法,包括:从目标应用接收任务执行请求,任务执行请求包括待执行任务的任务负载级别;响应于任务执行请求,获取多核系统的可调度核心区域中各个核心的任务分配情况和调度优先级,任务分配情况包括所述可调度核心区域中各个核心的任务分配状态和承载的任务负载级别;获取针对多核系统的分级任务分配模式,分级任务分配模式包括与预期分配的多个任务负载级别中至少一个任务负载级别对应的预期调度核心满足的动态预设条件,预期分配的多个任务负载级别是与目标应用相关的,动态预设条件包括:预期调度核心的每一个相邻核心处于未分配任务状态或承载的任务负载级别低于至少一个任务负载级别;根据待执行任务的任务负载级别、可调度核心区域中各个核心的任务分配情况和调度优先级以及分级任务分配模式,从可调度核心区域中确定用于处理待执行任务的目标核心。
[0006] 在根据本申请一些实施例的动态核心调度方法中,根据待执行任务的任务负载级别、可调度核心区域中各个核心的任务分配情况和调度优先级以及分级任务分配模式,从可调度核心区域中确定用于处理待执行任务的目标核心,包括:根据可调度核心区域中各个核心的任务分配情况和调度优先级,从可调度核心区域中选取候选核心;判断待执行任务的任务负载级别是否与分级任务分配模式中至少一个任务负载级别之一相同;响应于待执行任务的任务负载级别与至少一个任务负载级别之一相同,根据可调度核心区域中各个核心的任务分配情况,判断候选核心是否满足动态预设条件;响应于候选核心满足动态预设条件,将候选核心确定为目标核心。
[0007] 在根据本申请一些实施例的动态核心调度方法中,根据待执行任务的任务负载级别、可调度核心区域中各个核心的任务分配情况和调度优先级以及分级任务分配模式,从可调度核心区域中确定用于处理待执行任务的目标核心,进一步包括:响应于待执行任务的任务负载级别与至少一个任务负载级别中每一个任务负载级别都不同,将候选核心确定为目标核心。
[0008] 在根据本申请一些实施例的动态核心调度方法中,分级任务分配模式是根据预期分配的多个任务负载级别获取的。
[0009] 在根据本申请一些实施例的动态核心调度方法中,在预期分配的多个任务负载级别包括第一任务负载级别和第二任务负载级别且第一任务负载级别低于第二任务负载级别的情况下,分级任务分配模式为第一分级任务分配模式,在第一分级任务分配模式中,动态预设条件包括:所述第二任务负载级别对应的预期调度核心的每一个相邻核心处于未分配任务状态或者承载的任务负载级别为第一任务负载级别。
[0010] 在根据本申请一些实施例的动态核心调度方法中,在预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且第二任务负载级别和第三任务负载级别均高于第一任务负载级别的情况下,分级任务分配模式为第二分级任务分配模式,在第二分级任务分配模式中,动态预设条件包括第一动态预设条件和第二动态预设条件,第一动态预设条件包括:第二任务负载级别对应的预期调度核心的每一个相邻核心处于未分配任务状态或者承载的任务负载级别为第一任务负载级别;第二动态预设条件包括:第三任务负载级别对应的预期调度核心的相邻核心处于未分配任务状态或者承载的任务负载级别为第一任务负载级别。
[0011] 在根据本申请一些实施例的动态核心调度方法中,第三任务负载级别高于第二任务负载级别,并且第二分级任务分配模式包括第一子模式,在第一子模式中,第二动态预设条件包括:除了与第三任务负载级别对应的预期调度核心之外,在与该预期调度核心的至少一个横向相邻核心和至少一个纵向相邻核心都相邻的所有核心中,承载第三任务负载级别的核心数量占比小于或等于第一阈值。
[0012] 在根据本申请一些实施例的动态核心调度方法中,第二分级任务分配模式包括第二子模式,在第二子模式中,第一动态预设条件进一步包括:除了与第二任务负载级别对应的预期调度核心之外,在与该预期调度核心的至少一个横向相邻核心和至少一个纵向相邻核心都相邻的所有核心中,承载第二任务负载级别的核心数量与承载第三任务负载级别的核心数量之和占比小于或等于第二阈值。
[0013] 在根据本申请一些实施例的动态核心调度方法中,第三任务负载级别高于第二任务负载级别,并且在第二子模式中,第二动态预设条件进一步包括:除了与第三任务负载级别对应的预期调度核心之外,在与该预期调度核心的至少一个横向相邻核心和至少一个纵向相邻核心都相邻的所有核心中,承载第二任务负载级别的核心数量占比小于或等于第三阈值,且承载第三任务负载级别的核心数量占比小于或等于第四阈值。
[0014] 在根据本申请一些实施例的动态核心调度方法中,第四阈值为0。
[0015] 在根据本申请一些实施例的动态核心调度方法中,在预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差小于第一极差阈值的情况下,分级任务分配模式为第二分级任务分配模式的第一子模式,极差指示预期分配多个任务负载级别中最高任务负载级别与最低任务负载级别对应的任务复杂程度之间的差异。
[0016] 在根据本申请一些实施例的动态核心调度方法中,在预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差大于或等于第二极差阈值的情况下,分级任务分配模式为第二分级任务分配模式的第二子模式,极差指示所述预期分配多个任务负载级别中最高任务负载级别与最低任务负载级别对应的任务复杂程度之间的差异。
[0017] 在根据本申请一些实施例的动态核心调度方法中,进一步包括:获取目标应用对应的区域调度参数,区域调度参数基于目标应用运行所需的核心数量确定;根据区域调度参数,从多核系统的核心阵列中确定可调度核心区域。
[0018] 在根据本申请一些实施例的动态核心调度方法中,获取多核系统的可调度核心区域中各个核心的任务分配情况和调度优先级包括:根据可调度核心区域中各个核心的位置的横向排列顺序和纵向排列顺序,确定可调度核心区域中各个核心的调度优先级;或者根据可调度核心区域中每一个核心与预定核心的位置关系,确定可调度核心区域中各个核心的调度优先级。
[0019] 在根据本申请一些实施例的动态核心调度方法中,根据可调度核心区域中每一个核心与预定核心之间的位置关系,确定可调度核心区域中各个核心的调度优先级,包括:将可调度核心区域划分为多个可调度核心子区域,多个可调度核心子区域包括预定核心所在的基准可调度核心子区域;基于每一个可调度核心子区域与基准可调度核心子区域之间的距离,确定每一个可调度核心子区域的第一调度顺序;至少根据每一个可调度核心子区域的第一调度顺序,确定每一个可调度核心子区域中各个核心的调度优先级。
[0020] 在根据本申请一些实施例的动态核心调度方法中,同一个可调度核心子区域中的各个核心共享同一个电源域。
[0021] 在根据本申请一些实施例的动态核心调度方法中,进一步包括:响应于目标核心被确定,将目标核心的任务分配状态更新为已分配任务状态且开启目标核心的电源域。
[0022] 在根据本申请一些实施例的动态核心调度方法中,进一步包括:响应于目标核心完成待执行任务,将目标核心的任务分配状态更新为未分配任务状态;响应于目标核心的电源域相关的所有核心都处于未分配任务状态,关断目标核心的电源域。
[0023] 根据本申请的另一方面,提供一种用于多核系统的动态核心调度装置,包括:接收模块,其配置成从目标应用接收任务执行请求,任务执行请求包括待执行任务的任务负载级别;第一获取模块,其配置成响应于任务执行请求,获取多核系统的可调度核心区域中各个核心的任务分配情况和调度优先级,任务分配情况包括可调度核心区域中各个核心的任务分配状态和承载的任务负载级别;第二获取模块,其配置成获取针对多核系统的分级任务分配模式,分级任务分配模式包括与预期分配的多个任务负载级别中至少一个任务负载级别对应的预期调度核心满足的动态预设条件,预期分配的多个任务负载级别是与目标应用相关的,动态预设条件包括:预期调度核心的每一个相邻核心处于未分配任务状态或承载的任务负载级别低于至少一个任务负载级别;以及第二确定模块,其配置成根据待执行任务的任务负载级别、可调度核心区域中各个核心的任务分配情况和调度优先级以及分级任务分配模式,从可调度核心区域中确定用于处理待执行任务的目标核心。
[0024] 根据本申请的另一方面,提出一种计算设备,包括:存储器和处理器,其中所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时促使所述处理器执行根据本申请一些实施例的用于多核系统的动态核心调度方法。
[0025] 根据本申请的另一方面,提出一种计算机可读存储介质,其上存储计算机可读指令,所述计算机可读指令在被执行时实现根据本申请一些实施例的方法。
[0026] 根据本申请的另一方面,提出一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据本申请一些实施例的方法的步骤。
[0027] 在根据本申请一些实施例的用于多核系统的动态核心调度方法和装置中,首先,针对软件(目标应用)发布的任务,采用任务分级处理和分配方式,即利用任务负载级别表征任务复杂程度并基于目标应用所涉及的任务负载级别构建分级任务分配模式,这有利于任务运算复杂度的定量分析,简化了基于分级任务的核心调度过程;其次,通过设定分级任务分配模式中动态核心调度条件(即与目标应用的至少一个任务负载级别对应的预期调度核心满足的动态预设条件),可以针对不同负载级别的待执行任务,根据核心阵列中待调度核心的相邻核心(甚至周围核心)的当前实时任务分配情况(即相邻核心当前承载的任务负载级别低于待执行任务的任务负载级别)的分析来实现动态核心调度,从而兼顾待执行任务的任务负载级别和待调度核心的邻近核心的实时任务分配情况二者对多核阵列区域功率密度的预期影响,能够有效避免相关技术的固定核心调度模式(例如单纯依据位置顺序进行核心调度的模式)造成的多核阵列中功率密度失控问题,进而有利于实现多核系统核心阵列的相对均衡的功率密度,避免因功率密度失控或失衡造成的核心阵列区域高负荷状态和区域高发热问题,有效提升多核系统的整体性能和任务执行效率。

附图说明

[0028] 根据以下详细描述和附图,将容易理解本申请的各个不同的方面、特征和优点,在附图中:
[0029] 图1示意性示出了根据本申请一些实施例的用于多核系统的动态核心调度方法的示例实施环境;
[0030] 图2示意性示出了根据本申请一些实施例的用于多核系统的动态核心调度方法的流程图;
[0031] 图3A和3B分别示意性示出了根据本申请一些实施例的用于多核系统的动态核心调度方法对应的实体架构图;
[0032] 图4A示意性示出了根据本申请一些实施例的用于多核系统的动态核心调度方法的流程图;
[0033] 图4B示意性示出根据本申请一些实施例的动态核心调度方法原理示意图;
[0034] 图5示意性示出了根据本申请一些实施例的用于多核系统的动态核心调度方法的流程图;
[0035] 图6示意性示出了根据本申请一些实施例的第一分级任务分配模式的动态预设条件判定示意图;
[0036] 图7A‑7D示意性示出了根据本申请一些实施例的第二分级任务分配模式的动态预设条件判定示意图
[0037] 图8示意性示出了根据本申请一些实施例的用于多核系统的动态核心调度方法的流程图;
[0038] 图9示意性示出根据本申请一些实施例的用于多核系统的动态核心调度方法实施过程中关键信号波形图;
[0039] 图10示意性示出了根据本申请一些实施例的用于多核系统的动态核心调度装置的示例框图;以及
[0040] 图11示意性示出了根据本申请一些实施例的计算设备的示例框图。
[0041] 应当指出,上述附图仅仅是示意性的和说明性的,且并不一定按照比例绘制。

具体实施方式

[0042] 下面将参照附图更详细地描述本申请的若干个实施例以便使得本领域技术人员能够实现本申请。本申请可以体现为许多不同的形式和目的并且不应局限于本文所阐述的实施例。提供这些实施例以使得本申请全面且完整,并充分地向本领域技术人员传达本申请的范围。所述实施例并不限定本申请。
[0043] 将理解的是,尽管术语第一、第二、第三等在本文中可以用来描述各种元件、部件和/或部分,但是这些元件、部件和/或部分不应当由这些术语限制。这些术语仅用来将一个元件、部件或部分与另一个元件、部件或部分相区分。因此,下面讨论的第一元件、部件或部分可以被称为第二元件、部件或部分而不偏离本申请的教导。
[0044] 本文中使用的术语仅出于描述特定实施例的目的并且不意图限制本申请。如本文中使用的,单数形式“一个”、“一”和“该”意图也包括复数形式,除非上下文清楚地另有指示。将进一步理解的是,术语“包括”和/或“包含”当在本说明书中使用时指定所述及特征、整体、步骤、操作、元件和/或部件的存在,但不排除一个或多个其他特征、整体、步骤、操作、元件、部件和/或其群组的存在或添加一个或多个其他特征、整体、步骤、操作、元件、部件和/或其群组。如本文中使用的,术语“和/或”包括相关联的列出项目中的一个或多个的任意和全部组合。
[0045] 除非另有定义,本文中使用的所有术语(包括技术术语和科学术语)具有与本申请所属领域的普通技术人员所通常理解的相同含义。将进一步理解的是,诸如那些在通常使用的字典中定义的之类的术语应当被解释为具有与其在相关领域和/或本说明书上下文中的含义相一致的含义,并且将不在理想化或过于正式的意义上进行解释,除非本文中明确地如此定义。
[0046] 在详细介绍本申请的实施例之前,为了清楚起见,首先对一些相关的概念进行解释。
[0047] 1. 多核系统:即多核处理器,其是指在一枚处理器中集成两个或更多个完整的计算引擎或内核,例如单芯片多处理器(CMP)结构;多核系统中的“核”表示用于进行信息处理和任务执行的计算引擎或内核,在本文中可以称为“核心”。
[0048] 2. 多核系统的功率密度:在本文中是指多核系统阵列的某一区域中核心功耗的密集程度,例如可以等于该区域中所有核心的总功耗与该区域面积之比。
[0049] 3. 核心调度:是指对多核系统中各个内核或核心的管理和控制,包括例如任务分配、电源调控等。
[0050] 针对上文所述的多核系统中各核心任务分配不当造成的核心阵列局部或整体功率密度过高的问题,本申请提供了一种用于多核系统的动态核心调度方法。该方法首先基于目标应用所发布的任务的多个任务负载级别(即预期调度的多个任务负载级别)确定分级任务分配模式,在该分级任务分配模式中包括其中至少一个任务负载级别对应的预期调度核心需要满足的动态预设条件(即预期调度核心的相邻核心实时任务分配情况,例如当前任务负载级别低于预期调度核心对应的至少一个任务负载级别);随后,结合各个核心的实时任务分配情况和(例如预先设定的)调度优先级、当前待执行任务的任务负载级别,利用所确定的分级任务分配模式将待执行任务分配给相应的目标核心,即调度相应目标核心来处理待执行任务。
[0051] 图1示意性示出了根据本申请一些实施例的用于多核系统的动态核心调度方法的示例实施环境100。如图1所示,实施环境100可以包括目标应用110、多核系统120、核心调度平台130。目标应用110可以是计算设备(例如服务器、终端设备、嵌入式计算设备等)上正在运行的、用于发布待执行任务供处理器处理的各类软件或应用程序。多核系统120可以是位于计算设备中用于处理目标应用110发布的各种任务的多核处理器。核心调度平台130可以是计算设备中用于对多核系统120中各个核心进行管控或工作调度(例如可以包括针对各个核心的任务分配或电源管理等)的软件模块(例如程序模块)和/或硬件模块(例如电路)。根据申请一些实施例的用于多核系统的动态核心调度方法可以利用上述核心调度平台130实现。
[0052] 在一些实施例中,目标应用110可以包括终端设备上在用户模式中运行的终端应用(程序),其可以和用户进行交互,并具有可视的用户界面。从功能的角度看,终端应用可以包括云游戏、社交应用程序、支付应用程序、购物应用程序、多媒体应用程序(如音视频应用程序)以及教育应用程序等;从访问方式的角度看,终端应用可以包括本地安装的应用程序、经由其他应用程序访问的小程序、经由浏览器访问的web程序等。终端应用可以包括但不限于手机APP、计算机软件等。在一些实施例中,目标应用110可以包括服务器中运行的程序或软件,即服务器端应用。可选地,目标应用110也可以包括运行在终端设备或服务器上是系统应用。
[0053] 在一些实施例中,多核系统120可以是在计算设备中的多核中央处理器(CPU),可选地也可以是多核图形处理器(GPU)或其他各种类型的处理器或芯片组。多核技术是比较常见的提高处理器性能的技术,尤其在服务器上;一般地,服务器产品的多核处理器的核心数量为16核心起步,包括20、24、32、40、48或80核心等等,其中32、40、48、80核心较为常见,甚至核心数量规模还能到上百核甚至上千核。多核系统120中的各个核心之间可以通过片上网络(NOC)相互连接。NOC是指多核系统中各个核心之间的互连结构,目的是实现多核系统中核心之间的互联互通;例如包括网状(mesh)结构和全互联结构(相比而言全互联结构性能稍高、延时较少,但结构复杂;而网状结构则整体结构相对简单、布线方便灵活)。本申请的核心调度方法既可以在网状NOC结构的多核系统也可以在全互联NOC结构的多核系统中实现多核心的动态调度和任务分配。
[0054] 在一些实施例中,核心调度平台130可以包括实现相应功能的单独的硬件、软件、固件或它们的组合,例如可以包括具备数据收发和处理能力的处理器、单片机、芯片、具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路、具有合适的组合逻辑门电路的专用集成电路、可编程门阵列(Programmable Gate Array)、现场可编程门阵列(Field Programmable Gate Array)等,或者上述硬件中任意两个或多个的组合;或者还可以包括但不限于处理器上运行的进程、对象、可执行文件、执行线程、程序等。
[0055] 如图1所示,首先,核心调度平台130可以被配置成:从目标应用接收任务执行请求,任务执行请求包括待执行任务的任务负载级别,任务负载级别可以指示任务复杂程度。其次,核心调度平台130可以被配置成:响应于任务执行请求,获取多核系统的可调度核心区域中各个核心的任务分配情况和调度优先级,任务分配情况包括可调度核心区域中各个核心任务分配状态和承载的任务负载级别,调度优先级可以根据可调度核心区域中每一个核心的位置预先设定。再次,核心调度平台130可以被配置成:获取针对多核系统的分级任务分配模式,分级任务分配模式包括与预期分配的多个任务负载级别中至少一个任务负载级别对应的预期调度核心满足的动态预设条件,预期分配的多个任务负载级别与目标应用相关,动态预设条件包括预期调度核心的每一个相邻核心处于未分配任务状态或承载的任务负载级别低于所述至少一个任务负载级别。最后,核心调度平台130可以被配置成:根据待执行任务的任务负载级别、可调度核心区域中各个核心的任务分配情况和调度优先级以及分级任务分配模式,从可调度核心区域中确定用于处理待执行任务的目标核心。
[0056] 如图1所示,可选地,在确定了用于处理待执行任务的目标核心之后,核心调度平台130可以被配置成向目标应用110发送目标核心的标识符(例如目标核心ID);随后,目标应用110在获得目标核心标识符后,可以直接向多核系统120发送所述标识符以及待执行任务以供标识符对应的目标核心处理;最后,多核系统120在接收到标识符和待执行任务之后分配给标识符对应的目标核心进行任务处理。
[0057] 图1中的实施环境100所涉及计算设备或计算机(例如多核系统120所在的计算设备)可以包括终端设备和/或服务器。终端设备可以是任何类型的移动计算设备,包括移动计算机(例如个人数字助理(PDA)、膝上型计算机、笔记本计算机、平板计算机、上网本等)、移动电话(例如,蜂窝电话、智能手机等)、可穿戴式计算设备(例如智能手表、头戴式设备,包括智能眼镜等)或其他类型的移动设备。在一些实施例中,终端设备也可以是固定式计算设备,例如台式计算机、游戏机、智能电视等。服务器可以是单个服务器或服务器集群,或者可以是能够提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器或云服务器集群。应理解,本文所提及的服务器典型地为具有大量存储器和处理器资源的服务器计算机,但是其他实施例也是可能的。
[0058] 图1所示根据本申请一些实施例的用于多核系统的动态核心调度方法的实施环境100仅仅是示意性的。根据本申请的用于多核系统的核心调度方法并不限于所示出的示例实施环境。应理解,在本文中,一般地,图1所示的目标应用110、核心调度平台130和多核系统120可以处于同一计算设备中,但它们也可以是分别属于不同的计算设备。例如,目标应用110是终端设备中运行的应用程序或软件,而多核系统120可以是服务器的多核处理器用于通过网络传输来处理或执行终端设备上的目标应用发布的任务,而核心调度平台可以位于或运行于该服务器或该终端设备至少之一侧以实现多核系统120中核心调度和任务分配。
[0059] 图2示意性示出了根据本申请一些实施例的用于多核系统的动态核心调度方法的流程图。如图2所示,根据本申请一些实施例的动态核心调度方法可以包括:
[0060] S210,任务执行请求接收步骤;
[0061] S220,任务分配情况和调度优先级获取步骤;
[0062] S230,分级任务分配模式获取步骤;以及
[0063] S240,目标核心确定步骤。
[0064] 图3A示意性示出了根据本申请一些实施例的用于多核系统的动态核心调度方法对应的实体架构图。如图3A所示,根据本申请一些实施例的用于多核系统的动态核心调度方法涉及目标应用310、多核阵列320(即多核系统的各个核心构成的核心阵列)以及核心调度平台330之间的信息交互。在图3A中,多核阵列320可以示意性指示图1所示的多核系统120中各个核心的物理排布。如图3A所示,多核阵列320可以为n*n的正方形阵列,其中n为大于等于2的整数。需要注意,可选地,多核阵列320也可以呈现为其他形状的物理排布,例如矩形、菱形等。
[0065] 如图3A所示,用于实现根据本申请一些实施例的动态核心调度方法的核心调度平台330可以包括:应用交互接口331,配置用于与目标应用310进行交互,例如从中接收任务执行请求以及向其发送所分配的核心的标识符(如目标核心ID)等;核心调度组件332,配置用于根据应用交互接口331接收到的任务执行请求,依据分级任务分配模式、待执行任务的任务负载级别以及多核系统各核心的任务分配情况和(预设的)调度优先级实现动态核心调度。可选地,如图3A所示,核心调度平台330可以进一步包括:核心状态记录表333,配置用于记录多核阵列320中各个核心的工作状态相关信息,例如核心标识符(如Core_ID)、任务分配状态、当前承载的任务负载级别、电源状态、预设的调度优先级等;以及电源管理组件334,配置用于依据(例如核心状态记录表333记录的)核心的工作状态控制各个核心的电源导通和/或关断,从而在保证多核系统或多核阵列320正常运转的情况下最大限度地降低其整体功耗。
[0066] 图3B示出了图3A中应用交互接口331和核心调度组件332的内部实体架构和交互图。应用交互接口331也可以称为软硬件交互接口(即目标应用或其他应用(软件)与多核系统320或核心调度平台(硬件)330的交互接口)。如图3B所示,应用交互接口331可以包括下述多个寄存器:任务请求寄存器TASK_REQ、任务负载级别寄存器LOAD_LEVEL、任务分级参数寄存器MODE,它们分别用于从目标应用310接收并存储任务执行请求、待执行任务的任务负载级别、目标应用对应的任务分级参数。可选地,如图3B所示,应用交互接口331还可以包括区域调度参数寄存器MC_SIZE,用于从目标应用310接收并存储区域调度参数。可选地,如图3B所示,应用交互接口331还可以包括目标核心标识符寄存器COREID_SEL,用于从核心调度组件332接收并存储被调度或分配执行待执行任务的目标核心的标识符(ID),并将其反馈给目标应用310。需要说明,尽管应用交互接口331中的各个寄存器在图3B中被示出为分离的结构,但是在一些实施例中,它们中两个或更多个也可以是同一寄存器的不同组成部分。
[0067] 下面,将参考图3A和3B详细介绍图2所示的步骤S210‑S240。如图1的实施环境和图3A的实体架构图所示,根据本申请一些实施例的动态核心调度方法的上述步骤S210‑S240可以在核心调度平台130、330中实现。
[0068] 在步骤S210(任务执行请求接收步骤)中,从目标应用接收任务执行请求,任务执行请求包括待执行任务的任务负载级别。
[0069] 一般地,多核系统的核心调度可以包括关于多个核心的工作调度,这里的工作调度是指针对多核系统中各个核心的任务分配,即针对不同(任务负载级别)的任务如何调度相应核心进行处理。因此,在进行核心调度之前,首先需要从多核系统所在的计算设备中当前运行的应用接收任务执行请求,随后响应于该任务执行请求,开启核心调度过程。
[0070] 根据本申请的构思,为了克服多核系统的核心阵列中高任务负载过度聚集造成的功率密度失衡的问题,可以通过针对多核系统的分级任务分配策略或模式实现功率密度均衡可控的动态核心调度,即针对不同任务负载级别的待执行任务,基于多核系统中预期调度(预期执行该任务的)核心的周围核心(例如相邻核心)的任务分配情况来判断是否将其选择为目标核心。这样,在任务执行请求中需要包括待执行任务的任务负载级别。任务负载级别是用于表征任务复杂程度的量化指标。可选地,任务执行请求还可以包括任务分级参数,用于在步骤S230中确定分级任务分配模式。进一步可选地,任务执行请求又可以包括区域调度参数,用于确定可调度核心区域。
[0071] 在一些实施例中,如图3A和3B所示,任务执行请求接收步骤S210可以经由核心调度平台330中的应用交互接口331完成。如图3A和3B的实体架构图所示,核心调度平台330可以通过其中应用交互接口331的任务请求寄存器TASK_REQ从目标应用310接收并存储任务执行请求,其中的待执行任务的任务负载级别可以单独存储在任务负载级别寄存器LOAD_LEVEL中;然后,利用任务负载级别寄存器LOAD_LEVEL将待执行任务的任务负载级别发送至核心调度组件332的目标核心确定模块332a。
[0072] 在一些实施例中,任务负载级别是衡量任务复杂度或计算负荷的参数,其可以用于表征处理器核心执行或处理相应任务时预期的运算或处理负担。通过任务负载级别的划分,可以将不同复杂度的目标应用所涉及的各个任务归类为若干任务负载级别,从而简化核心调度的过程。关于目标应用的相关任务的任务负载级别的具体数量和各个任务负载级别对应的运算负荷范围,可以根据目标应用及其发布的各种任务的具体应用场景来确定。如图3A和3B所示,待执行任务的任务负载级别可以由目标应用310在将其发送至核心调度平台330之前预先确定,以简化核心调度平台330的操作。可选地,关于待执行任务的任务负载级别划分,也可以由核心调度平台330在接收到任务执行请求时通过检测待执行任务的复杂程度来确定。
[0073] 在步骤S220(任务分配情况和调度优先级获取步骤)中,响应于行任务执行请求,获取多核系统的可调度核心区域中各个核心的任务分配情况和调度优先级。任务分配情况可以包括可调度核心区域中各个核心的任务分配状态和承载的任务负载级别,调度优先级是根据可调度核心区域中每一个核心的位置预先设定的。
[0074] 在一些实施例中,可调度核心区域可以是整个多核系统阵列区域,也可以是从中筛选的部分区域。可调度核心区域的筛选目的是减小多核阵列中针对目标应用的核心调度范围,从而简化任务分配过程、提升工作效率、降低能耗。例如,在从多核阵列中选定其中一部分区域作为可调度核心区域之后,可以直接将多核阵列中除可调度核心区域之外的其他所有核心的电源关断,以充分节省能源、降低功耗。可调度核心区域可以在核心调度之前预先依据目标应用运行或任务处理所需的核心数量确定,或者基于目标应用根据所需核心数量得到的区域调度参数确定。
[0075] 特别地,例如在目标应用运行所需的处理器核心数量不可预测的情况下,也可以将多核阵列整体区域确定为可调度核心区域。另一方面,可调度核心区域的选择也可以考虑多核阵列320中各个核心的当前工作状态。例如,多核阵列320中可能存在正在执行目标应用之外的其他应用发布的任务(非空闲核心)且无法同时处理其他任务的核心,这时需要将其排除在可调度核心区域之外。
[0076] 根据本申请的构思,要想实现功率密度均衡的动态核心调度,需要在向核心分配任务之前获取可调度核心区域中各个待调度核心的当前实时的任务分配情况。任务分配情况可以包括可调度核心区域中各个核心当前的任务分配状态和当前承载的任务负载级别。
[0077] 在一些实施例中,核心的任务分配状态可以指示该核心当前是否已分配任务。例如,当可调度核心区域中的某个核心处于已分配任务状态时,表明该核心已经被调度处理或准备处理相应任务,即处于工作状态,因而无法接纳新的任务分配;而若该核心处于未分配任务状态,则表明当前该核心处于空闲状态,可以接受新的任务分配。因此,在进行核心调度或任务分配之前,务必要得知各个待调度核心的当前任务分配状态,以避免出现核心调度混乱和任务冲突。
[0078] 在一些实施例中,当某核心当前处于被分配任务状态时,核心的当前承载的任务负载级别可以指该核心当前被分配任务(即正在处理或准备处理的任务)的任务负载级别。基于本申请的构思,所谓“动态”核心调度主要体现在分级任务分配模式中,即依据候选核心或预期调度核心周围的核心的(实时动态变化的)任务分配情况,判定该候选核心是否能够被分配执行相应任务负载级别的任务,以避免较高任务负载级别集中分布,造成功率密度失衡。因此,步骤S220中的核心任务分配情况不仅需要包含任务分配状态,还需要包括处于已分配任务状态的核心当前被分配具体任务负载级别,即承载的任务负载级别。
[0079] 进一步地,基于本申请的构思,为了获得上述分级任务分配模式中的候选核心,需要首先确定或预先设定多核阵列的可调度核心区域中各个核心的调度优先级。多核阵列的可调度核心区域中各个核心的调度优先级是在可调度核心区域中各个核心被调度执行目标应用发布的待执行任务的顺序或次序,即核心被分配任务的顺序。在一些实施例中,步骤S220可以包括下述步骤中至少一个:根据可调度核心区域中各个核心的位置的横向排列顺序和纵向排列顺序,确定各个核心的调度优先级;以及根据所述可调度核心区域中每一个核心与预定核心的位置关系,确定可调度核心区域中各个核心的调度优先级。在一些实施例中,可以直接依照核心的物理位置排列顺序(例如按照先横向从左到右的顺序、后纵向从上到下的顺序,如图6箭头所示)来确定各个核心的调度优先级,其可以例如与核心按位置顺序排列的ID号一一对应。可选地,为了实现相互邻近的多个核心统一集中管理,也可以将当前待执行任务优先分配给靠近预定核心(如图6所示的左上角的0号核心)的核心,而不是简单地依据位置排列顺序或按照Core_ID递增顺序设定核心的调度优先级。换言之,可以基于与预定核心的位置关系来确定多核系统中各个核心的调度优先级(即核心被分配任务的顺序),例如越靠近预定核心,调度优先级越高。
[0080] 在一些实施例中,根据可调度核心区域中每一个核心与预定核心之间的位置关系,确定可调度核心区域中各个核心的调度优先级,可以包括:将所述可调度核心区域划分为多个可调度核心子区域,所述多个可调度核心子区域包括所述预定核心所在的基准可调度核心子区域;基于每一个可调度核心子区域与基准可调度核心子区域之间的距离,确定每一个可调度核心子区域的第一调度顺序;至少根据每一个可调度核心子区域的第一调度顺序,确定每一个可调度核心子区域中各个核心的调度优先级。可选地,同一个可调度核心子区域中的各个核心共享同一个电源域。在一些实施例中,为了更好地实现核心的区域化管理,还可以以(预先基于可调度核心区域划分的)可调度核心子区域为单位,基于不同核心子区域与预定核心所在的基准核心子区域的位置关系或距离来确定调度优先级。这时,各个可调度核心子区域可以与多核阵列的共享电源域对应,例如每个可调度核心子区域的范围刚好与一个电源域所涉及的核心范围相同,这样有利于实现核心的区域化电源管理。
[0081] 在一些实施例中,如图3B所示,核心调度组件332可以从核心状态记录表333中直接获取所需的各个核心的任务分配情况,因为核心状态记录表333负责实时记录包括核心任务分配状态在内的各种实时状态信息。相应地,核心调度组件332也可以在核心调度或任务分配完成以及任务处理完成之后,将相应核心的任务分配情况发送至核心状态记录表333以更新相关信息。 如图3B所示,核心调度组件332也可以从核心状态记录表333中直接获取各个核心的调度优先级,因为调度优先级可以依据核心阵列各个核心的位置预先设定,因此预设的调度优先级可以预先固定存储在核心状态记录表333中。可选地,当预先设定的调度优先级预先存储在应用交互接口331中时(图3B中未示出),核心调度组件332也可以从应用交互接口331获取各个核心的调度优先级。
[0082] 图3B所示的核心状态记录表333可以由核心调度平台330来创建和管理,用来记录当前多核系统每个核心的任务分配状态、被分配的任务负载级别(即当前承载的任务负载级别)以及电源开关情况等信息。表1示意性示出了根据本申请一些实施例的多核系统的核心状态记录表。如表1所示,多核系统的核心状态记录表可以包括下述四个参数:Core_ID、Assigned、Load_level、Core_off、Priority,其分别表示核心标识符、任务分配状态、被分配的任务负载级别(或当前承载的任务负载级别)、电源状态、调度优先级。在表1中,以16*16的核心阵列为例,为该阵列中每个核心设置一个行,共256行,具体表格的深度和大小可以根据系统需求进行配置。
[0083] 表1‑核心状态记录表
[0084]
[0085] 表1中的Core_ID表示各个核心的标识符,其被设定后不再变化。如表1所示,Core_ID为多核系统的每个核心按顺序分配唯一的ID。以基于网状 NOC结构的16*16核心的多核系统阵列为例,Core_ID可以按如下顺序分配:从阵列的左上第一个核心(即位于第一行第一列的核心)开始,第一行从左到右核心的Core_ID依次为0‑15,第二行从左到右依次为16‑31,…,依次类推,最终该16*16的多核系统的Core_ID范围为0‑255。
[0086] 表1中的Priority表示各个核心的调度优先级,其可以是预先根据每个核心的位置设定的。如表1所示,各个核心的调度优先级Priority可以与其标识符Core_ID一一对应,甚至完成相同,例如依照首先横向从左到右、其次纵向从上到下的位置排列顺序设定的优先级,如表1所示的0‑255,即Priority越小,调度优先程度越高。可选地,核心的调度优先级也可以根据该核心与预定核心的位置关系或距离确定,以实现核心的集中管理。
[0087] 表1中Assigned表示核心是否已被分配任务,其中Assigned默认为0,表示未分配任务;当某核心被核心调度平台330选中执行待分配任务时,此核心的Assigned将被置为1。当核心完成所分配的任务,恢复空闲状态时,Assigned会被再次清零。从核心调度平台330将Assigned设置为1到目标应用根据Assigned的值发送任务并进行处理,这个期间存在时间差,因此当Assigned变为1时核心可能尚未真正开始处理相应任务;同样,核心完成任务处理后,Assigned才会被清零,因此Assigned为0时核心已经完全释放。在任务执行前后及执行过程中,Assigned都为1,期间不会再有其他任务被分配到该核心,因此不会存在任务冲突。
[0088] 表示1中的Load_level记录分配到核心上的软件任务的任务负载级别。它会在Assigned更新的时候同步更新,其将待执行任务的任务负载级别记录到核心状态记录表中被分配的核心所在行,并在此次任务执行期间保持不变。Load_level与Assigned是同步更新的,更是完全相关的。当Assigned为0时,Load_level被设置为Null(空),因为核心未分配任务时当然不可能存在相应的任务负载级别。在具体实现过程中,可选地,当核心未分配任务(即Assigned为0)时,被分配的任务负载级别Load_level可以设置为默认的初始值0,这里的“0”没有实际意义(例如它并不代表实际被分配的任务负载级别数值),仅仅是为了满足存储空间的需要而设置的初始值。因为Assigned=0时核心未分配任务,Assigned=0已经隐含地表明“被分配的任务负载级别Load_level”为空,因此这时Load_level的默认初始值0并不会被误认为“被分配的任务负载级别为0级”。只有当Assigned为1时,Load_level的取值才有实际意义,即表示“被分配的任务负载级别”的具体数值。
[0089] 表1中Core_off表示核心的电源是否处于关断状态,其中0表示电源处于开启状态,1表示关断状态。
[0090] 在步骤S230(分级任务分配模式获取步骤)中,获取针对多核系统的分级任务分配模式,分级任务分配模式包括与多个任务负载级别中至少一个任务负载级别对应的预期调度核心满足的动态预设条件。预期分配的多个任务负载级别是与目标应用相关的,且动态预设条件包括:预期调度核心的每一个相邻核心处于未分配任务状态或承载的任务负载级别低于至少一个任务负载级别。
[0091] 根据本申请的基于分级任务的动态核心调度方法的构思,在接收到任务执行请求之后,可以基于该请求利用分级任务分配模式来调度核心,因此在进行调度之前,需要获取针对多核系统的分级任务分配模式。分级任务分配模式的获取与发送任务执行请求的目标应用有关,尤其是可以取决于目标应用相关的预期分配的任务负载级别。这里,可以利用任务分级参数来描述目标应用相关的任务负载级别划分情况,例如任务分级参数包括目标应用相关的预期分配的多个任务负载级别。在一些实施例中,任务分级参数可以进一步包括各个任务负载级别对应的任务复杂度范围,或者可选地包括各个任务负载级别的极差。这样,在得到目标应用对应的任务分级参数之后,可以根据任务分级参数确定多核系统(针对目标应用发布的任务)的分级任务分配模式。
[0092] 在一些实施例中,分级任务分配模式可以根据预期分配的多个任务负载级别获取。一方面,关于分级任务分配模式的获取,可以依据预期分配的多个任务负载级别的总数,从预先确定的多个候选分级任务分配模式中选择。例如,多个候选分级任务分配模式可以在核心调度进行之前预先确定并存储在数据库中,当需要进行核心调度时,首先从数据库中提取这些候选分配方式;随后依据任务分级参数从中选取合适的(即与目标应用的任务分级参数对应的)一个候选分级分配模式作为当前核心调度的基础。例如,当任务分级参数指示目标应用包括m个任务负载级别时,表明目标应用对应的预期分配的任务负载级别个数为m,因此可以从多个候选的分级任务分配模式中选择与之匹配的包含m个预期分配的任务负载级别的分级分配模式。另一方面,除了预期分配的多个任务负载级别的总数,还可以根据预期分配的多个任务负载级别的极差(即目标应用涉及的各个任务负载级别对应的任务的相对复杂程度和/或绝对复杂程度)获取分级任务分配模式,详情请参考图7C和7D所示的第二分级任务分配模式。
[0093] 如图3A和3B所示,核心调度平台330可以预先(例如在目标应用发布任务执行请求之前)通过应用交互接口331的任务分级参数寄存器MODE从目标应用310接收并存储目标应用对应的任务分级参数。然后,当需要进行核心调度时,核心调度平台330的核心调度组件332可以从应用交互接口331的任务分级参数寄存器MODE中提取任务分级参数以用于分级任务分配模式的获取或确定。可选地,分级任务分配模式也可以预先设定并存储在应用交互接口331的任务分级参数寄存器MODE中,在需要时,核心调度平台330可以基于当前待执行任务的任务负载级别从中提取相应的分配模式即可。
[0094] 在一些实施例中,目标应用对应的预期分配的多个任务负载级别的划分或任务分级参数的确定可以根据目标应用和/或其各个任务的应用场景来确定。这里的应用场景可以指目标应用中所包含的各个任务对应的涉及不同运算负荷的信息处理方式,例如可以包括简单的数据读写、高速信息交互、复杂的数据运算等。由于目标应用发布的各个任务对应的应用场景决定了相应任务的处理或执行的复杂程度,因此可以基于应用场景来确定目标应用中各个任务分别对应的任务负载级别。
[0095] 例如当某一任务的应用场景为复杂的数据运算时,由于其耗时较多、计算负荷较大,该任务可以被归为较高的任务负载级别,而仅涉及简单的数据读写操作的任务则可以被划归为较低的任务负载级别。例如,假设目标应用各个任务总共包括涉及m种不同运算负荷的信息处理方式的应用场景,则该目标应用涉及的所有任务可以被总共划分为m个任务负载级别;这时,预期分配的多个任务负载级别的个数为m个,可选地按照对应的任务复杂程度由低到高的顺序可以分别定义为0级、1级、…、m‑1级。因此,预期分配的任务分级参数可以被定义为m,表示目标应用涉及m个任务负载级别。
[0096] 在一些实施例中,该分级任务分配模式可以包括:目标应用对应的预期分配的多个任务负载级别中至少一个任务负载级别(特别是较高任务负载级别)对应的预期调度核心需要满足的动态预设条件。具体地,在分级任务分配模式中,针对预期分配的多个任务负载级别中至少一个任务负载级别(尤其是较高任务负载级别),可以根据的目标应用的具体应用场景或相关的待执行任务的应用场景,分别设定至少一个任务负载级别中每一个级别对应的待调度核心或预期调度核心(即预期被分配执行相应任务负载级别对应的待执行任务的核心)需要满足的动态预设条件。该动态预设条件可以涉及该预期调度核心的周围核心当前任务分配情况,尤其是相邻核心的实时任务分配情况。如步骤S230所述,针对至少一个任务负载级别,对应的预期调度核心满足的动态预设条件包括:其每一个相邻核心处于未分配任务状态或当前承载的任务负载级别低于该至少一个任务负载级别。
[0097] 例如,假设目标应用对应的任务分级参数共包括3个预期分配的任务负载级别,按照任务复杂程度从低到高分别为0级、1级和2级,相应的分级任务分配模式可以包括例如2级(即较高级别)任务负载级别对应的预期调度核心需要满足的动态预设条件,即该预期调度核心的相邻核心处于未分配任务状态或当前承载的任务负载级别只能是比2级低的0级、1级。因此,如果目标应用发布的当前待执行任务为2级任务负载级别,则首先基于可调度核心区域中各核心的调度优先级和任务分配情况确定用于处理该待执行任务的候选核心,随后判断该候选核心是否满足上述动态预设条件,最后根据判定结果确定目标核心,即当该候选核心的所有相邻核心中不存在承载2级任务的核心时,该候选核心才能被确定为目标核心。
[0098] 步骤S230中动态预设条件设定的目的是:保证预期分配的多个任务级别中的一个或多个较高级别(例如总共3个预期分配的任务负载级别中的1级和/或2级)的任务对应的处理核心不会与同级别或更高级别的任务对应的处理核心相邻,从而避免高复杂度任务在多核阵列中集中分配,有效实现均衡的功率密度。
[0099] 可选地,关于分级任务分配模式中的特定任务负载级别对应的预期调度核心满足的动态预设条件还可以扩展为:除了相邻核心之外,预期调度核心的其他周围核心(例如与预期调度核心间接相邻的邻近核心)的当前承载的任务负载级别被限定在适当水平(例如低于特定任务负载级别或承载特定任务负载级别的周围核心数量小于预设阈值)。这些其他周围核心可以包括例如预期调度核心的斜上方或斜下方邻近核心(即与预期调度核心的横向相邻核心和纵向相邻核心都相邻的核心)。这些其他周围核心尽管并未与预期调度核心直接相邻,但也围绕在其周围,物理位置相对邻近,因而针对较高任务负载级别的待执行任务的分配,也可以通过限定对应的预期调度核心的非相邻的周围核心的任务负载级别实时承载任务情况来实现多核阵列的均衡功率密度。例如,针对目标应用总共涉及的3个任务负载级别(即0级、1级、2级)中的2级,可以直接限定其对应的预期调度核心的非相邻周围核心承载的任务负载级别也低于2级,甚至低于1级,并且可以进一步限定在周围核心(包括直接相邻核心和非直接相邻核心)中当前承载2级任务负载级别的核心数量占比小于预定值(如小于25%),从而降低高级别任务在多核阵列中的密集排布。
[0100] 在一些实施例中,分级任务分配模式的获取可以根据目标应用相关的预期分配的多个任务负载级别来进行。例如,可以首先基于任务分级参数得到预期分配的多个任务负载级别,随后获取与预期分配的多个任务负载级别对应的分级分配模式。如图3B所示,步骤S230可以在核心调度组件332中的任务分配模式获取模块332b中完成,即基于从任务分级参数寄存器MODE接收到任务分级参数获取相应的分级任务分配模式并将其发送至目标核心确定模块332a。
[0101] 在一些实施例中,关于分级任务分配模式的获取,可以依据任务分级参数从预先确定的多个候选分级任务分配模式中选择。例如,多个候选分级任务分配模式可以在核心调度进行之前预先确定并存储在数据库中,当需要进行核心调度时,首先从数据库中提取这些候选分配方式;随后依据任务分级参数从中选取合适的(即与目标应用的任务分级参数对应的)一个候选分级分配模式作为当前核心调度的基础。例如,当任务分级参数指示目标应用包括m个任务负载级别时,表明目标应用对应的预期分配的任务负载级别个数为m,因此可以从多个候选的分级任务分配模式中选择与之匹配的包含m个预期分配的任务负载级别的分级分配模式。
[0102] 可选地,分级任务分配模式获取步骤S230可以在任务执行请求之前预先完成。换言之,可以首先针对目标应用预先获取或确定分级任务分配模式,随后开始目标应用相关的任务分配和核心调度过程。
[0103] 在步骤S240(目标核心确定步骤)中,根据待执行任务的任务负载级别、可调度核心区域中各个核心的任务分配情况和调度优先级以及分级任务分配模式,从可调度核心区域中确定用于处理待执行任务目标核心。
[0104] 如图3B所示,步骤S240可以在核心调度组件332中的目标核心确定模块332a中完成,即根据从任务负载级别寄存器LOAD_LEVEL获取的待执行任务的任务负载级别、从核心状态记录表333获得的多核阵列中(尤其是可调度核心区域中)各个核心的任务分配情况以及调度优先级以及从分配模式确定模块332b得到的分级任务分配模式,从可调度核心区域中选取适合用于处理待执行任务的目标核心。
[0105] 在一些实施例中,基于分级任务分配模式的动态核心调度方案可以分别基于待执行任务的任务负载级别、核心阵列可调度核心区域中各个核心的任务分配情况和优先级以及分级任务分配模式等不同因素在可调度核心区域中进行层层筛选,以得到符合预期的目标核心。具体地,核心调度组件332可以首先根据可调度核心区域中各核心的任务分配情况(尤其是其中的任务分配状态),从可调度核心区域筛选出处于空闲状态(即任务分配状态为未分配任务状态)的各个核心;随后,依照可调度核心区域各核心的调度优先级(例如依照诸如先横向从左到右、后纵向从上到下的位置排列顺序预先设定)从各个空闲核心中选取一个或多个候选核心(例如位置排列在前的一个或多个核心);接着,根据所确定的对应于预期分配的多个任务负载级别的分级任务分配模式,判断候选核心是否满足待执行任务的任务负载级别对应预期调度核心需要满足的动态预设条件;最后,将满足动态预设条件的候选核心作为用于执行待执行任务的目标核心。
[0106] 在根据本申请一些实施例的用于多核系统的核心调度方法中,首先,针对软件(目标应用)发布的任务,采用任务分级处理和分配方式,即利用任务负载级别表征任务复杂程度并基于目标应用所涉及的任务负载级别构建分级任务分配模式,这有利于任务运算复杂度的定量分析,简化了基于分级任务的核心调度过程;其次,通过设定分级任务分配模式中动态核心调度条件(即与目标应用的至少一个任务负载级别对应的预期调度核心满足的动态预设条件),可以针对不同负载级别的待执行任务,根据核心阵列中待调度核心的相邻核心(甚至周围核心)的当前实时任务分配情况(即相邻核心当前承载的任务负载级别低于待执行任务的任务负载级别)的分析来实现动态核心调度,从而兼顾待执行任务的任务负载级别和待调度核心的邻近核心的实时任务分配情况二者对多核阵列区域功率密度的预期影响,能够有效避免相关技术的固定核心调度模式(例如单纯依据位置顺序进行核心调度的模式)造成的多核阵列中功率密度失控问题,进而有利于实现多核系统核心阵列的相对均衡的功率密度,避免因功率密度失控或失衡造成的核心阵列区域高负荷状态和区域高发热问题,有效提升多核系统的整体性能和任务执行效率。
[0107] 图4A示出根据本申请一些实施例的动态核心调度方法的流程图。图4B示意性示出根据本申请一些实施例的动态核心调度方法原理示意图。
[0108] 如图4A所示,步骤S240(目标核心确定步骤)可以包括步骤S241‑S244。下面结合图4B详细介绍上述步骤。
[0109] 如图4B所示,多核系统的核心阵列被示出为16*16的方格阵列,其中的各个行从上到下被标记为0‑15,各个列从左到右也被标记为0‑15;阵列中每一个方格代表一个核心位置。如图4B所示,方格阵列中的箭头可以表示核心调度优先级或调度顺序,其与核心位置排列顺序一致,即以可调度核心区域左上角的核心(即方格阵列左上角)开始,按照先横向从左到右、后纵向从上到下地为待执行任务调度分配核心。如图4B所示,整个16*16多核阵列中左上白色的8*8核心区域是可调度核心区域,其余暗色区域为非可调度核心区域。如图4B所示,在可调度核心区域中,实线核心方格中的数字代表该核心对应的已分配任务负载级别(即该核当前承载的任务负载级别);核心方格中的字母“D”表示该核心当前处于空闲状态,即未分配任务状态。如图4B所示,可调度核心区域中包括被分配给不同核心的4个任务负载级别的任务,即0级任务、1级任务、2级任务、3级任务;同时存在4个未分配任务的核心,即标记为“D”的核心。
[0110] 在步骤S241中,根据可调度核心区域中各个核心的任务分配情况和调度优先级,从可调度核心区域中选取候选核心。
[0111] 如图4B所示,可以从可调度核心区域中选取4个标记为D的未分配任务的核心作为待选核心集合,随后在该集合中选取调度优先级最高的核心作为候选核心。例如当调度优先级与其位置排列顺序(从左到右、从上到下)一致时,按照位置排列顺序选取第0行第7列的虚线所示的核心作为候选核心。可选地,也可以依据其他形式的调度优先级确定候选核心。
[0112] 在步骤S242中,判断待执行任务的任务负载级别与分级任务分配模式中所述至少一个任务负载级别之一是否相同。
[0113] 在得到候选核心之后,需要首先判断待执行任务的任务负载级别是否包含在与分级任务分配模式中的动态预设条件对应的至少一个任务负载级别之中,如果是,则转到S243进行候选核心是否满足动态预设条件的判定;否则,说明待执行任务不是较高级别任务,转到S244,直接将(调度优先级最高的)候选核心确定为目标核心。
[0114] 在步骤S243中,响应于待执行任务的任务负载级别与所述分级任务分配模式中所述至少一个任务负载级别之一相同,根据可调度核心区域中各个核心的任务分配情况,判断候选核心是否满足预期调度核心对应的动态预设条件。
[0115] 一般地,待执行任务的任务负载级别与动态预设条件对应的至少一个任务负载级别相同,说明待执行任务属于较高级别的任务,因此需要通过判断其是否满足动态预设条件来确定它是否能够承担待执行任务;否则,说明待执行任务属于较低级别任务,无需满足动态预设条件,因此流程可以转到步骤S244,直接将候选核心作为目标核心。
[0116] 在步骤S244中,响应于待执行任务的任务负载级别与所述至少一个任务负载级别中每一个任务负载级别都不同或者响应于候选核心满足动态预设条件,将候选核心确定为所述目标核心,而响应于候选核心不满足动态预设条件,回到步骤S241重复上述过程。
[0117] 如图4B所示,如果动态预设条件为:2级或3级对应的预期调度核心的相邻核心处于未分配任务状态或当前承载的任务负载级别低于2级,则针对2级或3级的待执行任务,图4B中虚线所示的第0行第7列的核心可以被确定为候选核心,并且由于其相邻核心只有左边横向相邻核心和下边纵向相邻核心且二者当前承载任务级别都是0级(低于2级),因此该候选核心满足动态预设条件,于是可以将其确定为用于执行待执行任务的目标核心。如图4B所示,假设候选核心被选为虚线所示的第1行第1列的标记为D的核心,则其上下左右的四个相邻核心对应的数字或字母分别为1、2、D、2,说明这些相邻核心包括承载2级任务的核心(下边纵向相邻核心和右边横向相邻核心),因此该候选核心不满足动态预设条件,不能被确定为用于执行2级或3级待执行任务的目标核心,这时可以转到步骤S241重新依照任务分配情况和调度优先级确定候选核心,以重复上述过程,直到找到满足预设动态条件的目标核心或无法确定候选核心为止。
[0118] 假设,如图4B所示的4个任务负载级别中分级任务分级模式中动态预设条件对应的至少一个任务负载级别为2级和3级,而待执行任务对应的任务负载级别为0级或1级,则待执行任务对应的候选核心无需满足2级和3级对应的动态预设条件,因为较低级别的任务对多核阵列功率密度影响较小,这时无需考虑候选核心周围核心的任务分配情况,直接将待执行任务分配给候选核心。
[0119] 图5示意性示出了根据本申请一些实施例的用于多核系统的动态核心调度方法的流程图。如图5所示,除了步骤S210‑240之外,在步骤S220(任务分配情况和调度优先级获取步骤)之前,图2所示的根据本申请一些实施例的用于多核系统的动态核心调度方法可以进一步包括:
[0120] S250,区域调度参数获取步骤:获取所述目标应用对应的区域调度参数,所述区域调度参数基于所述目标应用运行所需的核心数量确定;
[0121] S260,可调度核心区域确定步骤:根据区域调度参数,从多核系统的核心阵列中确定可调度核心区域。
[0122] 根据本申请的核心调度方法的构思,在确定分级任务分配模式之前增加可调度核心区域筛选过程,以简化任务分配过程、提升工作效率、降低能耗。例如可以基于目标应用运行所需的核心数量确定多核系统的可调度核心区域,即在多核系统的多核阵列320中划定或筛选出一个核心区域(即多核阵列的至少一部分核心区域)作为用于处理当目标应用310发布的各种任务的可调度核心区域。
[0123] 目标应用对应的区域调度参数可以对应于目标应用运行所需的核心数量,并且因此可以用于限定多核系统的可调度核心区域的核心数量、面积等,进而确定可调度核心区域。特别地,区域调度参数可以直接定义为大于或等于目标应用运行所需的核心总数。在一些实施例中,目标应用310可以根据其具体应用场景预测处理其发布的各个任务所需的处理器核心总量。
[0124] 如图3B所示,在核心调度开始之前,可以利用应用交互接口331中的区域调度参数寄存器MC_SIZE从目标应用310接收并存储区域调度参数,以用于限定多核系统的可调度核心区域的大小。例如区域调度参数可以用目标应用运行所需的核心的数量定义,例如区域调度参数为64,则对应的可调度核心区域为包括64个核心的区域(可以是连续的或不连续的区域),具体地可以在多核阵列320中随机选取64个或更多个核心构成可调度核心区域。可选地,区域调度参数也可以包括X‑size和Y‑size(其单位可以是长度单位或者可以是核心个数),分别用于限定可调度核心区域或阵列的横向和纵向尺寸或横向和纵向核心个数,从而可以确定矩形的可调度核心区域。
[0125] 如图4B所示,在16*16核心阵列中,当区域调度参数X‑size和Y‑size可以分别等于8个核心时,对应的可调度核心区域可以选择核心阵列左上角的大小为8*8的核心区域(即整个核心阵列的第0行至第7行和第0列至第7列对应的包括64个核心的连通的阵列区域)。
如图4B所示,在选定8*8可调度核心区域(被示出为白色)之后,可以直接将16*16多核阵列中除可调度核心区域之外的其他区域(被示出为非白色)的所有核心的电源关断,以充分节省能源、降低功耗。可选地,多核阵列的可调度核心区域也可为多核系统的整个多核阵列。
在16*16核心阵列中,当区域调度参数等于256个核心或者X‑size和Y‑size分别等于16个核心时,整个多核阵列核心区域被选定为可调度核心区域。
[0126] 如图5所示,根据本申请一些实施例的用于多核系统的动态核心调度方法可以进一步包括:
[0127] S270,任务分配状态更新和电源管理步骤:响应于目标核心被确定,更新目标核心的任务分配状态并管控目标核心的电源域。
[0128] 如图3A所示,电源管理组件334可以基于从核心状态记录表333获取的核心的电源状态或任务分配状态对多核系统的核心的电源域进行管控,其中核心状态记录表333可以响应于目标核心的确定而更新。例如,默认状态下,每个核心电源是关闭的,即核心状态记录表333中每个核心的Core_off为1;当核心调度组件332确定了目标核心时,可以将目标核心的任务分配状态更新为“已分配任务”,即将核心状态记录表333中目标核心的Assigned更新为“1”,并且,电源管理组件334将目标核心的电源域接通,同时将核心状态记录表333中目标核心的Core_off更新为“0”,从而将目标核心的电源域接通以便为目标任务的执行做好准备。
[0129] 图6示出根据本申请一些实施例的第一分级任务分配模式中动态预设条件判定示意图。
[0130] 在一些实施例中,分级任务分配模式的获取可以根据目标应用相关的预期分配的多个任务负载级别来进行。例如,在预期分配的多个任务负载级别包括第一任务负载级别和第二任务负载级别且第一任务负载级别低于第二任务负载级别的情况下,分级任务分配模式为第一分级任务分配模式。在第一分级任务分配模式中,第二任务负载级别对应的预期调度核心满足动态预设条件,该动态预设条件包括:预期调度核心的相邻核心处于未分配任务状态或承载的任务负载级别为第一任务负载级别。
[0131] 例如,当目标应用仅涉及两个任务负载级别,0级和1级时,对应的第一分级任务分配模式可以支持0级和1级两种任务负载级别的核心分配。首先,对于0级任务,由于任务负载级别较低,可以免除动态预设条件,直接按照各个调度优先级和任务分配状态分配核心,例如按从左到右、自上而下的方向依次分配给无负载任务的核心;其次,对于1级任务,由于任务负载级别相对较高,为避免高负载任务聚集,其对应的预期调度核心需要满足动态预设条件,该动态预设条件包括:预期调度核心上下左右四个相邻核心处于未分配任务状态或承载的任务负载级别低于1级。换言之,针对第一分级任务分配模式,只有相邻核心没有承载1级任务的核心才能有资格被分配执行1级待执行任务。这样,第一分级任务分配模式可以支持两种预期分配的任务负载级别(例如0级和1级)的动态核心调度。因此,当基于任务分级参数确定的预期分配的多个任务负载级别包括两个级别(第一任务负载级别和第二任务负载级别)时,可以选取第一分级任务分配模式。
[0132] 如图6所示,在16*16多核阵列中,可调度核心区域为整个核心阵列区域,核心方格中的D表示处于空闲状态的核心或未使用核心(即处于未分配任务状态的核心),0表示当前承载着0级任务的核心,1表示当前承载1级任务的核心,x表示不关注核心(即其任务分配情况不影响相关核心的动态预设条件的判定)。为了说明的目的,下文中,用0级核心、1级核心、2级核心分别表示当前承载0级任务负载级别、1级任务负载级别、2级任务负载级别的核心。
[0133] 如图6所示,图中用3*3或2*3的粗线框示出了关于1级任务负载级别对应的动态预设条件判定示例。如图6所示,各个粗线框画出的范围是待判定核心关于动态预设条件的周围核心判定范围,即在第一分级任务分配模式下,待执行任务的任务负载级别为1级时,在该范围内判定待判定核心是否满足动态预设条件。如图6所示的3*3粗线框的中间核心(或者2*3粗线框的第一行中间核心)就是需要判定的待判定核心或候选核心。如图7A所示,方格中的字母Y和N表示该核心是否满足动态预设条件的判定结果,其中Y表示满足动态预设条件,N表示不满足动态预设条件。如图6所示,在框0、框1、框4、框5中,可以看到,由于候选核心或待判定核心直接相邻的上下左右四个相邻核心中仅包括处于未分配状态的核心(标记为D的核心)以及0级核心(标记为0的核心),而不存在承载1级任务的核心,因此该候选核心被标记为Y,满足动态预设条件(这里不必考虑粗线框中待判定核心的斜对角的核心是否存在1级核心),能够承担相应的1级待执行任务。另一方面,如图6所示,在框2、框3、框6、框7中,可以看到中间核心的左右上下四个相邻核心中存在1级核心,因此该候选核心被标记为N,不满足动态预设条件,便不能承担1级待执行任务。
[0134] 如图6所示,在第一分级任务分配模式中,由于动态预设条件的设置,使得1级任务对应的核心的相邻核心只能是0级任务对应的核心或未分配任务核心,因此根据第一分级任务分配模式确定的多核阵列的任务分配结果中,多核系统的可调度核心区域包括两类核心:对应于0级任务负载级别(即第一任务负载级别)的0级核心;以及对应于1级任务负载级别(即第二任务负载级别)的1级核心,其中任何1级核心不与同级核心相邻,即在多核阵列的可调度核心区域中每行或每列中的各个1级核心都被一个或多个0级核心隔开,各个1级核心在0级核心区域之中穿插排布,这样多核阵列任务分配结果中1级(较高任务负载级别)核心数量占比不会超过50%。
[0135] 如上所述,如图6所示,第一分级任务分配模式利用1级(较高级别)任务对应的动态预设条件,将用于处理1级任务负载级别的待执行任务的核心限定为其所有相邻核心都不能承载1级任务(只能是0级任务或未分配任务),从而使得多个较高负载级别(即1级)或计算复杂度较高的任务对应的分配核心用较低任务负载级别(即0级)任务对应的分配核心间隔开,避免了高负载任务在核心阵列中的过度聚集分布,有效地提升了多核系统的功率密度的均衡性。
[0136] 图7A‑7D示出根据本申请一些实施例的第二分级任务分配模式对应的动态预设条件判定示意图。
[0137] 在一些实施例中,在预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且第二任务负载级别和第三任务负载级别均高于第一任务负载级别的情况下,分级任务分配模式为第二分级任务分配模式。在第二分级任务分配模式中,动态预设条件可以包括第一动态预设条件和第二动态预设条件,其中第一动态预设条件包括:第二任务负载级别对应的预期调度核心的相邻核心处于未分配任务状态或者承载的任务负载级别为第一任务负载级别,第二动态预设条件包括:第三任务负载级别对应预期调度核心的相邻核心处于未分配任务状态或者承载的任务负载级别为第一任务负载级别。可选地,第三任务负载级别高于第二任务负载级别。
[0138] 例如,当目标应用包括三个任务负载级别0、1、2时,对应的第二分级任务分配模式可以支持0、1、2三个任务负载级别的任务分配:首先,对于0级任务,由于任务负载级别较低,可以免除动态预设条件,直接按照各个调度优先级和任务分配状态分配核心,例如按从左到右、自上而下的方向依次分配给无负载任务的核心;其次,对于1级或2级任务,由于任务负载级别相对较高,为避免高负载任务聚集,其对应的预期调度核心需要满足动态预设条件,该动态预设条件可以包括:1级或2级对应的预期调度核心上下左右四个相邻核心处于未分配任务状态或承载的任务负载级别低于1级。
[0139] 因此,当基于任务分级参数确定的预期分配的多个任务负载级别包括三个级别(第一任务负载级别、第二任务负载级别和第三任务负载级别,例如0级、1级和2级)时,可以选取第二分级任务分配模式。在根据第二分级分配模式的动态核心调度结果中:多核系统的可调度核心区域包括三类核心:对应于0级任务负载级别(即第一任务负载级别)的0级核心;以及对应于1级任务负载级别(即第二任务负载级别)的1级核心以及对应于2级任务负载级别(即第三任务负载级别)的2级核心,其中1级和2级任务(较高级别任务)对应的核心在0级任务(较低级别任务)对应的0级核心区域之中穿插排布,即1级和2级任务对应的核心彼此不相邻且不会同级核心相邻。换言之,在第二分级任务分配模对应的多核阵列任务分配结果中,每行或每列中的各个1级或2级核心都被一个或多个0级核心(即0级任务对应的核心)隔开,这样1级和2级核心数量之和占比不会超过50%。这样的调度结果使得较高负载任务相对于较低负载任务更加分散地布置给多核阵列中的核心,避免了高负载任务过度集中造成的多核阵列功率密度失衡问题。
[0140] 图7A‑7B示出根据本申请一些实施例的第二分级任务分配模式的第一子模式对应的动态预设条件判定示意图。
[0141] 在一些实施例中,第三任务负载级别高于第二任务负载级别,且第二分级任务分配模式包括第一子模式。在第一子模式中,第二动态预设条件包括:除了与第三任务负载级别对应的预期调度核心之外,在与该预期调度核心的至少一个横向相邻核心和至少一个纵向相邻核心都相邻的所有核心中,承载第三任务负载级别的核心数量占比小于或等于第一阈值。
[0142] 图7A示出了根据本申请一些实施例的第二分级任务分配模式的第一子模式中第二任务负载级别对应的第一动态预设条件判定示意图。如图7A所示,在16*16多核阵列中,用3*3或2*3的粗线框示出了关于第二任务负载级别(即1级)对应的第一动态预设条件判定示例。如图7A所示,在框0、框4、框5中,可以看到,由于处于线框中心位置的候选核心或待判定核心直接相邻的上下左右四个相邻核心中仅包括处于未分配状态的核心(标记为D的核心)以及0级核心(承载0级任务的核心),而不存在承载1级或2级的任务的核心,同时不必考虑粗线框中斜对角的核心是否存在1级或2级核心,因此这些候选核心被标记Y,满足第二任务负载级别的第一动态预设条件,能够承载相应的第二任务负载级别(即1级)的待执行任务。另一方面,如图7A所示,在框1、框2、框3、框6、框7中可以看到中间核心的左右上下四个相邻核心中存在1级核心或2级核心,因此这些候选核心被标记N,不满足第二任务负载级别对应的第一动态预设条件,不能承载1级待执行任务。
[0143] 如图7A和图6比较可知,图7A所示的第二分级任务分配模式的第一子模式中关于第二任务负载级别对应的第一动态预设条件与图6所示的第一分级任务分配模式中第二任务负载级别对应的动态预设条是基本相同的,都是仅限定了预期调度核心的相邻核心的任务分配情况(即未分配任务或承载的任务负载级别低于第二任务负载级别),但是图7A中的第一动态预设条件的判定过程中有可能在相邻核心中出现第三任务负载级别(即2级),而图6仅涉及0级和1级任务。
[0144] 图7B示出了根据本申请一些实施例的第二分级任务分配模式的第一子模式中第三任务负载级别对应的第二动态预设条件判定示意图。如7B所示,在第二分级任务分配模式的第一子模式的第二动态预设条件中,不仅需要判定3*3粗线框中心位置的待判定核心的上下左右四个相邻核心的任务分配情况,还需要判定该粗线框中其他四个斜对角邻近(即位于四个角上)核心的任务分配情况。因此,第一子模式的第二动态预设条件的判定过程可以包括两个步骤,其中第一步骤(与图7A所示的与第二任务负载级别(即1级)对应的第一动态预设条件判定过程类似)是判断粗线框中心位置的候选核心的四个直接相邻的核心所承载的任务负载级别是否都低于第二任务负载级别或未分配任务;第二步骤是,判断粗线框所示的例如3*3区域中围绕候选核心的其他核心(共8个)中承载第三任务负载级别的核心占比或数量是否不超过预设阈值(例如25%或2个)。上述两个判定步骤可以依次进行,即先执行第一步骤,若候选核心满足第二动态预设条件关于相邻核心的任务分配情况的条件,则接着进行第二步骤(判定周围核心的任务分配情况);若第一步骤完成后候选核心不满足相应条件,则直接得出结论(即候选核心不满足第二动态预设条件),而无需进行第二步骤。这样,由于第二步骤是在第一步骤完成后且满足相邻核心的相关条件的基础上进行的,因此第二条件实际上不必判断粗线框中所有8个其他核心的任务分配情况(因为第一步骤对其中的四个相邻核心已经进行了判断),而只需判断除了四个相邻核心之外的斜对角的四个核心即可。如图7B所示,粗线框所示的例如3*3区域的中间核心的斜对角的四个核心(即四个角上的核心)都是与候选核心间接相邻的核心,即它们都是与候选核心的一个横向相邻核心和一个纵向相邻核心都相邻的核心。因此,第二步骤可以简化为:判断粗线框的区域中与候选核心的至少一个横向相邻核心和至少一个纵向相邻核心都相邻的所有核心中承载第三任务负载级别的核心数量占比是否小于或等于第一阈值(例如50%)。
[0145] 下面详细介绍在第二分级任务分配模式的第一子模式的第二动态预设条件判断过程。首先执行第一步骤,判断候选核心的相邻核心的任务分配情况是否满足第二动态预设条件。如图7B所示,在框2、框3、框6、框7中,中心位置的核心上下左右四个核心存在1级或2级(即第二或第三任务负载级别)核心,不符合第二动态条件关于相邻核心的要求,这些框的判定结束,中心位置核心被标记为N;其他框(框0、框1、框4、框5)中中间核心的相邻核心承载的任务负载级别为0或非分配任务(即标记为D),符合第二动态预设条件关于相邻核心的要求。其次,针对第一步骤中符合要求的框0、框1、框4、框5,判断中间核心的斜对角核心(即至少一个横向相邻核心和至少一个纵向相邻核心都相邻的核心)的任务分配情况是否满足第二动态预设条件,这时需要预先设定第一阈值,例如第一阈值可以为50%。如图7B所示,框1中3*3核心区域中四个角上的4个核心中有3个核心承载了2级任务,即第三任务负载级别的核心占比为75%,显然超过了第一阈值50%,因此不符合要求,这些框的判定结束,中心位置核心被标记为N,即相应的核心位置不能再放置2级任务,以避免较高任务负载级别的任务过度集中;而框0、框4、框5中四个角上的2级核心总数分别为0、2、0,其占比都没有超过50%,从而符合第二动态预设条件的要求,位于框中心位置的相应候选核心被标记为Y。
[0146] 如图7B中框0、框4、框5所示,在第二分级任务分配模式的第一子模式的第二动态预设条件中,针对最高任务负载级别(即2级)对应的预期调度核心,在限定不与较高级别(1级和2级)核心直接相邻的基础上,进一步限定了间接邻近的斜对角核心的任务分配情况(即2级核心占比不超过第一阈值),从而进一步避免了最高任务级别在相对较小核心区域(例如3*3区域)中的集中分布和聚集,同时进一步减少了最高任务负载级别(第三任务负载级别,即2级)在可调度核心区域的数量占比。这样既保证了较高负载级别任务在核心阵列中的分散布置,又将其中最高任务负载级别的绝对数量控制在较低水平,从而进一步确保多核阵列的可调度核心区域中相对均衡的功率密度。
[0147] 图7C‑7D示出根据本申请一些实施例的第二分级任务分配模式的第二子模式对应的动态预设条件判定示意图。
[0148] 在一些实施例中,第二分级任务分配模式包括第二子模式。在第二子模式中,第一动态预设条件进一步包括:在可调度核心区域中,除了与第二任务负载级别对应的预期调度核心之外,在与该预期调度核心的至少一个横向相邻核心和至少一个纵向相邻核心都相邻的所有核心中,承载第二任务负载级别的核心数量与承载第三任务负载级别的核心数量之和占比小于或等于第二阈值。
[0149] 图7C示出根据本申请一些实施例的第二分级任务分配模式的第二子模式中第二任务负载级别对应的第一动态预设条件判定示意图。如7C所示,与图7B所示的第一子模式的第二动态预设条件判定过程类似,在第二子模式的第二任务负载级别对应的第一动态预设条件中,不仅需要判定3*3粗线框中心位置的待判定核心的上下左右四个相邻核心的任务分配情况,还需要判定该粗线框中其他四个斜对角邻近核心(即与候选核心的至少一个横向相邻核心和至少一个纵向相邻核心都相邻的核心)的任务分配情况。因此,如图7C所示的第二子模式的第二任务负载级别对应的第一动态预设条件判定过程也可以包括两个步骤,即先判断候选核心是否满足第二动态预设条件关于相邻核心的任务分配情况的要求;其次判断粗线框的区域中与候选核心的至少一个横向相邻核心和至少一个纵向相邻核心都相邻的所有核心中承载第二任务负载级别的核心数量和承载第三任务负载级别的核心数量之和占比是否小于或等于第二阈值(例如50%)。
[0150] 如图7C所示,首先,针对所有粗线框(框0‑框7),判断候选核心的相邻核心的任务分配情况是否满足第二子模式的第一动态预设条件。如图7C所示,在框2、框3、框7中,中心位置的核心上下左右四个核心存在1级或2级(即第二或第三任务负载级别)核心,不符合第一动态预设条件关于相邻核心的要求,这些框的判定结束,中心位置核心被标记为N;其他框(框0、框1、框4、框5、框6)中候选核心的相邻核心承载的任务负载级别为0或未分配任务(即标记为D),符合第一动态预设条件关于相邻核心的要求。其次,如图7C所示,针对第一步骤中符合要求的框0、框1、框4、框5、框6,判断其中的候选核心的斜对角核心(即至少一个横向相邻核心和至少一个纵向相邻核心都相邻的核心)的任务分配情况是否满足第一动态预设条件,其中例如第二阈值可以为50%。如图7C所示,框1和框6的3*3核心区域中四个角上的4个核心中1级核心和2级核心的总数都是3个(框2中3个都是1级核心,框6中是2个2级核心、
1个1级核心),即第二任务负载级别(1级)和三任务负载级别(2级)的核心数量之和占比为
75%,显然超过了第二阈值50%,因此不符合要求,这些框的判定结束,中心位置核心被标记为N,即相应的核心位置不能再放置1级任务,以避免较高任务负载级别的任务过度集中;而框0、框4、框5中四个角上的1级和2级核心数量之和分别为0、2、2,因此其占比都没有超过
50%,从而符合第一动态预设条件的要求,位于框中心位置的相应候选核心被标记为Y。
[0151] 在一些实施例中,在第二子模式中,第二动态预设条件进一步包括:除了与第三任务负载级别对应的预期调度核心之外,在与所述预期调度核心的至少一个横向相邻核心和至少一个纵向相邻核心都相邻的所有核心中,承载第二任务负载级别的核心数量占比小于或等于第三阈值,且承载第三任务负载级别的核心数量占比小于或等于第四阈值。可选地,第四阈值为0。
[0152] 图7D示出根据本申请一些实施例的第二分级任务分配模式的第二子模式中第三任务负载级别对应的第二动态预设条件判定示意图。如7D所示,与图7B和7C所示的第一子模式的第二动态预设条件以及第二子模式的第一动态预设条件的判定过程类似,在第二子模式的第三任务负载级别对应的第二动态预设条件中,不仅需要判定3*3粗线框中心位置的待判定核心的上下左右四个相邻核心的任务分配情况,还需要判定该粗线框中其他四个斜对角邻近核心(即与候选核心的至少一个横向相邻核心和至少一个纵向相邻核心都相邻的核心)的任务分配情况。因此,如图7D所示的第二子模式的第三任务负载级别对应的第二动态预设条件判定过程也可以包括两个步骤,即先判断候选核心是否满足相应的第二动态预设条件关于相邻核心的任务分配情况的要求;其次判断粗线框的区域中与候选核心的至少一个横向相邻核心和至少一个纵向相邻核心都相邻的所有核心中承载第二任务负载级别的核心数量占比是否小于或等于第三阈值(例如25%或50%),以及承载第三任务负载级别的核心数量占比是否小于或等于第四阈值(例如0或25%)。
[0153] 如图7D所示,首先,针对所有粗线框(框0‑框7)判断候选核心的相邻核心的任务分配情况是否满足第二子模式的第二动态预设条件。如图7D所示,在框3、框7中,中心位置的核心上下左右四个核心存在1级或2级(即第二或第三任务负载级别)核心,不符合第二动态预设条件关于相邻核心的要求,这些框的判定结束,中心位置核心被标记为N;其他框(框0、框1、框2、框4、框5、框6)中候选核心的相邻核心承载的任务负载级别为0或未分配任务(即标记为D),符合第二动态预设条件关于相邻核心的要求。其次,如图7D所示,针对符合相邻核心相关要求的框0、框1、框2、框4、框5、框6,判断其中的候选核心的斜对角核心(即至少一个横向相邻核心和至少一个纵向相邻核心都相邻的核心)的任务分配情况是否满足第二动态预设条件,其中例如第三阈值可以为50%,第四阈值可以为0。如图7D所示,框2和框6的3*3核心区域中四个角上的4个核心中存在2级核心,即第三任务负载级别的核心数量占比超过第四阈值0,而框1中1级核心的数量是3个,即第二任务负载级别的核心数量占比为75%,显然超过了第三阈值50%,因此框1、框2、框6不符合要求,这些框的判定结束,中心位置核心被标记为N,即相应的候选核心位置不能再放置2级任务,以避免较高任务负载级别的任务过度集中;而框0、框4、框5中四个角上都不存在2级核心,即2级核心占比不超过0,且1级核心数量分别为0、2、2,因此其占比都没有超过50%,从而符合第二动态预设条件的要求,位于框中心位置的相应候选核心被标记为Y。
[0154] 如图7C和7D中框0、框4、框5所示,在第二分级任务分配模式的第二子模式的第一动态预设条件和第二动态预设条件中,针对较高任务负载级别(即1级和2级)对应的预期调度核心,在限定不与较高级别(1级和2级)核心直接相邻的基础上,进一步限定了间接邻近的斜对角核心的任务分配情况(即第一动态预设条件对应的1级和2级核心数量之和占比不超过第二阈值,第二动态预设条件对应的1级核心数量占比小于第三阈值且2级核心数量占比小于第三阈值),从而进一步避免了较高任务级别在相对较小核心区域(例如3*3区域)中的集中分布和聚集,同时进一步减少了较高任务负载级别(第二和第三任务负载级别,即1级和2级)在可调度核心区域的数量占比。例如,当第二阈值和第三阈值取50%且第四阈值取0时,在多核阵列的任务分配结果中,2级和3级核心数量之和占比不超过三分之一。这样既保证了较高负载级别任务在核心阵列中的分散布置,又降低了较高任务负载级别的绝对数量,从而进一步确保多核阵列的可调度核心区域中相对均衡的功率密度。
[0155] 与图7A和7B对应的第二分级任务分配模式的第一子模式相比,在根据图7C和7D对应的第二分级任务分配模式的第二子模式的任务分配或核心调度结果中,同一核心区域中,较高级别(1级和2级)核心占比(例如小于33%)更低(第一子模式对应的结果中,较高级别(1级和2级)核心占比小于50%),适用于运算复杂度较高、会产生更高功率的任务或者对功率密度均衡度要求更高的使用场景。例如,当较低负载级别(0级)与较高负载级别(1级和2级)对应的任务复杂程度之间的差异相对较大时,需要用低级与高级任务对应的调度核心之间的更大的数量差来弥补单个高级任务与单个低级任务之间的较大复杂程度之差。
[0156] 在一些实施例中,任务分级参数可以进一步包括预期分配的多个任务负载级别之间的极差,极差可以指示多个任务负载级别之中最高任务负载级别与最低任务负载级别对应的任务复杂程度之间的差异。因此,在确定分级任务分配模式时,不仅可以考虑目标应用对应的预期分配的多个任务负载级别的具体数量,还可以考虑各个级别对应实际任务复杂程度之间相对差(即极差),从而更合理地调度多核系统中的核心执行目标应用对应的任务。例如,首先依据预期分配的多个任务负载级别确定一个与级别个数对应的候选分配模式(例如图7A‑7D对应的第二分级任务分配模式的第一子模式和第二子模式),随后根据这些负载级别之间的极差从候选分配模式确定或选取适合该极差的分配模式。
[0157] 在一些实施例中,在预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且预期分配的多个任务负载级别的极差小于第一极差阈值的情况下,分级任务分配模式可以被确定为第二分级任务分配模式的第一子模式。在一些实施例中,在预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且预期分配的多个任务负载级别的极差大于或等于第二极差阈值的情况下,分级任务分配模式可以被确定为第二分级任务分配模式的第二子模式。可选地,第一极差阈值可以小于或等于第二极差阈值,第一极差阈值和第二极差阈值可以根据具体情况(例如目标应用的应用场景)确定。
[0158] 如图7A‑7D所示,第二分级任务分配模式的第一和第二子模式都适用于任务负载级别个数为3的目标应用相关的任务分配,但是在基于第一子模式的分配结果中,相同核心区域中,高任务负载级别(1级和2级)核心在多核阵列中占比不超过50%,适合任务负载级别极差相对较小的目标应用的任务分配;而在基于第二子模式的分配结果中,相同核心区域中低级任务(0级)对应的核心数量更多且分布较广,而高级任务对应的核心数量较少(不超过三分之一),适合任务负载级别的极差相对较大的目标应用的任务分配。
[0159] 图8示出根据本申请一些实施例的用于多核系统的动态核心调度方法中任务分配状态更新和电源管理步骤的示例流程。
[0160] 如图8所示,图5所示步骤S270(任务分配状态更新和电源管理步骤)可以包括:
[0161] S271,响应于目标核心被确定,将目标核心的任务分配状态更新为已分配任务状态且开启目标核心的电源域;
[0162] S272,响应于目标核心完成待执行任务,将目标核心的任务分配状态更新为未分配任务状态;
[0163] S273,响应于目标核心的电源域相关的所有核心都处于未分配任务状态,关断目标核心的电源域。
[0164] 在一些实施例中,为了灵活控制多核系统各个核心的电源域,可以将多核系统的每个核心设置独享电源域,允许多核系统在核心无负载任务的情况下使用电源门控技术将其电源关断以节省功耗。可选地,在较大规模的多核系统中,由于核心数量庞大,造成单独控制各个核心的独享电源域过多,因此在电路设计、部署等方面可能较复杂甚至难以实现。因此,在一些实施例中,可以使用共享电源域替换独享电源域来克服上述问题,即将多核系统中多个邻近核心划分为一组,共享一个电源域。
[0165] 在根据本申请的核心调度方法中,可以根据多核系统的核心工作情况,对核心进行任务分配状态更新和电源管控。例如当目标核心被确定时,说明目标核心即将进入工作状态,因此在将目标核心的任务分配状态更新为已分配任务的同时需要开启或接通(或保持开启或接通)目标核心的电源域以准备处理当前待执行任务。当待执行任务处理完成时,针对具有独享电源域的目标核心,可以直接关断其电源域并将任务分配状态更新为未分配任务,因为独享电源域对其他核心没有影响;而针对具有多核心共享电源域的目标核心,不能直接关断目标核心的电源域以避免对共享该电源域的其他核心的工作造成影响,因此,这时需要检测连接该共享电源域的所有核心都是否都没有负载任务,只有当共享电源域相关的所有核心都没有复杂任务(即处于未分配任务状态)时才能关断该共享电源域。这里共享电源域“相关”的所有核心是指以该共享电源域为供电电源的所有核心。
[0166] 图9示出了根据本申请一些实施例的用于多核系统的动态核心调度方法实施过程中关键信号波形图。如图9所示,波形图中包括四个关键信号:Core_off、Core_off_done、Assigned、Assigned_done,其分别表示核心的电源域关断信号、电源域开关完成信号、任务分配状态信号、任务分配完成信号。如图9所示,图中右边的数字1、0分别表示各个信号在波形图中的取值,图中的t1、t2、t3、t4分别表示上电开始时刻、上电完成时刻、掉电开始时刻和掉电完成时刻,T上电表示上电过程持续的时间段,T掉电表示掉电过程持续时间段。
[0167] 如图9所示,默认状态下,例如在t1时刻之前和t4时刻之后,每个核心的电源是关断的,任务分配状态为“未分配任务”,核心状态记录表中相应的参数Core_off为1,Assigned为0;在目标应用发布任务后,核心调度平台330依据根据本申请一些实施例的核心调度方法将该任务分配到某个核心(即目标核心),于是在任务分配完成的t1时刻,Assigned信号首先由0变为1,即任务分配状态被更新为“已分配任务”,以避免目标核心被调度处理其他任务,同时目标核心的Core_off由1变为0,核心开始上电;在t2时刻,上电完成,目标核心的Core_off_done会由1变为0,表示电源域开启完成,同时Assigned_done由0变为1,表明目标核心已经为软件调用和任务执行做好充分准备(即目标核心的任务分配彻底完成),这时可以向软件反馈分配的Core_ID以进入任务处理阶段;在分配给目标核心的任务被处理完成的t3时刻,目标核心进入空闲状态,因而参数Core_off由0变为1,目标核心的电源开始掉电;在t4时刻,掉电完成,Core_off_done由0变为1,目标核心的电源域完全关断,这时可以将Assigned和Assigned_done清0,释放目标核心,即目标核心的任务分配状态更新为“未分配任务”。
[0168] 在图9所示的关于核心的任务分配状态更新和电源域管控过程的关键信号波形图中,Core_off, Assigned信号是核心状态记录表所关注的信息,Assigned_done和Core_off_done是中间信号,这些信号的设置可以避免在目标核心掉电或上电未完成时对其进行调用以及由此造成错误。例如,在上电开始的t1时刻到掉电完成的t4时刻,任务分配状态信号Assigned的值都为1,可以保证从目标核心确定开始(即从上电开始)直至任务处理完成并释放核心(即掉电完成)的整个任务分配处理的过程中,尤其是上电过程(从t1时刻到t2时刻期间)和掉电过程中(从t3时刻到t4时刻期间)中,不会有其他任务被分配给目标核心,从而避免核心调度冲突。此外,电源域开启/关断完成信号Core_off_done和任务分配完成信号Assigned_done在上电完成的t2时刻才被分别更新为0和1,可以确保目标核心在准备就绪时(即电源域完成上电时)才开启相应任务的处理过程,避免因目标核心准备不充分或上电未完成造成任务处理失败。
[0169] 图10示意性示出了根据本申请一些实施例的用于多核系统的动态核心调度装置1000的示例框图。图10所示的动态核心调度装置1000可以对应于图1核心调度平台130。
[0170] 如图10所示,用于多核系统的动态核心调度装置1000包括接收模块1010、第一获取模块1020、第二获取模块1030以及确定模块1040。接收模块1010可以被配置成从目标应用接收任务执行请求,任务执行请求包括待执行任务的任务负载级别。第一获取模块1020可以配置成响应于任务执行请求,获取多核系统的可调度核心区域中各个核心的任务分配情况和调度优先级,任务分配情况包括可调度核心区域中各个核心的任务分配状态和承载的任务负载级别。第二获取模块1030可以配置成获取针对多核系统的分级任务分配模式,分级任务分配模式包括与预期分配的多个任务负载级别中至少一个任务负载级别对应的预期调度核心满足的动态预设条件,预期分配的多个任务负载级别与目标应用是相关的,动态预设条件包括:预期调度核心的每一个相邻核心处于未分配任务状态或承载的任务负载级别低于至少一个任务负载级别。确定模块1040可以配置成根据待执行任务的任务负载级别、可调度核心区域中各个核心的任务分配情况和调度优先级以及分级任务分配模式,从可调度核心区域中确定用于处理待执行任务的目标核心。
[0171] 应注意,上述各种模块可以以软件或硬件或两者的组合来实现。多个不同模块可以在同一软件或硬件结构中实现,或者一个模块可以由多个不同的软件或硬件结构实现。
[0172] 根据本申请一些实施例的用于多核系统的动态核心调度装置中,首先,针对软件(目标应用)发布的任务,采用任务分级处理和分配方式,即利用任务负载级别表征任务复杂程度并基于目标应用所涉及的任务负载级别构建分级任务分配模式,这有利于任务运算复杂度的定量分析,简化了基于分级任务的核心调度过程;其次,通过设定分级任务分配模式中动态核心调度条件(即与目标应用的至少一个任务负载级别对应的预期调度核心满足的动态预设条件),可以针对不同负载级别的待执行任务,根据核心阵列中待调度核心的相邻核心(甚至周围核心)的当前实时任务分配情况(即相邻核心当前承载的任务负载级别低于待执行任务的任务负载级别)的分析来实现动态核心调度,从而兼顾待执行任务的任务负载级别和待调度核心的邻近核心的实时任务分配情况二者对多核阵列区域功率密度的预期影响,能够有效避免相关技术的固定核心调度模式(例如单纯依据位置顺序进行核心调度的模式)造成的多核阵列中功率密度失控问题,进而有利于实现多核系统核心阵列的相对均衡的功率密度,避免因功率密度失控或失衡造成的核心阵列区域高负荷状态和区域高发热问题,有效提升多核系统的整体性能和任务执行效率。
[0173] 图11示意性示出了根据本申请一些实施例的计算设备1100的示例框图。计算设备1100可以代表用以实现本文描述的各种装置或模块和/或执行本文描述的各种方法的设备。计算设备1100可以是例如服务器、台式计算机、膝上型计算机、平板、智能电话、智能手表、可穿戴设备或任何其它合适的计算设备或计算系统,其可以包括从具有大量存储和处理资源的全资源设备到具有有限存储和/或处理资源的低资源设备的各种级别的设备。在一些实施例中,上面关于图10描述的用于多核系统的动态核心调度装置1000可以分别在一个或多个计算设备1100中实现。
[0174] 如图11所示,示例计算设备1100包括彼此通信耦合的处理系统1101、一个或多个计算机可读介质1102以及一个或多个I/O接口1103。尽管未示出,但是计算设备1100还可以包括将各种组件彼此耦合的系统总线或其他数据和命令传送系统。系统总线可以包括不同总线结构的任何一个或组合,所述总线结构可以是诸如存储器总线或存储器控制器、外围总线、通用串行总线、和/或利用各种总线架构中的任何一种的处理器或局部总线。或者,还可以包括诸如控制和数据线。
[0175] 处理系统1101代表使用硬件执行一个或多个操作的功能。因此,处理系统1101被图示为包括可被配置为处理器、功能块等的硬件元件1104。这可以包括在硬件中实现作为专用集成电路或使用一个或多个半导体形成的其它逻辑器件。硬件元件1104不受其形成的材料或其中采用的处理机构的限制。例如,处理器可以由(多个)半导体和/或晶体管(例如,电子集成电路(IC))组成。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
[0176] 计算机可读介质1102被图示为包括存储器/存储装置1105。存储器/存储装置1105表示与一个或多个计算机可读介质相关联的存储器/存储装置。存储器/存储装置1105可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储装置1105可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动介质(例如,闪存、可移动硬盘驱动器、光盘等)。计算机可读介质1102可以以下面进一步描述的各种其他方式进行配置。
[0177] 一个或多个I/O(输入/输出)接口1103代表允许用户向计算设备1100键入命令和信息并且还允许使用各种输入/输出设备将信息显示给用户和/或发送给其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置为检测物理触摸的容性或其他传感器)、相机(例如,可以采用可见或不可见的波长(诸如红外频率)将不涉及触摸的运动检测为手势)、网卡、接收机等等。输出设备的示例包括显示设备、扬声器、打印机、触觉响应设备、网卡、发射机等。
[0178] 计算设备1100还包括动态核心调度策略1106。动态核心调度策略1106可以作为计算程序指令存储在存储器/存储装置1105中,也可以是硬件或固件。动态核心调度策略1106可以连同处理系统1101等一起实现关于图10描述的用于多核系统的动态核心调度装置1000的各个模块的全部功能。
[0179] 本文可以在软件、硬件、元件或程序模块的一般上下文中描述各种技术。一般地,这些模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。本文所使用的术语“模块”、“功能”等一般表示软件、固件、硬件或其组合。本文描述的技术的特征是与平台无关的,意味着这些技术可以在具有各种处理器的各种计算平台上实现。
[0180] 所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或者跨某种形式的计算机可读介质传输。计算机可读介质可以包括可由计算设备1100访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
[0181] 与单纯的信号传输、载波或信号本身相反,“计算机可读存储介质”是指能够持久存储信息的介质和/或设备,和/或有形的存储装置。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括诸如易失性和非易失性、可移动和不可移动介质和/或以适用于存储信息(诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据)的方法或技术实现的存储设备之类的硬件。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD‑ROM、数字通用盘(DVD)或其他光学存储装置、硬盘、盒式磁带、磁带,磁盘存储装置或其他磁存储设备,或其他存储设备、有形介质或适于存储期望信息并可以由计算机访问的制品。
[0182] “计算机可读信号介质”是指被配置为诸如经由网络将指令发送到计算设备1100的硬件的信号承载介质。信号介质典型地可以将计算机可读指令、数据结构、程序模块或其他数据体现在诸如载波、数据信号或其它传输机制的调制数据信号中。信号介质还包括任何信息传递介质。作为示例而非限制,信号介质包括诸如有线网络或直接连线的有线介质以及诸如声、RF、红外和其它无线介质的无线介质。
[0183] 如前所述,硬件元件1104和计算机可读介质1102代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其在一些实施例中可以用于实现本文描述的技术的至少一些方面。硬件元件可以包括集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及硅中的其它实现或其他硬件设备的组件。在这种上下文中,硬件元件可以作为执行由硬件元件所体现的指令、模块和/或逻辑所定义的程序任务的处理设备,以及用于存储用于执行的指令的硬件设备,例如,先前描述的计算机可读存储介质。
[0184] 前述的组合也可以用于实现本文所述的各种技术和模块。因此,可以将软件、硬件或程序模块和其它程序模块实现为在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件1104体现的一个或多个指令和/或逻辑。计算设备1100可以被配置为实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,例如通过使用处理系统的计算机可读存储介质和/或硬件元件1104,可以至少部分地以硬件来实现将模块实现为可由计算设备1100作为软件执行的模块。指令和/或功能可以由例如一个或多个计算设备1100和/或处理系统1101执行/可操作以实现本文所述的技术、模块和示例。
[0185] 本文描述的技术可以由计算设备1100的这些各种配置来支持,并且不限于本文所描述的技术的具体示例。
[0186] 特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机程序。例如,本申请的实施例提供一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行本申请的方法实施例中的至少一个步骤的程序代码。
[0187] 在本申请的一些实施例中,提供了一种或多种计算机可读存储介质,其上存储有计算机可读指令,该计算机可读指令在被执行时实现根据本申请一些实施例的用于多核系统的核心调度方法。根据本申请一些实施例所述的用于多核系统的核心调度方法的各个步骤可以通过程序设计被转化为计算机可读指令,从而存储在计算机可读存储介质中。当这样的计算机可读存储介质被计算设备或计算机读取或访问时,其中的计算机可读指令被计算设备或计算机上的处理器执行以实现根据本申请一些实施例所述的方法。
[0188] 在本说明书的描述中,术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点被包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0189] 流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序(包括根据所涉及的功能按基本同时的方式或按相反的顺序)来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
[0190] 在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设 备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
[0191] 应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,则可用本领域公知的下列技术中的任一项或它们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路、具有合适的组合逻辑门电路的专用集成电路、可编程门阵列(Programmable Gate Array)、现场可编程门阵列(Field Programmable Gate Array)等。
[0192] 本技术领域的普通技术人员可以理解上述实施例方法的全部或部分步骤可以通过程序指令相关的硬件完成,所述程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括执行方法实施例的步骤之一或其组合。
[0193] 此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。