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

申请号 : CN202211713989.1

文献号 : CN115686873B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 请求不公布姓名

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

摘要 :

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

权利要求 :

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

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

获取针对多核系统的分级任务分配模式,所述分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,所述预期分配的多个任务负载级别是与目标应用相关的;

根据所述可调度核心区域中每一个核心与预定核心之间的位置关系,确定所述可调度核心区域中各个核心的调度优先级;

获取所述可调度核心区域中各个核心的任务分配状态;

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

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

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

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

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

4.根据权利要求2所述的方法,其特征在于,所述多个可调度核心子区域中各个可调度核心子区域均为方形核心阵列区域且包括相同数量的核心。

5.根据权利要求2所述的方法,其特征在于,所述基于每一个可调度核心子区域与基准可调度核心子区域之间的距离,确定每一个可调度核心子区域的第一调度顺序,包括:计算每一个可调度核心子区域与所述基准可调度核心子区域之间的横向距离和纵向距离;

基于每一个可调度核心子区域与所述基准可调度核心子区域之间的横向距离和纵向距离中至少一个,确定每一个可调度核心子区域的第一调度顺序。

6.根据权利要求5所述的方法,其特征在于,所述基于每一个可调度核心子区域与所述基准可调度核心子区域之间的横向距离和纵向距离中至少一个,确定每一个可调度核心子区域的第一调度顺序,包括:针对每一个可调度核心子区域,计算所述可调度核心子区域与所述基准可调度核心子区域之间的横向距离和纵向距离的平方和;

基于每一个可调度核心子区域对应的所述横向距离和纵向距离的平方和,确定每一个可调度核心子区域的第一调度顺序;

响应于所述多个可调度核心子区域中存在第一调度顺序相同的至少两个可调度核心子区域,基于所述至少两个可调度核心子区域各自与所述基准可调度核心子区域之间的纵向距离,更新所述至少两个可调度核心子区域的第一调度顺序。

7.根据权利要求2所述的方法,其特征在于,所述至少根据每一个可调度核心子区域的第一调度顺序,确定每一个可调度核心子区域中各个核心的调度优先级,包括:根据每一个可调度核心子区域中各个核心的横向排列顺序和纵向排列顺序,确定每一个可调度核心子区域中各个核心的第二调度顺序;

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

8.根据权利要求2所述的方法,其特征在于,所述预定核心为所述可调度核心区域中预设的起始待调度核心,并且所述基于每一个可调度核心子区域与基准可调度核心子区域之间的距离,确定每一个可调度核心子区域的第一调度顺序,包括:基于每一个可调度核心子区域与基准可调度核心子区域之间的距离,按照从小到大的顺序对所述多个可调度核心子区域排序;

依据所述排序结果,确定每一个可调度核心子区域的第一调度顺序,所述每一个可调度核心子区域的第一调度顺序与所述排序结果一致。

9.根据权利要求1所述的方法,其特征在于,在所述分级任务分配模式中,所述可调度核心区域包括与所述预期分配的多个任务负载级别一一对应的多类核心区域,每类核心区域包括多个不相邻的子区域,每个子区域包括一个核心或相邻的至少两个核心。

10.根据权利要求9所述的方法,其特征在于,所述分级任务分配模式是根据所述预期分配的多个任务负载级别获取的。

11.根据权利要求10所述的方法,其特征在于,在所述预期分配的多个任务负载级别包括第一任务负载级别和第二任务负载级别的情况下,所述分级任务分配模式为第一分级任务分配模式,在第一分级任务分配模式中,所述可调度核心区域包括与第一任务负载级别对应的第一类核心区域以及与第二任务负载级别对应的第二类核心区域中,且第一类核心区域中的每个子区域和第二类核心区域中的每个子区域均包括一个核心。

12.根据权利要求10所述的方法,其特征在于,在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别的情况下,所述分级任务分配模式为第二分级任务分配模式,在第二分级任务分配模式中,所述可调度核心区域包括与第一任务负载级别对应的第三类核心区域、与第二任务负载级别对应的第四类核心区域以及与第三任务负载级别对应的第五类核心区域,第四类核心区域中的各子区域与第五类核心区域中的各子区域不相邻。

