CN116414464B - 调度任务的方法和装置、电子设备和计算机可读介质 - Google Patents

调度任务的方法和装置、电子设备和计算机可读介质 Download PDF

Info

Publication number
CN116414464B
CN116414464B CN202310606983.2A CN202310606983A CN116414464B CN 116414464 B CN116414464 B CN 116414464B CN 202310606983 A CN202310606983 A CN 202310606983A CN 116414464 B CN116414464 B CN 116414464B
Authority
CN
China
Prior art keywords
task
blocking
information
state
tasks
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.)
Active
Application number
CN202310606983.2A
Other languages
English (en)
Other versions
CN116414464A (zh
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.)
Moore Threads Technology Co Ltd
Original Assignee
Moore Threads 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 Moore Threads Technology Co Ltd filed Critical Moore Threads Technology Co Ltd
Priority to CN202310606983.2A priority Critical patent/CN116414464B/zh
Publication of CN116414464A publication Critical patent/CN116414464A/zh
Application granted granted Critical
Publication of CN116414464B publication Critical patent/CN116414464B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Advance Control (AREA)

Abstract

本公开涉及一种调度任务的方法,其包括:接收并且存储多个任务;从所述多个任务中确定就绪状态的任务,其中,所述就绪状态的任务不存在阻塞信息,所述阻塞信息表征执行相应任务所需的依赖资源未被满足;以及从所述就绪状态的任务中确定目标任务。本公开还涉及一种调度任务的装置。此外,本公开还涉及一种对应的电子设备和计算机可读介质。

Description

调度任务的方法和装置、电子设备和计算机可读介质
技术领域
本公开涉及芯片技术领域,尤其是涉及一种调度任务的方法和装置。此外,本公开还涉及一种对应的电子设备和计算机可读介质。
背景技术
芯片在处理任务时,多个流水线并行执行多个任务。如何将多个任务合理地分配给多个流水线,使得多个流水线的运行效率更高是本领域研发人员一直探索的目标。在此背景下,所面临的一项挑战是,如何调度任务,使得调度处理更高效,从而多个任务更合理地分配给多个流水线,进而使得多个流水线的运行效率更高。
为了满足这种需求,需要一种改进的任务调度方案,其尽可能使调度处理更高效。
发明内容
根据本公开的一个方面,提供了一种调度任务的方法,其包括以下步骤:
- 接收并存储多个任务,
- 从所述多个任务中确定就绪状态的任务,其中,所述就绪状态的任务不存在阻塞信息,所述阻塞信息表征执行相应任务所需的依赖资源未被满足,以及
- 从所述就绪状态的任务中确定目标任务。
根据该方法的一些示例性实施例,所述方法还包括:响应于接收到唤醒信息,清除唤醒信息对应任务的目标阻塞信息,其中,所述唤醒信息表征目标阻塞信息对应的依赖资源已被满足,所述目标阻塞信息为所述任务的阻塞信息中的至少一种。
根据该方法的一些示例性实施例,所述阻塞信息包括以下各项中的至少一个:需要配置中继寄存器、指令缓存缺失、工作组同步未满足、互斥条件未满足、栅栏条件未满足、异步传输信号未满足、休眠条件未满足。
根据该方法的一些示例性实施例,所述方法还包括:确定接收到的任务是否需要配置中继寄存器;在确定需要配置中继寄存器的情况下,确定所述任务存在阻塞信息,所述阻塞信息包括需要配置中继寄存器;在确定不需要配置中继寄存器的情况下,确定所述任务为就绪状态的任务。
根据该方法的一些示例性实施例,从所述就绪状态的任务中确定目标任务,包括:根据所述就绪状态的任务的优先级和排队时间中的至少一个,从所述就绪状态的任务中确定所述目标任务。
根据该方法的一些示例性实施例,所述方法还包括:将所述目标任务发送给指令控制器,并将所述目标任务的状态信息设置为运行状态,其中所述指令控制器用于为所述目标任务取指和译码。
根据该方法的一些示例性实施例,所述方法还包括:响应于接收到所述指令控制器为所述目标任务取指时确定指令缓存缺失而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。
根据该方法的一些示例性实施例,所述方法还包括:响应于接收到栅栏计数器针对译码后的目标任务确定栅栏条件未满足而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。
根据该方法的一些示例性实施例,所述方法还包括:响应于接收到流水线执行译码后的目标任务时确定工作组同步未满足、互斥条件未满足、异步传输信号未满足或休眠条件未满足而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。
根据该方法的一些示例性实施例,所述方法还包括:响应于任务存储空间的条目都存储有任务,停止接收任务,直至有任务存储空间被释放;响应于相应任务执行结束,释放相应任务所占用的空间。
根据该方法的一些示例性实施例,所述多个任务具有不同粒度,所述粒度表征相应任务包括的工作项实例的最大数量。
根据该方法的一些示例性实施例,通过多个流水线并行执行译码后的多个目标任务的不同指令。
根据本公开的另一方面,提供了一种调度任务的装置,其包括以下模块:
- 存储单元,其用于接收并存储多个任务,
- 监测单元,其用于从所述多个任务中确定就绪状态的任务,其中,所述就绪状态的任务不存在阻塞信息,所述阻塞信息表征执行相应任务所需的依赖资源未被满足,以及
- 任务选择器,其用于从所述就绪状态的任务中确定目标任务。
根据该装置的一些示例性实施例,所述存储单元还被配置用于,响应于接收到唤醒信息,清除唤醒信息对应任务的目标阻塞信息,其中,所述唤醒信息表征目标阻塞信息对应的依赖资源已被满足,所述目标阻塞信息为所述任务的阻塞信息中的至少一种。
根据该装置的一些示例性实施例,所述阻塞信息包括以下各项中的至少一个:需要配置中继寄存器、指令缓存缺失、工作组同步未满足、互斥条件未满足、栅栏条件未满足、异步传输信号未满足、休眠条件未满足。
根据该装置的一些示例性实施例,所述监测单元还被配置用于,确定接收到的任务是否需要配置中继寄存器;在确定需要配置中继寄存器的情况下,确定所述任务存在阻塞信息,所述阻塞信息包括需要配置中继寄存器;在确定不需要配置中继寄存器的情况下,确定所述任务为就绪状态的任务。
根据该装置的一些示例性实施例,从所述就绪状态的任务中确定目标任务,包括:根据所述就绪状态的任务的优先级和排队时间中的至少一个,从所述就绪状态的任务中确定所述目标任务。
根据该装置的一些示例性实施例,所述任务选择器还被配置用于,将所述目标任务发送给指令控制器,并将所述目标任务的状态信息设置为运行状态,其中所述指令控制器用于为所述目标任务取指和译码。
根据该装置的一些示例性实施例,所述存储单元还被配置用于,响应于接收到所述指令控制器为所述目标任务取指时确定指令缓存缺失而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。
根据该装置的一些示例性实施例,所述存储单元还被配置用于,响应于接收到栅栏计数器针对译码后的目标任务确定栅栏条件未满足而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。
根据该装置的一些示例性实施例,所述存储单元还被配置用于,响应于接收到流水线执行译码后的目标任务时确定工作组同步未满足、互斥条件未满足、异步传输信号未满足或休眠条件未满足而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。
根据该装置的一些示例性实施例,所述存储单元还被配置用于,响应于任务存储空间的条目都存储有任务,停止接收任务,直至有任务存储空间被释放;响应于相应任务执行结束,释放相应任务所占用的空间。
根据该装置的一些示例性实施例,所述多个任务具有不同粒度,所述粒度表征相应任务包括的工作项实例的最大数量。
根据该装置的一些示例性实施例,通过多个流水线并行执行译码后的多个目标任务的不同指令。
根据本公开的另一方面,提供了一种电子设备,其包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器存储的指令,以执行根据上述实施例中任一项所述的方法。
根据本公开的另一方面,提供了一种其上存储有指令的计算机可读介质,所述指令当被执行时使得计算设备执行根据上述实施例中任一项所述的方法。
通过本公开的一个实施例,由于可以同时接收并且存储多个任务并且又从这些任务中确定就绪状态的任务以及从就绪状态的任务中确定目标任务,可以实现就绪状态的任务与阻塞状态(存在阻塞信息)的任务的分离式管理,使得各部分相对独立,减少依赖。同时,阻止了阻塞状态的任务参与调度,使得调度处理更高效。
附图说明
现在将参照附图描述本公开的具体示例性实施例。然而,本公开可以以很多不同的形式实施,并且不应该被解读为限于本文所阐述的实施例;相反,这些实施例被提供以便使该公开全面而完整,并且将向本领域技术人员完全表达本公开的范围。在对附图所示特定示例性实施例的详细描述中所使用的术语不打算对本公开是限制性的。在附图中,类似的数字指代类似的部件。
图1示出根据本公开的一个实施例的调度任务的方法100的流程图。
图2示出根据本公开的一个实施例的兼容多种任务工作模式的任务执行装置200的框图。
图3示出根据本公开的一个实施例的调度任务的装置300的框图。
图4示出根据本公开的另一实施例的调度任务的装置400的示意图。
图5示出根据本公开的一个实施例的wave状态信息表/调度信息队列中各个状态之间的转化图。
图6示出根据本公开的一个实施例的wave调度器与中继寄存器控制器之间的交互的示意图。
图7示出根据本公开的另一实施例的wave调度器与中继寄存器控制器之间的交互的示意图。
图8示出根据本公开一个实施例的计算设备的框图。
具体实施方式
为使本公开的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本公开技术方案作进一步说明。应该进一步理解,使用在该说明书中,术语“包括”意指存在所陈述的特征、步骤、操作、部件和/或组件,但是并不排除存在或添加一个或更多个其他特征、步骤、操作、部件、组件和/或其组成的组。
如前所述,如何将任务合理分配给流水线是亟待解决的问题。为便于理解,下文以GPU架构为例进行说明,应理解,本公开实施例适用于任何芯片架构。
现有桌面GPU架构基本使用了纯SIMD(Single Instruction Multiple Data,单指令多数据流)32或CUDA的SIMT(Single Instruction Multiple Thread,单指令多线程)32,这种纯SIMD32的小核心结构固定将32个工作项实例组装在一起执行,并行性很好。通常在并行程序设计中使用SIMD32结构,32个工作项实例同时执行相同的操作等。同样的任务,采用小核心结构,使用的SIMD数量就会变多,从而隐藏延迟。
然而,在一些特殊情况下,如片段着色器中,使用较多插值并直接进行颜色属性输出,无需太多过于复杂的计算。此时SIMD数量变多会增加线程调度次数、指令发射和取指次数。
在部分移动GPU架构中,为了减少内核面积和降低功耗,通常会采用SIMD128这种128个工作项实例组装在一起执行的大核心结构,这种组装的SIMD任务粒度较大,对于小任务,资源浪费比较严重。尤其是在执行SIMD32这种小核心状态下的分支程序或者小核心状态下的生产者-消费者模型程序时,各工作项实例在处理不同分支时,需要通过工作项实例有效掩码将部分工作项实例去激活地执行,导致内核中ALU利用率不高,性能降低。显然,SIMD32和SIMD128分别适合于不同的应用类型。应理解,为适用于不同的应用类型,可以存在多种SIMD结构,例如,SIMD32、SIMD64以及SIMD128等,为便于理解,下文以SIMD32和SIMD128结构为例进行说明。
在以下实施例中,设定指令执行流水线的执行粒度为32个工作项实例,浮点或整型ALU计算单元单次可并行执行32个工作项实例。设定模式为可兼容两种任务工作模式:wave32、wave128模式为例进行说明。
图1示出根据本公开的一个实施例的调度任务的方法100的流程图。
如图1中所示,所述方法100可以包括:
步骤S100,接收并存储多个任务;
步骤S200,从所述多个任务中确定就绪状态的任务,其中,所述就绪状态的任务不存在阻塞信息,所述阻塞信息表征执行相应任务所需的依赖资源未被满足;以及
步骤S300,从所述就绪状态的任务中确定目标任务。
示例性地,所述多个任务可以包括wave32(wave是一种自定义的SIMD线程束,wave32表示32个工作项实例组装成的并行线程束,wave128表示128个工作项实例组装成的并行线程束)和wave128中的至少一种。替代地或附加地,任务也可以包括wave64等。示例性地,任务可以分为阻塞状态的任务和就绪状态的任务,其中阻塞状态的任务表示相应任务存在阻塞信息,而就绪状态的任务表示相应任务不存在阻塞信息。示例性,从所有就绪状态的任务中选择至少一个目标任务,而不从阻塞状态的任务中选择目标任务。
其中,阻塞信息可以针对任务灵活设置,阻塞信息可以包括一种或多种,不同任务对应的阻塞信息可以相同或不同。示例性地,阻塞信息的类型可以是针对执行该任务需要的存储资源、不同处理阶段所需的数据依赖资源等来设置,本公开对此不作限制。例如,对于部分任务,其需要配置中继寄存器,则可以将需要配置中继寄存器设置为其阻塞信息。例如,执行该任务包括取指、译码过程,可以分别针对取指、译码过程对应的阻塞信息等。
通过这种方式,可以实现就绪状态的任务与阻塞状态的任务的分离式管理,使得各部分相对独立,减少依赖。同时,禁止了阻塞状态的任务参与调度,使得调度处理更快。此外,任务在调度的过程中,由于多种资源限制会不断切换到阻塞、就绪和运行状态。也正是由于这种多因素资源限制,才需要存储多个任务,使多个任务在任务调度器中来回切换,通过选择出多个就绪状态的任务作为目标任务,分别发射指令进入各个流水线中并行执行,从而达到提高并行执行效率的目的。
在一种可能的实现方式中,所述方法100还可以包括:响应于接收到唤醒信息,清除唤醒信息对应任务的目标阻塞信息,其中,所述唤醒信息表征目标阻塞信息对应的依赖资源已被满足,所述目标阻塞信息为所述任务的阻塞信息中的至少一种。
示例性地,在接收并且存储多个任务之后,可以从这些任务中分别检测出是否携带有需要配置资源的信息。如果检测到某一任务携带有需要配置资源的信息,则将该任务确定为阻塞状态的任务。直至收到所需配置资源已完成的唤醒信息之后,才将对应的阻塞信息(即需要配置资源)清除。如果相应任务的所有阻塞信息都被清除,则将该任务确定为就绪状态的任务。替代地,如果检测到某一任务完全没有任何阻塞信息,则可以将该任务直接确定为就绪状态的任务。
通过这种方式,可以及时将处于阻塞状态的任务解除阻塞,以便参与后续调度。
在一种可能的实现方式中,所述阻塞信息可以包括以下各项中的至少一个:需要配置中继寄存器、指令缓存缺失、工作组同步未满足、互斥条件未满足、栅栏条件未满足、异步传输信号未满足、休眠条件未满足。
示例性地,所述阻塞信息可以包括随着任务信息携带而来的阻塞信息、如在编译器编译过程中确定的需要配置中继寄存器,也可以包括在将相应任务发送给指令控制器之后确定的阻塞信息、如在为相应任务取指过程中确定的指令缓存缺失、在相应任务经过译码后的流水线指令进入依赖关系栅栏队列后确定的栅栏条件、以及在相应流水线指令进入流水线中执行时确定的工作组同步未满足、互斥条件未满足、异步传输信号未满足以及休眠条件未满足等。例如,可以使用监视器监控存储所述阻塞信息的阻塞信息表的内容,当有唤醒信号到来,对应地消除相应的阻塞信息,直至相应任务的所有阻塞信息都被消除、即相应任务所依赖的资源全部得到满足,将相应任务的状态设置为就绪状态,等待调度。
示例性地,工作组同步是指同一个工作组内的多个任务共享数据,需要所述多个任务都执行到同步指令,完成同步操作之后,同步计数器才能发消息给调度处理器以唤醒各个任务继续执行。例如,在执行所述待执行任务时执行到同步指令时(即检测到属于同一个工作组的多个任务需要共享数据时),则暂停执行所述待执行任务并且将所述待执行任务变更为未就绪状态的任务。直至所述多个任务都执行到同步指令,完成同步操作之后,同步计数器才能发消息给调度处理器以唤醒各个任务继续执行。互斥条件是指多个任务共享一些资源,但是每次只能给一个任务分配这些资源,哪个任务赢得这些资源就执行该任务,在此过程中其他任务只能等待;异步传输信号是指需要等待所等的那个任务完成异步操作,异步流水线才会发送消息给调度处理器以唤醒相应的任务;休眠条件是指执行了休眠指令,比如休眠5秒,就会有一个计数器记录是否达到指定时间,如果达到了就会发送消息给调度处理器以唤醒相应的任务。在流水线执行指令时检测到上述待解除的依赖关系,就会发消息给调度处理器。调度处理器在接收到相应流水线发出的有关待解除的依赖关系的消息后,将相应的任务从运行状态变更为阻塞状态,并且更新对应的待解除的依赖关系。
通过这种方式,可以在流水线中执行相应任务时暂时让出相应任务所占用的计算资源供其他任务使用,使得资源利用率更高。
在一种可能的实现方式中,所述方法100还可以包括:确定接收到的任务是否需要配置中继寄存器;在确定需要配置中继寄存器的情况下,确定所述任务存在阻塞信息,所述阻塞信息包括需要配置中继寄存器;在确定不需要配置中继寄存器的情况下,确定所述任务为就绪状态的任务。
示例性地,在接收并且存储任务之后,随着任务信息携带而来的可能的阻塞信息一般就是需要配置中继寄存器,因为在编译器编译过程中就可以确定相应任务是否需要配置中继寄存器。编译器将需要配置中继寄存器这一阻塞信息配置进命令控制流中,随着任务一起存储任务调度器中。例如,在检测新存储的任务是否有阻塞信息时就是检测该任务是否携带需要配置中继寄存器这一阻塞信息。如果检测到新存储的任务不需要配置中继寄存器,则可以将该任务确定为就绪状态的任务;而如果检测到新存储的任务需要配置中继寄存器,则可以将该任务确定为阻塞状态的任务。
在一种可能的实现方式中,从所述就绪状态的任务中确定目标任务,包括:根据所述就绪状态的任务的优先级和排队时间中的至少一个,从所述就绪状态的任务中确定所述目标任务。
示例性地,可以通过任务选择器根据所述就绪状态的任务的优先级和排队时间中的至少一个,从所述就绪状态的任务中确定所述目标任务。在一个示例中,任务选择器可以从所述就绪状态的任务中确定优先级最高的任务作为所述目标任务并且在优先级相同的情况下确定排队时间最长的任务作为所述目标任务。
通过这种方式,可以视优先级高低对就绪状态的任务排序,从而使最紧急的任务得到执行并且在优先级相同的情况下又选择排队时间最长的任务作为所述目标任务,使得兼顾时间效率。
在一种可能的实现方式中,所述方法还可以包括:将所述目标任务发送给指令控制器,并将所述目标任务的状态信息设置为运行状态,其中所述指令控制器用于为所述目标任务取指和译码。
示例性地,在将目标任务发送给指令控制器后,指令控制器可以为所述目标任务取指和译码,同时所述目标任务的状态从就绪状态变更为运行状态,表示相应任务正在运行中。
在一种可能的实现方式中,所述方法还可以包括:响应于接收到所述指令控制器为所述目标任务取指时确定指令缓存缺失而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。
示例性地,如果一个任务在为其取指过程中检测到指令缓存缺失(取指令时发生指令缓存线丢失,然后指令缓存控制器需要从外面的全局存储器中取指令,为此通常需要几百个甚至一千个周期才能将指令取回来,因此需要阻塞该任务,让其他任务优先执行),则将该任务的状态信息从运行状态变更为阻塞状态并且更新相应任务的阻塞信息,该阻塞信息包括指令缓存缺失。例如,指令缓存控制器在取回指令后发送唤醒消息给调度处理器,然后调度处理器可以根据该唤醒消息消除指令缓存缺失这一阻塞原因。
通过这种方式,可以及早将需要更多等待时间的任务阻塞,以免将这些任务发送给流水线执行后,使得流水线资源在等待过程中闲置,从而提高了流水线资源的利用率。
在一种可能的实现方式中,所述方法还可以包括:响应于接收到栅栏计数器针对译码后的目标任务确定栅栏条件未满足而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。
示例性地,如果一个任务在为其译码过程中检测到栅栏条件(当前任务的当前指令依赖于当前任务的前面指令的执行结果,然而前面指令的执行结果还没计算出来,需要等待,因此可以将当前任务阻塞),则将该任务的状态信息从运行状态变更为阻塞状态并且更新相应任务的阻塞信息,该阻塞信息包括栅栏条件未满足。当前面指令的执行结果计算出来后,通过栅栏计数器更新栅栏值来解除该阻塞,即发送唤醒消息给调度处理器,然后调度处理器可以根据该唤醒消息消除栅栏条件这一阻塞原因。
需要说明的是,在译码过程中检测到栅栏条件的情况下,还可以基于需要等待的栅栏类型,确定是否将当前任务阻塞。示例性地,当需要等待的栅栏类型为非阻塞类型,当前任务需要等待的时间较短时,简单设置栅栏计数器,可以无需发送阻塞信号,调度处理器无需更新当前任务的阻塞信息包括栅栏条件未满足。当需要等待的栅栏类型为阻塞类型,当前任务需要等待的时间较长时,栅栏计数器可以发送阻塞信号,调度处理器可以将该任务的状态信息从运行状态变更为阻塞状态并且更新相应任务的阻塞信息,该阻塞信息包括栅栏条件未满足。
通过这种方式,可以及早将需要更多等待时间的任务阻塞,以免将这些任务发送给流水线执行后,使得流水线资源在等待过程中闲置,又能保证较短等待时间的任务可以尽快被流水线执行,从而提高了流水线资源的利用率。应理解,栅栏计数器数量可灵活设置,本公开对此不作限制。
在一种可能的实现方式中,所述方法还可以包括:响应于接收到流水线执行译码后的目标任务时确定工作组同步未满足、互斥条件未满足、异步传输信号未满足或休眠条件未满足而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。
示例性地,工作组同步是指同一个工作组内的多个任务共享数据,需要所述多个任务都执行到同步指令,完成同步操作之后,同步计数器才能发消息给调度处理器以唤醒各个任务继续执行。例如,在执行一个任务时执行到同步指令时(即检测到属于同一个工作组的多个任务需要共享数据时),则暂停执行该任务并且将该任务变更为阻塞状态的任务。直至所述多个任务都执行到同步指令,完成同步操作之后,同步计数器才能发消息给调度处理器以唤醒各个任务继续执行。互斥条件是指多个任务共享一些资源,但是每次只能给一个任务分配这些资源,哪个任务赢得这些资源就执行该任务,在此过程中其他任务只能等待;异步传输信号是指需要等待所等的那个任务完成异步操作,异步流水线才会发送消息给调度处理器以唤醒相应的任务;休眠条件是指执行了休眠指令,比如休眠5秒,就会有一个计数器记录是否达到指定时间,如果达到了就会发送消息给调度处理器以唤醒相应的任务。在流水线执行指令时检测到上述待解除的依赖关系,就会发消息给调度处理器。调度处理器在接收到相应流水线发出的有关待解除的依赖关系的消息后,将相应的任务从运行状态变更为阻塞状态,并且更新对应的待解除的依赖关系、即更新相应任务的阻塞信息。
通过这种方式,可以暂时让出所执行任务所占用的计算资源供其他任务使用,直至满足条件后才继续执行该任务,使得资源利用率更高。
在一种可能的实现方式中,所述方法还可以包括:响应于任务存储空间的条目都存储有任务,停止接收任务,直至有任务存储空间被释放;响应于相应任务执行结束,释放相应任务所占用的空间。
示例性地,在任务调度器中存在一个存储空间(例如wave基本信息表),用于存储所接收的多个任务。例如,当wave基本信息表的所有条目全部存储有wave时,停止从所述上游模块接收新的wave,直至有wave存储空间被释放。在一个示例中,上游模块将wave发送到总线上,任务调度器在内部进行处理时,如果有空闲条目,就从总线上接收wave;如果没有空闲条目,任务调度器不会接收wave,wave就一直保留在总线上。 总线只要是空闲状态,上游模块就会继续发送新的wave;如果总线上有wave,上游模块就停止发送新的wave。
示例性地,在一个任务执行结束后,该任务在调度处理器中所占用的存储空间、所分配的通用寄存器资源以及所占用的流水线资源都被释放。
通过这种方式,可以提高各种资源循环利用的效率。
在一种可能的实现方式中,所述多个任务具有不同粒度,所述粒度表征相应任务包括的工作项实例的最大数量。
示例性地,所述多个任务可以包括wave32和wave128中的至少一种。替代地或附加地,任务也可以包括wave64等。wave32具有的粒度为32,其表示至多32个工作项实例所组成的任务;wave64具有的粒度为64,其表示至多64个工作项实例所组成的任务;并且wave128具有的粒度为128,其表示至多128个工作项实例所组成的任务。
通过这种方式,根据本公开的一个实施例的调度方法可以适配于多种任务工作模式、即wave32模式、wave64模式和wave128模式等。
在一种可能的实现方式中,通过多个流水线并行执行译码后的多个目标任务的不同指令。
示例性地,可以通过多个流水线根据不同指令分别从多个通用寄存器组调用数据并对数据进行处理,其中所述多个通用寄存器组分别具有独立的读写端口以及仲裁逻辑并且其中所述多个流水线是多个独立的流水线,所述多个独立的流水线分别读写通用寄存器组。不同指令流水线有不同的工作项实例执行粒度,部分执行流水线采用32工作项实例执行粒度和部分采用16工作项实例执行粒度。替代地,部分执行流水线也可以采用其他工作项实例执行粒度。在具体指令流水线中执行时,指令执行控制器控制指令执行,根据接收的任务工作模式,设置需要执行的循环计数器计数值。然后通过控制,循环执行各段工作项实例,直道达到最大循环计数器计数值。示例性地,当前多核处理流水线分成了多组小处理器核心组,每组核心内部可以直接兼容wave32模式,也可以分段处理,循环4次去兼容wave128模式。wave128模式采用分段循环4次执行的方式,而没有采用再次拆分成wave32模式,其原因在于这样能够保证wave128所有资源在生命周期内可用,同时提高指令利用率。每条流水线上取回来的数据和指令,按向量操作形式可以同时分段循环执行四次,执行流水线完成流水处理操作,间隙相对来说比较小,利用率更高。
示例性地,一条流水线作为图形渲染管线使用,执行像素着色器中简单的插值就输出,其适合于wave128模式,分4段循环执行,4次读取通用寄存器组;而另一条流水线作为计算管线使用,例如执行浮点或整型计算(例如数学A*B+C操作),其适合于wave32模式。计算管线相较于图形渲染管线访问通用寄存器组的频率更低。因此,它们可以分别访问不同的通用寄存器组。
通过这种方式,一方面多个流水线分别执行不同指令并且独立读写通用寄存器组,提高了并行性;另一方面多个独立的通用寄存器组分别具有独立的读写端口以及仲裁逻辑,便于多个任务或者任务中各段的处理,减少数据读写冲突。
图2根据本公开的一个实施例的兼容多种任务工作模式的任务执行装置200的框图。
如图2中所示,装置200可以包括wave打包器201、wave调度器202、指令控制器203、依赖关系栅栏队列204以及多个流水线205a,205b,…,205n。
在编译器编译时,根据具体着色器编译出具体微架构适配的指令,计算出通用寄存器等各种资源使用情况。然后驱动程序可以根据全局核函数的任务以及资源使用情况,设定具体最优的任务工作模式,将此数据传输给wave打包器201。在wave打包器201将多个工作项实例打包组装成具有不同工作项实例粒度的任务时,按照设定的任务工作模式,动态打包组装成wave32 或者wave128、即具有32个工作项实例粒度的一个wave或者具有128个工作项实例粒度的一个wave。替代地或附加地,wave打包器201根据上游下发的任务工作模式,准备初始化按照设定模式工作。然后,wave打包器201根据接收的工作项实例起始信息、工作项实例数据量和工作项实例结束信息,开始进行打包。在打包过程中,如果对应工作项实例数据量达到设定任务工作模式支持的工作项实例个数(wave32为32个工作项实例,wave128需要128个工作项实例),则将组装好的各个wave发送给wave调度器202;如果没有,则检查当前工作项实例是否已经达到最后一个工作项实例,如果达到,则强制完成当前打包动作。如果没有,则继续执行,直至达到最后一个工作项实例。
然后,组装好的各个wave进入wave调度器202以进行存储并参与任务调度处理。wave调度器202接收从wave打包器201送下来的wave32/128的信息,并构建初始化状态的wave。然后,记录相应wave条目所依赖的资源,按条目编号记录到阻塞信息表中。所依赖的资源可以包括随着wave信息携带而来的阻塞信息、如在编译器编译过程中确定的需要配置中继寄存器,也可以包括在将相应wave发送给指令控制器203之后确定的阻塞信息、如在为相应wave取指过程中确定的指令缓存缺失、在相应wave经过译码后的流水线指令进入依赖关系栅栏队列后确定的栅栏条件、以及在相应流水线指令进入流水线中执行时确定的工作组同步未满足、互斥条件未满足、异步传输信号未满足以及休眠条件未满足等。然后,wave调度器202使用监视器监控阻塞信息表的内容,当有唤醒信号到来,对应地消除相应的阻塞信息,直至相应wave的所有阻塞信息都被消除、即相应wave所依赖的资源全部得到满足,将相应wave的状态设置为就绪状态,等待调度。wave调度器202使用wave选择器从所有有效的就绪状态的wave中挑选出部分优先级高和/或等待时间比较久的wave来发送给指令控制器203。然后,将发送给指令控制器203的wave的状态设置为运行状态。
指令控制器203可以为选出来的wave进行取指和译码并译码成对应流水线指令。如果指令控制器203在为相应wave取指过程中检测到指令缓存缺失,则将包含指令缓存缺失的消息发送给wave调度器202。wave调度器202可以将相应wave从运行状态变更为阻塞状态并且将指令缓存缺失这一阻塞信息按照相应wave的条目编号记录到阻塞信息表中。wave调度器202在收到指令缓存控制器取指回来后发出的唤醒信息后,才将指令缓存缺失这一阻塞信息从阻塞信息表中消除。所有类型的流水线指令首先经过依赖关系栅栏队列204,通过栅栏计数器来检查相应流水线指令中是否存在读后写、写后读这种数据依赖。如果没有这种数据依赖,则将相应流水线指令发送给相应流水线来执行;如果存在这种数据依赖,则相应流水线指令需要排队等待。相应地,依赖关系栅栏队列204将一个消息发送给wave调度器202,以便将相应wave从运行状态变更为阻塞状态并且将相应的阻塞信息按照相应wave的条目编号记录到阻塞信息表中。wave调度器202在收到依赖关系栅栏队列204解除数据依赖的唤醒信息后,才将相应阻塞信息从阻塞信息表中消除。在通过依赖关系栅栏队列204解除各种数据组依赖关系及源数据栅栏计数器依赖后,将包含有任务工作模式、源数据或目的数据类型与物理地址、各个工作项实例有效掩码的流水线指令发送给各流水线。
各个流水线205a,205b,…,205n执行对应的流水线指令。每个流水线205a,205b,…,205n内可以设置多组ALU组,每个ALU 组里面可以分别包含4个或8个ALU结构,分别可处理4个或8个工作项实例FMA操作。例如,设置8组或4组ALU组,总共一次可处理32个工作项实例内的FMA操作。例如,对于wave32,一次读取所有操作数,一次执行完。例如,对于wave128,总共128个工作项实例需要处理,一次执行32个工作项实例,需要分四段分别读取所对应的操作数。在执行每个分段时,此时源操作数队列不需要驻留,每个分段可以一次读取完且执行完。在一个示例中,FMA一般执行A*B+C操作时,需要3个源操作数,每个操作数的当前执行段是32个工作项实例,因此需要使源操作数队列保持3*32个DWord的空间。当然这些都是对于FP32的执行情况。而对于FP16,执行一次FP32的计算,ALU可以拆分增加一些逻辑拼成2个FP16的计算。因此FP16的计算粒度通常比FP32大一倍,等于一次可以执行wave64,对于wave128,需要分2次循环执行完。
图3示出根据本公开的一个实施例的调度任务的装置300的框图。
如图3中所述,调度任务的装置300也称为wave调度管理单元或wave调度器。该装置300可以如wave调度器202那样实施。该装置300可以包括存储单元302、监测单元304以及任务选择器306。具体地,存储单元302可以被配置用于接收并存储来自上游模块(例如wave打包器)的多个任务。所述多个任务可以包括wave32和wave128。wave32表示最多含有32个工作项实例的任务,而wave128表示最多含有128个工作项实例的任务。32和128分别表示不同任务工作模式对应的粒度。替代地或附加地,任务也可以包括wave64等。相应地,任务工作模式可以包括wave32模式、wave64模式和wave128模式等。在一个示例中,存储单元302可以包括wave基本信息表、wave阻塞信息表和wave调度信息表。在一个示例中,wave调度信息表可以被实施为wave调度信息队列。wave基本信息表用于存储当前wave的所有初始状态数据信息,包含已设定的wave32或wave128的执行模式信息、初始实例有效掩码、程序计数器(PC)、工作组编号等信息。wave阻塞信息表用于存储wave的所有阻塞原因,这些阻塞原因包括随着wave基本信息携带的阻塞原因和在为相应wave取指和译码过程中以及在执行相应wave时检测到的阻塞原因。wave调度信息表用于存储wave的当前状态,包括就绪状态(当前wave准备就绪,可供选择)、阻塞状态(当前wave未准备就绪,不可供选择)和执行状态(当前wave正在执行中)。在一个示例中,存储单元302还可以被配置用于,响应于接收到唤醒信息,清除唤醒信息对应任务的目标阻塞信息,其中,所述唤醒信息表征目标阻塞信息对应的依赖资源已被满足,所述目标阻塞信息为所述任务的阻塞信息中的至少一种。在一个示例中,所述阻塞信息包括以下各项中的至少一个:需要配置中继寄存器、指令缓存缺失、工作组同步未满足、互斥条件未满足、栅栏条件未满足、异步传输信号未满足、休眠条件未满足。
监测单元304可以被配置用于从所述多个任务中确定就绪状态的任务,其中,所述就绪状态的任务不存在阻塞信息,所述阻塞信息表征执行相应任务所需的依赖资源未被满足。在一个示例中,监测单元304还可以被配置用于,确定接收到的任务是否需要配置中继寄存器;在确定需要配置中继寄存器的情况下,确定所述任务存在阻塞信息,所述阻塞信息包括需要配置中继寄存器;在确定不需要配置中继寄存器的情况下,确定所述任务为就绪状态的任务。
任务选择器306可以被配置用于从所述就绪状态的任务中确定目标任务。在一个示例中,任务选择器306可以根据所述就绪状态的任务的优先级和排队时间中的至少一个,从所述就绪状态的任务中确定所述目标任务。在一个示例中,任务选择器306可以从所述就绪状态的任务中确定优先级最高的任务作为所述目标任务并且在优先级相同的情况下确定排队时间最长的任务作为所述目标任务。在一个示例中,任务选择器206还可以被配置用于将所述目标任务发送给指令控制器,并将所述目标任务的状态信息设置为运行状态,其中所述指令控制器用于为所述目标任务取指和译码。
替代地或附加地,存储单元302还可以被配置用于,响应于接收到所述指令控制器为所述目标任务取指时确定指令缓存缺失而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。替代地或附加地,存储单元302还可以被配置用于,响应于接收到栅栏计数器针对译码后的目标任务确定栅栏条件未满足而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。替代地或附加地,存储单元302还可以被配置用于,响应于接收到流水线执行译码后的目标任务时确定工作组同步未满足、互斥条件未满足、异步传输信号未满足或休眠条件未满足而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。在一个示例中,存储单元302还可以被配置用于,响应于任务存储空间的条目都存储有任务,停止接收任务,直至有任务存储空间被释放;响应于相应任务执行结束,释放相应任务所占用的空间。替代地或附加地,当wave基本信息表中所有wave条目全部存储有wave时,停止从所述上游模块接收新的wave,直至有wave空间被释放。在一个示例中,上游模块将wave发送到总线上,wave调度管理单元在内部进行处理时,如果有空闲条目,就从总线上接收wave;如果没有空闲条目,wave调度管理单元不会接收wave,wave就一直保留在总线上。 总线只要是空闲状态,上游模块就会继续发送新的wave;如果总线上有wave,上游模块就停止发送新的wave。在一个示例中,所述多个任务具有不同粒度,所述粒度表征相应任务包括的工作项实例的最大数量。
图4示出根据本公开的另一实施例的调度任务的装置400的示意图。
如图4中所示,调度任务的装置400也可以称为wave调度管理单元或wave调度器。调度任务的装置400主要接收从上游调度分派单元(例如wave打包器)送下来的wave32/128模式的wave,并构建初始化状态的wave,维护该wave从初始化到完成的整个生命周期的信息。
任务调度管理分为wave基本信息管理、wave 阻塞信息管理和wave状态信息管理,其中wave基本信息管理负责管理wave基本信息,其记录了当前wave的所有初始状态数据信息,包含已设定的wave32或wave128的执行模式信息、初始实例有效掩码、程序计数器(PC)、工作组编号等信息;wave 阻塞信息管理负责管理wave阻塞信息表,其记录了当前wave的所有阻塞原因,这些阻塞原因包括随着wave基本信息携带的阻塞原因和在为相应wave取指和译码过程中以及在执行相应wave时检测到的阻塞原因;wave状态信息管理负责管理wave状态信息表,其记录了当前wave的当前状态,包括就绪状态(当前wave准备就绪,可供选择)、阻塞状态(当前wave未准备就绪,不可供选择)和执行状态(当前wave正在执行中)。在一个替代的实施方式中,wave状态信息表也可以实施为调度信息队列。如图4中所示,已经打包好的wave按顺序被存储在wave基本信息表中,其中每个wave被分配给一个相应的wave编号,例如可以将wave基本信息表的表项的编号用作相应的wave编号。监视器监控各个wave的基本信息中是否携带需要配置资源的要求、如需要配置中继寄存器等,如果有,则将其按照相应的wave编号记录到阻塞信息表中并且将相应wave的状态信息设置为阻塞状态;如果没有,则将相应wave的状态信息设置为就绪状态。同时,监视器监控阻塞信息表的内容,当有重新激活信号到来、例如中继寄存器完成配置的信号,将相应wave的状态信息从阻塞状态变更为就绪状态。wave选择器可以从所有就绪状态的wave中挑选出部分优先级高和/或等待时间比较久的wave发送给指令控制器。同时,将挑选出的wave的状态信息从就绪状态变更为执行状态。在一个示例中,在调度处理器中wave基本信息、wave阻塞信息以及wave状态信息实现分离式管理。
指令控制器为选出来的wave进行取指和译码并译码成对应流水线指令。如果指令控制器在为相应wave取指过程中检测到指令缓存缺失,则将包含指令缓存缺失的消息发送给wave调度器。wave调度器可以将相应wave从运行状态变更为阻塞状态并且将指令缓存缺失这一阻塞信息按照相应wave的条目编号记录到阻塞信息表中。wave调度器在收到指令缓存控制器取指回来后发出的唤醒信息后,才将指令缓存缺失这一阻塞信息从阻塞信息表中消除。所有类型的流水线指令首先经过依赖关系栅栏队列,通过栅栏计数器来检查相应流水线指令中是否存在读后写、写后读这种数据依赖。如果没有这种数据依赖,则将相应流水线指令发送给相应流水线来执行;如果存在这种数据依赖,则相应流水线指令需要排队等待。相应地,依赖关系栅栏队列将一个消息发送给wave调度器,以便将相应wave从运行状态变更为阻塞状态并且将相应的阻塞信息按照相应wave的条目编号记录到阻塞信息表中。wave调度器在收到依赖关系栅栏队列解除数据依赖的唤醒信息后,才将相应阻塞信息从阻塞信息表中消除。在通过依赖关系栅栏队列解除各种数据组依赖关系及源数据栅栏计数器依赖后,将包含有任务工作模式、源数据或目的数据类型与物理地址、各个工作项实例有效掩码的流水线指令发送给各流水线。为了提高指令间的并行性,此处采用了各流水线分离的结构,各流水线之间相互独立并行执行,速度更快。由于ALU和其他各流水线和各种资源及访问端口等都是当前wave调度管理单元中所有wave所共享的,当部分资源闲置时,例如FP ALU或者INTALU闲置时,就是很大的浪费。多个wave在调度执行时,通过多个wave分别执行不同的指令使所有的资源一直饱和工作起来,以获取更好的性能。
wave状态信息表/调度信息队列中的每个条目(entry)对应一个wave的状态信息,其通过图5中的状态机状态表示。
图5示出根据本公开的一个实施例的wave状态信息表/调度信息队列中各个状态之间的转化图。
这里需要按所有wave中最高优先级和等待时间最久来调度维护整个调度顺序,此时可调度的wave状态必须处于就绪状态。wave选择器从所有就绪状态的wave中根据预定标准选择出至少一个wave。当选择出的wave发送给指令控制器时,相应wave的状态信息被设置为运行状态。wave状态机用于表示wave整个生命周期的各个状态,如下:
当wave在执行过程中,资源遇到上表中阻塞状态的某种限制时,为了获得更好的ALU利用率,减少空置资源产生的空洞浪费等问题,此时wave将被阻塞住并让出ALU资源。此时所述wave会被变更为阻塞状态,这里监测单元会一直检测该wave的阻塞状态,直到唤醒信息到来,表示等到资源或条件满足时,该wave才会再次进入就绪状态(如果没有其他阻塞原因),等待调度。
wave在调度的过程中,由于多种资源限制会不断切换到阻塞、就绪和运行状态。也正是由于这种多因素资源限制,才需要存储多个wave信息,使多个wave在wave调度器中来回切换,通过多个wave分别发射指令进入各个流水线中并行执行,从而达到提高并行执行效率的目的。
如图5中所示,最开始条目为空时,处于空闲状态。这里阻塞状态、就绪状态、运行状态均为wave的状态信息。当收到上游模块发下来新的wave信息时,wave调度器将分离出wave基本信息写进wave基本信息表中,同时获取到wave条目的编号,然后将wave编号和wave的状态信息一起按条目存储于调度信息队列中,同时更新调度信息队列对应条目从空闲状态进入就绪状态(相应wave的阻塞信息为空)或阻塞状态(相应wave的阻塞信息不为空)。同时将分离出的阻塞状态信息,按wave编号存进对应阻塞信息表中。
当相应wave的条目为就绪状态时,可以参与调度管理。当调度信息队列中有wave完成并释放,后续就绪状态wave将通过移位拷贝操作进入调度及仲裁。例如,wave选择器从所有有效的就绪状态 wave中挑选出优先级最高或者等待时间最久的wave,以便发送给指令控制器。被选出来的wave的状态信息从就绪状态变更为运行状态。如果被选出来的wave在执行时由于指令缓存缺失或栅栏计数器未满足等而被指令控制器取消调度时,相应wave的状态信息从运行状态变为阻塞状态。当wave执行完之后并且释放相应wave在wave调度管理单元中所占用的所有空间之后,相应wave的状态信息从运行状态变为空闲状态。如果wave的状态信息由于存在阻塞信息而处于阻塞状态,当所述阻塞信息消除之后,相应wave的状态信息从阻塞状态变为就绪状态。
图6示出根据本公开的一个实施例的wave调度器与中继寄存器控制器之间的交互的示意图。
如图6中所示,程序实现通过编译器编译后,配置使用中继寄存器的使用量。完成后,软件或驱动模块会将它配置进命令控制流,然后通过中间各模块的调度管理并传递中间寄存器的使用量。直到传导进wave 调度器存储在wave基本信息表。此时wave 调度器将根据这个中继寄存器使用量是否为0,这里可以根据wave配置执行模式不同,设置为不同的使用量。若为0, 则不分配中继寄存器,将wave状态直接设置为就绪状态进入调度信息队列进行调度执行;当不为0时,该wave需要通过中继寄存器控制管理进行配置,同时设置配置未完成的阻塞状态。当该wave配置完成后,监视器检测到该wave完成配置,清除阻塞状态,更新wave条目为就绪状态,将wave状态更新为就绪状态进入调度信息队列进行调度执行。
图7示出根据本公开的另一实施例的wave调度器与中继寄存器控制器之间的交互的示意图。
如图7中所示,当wave执行结束时,wave结束单元执行了结束指令后,会发出该wave编号的结束信号给wave调度器。wave调度器收到该结束信号,会发送释放信号给中继寄存器控制管理单元。当完成释放并回收动作后,再返回wave编号的释放完成回收信号,然后才会释放该wave存储信息,完成wave的结束释放操作。
在各种实施例中,装置300,400可以用于执行如上文所描述的任何方法的步骤。因此,根据该方法的任意特征适用于该装置300,400并且反之亦然。
附加地或可替换地,可以使用计算机处理器、存储器单元、存储设备、计算机软件和其他组件在一台或更多台计算机或服务器或类似设备上实现本申请的上述方法、通用对接模块、服务平台或第三方平台。这种计算机或服务器的高级框图在图8中示出。在此,计算机、服务器或其他包括处理器的设备统称为计算设备。计算设备802包含处理器804,处理器804通过执行定义了整体操作的计算机程序指令来控制计算机802的操作。可以将计算机程序指令存储在存储设备812(例如磁盘)中并在需要执行计算机程序指令时将其加载到存储器810中。因此,参照图1的方法的步骤可以由存储在存储器810和/或存储设备812中的计算机程序指令定义,并由执行该计算机程序指令的处理器804控制。计算设备802还包括一个或更多个网络接口806,用于经由网络与其他设备进行通信。计算设备802还包括使用户能够与计算机802进行交互的其他输入/输出设备808(例如,显示器、键盘、鼠标、扬声器、按钮等)。本领域的技术人员将认识到,实际计算机的实施例也可以包含其他组件,并且图8是用于说明目的的这种计算机的一些组件的高级表示。
存储设备812和存储器810均包括有形的非暂时性计算机可读存储介质。存储设备812和存储器810均可包括高速随机存取存储器,诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、双倍数据速率同步动态随机存取存储器(DDR RAM)或其他随机存取固态存储器设备,并且可以包括非易失性存储器,诸如一个或多个磁盘存储设备(诸如内部硬盘和可移动磁盘)、磁光盘存储设备、光盘存储设备、闪存设备、半导体存储器设备(诸如可擦除可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM))、紧凑盘只读存储器(CD-ROM)、数字多功能盘只读存储器(DVD-ROM)盘或其他非易失性固态存储设备。
在另一实施例中,可以在基于网络的云计算系统中实现上述方法、通用对接模块、服务平台或第三方平台。在这样的基于网络的云计算系统中,服务器经由网络与一个或更多个客户端计算机通信。客户端计算机可以例如经由驻留在客户端计算机上并在其上运行的网络浏览器应用与服务器进行通信。客户端计算机可以将数据存储在服务器上,并经由网络访问该数据。客户端计算机可以经由网络将数据请求或在线服务请求传送到服务器。服务器可以实施所请求的服务,并将数据提供给(一个或多个)客户端计算机。服务器还可以传送被适配为使客户端计算机实施指定功能(例如,实施计算,在屏幕上显示指定数据等)的数据。上述方法的某些步骤可以由服务器或由基于网络的云计算系统中的其他计算机/处理器实施。上述方法的某些步骤可以由基于网络的云计算系统中的客户端计算机本地实施。上述方法的步骤可以由基于网络的云计算系统中的一个或更多个设备或者由本地客户端计算机以任何组合来实施。
应认识到为了清楚起见在单独实施例的上下文中描述的本申请的某些特征还可以在单个实施例中以组合的方式提供。相反,为了简便起见在单个实施例的上下文中描述的本申请的各种特征还可以单独地或以任何适当的子组合或在本申请的任何其他所述实施例中适当地提供。不应将在各种实施例的上下文中描述的某些特征视为那些实施例的必要特征,除非该实施例在没有那些元素的情况下无效。
虽然已结合本申请的具体实施例描述了本申请,但是很明显,许多替换、修改和变更对于本领域的技术人员来说将是显而易见的。因此,旨在涵盖属于随附权利要求的精神和广泛范围内的所有此类替换、修改和变更。
本说明中提及的所有公开、专利和专利申请通过引用整体地结合于本文中,引用的程度如同具体且特别地指示每个单独的公开、专利或专利申请以通过引用结合于本文一样。另外,不应将本申请中的任何参考的引用或识别理解为允许此类参考作为现有技术可用于本申请。在使用分段标题的情况下,不应将其理解为一定是限制性的。

