CN114637594A - 多核处理设备、任务分配方法、装置及存储介质 - Google Patents

多核处理设备、任务分配方法、装置及存储介质 Download PDF

Info

Publication number
CN114637594A
CN114637594A CN202011480732.7A CN202011480732A CN114637594A CN 114637594 A CN114637594 A CN 114637594A CN 202011480732 A CN202011480732 A CN 202011480732A CN 114637594 A CN114637594 A CN 114637594A
Authority
CN
China
Prior art keywords
task
tasks
parent
information
core
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
Application number
CN202011480732.7A
Other languages
English (en)
Inventor
周俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Power Tensors Intelligent Technology Co Ltd
Original Assignee
Shanghai Power Tensors Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Power Tensors Intelligent Technology Co Ltd filed Critical Shanghai Power Tensors Intelligent Technology Co Ltd
Priority to CN202011480732.7A priority Critical patent/CN114637594A/zh
Publication of CN114637594A publication Critical patent/CN114637594A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06MCOUNTING MECHANISMS; COUNTING OF OBJECTS NOT OTHERWISE PROVIDED FOR
    • G06M1/00Design features of general application
    • G06M1/27Design features of general application for representing the result of count in the form of electric signals, e.g. by sensing markings on the counter drum
    • G06M1/272Design features of general application for representing the result of count in the form of electric signals, e.g. by sensing markings on the counter drum using photoelectric means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种多核处理设备、任务分配方法、装置及存储介质。该多核处理设备,包括:多个处理内核,用于执行任务;任务分配电路,用于基于多个处理内核的当前资源使用状态,以单个处理内核为单位进行任务分配。上述方案,能够提高内核资源的使用率。

Description

多核处理设备、任务分配方法、装置及存储介质
技术领域
本申请涉及信息处理技术领域,特别是涉及一种多核处理设备、任务分配方法、装置及存储介质。
背景技术
目前,在硬件设计中,为了提升处理器的整体执行性能,会采用多核并行设计,将一个父任务拆分为多个子任务,并分配给一组内核并行执行,在该父任务的所有子任务执行结束后,多核进行同步,然后才能分配下一个父任务的子任务,这种方式设计简单,但是也会导致先执行完任务的内核处于空闲状态以及未分配到任务的内核处于空任务状态,从而造成了内核资源的浪费。
发明内容
本申请至少提供一种多核处理设备、任务分配方法、装置及存储介质。
本申请第一方面提供了一种多核处理设备,包括:多个处理内核,用于执行任务;任务分配电路,用于基于多个处理内核的当前资源使用状态,以单个处理内核为单位进行任务分配。
因此,可以根据处理内核的资源使用情况,以单个处理内核为单位,将任务灵活分配给处理内核执行,避免了所有处理内核为单位同时进行任务分配导致空闲处理内核无法接收任务的情况,可以提高处理内核资源的使用率。
在一些实施例中,任务分配电路用于:在多个处理内核中第一处理内核的当前未完成任务的数量满足任务分配条件的情况下,为第一处理内核分配至少一个任务。
因此,可以实现将至少一个任务分配给当前未完成任务的数量满足任务分配条件的第一处理内核执行,通过设置任务分配条件,可以提高任务的执行效率。
在一些实施例中,设备还包括接口电路,用于接收多个任务的任务指令;任务分配电路用于:基于多个任务的任务指令和多个处理内核中每个处理内核的当前资源使用状态,以单个处理内核为单位进行多个任务的分配。
因此,可以实现多个任务以单个处理内核为单位进行分配。
在一些实施例中,多个任务包括至少一个第一父任务和/或至少一个第二父任务中每个第二父任务的多个子任务。
因此,可以实现父任务和子任务以单个处理内核为单位进行分配。
在一些实施例中,任务分配电路进行多个任务的分配,包括:基于多个任务分别所属的父任务,确定多个任务的任务分配顺序;按照多个任务的任务分配顺序,进行多个任务的分配。
因此,实现根据多个任务的任务分配顺序进行分配,其中多个任务的分配顺序与所属的父任务相关。
在一些实施例中,多个任务中属于同一父任务的至少两个子任务的任务分配顺序是基于至少两个子任务的任务接收顺序确定的;和/或多个任务中属于不同父任务的至少两个任务的任务分配顺序是基于至少两个任务所属父任务的优先级确定的。
因此,可以根据任务接收顺序和/或所属父任务的优先级确定任务分配顺序。
在一些实施例中,设备还包括:标识确定电路,用于基于多个任务中至少两个第一任务所属的父任务,确定至少两个第一任务的重映射标识,其中,至少两个第一任务属于同一父任务;状态确认电路,用于接收至少两个第一任务的重映射标识,并基于至少两个第一任务的重映射标识以及至少两个第一任务的任务执行状态信息,确定至少两个第一任务所属父任务是否执行完毕。
因此,以实现根据至少两个第一任务的重映射标识,确定至少两个第一任务所属父任务是否执行完毕。
在一些实施例中,设备还包括第一缓存器,包括至少一个内核缓存空间;任务分配电路还用于:基于多个任务中每个任务在所属的父任务包括的至少一个任务中所对应的任务分配顺序,确定每个任务的任务序号;状态确认电路还用于:接收任务分配电路发送的任务序号,并在多个处理内核中至少一个第一处理内核对应的内核缓存空间中存储为第一处理内核分配的任务的标识信息,任务的标识信息包括任务序号和重映射标识。
因此,可以实现根据任务的任务序号判断属于同一个父任务的多个子任务是否执行完成。
在一些实施例中,状态确认电路还用于:接收多个处理内核中第二处理内核发送的任务完成指示,任务完成指示用于指示第二任务执行完毕;基于第二处理内核对应的内核缓存空间存储的第二任务的标识信息,更新第二任务的任务执行状态信息。
因此,根据任务执行状态信息可以实现对已经执行完成的任务进行记录。
在一些实施例中,设备还包括第二缓存器,包括至少一个任务缓存空间,用于缓存任务的任务执行状态信息;状态确认电路更新第二任务的任务执行状态信息,包括:基于第二任务的标识信息中包括的重映射标识,得到第二任务所属父任务的任务缓存空间的信息;基于第二任务的标识信息中包括的任务序号,确定第二任务在所属父任务的任务缓存空间对应的目标缓存位置;将目标缓存位置缓存的任务执行状态信息更新为指示执行完毕。
因此,可以基于已经保存的标识信息确定对应的任务缓存空间以及目标缓存位置,从而可以将目标缓存位置缓存的任务执行状态信息更新为指示执行完毕。
在一些实施例中,设备的状态确认电路用于:将多个任务中属于同一父任务的至少两个子任务的缓存信息缓存至父任务的任务缓存空间中,其中,子任务的缓存信息包括指示子任务的当前执行状态的状态指示信息;在基于至少两个子任务的缓存信息确定同一父任务包括的所有子任务均执行完毕的情况下,确定同一父任务执行完毕。
因此,可以根据至少两个子任务的当前执行状态的状态指示信息,确定同一父任务包括的所有子任务均执行完毕的情况下,确定同一父任务执行完毕。
在一些实施例中,任务缓存空间为圆环状缓存空间。
在一些实施例中,缓存信息还包括指示子任务是否为同一父任务包含的至少两个子任务中最后一个子任务的最后子任务标识;状态确认电路确定同一父任务执行完毕,包括:在读取到缓存空间中的第一缓存信息的情况下,确定同一父任务执行完毕,其中,第一缓存信息包括的最后子任务标识指示子任务为最后一个子任务并且第一缓存信息包括的状态指示信息指示子任务已执行完毕。
因此,通过读取到最后子任务标识来指示子任务为最后一个子任务已执行完毕,则确定同一父任务执行完毕。
本申请第二方面提供了一种任务分配方法,应用于多核处理设备,包括:获取多个处理内核中每个处理内核的当前资源使用状态;基于多个处理内核中每个处理内核的当前资源使用状态,以单个处理内核为单位进行任务分配。
本申请第三方面提供了一种任务分配装置,包括存储器和处理器,处理器用于执行存储器中存储的程序指令,以执行前述的方法。
本申请第四方面提供了一种计算机可读存储介质,存储有能够被处理器运行的程序指令,程序指令用于实现前述的方法。
因此,可以根据处理内核的资源使用情况,以单个处理内核为单位,将任务灵活分配给处理内核执行,避免了所有处理内核为单位同时进行任务分配导致空闲处理内核无法接收任务的情况,可以提高处理内核资源的使用率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并与说明书一起用于说明本申请的技术方案。
图1是本申请提供的多核处理设备的一个示例的示意框图;
图2是本申请提供的多核处理设备的另一示例的示意框图;
图3是本申请提供的多核处理设备中第一缓存器和第二缓存器的一个示例的示意框图;
图4是本申请提供的多核处理设备中的任务执行状态信息更新的一个示例的流程示意图;
图5是本申请提供的多核处理设备中第三缓存器的一个示例的示意框图;
图6是本申请提供的任务分配方法的一个示例的流程示意图;
图7是本申请提供的任务分配方法的另一示例的流程示意图;
图8是本申请提供的图7中步骤S24的另一示例的流程示意图;
图9是本申请提供的任务分配方法的又一示例的流程示意图;
图10是本申请提供的图9中步骤S353的另一示例的流程示意图;
图11是本申请提供的任务分配装置的一个示例的框架示意图;
图12为本申请提供的计算机可读存储介质的一个示例的框架示意图。
具体实施方式
下面结合说明书附图,对本申请实施例的方案进行详细说明。
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本申请。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。此外,本文中的“多”表示两个或者多于两个。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
目前,以四核并行设计的处理器为例,通常是在某个维度上将父任务划分为4的倍数个子任务,每个子任务各自加入对应的内核的任务队列中,当维度大小不是4的倍数时,余数对应的任务会加入最后一个内核的任务队列中,由于每次都是多内核同时进行分配,所以只有当4个内核中的子任务都执行完成后,才能再进行下一次分配。然而,由于每个子任务的完成时间不同以及每个核需要执行的子任务的数量不同,先执行完任务的内核就处于了空闲状态;另外,当子任务的数量小于内核的数量4时,也会出现至少一个内核为空任务状态,所以尽管有空闲的内核,该内核也无法接收新的子任务,从而造成了内核资源的浪费。
请参阅图1,图1是本申请提供的多核处理设备的一个示例的示意框图。该多核处理设备可以为芯片或者其他设备类型,本公开实施例对此不做限定。
如图1所示,多核处理设备10包括多个处理内核11和任务分配电路12。任务分配电路12分别连接多个处理内核11。
处理内核11可以用于执行任务。具体地,该处理内核可以理解为能够用于执行任务的硬件单元,例如为加速器等。一般,该多个处理内核11可以并行运行,执行任务。其中,任务是一个逻辑概念,通常一个任务就是程序代码的一次运行。例如,程序代码的一次运行就相当于任务的一次执行。
一般地,一个处理内核11在某一时刻只能执行一个任务。可选地,多核处理设备10中处理内核11的数量可以根据实际情况进行设置,例如可以为4个、8个或16个。如图1所示,本公开实施例中,多核处理设备10包括1~n个处理内核11。
任务分配电路12可以用于基于多个处理内核11的当前资源使用状态,以单个处理内核11为单位进行任务分配。
可以理解的,目前任务分配都是多处理内核11同时进行分配,尽管有的处理内核11已经执行完,但是也要等待其他处理内核11中的任务执行完毕之后才能一起进行下一次任务的分配,从而会造成处于空闲状态的处理内核11无法接收新的子任务,进行造成了内核资源的浪费,对此,本公开实施例以单个处理内核11为单位进行任务分配,避免了等待全部处理内核11中任务执行完毕之后才能进行任务的分配,使得处于空闲状态的单个处理内核11可以接收新的任务,从而提升了内核资源的使用率。
可选地,当前资源使用状态可以是当前未完成任务的数量。例如,当前未完成任务的数量越多,说明处理内核11的当前资源使用率越高;当前未完成任务的数量越少,说明处理内核11的当前资源使用率越低。其中,可选地,当前未完成任务可以包括当前执行任务和等候执行任务队列中的任务。一般地,一个处理内核11在一时刻只能执行一个任务,此时各处理内核已分配任务的数量为等候执行任务队列中的任务的数量加一。在其他实施方式中,当前未完成任务还可以仅包括等候执行任务队列中的任务。
上述方案,通过以单个处理内核11为单位进行任务分配,可以避免等待全部处理内核11中任务执行完毕之后才能进行任务的分配,使得处于空闲状态的单个处理内核11可以接收新的任务,从而提升了内核资源的使用率,其次,在进行任务分配的同时,考虑了多个处理内核11的当前资源使用状态,将任务分配给当前资源使用率较低的处理内核11,可以提升该处理内核11的资源使用率,还可以提升任务的执行效率。
在一些公开实施例中,任务分配电路12还可以用于:在多个处理内核11中第一处理内核11的当前未完成任务的数量满足任务分配条件的情况下,为第一处理内核11分配至少一个任务。
可选地,任务分配条件可以为当前未完成任务的数量最少,即当在多个处理内核11中第一处理内核11的当前未完成任务的数量最少时,为第一处理内核11分配至少一个任务。例如一个四核处理设备包括处理内核A、B、C、D,处理内核A、B、C、D当前未完成任务的数量分别为10、50、100、1000,则当前未完成任务的数量最少的处理内核为A,从而可以将当前待分配的任务分配给处理内核A,以使得任务能够更快的被执行。可以理解的,当将该任务分配给处理内核A之后,处理内核的当前未完成任务的数量为11,仍是四个处理内核中当前未完成任务的数量最少的一个处理内核,所以下一个任务仍可以被分配给处理内核A执行。
可选地,任务分配条件可以为小于预设未完成数量,即当在多个处理内核11中第一处理内核11的当前未完成任务的数量小于预设未完成数量时,为第一处理内核11分配至少一个任务。可以理解的,此时第一处理内核11的数量可以大于1。例如,当预设未完成数量为80时,上述处理内核A、B的当前未完成任务的数量分别为10、50,可见上述处理内核A、B的当前未完成任务的数量均小于预设未完成数量,从而可以为处理内核A、B都分配至少一个任务,以使得任务能够更快的被执行。可选地,可以随机选择满足任务分配条件的一个第一处理内核分配任务。
在一些公开实施例中,如图2所示,设备还可以包括接口电路23,接口电路23用于接收多个任务的任务指令subtask_ins。可选地,接口电路23可以包括一套或若干套(如X套)任务接口,可以并行接收不同来源的多个任务的任务指令。任务接口可以为物理接口或虚拟接口。
可选地,多个任务可以包括至少一个第一父任务和/或至少一个第二父任务中每个第二父任务的多个子任务。可以将一个父任务拆分为若干个子任务,多个子任务可以并行地被多个处理内核11处理,以提高父任务的处理效率。另外,也可以不对父任务进行拆分,没有被拆分的父任务则由一个处理内核11进行处理,例如,一些文件压缩软件、部分游戏软件的任务等等一些父任务。在本公开实施例中,为了便于描述,将父任务和子任务统称为任务。
在接收了多个任务的任务指令之后,任务分配电路12用于:基于多个任务的任务指令和多个处理内核11中每个处理内核11的当前资源使用状态,以单个处理内核11为单位进行多个任务的分配。
在一些公开实施例中,任务分配电路12进行多个任务的分配,包括:基于多个任务分别所属的父任务,确定多个任务的任务分配顺序;按照多个任务的任务分配顺序,进行多个任务的分配。
其中,一个任务的父任务可以是自身或其他任务,例如,任务A为任务B的子任务,则任务A的父任务为任务B,而任务B的父任务则为其自身。
可选地,多个任务中属于同一父任务的至少两个子任务的任务分配顺序可以是基于至少两个子任务的任务接收顺序确定的。例如,接口电路23先接收到的子任务,可以先进行分配。又例如,接口电路23先接收到的子任务,也可以后进行分配。
可选地,多个任务中属于不同父任务的至少两个任务的任务分配顺序是基于至少两个任务所属父任务的优先级确定的。具体地,可以是优先级高的父任务先进行分配,优先级低的父任务等优先级高的任务分配完之后再进行分配,以使得优先级高的父任务可以先被处理内核11执行完成。其中,优先级可以但不限于由服务质量(Quality of Service,QoS)确定。
举例说明,多核处理设备10依次接收到任务A、B、C、D,任务A、B、C、D将被分配到一处理内核11的等候执行任务队列中,其中,任务A和任务B属于同一父任务,所以任务A和任务B的优先级相同,任务C的优先级低于任务B的优先级,任务D未设置优先级,则在将任务A、B、C、D依次加入队列时,根据上述接收顺序和优先级确定任务的分配顺序,先将任务A加入该队列的首位,任务B加入任务A之后的位置任务C的优先级低于任务B的优先级,则将任务C加入任务B之后,任务D不为优先级,则按序加入该队列的末位。其中,若任务的预设优先级相同,则可以根据任务的接收顺序将任务加入至第一处理内核11的等候执行任务队列中,例如在等候执行任务队列中先接收的任务排在后接收的任务之前,可以先被处理内核11执行。其中,目标处理内核11可以根据多个处理内核11的当前资源使用状态确定。
在一应用场景中,前端为发送任务指令的一端,具体可以为设备端或软件端。一般地,前端在接收到用户指令后会产生并发送多个任务的任务指令到多核处理设备10,由多核处理设备10对多个任务进行处理,并返回处理结果。其中,多个任务的任务指令首先会被多核处理设备10的接口电路23接收,然后发送给任务分配电路12,由任务分配电路12基于多个任务的任务指令和多个处理内核11中每个处理内核11的当前资源使用状态,以单个处理内核11为单位进行多个任务的分配,处理内核11对任务处理完毕之后,会返回处理结果到前端。
上述方案,通过设置接口电路,以接收多个任务的任务指令,从而可以基于多个任务的任务指令和多个处理内核中每个处理内核的当前资源使用状态,以单个处理内核为单位进行多个任务的分配,提高处理内核的资源使用率。
进一步地,通过将任务分配到当前未完成任务的数量满足任务分配条件的处理内核中,其中任务分配条件为当前未完成任务的数量最少或小于预设未完成数量时,可以使得该任务能够更快被执行,从而能够提高该任务的完成效率,通过预设优先级,以使得为预设优先级的任务能够先被分配到目标处理内核中执行,从而提高该任务的完成效率。
进一步地,多个任务包括至少一个第一父任务和/或至少一个第二父任务中每个第二父任务的多个子任务,不同父任务和子任务可以同时在多核中执行,能够实现对父任务和子任务混合情况的任务分配。
请参阅图2,图2是本申请提供的多核处理设备另一示例的示意框图。
如图2所示,在本公开实施例中,多核处理设备20还包括标识确定电路24和状态确认电路25。其中,标识确定电路24连接接口电路23和任务分配电路22,状态确认电路25连接接口电路23、任务分配电路22和多个处理内核21。
其中,标识确定电路24用于基于多个任务中至少两个第一任务所属的父任务,确定至少两个第一任务的重映射标识sid,其中,至少两个第一任务属于同一父任务。
可选地,标识确定电路24可以根据多个任务中每个任务分别所属的父任务,确定所述每个任务的重映射标识。或者,标识确定电路24仅对多个任务中属于子任务的至少两个任务进行重映射,得到其对应的重映射标识。
可选地,标识确定电路24可以根据至少两个第一任务的第一标识信息,确定所述至少两个第一任务的重映射标识。第一标识信息用于对每个任务进行标识,一般可在生成任务时为该任务分配第一标识信息。具体地,该第一标识信息可从接收到的任务指令中提取得到。在一些实施例中,属于同一父任务的至少两个第一任务的第一标识信息相同,属于不同父任务的至少两个第一任务的第一标识信息不同。第一标识信息可以但不限于为数字和/或字符。可选地,第一标识信息可以为十六进制、十进制、八进制和二进制的数字。
可选地,前端发送的多个任务中的每个任务的任务指令在被多核处理设备20接收之前就带有第一标识信息,即是第一标识信息由多核处理设备20的外侧(上游模块)进行分配,标识确定电路24可以从每个任务的任务指令中获取每个任务的第一标识信息,并基于第一标识信息,确定至少两个第一任务的重映射标识。或者,多个任务的任务指令也可以被多核处理设备20接收之后,再分配第一标识信息,例如可以在接口电路23中分配第一标识信息,然后将携带有第一标识信息的任务指令发送给标识确定电路24。
举例说明,父任务A在进入多核处理设备20之前被拆分为多个子任务a1~a4,多个子任务a1~a4的父任务为同一个父任务A,所以多个子任务a1~a4的第一标识信息id相同,且都等于1。标识确定电路24根据多个任务a1~a4的第一标识信息id=1,确定至少两个第一任务的重映射标识sid=1。由于父任务B未进行拆分,所以父任务B可以不进行标识重映射。在其他实施方式中,父任务B也可以进行标识重映射,父任务B的第一标识信息id=2,对应地,父任务B的重映射标识sid=2。
在一些实施例中,父任务可拆分成子任务是拆分成类型相同的并行子任务,而且子任务之间无需交互。例如数据搬运DMA任务,可以拆分成多个更小的尺寸的DMA子任务,发送到多核处理设备20进行处理,以提高父任务的处理效率。由于上述多个DMA子任务都来源于同一个数据搬运DMA任务,所以多个DMA子任务的第一标识信息相同,进而重映射标识也相同。
可以理解的,由于设备接收的任务不计其数,若直接将单个任务分配到处理内核21上,会增加系统的负担,故可将多个任务划分至有限的任务类别中,从而能够减轻系统负担,节省系统资源。其中,具有相同重映射标识的任务属于同一任务类别,即同一任务类别中的任务具有相同的重映射标识。本公开实施例中,属于同一父任务的至少两个第一任务的重映射标识相同,即属于同一任务类型。可选地,属于不同父任务的至少两个第一任务也可以属于同一任务类型,此处不做限定。
在一些实施方式中,任务下发者为多核处理设备20的任务来源,可选地,任务下发者可以为任务指令的生成者,其中,任务指令的生成者例如为浏览器或应用程序,不同的任务下发者可以为不同的浏览器或应用程序,或者任务下发者还可以为多核处理设备20接收任务的任务接口,不同的任务下发者可以为不同的任务接口,所以在将多个任务进行任务类别划分时,来自相同任务下发者的任务可以先划分为相同的任务类别,再基于第一标识信息将不同任务下发者的任务继续划分为至少一任务类别。
举例说明,任务A和任务B来源于同一个任务接口,任务C来源于另一个任务接口,所以可以初步将任务A和任务B分为同一任务类别中,将任务C分为另一任务类别中,进一步地,可以根据任务的第一标识信息进行进一步划分,以将同一父任务拆分的子任务划分至同一任务类别中,其中任务A的第一标识信息id=1,任务B的第一标识信息id=2,任务C的第一标识信息id=1,由于任务A和任务C的第一标识信息相同,所以可以确定任务A和任务C由同一个父任务拆分,所以可以确定任务A和任务C的重映射标识相同,例如sid=1,即将任务A和任务C划分为同一任务类别中,综上,通过上述划分,任务A、任务B和任务C属于同一任务类别。
在另一些实施方式中,还可以通过判断多个任务是否相关联来将多个任务划分为至少一任务类别。一般地,相关联的多个任务来源于同一父任务。具体地,可以根据任务中的携带的信息,来判断多个任务中是否携带相关的信息,若多个任务中携带有相关的信息,则确定该多个任务相关联。进一步地,可以将多个任务中相关联的任务划分为一个任务类型,不相关联的任务划分为不同的任务类型。例如,可以根据任务中的携带的时间信息或字符信息,来判断多个任务之间是否存在先后执行顺序,若存在先后执行顺序,则可以将该多个任务划分为同一任务类别,同一任务类别的重映射标识相同。
可以理解的是,在将同一父任务拆分的子任务划分至同一任务类别中的前提下,还可以有多种划分方式,此处不做限定。
状态确认电路25用于接收至少两个第一任务的重映射标识,并基于至少两个第一任务的重映射标识以及至少两个第一任务的任务执行状态信息,确定至少两个第一任务所属父任务是否执行完毕。
可以理解的,属于同一父任务的至少两个第一任务的重映射标识相同,不同父任务的至少两个第一任务的重映射标识不同,所以可以基于至少两个第一任务的重映射标识以及至少两个第一任务的任务执行状态信息,确定至少两个第一任务所属父任务是否执行完毕,从而可以使得同一父任务拆分的子任务也能够保序返回任务完成信号,进一步使得在进行分配任务时可以乱序分配到处理内核21中执行,不必按照接收任务的次序顺序分配到内核中执行,可以提高任务分配的灵活性。
在一些实施方式中,由于将多个任务划分为至少一任务类别,同一任务类别中的任务携带的重映射标识相同,所以可以通过相同的重映射标识和多个任务的任务执行状态信息,确定同一任务类别中的任务是否都已完成,以使得同一类别的任务可以保序返回任务完成信号。其中,由于同一父任务拆分的子任务划分至同一任务类别中,所以在判断同一任务类别的多个任务都执行完成时,必然该任务类别中至少两个第一任务所属父任务也执行完成,从而可以使得同一父任务拆分的子任务也能够保序返回任务完成信号,进一步使得在进行分配任务时可以乱序分配到处理内核21中执行,不必按照接收任务的次序顺序分配到内核中执行,可以提高任务分配的灵活性。
上述方案,通过标识确定电路基于多个任务中至少两个第一任务所属的父任务,确定至少两个第一任务的重映射标识,其中,至少两个第一任务属于同一父任务,然后由状态确认电路根据任务的重映射标识以及至少两个第一任务的任务执行状态信息,可以实现确定至少两个第一任务所属父任务是否执行完毕。
进一步地,可以根据至少两个第一任务的第一标识信息,实现确定至少两个第一任务的重映射标识。
进一步地,通过将多个任务划分为至少一任务类别,同一任务类别中的任务携带的重映射标识相同,不仅可以实现同一任务类别中的任务可以乱序被分配到处理内核中执行,同时还可以实现向前端保序返回任务完成信号。
请参阅图2至图5,图3是本申请提供的多核处理设备中第一缓存器和第二缓存器的一个示例的示意框图,图4是本申请提供的多核处理设备中的任务执行状态信息更新的一个示例流程示意图,图5是本申请提供的多核处理设备中第三缓存器的一个示例的示意框图。
本公开实施例中,任务分配电路22还用于:基于多个任务中每个任务在所属的父任务包括的至少一个任务中所对应的任务分配顺序,确定每个任务的任务序号。
可选地,可以通过计数的方式将同一父任务中的每个任务分配给内核的顺序记录下来,得到任务序号。其中计数方式可以为顺序累加计数,也可以为循环累加计数,例如记录的数值大于预设阈值后,进行循环计数。举例说明,预设阈值例如为10000,且当前记录的数值为10000,在对下一个任务进行计数时,则重新从1开始计数。
可选地,可以通过计数器进行计数,若检测到同一父任务中的任务分配给内核之后就计数器就+1,对应任务序号也+1。可选地,每一父任务对应一个计数器,不同父任务对应的计数器互不影响。在其他实施方式中,不同父任务也可以采用相同的计数器,例如不同父任务分时分配给处理内核11时,或者计数器支持多父任务并行计数,且互不影响。其中,不同任务序号的任务在相应任务缓存空间371的缓存位置不同。
在其他实施方式中,也可以通过计数的方式将同一任务类型中的每个任务分配给内核的顺序记录下来,得到任务序号,此处不再赘述。
本公开实施例中,多核处理设备20还包括第一缓存器36,第一缓存器36包括至少一个内核缓存空间361。可选地,每个处理内核21都有对应的一个内核缓存空间361。可选地,第一缓存器36的类型可以为先进先出存储器,例如为FIFO(First Input FirstOutput)存储器。如图3所示,第一缓存器36包括n个内核缓存空间361,n为任意正整数。
状态确认电路25还用于:接收任务分配电路22发送的任务序号,并在多个处理内核21中至少一个第一处理内核21对应的内核缓存空间361中存储为第一处理内核21分配的任务的标识信息,任务的标识信息包括任务序号和重映射标识。如图3所示,状态确认电路25接收任务分配电路22发送任务序号id_cnt,并在n个处理内核21中至少一个第一处理内核21对应的内核缓存空间361中存储为第一处理内核21分配的标识信息,即任务序号id_cnt和重映射标识sid。可以理解的,任务分配电路22在将任务分配给处理内核21之后会记录该任务对应的第一处理内核21标识,状态确认电路25基于该第一处理内核21标识,可以在接收任务分配电路22发送任务序号id_cnt,找到该第一处理内核21标识对应的内核缓存空间361,从而在该内核缓存空间361中存储为第一处理内核21分配的标识信息。
进一步地,在处理内核21执行完成任务之后会返回任务完成指示subtask_ack,任务完成指示用于指示第二任务执行完毕。状态确认电路25还用于:接收多个处理内核21中第二处理内核21发送的任务完成指示;基于第二处理内核21对应的内核缓存空间361存储的第二任务的标识信息,更新第二任务的任务执行状态信息。如图3所示,状态确认电路25接收第二处理内核21发送的任务完成指示subtask_ack2,其中,第二处理内核21为n个处理内核21中的执行完成任务的处理内核21;然后基于第二处理内核21对应的内核缓存空间361存储的第二任务的任务序号id_cnt和重映射标识sid,更新第二任务的任务执行状态信息,以记录该第二任务已经执行完成。
可选地,多核处理设备20还包括第二缓存器37,第二缓存器37包括至少一个任务缓存空间371,用于缓存任务的任务执行状态信息。可选地,第二缓存器37的类型可以为缓冲器buffer,缓冲器指的是缓冲寄存器,它分输入缓冲器和输出缓冲器两种。前者的作用是将外设送来的数据暂时存放,以便处理器将它取走;后者的作用是用来暂时存放处理器送往外设的数据。有了数控缓冲器,就可以使高速工作的CPU与慢速工作的外设起协调和缓冲作用,实现数据传送的同步。
可选地,如图3所示,任务缓存空间371可以为圆环状缓存空间。任务缓存空间371至少有两套写指针wptr和1套读指针rptr。
举例说明,如图4所示在将第二任务分配到第二处理内核21中执行之前,第二任务在任务缓存空间371中的任务执行状态信息默认为第一状态值,例如为ACK_INVALID,指示未执行;在将第二任务分配给第二处理内核21执行之后,任务执行状态信息更新为指示任务未执行完成的第二状态值,例如为ACK_WAIT,以表示第二任务已经在第二处理内核21中执行,但还未执行完成,在接收到多个处理内核21中第二处理内核21发送的任务完成指示后,将任务执行状态信息更新为第三状态值,例如为ACK_VALID,以指示执行完毕。
具体地,状态确认电路25更新第二任务的任务执行状态信息,包括:基于第二任务的标识信息中包括的重映射标识,得到第二任务所属父任务的任务缓存空间371的信息;基于第二任务的标识信息中包括的任务序号,确定第二任务在所属父任务的任务缓存空间371对应的目标缓存位置;将目标缓存位置缓存的任务执行状态信息更新为指示执行完毕。
设备的状态确认电路25用于:将多个任务中属于同一父任务的至少两个子任务的缓存信息send_cmd缓存至父任务的任务缓存空间371中,其中,子任务的缓存信息包括指示子任务的当前执行状态的状态指示信息;在基于至少两个子任务的缓存信息确定同一父任务包括的所有子任务均执行完毕的情况下,确定同一父任务执行完毕。
在一些实施方式中,缓存信息还包括指示子任务是否为同一父任务包含的至少两个子任务中最后一个子任务的最后子任务标识。最后子任务标识在设备接收该任务之前就已经携带,可以通过获取该任务的任务指令获取该最后子任务标识。比如,在将父任务拆分为多个子任务时,就为多个子任务添加了第一标识信息,以及为最后一个子任务添加了最后子任务标识,且任务指令可以一直携带第一标识信息和最后子任务标识,以能够在设备中标识该任务。
状态确认电路25确定同一父任务执行完毕,包括:在读取到缓存空间中的第一缓存信息的情况下,确定同一父任务执行完毕,其中,第一缓存信息包括的最后子任务标识指示子任务为最后一个子任务并且第一缓存信息包括的状态指示信息指示子任务已执行完毕。其中,通过最后子任务标识可以确定同一父任务的子任务是否均执行完成,在确定均执行完成后才会反馈任务完成信号,以使得同一父任务中的子任务能够保序反馈任务完成信号。
可选地,可以顺序读取任务缓存空间37中的任务的缓存信息,若当前读取位置的缓存信息中的任务执行状态信息为第三状态值,则继续读取下一读取目标缓存位置的缓存信息,直至读取到的缓存信息中的任务执行状态信息为第三状态值且缓存信息包含最后子任务标识,则确定任务类别中同一父任务的子任务均执行完成。
在一些实施方式中,同一任务类型中包括来源于一个父任务的多个子任务,即所有任务的缓存信息中,仅存在一个最后子任务标识。在另一些实施方式中,同一任务类型中包括来源于多个父任务的多个任务,即所有任务的缓存信息中,存在多个最后子任务标识。无论同一任务类型中包括一个父任务,还是多个父任务,当读取到的缓存信息中的任务执行状态信息为第三状态值且缓存信息包含最后子任务标识,则确定任务类别中同一父任务的子任务均执行完成。
当父任务在被多核处理设备20接收之前未进行拆分,可选地,该父任务可以携带最后子任务标识,也可以不携带最后子任务标识。当父任务携带最后子任务标识时,父任务可以在执行完后独自返回任务完成信号,当父任务不携带最后子任务标识时,父任务在执行完后需要等待其后的一父任务中的任务均完成后,才能一起返回任务完成信号。
可选地,状态确认电路25可以与接口电路23连接,从而状态确认电路25返回任务完成信号可以直接通过接口电路23返回给前端;或者,状态确认电路25返回任务完成信号可以经过标识确定电路24,再通过接口电路23返回给前端,其中由于多个父任务可能同时被执行完成,所以可以通过标识确定电路24设计一种任务完成后的反馈机制,以避免在任务完成信号从接口返回时发生冲突。如图5所示,标识确认电路24可以与第三缓存器38连接,第三缓存器38用于根据重映射标识缓存每个任务的第一执行状态。其中,第三缓存器38例如为FIFO缓存器。
可选地,可以按照任务的接收顺序依次轮询第三缓存器38中的每个任务的第一执行状态,或者先按照任务的预设优先级轮询每个任务的第一执行状态,例如先轮询任务类别中优先级高的任务的第一执行状态,然后才按照任务的接收顺序轮询每个任务的第一执行状态。
举例说明,例如一任务类别中包括任务A、B、C、D、X、Y,任务A、B、C、D属于同一父任务,响应于任务类别中同一父任务的任务(即任务A、B、C、D)均执行完成,将任务A、B、C、D的第一执行状态由第四状态值更新为第五状态值,即将任务A、B、C、D对应的第一执行状态由0变为1,表示任务A、B、C、D已执行完成,轮询每个任务的第一执行状态,由于任务C具有优先级,则先轮询任务C的第一执行状态,任务C的第一执行状态为1则向前端反馈任务C的完成信号。具有优先级的任务轮询结束,继续按照任务的接收顺序依次轮询剩余的每个任务的第一执行状态,即依次轮询任务A、B、D的第一执行状态,任务A、B、D的第一执行状态均为1,则依次向前端反馈完成信号。任务的第一执行状态记录为第四状态值,以表示任务未执行完成,进一步当任务类别中同一父任务的任务均执行完成时,可以将第四状态值更新为第五状态值,以表示任务已执行完成。
此外,第四状态值和第五状态值可以为任意数字或字符,此处不做限定。
可选地,不同任务类别可以并行确定其中同一父任务的任务是否均执行完成,且可以响应于不同任务类别中同一父任务的任务均执行完成,并行向前端反馈任务类别下的对应任务的完成信号。各任务类别可以独立返回完成信号,互补影响。可选地,不同任务类别可以根据接收任务的接口对应返回完成信号,即是从哪个接口接收就从哪个接口返回。进一步地,不同任务类别中还可以按照接收任务的顺序按序返回完成信号,例如,根据接收的先后循序按序返回,先接收到的先返回。另外,多个接口并行接收的任务,也可以并行返回对应任务的完成信号,相同接口接收的任务按照接收的先后顺序返回对应任务的完成信号。举例说明,一任务类别包括任务A、B、C、D,任务A、B、C、D属于同一父任务,任务A、B依次从接口1接收,任务C从接口2接收,任务D从接口3接收,另一任务类别包括任务E、F,任务E、F属于同一父任务,任务E在任务C之后也从接口2接收,任务F从接口4接收,且同一时刻上述两个任务类别中的任务均执行完成,其中按照任务的接收顺序依次为任务A、B、C、E、D、F,由于任务A、C、D、F对应不同的接口,所以任务A、C、D、F可以并行返回完成信号,由于任务A、B属对应同一接口且任务B在任务A之后被接收,所以任务B需要在任务A之后返回完成信号,同理虽然任务C、E属于不同任务类别,但是也可以按照先后顺序返回,即先返回任务C的完成信号,后返回任务E的完成信号。
上述方案,通过基于多个任务中每个任务在所属的父任务包括的至少一个任务中所对应的任务分配顺序,确定每个任务的任务序号,接收任务分配电路发送的任务序号,并在多个处理内核中至少一个第一处理内核对应的内核缓存空间中存储为第一处理内核分配的任务的标识信息,可以实现根据任务的任务序号判断属于同一个父任务的多个子任务是否执行完成。
进一步地,通过接收多个处理内核中第二处理内核发送的任务完成指示,任务完成指示用于指示第二任务执行完毕;基于第二处理内核对应的内核缓存空间存储的第二任务的标识信息,更新第二任务的任务执行状态信息,可以实现对已经执行完成的任务进行记录。
进一步地,可以基于内核缓存空间中已经保存的标识信息确定对应的任务缓存空间以及目标缓存位置,从而可以将目标缓存位置缓存的任务执行状态信息更新为指示执行完毕。
进一步地,可以根据至少两个子任务的当前执行状态的状态指示信息,确定同一父任务包括的所有子任务均执行完毕的情况下,确定同一父任务执行完毕,以及通过读取到最后子任务标识来指示子任务为最后一个子任务已执行完毕,则确定同一父任务执行完毕。
请继续参阅图2至图5,为便于理解,下面将对上述多核处理设备实现流程进行具体举例说明。
接口电路23包括X套任务接口,对应输入前端发送的多个任务的任务指令subtask_ins和第一标识信息id,输出subtask_ins和id到标识确定电路24中进行标识重映射,以得到重映射标识sid。其中,接口电路23接收的任务包括父任务和子任务。其中,同一父任务拆分的多个子任务带有相同的第一标识信息,即第一标识信息相同的任务属于同一父任务。同一父任务拆分的多个子任务中的最后一个子任务带有最后子任务标识,未被拆分的父任务也可以带有最后子任务标识。
标识确定电路24输入subtask_ins和id,输出subtask_ins和重映射标识sid。其中,标识确定电路24可以根据id将多个任务进行标识重映射,由于id相同的任务属于同一父任务,所以可以将相同id的任务划分为同一类别中,以实现将同一父任务拆分的任务划分至同一任务类别中,进而能够实现同一父任务的子任务能够乱序返回任务完成信号。此外,为节省系统资源还可以将不同父任务的子任务划分至同一任务类别中。其中,不同父任务的子任务重映射之后的重映射标识也可以相同。
任务分配电路22输入subtask_ins和sid,输出缓存信息send_cmd和subtask_ins。任务分配电路22每发下一个任务到处理内核21中后,就会输出对应任务的缓存信息send_cmd到状态确认电路25。缓存信息包括sid、任务执行状态的状态指示信息和任务序号id_cnt、第一处理内核标识、最后子任务标识。其中,任务分配电路22中每个父任务(或任务类型)对应有一计数器,每下发一个任务到处理内核21,对应父任务(或任务类型)的计数器就会+1,得到该任务的任务序号,以记录该任务在对应的父任务(或任务类型)中分配到处理内核21中执行的次序,即记录该任务是该父任务(或任务类型)中第几个分配到处理内核21中执行的。其中,任务分配电路22可以根据各处理内核21的已分配任务的数量,即每个处理内核21的指令队列存储水线情况,确定执行任务的第一处理内核21,将任务加入到第一处理内核21的等候执行任务队列中,等候执行任务队列可以在任务分配电路22中,当接收到第一处理内核21返回的执行完成信号后,将等候执行任务队列中位于首位的任务发送到处理内核21中执行。subtask_ins输入到对应处理内核21中执行,处理内核21执行完成后会对应返回任务完成指示subtask_ack。如图2所示,多核处理设备20包括n个处理内核21,即处理内核1~n,每时刻,每个处理内核21接收一个subtask_ins返回一个任务完成指示subtask_ack。
状态确认电路25输入n个处理内核21返回的任务完成指示subtask_ack x n和send_cmd,输出任务完成信号task_ack x m。其中,subtask_ack x n表示任务完成指示对应n个处理内核21中的哪一个处理内核21。如图3所示,任务缓存空间371(ack_merge_buf)有两套写指针wptr和1套读指针rptr。状态确认电路25接收send_cmd,一方面,根据缓存信息中的任务序号sid和id_cnt分别确定每个任务对应的任务类别的任务缓存空间371和在相应任务类别的任务缓存空间371的目标缓存位置,通过写指针wptr=id_cnt将缓存信息中的任务执行状态信息和最后标识信息写入至相应任务类别的目标缓存位置中,此时任务执行状态信息为第二状态值,如图4所示,第二状态值例如为ACK_WAIT,以表示该任务未执行完成。另一方面,在接收到subtask_ack x n之前,将任务的缓存信息中的id_cnt和sid存储至内核缓存空间361,每个处理内核21对应一个内核缓存空间361,不同处理内核21对应不同的内核缓存空间361,以使得当处理内核21返回subtask_ack x n到相应的内核缓存空间361时,能够从内核缓存空间361中获得处理内核21对应存储的id_cnt和sid,基于获得的sid可以确定对应任务类别的任务缓存空间371,基于获得的id_cnt可以确定对应任务缓存空间371中的目标缓存位置,以将该目标缓存位置对应的任务执行状态信息更新为第三状态值,第三状态值例如为ACK_VALID以表示该任务已经执行完成。
具体地,当处理内核21返回subtask_ack x n到相应的内核缓存空间361时,会产生写指令ack_wen,ack_wen用于控制任务缓存空间371的另一写指针wptr=sel_id_cnt将缓存信息中的任务执行状态信息写入至相应任务类别的目标缓存位置中,此时任务执行状态信息为第三状态值。
如图4所示,在接收到send_cmd中的状态指示信息之前,任务的任务执行状态信息默认为第一状态值ACK_INVALID;当接收到send_cmd中的状态指示信息之后,说明任务已被下发到处理内核21中执行,则将任务的任务执行状态信息更新为表示任务未执行完成的第二状态值ACK_WAIT;当接收到处理内核21对任务的任务完成指示时,将任务的任务执行状态信息更新为表示任务已执行完成第三状态值ACK_VALID;当返回任务的完成信号到标识确定电路24后,进一步通过指令read_en将第三状态值ACK_VALID恢复到未执行状态值ACK_INVALID。
进一步地,任务缓存空间371的读指针rptr用于指向任务类别的任务缓存空间371中的任务的目标缓存位置,以读取目标缓存位置中的缓存信息。可选地,读指针rptr可以从最小的id_cnt开始读取,并可以顺序读取任务类别的任务缓存空间371中的任务的缓存信息,若当前读取位置的缓存信息中的任务执行状态信息为第三状态值,则继续读取下一读取位置的缓存信息,直至读取到的缓存信息中的任务执行状态信息为第三状态值且缓存信息包含最后子任务标识,则确定任务类别中同一父任务的子任务均执行完成,则输出对应的任务完成信号task_ack x m。
标识确定电路24输入sid和task_ack x m,输出附带id的任务完成信号resp+id。resp+id可以从X套接口中对应的接口返回。如图5所示,valid_cnt表示第一执行状态为第四状态值,当接收到任务指令时,在标识确定电路24中将任务的第一执行状态记录为第四状态值0,当接收到某任务类型的任务完成信号task_ack x m时,将对应任务的第一执行状态更新为第五状态值1,即valid_cnt=1,并将valid_cnt=1存储FIFO存储器id_fifo中。按序或按预设优先级依次轮询每个任务的第一执行状态,为第一执行状态为1的任务生成完成信号,并向前端反馈该任务的完成信号resp+id,向前端反馈完成信号后,将第一执行状态恢复为第一状态值0。其中,不同任务类型的存储器id_fifo,可以并行反馈完成信号。
请参阅图6,图6是本申请提供的任务分配方法的一个示例的流程示意图。本公开实施例中,任务分配方法应用于多核处理设备,该多核处理设备为包括多个处理内核的设备,例如但不限为上述实施例所述的多核处理设备。另外,本方法各步骤的执行主体可以但不限为上述多核处理设备实施例中对应的各电路。
该方法具体可以包括以下步骤:
步骤S11:获取多个处理内核中每个处理内核的当前资源使用状态。
步骤S12:基于多个处理内核中每个处理内核的当前资源使用状态,以单个处理内核为单位进行任务分配。
在一些公开实施例中,基于多个处理内核中每个处理内核的当前资源使用状态,以单个处理内核为单位进行任务分配,包括:在多个处理内核中第一处理内核的当前未完成任务的数量满足任务分配条件的情况下,为第一处理内核分配至少一个任务。
请参阅图7至图8,图7是本申请提供的任务分配方法的一个示例的流程示意图,图8是本申请提供的图7中步骤S24的另一示例的流程示意图。
该方法具体可以包括以下步骤:
步骤S21:接收多个任务的任务指令。
步骤S22:基于多个任务中至少两个第一任务所属的父任务,确定至少两个第一任务的重映射标识,其中,至少两个第一任务属于同一父任务。
步骤S23:获取多个处理内核中每个处理内核的当前资源使用状态。
步骤S24:基于多个任务的任务指令和多个处理内核中每个处理内核的当前资源使用状态,以单个处理内核为单位进行多个任务的分配。
步骤S25:基于至少两个第一任务的重映射标识以及至少两个第一任务的任务执行状态信息,确定至少两个第一任务所属父任务是否执行完毕。
可选地,多个任务可以包括至少一个第一父任务和/或至少一个第二父任务中每个第二父任务的多个子任务。
在一些公开实施方式中,步骤S24包括:子步骤S241和S242:
步骤S241:基于多个任务分别所属的父任务,确定多个任务的任务分配顺序。
步骤S242:按照多个任务的任务分配顺序,进行多个任务的分配。
可选地,多个任务中属于同一父任务的至少两个子任务的任务分配顺序是基于至少两个子任务的任务接收顺序确定的;和/或多个任务中属于不同父任务的至少两个任务的任务分配顺序是基于至少两个任务所属父任务的优先级确定的。
在一些公开实施方式中,步骤S241和步骤S241之间还包括步骤:基于多个任务中每个任务在所属的父任务包括的至少一个任务中所对应的任务分配顺序,确定每个任务的任务序号;在多个处理内核中至少一个第一处理内核对应的内核缓存空间中存储为第一处理内核分配的任务的标识信息,任务的标识信息包括任务序号和重映射标识。
请参阅图9至图10,图9是本申请提供的任务分配方法的又一示例的流程示意图,图10是本申请提供的图9中步骤S353的另一示例的流程示意图。
该方法具体可以包括以下步骤:
本公开实施例中,步骤S25可以包括子步骤S351、S352、S353和S354:
步骤S351:将多个任务中属于同一父任务的至少两个子任务的缓存信息缓存至父任务的任务缓存空间中,其中,子任务的缓存信息包括指示子任务的当前执行状态的状态指示信息。
步骤S352:接收多个处理内核中第二处理内核发送的任务完成指示,任务完成指示用于指示第二任务执行完毕。
步骤S353:基于第二处理内核对应的内核缓存空间存储的第二任务的标识信息,更新第二任务的任务执行状态信息。
步骤S354:在基于至少两个子任务的缓存信息确定同一父任务包括的所有子任务均执行完毕的情况下,确定同一父任务执行完毕。
在一些公开实施方式中,步骤S353可以包括子步骤S3531、S3532和S3533:
步骤S3531:基于第二任务的标识信息中包括的重映射标识,得到第二任务所属父任务的任务缓存空间的信息。
步骤S3532:基于第二任务的标识信息中包括的任务序号,确定第二任务在所属父任务的任务缓存空间对应的目标缓存位置。
步骤S3533:将目标缓存位置缓存的任务执行状态信息更新为指示执行完毕。
在一些公开实施例中,任务缓存空间为圆环状缓存空间。
在一些公开实施例中,缓存信息还包括指示子任务是否为同一父任务包含的至少两个子任务中最后一个子任务的最后子任务标识,则上述步骤S354包括:在读取到缓存空间中的第一缓存信息的情况下,确定同一父任务执行完毕,其中,第一缓存信息包括的最后子任务标识指示子任务为最后一个子任务并且第一缓存信息包括的状态指示信息指示子任务已执行完毕。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
可以理解的,上述方法实施例中各步骤的具体说明可参考上述多核处理设备实施例中的相应描述,此处不再赘述。
请参阅图11,图11是本申请提供的任务分配装置的一个示例的框架示意图。任务分配装置100包括存储器101和处理器102,处理器102用于执行存储器101中存储的程序指令,以实现上述任一任务分配方法实施例的步骤。在一个具体的实施场景中,任务分配装置可以包括但不限于:微型计算机、服务器,此外,任务分配装置还可以包括笔记本电脑、平板电脑等移动设备,在此不做限定。
具体而言,处理器102用于控制其自身以及存储器101以实现上述任一多任务分配方法实施例的步骤。处理器102还可以称为CPU(Central Processing Unit,中央处理单元)。处理器102可能是一种集成电路设备,具有信号的处理能力。处理器102还可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器102可以由集成电路设备共同实现。
上述方案,根据处理内核的资源使用情况,以单个处理内核为单位,将任务灵活分配给处理内核执行,避免了所有处理内核为单位同时进行任务分配导致空闲处理内核无法接收任务的情况,可以提高处理内核资源的使用率。
请参阅图12,图12为本申请提供的计算机可读存储介质的一个示例的框架示意图。计算机可读存储介质200存储有能够被处理器运行的程序指令201,程序指令201用于实现上述任一多任务分配方法实施例的步骤。
上述方案,根据处理内核的资源使用情况,以单个处理内核为单位,将任务灵活分配给处理内核执行,避免了所有处理内核为单位同时进行任务分配导致空闲处理内核无法接收任务的情况,可以提高处理内核资源的使用率。
可以理解的是,本申请实施例提供的装置或设备具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (20)