13.根据权利要求12所述的方法,其特征在于,第二任务负载级别和第三任务负载级别中的每一个对应的任务复杂程度都大于第一任务负载级别对应的任务复杂程度。

14.根据权利要求13所述的方法,其特征在于,所述可调度核心区域为阵列区域,并且在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差小于第一极差阈值的情况下,所述分级任务分配模式为第二分级任务分配模式的第一子模式,所述极差指示所述预期分配的多个任务负载级别中最高任务负载级别与最低任务负载级别对应的任务复杂程度之间的差异,在第一子模式中,在可调度核心区域的每一行和每一列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心以及第四类区域中的至少一个核心隔开。

15.根据权利要求14所述的方法,其特征在于,在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差大于或等于第二极差阈值的情况下,所述第二分级任务分配模式为第二分级任务分配模式的第二子模式,其中第一极差阈值小于或等于第二极差阈值,在第二子模式中,在可调度核心区域的奇数行和奇数列中,第四类区域中的各核心被第三类区域中的一个或多个核心隔开,并且在可调度区域的偶数行和偶数列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心和第四类区域中的至少一个核心隔开。

16.根据权利要求12‑15中任一项所述的方法,其特征在于,第三任务负载级别对应的任务复杂程度大于第二任务负载级别对应的任务复杂程度。

17.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:获取所述目标应用对应的区域调度参数,所述区域调度参数基于所述目标应用运行所需的核心数量确定;

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

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

基于所述可调度核心区域中各个核心的任务分配状态,从所述第一候选核心区域中确定第二候选核心区域;

依据所述可调度核心区域中各个核心的调度优先级,从所述第二候选核心区域中选取目标核心。

19.根据权利要求1所述的方法,其特征在于,所述目标核心的电源域为所述目标核心与所述多核系统中至少一个其他核心共享的电源域,并且所述方法进一步包括:响应于所述待执行任务被所述目标核心处理完成,检测所述至少一个其他核心的任务分配状态;

基于所述至少一个其他核心的任务分配状态,控制所述目标核心的电源域的开关。

20.根据权利要求19所述的方法,其特征在于,所述基于所述至少一个其他核心的任务分配状态,控制所述目标核心的电源域的开关,包括:响应于所述至少一个其他核心的任务分配状态都为未分配任务,关断所述目标核心的电源域。

21.根据权利要求19所述的方法,其特征在于,所述基于所述至少一个其他核心的任务分配状态,控制所述目标核心的电源域的开关包括:响应于所述至少一个其他核心的任务分配状态都为未分配任务状态,启动电源域空闲状态计时;

响应于所述电源域空闲状态计时达到预设时长,关断所述目标核心的电源域。

22.根据权利要求21所述的方法,其特征在于,所述基于所述至少一个其他核心的任务分配状态,控制所述目标核心的电源域的开关进一步包括:在所述电源域空闲状态计时期间,实时获取所述至少一个其他核心和所述目标核心中每一个核心的任务分配状态;

响应于在所述电源域空闲状态计时期间所述至少一个其他核心和所述目标核心中至少一个核心的任务分配状态为已分配任务状态,终止所述电源域空闲状态计时且保持所述目标核心的电源域开启。

23.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:响应于所述待执行任务被所述目标核心处理完成,将所述目标核心的任务分配状态更新为未分配任务状态。

24.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:响应于所述目标核心被确定,检测所述目标核心的电源域的供电状态;

根据所述目标核心的电源域的供电状态,控制所述待执行任务的处理过程。

25.根据权利要求24所述的方法,其特征在于,所述根据所述目标核心的电源域的供电状态,控制所述待执行任务的处理过程,包括:响应于所述目标核心的电源域的供电状态为完全关断状态,开启所述目标核心的电源域并实时检测所述目标核心的电源域是否进入完全开启状态;以及响应于所述目标核心的电源域进入完全开启状态,指示所述目标核心处理所述待执行任务。

26.根据权利要求24所述的方法,其特征在于,所述根据所述目标核心的电源域的供电状态,控制所述待执行任务的处理过程,包括:响应于所述目标核心的电源域的供电状态为上电状态,实时检测所述目标核心的电源域是否进入完全开启状态;