Claims (22)

1.一种在GPU中调度任务的方法,其特征在于,所述方法包括:
接收并存储多个任务;
从所述多个任务中确定就绪状态的任务,其中,所述就绪状态的任务不存在阻塞信息,所述阻塞信息表征执行相应任务所需的依赖资源未被满足,其中所述阻塞信息包括随着任务信息携带而来的需要配置资源的阻塞信息和/或在将相应任务发送给指令控制器之后确定的阻塞信息,所述需要配置资源的阻塞信息包括需要配置中继寄存器,其中实现就绪状态的任务与阻塞状态的任务的分离式管理;
从所述就绪状态的任务中确定目标任务;以及
将所述目标任务发送给指令控制器,并将所述目标任务的状态信息设置为运行状态,其中所述指令控制器用于为所述目标任务取指和译码,
其中所述多个任务具有不同粒度,所述粒度表征相应任务包括的工作项实例的最大数量。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于接收到唤醒信息,清除唤醒信息对应任务的目标阻塞信息,
其中,所述唤醒信息表征目标阻塞信息对应的依赖资源已被满足,所述目标阻塞信息为所述任务的阻塞信息中的至少一种。
3.根据权利要求1所述的方法,其特征在于,所述阻塞信息包括以下各项中的至少一个:需要配置中继寄存器、指令缓存缺失、工作组同步未满足、互斥条件未满足、栅栏条件未满足、异步传输信号未满足、休眠条件未满足。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定接收到的任务是否需要配置中继寄存器;
在确定需要配置中继寄存器的情况下,确定所述任务存在阻塞信息,所述阻塞信息包括需要配置中继寄存器;
在确定不需要配置中继寄存器的情况下,确定所述任务为就绪状态的任务。
5.根据权利要求1所述的方法,其特征在于,从所述就绪状态的任务中确定目标任务,包括:
根据所述就绪状态的任务的优先级和排队时间中的至少一个,从所述就绪状态的任务中确定所述目标任务。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于接收到所述指令控制器为所述目标任务取指时确定指令缓存缺失而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于接收到栅栏计数器针对译码后的目标任务确定栅栏条件未满足而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于接收到流水线执行译码后的目标任务时确定工作组同步未满足、互斥条件未满足、异步传输信号未满足或休眠条件未满足而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述方法还包括:
响应于任务存储空间的条目都存储有任务,停止接收任务,直至有任务存储空间被释放;
响应于相应任务执行结束,释放相应任务所占用的空间。
10.根据权利要求8所述的方法,其特征在于,通过多个流水线并行执行译码后的多个目标任务的不同指令。
11.一种在GPU中调度任务的装置,其特征在于,所述装置包括:
-存储单元,其用于接收并存储多个任务,
-监测单元,其用于从所述多个任务中确定就绪状态的任务,其中,所述就绪状态的任务不存在阻塞信息,所述阻塞信息表征执行相应任务所需的依赖资源未被满足,其中所述阻塞信息包括随着任务信息携带而来的需要配置资源的阻塞信息和/或在将相应任务发送给指令控制器之后确定的阻塞信息,所述需要配置资源的阻塞信息包括需要配置中继寄存器,其中实现就绪状态的任务与阻塞状态的任务的分离式管理,以及
-任务选择器,其用于从所述就绪状态的任务中确定目标任务以及将所述目标任务发送给指令控制器,并将所述目标任务的状态信息设置为运行状态,其中所述指令控制器用于为所述目标任务取指和译码,
其中所述多个任务具有不同粒度,所述粒度表征相应任务包括的工作项实例的最大数量。
12.根据权利要求11所述的装置,其特征在于,所述存储单元还被配置用于,响应于接收到唤醒信息,清除唤醒信息对应任务的目标阻塞信息,其中,所述唤醒信息表征目标阻塞信息对应的依赖资源已被满足,所述目标阻塞信息为所述任务的阻塞信息中的至少一种。
13.根据权利要求11所述的装置,其特征在于,所述阻塞信息包括以下各项中的至少一个:需要配置中继寄存器、指令缓存缺失、工作组同步未满足、互斥条件未满足、栅栏条件未满足、异步传输信号未满足、休眠条件未满足。
14.根据权利要求11所述的装置,其特征在于,所述监测单元还被配置用于,确定接收到的任务是否需要配置中继寄存器;
在确定需要配置中继寄存器的情况下,确定所述任务存在阻塞信息,所述阻塞信息包括需要配置中继寄存器;
在确定不需要配置中继寄存器的情况下,确定所述任务为就绪状态的任务。
15.根据权利要求11所述的装置,其特征在于,从所述就绪状态的任务中确定目标任务,包括:
根据所述就绪状态的任务的优先级和排队时间中的至少一个,从所述就绪状态的任务中确定所述目标任务。
16.根据权利要求11所述的装置,其特征在于,所述存储单元还被配置用于,响应于接收到所述指令控制器为所述目标任务取指时确定指令缓存缺失而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。
17.根据权利要求11所述的装置,其特征在于,所述存储单元还被配置用于,响应于接收到栅栏计数器针对译码后的目标任务确定栅栏条件未满足而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。
18.根据权利要求11所述的装置,其特征在于,所述存储单元还被配置用于,响应于接收到流水线执行译码后的目标任务时确定工作组同步未满足、互斥条件未满足、异步传输信号未满足或休眠条件未满足而发送的阻塞信号,将所述阻塞信号对应任务的状态信息从运行状态变更为阻塞状态,并且更新相应任务的阻塞信息。
19.根据权利要求11至18中任一项所述的装置,其中所述存储单元还被配置用于,响应于任务存储空间的条目都存储有任务,停止接收任务,直至有任务存储空间被释放;
响应于相应任务执行结束,释放相应任务所占用的空间。
20.根据权利要求18所述的装置,其特征在于,通过多个流水线并行执行译码后的多个目标任务的不同指令。
21.一种电子设备,其特征在于,包括:处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为调用所述存储器存储的指令,以执行权利要求1至10中任意一项所述的方法。
22.一种其上存储有指令的计算机可读介质,所述指令当被执行时使得计算设备执行根据权利要求1-10中任一项所述的方法。
CN202310606983.2A 2023-05-26 2023-05-26 调度任务的方法和装置、电子设备和计算机可读介质 Active CN116414464B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310606983.2A CN116414464B (zh) 2023-05-26 2023-05-26 调度任务的方法和装置、电子设备和计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310606983.2A CN116414464B (zh) 2023-05-26 2023-05-26 调度任务的方法和装置、电子设备和计算机可读介质

