CN116700631B - 任务管理装置、方法、图形处理器及电子设备 - Google Patents
任务管理装置、方法、图形处理器及电子设备 Download PDFInfo
- Publication number
- CN116700631B CN116700631B CN202310972191.7A CN202310972191A CN116700631B CN 116700631 B CN116700631 B CN 116700631B CN 202310972191 A CN202310972191 A CN 202310972191A CN 116700631 B CN116700631 B CN 116700631B
- Authority
- CN
- China
- Prior art keywords
- task
- nth
- address
- storage
- memory
- 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
Links
Classifications
-
- 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
- Image Generation (AREA)
Abstract
本公开涉及芯片领域,提出一种任务管理装置、方法、图形处理器及电子设备,本公开的任务管理装置包括任务产生器、存储器、控制器、第一仲裁单元、着色器,存储器存储任务信息并输出第一指示信息,控制器在接收到第一指示信息时存储任务信息的存储地址,并输出控制器上存储的排序最先的存储地址;第一仲裁单元从接收到的存储地址中选择一个输出至着色器;着色器从存储器处读出该存储地址处存储的任务信息,执行该任务信息对应的计算任务。本公开实施例的任务管理装置只使用一个存储器存储来自多个任务产生器的任务信息,只需要一个控制器进行存储器的管理,使得任务信息在存储器中可以灵活存储,并且不需要多队列,可以降低电路面积和功耗。
Description
技术领域
本公开涉及芯片领域,尤其涉及一种任务管理装置、方法、图形处理器及电子设备。
背景技术
在数字电路设计过程当中,任务产生器产生计算任务,实现任务调度通常需要用到先入先出存储器(first input first output,FIFO)队列来存储任务信息,同时FIFO先入先出的电路特性也保证了任务的执行顺序。在全功能图形处理器(graphics processingunit,GPU)任务场景下,可能存在多个任务产生器,可并行产生多种类型的任务,如几何类型,计算类型,纹理类型等。对于不存在相互依赖关系的任务,需要做到并行管理和下发。因此,现有技术针对每个任务产生器分别放置单独的FIFO队列来接收和存储该任务产生器发出的计算任务的任务信息,每一个FIFO队列都是固定深度的,各个FIFO队列对应独立的控制电路,按照一定规则仲裁出一个任务信息后向下游着色器(Shader)下发。使着色器执行该任务信息对应的计算任务。
在实际工作过程中,由于真实任务场景不同,任务产生器产生的计算任务的类型和数量总是变化的,现有技术很难在设计阶段得到任何真实场景下都有较好性能的队列深度参数,即各FIFO队列的深度设置不够灵活。另外,多队列也造成较大电路面积和功耗。
发明内容
有鉴于此,本公开提出了一种任务管理装置、方法、图形处理器及电子设备,本公开实施例的任务管理装置集成在图形处理器中,只使用一个存储器存储来自多个任务产生器的任务信息,只需要一个控制器进行存储器的管理,使得任务信息在存储器中可以灵活存储,并且不需要多队列,可以降低电路面积和功耗。
根据本公开的一方面,提供了一种任务管理装置,所述装置集成在图形处理器中,所述装置包括N个任务产生器、存储器、控制器、第一仲裁单元、着色器,N是大于1的整数,所述存储器,用于在接收到任务信息且所述任务信息由第n个任务产生器产生时,存储所述任务信息并输出第一指示信息到所述控制器,所述第一指示信息包括所述任务信息的存储地址以及所述第n个任务产生器的标识,0≤n≤N-1,n是整数;所述控制器,用于在接收到所述第一指示信息时存储所述任务信息的存储地址,使所述任务信息的存储地址在所述控制器上存储的所述第n个任务产生器对应的存储地址中排序最末,并将所述控制器上存储的每一任务产生器对应的存储地址中排序最先的存储地址分别输出至所述第一仲裁单元;所述第一仲裁单元,用于从接收到的存储地址中选择一个存储地址输出至所述着色器;所述着色器,用于在前一计算任务执行完毕时接收所述存储地址,从所述存储器处读出该存储地址处存储的任务信息,执行该任务信息对应的计算任务。
在一种可能的实现方式中,所述存储器包括两个端口以及D个存储地址,其中一个端口用于接收任务信息,另一端口用于输出任务信息,D是正整数,所述在接收到任务信息且所述任务信息由第n个任务产生器产生时,存储所述任务信息,包括:在接收到任务信息且所述任务信息由第n个任务产生器产生时,按预设顺序依次查找每个存储地址是否空闲,将接收到的任务信息存入查找到的第一个空闲的存储地址。
在一种可能的实现方式中,所述控制器包括有效位寄存器、地址位寄存器队列、头指针和标记位寄存器、尾指针寄存器,所述有效位寄存器存储D个有效位,第d个有效位与第d个存储地址对应,第d个有效位的第一状态指示第d个存储地址空闲,第二状态指示第d个存储地址有任务信息存储,0≤d≤D-1,d是整数;所述地址位寄存器队列包括D个地址位寄存器,第d个地址位寄存器与第d个存储地址对应,第d个地址位寄存器的编号与第d个存储地址相同,每个地址位寄存器用于存储所述D个存储地址之一;所述头指针和标记位寄存器存储N个标记位,第n个标记位的第一状态指示所述存储器中未存储由第n个任务产生器产生的任务信息,第n个标记位的第二状态指示所述存储器中存储由第n个任务产生器产生的任务信息;所述头指针和标记位寄存器还存储N个头指针,第n个头指针与第n个任务产生器对应,第n个头指针指向所述控制器上、与第n个任务产生器对应的存储地址中,排序最先的存储地址所在的地址位寄存器;所述尾指针寄存器存储N个尾指针,第n个尾指针与第n个任务产生器对应,第n个尾指针指向所述控制器上、与第n个任务产生器对应的存储地址中,排序最末的存储地址所在的地址位寄存器。
在一种可能的实现方式中,所述在接收到所述第一指示信息时存储所述任务信息的存储地址,使所述任务信息的存储地址在其上存储的所述第n个任务产生器对应的存储地址中排序最末,包括:在所述任务信息的存储地址是第d个存储地址时,将第d个有效位由第一状态变更为第二状态;查询第n个标记位;在第n个标记位为第一状态时,使第n个头指针、第n个尾指针均指向第d个地址位寄存器,将第n个标记位由第一状态变更为第二状态;在第n个标记位为第二状态时,将第n个尾指针指向的地址位寄存器存储的存储地址变更为第d个存储地址后,使第n个尾指针指向第d个地址位寄存器。
在一种可能的实现方式中,所述将其上存储的每一任务产生器对应的存储地址中排序最先的存储地址分别输出至所述第一仲裁单元,包括:查询所述N个标记位,确定第二状态的标记位;查询所述第二状态的标记位对应的头指针指向的地址位寄存器;将查询到的地址位寄存器的编号输出至所述第一仲裁单元。
在一种可能的实现方式中,所述第一仲裁单元还用于,在输出至所述着色器的存储地址被接收时,输出第二指示信息到所述控制器,所述第二指示信息包括被接收的存储地址;所述控制器还用于:在所述被接收的存储地址是第d个存储地址时,根据所述被接收的存储地址,找到第d个有效位,将第d个有效位由第二状态变更为第一状态;在第d个存储地址与第n个任务产生器对应时,根据所述被接收的存储地址,找到第n个头指针和第n个尾指针;在第n个头指针和第n个尾指针指向同一地址位寄存器时,将第n个头指针和第n个尾指针分别恢复到未指向任意地址位寄存器的初始状态,将第n个标记位由第二状态变更为第一状态;在第n个头指针和第n个尾指针指向不同地址位寄存器时,使所述控制器上存储的第n个任务产生器对应的存储地址中、排序次先的存储地址所在的地址位寄存器,成为第n个头指针指向的地址位寄存器。
在一种可能的实现方式中,所述装置还包括第二仲裁单元,所述任务产生器用于,在产生所述计算任务的同时,将所述计算任务的任务信息输出至所述第二仲裁单元,不同任务产生器产生的计算任务类型不同;所述第二仲裁单元用于,在同时接收到多个任务信息时,选择一个任务信息输出至所述存储器。
根据本公开的另一方面,提供了一种任务管理方法,所述方法应用于任务管理装置,所述装置集成在图形处理器中,所述装置包括N个任务产生器、存储器、控制器、第一仲裁单元、着色器,N是大于1的整数,所述方法包括:所述存储器在接收到任务信息且所述任务信息由第n个任务产生器产生时,存储所述任务信息并输出第一指示信息到所述控制器,所述第一指示信息包括所述任务信息的存储地址以及所述第n个任务产生器的标识,0≤n≤N-1,n是整数;所述控制器在接收到所述第一指示信息时存储所述任务信息的存储地址,使所述任务信息的存储地址在所述控制器上存储的所述第n个任务产生器对应的存储地址中排序最末,并将所述控制器上存储的每一任务产生器对应的存储地址中排序最先的存储地址分别输出至所述第一仲裁单元;所述第一仲裁单元从接收到的存储地址中选择一个存储地址输出至所述着色器;所述着色器在前一计算任务执行完毕时接收所述存储地址,从所述存储器处读出该存储地址处存储的任务信息,执行该任务信息对应的计算任务。
在一种可能的实现方式中,所述存储器包括两个端口以及D个存储地址,其中一个端口用于接收任务信息,另一端口用于输出任务信息,D是正整数,所述在接收到任务信息且所述任务信息由第n个任务产生器产生时,存储所述任务信息,包括:在接收到任务信息且所述任务信息由第n个任务产生器产生时,按预设顺序依次查找每个存储地址是否空闲,将接收到的任务信息存入查找到的第一个空闲的存储地址。
在一种可能的实现方式中,所述控制器包括有效位寄存器、地址位寄存器队列、头指针和标记位寄存器、尾指针寄存器,所述有效位寄存器存储D个有效位,第d个有效位与第d个存储地址对应,第d个有效位的第一状态指示第d个存储地址空闲,第二状态指示第d个存储地址有任务信息存储,0≤d≤D-1,d是整数;所述地址位寄存器队列包括D个地址位寄存器,第d个地址位寄存器与第d个存储地址对应,第d个地址位寄存器的编号与第d个存储地址相同,每个地址位寄存器用于存储所述D个存储地址之一;所述头指针和标记位寄存器存储N个标记位,第n个标记位的第一状态指示所述存储器中未存储由第n个任务产生器产生的任务信息,第n个标记位的第二状态指示所述存储器中存储由第n个任务产生器产生的任务信息;所述头指针和标记位寄存器还存储N个头指针,第n个头指针与第n个任务产生器对应,第n个头指针指向所述控制器上、与第n个任务产生器对应的存储地址中,排序最先的存储地址所在的地址位寄存器;所述尾指针寄存器存储N个尾指针,第n个尾指针与第n个任务产生器对应,第n个尾指针指向所述控制器上、与第n个任务产生器对应的存储地址中,排序最末的存储地址所在的地址位寄存器。
在一种可能的实现方式中,所述在接收到所述第一指示信息时存储所述任务信息的存储地址,使所述任务信息的存储地址在其上存储的所述第n个任务产生器对应的存储地址中排序最末,包括:在所述任务信息的存储地址是第d个存储地址时,将第d个有效位由第一状态变更为第二状态;查询第n个标记位;在第n个标记位为第一状态时,使第n个头指针、第n个尾指针均指向第d个地址位寄存器,将第n个标记位由第一状态变更为第二状态;在第n个标记位为第二状态时,将第n个尾指针指向的地址位寄存器存储的存储地址变更为第d个存储地址后,使第n个尾指针指向第d个地址位寄存器。
在一种可能的实现方式中,所述将其上存储的每一任务产生器对应的存储地址中排序最先的存储地址分别输出至所述第一仲裁单元,包括:查询所述N个标记位,确定第二状态的标记位;查询所述第二状态的标记位对应的头指针指向的地址位寄存器;将查询到的地址位寄存器的编号输出至所述第一仲裁单元。
在一种可能的实现方式中,所述方法还包括:在输出至所述着色器的存储地址被接收时,所述第一仲裁单元输出第二指示信息到所述控制器,所述第二指示信息包括被接收的存储地址;在所述被接收的存储地址是第d个存储地址时,所述控制器根据所述被接收的存储地址,找到第d个有效位,将第d个有效位由第二状态变更为第一状态;在第d个存储地址与第n个任务产生器对应时,根据所述被接收的存储地址,找到第n个头指针和第n个尾指针;在第n个头指针和第n个尾指针指向同一地址位寄存器时,将第n个头指针和第n个尾指针分别恢复到未指向任意地址位寄存器的初始状态,将第n个标记位由第二状态变更为第一状态;在第n个头指针和第n个尾指针指向不同地址位寄存器时,使所述控制器上存储的第n个任务产生器对应的存储地址中、排序次先的存储地址所在的地址位寄存器,成为第n个头指针指向的地址位寄存器。
在一种可能的实现方式中,所述装置还包括第二仲裁单元,所述方法还包括:所述任务产生器在产生所述计算任务的同时,将所述计算任务的任务信息输出至所述第二仲裁单元,不同任务产生器产生的计算任务类型不同;所述第二仲裁单元在同时接收到多个任务信息时,选择一个任务信息输出至所述存储器。
根据本公开的另一方面,提供了一种图形处理器,包括以上所述的任务管理装置。
根据本公开的另一方面,提供了一种电子设备,包括以上所述的图形处理器。
根据本公开实施例的任务管理装置,通过存储器在接收到任务信息且任务信息由第n个任务产生器产生时,存储任务信息并输出第一指示信息到控制器,第一指示信息包括任务信息的存储地址以及第n个任务产生器的标识,使得可以将第n个任务产生器产生的计算任务的任务信息被写入到存储器的事实通知给控制器。通过控制器在接收到第一指示信息时存储任务信息的存储地址,使任务信息的存储地址在控制器上存储的第n个任务产生器对应的存储地址中排序最末,并将控制器上存储的每一任务产生器对应的存储地址中排序最先的存储地址分别输出至第一仲裁单元,可以实现新写入存储器的任务信息的排序,以及对输出到第一仲裁单元的存储地址的更新;通过第一仲裁单元从接收到的存储地址中选择一个存储地址输出至着色器,使得一次只有一个存储地址在着色器和第一仲裁单元之间的总线上保持;通过着色器在前一计算任务执行完毕时接收存储地址,从存储器处读出该存储地址处存储的任务信息,执行该任务信息对应的计算任务。可以实现计算任务的执行。在此情况下,只设置存储器和控制器,即可代替现有技术中多个FIFO队列以及每个FIFO队列携带的控制电路的功能,既可以实现多个无依赖计算任务场景下的多类型计算任务的并行独立管理,又使得各任务产生器的任务信息的存储地址组成的队列深度灵活可变,因此具有面积小,低功耗,高性能的优点。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出现有技术的GPU中对于多个任务产生器产生的多种类型的计算任务的管理方式的示意图。
图2示出根据本公开实施例的任务管理装置的结构的示意图。
图3示出根据本公开实施例的存储器的结构的示意图。
图4示出根据本公开实施例的控制器的结构的示意图。
图5示出根据本公开实施例的存储器以及控制器中的各寄存器在初始状态下的存储情况示例。
图6示出根据本公开实施例的存储器写入任务信息时,存储器以及控制器中的各寄存器的存储情况示例。
图7示出根据本公开实施例的存储器写入任务信息时,存储器以及控制器中的各寄存器的存储情况示例。
图8示出根据本公开实施例的存储地址被着色器接收后,存储器和控制器的存储状态的更新方式的示例。
图9示出根据本公开实施例的存储地址被着色器接收后,存储器和控制器的存储状态的更新方式的示例。
图10示出根据本公开实施例的任务管理装置的结构的示意图。
图11示出根据本公开实施例的任务管理方法的流程的示意图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出现有技术的GPU中对于多个任务产生器产生的多种类型的计算任务的管理方式的示意图。
如图1所示,GPU可包括任务产生器0、任务产生器1、任务产生器2、……、任务产生器n,FIFO队列0、FIFO队列1、FIFO队列2、……、FIFO队列n,仲裁单元以及着色器。每个任务产生器分别产生不同类型的计算任务,例如任务产生器0可产生几何类型的计算任务,任务产生器1可产生纹理类型的计算任务,任务产生器2可产生计算类型的计算任务。每个任务产生器产生计算任务时,将该计算任务的任务信息(如类型等)输出到对应的一个FIFO队列。每个FIFO队列的深度可以是预先设置的固定值,例如FIFO队列0的深度可以是d0,FIFO队列1的深度可以是d1,FIFO队列2的深度可以是d2,FIFO队列n的深度可以是dn。则对于任意一个FIFO队列,其上存储的任务信息中,最先进入FIFO队列的任务信息优先级最高,最后进入FIFO队列的任务信息优先级最低。各任务产生器将优先级最高的任务信息输出至仲裁单元,仲裁单元根据预设规则(例如按照任务产生器的优先级、或者轮询等)选择一个任务信息输出至着色器。着色器接收该任务信息后,即可执行该任务信息对应的计算任务。
当某一任务产生器产生较多数量的计算任务,而该任务产生器对应的FIFO队列被存满后,就会反压任务产生器的上游电路(未示出),暂停新的计算任务的产生。而其它任务产生器对应的FIFO队列可能空闲且无法被利用。因此按照现有技术方案,不同场景的FIFO队列深度较难按照各场景任务负载灵活均衡配置,另外,多队列也造成较大电路面积和功耗。
有鉴于此,本公开提出了一种任务管理装置、方法、图形处理器及电子设备,本公开实施例的任务管理装置集成在图形处理器中,只使用一个存储器存储来自多个任务产生器的任务信息,只需要一个控制器进行存储器的管理,使得任务信息在存储器中可以灵活存储,并且不需要多队列,可以降低电路面积和功耗。
图2示出根据本公开实施例的任务管理装置的结构的示意图。
如图2所示,任务管理装置集成在图形处理器中,所述装置包括N个任务产生器、存储器、控制器、第一仲裁单元、着色器,N是大于1的整数,
存储器,用于在接收到任务信息且任务信息由第n个任务产生器产生时,存储任务信息并输出第一指示信息到控制器,第一指示信息包括任务信息的存储地址以及第n个任务产生器的标识,0≤n≤N-1,n是整数;
控制器,用于在接收到第一指示信息时存储任务信息的存储地址,使任务信息的存储地址在控制器上存储的第n个任务产生器对应的存储地址中排序最末,并将控制器上存储的每一任务产生器对应的存储地址中排序最先的存储地址分别输出至第一仲裁单元;
第一仲裁单元,用于从接收到的存储地址中选择一个存储地址输出至着色器;
着色器,用于在前一计算任务执行完毕时接收存储地址,从存储器处读出该存储地址处存储的任务信息,执行该任务信息对应的计算任务。
举例来说,如图2所示,任务管理装置可以包括N个任务产生器(N是大于1的整数,在图2的示例中N大于3),分别是第0个任务产生器、第1个任务产生器、第2个任务产生器、……、第N-1个任务产生器。每个任务产生器分别产生不同类型的计算任务,例如第0个任务产生器可产生几何类型的计算任务,第1个任务产生器可产生纹理类型的计算任务,第2个任务产生器可产生计算类型的计算任务。任务信息与计算任务一同产生,任务信息被写入到存储器。
本公开实施例的存储器可以是静态随机存取存储器(static random-accessmemory,SRAM),负责存储任务信息。其上可包括若干个存储地址,每个存储地址可存储一个任务信息。存储器的示例性结构可以参见下文及图3的相关描述。
存储器在接收到任务信息且任务信息由第n个(0≤n≤N-1,n是整数)任务产生器产生时,存储任务信息并输出第一指示信息到控制器,第一指示信息包括任务信息的存储地址以及第n个任务产生器的标识。其中,第n个任务产生器的标识可以是n。
以n=1为例,假设在接收到任务信息且任务信息由第1个任务产生器产生时,存储任务信息到其上的第1个存储地址,输出第一指示信息到控制器,第一指示信息可以包括第1个存储地址以及第1个任务产生器的标识1。在此情况下,第一指示信息可以表示第1个任务产生器产生的一个计算任务的任务信息被写入到存储器。
可以理解的是,第n个任务产生器的标识还可以是其他形式,本公开对此不作限制。
控制器负责对存储器存储的任务信息进行管理。其主要记录存储器中已经存储了哪些任务产生器产生的任务信息、这些任务信息分别存储在哪一存储地址、同一任务产生器产生的任务信息的排序先后等等。因此,在接收到第一指示信息(包括任务信息的存储地址以及第n个任务产生器的标识)时,控制器先存储任务信息的存储地址,再使任务信息的存储地址在控制器上存储的第n个任务产生器对应的存储地址中排序最末。第n个任务产生器对应的存储地址,表示第n个任务产生器产生的任务信息的存储地址。
新任务信息的写入可能导致控制器上存储的排序最先的存储地址个数改变,因此,控制器可将当前时刻控制器上存储的、每一任务产生器对应的存储地址中,排序最先的存储地址分别输出至第一仲裁单元。
控制器的示例性结构,以及控制器如何实现上述功能的细节,可以参见下文及图4-图8的相关描述。
第一仲裁单元负责对接收的存储地址进行仲裁,选择其中一个输出给着色器。存储地址输出后可以在着色器与第一仲裁单元之间的总线上保持。如果着色器接收该存储地址前,又有新的任务信息写入存储器,控制器再次输出新一轮的排序最先的存储地址到第一仲裁单元,第一仲裁单元选择出新的存储地址,则保持在着色器与第一仲裁单元之间的总线上的原存储地址替换为新的存储地址。
第一仲裁单元的选择机制可以根据应用场景需求进行设置,可以设置为优先选择某一类型的计算任务的任务信息,也可以设置从各种类型的任务信息中随机选择。本公开实施例对此不作限制。
着色器用于执行计算任务。在前一计算任务执行完毕后,着色器可以接收此时保持在着色器与第一仲裁单元之间的总线上的存储地址。根据该存储地址,着色器可以从存储器上读出该存储地址处存储的任务信息,并执行该任务信息对应的计算任务。
根据本公开实施例的任务管理装置,通过存储器在接收到任务信息且任务信息由第n个任务产生器产生时,存储任务信息并输出第一指示信息到控制器,第一指示信息包括任务信息的存储地址以及第n个任务产生器的标识,使得可以将第n个任务产生器产生的计算任务的任务信息被写入到存储器的事实通知给控制器。通过控制器在接收到第一指示信息时存储任务信息的存储地址,使任务信息的存储地址在控制器上存储的第n个任务产生器对应的存储地址中排序最末,并将控制器上存储的每一任务产生器对应的存储地址中排序最先的存储地址分别输出至第一仲裁单元,可以实现新写入存储器的任务信息的排序,以及对输出到第一仲裁单元的存储地址的更新;通过第一仲裁单元从接收到的存储地址中选择一个存储地址输出至着色器,使得一次只有一个存储地址在着色器和第一仲裁单元之间的总线上保持;通过着色器在前一计算任务执行完毕时接收存储地址,从存储器处读出该存储地址处存储的任务信息,执行该任务信息对应的计算任务。可以实现计算任务的执行。在此情况下,只设置存储器和控制器,即可代替现有技术中多个FIFO队列以及每个FIFO队列携带的控制电路的功能,既可以实现多个无依赖计算任务场景下的多类型计算任务的并行独立管理,又使得各任务产生器的任务信息的存储地址组成的队列深度灵活可变,因此具有面积小,低功耗,高性能的优点。
图3示出根据本公开实施例的存储器的结构的示意图。
如图3所示,在一种可能的实现方式中,存储器包括两个端口以及D个存储地址,其中一个端口用于接收任务信息,另一端口用于输出任务信息,D是正整数,
在接收到任务信息且任务信息由第n个任务产生器产生时,存储任务信息,包括:
在接收到任务信息且任务信息由第n个任务产生器产生时,按预设顺序依次查找每个存储地址是否空闲,将接收到的任务信息存入查找到的第一个空闲的存储地址。
举例来说,存储器可以是一读一写(1R1W)双端口SRAM,其中一个端口W用于接收任务产生器写入的任务信息,另一端口R用于在着色器读任务信息时输出任务信息到着色器。存储器可包括D个存储地址(D是正整数,在图3的示例中D大于3),分别是第0个存储地址、第1个存储地址、第2个存储地址、……、第D-1个存储地址。存储器宽度可以是任务信息的实际位宽。
可以为D个存储地址预先设置一定的顺序,使得任务信息写入存储器时按顺序写入。例如可以设置为按照第0个存储地址到第D-1个存储地址的顺序写入,或者按照第D-1个存储地址到第0个存储地址的顺序写入。在有新的任务信息写入时,存储任务信息的方式可以是,按预设顺序依次查找每个存储地址是否空闲,将接收到的任务信息存入查找到的第一个空闲的存储地址。存储器上同一任务产生器的任务信息的存储地址组成的队列,即为与该任务产生器对应的队列。
通过这种方式,可以完成任意任务产生器产生的任务信息的存储。只要存储器还有空闲的存储地址,就可以进行存储,不对可存储的某一任务产生器的任务信息的最大数量进行限制,使得各任务产生器的任务信息的存储地址组成的队列深度可以灵活调整。
下面先介绍本公开实施例的控制器的示例性结构,再介绍控制器实现任务信息管理的示例性方式。
图4示出根据本公开实施例的控制器的结构的示意图。
如图4所示,在一种可能的实现方式中,控制器包括有效位寄存器、地址位寄存器队列、头指针和标记位寄存器、尾指针寄存器,
有效位寄存器存储D个有效位,第d个有效位与第d个存储地址对应,第d个有效位的第一状态指示第d个存储地址空闲,第二状态指示第d个存储地址有任务信息存储,0≤d≤D-1,d是整数;
地址位寄存器队列包括D个地址位寄存器,第d个地址位寄存器与第d个存储地址对应,第d个地址位寄存器的编号与第d个存储地址相同,每个地址位寄存器用于存储D个存储地址之一;
头指针和标记位寄存器存储N个标记位,第n个标记位的第一状态指示存储器中未存储由第n个任务产生器产生的任务信息,第n个标记位的第二状态指示存储器中存储由第n个任务产生器产生的任务信息;
头指针和标记位寄存器还存储N个头指针,第n个头指针与第n个任务产生器对应,第n个头指针指向控制器上、与第n个任务产生器对应的存储地址中,排序最先的存储地址所在的地址位寄存器;
尾指针寄存器存储N个尾指针,第n个尾指针与第n个任务产生器对应,第n个尾指针指向控制器上、与第n个任务产生器对应的存储地址中,排序最末的存储地址所在的地址位寄存器。
举例来说,控制器上可设置有四类寄存器,分别是有效位寄存器、地址位寄存器、头指针和标记位寄存器、尾指针寄存器。
其中,有效位寄存器存储D个有效位,分别是第0个有效位、第1个有效位、第2个有效位、……、第D-1个有效位。有效位的位宽可为1bit。第d个(0≤d≤D-1,d是整数,图4的示例中D大于3)有效位与第d个存储地址对应,第d个有效位的第一状态(如“0”)指示第d个存储地址空闲,第二状态(如“1”)指示第d个存储地址有任务信息存储。其中,“空闲”表示存储地址处没有任务信息存储或者存储的任务信息无效,“有任务信息存储”表示存储地址处有任务信息存储且存储的任务信息有效。
地址位寄存器队列包括D个地址位寄存器,分别是第0个地址位寄存器、第1个地址位寄存器、第2个地址位寄存器、……、第D-1个地址位寄存器。第d个地址位寄存器与第d个存储地址对应,第d个地址位寄存器的编号与第d个存储地址相同,每个地址位寄存器用于存储D个存储地址之一。地址位寄存器的位宽可以为⌈log2(D)⌉bit,⌈ ⌉表示向上取整。第d个地址位寄存器存储的不一定是第d个存储地址,也可能是其他的存储地址,在下文中对地址位寄存器在不同情况下存储何种存储地址进行介绍。
头指针和标记位寄存器存储N个标记位,分别是第0个标记位、第1个标记位、第2个标记位、……、第N-1个标记位。标记位的位宽可以为1bit。第n个标记位的第一状态(如“0”)指示存储器中未存储由第n个任务产生器产生的任务信息,第n个标记位的第二状态(如“1”)指示存储器中存储由第n个任务产生器产生的任务信息。
头指针和标记位寄存器还存储N个头指针,分别是第0个头指针、第1个头指针、第2个头指针、……、第N-1个头指针。头指针的位宽可以为⌈log2(D)⌉bit。第n个头指针与第n个任务产生器对应,第n个头指针指向控制器上、与第n个任务产生器对应的存储地址中,排序最先的存储地址所在的地址位寄存器。其中,头指针存储的数值即该头指针指向的地址位寄存器的编号。存储地址排序最先也表示该存储地址处存储的任务信息进入存储的时间最早。
尾指针寄存器存储N个尾指针,分别是第0个尾指针、第1个尾指针、第2个尾指针、……、第N-1个尾指针。尾指针的位宽可以为⌈log2(D)⌉bit。第n个尾指针与第n个任务产生器对应,第n个尾指针指向控制器上、与第n个任务产生器对应的存储地址中,排序最末的存储地址所在的地址位寄存器。其中,尾指针存储的数值即该尾指针指向的地址位寄存器的编号。存储地址排序最末也表示该存储地址处存储的任务信息进入存储的时间最晚。
通过这种方式,使得控制器可以记录其上是否存储某一任务产生器产生的任务信息,在存储某一任务产生器产生的任务信息时,还记录各任务信息的存储地址,并记录排序最先的存储地址的存储位置、排序最末的存储地址的存储位置,从而完成对各任务产生器产生的任务信息的管理。
下面结合图5-图9介绍本公开实施例的控制器对存储器中存储的任务信息的示例性管理方式。
图5示出根据本公开实施例的存储器以及控制器中的各寄存器在初始状态下的存储情况示例。
初始状态下,存储器中D个存储地址均空闲,如图5所示,有效位寄存器中D个有效位全为第一状态“0”,头指针和标记位寄存器中N个标记位全部为第一状态“0”,N个头指针均未指向地址位寄存器,尾指针寄存器中N个尾指针均未指向地址位寄存器,表示N个任务产生器均未产生任何计算任务。D个地址位寄存器均未存储任意存储地址。
图6和图7分别示出根据本公开实施例的存储器写入任务信息时,存储器以及控制器中的各寄存器的存储情况示例。
在一种可能的实现方式中,在接收到第一指示信息时存储任务信息的存储地址,使任务信息的存储地址在其上存储的第n个任务产生器对应的存储地址中排序最末,包括:
在任务信息的存储地址是第d个存储地址时,将第d个有效位由第一状态变更为第二状态;
查询第n个标记位;
在第n个标记位为第一状态时,使第n个头指针、第n个尾指针均指向第d个地址位寄存器,将第n个标记位由第一状态变更为第二状态;
在第n个标记位为第二状态时,将第n个尾指针指向的地址位寄存器存储的存储地址变更为第d个存储地址后,使第n个尾指针指向第d个地址位寄存器。
举例来说,当有一个或多个任务产生器产生任务信息后,其中的一个任务信息(假设是第1个(n=1)任务产生器产生的)最先被写入存储器。存储器例如可以设置为按照第0个存储地址到第D-1个存储地址的顺序写入。由于在初始状态下,存储器中D个存储地址均空闲,因此,查找到的第一个空闲的存储地址可为第0个(d=0)存储地址。可以将任务信息存储至第0个存储地址处。存储器输出第一指示信息到控制器。第一指示信息可包括第0个存储地址以及第1个任务产生器的标识。
控制器接收到第一指示信息时可存储第0个存储地址,并使第0个存储地址在其上存储的第1个任务产生器对应的存储地址中排序最末。
示例性地,如图6所示,可以先将第0个(d=0)有效位由第一状态“0”变更为第二状态“1”,表示存储器上的第0个(d=0)存储地址有任务信息存储。然后,可以查询第1个(n=1)标记位,确定在任务信息存储到第0个(d=0)存储地址之前,是否还有第1个(n=1)任务产生器产生的其他任务信息存储到存储器中,并且尚未输出。由于初始状态下,N个标记位全部为第一状态“0”,因此第1个(n=1)标记位为第一状态“0”,表示在任务信息存储到第0个(d=0)存储地址之前,没有第1个(n=1)任务产生器产生的其他任务信息存储在存储器。第1个(n=1)头指针和第1个(n=1)尾指针也均未指向地址位寄存器。
此时控制器可使得第1个(n=1)头指针和第1个(n=1)尾指针均指向第0个(d=0)地址位寄存器,表示在任务信息存储到第0个(d=0)存储地址之后,第0个(d=0)存储地址成为控制器上存储的、与第1个(n=1)任务产生器对应的唯一一个存储地址,因此第0个(d=0)存储地址既是第1个任务产生器对应的存储地址中排序最先的存储地址,也是排序最末的存储地址。同时可将第1个(n=1)标记位由第一状态“0”变更为第二状态“1”,表示已经有第1个(n=1)任务产生器产生的任务信息存储在存储器。
使第1个(n=1)头指针和第1个(n=1)尾指针均指向第0个(d=0)地址位寄存器的方式,可以是使得第1个(n=1)头指针和第1个(n=1)尾指针分别存储第0个(d=0)地址位寄存器的编号“0”。由于第d个地址位寄存器的编号与第d个存储地址相同,因此,也相当于存储了任务信息的存储地址。
在写入任务信息使得存储器和控制器的存储状态如图6所示之后,假设存储器的第0个存储地址处存储的任务信息输出之前,第1个(n=1)任务产生器产生的又一任务信息被写入存储器。查找到的第一个空闲的存储地址可为第1个(d=1)存储地址。可以将任务信息存储至第1个存储地址处。存储器输出第一指示信息到控制器。第一指示信息可包括第1个存储地址以及第1个任务产生器的标识。
控制器接收到第一指示信息时可存储第1个存储地址,并使第1个存储地址在其上存储的第1个任务产生器对应的存储地址中排序最末。
示例性地,可以先将第1个(d=1)有效位由第一状态“0”变更为第二状态“1”,表示存储器上的第1个(d=1)存储地址有任务信息存储(参见图7)。然后,可以查询第1个(n=1)标记位,确定在任务信息存储到第1个(d=1)存储地址之前,是否还有第1个(n=1)任务产生器产生的其他任务信息存储到存储器中,并且尚未输出。参见图6,第1个(n=1)标记位为第一状态“1”,表示在任务信息存储到第1个(d=1)存储地址之前,已经有第1个(n=1)任务产生器产生的其他任务信息存储在存储器。第1个(n=1)头指针和第1个(n=1)尾指针也均有指向的地址位寄存器。且均指向第1个地址位寄存器。
此时控制器可保持第1个(n=1)头指针指向第0个(d=0)地址位寄存器不变,表示在任务信息存储到第0个(d=0)存储地址之后,第0个存储地址仍是控制器上存储的第1个(n=1)任务产生器对应的存储地址中排序最先的。然后,控制器可将第1个(n=1)尾指针指向的地址位寄存器(即第0个地址位寄存器)存储的存储地址变更为第1个(d=1)存储地址。此时第0个地址位寄存器处存储的存储地址,成为排序次末的存储地址。通过这种方式可以在对应于同一任务产生器的存储地址有多个时,确定多个存储地址的排序。最后,控制器可使第1个(n=1)尾指针指向第1个(d=1)地址位寄存器,表示第1个(d=1)存储地址现在成为控制器上存储的、与第1个(n=1)任务产生器对应的存储地址中排序最末的存储地址。此时第1个(n=1)标记位不变,即仍为第二状态“1”,表示已经有第1个(n=1)任务产生器产生的任务信息存储在存储器。
使第1个(n=1)尾指针指向第1个(d=1)地址位寄存器的方式,可以是使得第1个(n=1)尾指针存储第1个(d=1)地址位寄存器的编号“1”,代替其原本存储的第0个(d=0)地址位寄存器的编号“0”。由于第d个地址位寄存器的编号与第d个存储地址相同,因此,也相当于存储了任务信息的存储地址。
通过这种方式,即可在有新的任务信息写入存储时,使用控制器完成对于该任务信息的存储地址的管理。
在一种可能的实现方式中,将其上存储的每一任务产生器对应的存储地址中排序最先的存储地址分别输出至第一仲裁单元,包括:
查询N个标记位,确定第二状态的标记位;
查询第二状态的标记位对应的头指针指向的地址位寄存器;
将查询到的地址位寄存器的编号输出至第一仲裁单元。
举例来说,控制器每接收到一次任务信息,均向第一仲裁单元输出一次排序最先的存储地址。示例性地,可以先查询标记位寄存器存储的N个标记位。由上文描述可知,第n个标记位的第一状态指示存储器中未存储由第n个任务产生器产生的任务信息,第n个标记位的第二状态指示存储器中存储由第n个任务产生器产生的任务信息,第n个头指针指向控制器上、与第n个任务产生器对应的存储地址中,排序最先的存储地址所在的地址位寄存器。因此,查询第二状态的标记位对应的头指针即可,第一状态的标记位对应的头指针不必查询。第二状态的标记位对应的头指针指向的地址位寄存器的编号相同的存储地址即为排序最先的存储地址。因此,将查询到的地址位寄存器的编号输出至第一仲裁单元即可相当于将排序最先的存储地址输出至第一仲裁单元。
通过这种方式,保证输出到第一仲裁单元的存储地址都是排序最先的存储地址,使得于同一任务产生器,先产生的计算任务可以先执行,保证计算任务的执行顺序。
图8和图9分别示出根据本公开实施例的存储地址被着色器接收后,存储器和控制器的存储状态的更新方式的示例。
在一种可能的实现方式中,第一仲裁单元还用于,在输出至着色器的存储地址被接收时,输出第二指示信息到控制器,第二指示信息包括被接收的存储地址;
控制器还用于:
在被接收的存储地址是第d个存储地址时,根据被接收的存储地址,找到第d个有效位,将第d个有效位由第二状态变更为第一状态;
在第d个存储地址与第n个任务产生器对应时,根据被接收的存储地址,找到第n个头指针和第n个尾指针;
在第n个头指针和第n个尾指针指向同一地址位寄存器时,将第n个头指针和第n个尾指针分别恢复到未指向任意地址位寄存器的初始状态,将第n个标记位由第二状态变更为第一状态;
在第n个头指针和第n个尾指针指向不同地址位寄存器时,使所述控制器上存储的第n个任务产生器对应的存储地址中、排序次先的存储地址所在的地址位寄存器,成为第n个头指针指向的地址位寄存器。
举例来说,在写入任务信息使得存储器和控制器的存储状态如图7所示之后,假设第一仲裁单元输出至着色器的存储地址(例如第0个地址位寄存器的编号)被接收。此时第一仲裁单元还用于,在输出至着色器的存储地址被接收时,输出第二指示信息到控制器,第二指示信息包括被接收的存储地址。则第二指示信息可以包括第0个地址位寄存器的编号,该编号与第0个存储地址相同。
控制器接收第二指示信息。根据第二指示信息,控制器还用于在被接收的存储地址是第d个存储地址时,先根据被接收的存储地址,找到第d个有效位,将第d个有效位由第二状态变更为第一状态。由于第二指示信息包括第0个地址位寄存器的编号,该编号与第0个存储地址相同,则d=0。如图7所示,控制器找到第0个有效位,将第0个有效位由第二状态“1”变更为第一状态“0”,变更后如图8所示,表示第0个存储地址处空闲。
第0个存储地址与第1个任务产生器对应,因此n=1。此后,控制器根据被接收的存储地址(第0个存储地址),找到第1个头指针和第1个尾指针,判断第1个头指针和第1个尾指针是否指向同一地址位寄存器。
参见图7,第1个头指针和第1个尾指针指向不同地址位寄存器,表示第0个存储地址不是存储器上存储的、与第1个任务产生器对应的唯一一个存储地址。因此使控制器上存储的第1个任务产生器对应的存储地址中、排序次先的存储地址所在的地址位寄存器,成为第1个头指针指向的地址位寄存器即可。此时原本排序次先的存储地址即成为排序最先的存储地址。原本排序最先的存储地址已经被着色器接收,不必再存储与该存储地址相关的信息。在图8的示例中,第1个头指针指向第1个地址位寄存器,第1个头指针的数值为1,第1个地址位寄存器对应的第1个存储地址成为排序最先的存储地址。第1个尾指针的数值可以保持不变。
在写入任务信息使得存储器和控制器的存储状态如图8所示之后,假设第一仲裁单元输出至着色器的存储地址(例如第1个地址位寄存器的编号)被接收。此时第一仲裁单元还用于,在输出至着色器的存储地址被接收时,输出第二指示信息到控制器,第二指示信息包括被接收的存储地址。则第二指示信息可以包括第1个地址位寄存器的编号,该编号与第1个存储地址相同。
控制器接收第二指示信息。根据第二指示信息,控制器还用于在被接收的存储地址是第d个存储地址时,先根据被接收的存储地址,找到第d个有效位,将第d个有效位由第二状态变更为第一状态。由于第二指示信息包括第1个地址位寄存器的编号,该编号与第1个存储地址相同,则d=1。如图8所示,控制器找到第1个有效位,将第1个有效位由第二状态“1”变更为第一状态“0”,变更后如图9所示,表示第1个存储地址处空闲。
第1个存储地址与第1个任务产生器对应,因此n=1。此后,控制器根据被接收的存储地址(第1个存储地址),找到第1个头指针和第1个尾指针,判断第1个头指针和第1个尾指针是否指向同一地址位寄存器。
参见图8,第1个头指针和第1个尾指针指向同一地址位寄存器,表示第1个存储地址是存储器上存储的、与第1个任务产生器对应的唯一一个存储地址。如图9所示,此时控制器可将第1个头指针和第1个尾指针分别恢复到未指向任意地址位寄存器的初始状态,将第1个标记位由第二状态“1”变更为第一状态“0”,表示存储器上已经没有第1个任务产生器对应的存储地址。控制器上也没有与第1个任务产生器相关的信息存储。
通过这种方式,可以在着色器接收存储地址时,实现存储器以及控制器存储的信息的准确更新。
图10示出根据本公开实施例的任务管理装置的结构的示意图。
如图10所示,在一种可能的实现方式中,所述装置还包括第二仲裁单元,
任务产生器用于,在产生计算任务的同时,将计算任务的任务信息输出至第二仲裁单元,不同任务产生器产生的计算任务类型不同;
第二仲裁单元用于,在同时接收到多个任务信息时,选择一个任务信息输出至存储器。
举例来说,不同任务产生器产生的计算任务类型不同时,任务管理装置还可包括第二仲裁单元,任务信息可以由任务产生器输出给第二仲裁单元,经第二仲裁单元选择一个任务信息输出至存储器。第二仲裁单元的选择机制可以根据应用场景需求进行设置,可以设置为优先选择某一类型的计算任务的任务信息,也可以设置从各种类型的任务信息中随机选择。本公开实施例对此不作限制。
通过这种方式,可以控制不同类型的任务信息存储到存储器的顺序。
图11示出根据本公开实施例的任务管理方法的流程的示意图。
如图11所示,在一种可能的实现方式中,本公开还提出一种任务管理方法,所述方法应用于任务管理装置,所述装置集成在图形处理器中,所述装置包括N个任务产生器、存储器、控制器、第一仲裁单元、着色器,N是大于1的整数,所述方法包括步骤S11-步骤S14:
步骤S11,所述存储器在接收到任务信息且所述任务信息由第n个任务产生器产生时,存储所述任务信息并输出第一指示信息到所述控制器,所述第一指示信息包括所述任务信息的存储地址以及所述第n个任务产生器的标识,0≤n≤N-1,n是整数;
步骤S12,所述控制器在接收到所述第一指示信息时存储所述任务信息的存储地址,使所述任务信息的存储地址在所述控制器上存储的所述第n个任务产生器对应的存储地址中排序最末,并将所述控制器上存储的每一任务产生器对应的存储地址中排序最先的存储地址分别输出至所述第一仲裁单元;
步骤S13,所述第一仲裁单元从接收到的存储地址中选择一个存储地址输出至所述着色器;
步骤S14,所述着色器在前一计算任务执行完毕时接收所述存储地址,从所述存储器处读出该存储地址处存储的任务信息,执行该任务信息对应的计算任务。
各步骤的示例性实现方式,可以参见上文任务管理装置的相应描述,在此不再赘述。
在一种可能的实现方式中,所述存储器包括两个端口以及D个存储地址,其中一个端口用于接收任务信息,另一端口用于输出任务信息,D是正整数,所述在接收到任务信息且所述任务信息由第n个任务产生器产生时,存储所述任务信息,包括:在接收到任务信息且所述任务信息由第n个任务产生器产生时,按预设顺序依次查找每个存储地址是否空闲,将接收到的任务信息存入查找到的第一个空闲的存储地址。
在一种可能的实现方式中,所述控制器包括有效位寄存器、地址位寄存器队列、头指针和标记位寄存器、尾指针寄存器,所述有效位寄存器存储D个有效位,第d个有效位与第d个存储地址对应,第d个有效位的第一状态指示第d个存储地址空闲,第二状态指示第d个存储地址有任务信息存储,0≤d≤D-1,d是整数;所述地址位寄存器队列包括D个地址位寄存器,第d个地址位寄存器与第d个存储地址对应,第d个地址位寄存器的编号与第d个存储地址相同,每个地址位寄存器用于存储所述D个存储地址之一;所述头指针和标记位寄存器存储N个标记位,第n个标记位的第一状态指示所述存储器中未存储由第n个任务产生器产生的任务信息,第n个标记位的第二状态指示所述存储器中存储由第n个任务产生器产生的任务信息;所述头指针和标记位寄存器还存储N个头指针,第n个头指针与第n个任务产生器对应,第n个头指针指向所述控制器上、与第n个任务产生器对应的存储地址中,排序最先的存储地址所在的地址位寄存器;所述尾指针寄存器存储N个尾指针,第n个尾指针与第n个任务产生器对应,第n个尾指针指向所述控制器上、与第n个任务产生器对应的存储地址中,排序最末的存储地址所在的地址位寄存器。
在一种可能的实现方式中,所述在接收到所述第一指示信息时存储所述任务信息的存储地址,使所述任务信息的存储地址在其上存储的所述第n个任务产生器对应的存储地址中排序最末,包括:在所述任务信息的存储地址是第d个存储地址时,将第d个有效位由第一状态变更为第二状态;查询第n个标记位;在第n个标记位为第一状态时,使第n个头指针、第n个尾指针均指向第d个地址位寄存器,将第n个标记位由第一状态变更为第二状态;在第n个标记位为第二状态时,将第n个尾指针指向的地址位寄存器存储的存储地址变更为第d个存储地址后,使第n个尾指针指向第d个地址位寄存器。
在一种可能的实现方式中,所述将其上存储的每一任务产生器对应的存储地址中排序最先的存储地址分别输出至所述第一仲裁单元,包括:查询所述N个标记位,确定第二状态的标记位;查询所述第二状态的标记位对应的头指针指向的地址位寄存器;将查询到的地址位寄存器的编号输出至所述第一仲裁单元。
在一种可能的实现方式中,所述方法还包括:在输出至所述着色器的存储地址被接收时,所述第一仲裁单元输出第二指示信息到所述控制器,所述第二指示信息包括被接收的存储地址;在所述被接收的存储地址是第d个存储地址时,所述控制器根据所述被接收的存储地址,找到第d个有效位,将第d个有效位由第二状态变更为第一状态;在第d个存储地址与第n个任务产生器对应时,根据所述被接收的存储地址,找到第n个头指针和第n个尾指针;在第n个头指针和第n个尾指针指向同一地址位寄存器时,将第n个头指针和第n个尾指针分别恢复到未指向任意地址位寄存器的初始状态,将第n个标记位由第二状态变更为第一状态;在第n个头指针和第n个尾指针指向不同地址位寄存器时,使所述控制器上存储的第n个任务产生器对应的存储地址中、排序次先的存储地址所在的地址位寄存器,成为第n个头指针指向的地址位寄存器。
在一种可能的实现方式中,所述装置还包括第二仲裁单元,所述方法还包括:所述任务产生器在产生所述计算任务的同时,将所述计算任务的任务信息输出至所述第二仲裁单元,不同任务产生器产生的计算任务类型不同;所述第二仲裁单元在同时接收到多个任务信息时,选择一个任务信息输出至所述存储器。
在一种可能的实现方式中,本公开还提供一种图形处理器,包括以上所述的任务管理装置。
在一种可能的实现方式中,本公开还提供一种电子设备,包括以上所述的图形处理器。
电子设备可以是智能手机、上网本、平板电脑、笔记本电脑、可穿戴电子设备、TV、虚拟现实设备等等,只要电子设备可包括图形处理器即可,本公开实施例对于电子设备的具体类型不作限制。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种任务管理装置,其特征在于,所述装置集成在图形处理器中,所述装置包括N个任务产生器、存储器、控制器、第一仲裁单元、着色器,N是大于1的整数,
所述存储器,用于在接收到任务信息且所述任务信息由第n个任务产生器产生时,存储所述任务信息并输出第一指示信息到所述控制器,所述第一指示信息包括所述任务信息的存储地址以及所述第n个任务产生器的标识,0≤n≤N-1,n是整数;
所述控制器,用于在接收到所述第一指示信息时存储所述任务信息的存储地址,使所述任务信息的存储地址在所述控制器上存储的所述第n个任务产生器对应的存储地址中排序最末,并将所述控制器上存储的每一任务产生器对应的存储地址中排序最先的存储地址分别输出至所述第一仲裁单元;
所述第一仲裁单元,用于从接收到的存储地址中选择一个存储地址输出至所述着色器;
所述着色器,用于在前一计算任务执行完毕时接收所述存储地址,从所述存储器处读出该存储地址处存储的任务信息,执行该任务信息对应的计算任务。
2.根据权利要求1所述的装置,其特征在于,所述存储器包括两个端口以及D个存储地址,其中一个端口用于接收任务信息,另一端口用于输出任务信息,D是正整数,
所述在接收到任务信息且所述任务信息由第n个任务产生器产生时,存储所述任务信息,包括:
在接收到任务信息且所述任务信息由第n个任务产生器产生时,按预设顺序依次查找每个存储地址是否空闲,将接收到的任务信息存入查找到的第一个空闲的存储地址。
3.根据权利要求2所述的装置,其特征在于,所述控制器包括有效位寄存器、地址位寄存器队列、头指针和标记位寄存器、尾指针寄存器,
所述有效位寄存器存储D个有效位,第d个有效位与第d个存储地址对应,第d个有效位的第一状态指示第d个存储地址空闲,第二状态指示第d个存储地址有任务信息存储,0≤d≤D-1,d是整数;
所述地址位寄存器队列包括D个地址位寄存器,第d个地址位寄存器与第d个存储地址对应,第d个地址位寄存器的编号与第d个存储地址相同,每个地址位寄存器用于存储所述D个存储地址之一;
所述头指针和标记位寄存器存储N个标记位,第n个标记位的第一状态指示所述存储器中未存储由第n个任务产生器产生的任务信息,第n个标记位的第二状态指示所述存储器中存储由第n个任务产生器产生的任务信息;
所述头指针和标记位寄存器还存储N个头指针,第n个头指针与第n个任务产生器对应,第n个头指针指向所述控制器上、与第n个任务产生器对应的存储地址中,排序最先的存储地址所在的地址位寄存器;
所述尾指针寄存器存储N个尾指针,第n个尾指针与第n个任务产生器对应,第n个尾指针指向所述控制器上、与第n个任务产生器对应的存储地址中,排序最末的存储地址所在的地址位寄存器。
4.根据权利要求3所述的装置,其特征在于,所述在接收到所述第一指示信息时存储所述任务信息的存储地址,使所述任务信息的存储地址在其上存储的所述第n个任务产生器对应的存储地址中排序最末,包括:
在所述任务信息的存储地址是第d个存储地址时,将第d个有效位由第一状态变更为第二状态;
查询第n个标记位;
在第n个标记位为第一状态时,使第n个头指针、第n个尾指针均指向第d个地址位寄存器,将第n个标记位由第一状态变更为第二状态;
在第n个标记位为第二状态时,将第n个尾指针指向的地址位寄存器存储的存储地址变更为第d个存储地址后,使第n个尾指针指向第d个地址位寄存器。
5.根据权利要求4所述的装置,其特征在于,将其上存储的每一任务产生器对应的存储地址中排序最先的存储地址分别输出至所述第一仲裁单元,包括:
查询所述N个标记位,确定第二状态的标记位;
查询所述第二状态的标记位对应的头指针指向的地址位寄存器;
将查询到的地址位寄存器的编号输出至所述第一仲裁单元。
6.根据权利要求5所述的装置,其特征在于,
所述第一仲裁单元还用于,在输出至所述着色器的存储地址被接收时,输出第二指示信息到所述控制器,所述第二指示信息包括被接收的存储地址;
所述控制器还用于:
在所述被接收的存储地址是第d个存储地址时,根据所述被接收的存储地址,找到第d个有效位,将第d个有效位由第二状态变更为第一状态;
在第d个存储地址与第n个任务产生器对应时,根据所述被接收的存储地址,找到第n个头指针和第n个尾指针;
在第n个头指针和第n个尾指针指向同一地址位寄存器时,将第n个头指针和第n个尾指针分别恢复到未指向任意地址位寄存器的初始状态,将第n个标记位由第二状态变更为第一状态;
在第n个头指针和第n个尾指针指向不同地址位寄存器时,使所述控制器上存储的第n个任务产生器对应的存储地址中、排序次先的存储地址所在的地址位寄存器,成为第n个头指针指向的地址位寄存器。
7.根据权利要求1所述的装置,其特征在于,所述装置还包括第二仲裁单元,
所述任务产生器用于,在产生所述计算任务的同时,将所述计算任务的任务信息输出至所述第二仲裁单元,不同任务产生器产生的计算任务类型不同;
所述第二仲裁单元用于,在同时接收到多个任务信息时,选择一个任务信息输出至所述存储器。
8.一种任务管理方法,其特征在于,所述方法应用于任务管理装置,所述装置集成在图形处理器中,所述装置包括N个任务产生器、存储器、控制器、第一仲裁单元、着色器,N是大于1的整数,所述方法包括:
所述存储器在接收到任务信息且所述任务信息由第n个任务产生器产生时,存储所述任务信息并输出第一指示信息到所述控制器,所述第一指示信息包括所述任务信息的存储地址以及所述第n个任务产生器的标识,0≤n≤N-1,n是整数;
所述控制器在接收到所述第一指示信息时存储所述任务信息的存储地址,使所述任务信息的存储地址在所述控制器上存储的所述第n个任务产生器对应的存储地址中排序最末,并将所述控制器上存储的每一任务产生器对应的存储地址中排序最先的存储地址分别输出至所述第一仲裁单元;
所述第一仲裁单元从接收到的存储地址中选择一个存储地址输出至所述着色器;
所述着色器在前一计算任务执行完毕时接收所述存储地址,从所述存储器处读出该存储地址处存储的任务信息,执行该任务信息对应的计算任务。
9.一种图形处理器,其特征在于,包括如权利要求1-7中任一项所述的任务管理装置。
10.一种电子设备,其特征在于,包括如权利要求9所述的图形处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310972191.7A CN116700631B (zh) | 2023-08-03 | 2023-08-03 | 任务管理装置、方法、图形处理器及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310972191.7A CN116700631B (zh) | 2023-08-03 | 2023-08-03 | 任务管理装置、方法、图形处理器及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116700631A CN116700631A (zh) | 2023-09-05 |
CN116700631B true CN116700631B (zh) | 2023-09-29 |
Family
ID=87829669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310972191.7A Active CN116700631B (zh) | 2023-08-03 | 2023-08-03 | 任务管理装置、方法、图形处理器及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116700631B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115454586A (zh) * | 2016-12-31 | 2022-12-09 | 英特尔公司 | 用于异构计算的系统、方法和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8407429B2 (en) * | 2006-06-21 | 2013-03-26 | Element Cxi, Llc | Multi-context configurable memory controller |
US10403333B2 (en) * | 2016-07-15 | 2019-09-03 | Advanced Micro Devices, Inc. | Memory controller with flexible address decoding |
US10996981B2 (en) * | 2019-03-15 | 2021-05-04 | Toshiba Memory Corporation | Processor zero overhead task scheduling |
US20230104845A1 (en) * | 2021-09-24 | 2023-04-06 | Intel Corporation | Graphics processor memory access architecture with address sorting |
CN113946521A (zh) * | 2021-10-22 | 2022-01-18 | 上海兆芯集成电路有限公司 | 快速搜索高速缓存的方法及装置 |
-
2023
- 2023-08-03 CN CN202310972191.7A patent/CN116700631B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115454586A (zh) * | 2016-12-31 | 2022-12-09 | 英特尔公司 | 用于异构计算的系统、方法和装置 |
Non-Patent Citations (1)
Title |
---|
Wenchao Wu, et al.TurboMGNN: Improving Concurrent GNN Training Tasks on GPU With Fine-Grained Kernel Fusion.IEEE Transactions on Parallel and Distributed Systems.2023,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN116700631A (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7487302B2 (en) | Service layer architecture for memory access system and method | |
US5818469A (en) | Graphics interface processing methodology in symmetric multiprocessing or distributed network environments | |
US7484017B1 (en) | Dequeuing from a host adapter two-dimensional queue | |
CN100541665C (zh) | 可编程并行查找存储器 | |
CN113900974B (zh) | 一种存储装置、数据存储方法及相关设备 | |
CN113836184A (zh) | 一种业务持久化方法及装置 | |
JPS6217876Y2 (zh) | ||
CN109298888B (zh) | 队列的数据存取方法及装置 | |
US8972693B2 (en) | Hardware managed allocation and deallocation evaluation circuit | |
CN116700631B (zh) | 任务管理装置、方法、图形处理器及电子设备 | |
CN100514362C (zh) | 具有独立输出的交换开关系统及其方法 | |
US5692163A (en) | Process system which generates sets of output data from sets of predetermined input data with duplicate data | |
US6735677B1 (en) | Parameterizable queued memory access system | |
CN115168249A (zh) | 地址转换方法、存储器系统、电子设备及存储介质 | |
US6408366B1 (en) | Interface device, method and monitoring system for monitoring the status of a hardware device | |
US6654861B2 (en) | Method to manage multiple communication queues in an 8-bit microcontroller | |
CN112286466B (zh) | 电子装置及空间复用方法 | |
CN109508289B (zh) | 测试方法和装置、电子设备 | |
CN116719479B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN117196929B (zh) | 基于定长数据包的软硬件交互系统 | |
JP2009199384A (ja) | データ処理装置 | |
CN115934004B (zh) | 链表形式的队列管理电路、方法、存储装置及电子设备 | |
US6938102B1 (en) | Dequeuing from a host adapter two-dimensional queue | |
CN108900631A (zh) | 一种消息分配方法、装置及分布式系统 | |
CN107436918A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |