任务分配方法、装置、电子设备及计算机可读存储介质与流程

文档序号:27133556发布日期:2021-10-29 22:26阅读:67来源:国知局
任务分配方法、装置、电子设备及计算机可读存储介质与流程

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


背景技术:

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


技术实现要素:

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.图1a-1b为本公开现有技术的示意图;
54.图2a和图2b为本公开提供的任务分配方法的实施例的流程示意图;
55.图3为本公开提供的芯片的结构示意图;
56.图4为本公开提供的芯片的一个实例的结构示意图;
57.图5为本公开提供的芯片实例所执行的神经网络计算任务的示意图;
58.图6为本公开提供的芯片实例执行任务分配方法时处理核流水计算过程示意图;
59.图7为本公开提供的芯片实例执行任务分配方法时微处理器和处理核的时序图。
具体实施方式
60.下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
61.应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
62.本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
63.需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
64.需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
65.本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
66.图2a为本公开实施例提供的任务分配方法实施例的流程图,本实施例提供的该任务分配方法用于芯片中,其中所述芯片包括主处理核和至少一个从处理核。其中。如图2a所示,该方法包括如下步骤:
67.步骤s201,响应于接收到同步信号,所述主处理核执行任务更新指令以获取待执行的任务段,所述待执行的任务段为所述任务的一部分;
68.在本公开实施例中,在芯片的运行过程中,会预先指定某一个处理核作为主核mc(master core),其他处理核均为从处理核sc(slave core)。所述主处理核除了执行自身所需要执行的任务段之外,还用于执行任务更新程序以给芯片的处理核分配任务段。其中所述任务更新程序可以使用动态分配规则,此时任务段的分配由主处理核根据实际情况来动态分配给一个或多个待执行任务的处理核;所述任务更新程序还可以使用预先设置的固定分配规则,此时任务段如何分配,分配给哪些处理核是预先确定好的。
69.所述任务段为完整任务的一部分,相应的,根据上述主处理核所运行的任务更新程序的不同,所述完整任务可以是被动态或者预先的划分为多个任务段以便于待执行任务的处理核存储和执行。当所述接收到所述同步信号时,所述主处理核根据接收到的同步信号执行预先存储在所述主处理核中的任务更新指令,以确定芯片中待执行任务的各个处理核以及各个处理核所要执行的待执行的任务段。其中,所述待执行任务的各个处理核包括所述主处理核和所述至少一个从处理核中的一个或多个。
70.可选的,所述步骤s201包括:响应于接收到同步信号,所述主处理核将接收到的所述同步信号的次数作为执行所述任务更新指令的参数以生成任务段获取指令;所述主处理核发送所述任务段获取指令以获取对应的待执行的任务段。在该实施例中,主处理核中存储有预先加载的分配策略,所述分配策略设置了某个同步周期中,哪个或哪些处理核需要更新其所执行的任务段,所述主处理核每次接收到所述同步信号均会对所述同步信号进行计数,并根据计数的结果判断是否需要给处理核分配任务段。示例性的,在上述可选实施例中将同步信号的次数作为所述任务更新指令的参数,执行所述任务更新指令以获取任务段获取指令的参数,并使用该任务段获取指令的参数配置任务段获取指令。在本公开实施例中,所述任务段获取指令所获取到的待执行的任务段可以相同也可以不同。
71.在一个实施例中,所述主处理核还包括同步计数器或者所述主处理核中的任务更新程序中包括同步计数器,在接收到同步信号之后,还包括:所述主处理核启动同步计数器以记录所述主处理核所接收到的所述同步信号的次数。所述主处理核可以根据所述同步信号的次数确定待执行任务的处理核以及待执行的任务段。
72.可选的,所述主处理核执行任务更新指令以指示存储控制器将所述待执行的任务段从外部存储器中读出并发送至对应的处理核。
73.在多数时间里,所述主处理核执行其自身的任务段,所述主处理核中存储有任务更新程序,所述任务更新程序中包括任务更新指令,当接收到所述同步信号,所述主处理核执行所述任务更新程序中的任务更新指令以产生任务段获取指令,所述任务更新指令例如可以为通用的更新指令,在执行时所述主处理核获取该指令的参数,例如:任务更新指令所指示的待执行任务的处理核、待执行的任务段,及待执行的任务段在外部存储器中的存储
位置等。
74.示例性的,所述存储控制器为存储管理引擎(mme,memory management engine),所述存储管理引擎例如可以为dmac(direct memory access controller,直接存储器访问控制器),还可以是其他能实现存储管理功能的硬件或者软件。
75.主处理核执行到任务更新指令,生成能够被所述mme执行的任务段获取指令,mme接收所述任务段获取指令,并对其进行解码并执行,以从外部存储器中获取对应的待执行的任务段并发送至对应的处理核。其中,从外部存储器中获取对应的待执行的任务段并发送至对应的处理核的过程无需所述主处理核参与。
76.示例性的,每次接收到所述同步信号,所述主处理核执行所述任务更新指令,根据同步信号的次数确定待执行任务的处理核,即需要更新任务段的处理核,确定待执行的任务段以及待执行的任务段的存储位置等参数,使用这些参数配置所述任务段获取指令。
77.可选的,所述完整任务可以被预先划分为多个任务段,即预先设置了每个任务段的大小和各任务段存储的首地址,当执行任务段获取指令时,所述mme可以根据任务段的大小和首地址从所述外部存储器中获取所述待执行的任务段。
78.可选的,所述完整任务段可以被动态的划分为多个任务段,即任务段的数量和大小在分配之前是不确定的。此时,所述主处理核指示mme将所述待执行的任务段从外部存储器中读出并发送至所述待执行任务的处理核,包括:所述主处理核获取所述待执行任务的处理核的存储空间的大小;所述主处理核指示所述mme将与所述待执行任务的处理核的存储空间大小相匹配的任务段从所述存储器中读出并发送至所述处理核中。每个处理核都有其自身的存储空间,该存储空间的可用大小可能不相同,因此在主处理核指示给处理核分配任务段时,主处理核先获取待执行任务的处理核的存储空间的大小,通过所述存储空间的大小确定任务段的大小,之后通过任务段的首地址和任务段的大小来决定发送给处理核的任务段在整个任务中的范围。
79.示例性的,在所述从处理核的存储空间中设置一个存储位置用于存储当前从处理核的剩余存储空间,主处理核在执行所述任务更新指令之前从所述位置上获取从处理核的剩余存储空间;或者主处理可以在其自身的存储空间中设置一个存储位置存储每个处理核的剩余存储空间,每个处理核的初始存储空间是已知的,任务段的分配由主处理核来执行,因此主处理核可以根据任务段的分配情况计算出每个处理核的剩余存储空间。在当前的任务段确定之后,下一任务段的首地址也就确定,用于下次任务段的分配。
80.可选的,所述的动态分配可以每次都动态分配,即每次执行任务段分配指令时都获取待执行任务的处理核的存储空间的大小;或者所述动态分配还可以是仅在第一次动态分配,即认为处理核的存储空间大小在执行所述任务时是固定的,在第一次分配任务段时,根据所述处理核的存储空间大小和完整任务的大小将所述完整任务分成多个任务段,之后每次按照此次划分的任务段的大小来给处理核分配任务段。
81.步骤s202,待执行任务的处理核接收所述待执行的任务段;
82.在该步骤中,所述待执行任务的处理核为所述主处理核和所述至少一个从处理核中的一个或多个。在该步骤中,所述待执行任务的处理核接收所述存储控制器发送来的所述待执行的任务段。
83.示例性的,所述存储控制器通过片上网络(noc)与所述芯片中的所有处理核连接,
在该步骤中,所述待执行任务的处理核通过所述片上网络分别接收所述待执行的任务段。
84.可选的,在一个实施例中,所述主处理核为待执行任务的处理核之一,则在该步骤中,待执行任务的处理核接收所述待执行的任务段,包括:,主处理核在执行完所述任务更新指令之后开始接收所述待执行的任务段,而其他待执行任务的处理核在接收到所述同步信号之后直接进入接收所述待执行的任务段的状态,等待mme将所述待执行的任务段发送至所述待执行任务的处理核
85.可选的,在另一个实施例中,所述主处理核不是待执行任务的处理核之一,则在该步骤中,待执行任务的处理核接收所述待执行的任务段,包括:待执行任务的处理核在接收到所述同步信号之后进入接收所述待执行的任务段的状态,等待mme将所述待执行的任务段发送至所述待执行任务的处理核。
86.步骤s203,所述待执行任务的处理核执行所述待执行的任务段;
87.在接收到所述待执行的任务段之后,所述待执行任务的处理核执行所述待执行的任务段以产生输出数据。示例性的,所述输出数据为所述完整任务的输出结果的一部分,多个同步周期执行的所述待执行的任务段所产生的各个输出数据经过处理形成所述完整任务的输出结果。
88.步骤s204,响应于执行完所述待执行的任务段,所述待执行任务的处理核发送同步请求信号,其中所述同步请求信号用于触发生成所述同步信号。
89.在执行所述待执行的任务段时,各个所述待执行任务的处理核在待执行的任务段执行结束时,分别发送同步请求信号,其中所述同步请求信号用于触发同步信号的产生。
90.可以理解的,所述同步信号可以由芯片中的同步信号发生单元产生,此时同步信号发生单元为专门的部件,其在启动时触发产生第一个同步信号,之后在接收到所有处理核发送来的同步信号请求之后,触发产生同步信号。
91.可选的,所述同步信号发生单元可以是程序单元,此时所述同步信号由所述程序单元控制产生,此时需要一个程序,在启动之后产生第一个同步信号,之后在接收到所有处理核发送来的同步信号请求的消息包之后,触发产生同步信号。
92.在步骤s204之后,当主处理核接收到所述同步信号,其调用任务更新指令,将包括待执行任务的处理核、任务段地址或大小等的下一任务段的参数加入任务段获取指令中,该任务段获取指令用于指示发送下一待执行的任务段至所述参数指示的待执行任务的处理核。
93.如图2b所示,在一个实施例中,上述任务分配方法还包括:
94.步骤s205,所述待执行任务的处理核根据接收到的所述待执行的任务段发送数据获取指令;
95.步骤s206,根据所述数据获取指令,所述待执行任务的处理核接收各自的输入数据。
96.可以理解的,上述步骤s205和步骤s206在步骤s202之后以及步骤s203之间执行,即在所述待执行任务的处理核执行所述待执行的任务段之前,先获取所述待执行的任务段所对应的输入数据。
97.同样的,所述输入数据也是通过向所述存储管理器发送数据获取指令,所述存储管理器接收所述数据获取指令之后,对所述数据获取指令进行解码、执行获取对应的输入
数据并发送至对应的处理核。
98.可选的,所述步骤s206包括:将所述待执行任务的处理核的标识作为所述数据获取指令的参数以获取所述主处理核和所述从处理核各自的输入数据。示例性的,在所述步骤s205和步骤s206中,所述待执行任务的处理核将各自的标识作为所述数据获取指令的参数来配置所述数据获取指令,之后将带有配置参数的数据获取指令发送给所述存储管理器,以从外部存储器中获取与各个待执行任务的处理核的所述标识对应的数据并发送至与所述标识对应的处理核作为所述处理核执行所述任务段时的输入数据。
99.可以理解的,根据不同的应用场景,不同的处理核的输入数据可以相同也可以不同。示例性的,为了加快计算速度,多个处理核并行的执行同一个任务段,以快速得到该任务段的输出数据,此时,各个处理核的输入数据不同以得到更好的并行计算的效果。示例性的,在另一个场景下,多个处理核分别执行不同的任务段,此时可能同一个输入数据需要多个任务段分别处理,此时多个处理核获取到的输入数据是相同的。
100.在该实施例中,主处理核接收到第一个同步信号时,该同步信号不需要同步请求信号的触发,此时主处理核调用并执行任务更新指令。任务更新指令可以将不同任务分成不同的段数,并分给不同的处理核并行处理。示例性的,所述芯片中执行所述任务的处理核为两个,一个主处理核一个从处理核,任务更新指令可以将完整的任务分成两个任务段,每一个任务段都同时交给所述主处理核和所述从处理核,由所述主处理核和所述从处理核分别执行。
101.在该可选实施例中,所述同步请求信号包括所述至少两个执所述任务的处理核所生成的所述同步请求信号。也就是说,当有多个处理核时,每个处理核都会发送自己的同步请求信号。
102.进一步的,所述同步请求信号用于触发生成所述同步信号,包括:响应于所述待执行任务的处理核都发送了所述同步请求信号,触发生成所述同步信号。在该实施例中,当每个待执行任务的处理核都发送了同步请求信号之后,才生成所述同步信号。
103.上述实施例公开了一种任务分配方法,用于芯片中,其中所述芯片包括主处理核和至少一个从处理核,其中该任务分配方法包括:响应于接收到同步信号,所述主处理核执行任务更新指令以获取待执行的任务段,所述待执行的任务段为所述任务的一部分;待执行任务的处理核接收所述待执行的任务段,其中所述待执行任务的处理核包括所述主处理核和/或所述从处理核;所述待执行任务的处理核执行所述待执行的任务段;响应于执行完所述待执行的任务段,所述待执行任务的处理核发送同步请求信号,其中所述同步请求信号用于触发生成所述同步信号。通过上述方法中芯片中的主处理核根据同步信号来分配处理核所执行的任务段,解决了现有技术中的处理核的任务分配不灵活、控制复杂的技术问题。
104.在上文中,虽然按照上述的顺序描述了上述方法实施例中的各个步骤,本领域技术人员应清楚,本公开实施例中的步骤并不必然按照上述顺序执行,其也可以倒序、并行、交叉等其他顺序执行,而且,在上述步骤的基础上,本领域技术人员也可以再加入其他步骤,这些明显变型或等同替换的方式也应包含在本公开的保护范围之内,在此不再赘述。
105.图3为本公开实施例所提供的芯片的结构示意图。如图3所示所述芯片300,包括:主处理核301,至少一个从处理核302以及存储管理器303。其中,所述主处理核,用于响应于
接收到同步信号,执行任务更新指令以获取待执行的任务段,所述待执行的任务段为所述任务的一部分;所述存储管理器,用于基于所述任务更新指令,从外部存储器取出与所述任务更新指令所指示的所述待执行的任务段,并将所述待执行的任务段发送至待执行任务的处理核;其中,所述待执行任务的处理核包括所述主处理核和/或所述从处理核;所述待执行任务的处理核用于接收所述待执行的任务段;所所述待执行任务的处理核还用于执行所述待执行的任务段;所述待执行任务的处理核还用于响应于执行完所述待执行的任务段,分别发送同步请求信号,其中所述同步请求信号用于触发生成所述同步信号。其中所述主处理核还包括内部存储空间pram,用于存储任务更新程序和所述任务段;所述从处理核也包括内部存储空间pram,用于存储所述任务段。
106.其中,所述芯片300还可以包括同步信号发生单元304,所述同步信号发生单元304连接所述多个处理核,用于产生同步信号sync,同步信号发送到每一个所述多个处理核。
107.可选的,所述同步信号发生单元为专门的硬件部件,其在启动时产生第一个同步信号,之后在接收到所有待执行任务的处理核发送来的同步信号请求之后,触发产生同步信号。
108.可选的,所述同步信号发生单元为程序单元,此时所述同步信号由所述程序单元控制产生,此时需要一个程序,在启动之后产生第一个同步信号,之后在接收到所有待执行任务的处理核发送来的同步信号请求的消息包之后,触发产生同步信号。
109.在可选的实施方式中,同步信号发生单元还可以仅与主处理核相连,从处理核的同步通过主处理核指示mme来实现,在此不做赘述。
110.下面以附图3所示的方式进行描述和说明。该实施例中产生同步信号的过程与方法实施例中相同,在此不再赘述。在该实施例中,所有的处理核均为待执行任务的处理核。
111.如图3所示,当满足第一预设条件时,各个所述待执行任务的处理核分别发送同步请求信号sq_1、sq_2、
……
sq_n,当所述同步信号发生单元接收到所有待执行任务的处理核发送的所述同步请求信号之后,生成所述同步信号sync,该同步信号由同步信号发生单元同时发送给各个待执行任务的处理核。
112.进一步的,所述主处理核还用于:执行任务更新指令以发送任务段获取指令到存储管理器;所述存储管理器用于执行所述任务段获取指令以将所述待执行的任务段从外部存储器中读出并发送至所述待执行任务的处理核。
113.进一步的,所述待执行任务的处理核还用于根据接收到的所述待执行的任务段发送数据获取指令;根据所述数据获取指令,接收各自的输入数据。
114.进一步的,所述待执行任务的处理核还用于将所述待执行任务的处理核的标识作为所述数据获取指令的参数以获取所述待执行任务的处理核各自的输入数据.
115.进一步的,所述同步请求信号用于触发生成所述同步信号,包括:
116.响应于所述待执行任务的处理核都发送了所述同步请求信号,触发生成所述同步信号。
117.进一步的,所述主处理核还用于响应于接收到同步信号,将接收到的所述同步信号的次数作为执行所述任务更新指令的参数以生成任务段获取指令;发送所述任务段获取指令以获取对应的待执行的任务段。
118.进一步的,在所述接收到所述同步信号之后,所述主处理核还用于启动同步计数
器以记录所述主处理核所接收到的所述同步信号的次数。
119.如图3所示,可选的,每个同步周期的待执行任务的处理核及其所执行的任务段由系统预先分配,并生成任务更新程序的分配参数,所有同步周期所对应的分配参数形成所述的固定的分配规则。主处理核301执行所述任务更新程序以给所述待执行任务的处理核分配对应的任务段;示例性的,所述任务更新程序的分配参数为在所述芯片外预先编译生成的分配参数,其决定了每个时钟周期的待执行任务的处理核以及每个待执行任务的处理核所对应的待执行的任务段,主处理核作为该任务更新程序的执行单元,执行任务更新程序中的任务更新指令以给每个待执行任务的处理核分配待执行的任务段。在该情况下,主处理核是一个执行单元,其只需要按照预先的设置给每个同步周期的待执行任务的处理核分配待执行的任务段即可。
120.可选的,每个同步周期的待执行任务的处理核及其所执行的任务段也可以由任务更新程序动态决定,此时主处理核301动态获取所述分配参数。示例性的,所述动态的分配规则为根据每个周期中的各个处理核的具体状态,如剩余存储空间的大小等,来确定每个周期中的待执行任务的处理核以及对应的待执行的任务段的大小和/或存储地址等。在该情况下,主处理核是一个计算单元,其需要根据预先设置的动态分配规则,根据当前同步周期中各个处理核的状态来计算得到当前同步周期中的待执行任务的处理核以及对应的任务段的大小和/或存储地址等。
121.以系统预先分配为例,所述分配参数设置在外部存储器中或者其他主机中,当芯片初始化时,主处理核从外部存储器中或者其他主机中读取所述分配参数。一个完整任务的分配参数包括执行完所述完整任务的每个同步周期所使用的待执行任务的处理核以及待执行任务的处理核所要执行的待执行的任务段。在第一个同步周期,主处理核接收到同步信号,执行任务更新指令,第一个同步周期的分配参数写入任务段获取指令,分配参数包括第一个同步周期待执行任务的处理核、待分配的任务段以及待分配的任务段的存储地址。主处理核将任务段获取指令发送至mme,以使得所述mme执行所述任务段获取指令时从外部存储器305中读取相应的任务段并发送给对应的待执行任务的处理核。
122.处理核包括内部存储空间pram,用于存储所述任务段;任务段由一系列指令组成,所述处理核从所述pram中读取指令、解码指令再执行指令,不再需要从外部存储器中读取指令。每个处理核的pram的存储空间有限,因此一个完整的任务需要分成多个任务段来执行,处理核执行完任务段的时候会执行同步信号请求指令以发送同步信号请求给所述同步信号发生单元。
123.同步信号发生单元在收到每个待执行任务的处理核的同步信号请求之后,产生新的同步信号并发送给发送同步请求信号的各个处理核;当主处理核接收所述同步信号之后,判断收到的同步信号的次数,执行任务更新指令。根据同步信号的次数确定分配参数,所述分配参数确定待执行任务的处理核和待执行的任务段,将分配参数写入任务段获取指令以使得所述存储控制器执行所述任务获取指令将对应的任务段从外部存储器中取出发送至对应的处理核中。在不执行任务更新指令的其他时间里,所述主处理核可以执行其自身的任务段,而无需像专用调度器那样空闲,提高了主处理核的执行效率。
124.以下以一个实际应用场景来说明本公开中的任务分配过程。如图4所示为本公开实施例中所述的芯片的一个实例,在该实例中,所述芯片包括两个处理核c1和c2,其中主处
理核为c1,从处理核为c2,一个存储控制器,其中存储器与外部存储器连接。其中,所述芯片还可以包括同步信号发生单元,可以理解的,所述同步信号发生单元可以实现为一个芯片内部的硬件也可以实现为一个同步信号发生的程序,在此不再赘述。示例性的,所述处理核c1和c2的pram大小均为36kb,其中c1为主处理核,其pram中有4kb的任务更新程序,该任务更新程序为常驻程序,在任务执行期间不发生改变,新任务执行时可以通过初始化主处理核进行更新,另外的32kb用于存储其他程序,即待执行的任务段。在该实例中,所述c1和c2执行相同的任务段。
125.在一个实施例中,所述任务为一个两层的神经网络的计算任务,如图5所示,该示例中的神经网络包括两层,layer1和layer2,其中layer1接收输入数据并计算,将计算结果输入layer2,layer2对从layer1输入的数据进行计算得到最终的输出。第一层的计算程序p1的大小是64kb,第二层的计算程序p2的大小也64kb,那么整个网络可以按照任务分配策略分配给两个处理核进行并行流水计算,即每一层被分为两个任务段来执行,c1和c2同时负责每层网络的两个任务段的执行,各自获取输入数据,执行相应的任务段。在第一个时间周期中,c1接收第一层的第一段输入数据,c1根据第一层的第一个任务段处理所述第一层的第一段输入数据;c2接收第一层的第二段输入数据,c2根据第一层的第一个任务段处理所述第一层的第二段输入数据。在第二个时钟周期中,c1将所述c1在第一个周期的输出数据作为在第二个时钟周期中的输入数据,并根据第一层第二个任务段进行处理;同样的,c2将所述c2在第一个周期的输出数据作为在第二个时钟周期中的输入数据,并根据第一层第二个任务段进行处理;同样的,在第三和第四个时钟周期,c1和c2分别将一个时钟周期的输出数据作为本时钟周期的输入数据,根据第二层的第一个任务段和第二个任务段进行处理。最终将第四个时间周期中两个处理核的输出合并为最终的输出结果。
126.其流水计算的过程如图6所示,在t1时刻,c1接收第一层的第一段输入数据,并按照第一层的第一个任务段对所述输入数据进行处理,将处理结果缓存;在t1时刻,c2接收第一层的第二段输入数据,按照第一层的第一个任务段对所述输入数据进行处理,将处理结果缓存。在t2时刻,c1和c2更新第一层的第二个段计算程序,并根据第一层的第二个段对所述输入数据进行处理得到处理结果,将t1和t2得到的处理结果合并成第一层的输出结果;继续上述过程,在下两个时间周期中更新计算程序为第二层的任务段,将第一层的输出结果作为第二层的输入数据得到第二层的输出结果;最终整合第二层的输出结果得到完整的输出结果。
127.图7为处理核任务分配和执行的时序图。该示例中一个任务被分成两个任务段p_1和p_2执行。如图7所示,初始时,同步信号发生单元产生第一个同步信号,此时主处理核c1执行其中常驻的任务更新程序中的任务更新指令,启动计数器准备对同步信号sync进行计数,根据sync的次数以及该次数对应的分配参数生成任务段获取指令,任务段获取指令包括待执行任务的处理核c1和c2、c1和c2待执行的任务段p_1及待执行任务段p_1的存储地址等参数,主处理核将任务段获取指令发送至mme;mme对所述任务段获取指令进行解码执行,从外部存储器中读取c1和c2的第一个任务段p_1并写入c1和c2的pram中,即图7中t1周期中,在接收到sync信号之后,c1执行任务段更新程序,之后mme根据任务获取指令获取从外部存储器中取出待执行的任务段p_1并发送待执行任务段p_1至c1和c2,在该同步周期剩下的时间中,c1和c2获取其对应的输入数据并执行所述第一个任务段直至执行完毕,c1执行
完所述第一个任务段之后向同步信号发生单元发送同步信号请求sq_1,c2执行完所述第一个任务段之后向同步信号发生单元发送同步信号请求sq_2;所述同步信号发生单元在接收到所述sq_1和sq_2之后,产生新的同步信号sync;之后c1根据该新的同步信号sync继续上述过程,以使所述c1和c2执行第二个任务段p_2,如此重复直至一个完整的任务被c1和c2并行的执行完毕。之后,c1和c2可以根据任务更新指令继续执行下一个任务(2
nd task)。
128.上述实例中所展示的方案是所有的处理核并行执行一个任务段以加快任务段的执行速度。可以理解的,在实际应用中,在第一个同步周期也可能仅向一个处理核分配任务段,比如c2需要等待c1的第一个任务段的执行结果作为c2的第一个任务段时的输入数据,此时c2在第一个同步周期可以执行其他任务或者空闲等待等,更普遍的来说,当一个处理核需要等待另一个处理核的输出结果作为其输入时,其在得到另一个处理核的输出结果之前均可以执行其他任务或者空闲等待,这与预先设置好的分配策略相关。
129.本公开实施例提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现实施例中的任一所述任务分配方法。
130.本公开实施例还提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述实施例中的任一所述任务分配方法。
131.本公开实施例还提供一种计算机程序产品,其中,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述实施例中的任一所述任务分配方法。
132.本公开实施例还提供一种计算装置,其特征在于,包括所述实施例中的任一所述的芯片。
133.本公开附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、任务段、或代码的一部分,该模块、任务段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
134.描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
135.本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统(soc)、复杂可编程逻辑设备(cpld)等等。
136.在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可
读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1