响应于所述目标核心的电源域进入完全开启状态,指示所述目标核心处理所述待执行任务。

27.根据权利要求24所述的方法,其特征在于,所述根据所述目标核心的电源域的供电状态,控制所述待执行任务的处理过程,包括:响应于所述目标核心的电源域的供电状态为掉电状态,实时检测所述目标核心的电源域是否进入完全关断状态;

响应于所述目标核心的电源域进入完全关断状态,开启所述目标核心的电源域并实时检测所述目标核心的电源域是否进入完全开启状态;以及响应于所述目标核心的电源域进入完全开启状态,指示所述目标核心处理所述待执行任务。

28.一种用于多核系统的核心调度装置,其特征在于,所述装置包括:接收模块,其配置成从目标应用接收任务执行请求,所述任务执行请求包括待执行任务的任务负载级别;

第一获取模块,其配置成获取针对多核系统的分级任务分配模式,所述分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,所述预期分配的多个任务负载级别是与目标应用相关的;

第一确定模块,其配置成根据所述可调度核心区域中每一个核心与预定核心之间的位置关系,确定所述可调度核心区域中各个核心的调度优先级;

第二获取模块,其配置成获取所述可调度核心区域中各个核心的任务分配状态;

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

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

存储器和处理器,

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

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

说明书 :

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

技术领域

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

背景技术

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

发明内容