1.一种多核处理设备,其特征在于,包括:
多个处理内核,用于执行任务;
任务分配电路,用于基于所述多个处理内核的当前资源使用状态,以单个所述处理内核为单位进行任务分配。
2.根据权利要求1所述的设备,其特征在于,所述任务分配电路用于:
在所述多个处理内核中第一处理内核的当前未完成任务的数量满足任务分配条件的情况下,为所述第一处理内核分配至少一个任务。
3.根据权利要求1或2所述的设备,其特征在于,所述设备还包括接口电路,用于接收多个任务的任务指令;
所述任务分配电路用于:基于所述多个任务的任务指令和所述多个处理内核中每个处理内核的当前资源使用状态,以单个所述处理内核为单位进行所述多个任务的分配。
4.根据权利要求3所述的设备,其特征在于,所述多个任务包括至少一个第一父任务和/或至少一个第二父任务中每个第二父任务的多个子任务;
和/或,所述任务分配电路进行所述多个任务的分配,包括:
基于所述多个任务分别所属的父任务,确定所述多个任务的任务分配顺序;
按照所述多个任务的任务分配顺序,进行所述多个任务的分配。
5.根据权利要求3至4中任一项所述的设备,其特征在于,所述多个任务中属于同一父任务的至少两个子任务的任务分配顺序是基于所述至少两个子任务的任务接收顺序确定的;和/或
所述多个任务中属于不同父任务的至少两个任务的任务分配顺序是基于所述至少两个任务所属父任务的优先级确定的。
6.根据权利要求3至5任一项所述的设备,其特征在于,所述设备还包括:
标识确定电路,用于基于所述多个任务中至少两个第一任务所属的父任务,确定所述至少两个第一任务的重映射标识,其中,所述至少两个第一任务属于同一父任务;
状态确认电路,用于接收所述至少两个第一任务的重映射标识,并基于所述至少两个第一任务的重映射标识以及所述至少两个第一任务的任务执行状态信息,确定所述至少两个第一任务所属父任务是否执行完毕。
7.根据权利要求3至6中任一项所述的设备,其特征在于,所述设备还包括第一缓存器,包括至少一个内核缓存空间;
所述任务分配电路还用于:基于所述多个任务中每个任务在所属的父任务包括的至少一个任务中所对应的任务分配顺序,确定所述每个任务的任务序号;
状态确认电路用于:接收所述任务分配电路发送的所述任务序号,并在所述多个处理内核中至少一个第一处理内核对应的内核缓存空间中存储为所述第一处理内核分配的任务的标识信息,所述任务的标识信息包括任务序号和重映射标识。
8.根据权利要求3至7中任一项所述的设备,其特征在于,状态确认电路还用于:
接收所述多个处理内核中第二处理内核发送的任务完成指示,所述任务完成指示用于指示第二任务执行完毕;
基于所述第二处理内核对应的内核缓存空间存储的所述第二任务的标识信息,更新所述第二任务的任务执行状态信息。
9.根据权利要求8所述的设备,其特征在于,所述设备还包括第二缓存器,包括至少一个任务缓存空间,用于缓存所述任务的任务执行状态信息;
所述状态确认电路更新所述第二任务的任务执行状态信息,包括:
基于所述第二任务的标识信息中包括的重映射标识,得到所述第二任务所属父任务的任务缓存空间的信息;
基于所述第二任务的标识信息中包括的任务序号,确定所述第二任务在所属父任务的任务缓存空间对应的目标缓存位置;
将所述目标缓存位置缓存的任务执行状态信息更新为指示执行完毕。
10.根据权利要求3至8中任一项所述的设备,其特征在于,任务缓存空间为圆环状缓存空间;和/或,
所述设备的状态确认电路用于:
将所述多个任务中属于同一父任务的至少两个子任务的缓存信息缓存至所述父任务的任务缓存空间中,其中,所述子任务的缓存信息包括指示所述子任务的当前执行状态的状态指示信息;
在基于所述至少两个子任务的缓存信息确定所述同一父任务包括的所有子任务均执行完毕的情况下,确定所述同一父任务执行完毕。
11.根据权利要求10所述的设备,其特征在于,所述缓存信息还包括指示所述子任务是否为所述同一父任务包含的至少两个子任务中最后一个子任务的最后子任务标识;
所述状态确认电路确定所述同一父任务执行完毕,包括:
在读取到所述缓存空间中的第一缓存信息的情况下,确定所述同一父任务执行完毕,其中,所述第一缓存信息包括的最后子任务标识指示所述子任务为最后一个子任务并且所述第一缓存信息包括的状态指示信息指示所述子任务已执行完毕。
12.一种任务分配方法,其特征在于,应用于多核处理设备,包括:
获取多个处理内核中每个处理内核的当前资源使用状态;
基于所述多个处理内核中每个处理内核的当前资源使用状态,以单个所述处理内核为单位进行任务分配。
13.根据权利要求12所述的方法,其特征在于,所述基于多个处理内核中每个处理内核的当前资源使用状态,以单个所述处理内核为单位进行任务分配,包括:
在所述多个处理内核中第一处理内核的当前未完成任务的数量满足任务分配条件的情况下,为所述第一处理内核分配至少一个任务;
和/或,所述方法还包括:
接收多个任务的任务指令;
所述基于所述多个处理内核中每个处理内核的当前资源使用状态,以单个所述处理内核为单位进行任务分配,包括:
基于所述多个任务的任务指令和所述多个处理内核中每个处理内核的当前资源使用状态,以单个所述处理内核为单位进行所述多个任务的分配。
14.根据权利要求13所述的方法,其特征在于,所述进行所述多个任务的分配,包括:
基于所述多个任务分别所属的父任务,确定所述多个任务的任务分配顺序;
按照所述多个任务的任务分配顺序,进行所述多个任务的分配;
和/或,所述多个任务中属于同一父任务的至少两个子任务的任务分配顺序是基于所述至少两个子任务的任务接收顺序确定的;
和/或,所述多个任务中属于不同父任务的至少两个任务的任务分配顺序是基于所述至少两个任务所属父任务的优先级确定的。
15.根据权利要求13至14任一项所述的方法,其特征在于,所述方法还包括:
基于所述多个任务中至少两个第一任务所属的父任务,确定所述至少两个第一任务的重映射标识,其中,所述至少两个第一任务属于同一父任务;
基于所述至少两个第一任务的重映射标识以及所述至少两个第一任务的任务执行状态信息,确定所述至少两个第一任务所属父任务是否执行完毕;和/或,
所述方法还包括:
基于所述多个任务中每个任务在所属的父任务包括的至少一个任务中所对应的任务分配顺序,确定所述每个任务的任务序号;
在所述多个处理内核中至少一个第一处理内核对应的内核缓存空间中存储为所述第一处理内核分配的任务的标识信息,所述任务的标识信息包括任务序号和重映射标识。
16.根据权利要求13至15中任一项所述的方法,其特征在于,所述方法还包括:
接收所述多个处理内核中第二处理内核发送的任务完成指示,所述任务完成指示用于指示第二任务执行完毕;
基于所述第二处理内核对应的内核缓存空间存储的所述第二任务的标识信息,更新所述第二任务的任务执行状态信息。
17.根据权利要求16所述的方法,其特征在于,所述基于所述第二处理内核对应的内核缓存空间存储的所述第二任务的标识信息,更新所述第二任务的任务执行状态信息,包括:
基于所述第二任务的标识信息中包括的重映射标识,得到所述第二任务所属父任务的任务缓存空间的信息;
基于所述第二任务的标识信息中包括的任务序号,确定所述第二任务在所属父任务的任务缓存空间对应的目标缓存位置;
将所述目标缓存位置缓存的任务执行状态信息更新为指示执行完毕。
18.根据权利要求13至17任一项所述的方法,其特征在于,所述方法还包括:
将所述多个任务中属于同一父任务的至少两个子任务的缓存信息缓存至所述父任务的任务缓存空间中,其中,所述子任务的缓存信息包括指示所述子任务的当前执行状态的状态指示信息;
在基于所述至少两个子任务的缓存信息确定所述同一父任务包括的所有子任务均执行完毕的情况下,确定所述同一父任务执行完毕;和/或,
所述缓存信息还包括指示所述子任务是否为所述同一父任务包含的至少两个子任务中最后一个子任务的最后子任务标识;
所述在基于所述至少两个子任务的缓存信息确定所述同一父任务包括的所有子任务均执行完毕的情况下,确定所述同一父任务执行完毕,包括:
在读取到所述缓存空间中的第一缓存信息的情况下,确定所述同一父任务执行完毕,其中,所述第一缓存信息包括的最后子任务标识指示所述子任务为最后一个子任务并且所述第一缓存信息包括的状态指示信息指示所述子任务已执行完毕。
19.一种任务分配装置,其特征在于,包括存储器和处理器,所述处理器用于执行所述存储器中存储的程序指令,以执行权利要求12至18任一项所述的方法。
20.一种计算机可读存储介质,其特征在于,存储有能够被处理器运行的程序指令,所述程序指令用于实现权利要求12至18任一项所述的方法。
CN202011480732.7A 2020-12-15 2020-12-15 多核处理设备、任务分配方法、装置及存储介质 Pending CN114637594A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011480732.7A CN114637594A (zh) 2020-12-15 2020-12-15 多核处理设备、任务分配方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011480732.7A CN114637594A (zh) 2020-12-15 2020-12-15 多核处理设备、任务分配方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN114637594A true CN114637594A (zh) 2022-06-17

Family

ID=81944793

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011480732.7A Pending CN114637594A (zh) 2020-12-15 2020-12-15 多核处理设备、任务分配方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN114637594A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116069480A (zh) * 2023-04-06 2023-05-05 杭州登临瀚海科技有限公司 一种处理器及计算设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090307663A1 (en) * 2008-06-10 2009-12-10 Microsoft Corporation Debugging support for tasks in multithreaded environments
CN103473134A (zh) * 2013-09-23 2013-12-25 哈尔滨工程大学 一种异构多核处理器的依赖任务调度方法
CN103729241A (zh) * 2013-12-12 2014-04-16 华中科技大学 一种多核环境下OpenMP任务并行的优化方法
CN109697122A (zh) * 2017-10-20 2019-04-30 华为技术有限公司 任务处理方法、设备及计算机存储介质
CN111176828A (zh) * 2018-11-09 2020-05-19 三星电子株式会社 包括多核处理器的片上系统及其任务调度方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090307663A1 (en) * 2008-06-10 2009-12-10 Microsoft Corporation Debugging support for tasks in multithreaded environments
CN103473134A (zh) * 2013-09-23 2013-12-25 哈尔滨工程大学 一种异构多核处理器的依赖任务调度方法
CN103729241A (zh) * 2013-12-12 2014-04-16 华中科技大学 一种多核环境下OpenMP任务并行的优化方法
CN109697122A (zh) * 2017-10-20 2019-04-30 华为技术有限公司 任务处理方法、设备及计算机存储介质
CN111176828A (zh) * 2018-11-09 2020-05-19 三星电子株式会社 包括多核处理器的片上系统及其任务调度方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116069480A (zh) * 2023-04-06 2023-05-05 杭州登临瀚海科技有限公司 一种处理器及计算设备
CN116069480B (zh) * 2023-04-06 2023-06-13 杭州登临瀚海科技有限公司 一种处理器及计算设备

