一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

任务调度电路、方法、电子设备及计算机可读存储介质与流程

2022-05-21 05:06:26 来源:中国专利 TAG:


1.本公开涉及处理器领域,尤其涉及一种任务调度电路、方法、电子设备及计算机可读存储介质。


背景技术:

2.随着科学技术的发展,人类社会正在快速进入智能时代。智能时代的重要特点,就是人们获得数据的种类越来越多,获得数据的量越来越大,而对处理数据的速度要求越来越高。芯片是任务调度的基石,它从根本上决定了人们处理数据的能力。从应用领域来看,芯片主要有两条路线:一条是通用芯片路线,例如cpu(central processing unit)等,它们能提供极大的灵活性,但是在处理特定领域算法时有效算力比较低;另一条是专用芯片路线,例如tpu(tensor processing unit)等,它们在某些特定领域,能发挥较高的有效算力,但是面对灵活多变的比较通用的领域,它们处理能力比较差甚至无法处理。由于智能时代的数据种类繁多且数量巨大,所以要求芯片既具有极高的灵活性,能处理不同领域且日新月异的算法,又具有极强的处理能力,能快速处理极大的且急剧增长的数据量。
3.在神经网络计算中,经常会用到多核或者众核的芯片。此处多(众)核架构中的核,都有一定独立处理能力,并且带有比较大的核内存储空间,用于存储自身的程序、数据和权重。
4.如何让众多的核能够高效率的发挥算力,是决定整个芯片性能的关键。各核的算力发挥,取决于多种因素,例如任务的调度与分配、芯片的架构、核的结构、核的电路等。其中任务的调度与分配是一个非常关键的因素,如果任务的调度与分配合理,则能充分发挥各核的有效算力高,否则各核的有效算力就会变低。
5.现有技术中一般使用以下方案来进行处理核任务的调度:
6.如图1所示为使用调度器进行任务调度的方案。在该方案中,调度器接收到来自于指令源的指令,然后将指令按一定的策略,如顺序,传输给各处理核,各处理核对不同的数据执行相同的指令。各处理核可以是比较简单的结构,例如共用控制电路和寄存器的simd(single instruction multiple data,单指令多数据结构),也可以是比较复杂有一定的自主性的结构,例如有独立的控制电路和寄存器等的simt(single instruction multiple threads,单指令多线程)。但是上述方案一般用于指令级调度,每次只能调度一条或少数几条指令,当需要完成比较大的任务时,需要频繁的调度,降低了调度效率;另外,该方案一般适用于单任务场景,当执行多任务时,各个核需要复用调度器,也降低了调度效率。


技术实现要素:

