CN116136790A - 任务处理方法和装置 - Google Patents
任务处理方法和装置 Download PDFInfo
- Publication number
- CN116136790A CN116136790A CN202111363169.XA CN202111363169A CN116136790A CN 116136790 A CN116136790 A CN 116136790A CN 202111363169 A CN202111363169 A CN 202111363169A CN 116136790 A CN116136790 A CN 116136790A
- Authority
- CN
- China
- Prior art keywords
- task
- data processing
- data
- host device
- processing
- 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 15
- 238000012545 processing Methods 0.000 claims abstract description 370
- 238000004891 communication Methods 0.000 claims abstract description 44
- 230000003993 interaction Effects 0.000 claims abstract description 11
- 230000001960 triggered effect Effects 0.000 claims abstract description 10
- 239000000872 buffer Substances 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 6
- 230000003139 buffering effect Effects 0.000 claims description 5
- 238000000034 method Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000010485 coping Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000004044 response 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
本申请公开了一种任务处理方法和装置,其中所述装置经由通信接口耦接至主机装置以与主机装置进行任务和数据交互,并且所述装置包括:控制器、数据处理引擎和调度器,其中调度器用于用于经由通信接口从主机装置接收数据处理任务的任务描述符,在数据处理任务被触发执行后,基于任务描述符配置数据处理引擎的工作模式,控制数据处理任务对应的运算数据经由通信接口从主机装置发送至数据处理引擎,并在数据处理引擎对运算数据完成处理并生成数据处理结果后,控制数据处理结果经由通信接口从数据处理引擎发送至主机装置。
Description
技术领域
本申请涉及计算机领域,更具体地,涉及一种任务处理方法和装置。
背景技术
随着计算机及互联网技术的发展,许多应用领域对计算机的数据处理速度都有了越来越高的要求。在数据中心应用中,现有技术中通常会通过提升通用计算平台的算力来应对大规模并发的用户数据运算请求。但是,通用计算平台的算力往往是线性增长的,而用户数据运算需求则呈指数级增长,两者并不匹配。另外,随着移动互联网、移动计算和云存储等业务的兴起,涌现出越来越多的新型算法需求,但是通用计算平台并未对这些新型算法进行有效地优化,使得通用计算平台在应对变化多样的用户需求时不够灵活。为此,现有技术中提出了使用加速卡辅助通用计算平台进行运算的方案。加速卡可以使用专用集成电路(ASIC)、图形处理单元(GPU)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)等作为运算引擎以实现对特定任务的运算,从而提高运算效率。
然而,现有加速卡在多任务并发的情形下存在性能瓶颈,并不能完全发挥所有运算引擎的性能。
发明内容
本申请的一个目的在于提供一种任务处理方法和装置,能够在多任务并发场景下提升任务处理的效率。
根据本申请的一些方面,提供了一种任务处理装置,所述任务处理装置经由通信接口耦接至主机装置以与所述主机装置进行任务和数据交互,所述任务处理装置包括:控制器,其用于查询所述任务处理装置中是否存在待执行的数据处理任务,并且在查询到待执行的数据处理任务时触发所述数据处理任务的执行;至少一个数据处理引擎,其用于根据被配置的工作模式对数据处理任务对应的运算数据进行处理,并生成数据处理结果;至少一个调度器,其用于经由所述通信接口从所述主机装置接收数据处理任务的任务描述符,在所述数据处理任务被触发执行后,基于所述任务描述符配置所述数据处理引擎的工作模式,控制所述数据处理任务对应的运算数据经由所述通信接口从所述主机装置发送至所述数据处理引擎,并在所述数据处理引擎对所述运算数据完成处理并生成数据处理结果后,控制所述数据处理结果经由所述通信接口从所述数据处理引擎发送至所述主机装置。
根据本申请的另一些方面,提供了一种任务处理系统,所述任务处理系统包括主机装置及至少一个任务处理装置;所述主机装置被配置用于:从运行于所述主机装置上的用户程序接收数据处理任务;根据所述数据处理任务的类型,将所述数据处理任务分配至虚拟功能队列并生成与所述数据处理任务对应的任务描述符;以及将所述任务描述符传输至所述任务处理装置进行执行,并从所述任务处理装置接收对所述运算数据处理后产生的数据处理结果;所述任务处理装置经由通信接口耦接至所述主机装置以与所述主机装置进行任务和数据交互,所述任务处理装置包括:控制器,其用于查询所述任务处理装置中是否存在待执行的数据处理任务,并且在查询到待执行的数据处理任务时触发所述数据处理任务的执行;至少一个数据处理引擎,其用于根据被配置的工作模式对数据处理任务对应的运算数据进行处理,并生成数据处理结果;和至少一个调度器,其用于经由所述通信接口从所述主机装置接收数据处理任务的任务描述符,在所述数据处理任务被触发执行后,基于所述任务描述符配置所述数据处理引擎的工作模式,控制所述数据处理任务对应的运算数据经由所述通信接口从所述主机装置发送至所述数据处理引擎,并在所述数据处理引擎对所述运算数据完成处理并生成数据处理结果后,控制所述数据处理结果经由所述通信接口从所述数据处理引擎发送至所述主机装置。
根据本申请的又一些方面,提供了一种任务处理方法,所述任务处理方法由任务处理装置中的调度器执行,并且包括:经由通信接口从主机装置接收数据处理任务的任务描述符;在所述数据处理任务被触发执行后,基于任务描述符配置数据处理引擎的工作模式;控制所述数据处理任务对应的运算数据经由所述通信接口从所述主机装置发送至所述数据处理引擎;并且在所述数据处理引擎对所述运算数据完成处理并生成数据处理结果后,控制所述数据处理结果经由所述通信接口从所述数据处理引擎发送至所述主机装置。
本申请的技术方案的任务处理装置中除控制器外还包括调度器,调度器分担了现有数据处理系统中由控制器执行的操作,包括任务描述符的接收、任务描述符的语义解析、数据处理引擎工作模式的配置、以及对运算数据和数据处理结果传输的控制等。因此,本申请的任务处理装置大大降低了控制器的负载,有利于任务处理装置在多任务并发场景下的性能提升。
另外,本申请的技术方案的任务处理装置中引入了任务描述符的概念,将任务处理装置支持的数据处理任务抽象为具有预设格式的任务描述符,有利于调度器自主高效地解析出于数据处理任务的相关信息,提高解析效率。
以上为本申请的概述,可能有简化、概括和省略细节的情况,因此本领域的技术人员应该认识到,该部分仅是示例说明性的,而不旨在以任何方式限定本申请范围。本概述部分既非旨在确定所要求保护主题的关键特征或必要特征,也非旨在用作为确定所要求保护主题的范围的辅助手段。
附图说明
通过下面说明书和所附的权利要求书并与附图结合,将会更加充分地清楚理解本申请内容的上述和其他特征。可以理解,这些附图仅描绘了本申请内容的若干实施方式,因此不应认为是对本申请内容范围的限定。通过采用附图,本申请内容将会得到更加明确和详细地说明。
图1示出了根据本申请实施例的任务处理装置的逻辑框图;
图2示出了根据本申请实施例的任务处理装置和主机装置;
图3示出了根据本申请实施例的任务处理装置和主机装置的逻辑框图;
图4示出了根据本申请实施例的任务描述符的字段;
图5示出了图4中任务描述符的指示数据处理任务的字段;
图6示出了本申请实施例中任务处理装置与主机装置之间交互的流程图。
具体实施方式
在下面的详细描述中,参考了构成其一部分的附图。在附图中,类似的符号通常表示类似的组成部分,除非上下文另有说明。详细描述、附图和权利要求书中描述的说明性实施方式并非旨在限定。在不偏离本申请的主题的精神或范围的情况下,可以采用其他实施方式,并且可以做出其他变化。可以理解,可以对本申请中一般性描述的、在附图中图解说明的本申请内容的各个方面进行多种不同构成的配置、替换、组合,设计,而所有这些都明确地构成本申请内容的一部分。
现有的使用加速卡辅助通用计算平台进行运算的方案中,在一次任务执行过程中,加速卡侧的控制器需要参与执行运算数据的接收、解析、数据处理引擎工作模式的配置、运算结果的组包、输出等多项操作。当多任务并发时,控制器需要对每一项任务都执行上述的多项操作,这使其负载过大,不能及时响应后续未处理任务,从而使得每项任务的平均完成时间增加。同时,控制器需要按顺序处理每一项任务,即使加速卡中还存在其他空闲的数据处理引擎,但由于控制器不能为这些空闲的数据处理引擎及时分配任务,空闲的数据处理引擎也不能协助处理未处理任务,使得未处理任务持续累加。由此可见,控制器在一次任务执行过程中参与操作过多,在多任务并发场景下,将成为潜在制约加速卡整体性能(例如,吞吐量和延迟时间)的瓶颈。
基于上述对现有方案的研究,本申请的发明人设计了一种任务处理装置,其能够减少每项任务执行时对控制器的占用,从而使得并发的多项任务可以被有效地执行。参考图1,其示出了根据本申请实施例的任务处理装置100。
如图1所示,任务处理装置100包括控制器110、至少一个数据处理引擎120和至少一个调度器130。任务处理装置100经由通信接口140耦接至主机装置200,以与主机装置200进行任务和数据交互。控制器110用于查询任务处理装置100中是否存在待执行的数据处理任务,并且在查询到待执行的数据处理任务时触发数据处理任务的执行。数据处理引擎120用于根据被配置的工作模式对数据处理任务对应的运算数据进行处理,并生成数据处理结果。在一些实施例中,数据处理引擎120可以是具有特定运算功能的硬件、软件、固件或其结合,例如数据处理引擎120可以被实现为ASIC电路,或者可以被实现为FPGA电路。调度器130用于经由通信接口140从主机装置200接收数据处理任务的任务描述符,基于所接收的任务描述符请求获取与数据处理任务相关的包含运算指令的数据包,并在数据处理任务被触发执行后,基于任务描述符配置数据处理引擎120的工作模式,控制数据处理任务对应的运算数据经由通信接口140从主机装置200发送至数据处理引擎120,并在数据处理引擎120对运算数据完成处理并生成数据处理结果后,控制数据处理结果经由通信接口140从数据处理引擎120发送至主机装置200。
可以看出,在上述任务处理装置100中,调度器130分担了现有技术中控制器的负载,并且用于执行任务描述符的接收、任务描述符的语义解析、数据处理引擎120工作模式的配置、以及对运算数据和数据处理结果传输的控制等操作。这样,控制器110在一次数据处理任务的执行过程中只需要查询是否存在待执行的数据处理任务,以及触发该数据处理任务的执行,大大降低了控制器110的负载,有利于任务处理装置100在多任务并发场景下的性能提升。
在一些实施例中,主机装置200可以为数据中心中支持虚拟化技术的服务器。例如,如图2所示,主机装置200上运行有一个或多个用户程序210(例如,图2所示的N个用户程序),其可以被分配给不同的远程用户或本地用户使用。主机装置200可以从用户程序210接收数据处理任务。在接收到数据处理任务后,对于每个数据处理任务,主机装置200可以根据数据处理任务的类型将数据处理任务分配至一个或多个虚拟功能队列220(例如,图2中的M个虚拟功能队列VF 0至VF M-1),并生成与数据处理任务对应的任务描述符。在一些实施例中,任务描述符中至少包括了数据处理任务的类型信息、与数据处理任务相关的运算数据的存储位置信息、以及数据处理任务完成后生成的数据处理结果的存储位置信息。任务处理装置100具有与主机装置200的虚拟功能队列220对应且数量相等的任务队列组105(例如,图2中的M个任务队列组QG 0至QG M-1),其用于缓冲来自主机装置200的不同类型的数据处理任务。主机装置200将任务描述符传输至任务处理装置100后,任务处理装置100可以基于数据处理任务的类型信息将其缓存在相应的任务队列组中,再由调度器根据数据处理任务的类型信息从一个或多个数据处理引擎120(例如,图2中的引擎0至引擎L-1)中选择合适的数据处理引擎执行该数据处理任务。任务处理装置100在数据处理引擎120对数据处理任务对应的运算数据完成处理并生成数据处理结果后,再将数据处理结果返回给主机装置200。上述示例中,N、M和L均为大于1的整数,且两两之间可以相等或者不相等。
在一些实施例中,任务处理装置100可以被实现为主机装置200中的扩展卡或加速卡,部署在主机装置200的机箱中,并通过通信接口140与主机装置200互连,该通信接口140可以是PCIe接口或其他类型的通信接口。主机装置200与任务处理装置100构成主从结构,主机装置200负责将数据处理任务通过通信接口140发送给任务处理装置100,由任务处理装置100完成对数据处理任务的执行,并将处理结果返回主机装置200。在一些实施例中,根据应用场景或者计算需求,一个主机装置200上可以连接多个相同或不同的任务处理装置100,使得其能够并行处理多个数据处理任务,以进一步提高任务执行效率。
以下结合图3进一步对本申请的任务处理装置进行描述,图3示出了本申请实施例中任务处理装置100与主机装置200的逻辑框图。
参考图3,任务处理装置100经由通信接口140与主机装置200耦接,任务处理装置100包括控制器110、至少一个数据处理引擎120和至少一个调度器130。其中,控制器110、至少一个数据处理引擎120和至少一个调度器130通过片上网络150直接或间接地电性连接,以实现数据的传输或交互。
在一个实施例中,通信接口140包括PCIe接口和QDMA控制器。其中,PCIe接口是一种高速串行计算机扩展总线标准;而QDMA是一种队列快速直接存储器访问技术,其允许不同速度的硬件装置进行交互。在数据传输时,由QDMA控制器直接掌管总线而不需要依赖于控制器的大量中断负载,因此能够大大降低控制器的负载。在图3的示例中,任务处理装置100的PCIe接口与主机装置200的PCIe接口耦接,以进行任务处理装置100与主机装置200之间的任务和数据交互。本领域技术人员应当理解,在其他实施例中,任务处理装置100与主机装置200之间也可以采用其他类型的通信接口耦接,例如PCI接口或者DMA控制器,此处不再一一列举。
在图3的示例中,任务处理装置100包括了4个数据处理引擎120-0、120-1、120-2和120-3。数据处理引擎120可以为硬件电路,并且该硬件电路针对不同的数据处理算法进行了优化,以满足不同的应用需求。具体地,数据处理任务可以包括运算数据、对该运算数据进行操作的运算指令,例如对特定数据进行加密或解密等,不同的数据处理任务包括的运算数据或运算指令有所不同,任务处理装置100中的一个或多个数据处理引擎120可以针对运算指令中涉及的算法(如加密或解密算法)进行优化设计。数据处理引擎120可以包括现场可编程门阵列(FPGA)、图像处理器(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、分立器件或者晶体管逻辑器件中的一者或多者。每个数据处理引擎可以根据被配置的工作模式对来自主机装置200的数据处理任务对应的运算数据进行处理,并生成数据处理结果。另外,在图3的示例中,每个数据处理引擎都具有各自对应的输入缓冲和输出缓冲,其中,输入缓冲用于缓存运算数据,输出缓冲用于缓存数据处理结果,每个数据处理引擎与其各自的输入缓冲和输出缓冲构成独立的运算簇(Cluster)。本领域技术人员应当理解,任务处理装置100还可以具有其他数量(例如,8、16、32、64等)的数据处理引擎,多个数据处理引擎也可以共用输入缓冲和/或输出缓冲。
在一些实施例中,调度器130用于经由通信接口140从主机装置200接收数据处理任务的任务描述符。在一些实施例中,任务描述符具有预设格式并且至少包括:数据处理任务的类型信息、与所述数据处理任务相关的运算数据的存储位置信息、以及所述数据处理任务完成后生成的数据处理结果的存储位置信息。在一些实施例中,任务描述符还包括了执行任务所需的运算命令的信息,例如运算命令的名称或者存储地址等。调度器130在接收到任务描述符后,可以对任务描述符进行预解析以获取运算命令的信息。上述预解析是指仅对任务描述符的部分内容或特定字段进行解析,而非对任务描述符的全部字段进行解析。调度器130可以基于运算命令的信息从主机装置200获取包含运算命令的数据包,并且在任务描述符对应的数据处理任务被触发执行后,对包含运算命令的数据包进行解包,以获取运算命令。此外,调度器130还对任务描述符进行完整的语义解析,以获取上述数据处理任务的类型信息、与所述数据处理任务相关的运算数据的存储位置信息、以及所述数据处理任务完成后生成的数据处理结果的存储位置信息。然后调度器130根据数据处理任务的类型信息配置数据处理引擎120的工作模式并指示启动数据处理引擎120,基于运算数据的存储位置信息控制从主机装置200的存储器获取运算数据,并且基于数据处理结果的存储位置信息将数据处理结果发送至主机装置200的存储器。在一些实施例中,当任务处理装置100包括多个数据处理引擎时,调度器130还可以根据任务描述符中数据处理任务的类型信息从该多个数据处理引擎中选择特定的数据处理引擎以执行所述任务描述符对应的数据处理任务。调度器130可优选采用硬件电路(例如,FPGA或者ASIC电路)实现,从而能够简化主机装置200与任务处理装置100之间的数据交互,降低任务处理装置100上控制器120的负载。
在一些实施例中,控制器110可以为通用处理器,其用于查询任务处理装置100中是否存在待执行的数据处理任务,并且在查询到待执行的数据处理任务时触发数据处理任务的执行。在一些实施例中,任务处理装置100可能包括多个调度器130,从而允许多个调度器对多个用户任务的并行调度;此时,控制器110可以轮询该这多个调度器,以查询多个调度器中是否存在待执行的数据处理任务,当确定某个调度器中存在待执行的数据处理任务时,相应地触发该数据处理任务的执行。
需要说明的是,虽然在图1和图3所示的实施例中通信接口140位于任务处理装置100中,但是在另一些实施例中,通信接口140可以是独立于任务处理装置100的模块。
参考图4,其示出了本申请实施例中任务描述符的不同字段。如图4所示,该任务描述符由8个16位(bit)的字符组成,其中第一个字符包括1位的“INT”字段、7位的“CMDEnumeration”字段和8位的“Status”字段。在一些实施例中,如果“INT”字段设置为有效,则指示数据处理引擎120在数据处理任务完成时需要向调度器130发送中断请求;反之,如果设置为无效的话,则调度器130轮询数据处理引擎120是否完成数据处理任务。在一些实施例中,“CMD Enumeration”字段可以指示数据处理任务的类型以及该任务中所执行命令的名称。在一些实施例中,“Status”字段可以指示当前数据处理任务的状态,其初始值为0。当数据处理引擎120在执行完该数据处理任务时,或者在执行该数据处理任务发生错误时,可以将“Status”字段的值设置为其他数值,以指示任务完成或者任务执行出错。第二个字符为预留字段,以便于功能扩充。第三和第四个字符分别为32位长度的“Len”字段的高16位和低16位。“Len”字段可用于存储“CMD Enumeration”字段中不能表示的其他一些与数据处理任务相关的命令。第五个字符为16位长度的“Sequencer number”字段,其用于指示用户提供的数据处理任务的序列号。第六个字符包括1位的“IN”字段、7位的“Input typeenumeration”字段、1位的“OUT”字段和7位的“Output type enumeration”字段。在一些实施例中,如果执行该数据处理任务需要从外部存储器获取运算数据,则“IN”字段设置为1,反之,则设置为0;在不需要从外部存储器获取运算数据的情况下,“Input typeenumeration”字段用于指示从主机装置200获取的运算数据的类型。在一些实施例中,如果执行该数据处理任务需要向外部存储器输出数据,则“OUT”字段设置为1,反之,则设置为0;在不需要向外部存储器输出数据的情况下,“Output type enumeration”字段用于指示向主机装置200返回的数据处理结果数据的类型。第七个字符为16位长度的“Input QPM/Engine Register relative Address”字段,其用于指示运算数据在主机装置200的存储器(QPM)中的偏移地址,或者在数据处理引擎120的输入缓冲中的相对地址。第八个字符为16位长度的“Output QPM/Engine Register relative Address”字段,其用于指示数据处理结果数据在主机装置200的存储器中的偏移地址,或者在数据处理引擎120的输出缓冲中的相对地址。
进一步参考图5,其示出了图4的任务描述符中指示数据处理任务的类型的“CMDEnumeration”的含义。如前所述,“CMD Enumeration”字段为7位二进制数,其最多可指示27种不同的任务类型信息,图5中仅列举了19种可能的情况。例如,“CMD Enumeration”字段值为“0010100”和“0010101”时,均指示数据处理任务为DMA类型的数据传输,只不过“0010100”指示该数据传输涉及的具体命令为“DMA-H2L”(其表示以直接存储器访问(DMA)的方式将相关数据从Host侧(即主机侧,例如,主机装置200)搬运到Local侧(即从机侧,例如,任务处理装置100)),而“0010100”指示数据传输涉及的具体命令为“DMA-L2H”(其表示以DMA的方式将相关数据从Local侧搬运到Host侧)。“CMD Enumeration”字段数值与不同命令之间的对应关系可以由用户自主定义,此处不再赘述。
以上结合图4和图5对本申请的任务描述符进行了详细描述,但是,以上的详细描述仅作为示例,而不是对本申请方案的限制,本领域技术人员可以结合具体应用场景和需求设计其它不同类型的任务描述符。
参考图6,其示出了本申请实施例中任务处理装置100与主机装置200之间交互的流程图。
参考图6,主机装置200可以准备任务描述符,并准备待运算数据(602)。在准备好任务描述符和待运算数据之后,主机装置200将任务描述符传输至任务处理装置100的调度器130(604)。任务处理装置100在接收到任务描述符后可以对任务描述符进行预解析以获取与执行任务相关的数据包信息,主动从主机装置200获取相关数据包(606),并控制相关数据包从主机装置200到任务处理装置100的搬入(608)。在一些实施例中,相关数据包信息至少包括执行任务所需的运算命令的信息,例如,运算命令的名称或者存储地址等信息,从而任务处理装置100可以基于该信息从主机装置200获取执行任务所需的运算命令。本领域技术人员应当理解,上述相关数据包还可以包括除运算命令之外的其他与执行任务相关的信息。
继续参考图6,任务处理装置100的控制器110可以轮询调度器130是否有待执行任务(610)。在一些实施例中,调度器130在接收到执行任务所需的运算命令后,会设置标识符,以提示当前存在待执行任务;当控制器110轮询至该调度器时基于该标识符确定当前是否存在待执行任务。在控制器110确定调度器130存在待执行任务时,可以触发调度器130执行当前任务(612)。调度器130可以对获取的相关数据包进行解包,并且对任务描述符进行语义解析(614),以从数据包获取执行任务所需的运算命令,并从任务描述符获取任务的类型信息、与任务相关的运算数据的存储位置信息、以及任务处理完成后生成的数据处理结果的存储位置信息。此后,调度器130可以根据任务的类型信息配置数据处理引擎120(616),启动数据处理引擎120执行运算(618)。
接着,调度器130还可以基于运算数据的存储位置信息,将运算数据从主机装置200搬入调度器130(620),再经由调度器130搬入数据处理引擎120(例如,数据处理引擎120的输入缓冲)(622)。在另一些实施例中,调度器130也可以基于运算数据的存储位置信息,直接控制将运算数据从主机装置200搬入数据处理引擎120,而无需经由调度器130转发。数据处理引擎120获取运算数据后,可以开始执行数据处理任务(624),并在任务执行完成后,向调度器130发送中断请求(626)。调度器130可以响应数据处理引擎120的中断请求,控制数据处理结果从数据处理引擎120发送至主机装置200(628),从而完成一次数据处理任务的执行。
关于任务处理装置100与主机装置200的更多细节可以参考上文对任务处理装置100与主机装置200结构的描述,此处不再赘述。
需要说明的是,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过特定接口实现,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。所描述的作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,以上所描述的方法的步骤可以根据需要进行省略或者增加,另外,多个步骤可以同时执行或者依次执行,当多个不同步骤依次执行时,其在不同实施例中执行次序也可以不同。
本技术领域的一般技术人员可以通过研究说明书、公开的内容及附图和所附的权利要求书,理解和实施对披露的实施方式的其他改变。在权利要求中,措词“包括”不排除其他的元素和步骤,并且措辞“一”、“一个”不排除复数。在本申请的实际应用中,一个零件可能执行权利要求中所引用的多个技术特征的功能。权利要求中的任何附图标记不应理解为对范围的限制。
Claims (15)
1.一种任务处理装置,其特征在于,所述任务处理装置经由通信接口耦接至主机装置以与所述主机装置进行任务和数据交互,所述任务处理装置包括:
控制器,其用于查询所述任务处理装置中是否存在待执行的数据处理任务,并且在查询到待执行的数据处理任务时触发所述数据处理任务的执行;
至少一个数据处理引擎,其用于根据被配置的工作模式对数据处理任务对应的运算数据进行处理,并生成数据处理结果;和
至少一个调度器,其用于经由所述通信接口从所述主机装置接收数据处理任务的任务描述符,在所述数据处理任务被触发执行后,基于所述任务描述符配置所述数据处理引擎的工作模式,控制所述数据处理任务对应的运算数据经由所述通信接口从所述主机装置发送至所述数据处理引擎,并在所述数据处理引擎对所述运算数据完成处理并生成数据处理结果后,控制所述数据处理结果经由所述通信接口从所述数据处理引擎发送至所述主机装置。
2.根据权利要求1所述的任务处理装置,其特征在于,所述任务描述符至少包括:数据处理任务的类型信息,与所述数据处理任务相关的运算数据的存储位置信息,以及所述数据处理任务完成后生成的数据处理结果的存储位置信息。
3.根据权利要求2所述的任务处理装置,其特征在于,所述调度器根据所述数据处理任务的类型信息配置所述数据处理引擎的工作模式,基于所述运算数据的存储位置信息控制从所述主机装置的存储器获取所述运算数据,并且基于所述数据处理结果的存储位置信息将所述数据处理结果发送至所述主机装置的存储器。
4.根据权利要求2所述的任务处理装置,其特征在于,所述任务描述符还包括执行所述数据处理任务所需的运算命令的信息;并且
所述调度器基于所述运算命令的信息从所述主机装置的存储器获取所述运算命令。
5.根据权利要求1所述的任务处理装置,其特征在于,所述任务处理装置包括多个调度器,所述控制器轮询所述多个调度器,以查询所述多个调度器中是否存在待执行的数据处理任务。
6.根据权利要求1所述的任务处理装置,其特征在于,所述任务处理装置包括多个数据处理引擎,所述调度器根据所述任务描述符从所述多个数据处理引擎中选择特定的数据处理引擎以执行所述任务描述符对应的数据处理任务。
7.根据权利要求1所述的任务处理装置,其特征在于,所述任务处理装置还包括:
与所述数据处理引擎对应的输入缓冲和输出缓冲,所述输入缓冲用于缓存所述运算数据,所述输出缓冲用于缓存所述数据处理结果。
8.根据权利要求1所述的装置,其特征在于,所述调度器采用硬件电路实现。
9.一种任务处理系统,其特征在于,所述任务处理系统包括:主机装置及至少一个任务处理装置;
所述主机装置被配置用于:
从运行于所述主机装置上的用户程序接收数据处理任务;
根据所述数据处理任务的类型,将所述数据处理任务分配至虚拟功能队列并生成与所述数据处理任务对应的任务描述符;以及
将所述任务描述符传输至所述任务处理装置进行执行,并从所述任务处理装置接收对所述运算数据处理后产生的数据处理结果;
所述任务处理装置经由通信接口耦接至所述主机装置以与所述主机装置进行任务和数据交互,所述任务处理装置包括:
控制器,其用于查询所述任务处理装置中是否存在待执行的数据处理任务,并且在查询到待执行的数据处理任务时触发所述数据处理任务的执行;
至少一个数据处理引擎,其用于根据被配置的工作模式对数据处理任务对应的运算数据进行处理,并生成数据处理结果;和
至少一个调度器,其用于经由所述通信接口从所述主机装置接收数据处理任务的任务描述符,在所述数据处理任务被触发执行后,基于所述任务描述符配置所述数据处理引擎的工作模式,控制所述数据处理任务对应的运算数据经由所述通信接口从所述主机装置发送至所述数据处理引擎,并在所述数据处理引擎对所述运算数据完成处理并生成数据处理结果后,控制所述数据处理结果经由所述通信接口从所述数据处理引擎发送至所述主机装置。
10.一种任务处理方法,其特征在于,所述任务处理方法由任务处理装置中的调度器执行,并且包括:
经由通信接口从主机装置接收数据处理任务的任务描述符;
在所述数据处理任务被触发执行后,基于任务描述符配置数据处理引擎的工作模式;
控制所述数据处理任务对应的运算数据经由所述通信接口从所述主机装置发送至所述数据处理引擎;并且
在所述数据处理引擎对所述运算数据完成处理并生成数据处理结果后,控制所述数据处理结果经由所述通信接口从所述数据处理引擎发送至所述主机装置。
11.根据权利要求10所述的任务处理方法,其特征在于,所述任务描述符至少包括:数据处理任务的类型信息,与所述数据处理任务相关的运算数据的存储位置信息,以及所述数据处理任务完成后生成的数据处理结果的存储位置信息。
12.根据权利要求11所述的任务处理方法,其特征在于:
所述基于任务描述符配置数据处理引擎的工作模式包括:根据所述数据处理任务的类型信息配置所述数据处理引擎的工作模式;
所述控制所述数据处理任务对应的运算数据经由所述通信接口从所述主机装置发送至所述数据处理引擎包括:基于所述运算数据的存储位置信息访问所述主机装置的存储器以获取所述运算数据;并且
所述控制所述数据处理结果经由所述通信接口从所述数据处理引擎发送至所述主机装置包括:基于所述数据处理结果的存储位置信息控制所述数据处理引擎将所述数据处理结果发送至所述主机装置的存储器。
13.根据权利要求11所述的任务处理方法,其特征在于,所述任务描述符还包括执行所述数据处理任务所需的运算命令的信息;并且
所述任务处理方法进一步包括:
基于所述运算命令的信息从所述主机装置的存储器获取所述运算命令。
14.根据权利要求10所述的任务处理方法,其特征在于,所述任务处理装置包括多个数据处理引擎;并且
在基于所述任务描述符配置数据处理引擎的工作模式之前,所述任务处理方法进一步包括:
根据所述任务描述符从所述任务处理装置的多个数据处理引擎中选择特定的数据处理引擎以执行所述任务描述符对应的数据处理任务。
15.根据权利要求10所述的任务处理方法,其特征在于,所述调度器采用硬件电路实现。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111363169.XA CN116136790A (zh) | 2021-11-17 | 2021-11-17 | 任务处理方法和装置 |
US18/056,242 US20230153153A1 (en) | 2021-11-17 | 2022-11-16 | Task processing method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111363169.XA CN116136790A (zh) | 2021-11-17 | 2021-11-17 | 任务处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116136790A true CN116136790A (zh) | 2023-05-19 |
Family
ID=86323432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111363169.XA Pending CN116136790A (zh) | 2021-11-17 | 2021-11-17 | 任务处理方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230153153A1 (zh) |
CN (1) | CN116136790A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117171075A (zh) * | 2023-10-27 | 2023-12-05 | 上海芯联芯智能科技有限公司 | 一种电子设备及任务处理方法 |
-
2021
- 2021-11-17 CN CN202111363169.XA patent/CN116136790A/zh active Pending
-
2022
- 2022-11-16 US US18/056,242 patent/US20230153153A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117171075A (zh) * | 2023-10-27 | 2023-12-05 | 上海芯联芯智能科技有限公司 | 一种电子设备及任务处理方法 |
CN117171075B (zh) * | 2023-10-27 | 2024-02-06 | 上海芯联芯智能科技有限公司 | 一种电子设备及任务处理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20230153153A1 (en) | 2023-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110888827B (zh) | 数据传输方法、装置、设备及存储介质 | |
CN107515775B (zh) | 一种数据传输方法及装置 | |
EP1896965B1 (en) | Dma descriptor queue read and cache write pointer arrangement | |
US8706832B2 (en) | Low latency, high bandwidth data communications between compute nodes in a parallel computer | |
US7948999B2 (en) | Signaling completion of a message transfer from an origin compute node to a target compute node | |
US8838864B2 (en) | Method and apparatus for improving the efficiency of interrupt delivery at runtime in a network system | |
US20080281998A1 (en) | Direct Memory Access Transfer Completion Notification | |
US7805546B2 (en) | Chaining direct memory access data transfer operations for compute nodes in a parallel computer | |
EP1805626A2 (en) | External data interface in a computer architecture for broadband networks | |
US11449456B2 (en) | System and method for scheduling sharable PCIe endpoint devices | |
EP4387207A1 (en) | Communication method based on user-mode protocol stack, and corresponding apparatus | |
US6742075B1 (en) | Arrangement for instigating work in a channel adapter based on received address information and stored context information | |
US7890597B2 (en) | Direct memory access transfer completion notification | |
US20240061802A1 (en) | Data Transmission Method, Data Processing Method, and Related Product | |
US20230153153A1 (en) | Task processing method and apparatus | |
CN117033275B (zh) | 加速卡间的dma方法、装置、加速卡、加速平台及介质 | |
US20080273534A1 (en) | Signaling Completion of a Message Transfer from an Origin Compute Node to a Target Compute Node | |
CN113098955A (zh) | 一种数据传输方法、装置、设备及计算机可读存储介质 | |
CN113691466A (zh) | 一种数据的传输方法、智能网卡、计算设备及存储介质 | |
WO2023125565A1 (zh) | 网络节点的配置和访问请求的处理方法、装置 | |
US8041902B2 (en) | Direct memory move of multiple buffers between logical partitions | |
CN114943087A (zh) | 一种多算法核高性能sr-iov加解密系统及方法 | |
US7266614B1 (en) | Embedded channel adapter having link layer configured for concurrent retrieval of payload data during packet transmission | |
CN117493236B (zh) | Fpga加速器以及加速器系统 | |
US20240069754A1 (en) | Computing system and associated method |
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 |