[0004] 本申请提供了一种用于多核系统的核心调度方法和装置、计算设备、计算机可读存储介质及计算机程序产品,期望缓解、减轻或甚至消除上述问题中的一些或全部以及其它可能的问题。
[0005] 根据本申请的一个方面,提出一种用于多核系统的核心调度方法,包括:从目标应用接收任务执行请求,任务执行请求包括待执行任务的任务负载级别;获取针对多核系统的分级任务分配模式,分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,预期分配的多个任务负载级别是与目标应用相关的;根据可调度核心区域中每一个核心与预定核心之间的位置关系,确定可调度核心区域中各个核心的调度优先级;获取可调度核心区域中各个核心的任务分配状态;根据待执行任务的任务负载级别、分级任务分配模式以及可调度核心区域中各个核心的调度优先级和任务分配状态,从可调度核心区域中确定用于处理待执行任务的目标核心。
[0006] 在根据本申请一些实施例的核心调度方法中,根据所述可调度核心区域中每一个核心与预定核心之间的位置关系,确定所述可调度核心区域中各个核心的调度优先级,包括:将所述可调度核心区域划分为多个可调度核心子区域,所述多个可调度核心子区域包括所述预定核心所在的基准可调度核心子区域;基于每一个可调度核心子区域与基准可调度核心子区域之间的距离,确定每一个可调度核心子区域的第一调度顺序;至少根据每一个可调度核心子区域的第一调度顺序,确定每一个可调度核心子区域中各个核心的调度优先级。
[0007] 在根据本申请一些实施例的核心调度方法中,同一个可调度核心子区域中的各个核心共享同一个电源域。
[0008] 在根据本申请一些实施例的核心调度方法中,多个可调度核心子区域中各个可调度核心子区域均为方形核心阵列区域且包括相同数量的核心。
[0009] 在根据本申请一些实施例的核心调度方法中,基于每一个可调度核心子区域与基准可调度核心子区域之间的距离,确定每一个可调度核心子区域的第一调度顺序,包括:计算每一个可调度核心子区域与所述基准可调度核心子区域之间的横向距离和纵向距离;基于每一个可调度核心子区域与所述基准可调度核心子区域之间的横向距离和纵向距离中至少一个,确定每一个可调度核心子区域的第一调度顺序。
[0010] 在根据本申请一些实施例的核心调度方法中,基于每一个可调度核心子区域与所述基准可调度核心子区域之间的横向距离和纵向距离中至少一个,确定每一个可调度核心子区域的第一调度顺序,包括:针对每一个可调度核心子区域,计算所述可调度核心子区域与所述基准可调度核心子区域之间的横向距离和纵向距离的平方和;基于每一个可调度核心子区域对应的所述横向距离和纵向距离的平方和,确定每一个可调度核心子区域的第一调度顺序;响应于所述多个可调度核心子区域中存在第一调度顺序相同的至少两个可调度核心子区域,基于所述至少两个可调度核心子区域各自与所述基准可调度核心子区域之间的纵向距离,更新所述至少两个可调度核心子区域的第一调度顺序。
[0011] 在根据本申请一些实施例的核心调度方法中,至少根据每一个可调度核心子区域的第一调度顺序,确定每一个可调度核心子区域中各个核心的调度优先级,包括:根据每一个可调度核心子区域中各个核心的横向排列顺序和纵向排列顺序,确定每一个可调度核心子区域中各个核心的第二调度顺序;根据每一个可调度核心子区域的第一调度顺序和该可调度核心子区域中各个核心的第二调度顺序,确定每一个可调度核心区域中各个核心的调度优先级。
[0012] 在根据本申请一些实施例的核心调度方法中,预定核心为所述可调度核心区域中预设的起始待调度核心,并且所述基于每一个可调度核心子区域与基准可调度核心子区域之间的距离,确定每一个可调度核心子区域的第一调度顺序,包括:基于每一个可调度核心子区域与基准可调度核心子区域之间的距离,按照从小到大的顺序对所述多个可调度核心子区域排序;依据所述排序结果,确定每一个可调度核心子区域的第一调度顺序,所述每一个可调度核心子区域的第一调度顺序与所述排序结果一致。
[0013] 在根据本申请一些实施例的核心调度方法中,在所述分级任务分配模式中,所述可调度核心区域包括与所述预期分配的多个任务负载级别一一对应的多类核心区域,每类核心区域包括多个不相邻的子区域,每个子区域包括一个核心或相邻的至少两个核心。
[0014] 在根据本申请一些实施例的核心调度方法中,分级任务分配模式是根据所述预期分配的多个任务负载级别获取的。
[0015] 在根据本申请一些实施例的核心调度方法中,在所述预期分配的多个任务负载级别包括第一任务负载级别和第二任务负载级别的情况下,所述分级任务分配模式为第一分级任务分配模式,在第一分级任务分配模式中,所述可调度核心区域包括与第一任务负载级别对应的第一类核心区域以及与第二任务负载级别对应的第二类核心区域中,且第一类核心区域中的每个子区域和第二类核心区域中的每个子区域均包括一个核心。
[0016] 在根据本申请一些实施例的核心调度方法中,在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别的情况下,所述分级任务分配模式为第二分级任务分配模式,在第二分级任务分配模式中,所述可调度核心区域包括与第一任务负载级别对应的第三类核心区域、与第二任务负载级别对应的第四类核心区域以及与第三任务负载级别对应的第五类核心区域,第四类核心区域中的各子区域与第五类核心区域中的各子区域不相邻。
[0017] 在根据本申请一些实施例的核心调度方法中,第二任务负载级别和第三任务负载级别中的每一个对应的任务复杂程度都大于第一任务负载级别对应的任务复杂程度。
[0018] 在根据本申请一些实施例的核心调度方法中,可调度核心区域为阵列区域,并且在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差小于第一极差阈值的情况下,所述分级任务分配模式为第二分级任务分配模式的第一子模式,所述极差指示所述预期分配的多个任务负载级别中最高任务负载级别与最低任务负载级别对应的任务复杂程度之间的差异,在第一子模式中,在可调度核心区域的每一行和每一列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心以及第四类区域中的至少一个核心隔开。
[0019] 在根据本申请一些实施例的核心调度方法中,在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差大于或等于第二极差阈值的情况下,所述第二分级任务分配模式为第二分级任务分配模式的第二子模式,其中第一极差阈值小于或等于第二极差阈值,在第二子模式中,在可调度核心区域的奇数行和奇数列中,第四类区域中的各核心被第三类区域中的一个或多个核心隔开,并且在可调度区域的偶数行和偶数列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心和第四类区域中的至少一个核心隔开。
[0020] 在根据本申请一些实施例的核心调度方法中,第三任务负载级别对应的任务复杂程度大于第二任务负载级别对应的任务复杂程度。
[0021] 在根据本申请一些实施例的核心调度方法中,进一步包括:获取所述目标应用对应的区域调度参数,所述区域调度参数基于所述目标应用运行所需的核心数量确定;根据所述区域调度参数,从所述多核系统的核心阵列中确定可调度核心区域。
[0022] 在根据本申请一些实施例的核心调度方法中,根据所述待执行任务的任务负载级别、所述分级任务分配模式以及所述可调度核心区域中各个核心的调度优先级和任务分配状态,从所述可调度核心区域中确定用于处理所述待执行任务的目标核心,包括:根据所述分级任务分配模式,从所述可调度区域中确定与所述待执行任务的任务负载级别匹配的第一候选核心区域;基于所述可调度区域中各个核心的任务分配状态,从所述第一候选核心区域中确定第二候选核心区域;依据所述可调度核心区域中各个核心的调度优先级,从所述第二候选区域中选取目标核心。
[0023] 在根据本申请一些实施例的核心调度方法中,目标核心的电源域为所述目标核心与所述多核系统中至少一个其他核心共享的电源域,并且所述方法进一步包括:响应于所述待执行任务被所述目标核心处理完成,检测所述至少一个其他核心的任务分配状态;基于所述至少一个其他核心的任务分配状态,控制所述目标核心的电源域的开关。
[0024] 在根据本申请一些实施例的核心调度方法中,基于所述至少一个其他核心的任务分配状态,控制所述目标核心的电源域的开关,包括:响应于所述至少一个其他核心的任务分配状态都为未分配任务,关断所述目标核心的电源域。
[0025] 在根据本申请一些实施例的核心调度方法中,基于所述至少一个其他核心的任务分配状态,控制所述目标核心的电源域的开关包括:响应于所述至少一个其他核心的任务分配状态都为未分配任务状态,启动电源域空闲状态计时;响应于所述电源域空闲状态计时达到预设时长,关断所述目标核心的电源域。
[0026] 在根据本申请一些实施例的核心调度方法中,基于所述至少一个其他核心的任务分配状态,控制所述目标核心的电源域的开关进一步包括:在所述电源域空闲状态计时期间,实时获取所述至少一个其他核心和所述目标核心中每一个核心的任务分配状态;响应于在所述电源域空闲状态计时期间所述至少一个其他核心和所述目标核心中至少一个核心的任务分配状态为已分配任务状态,终止所述电源域空闲状态计时且保持所述目标核心的电源域开启。
[0027] 在根据本申请一些实施例的核心调度方法中,进一步包括:响应于所述待执行任务被所述目标核心处理完成,将所述目标核心的任务分配状态更新为未分配任务状态。
[0028] 在根据本申请一些实施例的核心调度方法中,进一步包括:响应于所述目标核心被确定,检测所述目标核心的电源域的供电状态;根据所述目标核心的电源域的供电状态,控制所述待执行任务的处理过程。
[0029] 在根据本申请一些实施例的核心调度方法中,根据所述目标核心的电源域的供电状态,控制所述待执行任务的处理过程,包括:响应于所述目标核心的电源域的供电状态为完全关断状态,开启所述目标核心的电源域并实时检测所述目标核心的电源域是否进入完全开启状态;以及响应于所述目标核心的电源域进入完全开启状态,指示所述目标核心处理所述待执行任务。
[0030] 在根据本申请一些实施例的核心调度方法中,根据所述目标核心的电源域的供电状态,控制所述待执行任务的处理过程,包括:响应于所述目标核心的电源域的供电状态为上电状态,实时检测所述目标核心的电源域是否进入完全开启状态;响应于所述目标核心的电源域进入完全开启状态,指示所述目标核心处理所述待执行任务。
[0031] 在根据本申请一些实施例的核心调度方法中,根据所述目标核心的电源域的供电状态,控制所述待执行任务的处理过程,包括:响应于所述目标核心的电源域的供电状态为掉电状态,实时检测所述目标核心的电源域是否进入完全关断状态;响应于所述目标核心的电源域进入完全关断状态,开启所述目标核心的电源域并实时检测所述目标核心的电源域是否进入完全开启状态;以及响应于所述目标核心的电源域进入完全开启状态,指示所述目标核心处理所述待执行任务。
[0032] 根据本申请的另一方面,提供一种用于多核系统的核心调度装置,包括:接收模块,其配置成从目标应用接收任务执行请求,所述任务执行请求包括待执行任务的任务负载级别;第一获取模块,其配置成获取针对多核系统的分级任务分配模式,所述分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,预期分配的多个任务负载级别是与目标应用相关的;第一确定模块,其配置成根据所述可调度核心区域中每一个核心与预定核心之间的位置关系,确定所述可调度核心区域中各个核心的调度优先级;第二获取模块,其配置成获取所述可调度核心区域中各个核心的任务分配状态;第二确定模块,其配置成根据所述待执行任务的任务负载级别、所述分级任务分配模式以及所述可调度核心区域中各个核心的调度优先级和任务分配状态,从所述可调度核心区域中确定用于处理所述待执行任务的目标核心。
[0033] 根据本申请的另一方面,提出一种计算设备,包括:存储器和处理器,其中所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时促使所述处理器执行根据本申请一些实施例的用于多核系统的核心调度方法。
[0034] 根据本申请的另一方面,提出一种计算机可读存储介质,其上存储计算机可读指令,所述计算机可读指令在被执行时实现根据本申请一些实施例的方法。
[0035] 根据本申请的另一方面,提出一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据本申请一些实施例的方法的步骤。
[0036] 在根据本申请一些实施例的用于多核系统的核心调度方法和装置中,首先,针对软件(目标应用)发布的任务,采用任务分级处理方式,即利用任务负载级别表征任务复杂程度,有利于任务运算复杂度的定量分析,简化了基于分级任务的核心调度过程;其次,通过分级任务分配模式,可以实现不同负载级别任务在核心阵列中的均衡分配或排布,进而有效控制多核系统核心阵列的功率密度,使得多核阵列执行任务时的功率密度相对均衡,避免因高负载任务过度聚集造成的核心阵列区域高负荷状态、功率密度过大和区域高发热问题,有效提升了多核系统的整体性能和任务执行效率;另外,在使用分级任务分配模式实现不同任务负载级别均衡排布的同时,利用基于可调度核心区域中各核心与预定核心(例如核心阵列左上角的ID=0的起始待调度核心)的位置关系(例如二者位置靠近程度)确定的调度优先级(例如近零原则)来限定当前待执行任务的核心分配顺序,使得各个分级任务优先集中分配到预定核心附近的区域(例如同一个电源域的供电区域),有利于针对多核系统中被调度核心的集中统一管理,尤其是区域化电源管理,显著提升了多核系统的核心管理效率,同时有利于通过统一区域化电源管理(例如在被调度核心区域各核心空闲时采用电源域休眠模式)减少(例如由于频繁开关电源造成的)能源消耗、电源寿命损耗以及工作效率损耗。