Publications (2)

Publication Number Publication Date
CN116414464A CN116414464A (zh) 2023-07-11
CN116414464B true CN116414464B (zh) 2023-09-22

Family

ID=87051292

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310606983.2A Active CN116414464B (zh) 2023-05-26 2023-05-26 调度任务的方法和装置、电子设备和计算机可读介质

Country Status (1)

Country Link
CN (1) CN116414464B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116721007B (zh) * 2023-08-02 2023-10-27 摩尔线程智能科技(北京)有限责任公司 任务控制方法、系统及装置、电子设备和存储介质
CN116974728B (zh) * 2023-09-20 2024-01-02 深圳市德兰明海新能源股份有限公司 单片机任务调度方法、单片机产品及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360243B1 (en) * 1998-03-10 2002-03-19 Motorola, Inc. Method, device and article of manufacture for implementing a real-time task scheduling accelerator
CN112416546A (zh) * 2020-11-10 2021-02-26 光华临港工程应用技术研发(上海)有限公司 多任务调度方法、电子装置和计算机存储介质
CN114168305A (zh) * 2022-01-04 2022-03-11 北京金山云网络技术有限公司 一种任务调度方法、装置、设备及存储介质
CN114416315A (zh) * 2022-01-18 2022-04-29 上海金融期货信息技术有限公司 持续集成系统中的任务动态调度方法和系统
CN115562837A (zh) * 2022-10-25 2023-01-03 中国农业银行股份有限公司 任务调度方法、装置、设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360243B1 (en) * 1998-03-10 2002-03-19 Motorola, Inc. Method, device and article of manufacture for implementing a real-time task scheduling accelerator
CN112416546A (zh) * 2020-11-10 2021-02-26 光华临港工程应用技术研发(上海)有限公司 多任务调度方法、电子装置和计算机存储介质
CN114168305A (zh) * 2022-01-04 2022-03-11 北京金山云网络技术有限公司 一种任务调度方法、装置、设备及存储介质
CN114416315A (zh) * 2022-01-18 2022-04-29 上海金融期货信息技术有限公司 持续集成系统中的任务动态调度方法和系统
CN115562837A (zh) * 2022-10-25 2023-01-03 中国农业银行股份有限公司 任务调度方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
数据交换平台的任务调度模型设计;刘应明;廉东本;;小型微型计算机系统(07);全文 *

