CN114518941A - 任务调度电路、方法、电子设备及计算机可读存储介质 - Google Patents
任务调度电路、方法、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114518941A CN114518941A CN202011299246.5A CN202011299246A CN114518941A CN 114518941 A CN114518941 A CN 114518941A CN 202011299246 A CN202011299246 A CN 202011299246A CN 114518941 A CN114518941 A CN 114518941A
- Authority
- CN
- China
- Prior art keywords
- task
- processing core
- circuit
- state
- state information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000012545 processing Methods 0.000 claims abstract description 231
- 239000000126 substance Substances 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开实施例公开了一种任务调度电路、方法、电子设备和计算机可读存储介质。其中该任务调度电路包括:状态存储电路、任务包调度电路以及控制电路;其中,所述状态存储电路,用于存储每个所述处理核的状态;所述任务包调度电路,用于获取待执行的任务包,所述任务包中包括同一任务的至少一条任务指令;根据所述状态存储电路中的状态信息确认所述至少两个处理核中的一个空闲处理核;将所述任务包发送至所述空闲处理核;控制电路,用于接收所述空闲处理核的状态信息,并根据所述状态信息指示所述任务包调度电路工作。上述任务调度电路通过处理核的状态信息调度任务包给处理核执行,解决了现有技术中的调度效率低的技术问题。
Description
技术领域
本公开涉及处理器领域,尤其涉及一种任务调度电路、方法、电子设备及计算机可读存储介质。
背景技术
随着科学技术的发展,人类社会正在快速进入智能时代。智能时代的重要特点,就是人们获得数据的种类越来越多,获得数据的量越来越大,而对处理数据的速度要求越来越高。芯片是任务调度的基石,它从根本上决定了人们处理数据的能力。从应用领域来看,芯片主要有两条路线:一条是通用芯片路线,例如CPU(Central Processing Unit)等,它们能提供极大的灵活性,但是在处理特定领域算法时有效算力比较低;另一条是专用芯片路线,例如TPU(Tensor Processing Unit)等,它们在某些特定领域,能发挥较高的有效算力,但是面对灵活多变的比较通用的领域,它们处理能力比较差甚至无法处理。由于智能时代的数据种类繁多且数量巨大,所以要求芯片既具有极高的灵活性,能处理不同领域且日新月异的算法,又具有极强的处理能力,能快速处理极大的且急剧增长的数据量。
在神经网络计算中,经常会用到多核或者众核的芯片。此处多(众)核架构中的核,都有一定独立处理能力,并且带有比较大的核内存储空间,用于存储自身的程序、数据和权重。
如何让众多的核能够高效率的发挥算力,是决定整个芯片性能的关键。各核的算力发挥,取决于多种因素,例如任务的调度与分配、芯片的架构、核的结构、核的电路等。其中任务的调度与分配是一个非常关键的因素,如果任务的调度与分配合理,则能充分发挥各核的有效算力高,否则各核的有效算力就会变低。
现有技术中一般使用以下案来进行处理核任务的调度:
如图1所示为使用调度器进行任务调度的方案。在该方案中,调度器接收到来自于指令源的指令,然后将指令按一定的策略,如顺序,传输给各处理核,各处理核对不同的数据执行相同的指令。各处理核可以是比较简单的结构,例如共用控制电路和寄存器的SIMD(Single Instruction Multiple Data,单指令多数据结构),也可以是比较复杂有一定的自主性的结构,例如有独立的控制电路和寄存器等的SIMT(Single Instruction MultipleThreads,单指令多线程)。但是上述方案一般用于指令级调度,每次只能调度一条或少数几条指令,当需要完成比较大的任务时,需要频繁的调度,降低了调度效率;另外,该方案一般适用于单任务场景,当执行多任务时,各个核需要复用调度器,也降低了调度效率。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
为了解决现有技术中处理核的任务调度不灵活、控制复杂的技术问题,本公开实施例提出如下技术方案:
第一方面,本公开实施例提供一种任务调度电路,包括:状态存储电路、任务包调度电路以及控制电路;其中,所述状态存储电路,用于存储每个所述处理核的状态;所述任务包调度电路,用于获取待执行的任务包,所述任务包中包括同一任务的至少一条任务指令;根据所述状态存储电路中的状态信息确认所述至少两个处理核中的一个空闲处理核;将所述任务包发送至所述空闲处理核;控制电路,用于接收所述空闲处理核的状态信息,并根据所述状态信息指示所述任务包调度电路工作。
进一步的,所述状态存储电路,用于存储每个所述处理核的状态,包括:所述状态存储电路,用于存储每个所述处理核的所述状态信息,其中所述状态信息包括处理核标识以及处理核状态位;其中所述处理核状态位表示闲状态或忙状态。
进一步的,所述任务包调度电路,还用于:修改所述状态存储电路中所述处理核的状态信息,并将所述状态信息发送至所述控制电路。
进一步的,所述控制电路用于根据所述状态信息指示所述任务包调度电路工作,包括:
当每个所述处理核的状态信息均为忙状态时,所述控制电路用于根据所述状态信息指示所述任务包调度电路进入等待状态;或,当所述至少两个处理核中的任意一个所述处理核的状态信息为闲状态时,所述控制电路用于根据所述状态信息指示所述任务包调度电路继续获取后续任务包。
进一步的,所述控制电路还用于:修改已保存的所述处理核的状态信息。
进一步的,所述控制电路用于修改已保存的所述处理核的状态信息,包括:所述控制电路,用于修改所述状态存储电路中所述处理核的状态信息。
进一步的,所述任务调度电路,还包括:任务指令缓存电路,所述任务指令缓存电路中包括与所述处理核一一对应的任务指令缓存队列,所述任务包缓存队列中的每一个用于缓存对应处理核的所述任务包中的任务指令。
进一步的,所述任务包中包括:任务编号、任务包编号以及至少一条任务指令。
第二方面,本公开实施例提供一种任务调度方法,包括:获取待执行的任务包,所述任务包中包括同一任务的至少一条任务指令;根据处理核的状态信息确认至少两个处理核中的一个空闲处理核;将所述任务包发送至所述空闲处理核;接收所述空闲处理核的状态信息,并根据所述状态信息确定任务包调度过程。
进一步的,所述处理核的状态信息包括处理核标识以及处理核状态位;其中所述处理核状态位表示闲状态或忙状态。
进一步的,在将所述任务包发送至所述空闲处理核之后,还包括:修改已保存的所述处理核的状态信息。
进一步的,所述根据所述状态信息确定任务包调度过程,包括:当每个所述处理核的状态信息均为忙状态时,根据所述状态信息确定所述任务包调度过程进入等待状态;或,
当所述至少两个处理核中的任意一个所述处理核的状态信息为闲状态时,根据所述状态信息确定继续获取后续任务包。
进一步的,所述方法还包括:将所述任务包中的任务指令缓存至任务指令缓存队列,中所述任务指令缓存队列与所述空闲处理核对应。
进一步的,所述任务包中包括:任务编号、任务包编号以及至少一条任务指令。
第三方面,本公开实施例提供一种芯片,包括:至少一个上述第一方面中任一项所述的任务调度电路。
第四方面,本公开实施例提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现前述第二方面中的任一所述任务调度方法。
第五方面,本公开实施例提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述第二方面中的任一所述任务调度方法。
第六方面,本公开实施例提供一种计算机程序产品,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述第二方面中的任一所述任务调度方法。
第七方面,本公开实施例提供一种计算装置,其特征在于,包括所述第四方面中的任一所述的芯片。
本公开实施例公开了一种任务调度电路、方法、电子设备和计算机可读存储介质。其中该任务调度电路包括:状态存储电路、任务包调度电路以及控制电路;其中,所述状态存储电路,用于存储每个所述处理核的状态;所述任务包调度电路,用于获取待执行的任务包,所述任务包中包括同一任务的至少一条任务指令;根据所述状态存储电路中的状态信息确认所述至少两个处理核中的一个空闲处理核;将所述任务包发送至所述空闲处理核;控制电路,用于接收所述空闲处理核的状态信息,并根据所述状态信息指示所述任务包调度电路工作。上述任务调度电路通过处理核的状态调度任务包给处理核执行,解决了现有技术中的调度效率低的技术问题。
上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1为现有技术的示意图;
图2为本公开实施例提供的任务调度电路的结构示意图;
图3为本公开实施例提供的任务调度方法的流程示意图;
图4为本公开实施例提供的任务调度电路的一个示例的结构示意图;
图5为本公开实施例提供的任务调度电路的一个示例的工作时序图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
图2为本公开实施例提供的任务调度电路的结构示意图。所述任务调度电路,用于包括至少两个处理核的系统中,如图2所示,所述任务调度电路200包括:
状态存储电路201、任务包调度电路202以及控制电路203;
其中,所述状态存储电路201,用于存储每个所述处理核的状态;
所述任务包调度电路202,用于获取待执行的任务包,所述任务包中包括同一任务的至少一条任务指令;根据所述状态存储电路中的状态信息确认述至少两个处理核中的空闲处理核;将所述任务包发送至所述空闲处理核;
控制电路203,用于接收所述空闲处理核的状态信息,并根据所述状态信息指示所述任务包调度电路工作。
在上述任务调度电路中,任务调度电路通过处理核的状态信息调度任务包给处理核执行,其中任务包中包括同一任务的至少一条任务指令,这样处理核在执行任务包的任务指令时无需考虑任务之间的数据相关性,即提升了多处理核的并行性能,又降低了为解决相关性而进行的复杂设计;处理核可以连续执行同一任务的任务包中的至少一条指令,避免了处理核与任务调度电路之间的频繁通信,提升了处理核运行效率,降低片上网络的负载,降低功耗。
可选的,所述状态存储电路201,用于存储每个所述处理核所述状态信息,其中所述状态信息包括处理核标识以及处理核状态位;其中所述处理核状态位表示闲状态或忙状态。可选的,所述处理核的状态信息在所述状态存储电路中以处理核状态表RT的形式存储。所述处理核状态表中包括处理核标识Ci和与处理核标识Ci对应的处理核状态位Si,示例性的,所述处理核标识Ci为所述处理核在所述包括至少两个处理核的系统中的编号,所述处理核状态Si的值为0或1,其中0表示所述处理核处于闲状态,可以执行任务;其中,1表示所述处理核处于忙状态,正在执行任务。
可选的,所述任务调度电路200还包括任务包缓存电路204,所述任务包缓存电路204用于缓存从任务源接收到的任务包。其中所述任务包中包括同一个任务的一条或多条指令。其中所述任务可以是完整的任务,如Resnet50或者BERT等完整的神经网络;或者,所述任务可以是某个完整任务的子任务,如Resnet50中的卷积等完整的运算;所述任务或子任务中包括一条或多条任务指令。所述任务源以任务包的形式向所述任务调度电路200发放任务,同一个任务可以分为多个任务包顺序发送给所述任务调度电路,组成任务包流,每个任务包中包括任务编号、任务包编号以及至少一条任务指令。如下表1所示为任务包的数据格式:
T_ID | P_ID | P_body |
(表1)
其中T_ID表示任务编号,每个任务有独立的任务编号,属于同一个任务的任务包的任务编号相同;P_ID表示任务包编号,表示任务包在所述T_ID编号的任务中的任务包编号;P_body表示任务包内容,即所述任务或者子任务的任务指令。
可选的,所述任务包调度电路202用于从所述任务包缓存电路204获取所述任务包。在获取到任务包之后,根据所述状态存储电路中的信息确定出所述处理核中的空闲处理核。可选的,通过所述处理核状态表RT,查询其中状态为空闲状态的处理核所对应的处理核标识。示例性的,所述处理核状态表RT如下:
C | S |
1 | 1 |
2 | 1 |
3 | 0 |
4 | 0 |
所述任务包调度电路202在获取到任务包之后,在所述处理核状态表RT中查询,查询到处理核3和处理核4的状态为空闲状态。其中,所述获取包括读取或接收,所述任务包调度电路202可以从任务包缓存电路204中读取所述任务包,或者接收所述任务包缓存电路204发送的任务包,在此不再赘述。
在确定出空闲处理核之后,将所述任务包发送至所述空闲处理核以使得所述空闲处理核执行所述任务包中的任务指令。当有多个空闲处理核时,可以按照预先设置的调度策略进行任务包的发送,示例性的,可以按照处理核的标识的顺序进行任务包的发送,如在上述示例中,按照处理核的标识的顺序进行任务包发送时,当确定出处理核3为空闲状态之后,将任务包发送至所述处理核3。或者,可以按照随机的调度策略,即先确定出所有空闲的处理核,之后将任务包随机发送至其中一个处理核。可以理解的,上述调度策略仅为举例,不构成对本公开的限制。
可选的,所述任务包调度电路202,还用于:修改所述状态存储电路中所述处理核的状态信息,并将所述状态信息发送至所述控制电路。在将任务包发送至所述空闲处理核之后,所述任务包调度电路202用于修改所述处理核状态表RT中的所述空闲处理核的状态信息,具体的,所述任务包调度电路202将所述空闲处理核在所述处理核状态表RT中的状态修改为忙状态。如上述示例中,确定了处理核3为空闲处理核,当任务包被发送至所述处理核3,则将处理核3所对应的状态的值修改为1,以表示处理核3正在执行任务。所述任务包调度电路202,将所述状态信息发送至所述控制电路,以使所述控制电路指示所述任务包调度电路工作。
可选的,所述控制电路用于根据所述状态信息指示所述任务包调度电路工作,包括:
当每个所述处理核的状态信息均为忙状态时,所述控制电路用于根据所述状态信息指示所述任务包调度电路进入等待状态;或,
当所述至少两个处理核中的任意一个所述处理核的状态信息为闲状态时,所述控制电路用于根据所述状态信息指示所述任务包调度电路继续获取后续任务包。
可选的,使用1表示所述处理核的状态为忙状态,使用0表示所述处理核的状态为闲状态;则将所述处理核的状态的值做逻辑与运算,即计算CB=S1∩S2∩......Sn,当CB=1时,表示所有的处理核均处于忙状态,此时没有可用的空闲处理核,如果此时有任务包需要执行,任务包调度电路只能等待,因为所有核都处于工作状态,此时控制电路指示所述任务包调度电路进入等待状态,直至有处理核执行完任务包进入空闲状态为止;如果CB=0,表示至少有一个处理核的状态为闲状态,任务包调度电路202可以继续获取后续的任务包,以将所述后续的任务包调度至所述空闲处理核。
可选的,所述控制电路203还用于:修改已保存的所述处理核的状态信息。
其中,可选的,所述已保存的所述处理核的状态信息包括所述状态存储电路201中所存储的处理核的状态信息,此时所述控制电路用于修改所述状态存储电路201中已保存的所述处理核的状态信息。可选的,当处理核执行完所述任务包中的任务指令之后,发送执行完成信息至所述控制电路203,控制电路203根据所述执行完成信息,将所述处理核状态表RT中所述处理核的标识所对应的状态Si的值修改为0。如上述示例中所述,任务包被发送至空闲处理核3中执行,此时处理核3的状态S3=1;当处理核3执行完所述任务包中的任务指令之后,发送执行完成信息至所述控制电路203,其中所述执行完成信息中包括所述处理核3的标识,控制电路203根据所述处理核3的标识在所述处理核状态表RT中查找到处理核3对应的状态S3,并修改S3的值为0。
可选的,所述已保存的所述处理核的状态信息包括在所述控制电路203中所保存的所述处理核的状态信息。可以理解的,在所述控制电路203中也保存一份与所述状态存储电路中相同的处理核状态信息,可以避免所述控制电路203每次都从所述状态存储电路中获取所述处理核的状态信息,而产生对所述状态存储电路进行的频繁读取。在该可选实施例中,所述控制电路203接收所述任务包调度电路202发送的状态信息,以修改所述控制电路203中自身所存储的处理核状态信息;所述控制电路203从执行完任务包的处理核接收任务完成的信息以修改所述控制电路203中自身所存储的处理核状态信息。这样,通过所述控制电路203自身所存储的处理核的状态信息,即可计算出CB的值,并根据该CB的值指示所述任务包调度电路工作。
可选的,所述任务调度电路200,还包括:任务指令缓存电路205,所述任务指令缓存电路中包括与所述处理核一一对应的任务指令缓存队列,所述任务包缓存队列中的每一个成员用于缓存对应处理核的所述任务包中的任务指令。如图2所示,任务指令缓存电路205中包括任务指令缓存队列IQi,其中IQi与Ci对应。当任务包调度电路202确定出空闲处理核Ci,将获取到的任务包中的任务指令发送至与Ci对应的任务指令缓存队列IQi中,之后Ci从所述任务指令缓存队列获取所述任务指令并执行以完成对应的任务或子任务。
图3为本公开实施例所提供的任务调度方法的流程示意图。所述任务调度方法用于包括至少两个处理核的系统中,所述任务调度方法包括:
步骤S301,获取待执行的任务包,所述任务包中包括同一任务的至少一条任务指令;
步骤S302,根据处理核的状态信息确认至少两个处理核中的一个空闲处理核;
步骤S303,将所述任务包发送至所述空闲处理核;
步骤S304,接收所述空闲处理核的状态信息,并根据所述状态信息确定任务包调度过程。
进一步的,所述处理核的状态信息包括处理核标识以及处理核状态位;其中所述处理核状态位表示闲状态或忙状态。
进一步的,所述步骤S303之后,还包括:修改已保存的所述处理核的状态信息。
进一步的,所述根据所述状态信息确定任务包调度过程,包括:当每个所述处理核的状态信息均为忙状态时,根据所述状态信息确定所述任务包调度过程进入等待状态;或,
当所述至少两个处理核中的任意一个所述处理核的状态信息为闲状态时,根据所述状态信息确定继续获取后续任务包。
进一步的,所述方法还包括:将所述任务包中的任务指令缓存至任务指令缓存队列,中所述任务指令缓存队列与所述空闲处理核对应。
进一步的,所述任务包中包括:任务编号、任务包编号以及至少一条任务指令。
可以理解的,所述任务调度方法由所述任务调度电路执行,其每个步骤的具体实现方式可以参见对任务调度电路中的描述,在此不再赘述。
图4所述为本公开实施例所述的任务调度电路的一个示例。如图4所示,在该示例中,任务调度电路用于包括C1和C2两个处理核的系统中,所述任务调度电路包括任务包缓存电路TB,任务包调度电路TS,控制电路Ctrl,处理核状态表RT以及与处理核C1对应的任务指令缓存队列IQ1,与处理核C2对应的任务指令缓存队列IQ2。
在该示例中,任务源中包括4个任务T1、T2、T3和T4,这4个任务的ID分别为1、2、3、4,每个任务包括一个任务包,每个任务包中包括该任务的程序中的至少一条任务指令。其中,所述任务包的具体内容包括:
T_ID | P_ID | P_body |
1 | 1 | Program1 |
2 | 1 | Program2 |
3 | 1 | Program3 |
4 | 1 | Program4 |
其中,Program1、Program2、Program3和Program4分别表示T1、T2、T3和T4中的至少一条任务指令。
其中,上述4个任务的完成的时间长度不一样,分别为t1、t2、t3和t4。则C1和C2执行所述4个任务的时序图如图5所示。
结合图4和图5,所述任务调度电路调度所述4个任务的过程如下:
任务源将4个任务的任务包按照顺序发送至所述任务调度电路的任务包缓存电路TB中。
任务包调度电路TS按照顺序从所述任务包缓存电路TB中读取任务包;第一个任务包是T_ID为1的任务的任务包,此时由于S1∩S2=0,因此CB=0,任务包调度电路TS从处理核状态表RT中顺序查找状态为空闲的处理核,当确定处理核C1空闲,任务包调度电路TS将处理核C1对应的状态S1设置为1,同时通知控制电路Ctrl处理核C1的状态S1为1,并将T1的任务指令存入与处理核C1对应的指令队列IQ1中,由IQ1将所述T1的任务指令发送至处理核C1。
任务包调度电路TS顺序从任务包缓存电路TB中读取第二个任务包,即T2的任务包;此时由于S1∩S2=0,因此CB=0,任务包调度电路TS从处理核状态表RT中顺序查找状态为空闲的处理核,查找到处理核C1时,发现其状态S1=1,处于忙状态,因此继续向下查找;当确定处理核C2空闲,任务包调度电路TS将处理核C2对应的状态S2设置为1,同时通知控制电路Ctrl处理核C2的状态S2为1,并将T2的任务指令存入与处理核C2对应的指令队列IQ2中,由IQ2将所述T2的任务指令发送至处理核C2。
此时,由于S1=1,S2=1,S1∩S2=1,因此CB=1。
任务包调度电路TS顺序从任务包缓存电路TB中读取第三个任务包,即T3的任务包;此时由于CB=1,表示所有的处理核均处于忙状态,因此任务包调度电路进入等待状态。
经过t1时间,处理核C1执行完T1的任务包,发送任务执行完毕的信息至所述控制电路Ctrl,控制电路Ctrl接收到所述任务执行完毕的信息之后,将处理核C1的状态修改为S1=0;此时,由于S1∩S2=0,因此CB=0;任务包调度电路TS检测到CB=0,继续从处理核状态表RT中顺序查找状态为空闲的处理核,确定处理核C1处于空闲状态,则任务包调度电路TS将处理核C1的状态S1设置为1,同时通知控制电路Ctrl处理核C1的状态S1为1,并将T3的任务指令存入与处理核C1对应的指令队列IQ1中,由IQ1将所述T3的任务指令发送至处理核C1。此时,由于S1=1,S2=1,S1∩S2=1,因此CB=1。
任务包调度电路TS顺序从任务包缓存电路TB中读取第四个任务包,即T4的任务包;此时由于CB=1,表示所有的处理核均处于忙状态,因此任务包调度电路进入等待状态。
从t1开始,又经过t2-t1时间之后,处理核C2完成任务T2,发送任务执行完毕的信息至所述控制电路Ctrl,所述控制电路Ctrl接收到所述任务执行完毕的信息之后,将处理核C2的状态修改为S2=0;此时,由于S1∩S2=0,因此CB=0;任务包调度电路TS检测到CB=0,继续从处理核状态表RT中顺序查找状态为空闲的处理核,确定处理核C2处于空闲状态,则任务包调度电路TS将处理核C2的状态S2设置为1,同时通知控制电路Ctrl处理核C2的状态S2为1,并将T4的任务指令存入与处理核C2对应的指令队列IQ2中,由IQ2将所述T4的任务指令发送至处理核C2。此时,由于S1=1,S2=1,S1∩S2=1,因此CB=1。
之后,由于任务包缓存电路TB中没有其他任务包,因此任务包调度电路不再从任务包缓存电路TB中读取任务包,进入空闲状态。
从t2开始,经过(t1+t3-t2)时间,处理核C1完成任务T3,发送任务执行完毕的信息至所述控制电路Ctrl,所述控制电路Ctrl接收到所述任务执行完毕的信息之后,将处理核C1的状态修改为S1=0。
从t3开始,经过(t4+t2-t1-t3)时间,处理核C2完成任务T4,发送任务执行完毕的信息至所述控制电路Ctrl,所述控制电路Ctrl接收到所述任务执行完毕的信息之后,将处理核C2的状态修改为S2=0。
至此,4个任务都执行完毕。系统等待新的任务的任务包以执行新的任务。
本公开实施例还提供一种芯片,包括上述实施例中所述的任一所述的任务调度电路。
本公开实施例还提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现实施例中的任一所述任务调度方法。
本公开实施例还提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述实施例中的任一所述任务调度方法。
本公开实施例还提供一种计算机程序产品,其中,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述实施例中的任一所述任务调度方法。
本公开实施例还提供一种计算装置,其特征在于,包括所述实施例中的任一所述的芯片。
本公开附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
Claims (10)
1.一种任务调度电路,用于包括至少两个处理核的系统中,其特征在于,包括:
状态存储电路、任务包调度电路以及控制电路;其中,
所述状态存储电路,用于存储每个所述处理核的状态;
所述任务包调度电路,用于获取待执行的任务包,所述任务包中包括同一任务的至少一条任务指令;根据所述状态存储电路中的状态信息确认所述至少两个处理核中的一个空闲处理核;将所述任务包发送至所述空闲处理核;
控制电路,用于接收所述空闲处理核的状态信息,并根据所述状态信息指示所述任务包调度电路工作。
2.如权利要求1所述的任务调度电路,其特征在于,所述状态存储电路,用于存储每个所述处理核的状态,包括:
所述状态存储电路,用于存储每个所述处理核的所述状态信息,其中所述状态信息包括处理核标识以及处理核状态位;其中所述处理核状态位表示闲状态或忙状态。
3.如权利要求1-2中任一项所述的任务调度电路,其特征在于,所述任务包调度电路,还用于:修改所述状态存储电路中所述处理核的状态信息,并将所述状态信息发送至所述控制电路。
4.如权利要求1-3中任一项所述的任务调度电路,其特征在于,所述控制电路用于根据所述状态信息指示所述任务包调度电路工作,包括:
当每个所述处理核的状态信息均为忙状态时,所述控制电路用于根据所述状态信息指示所述任务包调度电路进入等待状态;或,
当所述至少两个处理核中的任意一个所述处理核的状态信息为闲状态时,所述控制电路用于根据所述状态信息指示所述任务包调度电路继续获取后续任务包。
5.如权利要求1-4中任一项所述的任务调度电路,其特征在于,所述控制电路还用于:
修改已保存的所述处理核的状态信息。
6.如权利要求5所述的任务调度电路,其特征在于,所述控制电路用于修改已保存的所述处理核的状态信息,包括:
所述控制电路,用于修改所述状态存储电路中所述处理核的状态信息。
7.如权利要求1-6中任一项所述的任务调度电路,其特征在于,所述任务调度电路,还包括:
任务指令缓存电路,所述任务指令缓存电路中包括与所述处理核一一对应的任务指令缓存队列,所述任务包缓存队列中的每一个成员用于缓存对应处理核的所述任务包中的任务指令。
8.如权利要求1-7中任一项所述的任务调度电路,其特征在于,所述任务包中包括:任务编号、任务包编号以及至少一条任务指令。
9.一种任务调度方法,用于包括至少两个处理核的系统中,其特征在于,包括:
获取待执行的任务包,所述任务包中包括同一任务的至少一条任务指令;
根据处理核的状态信息确认至少两个处理核中的一个空闲处理核;
将所述任务包发送至所述空闲处理核;
接收所述空闲处理核的状态信息,并根据所述状态信息确定任务包调度过程。
10.一种芯片,其特征在于:包括至少一个上述1-8中任一项所述的任务调度电路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011299246.5A CN114518941A (zh) | 2020-11-19 | 2020-11-19 | 任务调度电路、方法、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011299246.5A CN114518941A (zh) | 2020-11-19 | 2020-11-19 | 任务调度电路、方法、电子设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114518941A true CN114518941A (zh) | 2022-05-20 |
Family
ID=81594673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011299246.5A Pending CN114518941A (zh) | 2020-11-19 | 2020-11-19 | 任务调度电路、方法、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114518941A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115993949A (zh) * | 2023-03-21 | 2023-04-21 | 苏州浪潮智能科技有限公司 | 一种面向多核处理器的向量数据的处理方法及装置 |
-
2020
- 2020-11-19 CN CN202011299246.5A patent/CN114518941A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115993949A (zh) * | 2023-03-21 | 2023-04-21 | 苏州浪潮智能科技有限公司 | 一种面向多核处理器的向量数据的处理方法及装置 |
CN115993949B (zh) * | 2023-03-21 | 2023-07-14 | 苏州浪潮智能科技有限公司 | 一种面向多核处理器的向量数据的处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8392920B2 (en) | Parallel query engine with dynamic number of workers | |
KR20120017294A (ko) | 어플리케이션을 효율적으로 처리하는 스케쥴링 시스템 및 스케쥴링 방법 | |
CN101923491A (zh) | 多核环境下线程组地址空间调度和切换线程的方法 | |
CN110569312B (zh) | 一种基于gpu的大数据快速检索系统及其使用方法 | |
CN103365729A (zh) | 一种基于任务类型的动态MapReduce 调度方法及系统 | |
US8832712B2 (en) | System and method for synchronizing threads using shared memory having different buffer portions for local and remote cores in a multi-processor system | |
CN114518940A (zh) | 任务调度电路、方法、电子设备及计算机可读存储介质 | |
CN105353987A (zh) | 一种文件处理方法及装置 | |
CN104239134A (zh) | 一种众核系统的任务管理方法和装置 | |
CN114518941A (zh) | 任务调度电路、方法、电子设备及计算机可读存储介质 | |
US9753769B2 (en) | Apparatus and method for sharing function logic between functional units, and reconfigurable processor thereof | |
CN113222125A (zh) | 卷积运算方法及芯片 | |
CN110502337B (zh) | 针对Hadoop MapReduce中混洗阶段的优化系统 | |
CN111158875B (zh) | 基于多模块的多任务处理方法、装置及系统 | |
CN113222099A (zh) | 卷积运算方法及芯片 | |
US9384047B2 (en) | Event-driven computation | |
CN114896295B (zh) | 大数据场景下的数据脱敏方法、脱敏装置及脱敏系统 | |
CN114518942A (zh) | 任务调度电路、方法、电子设备及计算机可读存储介质 | |
US8612988B2 (en) | Method for monitoring system resources and associated electronic device | |
CN109710390B (zh) | 单线程处理器的多任务处理方法及处理系统 | |
US20120066415A1 (en) | Methods and systems for direct memory access (dma) in-flight status | |
KR101725408B1 (ko) | 실시간 운영체제의 태스크 스케줄링 방법 | |
CN112231018A (zh) | 用于卸载数据的方法、计算设备和计算机可读存储介质 | |
KR20170001682A (ko) | 어플리케이션을 효율적으로 처리하는 스케쥴링 시스템 및 스케쥴링 방법 | |
CN113568665B (zh) | 一种数据处理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |