CN114637536A - 任务处理方法、计算协处理器、芯片及计算机设备 - Google Patents
任务处理方法、计算协处理器、芯片及计算机设备 Download PDFInfo
- Publication number
- CN114637536A CN114637536A CN202210304928.3A CN202210304928A CN114637536A CN 114637536 A CN114637536 A CN 114637536A CN 202210304928 A CN202210304928 A CN 202210304928A CN 114637536 A CN114637536 A CN 114637536A
- Authority
- CN
- China
- Prior art keywords
- command
- list
- module
- data processing
- control information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 14
- 238000012545 processing Methods 0.000 claims abstract description 225
- 238000000034 method Methods 0.000 claims description 37
- 239000000725 suspension Substances 0.000 claims description 27
- 230000006870 function Effects 0.000 claims description 13
- 238000004458 analytical method Methods 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
本申请属于芯片技术领域,公开了任务处理方法、计算协处理器、芯片及计算机设备,该方法应用于计算协处理器中的前端控制引擎,计算协处理器还包括数据处理单元,前端控制引擎包括命令队列管理模块、硬件命令队列模块、可编程命令处理模块以及单元管理模块。硬件命令队列模块接收命令队列管理模块发送的命令提交控制信息,并基于命令提交控制信息从存储器读取命令提交列表,以及将命令提交列表中包含的命令执行控制信息发送至可编程命令处理模块;可编程命令处理模块,基于接收的命令执行控制信息从存储器读取命令执行列表,并通过单元管理模块将命令执行列表中包含的命令分配至数据处理单元。这样,可以灵活且高效率的分配命令。
Description
技术领域
本申请涉及芯片技术领域,具体而言,涉及任务处理方法、计算协处理器、芯片及计算机设备。
背景技术
在深度神经网络等复杂技术的应用场景中,计算机设备通常通过计算协处理器处理具有数据量大、计算量大以及计算种类多等特点的复杂技术的计算任务。其中,计算协处理器用于协助中央处理器完成其无法执行或执行效率低下的处理工作而开发和应用。计算协处理器中包括前端控制引擎和数据处理单元。前端控制引擎基于主机处理器的任务指示,将复杂技术的计算任务的各命令,分配至计算协处理器中的各数据处理单元,并通过数据处理单元执行被分配的命令。
但是,在通过前端控制引擎分配复杂计算任务的相关命令时,通常存在灵活性差的问题。
发明内容
本申请实施例的目的在于提供任务处理方法、计算协处理器、芯片及计算机设备,用以在通过前端控制引擎分配复杂计算任务的相关命令时,可以灵活的分配命令。
一方面,提供一种任务处理方法,应用于计算协处理器中的前端控制引擎,计算协处理器中还包括至少一个数据处理单元,前端控制引擎包括硬件命令队列模块以及可编程命令处理模块,硬件命令队列模块是基于固定功能硬件执行命令的,可编程命令处理模块具有可编程功能,方法包括:
硬件命令队列模块,基于接收的待处理任务对应的命令提交控制信息从存储器读取命令提交列表,并将命令提交列表中包含的命令执行控制信息发送至可编程命令处理模块;
可编程命令处理模块,基于接收的命令执行控制信息从存储器读取命令执行列表,并将命令执行列表中包含的命令分配至至少一个数据处理单元中匹配的数据处理单元,以供各数据处理单元执行被分配的命令。
在上述实现过程中,由于可编程命令处理模块具有灵活性高的特点,因此,将硬件命令队列模块与可编程命令处理模块相结合,提高了前端控制引擎处理命令的灵活性,将硬件命令队列模块与可编程命令处理模块结合后,既具有硬件命令队列模块的并行性高的特点,又具有可编程命令处理模块可编程性的特点,不需要复杂的编程设计以及高昂的微处理器设计成本,提高了前端控制引擎处理命令的灵活性,保持了任务处理的并行性和高效性。
一方面,提供一种应用于计算协处理器中的前端控制引擎,计算协处理器中还包括至少一个数据处理单元,前端控制引擎包括硬件命令队列模块以及可编程命令处理模块;
硬件命令队列模块,用于基于接收的待处理任务对应的命令提交控制信息从存储器读取命令提交列表,并将命令提交列表中包含的命令执行控制信息发送至可编程命令处理模块;
可编程命令处理模块,用于基于接收的命令执行控制信息从存储器读取命令执行列表,并将命令执行列表中包含的命令分配至至少一个数据处理单元中匹配的数据处理单元,以供各数据处理单元执行被分配的命令。
一方面,提供一种芯片,包括前端控制引擎,芯片具有至少一个数据处理单元,前端控制引擎包括:硬件命令队列模块以及可编程命令处理模块;
硬件命令队列模块,用于基于接收的待处理任务对应的命令提交控制信息从存储器读取命令提交列表,并将命令提交列表中包含的命令执行控制信息发送至可编程命令处理模块;
可编程命令处理模块,用于基于接收的命令执行控制信息从存储器读取命令执行列表,并将命令执行列表中包含的命令分配至至少一个数据处理单元中匹配的数据处理单元,以供各数据处理单元执行被分配的命令。
一方面,提供一种计算协处理器,包括前端控制引擎和至少一个数据处理单元,前端控制引擎用于运行如上述任一种任务处理的各种可选实现方式中提供的方法的步骤向至少一个数据处理单元分配命令,至少一个数据处理单元用于执行被分配的命令。
一方面,提供一种芯片,包括计算协处理器以及存储器,存储器存储有计算机可读取指令,当计算机可读取指令由计算协处理器执行时,采用上述任一种任务处理的各种可选实现方式中提供的方法的步骤。
一方面,提供一种计算机设备,包括计算协处理器以及存储器,存储器存储有计算机可读取指令,当计算机可读取指令由计算协处理器执行时,执行如上述任一种任务处理的各种可选实现方式中提供的方法的步骤。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种计算协处理器的结构示意图;
图2为本申请实施例提供的一种前端控制引擎的结构示意图;
图3为本申请实施例提供的一种任务处理方法300的实施流程图;
图4为本申请实施例提供的一种两级列表的结构示例图;
图5为本申请实施例提供的一种三级列表的结构示例图;
图6为本申请实施例提供的一种任务切换方法600的实施流程图;
图7为本申请实施例提供的一种前端控制引擎700的结构框图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
首先对本申请实施例中涉及的部分用语进行说明,以便于本领域技术人员理解。
终端设备:可以是移动终端、固定终端或便携式终端,例如移动手机、站点、单元、设备、多媒体计算机、多媒体平板、互联网节点、通信器、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、个人通信***设备、个人导航设备、个人数字助理、音频/视频播放器、数码相机/摄像机、定位设备、电视接收器、无线电广播接收器、电子书设备、游戏设备或者其任意组合,包括这些设备的配件和外设或者其任意组合。还可预见到的是,终端设备能够支持任意类型的针对用户的接口(例如可穿戴设备)等。
服务器:可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务以及大数据和人工智能平台等基础云计算服务的云服务器。
图形处理器(Graphics Processing Unit,GPU):又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。
人工智能(Artificial Intelligence,AI):是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。
为了能够更好地执行更多样更复杂的任务,满足多样的任务场景需求,本申请实施例提供了一种协处理器的前端控制引擎,还提供了一种任务处理方法、计算协处理器、芯片及计算机设备,其中,可以通过前端控制引擎灵活分配复杂计算任务的相关命令。
参阅图1所示,为本申请实施例提供的一种计算协处理器的结构示意图。计算协处理器包括前端控制引擎、命令网络、一个或多个数据处理单元以及存储器接口。
计算协处理器:可简称为协处理器,为计算机设备中除主机处理器(即主机CPU)之外的处理器,用于执行主机CPU下发的任务命令。
例如,计算协处理器可以为异构计算处理器、GPU以及通用图形处理器(General-purpose computing on graphics processing units,GPGPU)等。
可选的,计算机设备可以为服务器,也可以为终端设备,在此不作限制。计算协处理器可以拥有处理人工智能等复杂技术相关的计算任务的多种专用硬件计算单元。计算协处理器执行主机CPU的命令可以是同步方式,也可以是异步方式。
一种计算协处理器和主机CPU同步操作的应用场景中,计算协处理器要等待主机CPU准备某个数据处理任务的输入数据,或者,主机CPU需要等待计算协处理器的某个运算结果。
前端控制引擎:用于与主机CPU进行通信,读取并解析主机CPU针对待处理任务下发的任务指示,以及根据该任务指示向各数据处理单元分发用于执行待处理任务的各命令。
数据处理单元:通过命令网络与前端控制引擎连接,用于处理前端控制引擎分发的命令,可以将执行结果返回至前端控制引擎。
可选的,数据处理单元可以为一个,也可以为多个。多个数据处理单元的类型可以相同,也可以不同。如图1中,数据处理单元包括:数据处理单元0、数据处理单元1……以及数据处理单元N。其中,N为自然数。
可选的,数据处理单元可以为纯计算单元,例如,针对人工智能运算的卷积或矩阵乘的加速硬件,可编程的单指令流多数据流处理器(Single Instruction Multiple Data,SIMD),纯数据搬运单元,以及针对特定应用的数据处理单元(如,视频编解码器,图片处理器)等。
在一种应用场景中,多个数据处理单元需要同步完成同一计算任务,前端控制引擎可对多个数据处理单元之间的执行命令进行同步操作。这些同步操作可以通过前端控制引擎执行特殊的等待命令或者原子操作来完成。
存储器接口:用于读写存储器。
参阅图2所示,为本申请实施例提供的一种前端控制引擎的结构示意图。下面将结合图2对上述图1中的前端控制引擎的结构进行具体说明。如图2所示,前端控制引擎可包括主机接口模块、硬件命令队列模块以及可编程命令处理模块。可选的,前端控制引擎还可以包括命令队列管理模块和/或单元管理模块。
主机接口模块:用于实现主机CPU与前端控制引擎之间的通信,接收主机CPU下发的命令列表更新或者任务中止等命令。
可选的,主机CPU可以通过主机接口模块与命令队列管理模块通信连接,也可以通过主机接口模块直接与硬件命令队列模块通信连接。主机接口模块可以为主机接口寄存器。
命令队列管理模块:用于对各硬件命令队列模块进行调度,以及控制计算任务切换等。其中,命令队列管理模块可以是可编程的,也可以是不可编程的。
一种实施方式中,命令队列管理模块通过主机接口模块,接收主机CPU下发的命令列表更新或者任务中止等命令,并基于主机CPU下发的命令,向各空闲的硬件命令队列模块分配用于读取各命令提交列表的命令提交控制信息。
其中,命令提交控制信息中至少包括命令提交列表的存储地址。
一种实施方式中,主机CPU确定命令列表更新时,对主机接口寄存器进行置位处理。命令队列管理模块读取主机接口寄存器中的寄存器信息(即CPU下发的命令),并基于该寄存器信息确定命令列表更新时,基于该寄存器信息,从存储器读取命令管理列表,并获取命令管理列表中包含的各命令提交控制信息,以及按照各命令提交列表的优先级,依次将每一命令提交列表对应的命令提交控制信息分配至空闲的硬件命令队列模块。
硬件命令队列模块:是基于固定功能硬件执行命令的,用于基于分配的命令提交控制信息,读取和解析命令提交列表中的各命令执行控制信息,并将各命令执行控制信息发送至可编程命令处理模块。
一种实施方式中,硬件命令队列模块接收命令队列管理模块发送的命令提交控制信息。
一种实施方式中,硬件命令队列模块读取主机CPU写入主机接口寄存器的寄存器信息,并基于该寄存器信息,获取命令提交控制信息,以及将命令提交列表中的各命令执行控制信息,发送至可编程命令处理模块。
其中,前端控制引擎包括一个或多个硬件命令队列模块,各硬件命令队列模块可以并行执行,每一硬件命令队列模块均对应连接有一个或多个独立的可编程命令处理模块。由于可编程命令处理模块具有灵活性高的特点,将硬件命令队列模块与可编程命令处理模块相结合,提高了前端控制引擎处理命令的灵活性,以及多个硬件命令队列模块可以并行分配命令,在将多个硬件命令队列模块与可编程命令处理模块结合后,既具有硬件命令队列模块的并行性高的特点,又具有可编程命令处理模块可编程性的特点,不需要复杂的编程设计以及高昂的微处理器设计成本,提高了前端控制引擎处理命令的灵活性,保持了任务处理的并行性和高效性。
一种实施方式中,每一硬件命令队列模块均对应连接有一个独立的可编程命令处理模块,并将命令执行控制信息发送至连接的可编程命令处理模块。
实际应用中,不同硬件命令队列模块连接的可编程命令处理模块可以相同,也可以不同,在此不作限制。
可编程命令处理模块:具有可编程功能,用于接收硬件命令队列模块发送的命令执行控制信息,并基于命令执行控制信息,读取并解析命令执行列表,以及将命令执行列表中的命令写入单元管理模块对应的管理寄存器,也可以将命令执行列表中的命令直接提供给数据处理单元。
其中,可编程命令处理模块可以采用条件执行的方式反复执行命令执行列表中的一段命令。
一种实施方式中,可编程命令处理模块可以为可编程命令处理器,可以为精简指令集计算架构(Reduced Instruction Set Computing,RISC)的处理器。
实际应用中,可编程命令处理模块可以根据实际应用场景进行设置,在此不作限制。
这样,通过可编程命令处理模块的条件执行方式,可以在计算协处理器上反复执行命令执行列表中的一段命令,不需要主机CPU频繁为计算协处理器准备各命令列表,减少了前端控制引擎与主机CPU之间的通信带宽。对于深度学习网络等技术的复杂计算任务,后续的命令是否执行取决于当前命令执行的结果,若前端控制引擎仅仅采用固定功能硬件执行命令,则需要反复将命令运行结果返回到主机CPU,根据主机CPU对命令运行结果下发的命令,判断是否执行后续的命令,导致命令执行时,会产生空隙,进而导致计算效率下降。本申请实施例中,可编程命令处理模块可以直接对当前数据处理命令的结果进行判断,避免了等待主机CPU的处理时间,也降低了主机CPU的负载。以及,通过多个可以并行执行的可编程处理器,可以避免设计单个高性能处理器的硬件复杂度,也可以避免通过软件实现多线程操作而引起的频繁上下文切换操作。进一步的,不同于传统的微处理器采用引导模式(Bootloader)的启动方式,可编程命令处理模块可直接由硬件命令队列模块启动,每次启动的输入是命令执行列表中的一段待执行的命令,等命令执行列表执行完成后,可以直接进入休眠状态,节省了耗费的功耗。
单元管理模块:用于读取各可编程命令处理模块写入管理寄存器的各命令,并根据各数据处理单元的状态,将管理寄存器的各命令分别分配至各数据处理单元中匹配的数据处理单元。
这样,可编程命令处理模块通过读写管理寄存器的方式,与单元管理模块进行交互,提高了可扩展性和可编程性。
参阅图3所示,为本申请实施例提供的一种任务处理方法300的实施流程图,该方法可由协处理器的前端控制引擎执行,例如可由图1或图2所示的前端控制引擎执行。下面将结合图1所示的计算协处理器以及图2所示的前端控制引擎,对任务处理方法进行具体说明。该方法的具体实施流程可包括:
步骤301:硬件命令队列模块,基于接收的待处理任务对应的命令提交控制信息,从存储器读取命令提交列表。
具体的,主机CPU确定存在待处理任务时,将命令列表更新,并通过主机接口模块向前端控制引擎下发命令列表更新指令。前端控制引擎基于该命令列表更新指令,按照分配规则,依次选取待处理任务对应的至少一个命令提交控制信息,并将选取的命令提交控制信息分配给空闲的硬件命令队列模块。每一硬件命令队列模块执行以下步骤:确定接收到命令提交控制信息时,基于该命令提交控制信息,从存储器读取命令提交列表。
一种实施方式中,主机CPU的软件(如,应用程序)生成用于执行待处理任务的各级命令列表,并将各级命令列表存储至存储器后,向前端控制引擎下发命令列表更新指令。
其中,命令列表至少包括两级列表,可选的,命令列表可以包括两级列表,2级列表即命令提交列表,以及1级列表即命令执行列表。命令列表还可以包括三级列表,3级列表即命令管理列表、2级列表即命令提交列表,以及1级列表即命令执行列表。
参阅图4所示,为一种两级列表的结构示例图。图4中包括命令提交列表和命令执行列表。参阅图5所示,为一种三级列表的结构示例图。图5中包括命令管理列表、命令提交列表和命令执行列表。
其中,命令执行列表中包含M1个命令,即命令0、命令1……命令M1,可由可编程命令处理模块读取和解析,并将解析出的命令发送到异构计算器的数据处理器单元以执行。
命令提交列表中包括M2个命令执行列表的命令执行控制信息,即命令执行列表0、命令执行列表1……以及命令执行列表M2。可由硬件命令队列模块将命令提交列表中的命令执行控制信息发送至可编程命令处理模块。
可选的,命令提交列表可以被设计为环形缓冲结构,也可以被设计为链表结构。
其中,环形缓冲结构通过写指针和读指针来完成命令提交列表的管理。当主机处理器的软件(如,软件驱动)在命令提交列表中添加一个新的命令执行列表的命令执行控制信息时,主机处理器会更新写指针,当硬件命令队列模块读取一个命令执行列表的命令执行控制信息后,硬件命令队列模块会更新读指针。
若采用环形缓冲结构,则软件不用频繁分配内存,减少了耗费的存储资源以及简化了操作步骤,若采用链表结构,则将命令提交列表的最后一个条目指向一个新的提交列表,链表结构的命令提交列表通常仅需要一次提交,在读写命令执行列表后,不需要每次更新读写指针。可选的,命令提交列表也可以储存硬件命令类型的命令,并通过前端控制引擎的固定功能硬件执行,如,一些命令队列的同步操作或者可编程命令处理模块的缓存维护命令。
命令管理列表中包含M3个命令提交列表的命令提交控制信息,即命令提交列表0、命令提交列表1、命令提交列表2……以及命令提交列表M3。
其中,M1、M2以及M3均为自然数。
本申请实施例中,通过引入第三级列表即命令管理列表,可以减少耗费的片上寄存器(即主机接口寄存器)的资源。当命令提交列表的数目比较多时,若保存各命令提交列表的信息,则会消耗大量的硬件资源,而且会加重主机CPU读写主机接口寄存器的负担。而将这些信息以第三级列表的形式储存在存储器后,主机CPU只需要通过主机接口寄存器指明命令管理列表的存储地址和长度。可以支持更多的命令提交列表,且具有良好的可扩展性。
需要说明的是,由于数据处理任务的不同,列表的长度可以调整。
实际应用中,命令列表的数量、级别以及长度,均可以根据实际应用场景进行设置,在此不作限制。
本申请实施例中,命令列表采用了多级结构的组织形式。采用多级的命令结构的好处是可以方便硬件异步执行命令。如果只有一级命令列表,则需要等待当前列表释放存储资源,会阻塞主机CPU端的软件准备的多个命令列表,硬件命令队列模块也无法预先读取下一个命令列表,从而降低了处理器性能。
其中,基于命令列表的级数的不同,获取以及分配命令提交控制信息时,可以采用以下任一方式:
方式1:命令队列管理模块通过主机接口模块,接收主机CPU下发的命令管理控制信息,并基于命令管理控制信息,从存储器读取命令管理列表,以及将命令管理列表中包含的至少一个命令提交控制信息分别发送至各硬件命令队列模块中空闲的硬件命令队列模块。
其中,命令管理控制信息用于指示命令列表是否更新。
方式2:命令队列管理模块通过主机接口模块,接收主机CPU下发的至少一个命令提交控制信息,以及将上述至少一个命令提交控制信息分别发送至各硬件命令队列模块中空闲的硬件命令队列模块。
可选的,主机接口模块可以为主机可读写的主机接口寄存器和数据通信接口。
一种实施方式中,获取以及分配命令提交控制信息时,可以采用以下步骤:
S3011:主机CPU确定命令列表更新时,对主机接口寄存器进行用于指示命令列表更新的置位操作。
一种实施方式中,主机接口寄存器中设置有表示命令是否更新的状态标志位。主机接口寄存器的一个比特(Bit)表示一个命令列表的更新状态。若该状态标志位为1,则表示命令列表更新,若该状态标志位为0,则表示命令未更新。主机CPU确定命令列表更新时,对主机接口寄存器执行写操作,以将主机接口寄存器中的相应状态标志位设置为1。
实际应用中,可以根据实际应用场景设置状态标志位,在此不作限制。
可选的,主机CPU确定命令列表更新时,还可以写入用于获取命令列表的控制信息,以便前端控制引擎可以基于命令列表的控制信息,从存储器读取指示的相应命令列表。
S3012:前端控制引擎读取主机接口寄存器中的寄存器信息。
具体的,前端控制引擎可以周期性地读取主机接口寄存器中的寄存器信息。
其中,寄存器信息为主机处理器写入主机接口寄存器的信息。寄存器信息中包括基于上述状态标志位确定的命令列表更新状态。
本申请实施例中,前端控制引擎和主机CPU之间采用固定功能硬件(例如,主机接口寄存器)的方式进行交互,通过寄存器读写的方式,主机CPU可以直接提交命令给前端控制引擎。相对于通过可编程命令处理模块直接与主机CPU进行交互的方式,本申请实施例提供的方式具有软件编程简单,交互效率较高,与现有的计算编程接口兼容性好等益处,简化了异构计算处理器对主机CPU的编程接口,避免了前端控制引擎对存储器中的命令列表的反复查询,节省了存储带宽和访存功耗。
进一步的,主机CPU确定主机接口寄存器中的寄存器信息被读取后,对主机接口寄存器进行置位操作,以指示当前未更新命令列表,如,可以对主机接口寄存器进行清零操作。
S3013:若寄存器信息中包含的命令列表更新状态表征命令列表更新,则前端控制引擎基于寄存器信息,获取至少一个命令提交控制信息。
具体的,前端控制引擎获取命令提交控制信息时,可以采用以下任一方式:
方式1:基于寄存器信息,获取至少一个命令提交控制信息。
可选的,命令提交控制信息可以为一个,也可以为多个,每一命令提交控制信息用于读取一个命令提交列表。命令提交列表可以为环形缓冲结构,也可以为链表结构。
若命令提交列表为环形缓冲结构,则命令提交控制信息包括命令提交列表的存储地址和读写指针。若命令提交列表为链表结构,则命令提交控制信息包括命令提交列表的存储地址和长度。
一种实施方式中,获取寄存器信息中包含的至少一个命令提交控制信息。
具体的,主机CPU在主机接口寄存器中写入包含命令提交控制信息和命令列表更新状态的寄存器信息。前端控制引擎获取寄存器信息中包含的至少一个命令提交控制信息。
一种实施方式中,主机接口寄存器的一个比特表示一个命令提交列表的更新状态,并预先设置有比特位置与命令提交列表的命令提交控制信息之间的对应关系,以及根据该对应关系,以及主机接口寄存器中表示命令列表更新的比特位置,获取至少一个命令提交控制信息。
方式2:基于寄存器信息,从存储器中读取命令管理列表,以及获取命令管理列表中包含的至少一个命令提交控制信息。
一种实施方式中,获取寄存器信息中包含的命令管理控制信息,并基于命令管理控制信息,从存储器中读取命令管理列表,以及按照分配规则,从命令管理列表中,选择一个或多个命令提交控制信息,以将选择的命令提交控制信息分配至相应的硬件命令队列模块。
其中,命令管理列表保存了各命令提交列表的命令提交控制信息。
一种实施方式中,主机接口寄存器的一个比特表示一个命令管理列表的更新状态,并预先设置有比特位置与命令管理列表的命令管理控制信息之间的对应关系,以及根据该对应关系,以及主机接口寄存器中表示命令列表更新的比特位置,获取至少一个命令管理控制信息。基于命令管理控制信息,从存储器中读取命令管理列表,以及按照分配规则,从命令管理列表中,选择一个或多个命令提交控制信息,以将选择的命令提交控制信息分配至相应的硬件命令队列模块。
可选的,分配规则可以采用以下至少一种方式:
方式1:按照轮询算法,将命令提交控制信息分配至相应的硬件命令队列模块。
方式2:按照贪婪算法,将命令提交控制信息分配至相应的硬件命令队列模块。
方式3:按照命令提交控制信息的先后次序,将各命令提交控制信息分配至相应的硬件命令队列模块。
方式4:按照命令提交控制信息的优先级,将各命令提交控制信息分配至相应的硬件命令队列模块。
其中,轮询算法是公平选择的算法。贪婪算法是可以优先某个列表执行的算法。列表优先级可以是根据用户指示设置的。
实际应用中,分配规则可以根据实际应用场景进行设置,在此不作限制。
S3014:前端控制引擎将至少一个命令提交控制信息,分配至前端控制引擎中空闲的硬件命令队列模块。
具体的,循环执行以下步骤,直至不存在待处理的命令提交控制信息:
若确定存在空闲的硬件命令队列模块,则将采用分配规则,从命令管理列表中选择的一个命令提交控制信息,发送至空闲的硬件命令队列模块。
需要说明的是,S3012-S3014的执行主体可以为前端控制引擎中的命令队列管理模块。
需要说明的是,计算任务的命令通常以命令列表的形式储存在存储器中。同一命令提交列表的命令可被前端控制引擎中的硬件命令队列模块顺序执行。不同命令提交列表的命令在前端控制引擎的多个硬件命令队列模块可以是并行的。为了提高命令执行的并行性,相互独立的各计算任务的命令会往往分配到不同的命令提交列表中,从而可以利用前端控制引擎的多个硬件命令队列模块并行处理这些任务。命令提交列表的数目为自然数,可以大于实际的硬件命令执行队列的数目。因此,这需要前端控制引擎对多个命令提交列表进行调度,通过分配规则,将各命令提交列表发送到空闲的硬件命令队列模块中执行。
步骤302:硬件命令队列模块将命令提交列表中包含的命令执行控制信息发送至可编程命令处理模块。
具体的,每一硬件命令队列模块分别针对命令提交列表中的每一条目,依次执行以下步骤:若确定命令提交列表中的一个待处理条目属于控制信息类型,则将属于控制信息类型的待处理条目的条目解析信息,作为命令执行控制信息,发送至可编程命令处理模块。
一种实施方式中,以一个硬件命令队列模块为例进行说明,硬件命令队列模块分别针对命令提交列表中的每一条目,依次执行以下步骤:
S3021:对命令提交列表中的一个待处理条目进行解析,获得该待处理条目的条目解析信息。
S3022:若基于该条目解析信息,确定该待处理条目属于控制信息类型,则将该待处理条目的条目解析信息作为命令执行控制信息,发送至可编程命令处理模块。
其中,信息类型可包括:控制信息类型和硬件命令类型。
可选的,确定条目的信息类型时,可以采用以下任一方式:
方式1:获取条目解析信息中包含的信息类型。
方式2:获取针对条目解析信息设置的信息类型。
具体的,预先设置条目解析信息与信息类型之间的对应关系,从而可以根据该对应关系,获取任意条目的信息类型。
这样,就可以将命令提交列表中的命令执行控制信息,发送给可编程命令处理模块,以通过可编程命令处理模块执行接收的命令执行控制信息。
需要说明的是,前端控制引擎也可包括硬件命令队列模块,每一硬件命令队列模块可以与一个或多个可编程命令处理模块连接,从而硬件命令队列模块可以每次将一个命令执行控制信息发送至对应连接的可编程命令处理模块。
S3023:若确定条目解析信息属于硬件命令类型,则将该条目解析信息发送至相应的固定功能硬件,使得固定功能硬件执行条目解析信息。
一种实施方式中,按照固定功能硬件的功能,向各固定功能硬件分配相应的条目解析信息。
进一步的,若命令提交列表是环形缓冲结构,则在确定上述的条目或条目解析信息发送至其它模块后,向存储器发送读指针更新指令,使得存储器基于该读指针更新指令更新命令提交列表的读指针。
若命令提交列表是链表结构,则在确定上述的条目或条目解析信息发送至其它模块后,判断该条目是否为命令提交列表中的最后一个条目,若是,则跳转至待执行的下一个命令提交列表。
步骤303:可编程命令处理模块,基于接收的命令执行控制信息,从存储器读取命令执行列表。
步骤304:可编程命令处理模块,将命令执行列表中包含的命令分配至至少一个数据处理单元中匹配的数据处理单元,以供各数据处理单元执行被分配的命令。
具体的,循环执行以下步骤,直至确定命令执行列表执行完成:
S3041:对命令执行列表中当前待执行的一个目标条目进行解码,获得解码出的命令。
S3042:若确定解码出的命令属于管理命令类型,则将解码出的命令,分配至匹配的数据处理单元,或者,将解码出的命令通过单元管理模块分配至匹配的数据处理单元。
具体的,管理命令类型的命令为需要数据处理器单元处理的管理命令。
其中,将解码出的命令通过单元管理模块分配至匹配的数据处理单元时,可以采用以下步骤:
每一可编程命令处理模块,将解码出的命令存储至管理寄存器。单元管理模块,读取管理寄存器中的命令,并根据读取的命令对应的单元类型,将读取的命令分配至上述至少一个数据处理单元中的目标单元。此处的目标单元即为该至少一个数据处理单元中被匹配出的数据处理单元。匹配的目标单元可以有一个,也可以有多个。
其中,可以根据命令执行列表中每个命令分别对应的单元类型,从上述至少一个数据处理单元中确定出各命令分别匹配对应的目标单元,然后进行命令分配,将从管理寄存器中读取的命令分配至匹配出的目标单元。
其中,单元类型是根据数据处理单元的功能划分的。不同数据处理单元的单元类型可以是相同的,也可以是不同的。
可选的,在根据命令对应的单元类型,将命令分配至上述至少一个数据处理单元中的目标单元的过程中,可以采用以下方式:
若确定上述目标单元的单元类型对应的命令有多个,则确定与目标单元的单元类型对应的各命令的命令优先级,并将与上述目标单元的单元类型对应的各命令,按照上述命令优先级,依次发送至目标单元中空闲的数据处理单元。
实际应用中,命令优先级可以根据实际应用场景进行设置,如,单元管理模块读取命令的先后顺序,在此不作限制。
这样,前端控制引擎的单元管理模块就对获取的各命令进行仲裁,并根据仲裁结果,确定各命令匹配的数据处理单元,以及根据命令优先级以及数据处理单元的运行状态和单元类型,将各命令通过命令网络发送到匹配的且空闲的数据处理单元。
一种实施方式中,确定命令匹配的数据处理单元后,启动该数据处理单元。
进一步的,单元管理模块确定命令执行完成后,向执行完成的命令对应的可编程命令处理模块发送命令执行结果。可以在一个命令或者一组命令执行完成后,发送命令执行结果。
需要说明的是,各可编程命令处理模块均向同一单元管理模块的管理寄存器写入命令。也就是说,单元管理模块可以接收各可编程命令处理模块发送的命令,又由于不同命令可能需要同一数据处理单元进行处理,因此,单元管理模块需要对读取的各命令进行仲裁以及分配。
示例性的,若可编程命令处理模块确定解码出的命令属于运算命令类型,如,用于加减乘或逻辑等运算的命令,则可将解码出的命令发送至运算模块。若确定所码出的命令属于访存命令类型,如,用于计算访存地址的命令,则可调用访存接口执行解码出的命令。若确定解码出的命令属于控制命令类型,则基于解码出的命令进行判断后,可更新命令执行列表的读指针,并改变命令执行列表的执行顺序。
这样,通过可编程命令处理模块对多种不同命令类型的命令的组合可以完成一个复杂的计算任务的命令管理,可支持灵活处理复杂场景下的多种任务。
其中,在将解码出的命令分配至匹配的数据处理单元后,还可以执行S3043:接收数据处理单元返回的命令执行结果。
若基于命令执行结果确定需要顺序执行命令,则按照命令执行列表中的条目顺序,将下一条目更新为当前待执行的目标条目。
若基于命令执行结果确定需要跳转执行命令,则基于命令执行结果确定命令执行列表中的目标跳转条目,并将目标跳转条目更新为当前待执行的目标条目。
通过上述两种方式,可根据命令执行结果切换选择接下来需要处理的条目,作为接下来的解码处理对象,即,更新S3041步骤中的目标条目。
本申请实施例中,若主机CPU需要计算协处理器执行一个更高优先级的数据处理任务,则可以通过前端控制引擎暂停当前处理的计算任务,以切换高优先级的数据处理任务。
可选的,本申请实施例的任务处理方法还可以包括任务切换方法,参阅图6所示,为本申请实施例提供的一种任务切换方法600的实施流程图该任务切换方法可包括:
步骤601:若接收到主机处理器发送的任务中止通知,则向各硬件命令队列模块发送任务中止命令。
作为一种实施方式,主机CPU确定需要计算协处理器执行一个更高优先级的数据处理任务时,通过写主机接口寄存器,向前端控制引擎下发任务中止通知。命令队列管理模块通过读主机接口寄存器,接收到主机CPU下发的任务中止通知之后,向硬件命令队列模块发送任务中止命令。
步骤602:每一硬件命令队列模块,基于接收的任务中止命令,停止读取命令提交列表,并存储当前的命令提交列表的读指针,以及向可编程命令处理模块发送中止任务请求。
具体的,硬件命令队列模块确定接收到任务中止命令后,停止读取命令提交列表,并存储当前的命令提交列表(即停止读取的命令提交列表)的读指针,以及通过中断方式,向可编程命令处理模块发送中止任务请求,并等待可编程命令处理模块空闲。
步骤603:可编程命令处理模块,基于中止任务请求,停止读取命令执行列表。
具体的,可编程命令处理模块接收到采用中断方式发送的中止任务请求后,开始执行任务切换,即停止读取命令执行列表,并将当前的命令执行列表的读指针和通用寄存器的数值,存储至存储器。
步骤604:可编程命令处理模块存储停止读取的命令执行列表的读指针,以及向各数据处理单元发送提前中止信号。
具体的,可编程命令处理模块还可以等待数据处理单元处理完成当前的命令。
一种实施方式中,可编程命令处理模块可以采用以下步骤:
S6041:可编程命令处理模块向单元管理模块发送任务中止命令,等待数据处理单元模块完成。
本申请实施例中,可编程命令处理模块通过可编程的方式,简化了硬件处理任务切换的流程,只需要保存命令列表的读指针和通用寄存器等少量规则信息,避免了需要保序大量硬件执行的状态和不规则的硬件信息的问题,方便了存储器的储存和调试,也方便了下次继续任务时重新加载信息。
S6042:单元管理模块等待数据处理单元处理完成当前的命令或者向数据处理单元发送提前中止信号。
具体的,执行6042时,可以采用以下方式中的任意一种或组合:
方式1:单元管理模块等待数据处理单元处理完成已经分配的命令。
方式2:单元管理模块向数据处理单元发送提前中止信号。
步骤605:前端控制引擎确定任务中止后,向主机处理器返回任务中止完成信息。
具体的,前端控制引擎确定数据处理单元停止操作完成后,向主机处理器返回任务中止完成信息。
其中,执行步骤605时,可以采用以下步骤:
S6051:单元管理模块确定各数据处理单元停止操作完成后,向可编程命令处理模块发送切换完成信号。
S6052:前端控制引擎确定所有的硬件命令队列模块均中止任务之后,通过主机接口模块向主机CPU发出任务中止完成信息。
可选的,前端控制引擎可以采用中断的方式,通过主机接口寄存器向主机CPU发出任务中止完成信息。
步骤606:主机CPU确定接收到任务中止完成信息时,向前端控制引擎下发任务切换指示。
具体的,主机CPU确定所有任务中止完成,且各命令列表更新完成后,向前端控制引擎下发任务切换指示。
步骤607:前端控制引擎基于任务切换指示,获得命令提交控制信息,并基于命令提交控制信息,执行切换后的任务。
通过上述实现方式,主机处理器和协处理器之间可以较少的交互完成任务切换,可在面临复杂场景的情况下高效灵活地执行各种优先级的计算任务,例如,可在临时收到一个高优先级的任务时,快速进行任务切换处理。
具体的,执行步骤607时,具体步骤参见上述步骤301-步骤304,以执行高优先级的数据处理任务,在此不做赘述。
进一步的,前端控制引擎确定高优先级的数据处理任务处理完成之后,还可以基于存储的中止任务信息,重新执行被中止的计算任务。在此不做赘述。
本申请实施例中,协处理器的前端控制引擎采用主机接口寄存器与主机CPU进行交互,软件编程简单,交互效率较高,与现有的计算编程接口兼容性好。简化了异构计算处理器对主机CPU的编程接口,避免了前端控制引擎对存储器中的命令列表的反复查询,节省了存储带宽和访存功耗。再者,考虑到硬件命令队列模块的可编程性低,而单线程的微处理器的并行处理效率低,多线程或多核的微处理器设计成本高,且编程复杂,本申请实施例中,将多个硬件命令队列模块与可编程命令处理模块相结合,分别将每一硬件命令队列模块与至少一个可编程命令处理模块连接,这样,可以结合硬件命令队列模块的并行性高的特点以及可编程命令处理模块可编程性的特点,不需要复杂的编程设计以及高昂的微处理器设计成本。在不增加硬件成本的前提下,提高了前端控制引擎处理命令的灵活性,保持了任务处理的并行性和高效性,以及简化了计算任务切换流程。再者,命令列表采用多级结构的组织形式,使得硬件命令队列模块可以异步执行命令,不需要等待当前命令提交列表释放存储资源,不会阻塞主机CPU准备的多个命令列表,可以预先读取下一个命令提交列表,极大地提高了计算协处理器性能。再者,多个硬件命令队列模块可以并行执行不同的计算任务,可以同时读取、解析以及向可编程命令处理模块发送命令。
基于同一发明构思,本申请实施例中还提供了一种前端控制引擎,由于上述前端控制引擎解决问题的原理与前述的任务处理方法相似,因此,该前端控制引擎的实施可以参见方法的实施,重复之处不再赘述。
如图7所示,其为本申请实施例提供的一种前端控制引擎700的结构示意图,该前端控制引擎700可应用于计算协处理器中,该计算协处理器中还包括至少一个数据处理单元,前端控制引擎700包括硬件命令队列模块701以及可编程命令处理模块702;
其中,硬件命令队列模块701,用于基于接收的待处理任务对应的命令提交控制信息从存储器读取命令提交列表,并将命令提交列表中包含的命令执行控制信息发送至可编程命令处理模块702;
可编程命令处理模块702,用于基于接收的命令执行控制信息从存储器读取命令执行列表,并将命令执行列表中包含的命令分配至至少一个数据处理单元中匹配的数据处理单元,以供各数据处理单元执行被分配的命令。
一种实施方式中,前端控制引擎700还包括命令队列管理模块703,命令队列管理模块703用于:接收主机处理器发送的命令管理控制信息,主机处理器和计算协处理器位于同一计算机设备;若基于命令管理控制信息确定存在命令列表更新,则基于命令管理控制信息从存储器读取命令管理列表,命令管理列表中包含至少一个命令提交列表对应的命令提交控制信息;将命令管理列表中包含的至少一个命令提交控制信息分别发送至各硬件命令队列模块701中空闲的硬件命令队列模块701。
一种实施方式中,硬件命令队列模块701用于:分别针对命令提交列表中的每一条目,依次执行以下步骤:
若确定命令提交列表中的一个待处理条目属于控制信息类型,则将属于控制信息类型的待处理条目的条目解析信息,作为命令执行控制信息发送至可编程命令处理模块702。
一种实施方式中,可编程命令处理模块702用于:循环执行以下步骤,直至确定命令执行列表执行完成:
对命令执行列表中当前待执行的一个目标条目进行解码,获得解码出的命令;
若确定解码出的命令属于管理命令类型,则将解码出的命令,分配至匹配的数据处理单元;
接收数据处理单元返回的命令执行结果;
若基于命令执行结果确定需要顺序执行命令,则按照命令执行列表中的条目顺序,将下一条目更新为当前待执行的目标条目;
若基于命令执行结果确定需要跳转执行命令,则基于命令执行结果确定命令执行列表中的目标跳转条目,并将目标跳转条目更新为当前待执行的目标条目。
一种实施方式中,前端控制引擎700还包括单元管理模块704,可编程命令处理模块702为至少一个,其中,每一可编程命令处理模块702用于:将解码出的命令存储至管理寄存器;单元管理模块704用于:读取管理寄存器中的命令,并根据命令对应的单元类型,将命令分配至至少一个数据处理单元中的目标单元,其中,单元类型是根据数据处理单元的功能划分的。
一种实施方式中,目标单元有至少一个,单元管理模块704用于:若确定与目标单元的单元类型对应的命令有多个,则确定与目标单元的单元类型对应的各命令的命令优先级;将与目标单元的单元类型对应的各命令,按照命令优先级,依次发送至目标单元中空闲的数据处理单元。
一种实施方式中,硬件命令队列模块701为多个,前端控制引擎700用于:
若接收到主机处理器发送的任务中止通知,则向各硬件命令队列模块701发送任务中止命令;
每一硬件命令队列模块701用于:基于接收的任务中止命令,停止读取命令提交列表,并存储当前的命令提交列表的读指针,以及向可编程命令处理模块702发送中止任务请求;
可编程命令处理模块702用于:基于中止任务请求,停止读取命令执行列表,并存储停止读取的命令执行列表的读指针,以及向各数据处理单元发送提前中止信号;
前端控制引擎700用于:确定任务中止后,向主机处理器返回任务中止完成信息,以供主机处理器基于任务中止完成信息下发任务切换指示。
基于同一发明构思,本申请实施例中还提供一种芯片,包括前端控制引擎,该芯片具有至少一个数据处理单元,该前端控制引擎包括:硬件命令队列模块以及可编程命令处理模块;
硬件命令队列模块,用于基于接收的待处理任务对应的命令提交控制信息从存储器读取命令提交列表,并将命令提交列表中包含的命令执行控制信息发送至可编程命令处理模块;
可编程命令处理模块,用于基于接收的命令执行控制信息从存储器读取命令执行列表,并将命令执行列表中包含的命令分配至至少一个数据处理单元中匹配的数据处理单元,以供各数据处理单元执行被分配的命令。
由于上述芯片的原理与前述的任务处理方法相似,因此,该芯片的实施可以参见方法的实施,重复之处不再赘述。关于该芯片中前端控制引擎的其他细节,可以参照本文中其他位置的描述,此处不再赘述。
本申请实施例还提供一种计算协处理器,包括前述的前端控制引擎和至少一个数据处理单元,该前端控制引擎用于采用上述实施例中的各个步骤,向该至少一个数据处理单元分配命令,该至少一个数据处理单元用于执行分配的命令。
本申请实施例还提供一种计算机设备,包括前述的计算协处理器以及存储器,存储器存储有计算机可读取指令,当计算机可读取指令由计算协处理器执行时执行上述实施例中的各个步骤。可选的,该计算机设备还可包括用于与计算协处理器进行交互的主机处理器。本申请不对主机处理器的具体类型进行限制。
关于计算协处理器、计算机设备及其他产品实施例中与前端控制引擎有关的其他细节,请参见前述实施例中的相关描述,在此不再赘述。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、硬件产品或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种任务处理方法,其特征在于,应用于计算协处理器中的前端控制引擎,所述计算协处理器中还包括至少一个数据处理单元,所述前端控制引擎包括硬件命令队列模块以及可编程命令处理模块,所述硬件命令队列模块是基于固定功能硬件执行命令的,可编程命令处理模块具有可编程功能,所述方法包括:
所述硬件命令队列模块,基于接收的待处理任务对应的命令提交控制信息从存储器读取命令提交列表,并将所述命令提交列表中包含的命令执行控制信息发送至所述可编程命令处理模块;
所述可编程命令处理模块,基于接收的所述命令执行控制信息从存储器读取命令执行列表,并将所述命令执行列表中包含的命令分配至所述至少一个数据处理单元中匹配的数据处理单元,以供各数据处理单元执行被分配的命令。
2.如权利要求1所述的方法,其特征在于,所述前端控制引擎还包括命令队列管理模块,所述方法还包括:
所述命令队列管理模块执行以下步骤:
接收主机处理器发送的命令管理控制信息,所述主机处理器和所述计算协处理器位于同一计算机设备;
若基于所述命令管理控制信息确定存在命令列表更新,则基于所述命令管理控制信息从存储器读取命令管理列表,所述命令管理列表中包含至少一个命令提交列表对应的命令提交控制信息;
将所述命令管理列表中包含的至少一个命令提交控制信息分别发送至各硬件命令队列模块中空闲的硬件命令队列模块。
3.如权利要求1所述的方法,其特征在于,所述将所述命令提交列表中包含的命令执行控制信息发送至所述可编程命令处理模块,包括:
分别针对所述命令提交列表中的每一条目,依次执行以下步骤:
若确定所述命令提交列表中的一个待处理条目属于控制信息类型,则将属于所述控制信息类型的待处理条目的条目解析信息,作为命令执行控制信息发送至所述可编程命令处理模块。
4.如权利要求1-3任一项所述的方法,其特征在于,所述将所述命令执行列表中包含的命令分配至所述至少一个数据处理单元中匹配的数据处理单元,包括:
循环执行以下步骤,直至确定所述命令执行列表执行完成:
对所述命令执行列表中当前待执行的一个目标条目进行解码,获得解码出的命令;
若确定所述解码出的命令属于管理命令类型,则将所述解码出的命令,分配至匹配的数据处理单元;
接收所述数据处理单元返回的命令执行结果;
若基于所述命令执行结果确定需要顺序执行命令,则按照所述命令执行列表中的条目顺序,将下一条目更新为当前待执行的目标条目;
若基于所述命令执行结果确定需要跳转执行命令,则基于所述命令执行结果确定所述命令执行列表中的目标跳转条目,并将所述目标跳转条目更新为当前待执行的目标条目。
5.如权利要求4所述的方法,其特征在于,所述前端控制引擎还包括单元管理模块,所述可编程命令处理模块为至少一个,所述将所述解码出的命令,分配至匹配的数据处理单元,包括:
每一可编程命令处理模块,将所述解码出的命令存储至管理寄存器;
通过所述单元管理模块,读取所述管理寄存器中的命令,并根据所述命令对应的单元类型,将所述命令分配至所述至少一个数据处理单元中的目标单元,其中,所述单元类型是根据数据处理单元的功能划分的。
6.如权利要求5所述的方法,其特征在于,所述目标单元有至少一个,所述将所述命令分配至所述至少一个数据处理单元中的目标单元,包括:
若确定与所述目标单元的单元类型对应的命令有多个,则确定与所述目标单元的单元类型对应的各命令的命令优先级;
将与所述目标单元的单元类型对应的各命令,按照所述命令优先级,依次发送至所述目标单元中空闲的数据处理单元。
7.如权利要求1-3任一项所述的方法,其特征在于,所述硬件命令队列模块为多个,所述方法还包括:
若接收到主机处理器发送的任务中止通知,则向各硬件命令队列模块发送任务中止命令;
每一硬件命令队列模块,基于接收的任务中止命令,停止读取命令提交列表,并存储当前的命令提交列表的读指针,以及向所述可编程命令处理模块发送中止任务请求;
所述可编程命令处理模块,基于所述中止任务请求,停止读取命令执行列表,并存储停止读取的命令执行列表的读指针,以及向各数据处理单元发送提前中止信号;
确定任务中止后,向所述主机处理器返回任务中止完成信息,以供所述主机处理器基于所述任务中止完成信息下发任务切换指示。
8.一种芯片,其特征在于,包括前端控制引擎,所述芯片具有至少一个数据处理单元,所述前端控制引擎包括:硬件命令队列模块以及可编程命令处理模块;
所述硬件命令队列模块,用于基于接收的待处理任务对应的命令提交控制信息从存储器读取命令提交列表,并将所述命令提交列表中包含的命令执行控制信息发送至所述可编程命令处理模块;
所述可编程命令处理模块,用于基于接收的所述命令执行控制信息从存储器读取命令执行列表,并将所述命令执行列表中包含的命令分配至所述至少一个数据处理单元中匹配的数据处理单元,以供各数据处理单元执行被分配的命令。
9.一种计算协处理器,其特征在于,包括前端控制引擎和至少一个数据处理单元,所述前端控制引擎用于采用权利要求1-7任一项所述的方法向所述至少一个数据处理单元分配命令,所述至少一个数据处理单元用于执行被分配的命令。
10.一种计算机设备,其特征在于,包括计算协处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述计算协处理器执行时,执行权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210304928.3A CN114637536A (zh) | 2022-03-25 | 2022-03-25 | 任务处理方法、计算协处理器、芯片及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210304928.3A CN114637536A (zh) | 2022-03-25 | 2022-03-25 | 任务处理方法、计算协处理器、芯片及计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114637536A true CN114637536A (zh) | 2022-06-17 |
Family
ID=81949055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210304928.3A Pending CN114637536A (zh) | 2022-03-25 | 2022-03-25 | 任务处理方法、计算协处理器、芯片及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114637536A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115994115A (zh) * | 2023-03-22 | 2023-04-21 | 成都登临科技有限公司 | 芯片控制方法、芯片组及电子设备 |
CN116339944A (zh) * | 2023-03-14 | 2023-06-27 | 海光信息技术股份有限公司 | 任务处理方法、芯片、多芯片模块、电子设备和存储介质 |
CN116957908A (zh) * | 2023-09-20 | 2023-10-27 | 上海登临科技有限公司 | 一种硬件处理架构、处理器以及电子设备 |
-
2022
- 2022-03-25 CN CN202210304928.3A patent/CN114637536A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116339944A (zh) * | 2023-03-14 | 2023-06-27 | 海光信息技术股份有限公司 | 任务处理方法、芯片、多芯片模块、电子设备和存储介质 |
CN116339944B (zh) * | 2023-03-14 | 2024-05-17 | 海光信息技术股份有限公司 | 任务处理方法、芯片、多芯片模块、电子设备和存储介质 |
CN115994115A (zh) * | 2023-03-22 | 2023-04-21 | 成都登临科技有限公司 | 芯片控制方法、芯片组及电子设备 |
CN115994115B (zh) * | 2023-03-22 | 2023-10-20 | 成都登临科技有限公司 | 芯片控制方法、芯片组及电子设备 |
CN116957908A (zh) * | 2023-09-20 | 2023-10-27 | 上海登临科技有限公司 | 一种硬件处理架构、处理器以及电子设备 |
CN116957908B (zh) * | 2023-09-20 | 2023-12-15 | 上海登临科技有限公司 | 一种硬件处理架构、处理器以及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114637536A (zh) | 任务处理方法、计算协处理器、芯片及计算机设备 | |
US8914805B2 (en) | Rescheduling workload in a hybrid computing environment | |
US8972699B2 (en) | Multicore interface with dynamic task management capability and task loading and offloading method thereof | |
US8739171B2 (en) | High-throughput-computing in a hybrid computing environment | |
CN113535367B (zh) | 任务调度方法及相关装置 | |
US20160350245A1 (en) | Workload batch submission mechanism for graphics processing unit | |
US20150143382A1 (en) | Scheduling workloads and making provision decisions of computer resources in a computing environment | |
US20110219373A1 (en) | Virtual machine management apparatus and virtualization method for virtualization-supporting terminal platform | |
US11347546B2 (en) | Task scheduling method and device, and computer storage medium | |
CN111209046A (zh) | 一种面向多任务处理的嵌入式sparc处理器操作***设计方法 | |
US11175919B1 (en) | Synchronization of concurrent computation engines | |
CN111597044A (zh) | 任务调度方法、装置、存储介质及电子设备 | |
CN113495780A (zh) | 任务调度方法、装置、存储介质及电子设备 | |
CN112925616A (zh) | 任务分配方法、装置、存储介质及电子设备 | |
EP4386554A1 (en) | Instruction distribution method and device for multithreaded processor, and storage medium | |
CN114816777A (zh) | 命令处理装置、方法、电子设备以及计算机可读存储介质 | |
US10922146B1 (en) | Synchronization of concurrent computation engines | |
US9760969B2 (en) | Graphic processing system and method thereof | |
CN111813541A (zh) | 一种任务调度方法、装置、介质和设备 | |
EP3591518B1 (en) | Processor and instruction scheduling method | |
CN116795503A (zh) | 任务调度方法、任务调度装置、图形处理器及电子设备 | |
CN112114967B (zh) | 一种基于服务优先级的gpu资源预留方法 | |
CN113032154B (zh) | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 | |
CN114911538A (zh) | 一种运行***的启动方法及计算设备 | |
CN114610485A (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 |