附图说明

[0037] 根据以下详细描述和附图,将容易理解本申请的各个不同的方面、特征和优点,在附图中:
[0038] 图1示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法的示例实施环境;
[0039] 图2示意性示出了根据本申请一些实施例的用于多核系统的核心调度的流程图;
[0040] 图3A和3B分别示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法对应的实体架构图;
[0041] 图4示意性示出根据本申请一些实施例的多核系统的核心调度优先级示意图;
[0042] 图5示意性示出了根据本申请一些实施例的用于多核系统的核心调度的流程图;
[0043] 图6A‑6E分别示意性示出根据本申请一些实施例的分级任务分配模式;
[0044] 图7示意性示出了根据本申请一些实施例的用于多核系统的核心调度的流程图;
[0045] 图8示意性示出了根据本申请一些实施例的用于多核系统的核心调度的流程图;
[0046] 图9A示意性示出了根据本申请一些实施例的用于多核系统的电源域的状态变化示意图;
[0047] 图9B和图9C分别示出了根据本申请一些实施例的用于多核系统的核心调度方法实施过程中关键信号波形图;
[0048] 图10示意性示出了根据本申请一些实施例的用于多核系统的核心调度装置的示例框图;以及
[0049] 图11示意性示出了根据本申请一些实施例的计算设备的示例框图。
[0050] 应当指出,上述附图仅仅是示意性的和说明性的,且并不一定按照比例绘制。

具体实施方式

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