Similar Documents

Publication Publication Date Title
CN106371894B (zh) 一种配置方法、装置和数据处理服务器
CN108090731B (zh) 一种信息处理方法及设备
US20210216368A1 (en) Hardware accelerated dynamic work creation on a graphics processing unit
WO2019218708A1 (zh) 一种任务处理方法及处理装置、计算机系统
CN109697122B (zh) 任务处理方法、设备及计算机存储介质
CN113641457A (zh) 容器创建方法、装置、设备、介质及程序产品
JP2013506179A (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
US10275558B2 (en) Technologies for providing FPGA infrastructure-as-a-service computing capabilities
KR20210095690A (ko) 리소스 관리 방법과 장치, 전자 디바이스 및 기록 매체
US7243354B1 (en) System and method for efficiently processing information in a multithread environment
CN115904671B (zh) 一种边缘计算环境下的任务调度方法、装置、设备及介质
CN111176829A (zh) 虚拟化处理系统中的物理功能和虚拟功能的灵活资源分配
JP2022121525A (ja) 処理装置、処理方法及びプログラム
CN114637536A (zh) 任务处理方法、计算协处理器、芯片及计算机设备
CN114253713B (zh) 一种基于reactor的异步批处理方法及系统
WO2022160628A1 (zh) 命令处理装置、方法、电子设备以及计算机可读存储介质
US8972693B2 (en) Hardware managed allocation and deallocation evaluation circuit
CN114637594A (zh) 多核处理设备、任务分配方法、装置及存储介质
CN108958903B (zh) 嵌入式多核中央处理器任务调度方法与装置
CN103218259A (zh) 计算任务的调度和执行
US9405470B2 (en) Data processing system and data processing method
US20070043869A1 (en) Job management system, job management method and job management program
JP2013041361A (ja) リソース調停システム及び調停方法
CN113268356A (zh) 基于LINUX系统的多GPU板卡bounding的系统、方法及介质
CN108958905B (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