Also Published As

Publication number Publication date
CN116414464A (zh) 2023-07-11

Similar Documents

Publication Publication Date Title
CN116414464B (zh) 调度任务的方法和装置、电子设备和计算机可读介质
KR102228501B1 (ko) 컴파일러 방법
TWI628594B (zh) 用戶等級分叉及會合處理器、方法、系統及指令
US8332854B2 (en) Virtualized thread scheduling for hardware thread optimization based on hardware resource parameter summaries of instruction blocks in execution groups
US6671827B2 (en) Journaling for parallel hardware threads in multithreaded processor
CN110308982B (zh) 一种共享内存复用方法及装置
KR101486025B1 (ko) 프로세서에서의 쓰레드 스케쥴링
JP6797879B2 (ja) 命令セット
JP4292198B2 (ja) 実行スレッドをグループ化するための方法
US20070150895A1 (en) Methods and apparatus for multi-core processing with dedicated thread management
US8417918B2 (en) Reconfigurable processor with designated processing elements and reserved portion of register file for interrupt processing
US20050188177A1 (en) Method and apparatus for real-time multithreading
US11537429B2 (en) Sub-idle thread priority class
US20140143524A1 (en) Information processing apparatus, information processing apparatus control method, and a computer-readable storage medium storing a control program for controlling an information processing apparatus
CN116414541B (zh) 兼容多种任务工作模式的任务执行方法和装置
EP1444571B1 (en) Hidden job start preparation in an instruction-parallel processor system
JP2022535982A (ja) Gpuにおける明示的な個別マスクレジスタのマスク操作方法
US20210294660A1 (en) Programming Model for Resource-Constrained Scheduling
US20170147345A1 (en) Multiple operation interface to shared coprocessor
EP4152150A1 (en) Processor, processing method, and related device
CN103197917A (zh) 计算线程阵列粒度执行抢占
CN116670644A (zh) 通用计算核上的交错处理的方法
EP2652597B1 (en) Method and apparatus for scheduling the issue of instructions in a microprocessor using multiple phases of execution
KR102145457B1 (ko) 방향 인디케이터
KR101420592B1 (ko) 컴퓨터 시스템

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
GR01 Patent grant
GR01 Patent grant