7.提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
8.为了解决现有技术中处理核的任务调度不灵活、控制复杂的技术问题,本公开实
施例提出如下技术方案:
9.第一方面,本公开实施例提供一种任务调度电路,包括:
10.核资源存储电路、任务包调度电路以及控制电路;其中,
11.所述核资源存储电路,用于存储每个所述处理核的状态信息和算力等级;
12.所述任务包调度电路,用于获取待执行的第一任务包,所述任务包中包括同一任务的至少一条任务指令、任务包之间的配合信息以及所述任务包的算力需求;根据所述任务包之间的配合信息确定需要与所述第一任务包配合执行的所有其他任务包;根据所有所述任务包的所述配合信息、所有所述任务包的所述算力需求从所述核资源存储电路中确认待参与计算的所有空闲处理核,所述空闲处理核的算力等级分别与所述任务包的算力需求一一对应;将所有所述任务包分别发送至对应的所述空闲处理核;
13.控制电路,用于接收所述空闲处理核的状态信息,并根据所述状态信息更新所述核资源存储电路中的所述空闲处理核的状态信息。
14.进一步的,所述核资源存储电路,用于存储每个所述处理核的状态信息和算力等级,包括:
15.所述核资源存储电路,用于存储核资源表,所述核资源表包括处理核标识、与所述处理核标识对应的处理核状态位以及与所述处理核标识对应的处理核的算力等级;其中所述处理核状态位用于表示闲状态或忙状态。
16.进一步的,所述需要配合执行表示多个所述任务包的执行时间之间需要满足预设的关系。
17.进一步的,所述任务包调度电路,根据所述任务包之间的配合信息以及所有所述任务包的算力需求和所述算力等级从所述核资源存储电路中确认空闲处理核,包括:
18.当所述任务包之间的配合信息表示所述任务包不需要与其他任务包配合,根据所述任务包的算力需求从所述核资源存储电路中确认一个具有与所述算力需求对应算力等级的空闲处理核;
19.当所述任务包之间的配合信息表示所述任务包需要与其他任务包配合,根据需要配合的多个任务包的算力需求从所述核资源存储电路中确认多个分别具有与所述算力需求对应的算力等级的空闲处理核。
20.进一步的,所述根据需要配合的多个任务包的算力需求从所述核资源存储电路中确认多个空闲处理核,包括:
21.计算所述多个任务包的算力需求之间的比例关系;
22.从所述核资源存储电路中查找算力等级符合所述比例关系的多个空闲处理核。
23.进一步的,所述任务包调度电路,还用于:
24.修改所述核资源存储电路中所述空闲处理核的状态信息为忙状态。
25.进一步的,所述控制电路,用于接收所述空闲处理核的状态信息,并根据所述状态信息更新所述核资源存储电路中的所述空闲处理核的状态信息,包括:
26.所述控制电路,用于从所述空闲处理核接收任务包执行完毕的信息;根据所述任务包执行完毕的信息修改所述核资源存储电路中所述空闲处理核的状态信息为闲状态。
27.进一步的,所述任务调度电路,还包括:
28.任务指令缓存电路,所述任务指令缓存电路包括与所述处理核一一对应的任务指
令缓存队列,所述任务包缓存队列中的每一个成员用于缓存对应处理核的所述任务包中的任务指令。
29.第二方面,本公开实施例提供一种任务调度方法,用于包括至少两个处理核的系统中,所述方法包括:
30.获取待执行的第一任务包,所述任务包中包括同一任务的至少一条任务指令、任务包之间的配合信息以及所述任务包的算力需求;
31.根据所述任务包之间的配合信息确定需要与所述第一任务包配合执行的所有其他任务包;
32.根据所有所述任务包的所述配合信息、所有所述任务包的所述算力需求从所述核资源存储电路中确认待参与计算的所有空闲处理核,所述空闲处理核的算力等级分别与所述任务包的算力需求一一对应;
33.将所有所述任务包分别发送至对应的所述空闲处理核;
34.接收所述空闲处理核的状态信息,并根据所述状态信息更新所述核资源存储电路中的所述空闲处理核的状态信息。
35.进一步的,所述处理核的状态信息存储于核资源表中,其中所述核资源表包括处理核标识、与所述处理核标识对应的处理核状态位以及与所述处理核标识对应的处理核的算力等级;其中所述处理核状态位用于表示闲状态或忙状态。
36.进一步的,所述所述需要配合执行表示多个所述任务包的执行时间之间需要满足预设的关系。
37.进一步的,所述根据所述任务包之间的配合信息、所有所述任务包的算力需求以及所述算力等级确认空闲处理核,包括:
38.当所述任务包之间的配合信息表示所述任务包不需要与其他任务包配合,根据所述任务包的算力需求从所述核资源存储电路中确认一个具有与所述算力需求对应算力等级的空闲处理核;
39.当所述任务包之间的配合信息表示所述任务包需要与其他任务包配合,根据需要配合的多个任务包的算力需求从所述核资源存储电路中确认多个分别具有与所述算力需求对应的算力等级的空闲处理核。
40.进一步的,所述根据需要配合的多个任务包的算力需求从所述核资源存储电路中确认多个空闲处理核,包括:
41.计算所述多个任务包的算力需求之间的比例关系;
42.从所述核资源存储电路中查找算力等级符合所述比例关系的多个空闲处理核。
43.进一步的,所述方法还包括:修改所述空闲处理核的状态信息为忙状态。
44.进一步的,所述接收所述空闲处理核的状态信息,并根据所述状态信息更新所述核资源存储电路中的所述空闲处理核的状态信息,包括:
45.从所述空闲处理核接收任务包执行完毕的信息;根据所述任务包执行完毕的信息修改所述空闲处理核的状态信息为闲状态。
46.进一步的,所述将所有所述任务包分别发送至对应的所述空闲处理核,包括:将所有所述任务包中的任务指令发送至与所述任务包对应的所述空闲处理核所对应的任务指令缓存队列。
47.第三方面,本公开实施例提供一种芯片,包括:至少一个第一方面中任一项所述的任务调度电路。
48.第四方面,本公开实施例提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现前述第二方面中的任一所述任务调度方法。
49.第五方面,本公开实施例提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述第二方面中的任一所述任务调度方法。
50.第六方面,本公开实施例提供一种计算机程序产品,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述第二方面中的任一所述任务调度方法。
51.第七方面,本公开实施例提供一种计算装置,其特征在于,包括所述第四方面中的任一所述的芯片。
52.本公开实施例公开了一种任务调度电路、方法、电子设备和计算机可读存储介质。其中该任务调度电路包括:核资源存储电路、任务包调度电路以及控制电路;其中,所述核资源存储电路,用于存储每个所述处理核的状态信息和算力等级;所述任务包调度电路,用于获取待执行的第一任务包,所述任务包中包括同一任务的至少一条任务指令、任务包之间的配合信息以及所述任务包的算力需求;根据所述任务包之间的配合信息确定需要与所述第一任务包配合执行的所有其他任务包;根据所有所述任务包的所述配合信息、所有所述任务包的所述算力需求从所述核资源存储电路中确认待参与计算的所有空闲处理核,所述空闲处理核的算力等级分别与所述任务包的算力需求一一对应;控制电路,用于接收所述空闲处理核的状态信息,并根据所述状态信息更新所述核资源存储电路中的所述空闲处理核的状态信息。上述任务调度电路通过处理核的状态信息和任务包之间的配合信息调度任务包,解决了现有技术中的调度效率低的技术问题。
53.上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
54.结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
55.图1为现有技术的示意图;
56.图2为本公开实施例提供的任务调度电路的结构示意图;
57.图3为本公开实施例提供的任务调度方法的流程示意图;
58.图4为本公开实施例提供的任务调度电路的一个示例的结构示意图;
59.图5为本公开实施例提供的任务调度电路的一个示例的工作时序图。
具体实施方式
60.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
61.应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
62.本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
63.需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
64.需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
65.本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
66.图2为本公开实施例提供的任务调度电路的结构示意图。所述任务调度电路,用于包括至少两个处理核的系统中,如图2所示,所述任务调度电路200包括:
67.核资源存储电路201、任务包调度电路202以及控制电路203;
68.其中,所述核资源存储电路201,用于存储每个所述处理核的状态信息和算力等级;
69.所述任务包调度电路202,用于获取待执行的第一任务包,所述任务包中包括同一任务的至少一条任务指令、任务包之间的配合信息以及所述任务包的算力需求;根据所述任务包之间的配合信息确定需要与所述第一任务包配合执行的所有其他任务包;根据所有所述任务包的所述配合信息、所有所述任务包的所述算力需求从所述核资源存储电路中确认待参与计算的所有空闲处理核,所述空闲处理核的算力等级分别与所述任务包的算力需求一一对应;将所有所述任务包分别发送至对应的所述空闲处理核;
70.控制电路203,用于接收所述空闲处理核的状态信息,并根据所述状态信息更新所述核资源存储电路中的所述空闲处理核的状态信息。
71.通过上述任务调度电路,能够通过算力等级给不同类型的处理核分配任务,使得各任务能够找到合适的处理核核执行,既能根据任务的算力需求最快的完成任务,又能最大程度的发挥芯片的性能;此外,任务调度电路通过处理核的状态信息调度任务包给处理核执行,其中任务包中包括同一任务的至少一条任务指令,这样处理核在执行任务包的任务指令时无需考虑任务之间的数据相关性,即提升了多处理核的并行性能,又降低了为解决相关性而进行的复杂设计;处理核可以连续执行同一任务的任务包中的至少一条指令,避免了处理核与任务调度电路之间的频繁通信,提升了处理核运行效率,降低片上网络的负载,降低功耗;各任务包所表示的任务具有独立性,使得多处理核系统能够同时执行完全
不相关的任务,能大大提升系统的灵活性。
72.可选的,所述核资源存储电路201,用于存储每个所述处理核的状态信息和算力等级,包括:所述核资源存储电路201,用于存储核资源表,所述核资源表包括处理核标识、与所述处理核标识对应的处理核状态位以及与所述处理核标识对应的处理核的算力等级;其中所述处理核状态位用于表示闲状态或忙状态。
73.如图2所示,所述核资源表rt中包括处理核标识ci和与处理核标识ci对应的处理核状态位si以及与所述处理核标识ci对应的处理核的算力等级pi,示例性的,所述处理核标识ci为所述处理核在所述包括至少两个处理核的系统中的编号;所述处理核状态位s的值为0或1,其中,0表示所述处理核处于闲状态,可以执行任务;1表示所述处理核处于忙状态,正在执行任务;所述处理核的算力等级pi表示处理核的计算能力,pi可以是所述处理核的实际计算能力,如以gops(giga operations per second)为单位的值,或者pi可以是将计算能力标准化之后的数字,如pi∈[1,10]且pi为整数。
[0074]
进一步的,可选的,所述需要配合执行表示执行各个所述任务包的时间之间需要满足预设的关系。可选的,所述预设关系包括各个所述任务包同时执行完毕。所述多个任务包可以是同一个任务的多个任务包或者是不同任务的多个任务包,在生成所述任务包时,根据任务包或者任务之间的相关关系,在任务包中加入所述配合信息,所述配合信息表示所述任务包需要与哪个任务包同时执行完毕。其中,根据所述任务包之间的配合信息确定需要与所述第一任务包配合执行的所有其他任务包的过程包括:从当前任务包开始,获取需要与当前任务包同时执行完毕的目标任务包的任务编号和任务包编号,之后获取需要与所述目标任务包同时执行完毕的目标任务包的任务编号和任务编号,以此类推,直到获取到所有需要同时执行完毕的任务包为止。
[0075]
可选的,所述任务调度电路200还包括任务包缓存电路204,所述任务包缓存电路204用于缓存从任务源接收到的任务包。其中所述任务包中包括同一个任务的一条或多条指令。其中所述任务可以是完整的任务,如resnet50或者bert等完整的神经网络;或者,所述任务可以是某个完整任务的子任务,如resnet50中的卷积等完整的运算;所述任务或子任务中包括一条或多条任务指令。所述任务源以任务包的形式向所述任务调度电路200发放任务,同一个任务可以分为多个任务包顺序发送给所述任务调度电路,组成任务包流,每个任务包中包括任务编号、任务包编号、配合信息、算力需求以及至少一条任务指令。如下表1所示为任务包的数据格式:
[0076]
t_idt_rp_idcp_idp_body
[0077]
(表1)
[0078]
其中t_id表示任务编号,每个任务有独立的任务编号,属于同一个任务的任务包的任务编号相同;t_r表示任务包的算力需求,数字越大表示对算力的需求越高,其中所述算力需求表示执行所述任务包所需要的处理核的计算能力,在本公开中所述算力需求的表示方法与所述算力等级相同;p_id表示任务包编号,表示任务包在所述t_id编号的任务中的任务包编号;cp_id表示任务包之间的配合信息,由任务编号和任务包编号共同组成;p_body表示任务包内容,即所述任务或者子任务的任务指令。
[0079]
可选的,所述任务包调度电路202用于从所述任务包缓存电路204读取所述任务包。在读取到任务包之后,从所述任务包中读取所述任务包的算力需求t_r以及任务包之间
的配合信息cp_id,如果所述cp_id表示所述任务包不需要与其他任务包配合,根据所述任务包的算力需求从所述核资源存储电路中确认一个具有与所述算力需求对应算力等级的空闲处理核;如果所述cp_id表示所述任务包需要与其他任务包配合,根据需要配合的多个任务包的算力需求从所述核资源存储电路中确认多个分别具有与所述算力需求对应的算力等级的空闲处理核。
[0080]
可选的,使用cp_id=0表示所述任务包不需要与其他任务包配合,此时根据任务算力需求t_r从所述核资源存储电路201中的核资源表rt确定出具有满足该任务算力需求的算力等级的一个空闲处理核。示例性的,所述核资源表rt如下:
[0081]
cipisi110220330441
[0082]
所述核资源表rt表示系统中包括4个处理核,分别为c1、c2、c3和c4,它们的算力等级分别为1、2、3、4,他们的状态分别为闲状态、闲状态、闲状态和忙状态。
[0083]
可选的,当cp_id≠0,表示所述任务包需要与其他任务包配合,此时cp_id的值表示需要与当前任务包配合的任务包的任务编号和任务包编号,示例性的,cp_id=t_id_p_id,如cp_id=2_1,表示需要与当前任务包配合的任务包为编号为2的任务的第1个任务包,此时任务包调度电路202继续从所述任务包缓存电路204读取任务编号为2,任务包编号为1的任务包。之后继续判断该任务包是否需要与其他任务包配合,如果需要,则继续获取后续的任务包,直至获取的任务包的cp_id=0为止,得到需要相互配合的所有任务包。之后,根据需要配合的多个任务包的算力需求从所述核资源存储电路中确认多个空闲处理核。可选的,所述需要配合的多个任务包的算力需求从所述核资源存储电路中确认多个空闲处理核,包括:计算所述多个任务包的算力需求之间的比例关系;从所述核资源存储电路中查找算力等级符合所述比例关系的多个空闲处理核。示例性的,有3个需要相互配合的任务包,其算力需求分别为1、2和3,则其算力需求之间的比例关系为1:2:3,则需要同时查找到3个空闲处理核,且这3个空闲处理核的算力等级的比例关系为1:2:3,当查找到算力等级符合所述比例关系的3个空闲处理核之后,将所述3个任务包分别发送至对应的算力等级的处理核。如上述示例所示,p1:p2:p3=1:2:3,且c1、c2和c3均为空闲处理核,因此将3个任务包分别发送至c1、c2和c3执行。可以理解的,在上述根据多个任务包的算力需求确定多个分别具有与所述算力需求对应的算力等级的空闲处理核的过程中,所述与所述算力需求对应的算力等级包括算力等级与算力需求不相等的情况,如系统中包括算力等级满足所述比例关系的空闲处理核,但是所述空闲处理核的算力等级高于或者低于对应的算力需求,此时为了防止长时间的等待,可以将所述多个空闲处理核作为执行所述多个任务包的空闲处理核。这样,任务包能够更及时的执行,并且多个任务包也依然能同时执行完毕。
[0084]
可选的,当有多个符合标准的空闲处理核时,可以按照预先设置的调度策略确定一个或多个空闲处理核,示例性的,可以按照处理核的标识的顺序确定一个空闲处理核或确定多个空闲处理核。
[0085]
或者,可以按照随机的调度策略,即先确定出所有空闲的处理核,之后将任务包随
机发送至其中一个符合标准的处理核。可以理解的,上述调度策略仅为举例,不构成对本公开的限制。
[0086]
可选的,所述任务包调度电路202,还用于:修改所述核资源存储电路中所述空闲处理核的状态信息为忙状态。在将任务包发送至所述空闲处理核之后,所述任务包调度电路202用于修改所述核资源表rt中的所述空闲处理核的状态信息,具体的,所述任务包调度电路202将所述空闲处理核在所述核资源表rt中的状态修改为忙状态。如上述示例中,确定了处理核c1为空闲处理核,可以在任务包被发送至所述处理核c1之前或之后,将处理核c1所对应的状态的值修改为1,以表示处理核c1正在执行任务。当多个任务包配合时,所述任务包调度电路202将所查到的算力等级符合所述比例关系的多个空闲处理核的状态信息均修改为忙状态。
[0087]
可选的,所述控制电路203,用于接收所述空闲处理核的状态信息,并根据所述状态信息更新所述核资源存储电路201中的所述空闲处理核的状态信息,包括:所述控制电路203,用于从所述空闲处理核接收任务包执行完毕的信息;根据所述任务包执行完毕的信息修改所述核资源存储电路201中所述空闲处理核的状态信息为闲状态。所述空闲处理核在执行完所述任务包之后,发送任务包执行完毕的信息,所述任务包调度电路202在接收到所述任务包执行完毕的信息之后,修改所述核资源存储电路中的核资源表rt中的所述空闲处理核的状态信息为闲状态。
[0088]
可选的,所述任务调度电路200,还包括:任务指令缓存电路205,所述任务指令缓存电路包括与所述处理核一一对应的任务指令缓存队列,所述任务包缓存队列中的每一个成员用于缓存对应处理核的所述任务包中的任务指令。如图2所示,任务指令缓存电路205中包括任务指令缓存队列iqi,其中iqi与ci对应。当任务包调度电路202确定出空闲处理核ci,将读取到的任务包中的任务指令发送至与ci对应的任务指令缓存队列iqi中,之后ci从所述任务指令缓存队列获取所述任务指令并执行以完成对应的任务或子任务。
[0089]
图3为本公开实施例所提供的任务调度方法的流程示意图。所述任务调度方法用于包括至少两个处理核的系统中,所述任务调度方法包括:
[0090]
步骤s301,获取待执行的第一任务包,所述任务包中包括同一任务的至少一条任务指令、任务包之间的配合信息以及所述任务包的算力需求;
[0091]
步骤s302,根据所述任务包之间的配合信息确定需要与所述第一任务包配合执行的所有其他任务包;
[0092]
步骤s303,根据所有所述任务包的所述配合信息、所有所述任务包的所述算力需求从所述核资源存储电路中确认待参与计算的所有空闲处理核,所述空闲处理核的算力等级分别与所述任务包的算力需求一一对应;
[0093]
步骤s304,将所有所述任务包分别发送至对应的所述空闲处理核;
[0094]
步骤s305,接收所述空闲处理核的状态信息,并根据所述状态信息更新所述核资源存储电路中的所述空闲处理核的状态信息。
[0095]
进一步的,所述处理核的状态信息存储于核资源表中,其中所述核资源表包括处理核标识、与所述处理核标识对应的处理核状态位以及与所述处理核标识对应的处理核的算力等级;其中所述处理核状态位用于表示闲状态或忙状态。
[0096]
进一步的,所述需要配合执行表示多个任务包的执行时间之间需要满足预设的关
系。
[0097]
进一步的,所述根据所述任务包之间的配合信息、所有所述任务包的算力需求以及所述算力等级确认空闲处理核,包括:
[0098]
当所述任务包之间的配合信息表示所述任务包不需要与其他任务包配合,根据所述任务包的算力需求从所述核资源存储电路中确认一个具有与所述算力需求对应算力等级的空闲处理核;
[0099]
当所述任务包之间的配合信息表示所述任务包需要与其他任务包配合,根据需要配合的多个任务包的算力需求从所述核资源存储电路中确认多个分别具有与所述算力需求对应的算力等级的空闲处理核。
[0100]
进一步的,所述根据需要配合的多个任务包的算力需求从所述核资源存储电路中确认多个空闲处理核,包括:
[0101]
计算所述多个任务包的算力需求之间的比例关系;
[0102]
从所述核资源存储电路中查找算力等级符合所述比例关系的多个空闲处理核。
[0103]
进一步的,所述方法还包括:修改所述空闲处理核的状态信息为忙状态。
[0104]
进一步的,所述接收所述空闲处理核的状态信息,并根据所述状态信息更新所述核资源存储电路中的所述空闲处理核的状态信息,包括:
[0105]
从所述空闲处理核接收任务包执行完毕的信息;根据所述任务包执行完毕的信息修改所述空闲处理核的状态信息为闲状态。
[0106]
进一步的,所述将所有所述任务包分别发送至对应的所述空闲处理核,包括:将所有所述任务包中的任务指令发送至与所述任务包对应的所述空闲处理核所对应的任务指令缓存队列。
[0107]
可以理解的,所述任务调度方法由所述任务调度电路执行,其每个步骤的具体实现方式可以参见对任务调度电路中的描述,在此不再赘述。
[0108]
图4所述为本公开实施例所述的任务调度电路的一个示例。如图4所示,在该示例中,任务调度电路用于包括c1和c2两个处理核的系统中,c1的算力等级为1,c2的算力等级为2,所述任务调度电路包括任务包缓存电路tb,任务包调度电路ts,控制电路ctrl,核资源表rt以及与处理核c1对应的任务指令缓存队列iq1,与处理核c2对应的任务指令缓存队列iq2。处理核c1和c2的处理核标识、算力等级以及状态信息被存储于核资源表rt中。
[0109]
在该示例中,任务源中包括4个任务t1、t2、t3和t4,这4个任务的id分别为1、2、3、4,t1和t3所需的算力需求为1,t2和t4所需的算力需求为2;每个任务包括一个任务包,每个任务包中包括该任务的程序中的至少一条任务指令。其中,所述任务包的具体内容包括:
[0110]
t_idt_rp_idcp_idp_body1112_1program12210program23114_1program34210program4
[0111]
其中,program1、program2、program3和program4分别表示t1、t2、t3和t4中的至少一条任务指令。
[0112]
根据上述任务包中的cp_id,可以确定任务包1_1需要与任务包2_1同时执行完毕,
任务包3_1需要与任务包4_1同时执行完毕。其中,由于上述任务包的算力需求不同,因此需要配合信息和算力需求确定空闲处理核。c1和c2执行所述4个任务的时序图如图5所示。
[0113]
结合图4和图5,所述任务调度电路调度所述4个任务的过程如下:
[0114]
任务源将4个任务的任务包按照顺序发送至所述任务调度电路的任务包缓存电路tb中。
[0115]
ts按照顺序从所述tb中读取任务包。
[0116]
第一个任务包是t_id为1的任务的任务包,由于cp_id的值为2_1,因此ts继续从tb中读取t_id为2的任务的任务包,两个任务包的tr的比值为1:2,因此从rt中查找算力等级比值为1:2的两个空闲处理核c1和c2,在rt中c1和c2的状态s1=0,s2=0,并且p1:p2=1:2,因此c1和c2满足t1和t2的配合信息和算力需求,此时将t1的任务包中的任务指令发送至与c1对应的任务指令缓存队列iq1,将t2的任务包中的任务指令发送至与c2对应的任务指令缓存队列iq2,c1在从iq1中获取到任务指令之后执行所述任务指令,c2在从iq2中获取到任务指令后执行所述任务指令。ts在发送所述任务指令至c1和c2之前或者之后,将rt中的s1设置为1,s2设置为1。
[0117]
ts继续从所述tb中读取t3的任务包,由于t3的任务包的cp_id为4_1,ts继续从tb中读取t_id为4的任务的任务包,两个任务包的tr的比值为1:2,因此从rt中查找算力等级比值为1:2的两个空闲处理核,但是此时rt中没有空闲处理核,因此ts进入等待状态。
[0118]
之后,当c1和c2同时执行完t1和t2的任务包,并发送执行完毕的信息至ctrl,ctrl根据所述处理核的标识以及执行完毕的信息将rt中的s1设置为0,将s2设置为0。
[0119]
当ts侦测到有空闲处理核之后,根据上述两个任务包的tr比值1:2查询算力等级符合所述比值的空闲处理核,得到空闲处理核c1和c2满足t3和t4的配合信息和算力需求,此时将t3的任务包中的任务指令发送至与c1对应的任务指令缓存队列iq1,将t4的任务包中的任务指令发送至与c2对应的任务指令缓存队列iq2,c1在从iq1中获取到任务指令之后执行所述任务指令,c2在从iq2中获取到任务指令后执行所述任务指令。ts在发送所述任务指令至c1和c2之前或者之后,将rt中的s1设置为1,s2设置为1。
[0120]
之后,由于tb中没有其他任务包,因此ts不再从tb中读取任务包,进入空闲状态。
[0121]
之后,处理核c1和处理核c2同时执行完毕t3和t4的任务包,并发送执行完毕的信息至ctrl,ctrl根据所述处理核的标识以及执行完毕的信息将rt中的s1设置为0,将s2设置为0。
[0122]
至此,4个任务都执行完毕。系统等待新的任务的任务包以执行新的任务。
[0123]
上述示例中,给出了包括2个算力等级不同的处理核的方案,在实际实现中,可以包括更多的算力不同的处理核以及更多的任务的任务包,以实现更加灵活复杂的任务调度,在此不再赘述。
[0124]
本公开实施例还提供一种芯片,包括至少一个上述实施例中所述的任一所述的任务调度电路。
[0125]
本公开实施例还提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现实施例中的任一所述任务调度方法。
[0126]
本公开实施例还提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计
算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述实施例中的任一所述任务调度方法。
[0127]
本公开实施例还提供一种计算机程序产品,其中,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述实施例中的任一所述任务调度方法。
[0128]
本公开实施例还提供一种计算装置,其特征在于,包括所述实施例中的任一所述的芯片。
[0129]
本公开附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0130]
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
[0131]
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑设备(cpld)等等。
[0132]
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献