CN114518940A - 任务调度电路、方法、电子设备及计算机可读存储介质 - Google Patents
任务调度电路、方法、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114518940A CN114518940A CN202011299236.1A CN202011299236A CN114518940A CN 114518940 A CN114518940 A CN 114518940A CN 202011299236 A CN202011299236 A CN 202011299236A CN 114518940 A CN114518940 A CN 114518940A
- Authority
- CN
- China
- Prior art keywords
- task
- core
- circuit
- processing core
- scheduling
- 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
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/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,用于存储每个所述处理核的状态信息和算力等级,包括:所述核资源存储电路201,用于存储核资源表RT_Ri和所述核资源表所对应的算力等级T_Ri,所述核资源表包括处理核标识、与所述处理核标识对应的处理核状态位;其中所述处理核状态位用于表示闲状态或忙状态。
在该可选实施例中,所述处理核的状态信息在所述核资源存储电路中以核资源表RT_Ri的形式存储,同一个核资源表中的处理核的算力等级相同或相近。所述核资源表中包括处理核标识Ci_j和与处理核标识Ci_j对应的处理核状态位Si_j,示例性的,所述处理核标识Ci_j为所述处理核在所述包括至少两个处理核的系统中的编号,其中i为所述核资源表的编号,j为所述处理核在所述核资源表中的标号。所述处理核状态Si_j的值为0或1,其中0表示所述处理核处于闲状态,可以执行任务;其中,1表示所述处理核处于忙状态,正在执行任务。
进一步的,可选的,所述核资源存储电路201用于存储算力索引表和多个核资源表RT_Ri,其中,归属于不同所述核资源表中的处理核的算力等级不同,归属于同一所述核资源表中的处理核的算力等级相同,所述算力等级相同表示算力相同或相近;其中所述算力索引表用于表示各个所述核资源表对应的算力等级。
可选的,所述任务调度电路200还包括任务包缓存电路204,所述任务包缓存电路204用于缓存从任务源接收到的任务包。其中所述任务包中包括同一个任务的一条或多条指令。其中所述任务可以是完整的任务,如Resnet50或者BERT等完整的神经网络;或者,所述任务可以是某个完整任务的子任务,如Resnet50中的卷积等完整的运算;所述任务或子任务中包括一条或多条任务指令。所述任务源以任务包的形式向所述任务调度电路200发放任务,同一个任务可以分为多个任务包顺序发送给所述任务调度电路,组成任务包流,每个任务包中包括任务编号、任务包编号以及至少一条任务指令。如下表1所示为任务包的数据格式:
T_ID | T_R | P_ID | P_body |
(表1)
其中T_ID表示任务编号,每个任务有独立的任务编号,属于同一个任务的任务包的任务编号相同;T_R表示任务包的算力需求,数字越大表示对算力的需求越高,其中所述算力需求表示执行所述任务包所需要的处理核的计算能力,在本公开中所述算力需求的表示方法与所述算力等级相同;P_ID表示任务包编号,表示任务包在所述T_ID编号的任务中的任务包编号;P_body表示任务包内容,即所述任务或者子任务的任务指令。
可选的,所述任务包调度电路202用于从所述任务包缓存电路204读取所述任务包。在读取到任务包之后,从所述任务包中读取所述任务包的算力需求T_Ri,根据任务算力需求T_Ri从所述核资源存储电路201中确定出具有满足该任务算力需求的算力等级的核资源表RT_Ri,并在该核资源表RT_Ri中确定出一个空闲处理核。可选的,通过所述核资源表RT_Ri,查询其中状态为空闲状态的处理核所对应的处理核标识。示例性的,所述核资源表RT_Ri如下:
所述任务包调度电路202在读取到任务包之后,在所述核资源表RT_Ri中查询,查询到处理核i_3和处理核i_4的状态为空闲状态。
当有多个空闲处理核时,可以按照预先设置的调度策略确定一个空闲处理核,示例性的,可以按照处理核的标识的顺序确定一个空闲处理核。
在确定出空闲处理核之后,将所述任务包发送至所述空闲处理核以使得所述空闲处理核执行所述任务包中的任务指令。如在上述示例中,按照处理核的标识的顺序确定处理核i_3为空闲处理核,将任务包发送至所述处理核i_3。
或者,可以按照随机的调度策略,即先确定出所有空闲的处理核,之后将任务包随机发送至其中一个处理核。可以理解的,上述调度策略仅为举例,不构成对本公开的限制。
可选的,所述任务包调度电路202,还用于:修改所述核资源存储电路中所述处理核的状态信息,并将所述状态信息发送至所述控制电路。在将任务包发送至所述空闲处理核之后,所述任务包调度电路202用于修改所述核资源表RT_Ri中的所述空闲处理核的状态信息,具体的,所述任务包调度电路202将所述空闲处理核在所述核资源表RT_Ri中的状态修改为忙状态。如上述示例中,确定了处理核i_3为空闲处理核,可以在任务包被发送至所述处理核i_3之前或之后,将处理核i_3所对应的状态的值修改为1,以表示处理核3正在执行任务。所述任务包调度电路202,将所述状态信息发送至所述控制电路,以使所述控制电路指示所述任务包调度电路工作。
可选的,所述任务包调度电路202,用于修改所述核资源存储电路中所述处理核的状态信息,包括:在所述空闲处理核执行完所述任务包后,修改所述核资源存储电路中所述空闲处理核的状态信息为闲状态;或在所述将任务包发送至所述空闲处理核之前或之后,修改所述空闲处理核的状态为忙状态。可选的,所述空闲处理核在执行完所述任务包之后,发送任务包执行完毕的信息,所述任务包调度电路202在接收到所述任务包执行完毕的信息之后,修改所述核资源存储电路中所述空闲核的状态信息为闲状态;在所述任务包调度电路202确认出空闲处理核之后,所述任务包调度电路202将所述任务包发送至所述空闲处理核之前或者以后,修改所述核资源存储电路中所述空闲核的状态信息为忙状态。在修改所述空闲处理核的状态信息之后,所述任务包调度电路202还将所述状态信息发送至所述控制电路,以使得所述控制电路指示所述任务调度电路的后续工作。
可选的,所述修改所述核资源存储电路中所述空闲处理核的状态信息为闲状态也可以由所述控制电路203执行。当控制电路接收所述空闲处理核发送的任务包执行完毕的消息,基于所述任务包执行完毕的消息,将所述核资源存储电路中所述空闲处理核的状态信息为闲状态。
可选的,如图2所示,所述任务包调度电路202通过信号ST[M:1]修改所述空闲处理核的状态为忙状态。示例性的,当确定RT_Ri中的i_3为空闲处理核之后,将信号ST[M:1]中的i设置为1,通过该信号将i_3的状态信息Si_3设置为1,即忙状态。
可选的,如图2所示,所述控制电路203通过信号RST[M:1]修改所述空闲处理核的状态为闲状态。示例性的,当处理核i_3执行完任务包中指令,其返回任务包执行完毕的信息到所述控制电路203,控制电路根据所述处理核i_3的标识确定其为RT_Ri中的处理核,则控制电路将信号RST[M:1]中的i设置为0,通过该信号将i_3的状态信息Si_3设置为0,即闲状态。
可选的,所述控制电路203用于根据所述状态信息指示所述任务包调度电路工作,包括:
当归属于同一所述核资源表中的每个所述处理核的所述状态信息均为忙状态时,所述控制电路用于根据所述状态信息指示所述任务包调度电路不执行对所述核资源表的读取;
当归属于同一所述核资源表的任意一个所述处理核的所述状态信息为闲状态时,所述控制电路用于根据所述状态信息指示所述任务包调度电路继续接收后续任务包;或,
当每个所述处理核的所述状态信息均为忙状态时,所述控制电路根据所述状态信息指示所述任务包调度电路进入等待状态。
可选的,使用1表示所述处理核的状态为忙状态,使用0表示所述处理核的状态为闲状态;用CB[M:1]表示每个核资源表中的空闲处理核的信息,其中CB[i]表示核资源表RT_Ri中是否有空闲处理核,CB[i]=0表示核资源表RT_Ri有处于闲状态的处理核,CB[i]=1表示核资源表RT_Ri中所有的处理核均处于忙状态。CB[i]的值由核资源表RT_Ri中所有的处理核的状态值做逻辑运算得到,即计算CB[i]=Si_1∩Si_2…Si_j…Si_n,当CB[i]=1时,表示核资源表RT_Ri中所有的处理核均处于忙状态,此时没有可用的空闲处理核,此时任务包调度电路不会在核资源表RT_Ri查找空闲处理核,因为该核资源表中所有核都处于工作状态。如果CB[i]=0,表示该核资源表中至少有一个处理核的状态为闲状态,任务包调度电路202可以从该核资源表中查找空闲处理核,其中0<i<M,0<j<NM,且i,j,M,NM均为整数。当CB[M:1]=1,表示所有的核资源表中的处理核均没有空闲处理核,此时任务包调度电路202进入等待状态,直至有处理核处于空闲状态,此时至少有一个CB[i]=0,任务包调度电路202可以继续读取任务包并根据算力需求获取对应算力等级的空闲处理核。可选的,当所述任务包的算力需求对应算力等级的核资源表中没有空闲处理核时,任务包调度电路202从算力等级最高的核资源表开始查找空闲处理核,直至找到空闲处理核为止,并将所述任务包发送至所述空闲处理核。
可选的,所述控制电路203还用于:修改所述控制电路中所存储的所述处理核的状态信息。在该可选实施例中,在所述控制电路203中也保存一份与所述核资源存储电路中相同的处理核状态信息,可以避免所述控制电路203每次都从所述核资源存储电路中获取所述处理核的状态信息,而产生对所述核资源存储电路进行的频繁读取。在该可选实施例中,所述控制电路203接收所述任务包调度电路202发送的状态信息,以修改所述控制电路203中自身所存储的处理核状态信息;或者,所述控制电路203从执行完任务包的处理核接收任务包执行完毕的信息以修改所述控制电路203中自身所存储的处理核状态信息。这样,通过所述控制电路203自身所存储的处理核的状态信息,即可计算出CB[M:1]的值,并根据该CB[M:1]的值指示所述任务包调度电路工作。
可选的,所述任务调度电路200,还包括:任务指令缓存电路205,所述任务指令缓存电路包括与所述处理核一一对应的任务指令缓存队列,所述任务包缓存队列中的每一个成员用于缓存对应处理核的所述任务包中的任务指令。如图2所示,任务指令缓存电路205中包括任务指令缓存队列IQi_j,其中IQi_j与Ci_j对应。当任务包调度电路202确定出空闲处理核Ci_j,将读取到的任务包中的任务指令发送至与Ci_j对应的任务指令缓存队列IQi_j中,之后Ci_j从所述任务指令缓存队列获取所述任务指令并执行以完成对应的任务或子任务。
图3为本公开实施例所提供的任务调度方法的流程示意图。所述任务调度方法用于包括至少两个处理核的系统中,所述任务调度方法包括:
步骤S301,读取待执行的任务包,所述任务包中包括同一任务的至少一条任务指令以及所述任务包的算力需求;
步骤S302,根据所述算力需求以及所述至少两个处理核的算力等级确认一个空闲处理核;
步骤S303,将所述任务包发送至所述空闲处理核;
步骤S304,根据所述空闲处理核的状态信息控制所述任务包的调度过程。
进一步的,所述处理核的状态信息存储于核资源表中,其中所述核资源表与所述算力等级对应,所述核资源表包括处理核标识、与所述处理核标识对应的处理核状态位;其中所述处理核状态位用于表示闲状态或忙状态。
进一步的,所述算力等级存储于算力索引表中,所述处理核的状态信息存储于多个核资源表中,其中归属于不同所述核资源表中的处理核的算力等级不同,归属于同一所述核资源表中的处理核的算力等级相同,所述算力等级相同表示算力相同或相近;其中所述算力索引表用于表示各个所述核资源表对应的算力等级。
进一步的,所述根据所述空闲处理核的状态信息控制所述任务包的调度过程,包括:
当归属于同一所述核资源表中的每个所述处理核的所述状态信息均为忙状态时,所述控制电路用于根据所述状态信息指示所述任务包调度电路不执行对所述核资源表的读取;
当归属于同一所述核资源表的任意一个所述处理核的所述状态信息为闲状态时,所述控制电路用于根据所述状态信息指示所述任务包调度电路继续接收后续任务包;或,
当每个所述处理核的所述状态信息均为忙状态时,所述控制电路根据所述状态信息指示所述任务包调度电路进入等待状态。
进一步的,所述方法还包括:修改所述核资源表中所述空闲处理核的状态信息。
进一步的,所述修改所述核资源表中所述空闲处理核的状态信息,包括:
在所述空闲处理核执行完所述任务包后,修改所述核资源存储电路中所述空闲处理核的状态信息为闲状态;或
在所述将任务包发送至所述空闲处理核之前或之后,修改所述空闲处理核的状态为忙状态。
进一步的,所述将所述任务包发送至所述空闲处理核,包括:将所述任务包中的任务指令发送至与所述空闲处理核对应的任务指令缓存队列。
可以理解的,所述任务调度方法由所述任务调度电路执行,其每个步骤的具体实现方式可以参见对任务调度电路中的描述,在此不再赘述。
图4所述为本公开实施例所述的任务调度电路的一个示例。如图4所示,在该示例中,任务调度电路用于包括C1_1和C2_1两个处理核的系统中,C1_1的算力等级为1,C2_1的算力等级为2,所述任务调度电路包括任务包缓存电路TB,任务包调度电路TS,控制电路Ctrl,核资源表RT_R1、RT_R2以及与处理核C1_1对应的任务指令缓存队列IQ1_1,与处理核C2_1对应的任务指令缓存队列IQ2_1。
在该示例中,任务源中包括4个任务T1、T2、T3和T4,这4个任务的ID分别为1、2、3、4,T1和T2所需的算力需求为1,T3和T4所需的算力需求为2;每个任务包括一个任务包,每个任务包中包括该任务的程序中的至少一条任务指令。其中,所述任务包的具体内容包括:
T_ID | T_R | P_ID | P_body |
1 | 1 | 1 | Program1 |
2 | 1 | 1 | Program2 |
3 | 2 | 1 | Program3 |
4 | 2 | 1 | Program4 |
其中,Program1、Program2、Program3和Program4分别表示T1、T2、T3和T4中的至少一条任务指令。
在所述核资源表中,核的标识占用一个字节,其中高4位用于标识处理核所在的算力组的组号或核资源表的编号,低4位用于标识处理核在其所在的算力组中或核资源表中的编号。处理核的状态位用1bit数据来表示,0表示闲状态,1表示忙状态。
其中,由于上述任务的算力需求不同,两个处理核的算力等级也不同,因此上述4个任务的完成的时间长度不一样。则C1_1和C2_1执行所述4个任务的时序图如图5所示。
结合图4和图5,所述任务调度电路调度所述4个任务的过程如下:
任务源将4个任务的任务包按照顺序发送至所述任务调度电路的任务包缓存电路TB中。
TS按照顺序从所述TB中读取任务包。
第一个任务包是T_ID为1的任务的任务包,由于T_R=1,因此从对应于算力等级为1的RT_R1中查找空闲处理核。TS从核资源表RT_R1中查找状态为空闲的处理核,由于S1_1=0,确定处理核C1_1空闲,TS将处理核C1_1对应的状态S1_1设置为1,同时通知Ctrl处理核C1_1的状态S1_1为1,并将T1的任务指令存入与处理核C1对应的指令队列IQ1_1中,由IQ1_1将所述T1的任务指令发送至处理核C1_1,Ctrl生成控制信号CB[1]=1。
TS顺序从TB中读取第二个任务包,即T2的任务包;T2任务算力需求等级也是TR=1,因此,从对应于算力等级为1的RT_R1中查找状态为空闲的处理核,由于此时CB[1]=1,因此,TS继续从RT_R2中查找状态为空闲的处理核,由于此时S2_1=0,因此,从核资源表RT_R2中顺序查找状态为空闲的处理核。当确定处理核C2_1空闲,TS将处理核C2_1对应的状态S2_1设置为1,同时通知Ctrl处理核C2_1的状态S2_1为1,并将T2的任务指令存入与处理核C2_1对应的指令队列IQ2_1中,由IQ2_1将所述T2的任务指令发送至处理核C2_1,Ctrl生成控制信号CB[2]=1。
TS顺序从TB中读取第三个任务包,即T3的任务包;此时由于所有的处理核均处于忙状态,CB[1]=1,CB[2]=1,因此TS进入等待状态。
任务T1和任务T2有着相同的算力需求。而C2_1比C1_1的算力等级更高,因此C2_1先完成任务T2的任务包,其发送任务包执行完毕的消息给Ctrl,Ctrl将C2_1的状态S2_1置为0,并将CB[2]置为0。
任务T3的算力需求为2,应该从TR_R2中查找空闲处理核,但是TS侦测到CB[2]=0,CB[1]=1,即只有C2_1空闲,无论T3的算力需求有何要求,TS都从核资源表RT_R2中顺序查找状态为空闲的处理核,当确定处理核C2_1空闲,TS将处理核C2_1对应的状态S2_1设置为1,同时通知Ctrl处理核C2_1的状态S2_1为1,并将T3的任务指令存入与处理核C2_1对应的指令队列IQ2_1中,由IQ2_1将所述T3的任务指令发送至处理核C2_1,Ctrl生成控制信号CB[2]=1。
TS顺序从TB中读取第四个任务包,即T4的任务包;此时由于所有的处理核均处于忙状态,因此TS进入等待状态。
假设T1比T3先执行完毕,C1_1发送任务包执行完毕的消息给Ctrl,Ctrl将C1_1的状态S1_1置为0,并将CB[1]置为0。
TS侦测到CB[1]=0,CB[2]=1,因此从核资源表RT_R1中顺序查找状态为空闲的处理核,当确定处理核C1_1空闲,TS将处理核C1_1对应的状态S1_1设置为1,同时通知Ctrl处理核C1_1的状态S1_1为1,并将T4的任务指令存入与处理核C1_1对应的指令队列IQ1_1中,由IQ1_1将所述T4的任务指令发送至处理核C1_1。
之后,由于TB中没有其他任务包,因此TS不再从TB中读取任务包,进入空闲状态。
之后,处理核C2_1先完成任务T3,发送任务执行完毕的信息至所述Ctrl,所述Ctrl接收到所述任务执行完毕的信息之后,将处理核C2_1的状态修改为S2_1=0。
之后,处理核C1_1完成任务T4,发送任务执行完毕的信息至所述Ctrl,所述Ctrl接收到所述任务执行完毕的信息之后,将处理核C1_1的状态修改为S1_1=0。
至此,4个任务都执行完毕。系统等待新的任务的任务包以执行新的任务。
在上述示例中,由于读取到T3和T4的任务包时,系统中的可用处理核只有一组,因此不需要再通过T3和T4的算力需求获取对应的处理核,在包含更多处理核的系统中,可以提供更多满足算力需求的处理核,当满足算力需要的处理核均处于忙状态时,可以从最高算力等级开始依次查询空闲处理核来执行任务包,在此不再赘述。
本公开实施例还提供一种芯片,包括至少一个上述实施例中所述的任一所述的任务调度电路。
本公开实施例还提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现实施例中的任一所述任务调度方法。
本公开实施例还提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述实施例中的任一所述任务调度方法。
本公开实施例还提供一种计算机程序产品,其中,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述实施例中的任一所述任务调度方法。
本公开实施例还提供一种计算装置,其特征在于,包括所述实施例中的任一所述的芯片。
本公开附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
Claims (10)
1.一种任务调度电路,用于包括至少两个处理核的系统中,其特征在于,包括:
核资源存储电路、任务包调度电路以及控制电路;其中,
所述核资源存储电路,用于存储每个所述处理核的状态信息和算力等级;
所述任务包调度电路,用于获取待执行的任务包,所述任务包中包括同一任务的至少一条任务指令以及所述任务包的算力需求;根据所述算力等级和所述算力需求从所述核资源存储电路中确认一个空闲处理核;将所述任务包发送至所述空闲处理核;
控制电路,用于接收所述空闲处理核的状态信息,并根据所述状态信息指示所述任务包调度电路工作。
2.如权利要求1所述的任务调度电路,其特征在于,所述核资源存储电路,用于存储每个所述处理核的状态信息和算力等级,包括:
所述核资源存储电路,用于存储核资源表和所述核资源表所对应的算力等级,所述核资源表包括处理核标识、与所述处理核标识对应的处理核状态位;其中所述处理核状态位用于表示闲状态或忙状态。
3.如权利要求2所述的任务调度电路,其特征在于:所述核资源存储电路用于存储算力索引表和多个核资源表,其中,归属于不同所述核资源表中的处理核的算力等级不同,归属于同一所述核资源表中的处理核的算力等级相同,所述算力等级相同表示算力相同或相近;其中所述算力索引表用于表示各个所述核资源表对应的算力等级。
4.如权利要求3所述的任务调度电路,其特征在于,所述控制电路用于根据所述状态信息指示所述任务包调度电路工作,包括:
当归属于同一所述核资源表中的每个所述处理核的所述状态信息均为忙状态时,所述控制电路用于根据所述状态信息指示所述任务包调度电路不执行对所述核资源表的读取;
当归属于同一所述核资源表的任意一个所述处理核的所述状态信息为闲状态时,所述控制电路用于根据所述状态信息指示所述任务包调度电路继续接收后续任务包;或,
当每个所述处理核的所述状态信息均为忙状态时,所述控制电路根据所述状态信息指示所述任务包调度电路进入等待状态。
5.如权利要求1-4中任一项所述的任务调度电路,其特征在于,所述任务包调度电路,还用于:
修改所述核资源存储电路中所述空闲处理核的状态信息,并将所述状态信息发送至所述控制电路。
6.如权利要求5所述的任务调度电路,其特征在于,所述任务包调度电路,用于修改所述核资源存储电路中所述空闲处理核的状态信息,并将所述状态信息发送至所述控制电路,包括:
在所述空闲处理核执行完所述任务包后,修改所述核资源存储电路中所述空闲处理核的状态信息为闲状态;或
在所述将任务包发送至所述空闲处理核之前或之后,修改所述空闲处理核的状态为忙状态。
7.如权利要求6所述的任务调度电路,其特征在于,所述控制电路还用于:
修改所述控制电路中所存储的所述处理核的状态信息。
8.如权利要求1-7中任一项所述的任务调度电路,其特征在于,所述任务调度电路,还包括:
任务指令缓存电路,所述任务指令缓存电路包括与所述处理核一一对应的任务指令缓存队列,所述任务包缓存队列中的每一个成员用于缓存对应处理核的所述任务包中的任务指令。
9.如权利要求1-8中任一项所述的任务调度电路,其特征在于,所述任务包中包括:任务包的任务编号、任务包编号、任务包的算力需求以及至少一条任务指令。
10.一种任务调度方法,用于包括至少两个处理核的系统中,其特征在于,包括:
获取待执行的任务包,所述任务包中包括同一任务的至少一条任务指令以及所述任务包的算力需求;
根据所述任务包的算力需求以及所述至少两个处理核的算力等级确认一个空闲处理核;
将所述任务包发送至所述空闲处理核;
根据所述空闲处理核的状态信息控制所述任务包的调度过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011299236.1A CN114518940A (zh) | 2020-11-19 | 2020-11-19 | 任务调度电路、方法、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011299236.1A CN114518940A (zh) | 2020-11-19 | 2020-11-19 | 任务调度电路、方法、电子设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114518940A true CN114518940A (zh) | 2022-05-20 |
Family
ID=81594465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011299236.1A Pending CN114518940A (zh) | 2020-11-19 | 2020-11-19 | 任务调度电路、方法、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114518940A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023226545A1 (zh) * | 2022-05-25 | 2023-11-30 | 北京沃东天骏信息技术有限公司 | 算力分配、服务和测试方法,及系统和存储介质 |
WO2024017285A1 (zh) * | 2022-07-19 | 2024-01-25 | 中兴通讯股份有限公司 | Cpu核的分配方法、系统、设备和存储介质 |
-
2020
- 2020-11-19 CN CN202011299236.1A patent/CN114518940A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023226545A1 (zh) * | 2022-05-25 | 2023-11-30 | 北京沃东天骏信息技术有限公司 | 算力分配、服务和测试方法,及系统和存储介质 |
WO2024017285A1 (zh) * | 2022-07-19 | 2024-01-25 | 中兴通讯股份有限公司 | Cpu核的分配方法、系统、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8209690B2 (en) | System and method for thread handling in multithreaded parallel computing of nested threads | |
US20140215470A1 (en) | Parallel Processing with Proactive Solidarity Cells | |
KR101400286B1 (ko) | 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치 | |
CN108475212B (zh) | 使用动态分区处理数据的方法、系统和计算机可读介质 | |
CN101923491A (zh) | 多核环境下线程组地址空间调度和切换线程的方法 | |
KR20120017294A (ko) | 어플리케이션을 효율적으로 처리하는 스케쥴링 시스템 및 스케쥴링 방법 | |
CN1914597A (zh) | 处理单元的动态加载和卸载 | |
US10114866B2 (en) | Memory-constrained aggregation using intra-operator pipelining | |
CN114518940A (zh) | 任务调度电路、方法、电子设备及计算机可读存储介质 | |
US20120297216A1 (en) | Dynamically selecting active polling or timed waits | |
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 | |
CN107180031B (zh) | 分布式存储方法及装置、数据处理方法及装置 | |
CN104239134A (zh) | 一种众核系统的任务管理方法和装置 | |
CN110569312A (zh) | 一种基于gpu的大数据快速检索系统及其使用方法 | |
CN111694643B (zh) | 一种面向图神经网络应用的任务调度执行系统及方法 | |
US20160210171A1 (en) | Scheduling in job execution | |
CN113010286A (zh) | 并行任务调度方法、装置、计算机设备和存储介质 | |
KR102032895B1 (ko) | 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서 | |
CN110502337B (zh) | 针对Hadoop MapReduce中混洗阶段的优化系统 | |
CN109819674B (zh) | 计算机存储介质、嵌入式调度方法及系统 | |
CN114518941A (zh) | 任务调度电路、方法、电子设备及计算机可读存储介质 | |
US9384047B2 (en) | Event-driven computation | |
CN113222099A (zh) | 卷积运算方法及芯片 | |
CN111158875A (zh) | 基于多模块的多任务处理方法、装置及系统 | |
CN114518942A (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 |