CN115981833A - 一种任务处理方法及装置 - Google Patents
一种任务处理方法及装置 Download PDFInfo
- Publication number
- CN115981833A CN115981833A CN202111205427.1A CN202111205427A CN115981833A CN 115981833 A CN115981833 A CN 115981833A CN 202111205427 A CN202111205427 A CN 202111205427A CN 115981833 A CN115981833 A CN 115981833A
- Authority
- CN
- China
- Prior art keywords
- coprocessor
- address
- thread
- information
- task
- 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
Images
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
- Advance Control (AREA)
Abstract
本申请提供一种任务处理方法及装置,该方法可以应用于计算设备,计算设备包括主处理器和协处理器,主处理器向协处理器发送请求命令以将任务调度至协处理器处理,协处理器执行该任务,并在任务执行完成后根据请求命令的指示的第一地址,获取主处理器上用于执行该任务的线程的信息,并将该线程的信息存放至主处理器维护的运行队列中。通过上述方式,将任务相关的线程的信息和运行队列的相关行为卸载至协处理器,主处理器可以基于运行队列来获取该线程的信息并唤醒线程,这样便不需要主处理器向协处理器询问,也不需要协处理器通过中断请求来通知主处理器任务执行完成,可以降低CPU的资源开销,提高CPU利用率及***性能。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种任务处理方法及装置。
背景技术
在多样性算力时代,同一计算设备内可以具有多种类型的处理器,如中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、数据计算单元(data processing unit,DPU)等,其中,CPU可以作为主处理器可以将用户任务调度至协处理器如GPU来处理。GPU作为协处理器可以用于执行CPU分配的任务。
协处理器中任务执行完成后,在第一种实现方式中,协处理器可以向CPU发送中断请求,以指示任务执行完成,CPU接收到中断请求后,便可以获取协处理器得到的数据处理结果,之后CPU使用该数据处理结果进行下一步处理。应理解的是,协处理器的数量可能是多个,在这种方式中,CPU需要接收各种协处理器的中断请求,频繁交互会占用大量的CPU资源,并且响应中断请求以及中断处理也存在时延较大的问题。
在第二种通用的实现方式中,协处理器不需要再发送中断请求来通知任务执行完成了,而是由CPU通过轮询方式来确定每个协处理器的任务是否执行完成。在这种方式中,由于没有中断的相关处理,因此时延性优于第一种实现方式,但轮询方式会长期占用CPU的较多资源,CPU占用率高。
发明内容
本申请提供一种任务处理方法及装置,用于降低唤醒线程的CPU资源开销。
第一方面,本申请实施例提供了一种任务处理方法,该方法可以应用于计算设备(如服务器、主机等),该计算设备至少包括主处理器(如CPU)和协处理器(如GPU、DPU等),在该方法中,主处理器可以向协处理器发送请求命令,以用于请求协处理器处理任务,其中,主处理器维护有运行队列,请求命令用于指示第一地址和第二地址,第一地址为运行在主处理器上(与该任务相关)的线程的信息所在的内存空间的地址;第二地址为主处理器维护的运行队列所在的内存空间的地址;协处理器执行请求命令中指示的任务,并在该任务执行完成之后,将从第一地址对应的内存空间获取的线程的信息存放至所述第二地址所指示的运行队列中。
上述方式,主处理器向协处理器发送请求命令以请求协处理器处理任务,并通过该请求命令指示主处理器上(与该任务相关)的线程的信息的第一地址以及主处理器所维护的运行队列的第二地址,这样协处理器执行完成该任务后,可以从第一地址获取线程的信息,并根据第二地址将获取到的线程的信息存放至主处理器维护的运行队列中,这样不需要协处理器通过中断请求来通知主处理器协处理器的任务执行完成,也不需要主处理器询问协处理器任务是否执行完成,可以降低CPU的资源开销,有利于提高CPU利用率及***性能。
在一种可能的实施方式中,请求命令包括第一地址和第二地址。或,请求命令包括第一地址,第一地址所指示的内存空间中存储的线程的信息包括第二地址。
上述方式,提供通过请求命令指示第一地址和第二地址的灵活性。
在一种可能的实施方式中,主处理器从运行队列获取线程的信息,并基于获取到的线程的信息唤醒该线程。
上述方式,协处理器执行任务完成后,将主处理器上与该任务相关的线程的信息存放至主处理器的运行队列,主处理器根据运行队列获取该线程的信息,并基于获取到的信息来唤醒线程。这样,主处理器不需要向协处理器询问任务是否执行完成,协处理器也不需要向主处理器发送中断请求,可以降低CPU的资源开销,提高CPU利用率及***性能。
在一种可能的实施方式中,所述第一地址和所述第二地址均为通过缓存一致性(Cache Coherency,CC)协议映射给所述协处理器的。
上述方式,主处理器将第一地址、第二地址通过CC协议映射给协处理器,以使协处理器可以访问第一地址、第二地址所对应的内存空间,并且可以保证主处理器与协处理器关于该第一地址、第二地址对应的内存空间的数据一致性。
在一种可能的实施方式中,所述线程的信息为所述线程的线程控制块TCB信息。
上述方式,线程控制块信息可以唯一标识一个线程,并且包括主处理器管理该线程的信息,主处理器可以根据该线程控制块信息来唤醒线程。
在一种可能的实施方式中,该任务用于指示对待处理数据进行处理;
主处理器向协处理器发送用于指示第三地址的信息,第三地址为用于存储待处理数据的内存空间的地址;协处理器接收该用于指示第三地址的信息;协处理器执行所述任务,包括:从所述第三地址对应的内存空间获取所述待处理数据。
在一种可能的实施方式中,第三地址为通过CC协议映射给所述协处理器的。
上述方式,主处理器将第三地址通过CC协议映射给协处理器,以使协处理器可以访问第三地址所对应的内存空间,这样不需要主处理器将待处理的数据从第三地址对应的内存空间搬移至协处理器可访问的内存空间,降低CPU资源开销,并且可以保证主处理器和协处理器关于该第三地址对应的内存空间的数据一致性。
在一种可能的实施方式中,主处理器向协处理器发送中断下半部处理信息;中断下半部处理信息包括用于指示第四地址的信息,第四地址为用于存放任务的处理结果的内存空间的地址;协处理器接收中断下半部处理信息,并将得到的任务的处理结果存放至第四地址对应的内存空间。
在一种可能的实施方式中,第四地址为通过CC协议映射给所述协处理器的。
上述方式,主处理器通过CC协议将中断下半部流程中数据处理结果回传操作卸载到协处理器中,降低了对CPU处理能力的依赖,有利于提高CPU的资源利用率,且提升了协处理器的横向扩展(scale out)能力。
第二方面,本申请还提供了另一种计算设备,所述计算设备包括主处理器、协处理器和内存,内存,用于存储计算机程序指令;
所述主处理器执行所述内存中的程序指令执行上述第一方面或第一方面中任一可能的实现方式提供的主处理器执行的操作;所述协处理器执行上述第一方面或第一方面任一可能的实现方式提供的协处理器执行的操作。该计算设备可以为服务器等设备。
在一种可能的实施方式中,主处理器包括CPU;
协处理器包括GPU、DPU、特殊应用集成电路(application specific integratedcircuit,ASIC)、***级芯片(system on chip,SOC)、可编程门阵列(field programmablegate array,FPGA)、嵌入式神经网络处理器(neural network processing unit,NPU)、硬件计算引擎(hardware accelerator engine,HW AE)、硬件加速控制器(hardwareaccelerate controller,HAC)、CPU。
第三方面,本申请还提供一种计算机芯片,所述芯片与存储器相连,所述芯片用于读取并执行所述存储器中存储的软件程序,执行上述第一方面以及第一方面的各个可能的实现方式中存储设备的操作,或执行上述第二方面以及第二方面的各个可能的实现方式中存储设备的操作。
上述第二方面至第三方面实现的有益效果,请参考第一方面的有益效果的描述,此处不再赘述。
附图说明
图1为本申请实施例提供的一种计算设备120的硬件架构示意图;
图2为本申请实施例提供的一种计算设备120的软件架构示意图;
图3为本申请实施例提供的一种任务处理方法的流程示意图;
图4为本申请实施例提供的一种任务处理方法的实施示意图。
具体实施方式
首先对本申请实施例中的部分技术用语进行解释说明。
1,进程(process);
进程,可以是指具有一定独立功能的程序的一次运行活动,是应用程序运行的载体,也可以理解为,进程为应用程序的运行实例,是应用程序的一次动态执行。例如,当用户运行记事本程序(Notepad)时,该用户就创建了一个用来容纳组成Notepad.exe的代码及其所需调用动态链接库的进程。进程是***进行资源分配和调度的一个独立单位,每一个进程都有自己的内存空间,不同的进程之间相互独立。
2,线程(thread);
线程在进程中创建,一个进程通常包含多个线程,该多个线程可以共享进程的资源(如CPU资源、内存资源),线程是进程中执行运算的最小单位,或者说***分配CPU时间资源的基本单位。
线程具有并发性,即单个进程内支持执行多个并发线程,每条线程并发执行不同的任务。比如,一个线程可以用于向磁盘写入文件,另一个线程可以用于接收用户的按键操作并及时做出反应,线程之间互相不干扰。所谓的并发性是指,每个线程轮流执行,依次运行固定时长,每个线程执行的那段时间(固定时长)可以称为时间片,由于中央处理器(central processing unit,CPU)的执行效率非常高,因此可以做到时间片非常短,CPU可以在各个线程之间快速地切换,呈现出一种多个任务在同时进行的效果,这也就是所谓的线程的并发性。
具体的,线程的状态包括但不限于:可运行(runnable)/就绪(ready)状态、运行(running)状态和等待(waiting)状态。其中,可运行状态的线程具有获得时间片的资格,当获得时间片后,该线程的状态为运行状态,当时间片用尽时,该线程可再次切回可运行状态,以等待下一次被调度执行。而处于等待状态的线程不会被分配时间片,直到被唤醒。
3,进程控制块(processing control block,PCB)/线程控制块(thread controlblock,TCB)
PCB是操作***内核的一种数据结构,用于记录进程的相关信息。PCB包括但不限于下列中的一项或多项:
(1)标识信息,用于唯一标识一个进程。
(2)程序计数器:接着要运行的指令地址。
(3)进程状态:如前述的runnable、running、waiting等。
(4)CPU寄存器:如堆栈指针以及一般用途寄存器等等。
(5)调度信息:包括但不限于:进程状态、进程的优先级、该进程控制块所属的运行队列的信息等一项或多项。
TCB与PCB类似,如TCB包括线程的标识信息、线程状态等,可以这样理解,用于记录进程的相关信息的数据结构称为PCB,用于记录线程的相关信息的数据结构称为TCB,区域在于,线程的信息可能少于进程。
需要说明的是,上述介绍的内容并不构成对PCB或TCB的限定,在不同的***中PCB或TCB所包含的信息可能不同,或具有不同的名称,本申请实施例对PCB或TCB所包含的信息不做限定。
4,运行队列(run queue);
CPU可以用于为线程提供时间片等资源,等待使用该资源的线程(即处于可运行状态的线程)就需要排队。如果要排队,就需要有一个约定的地点统一排队,为便于管理,每个CPU核配置有一个运行队列,该运行队列用于指示排队的线程。示例性地,在Linux内核里,这个运行队列就是为每个CPU核定义的一个内存变量,如struct_rq结构的runqueue变量,该变量的值可以用于指示线程的信息,如线程的TCB。
CPU可以从运行队列中选择线程来执行,如选择策略为按照排队的顺序选择,或按照线程的优先级选择等等,本申请实施例对此不做限定。CPU从运行队列中选择待执行的线程,并根据运行队列的指示获取该线程的TCB,该TCB包括执行该线程的信息(或称为上下文),如程序计数器、CPU寄存器值等,CPU切换为该线程的上下文,以执行该线程。
值得注意的是,这里是针对线程的介绍,对于进程的调度和执行方法与线程相似,这里不再赘述。
5,异构计算(Heterogeneous computing);
异构计算是指使用不同类型的计算单元组成***的计算方式,所谓的不同类型可以是指使用不同类型指令集或不同体系架构的计算单元,计算单元包括处理器或具有计算功能的组件,如配置有处理器的网卡(NIC)等,下文会进行具体介绍。
6,多样性算力;
根据不同的应用场景,在异构计算的基础上,协同多种算力共同参与计算流程,从而充分发挥***整体算力,提升***性能。
本申请实施例的应用场景包括需要计算设备使用多样性算法完成任务的场景,如数据库、大数据、人工智能(AI)、高性能计算(high performance computing,HPC)、存储、web(网页)应用等。本申请实施例提供的任务处理方法可以应用于具有异构计算能力的计算设备中,计算设备可以是但不限于桌面电脑、服务器、笔记本电脑以及移动设备。
图1为本申请实施例提供的一种计算设备的架构示意图。在硬件层面,计算设备120包括一个或多个主处理器123(图1示出了两个主处理器123,但本申请不限于两个主处理器123)、一个或多个协处理器124(图1示出了三个协处理器124,但本申请不限于三个协处理器124)、内存125。其中,主处理器123、协处理器124和内存125之间通过总线126连接。
其中,主处理器123可以是一个通用处理器,如中央处理器(central processingunit,CPU),可以用于管理或调度任务,如将任务调度给不同的协处理器124进行处理,这里的任务可以是用户通过应用程序触发的,也可以是计算设备120内部生成的,本申请实施例对此不做限定。另外,一个CPU 123可以具有一个或多个CPU核。本实施例不对CPU的数量,以及CPU核的数量进行限定。
协处理器124,具有运算功能,可以用于对数据进行计算或处理,例如重复数据删除、数据压缩、图像处理等等,当然,CPU123也具有运算功能可以用于对数据进行计算或处理,但性能相对于协处理器124的运算性能可能较低,或CPU123的计算资源容易成为瓶颈,因此CPU123可以将任务调度至协处理器124处理,以提高计算设备120的整体性能。示例性地,协处理器124接收CPU123调度的任务,如该任务为对待压缩数据进行压缩,协处理器124执行该任务:获取待压缩数据,并对待压缩数据进行压缩,以得到压缩数据,之后将压缩数据返回至CPU123。
协处理器124,可以是通用处理器或专用处理器,如协处理器124包括但不限于:图形处理器(graphics processing unit,GPU)、数据计算单元(data processing unit,DPU)、特殊应用集成电路(application specific integrated circuit,ASIC)、***级芯片(system on chip,SOC)、可编程门阵列(field programmable gate array,FPGA)、嵌入式神经网络处理器(neural network processing unit,NPU)、硬件计算引擎(hardwareaccelerator engine,HW AE)、硬件加速控制器(hardware accelerate controller,HAC)、CPU等等。
值得注意的是,协处理器124可以是独立的部件,也可以与计算设备120的其他部件组合,如配置有协处理器124的网卡、配置有协处理器124的固态硬盘(Solid-statedrive/Solid-state disk,SSD)等。本申请实施例对协处理器的形态不做限定,任何具有运算功能的组件中的处理器均可以作为协处理器。
内存125,是指与CPU123直接交换数据的内部存储器,或与CPU123、协处理器124直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作***或其他正在运行中的程序的临时数据存储器。
内存125包括至少两种存储器,例如内存125既可以是随机存取存储器,也可以是只读存储器(read only memory,ROM)。举例来说,随机存取存储器是动态随机存取存储器(dynamic random access memory,DRAM),或者存储级存储器(storage class memory,SCM)。DRAM是一种半导体存储器,与大部分随机存取存储器(random access memory,RAM)一样,属于一种易失性存储器(volatile memory)设备。SCM是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比DRAM慢,在成本上也比DRAM更为便宜。然而,DRAM和SCM在本实施例中只是示例性的说明,内存125还可以包括其他随机存取存储器,例如静态随机存取存储器(staticrandom access memory,SRAM)等。而对于只读存储器,举例来说,可以是可编程只读存储器(programmable read only memory,PROM)、可抹除可编程只读存储器(erasableprogrammable read only memory,EPROM)等。另外,内存125还可以是双列直插式存储器模块或双线存储器模块(dual in-line memory module,简称DIMM),即由动态随机存取存储器(DRAM)组成的模块,还可以是固态硬盘(solid state disk,SSD)。实际应用中,计算设备120中可配置多个内存125,以及不同类型的内存125。本实施例不对内存125的数量和类型进行限定。此外,可对内存125进行配置使其具有保电功能。保电功能是指***发生掉电又重新上电时,内存125中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
具体的,CPU123和协处理器124可以共享内存125。又示例性地,CPU123和协处理器124分别具有各自对应的专属内存。再示例性地,CPU123可以具有自身对应的专属内存,而协处理器124不具有自身对应的专属内存,如内存125为CPU123的专属内存,而协处理器124不具有专属内存,本申请实施例对此不做限定。
本领域技术人员可以确定,CPU123、协处理器124中还设置有缓存(cache)(图1未示出)。cache的存储器类型可以是SRAM,还可以是DRAM等,本申请实施例对此不做限定,缓存的运行速度通常比内存快,因此,内存中的数据可以被读取到缓存中,当某组件如CPU123要读取数据时,会先从自身的缓存中查找,如果缓存中未命中,再从内存125中查找。如果内存125中的数据由多个组件如CPU123和协处理器124共享,则该数据可能在多个缓存中存在数据副本,如CPU123的缓存和协处理器124的缓存中分别存在内存125中该共享数据的数据副本。若其中一个组件对自身缓存中的数据进行了修改,则会产生数据不一致的问题。缓存一致性(Cache Coherency,CC)便为解决该问题应运而生,换句话说,缓存一致性用于保证数据一致性。
具体的,缓存一致性协议要求缓存中的数据单元(如缓存行(cacheline))至少具有4种状态,分别为modified(修改)、exclusive(独占)、share(共享)、invalid(无效),其中,modified表示缓存行数据被修改了,但还未更新至内存中,并且处于该状态的数据仅在一个组件的缓存中存在。Exclusive表示缓存行数据是独占的,即其他缓存中没有该数据,且其数据没有修改,即与内存中数据一致。Share表示缓存中数据是共享的,即处于这一状态的数据在多个组件的缓存中均存在,且与内存一致。Invalid表示缓存行数据是无效的。
对于处于exclusive状态的缓存行,需要时刻监听其他试图读取该缓存行对应的内存地址的操作,如果监听到,则把该缓存行状态设置为share。对于处于share状态的缓存行,需要时刻监听使该缓存行无效或独享该缓存行的请求,如果监听到,则把缓存行的状态设置为Invalid。对于处于modified状态的缓存行,需要时刻监听所有试图读取该缓存行对应的内存地址的操作,如果监听到,则必须在该操作执行之前把该缓存行中的数据写回内存,从而保证数据一致性。
需要说明的是,上述方式仅为一种举例,本申请实施例对CC协议不做限定。
在本申请实施例中,CPU123可以通过缓存一致性将CPU123可以访问的内存125的部分或全部内存映射给协处理器124,以使CPU123和协处理器124可以共享同一块内存空间,协处理器124维护映射的内存地址和一个或多个缓存行(用于存储从映射的内存地址对应的内存空间中读取的数据)的映射关系,并通过上述方式保证数据一致性。
总线126,包括但不限于:扩展工业标准结构(extended industry standardarchitecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(computeexpress link,CXL)、缓存一致互联协议(cache coherent interconnect foraccelerators,CCIX)、Z代(generation Z,GENZ)、开源连续加速器处理接口(opencoherent accelerator processor interface,OpenCAPI)、英伟达链接(nvidia link,NVlink)、支持多协议的互联总线。本申请实施例对总线126类型不做限定,任何支持CC协议的总线均适用于本申请实施例。
需要说明的是,图1所示的结构并不构成对计算设备120的具体限定。在本申请另一些实施例中,计算设备120可以包括比图示更多或更少的部件,如计算设备120还可以包括硬盘、网卡等,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。
参见图2所示,在软件层面,计算设备120运行有操作***(operating system,OS)101和应用程序(application)(如下简称为应用)102。应用102是对用户呈现的各种应用程序的统称。操作***101至少包含OS内核330和一个设备驱动层331,其中,应用102运行在操作***101的用户态,OS内核330和设备驱动层331运行在操作***101的内核态。设备驱动层331安装有协处理器驱动334等驱动程序。OS内核330用于管理***的进程/线程、设备驱动程序等。协处理器驱动334相当于协处理器124的硬件接口,如图2中GPU驱动334为GPU124的硬件接口,DPU驱动334为DPU124的硬件接口,操作***101通过该协处理器驱动334与协处理器124通信,以控制协处理器124工作。应注意的是,操作***101和应用102运行在CPU123上。CPU123可以调用内存125中存储的操作***101的程序,以运行操作***101。
在本申请实施例提供的任务处理方法中,CPU123使用线程将任务调度至协处理器124,之后该线程会进入等待状态,当协处理器124处理完成该任务后,基于CC协议实现CPU123对该线程的唤醒操作,通过该设计,协处理器124不需要通过中断请求来通知CPU123唤醒线程,也不需要CPU123通过轮询协处理器124的方式来唤醒线程,可以降低CPU开销,提高CPU利用率,且有利于降低时延,提升***性能。
接下来以附图1和图2所示的计算设备120为例,对本申请实施例提供的任务处理方法进行说明。为了便于说明,本申请的以下实施例,将以一个CPU123和一个协处理器124以及线程为例进行说明。
参见图3,图3为本申请实施例提供的一种任务处理方法的流程示意图,如图3所示,该方法包括如下步骤:
步骤300,OS内核330将用于存储应用102的线程(如下简称应用线程)的信息的内存空间通过CC协议映射给协处理器12。
线程的信息包括但不限于线程的线程控制块,在一种实施方式中,OS内核330在创建应用线程时,会在内存125中创建内核栈,该内核栈用于存放该应用线程的线程控制块,示例性地,该线程控制块可以位于该内核栈的栈顶,OS内核330可以将该内核栈的栈顶位置通过CC协议映射给协处理器124,为便于描述,假设用于指示该线程控制块的内存空间通过CC协议映射后的地址为第一地址。可以理解的是,当通过CC协议映射给协处理器124之后,协处理器124便可以监听、访问该第一地址所对应的内存空间。值得注意的是,该应用线程用于执行应用102触发的任务,如应用102调用协处理器驱动334以向协处理器驱动334发送任务请求。
在一种实施方式,OS内核330可以将用于存储应用线程的信息的内存空间作全局映射,即映射给每一个协处理器,比如计算设备120的协处理器包括:GPU和DPU,则OS内核330可以将应用线程的信息映射给GPU和DPU,这样,当该应用线程分别调用GPU或DPU时,不需要对该应用线程的信息进行分次映射,有利于降低时延,提高***性能。
在另一种实施方式中,OS内核330可以将用于存储应用线程的信息的内存空间映射给指定的协处理器,例如,该应用线程调用GPU,则OS内核330将用于存储该应用线程的信息的内存空间映射给GPU,当该应用线程再次调用DPU时,OS内核330再将该用于存储该应用线程的信息的内存空间映射给DPU。应注意的是,在该实施方式中,该映射操作可以在步骤302之后执行。
步骤301,OS内核330将该应用线程所属的运行队列所在的内存空间通过CC协议映射给协处理器124。
在一种实施方式中,该运行队列可以是CPU123上的共享运行队列,也可以是CPU123为协处理器124生成的专属运行队列,该专属运行队列可以仅用于指示与协处理器124相关的线程的信息。本申请实施例对该运行队列不做限定。
OS内核330将运行队列所在的内存空间映射给协处理器124的方式参见上文介绍,示例性地,OS内核330可以将该运行队列所在的内存空间作全局映射,即映射给每一个协处理器,此处不再赘述。如下为便于说明,将该运行队列所在的内存空间通过CC协议映射后的地址称为第二地址。在一种实施方式中,该应用线程的线程控制块中存储有该第二地址。
需要说明的是,步骤300和步骤301之间没有严格的时序限定,可以是同时执行的,也可以是先执行步骤300再执行步骤301,或者,先执行步骤301再执行步骤300,本申请实施例对此不做限定。
步骤302,应用102向协处理器驱动334发送任务请求。
该任务请求用于请求协处理器124执行任务,如该任务用于指示对待压缩数据进行压缩。示例性地,该任务请求还可以用于指示用于存储待处理数据的内存空间(如下称为第一内存空间)以及用于存储数据处理结果的内存空间(如下称为第二内存空间)。
步骤303,协处理器驱动334向OS内核330请求获取该应用线程的线程控制块的地址信息。
在一种可选的方式中,协处理器驱动334还可以请求OS内核330将第一内存空间和/或中断下半部信息(如第二内存空间)通过CC映射给协处理器124。如下将第一内存空间通过CC映射给协处理器124的地址称为第三地址,将第二内存空间通过CC映射给协处理器124的地址称为第四地址。对应的,在步骤304中,OS内核330向协处理器驱动334发送第一地址,可选的,还可以将第二地址、第三地址、第四地址中的一项或多项发送给协处理器驱动334。其中,第一地址、第二地址、第三地址、第四地址中的一项或多项可以一起发送,也可以独立发送,本申请实施例对此不做限定。
举例来说,OS内核330可以将第二地址与第一地址一起发送给协处理器驱动334,也可以单独将第二地址发送给协处理器驱动334,即第一地址、第二地址通过不同的消息发送给协处理器驱动334。值得注意的是,若第一地所指示的线程控制块中存储有第二地址,且OS内核330向协处理器驱动334发送了第一地址,则OS内核330可以不再向协处理器驱动334发送第二地址。协处理器驱动334可以从线程控制块中获取第二地址。
需要说明的是,除用于存储数据处理结果的内存空间(即第二内存空间)的地址信息之外,中断下半部信息还可以包括其他信息,本申请实施例对此不做限定。中断下半部信息中的其他信息也可以通过CC协议映射给协处理器124,映射方式参见上文相关描述,此处不再赘述。
步骤305,协处理器驱动334向协处理器124发送请求命令。对应的,协处理器124接收该请求命令。
该请求命令用于请求协处理器124执行该任务。示例性地,该请求命令包括第一地址,可选的,还可以包括但不限于下列中的一项或多项:第二地址、第三地址、第四地址、步骤302中的任务请求。
另外,协处理器驱动334调用OS内核令应用线程进行休眠,即切换为等待状态,可选的,OS内核可以从运行队列中选择一个新的线程,切换至该待执行的线程。
为便于描述,假设该请求命令包括第一地址、第二地址、第三地址和第四地址。
步骤306,协处理器124从第三地址对应的内存空间获取待处理数据,对待处理数据进行处理,得到数据处理结果。
步骤307,协处理器124将数据处理结果存放至第四地址对应的内存空间。
需要说明的是,步骤306和步骤307为可选的步骤,若请求命令不包括第三地址、第四地址,则不执行步骤306、步骤307。协处理器124可以采用其他方式获取待处理数据以及对数据处理结果进行处理,本申请对协处理器124获取待处理数据以及中断下半部信息的处理方式不做限定。
基于上述设计,通过CC协议,将中断下半部流程中数据处理结果回传操作卸载到协处理器124中,降低了对CPU123处理能力的依赖,有利于提高CPU123的资源利用率,且提升了协处理器124的横向扩展(scale out)能力。
步骤308,协处理器124从第一地址对应的内存空间获取线程控制块的信息。
步骤309,协处理器124将该线程控制块的信息存放至第二地址所对应的内存空间,即运行队列中。
需要说明的是,这里的存放可以指将线程控制块存放至该运行队列,或者将用于指示该线程控制块的信息存放至该运行队列,如运行队列为链表,链表由一个个节点组成,该节点可以包括用于指示一个线程的线程控制块,如该线程控制块的索引值,该索引值可以用于定位到该线程控制块。
步骤310,OS内核330从运行队列获取该应用线程的线程控制块,并基于该线程控制块的唤醒该应用线程。
具体的,唤醒该应用线程的操作可以指CPU123基于该线程控制块所记录的信息切换至该应用线程的上下文,以继续运行该应用线程。如步骤311,协处理器驱动334从第四地址所对应的内存空间获取数据处理结果,并将该数据处理结果返回给应用102。
需要说明的是,图3所示的实施例是以线程为例来描述的,在上述实施例中可以将线程替换为进程,在实际应用中,也可以通过该方法来管理以及运行进程,这里不再赘述。
上述方式,CPU123向协处理器124发送请求命令以请求协处理器124执行任务,并通过该请求命令指示CPU123上(与该任务相关)的线程的信息的第一地址以及CPU123所维护的运行队列的第二地址,这样协处理器124执行完成该任务后,可以从第一地址获取该线程的信息,并根据第二地址将获取到的线程的信息存放至CPU123维护的运行队列中,CPU123可以基于运行队列所包括的信息来获取线程的信息,从而唤醒线程,这样不需要协处理器124通过中断请求来通知CPU123,也不需要CPU123询问协处理器124任务是否执行完成,可以降低CPU123的资源开销,有利于提高CPU123利用率及***性能。
参见图4为本申请实施例提供的一种任务处理方法的应用示例。在图4中,该任务处理方法包括如下流程:
(0)CPU侧OS内核在启动时可以先在每个CPU核上创建协处理器(如HAC)的专属运行队列,并利用CC协议完成该运行队列的地址映射(如下将该运行队列通过CC协议映射后的地址简称为RQ地址),以将该运行队列的内存空间的地址映射给HAC;应用启动时OS内核也针对应用的线程利用CC协议完成该应用的线程控制块的地址映射(如下将该线程控制块通过CC协议映射后的地址称为TCB地址),从而位于栈顶空间的线程控制块数据可以被硬件加速引擎访问。
(1)应用调用HAC驱动时,应用将待处理数据存放到内存125中的某内存空间,并申请用于回填数据处理结果的内存空间。示例性地,该内存空间可以是可用于作CC协议映射的内存空间,假设该内存空间通过CC协议映射后的地址为ADD1。同理,用于存储数据处理结果的内存空间也可以为可用于作CC协议映射的内存空间,假设该内存空间通过CC协议映射后的地址为ADD2。
(2)HAC驱动将RQ地址、ADD1、ADD2和TCB地址封装为请求命令,并通过总线126发送给HAC(如HAC1),之后,HAC驱动进入等待状态以等待请求命令完成。应注意的是,若线程控制块中存储有HAC的专属运行队列映射后的地址,即RQ地址,则请求命令中可以不携带RQ地址。
(3)HAC1接收请求命令,之后,从ADD1对应的内存空间中获取待处理数据,并对该待处理数据进行处理,以得到处理后的数据,如请求命令用于请求对待处理数据进行压缩,则HAC1对该待处理数据进行压缩,得到压缩数据。
(4)HAC1将处理后的数据存放到ADD2对应的内存空间中。
(5)HAC1从TCB地址对应的内存空间中获取线程控制块的数据,并将该线程控制块存放到RQ地址所指示的专属运行队列中。如图4中,步骤5用于指示将该线程控制块存放到CPU0上的专属运行队列中。
之后,OS内核从运行队列唤醒该应用线程,HAC驱动将ADD2对应的内存空间的数据处理结果返回至应用。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
本申请实施例中所描述的各种说明性的逻辑单元和电路可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列(FPGA)或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本申请实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件单元、或者这两者的结合。软件单元可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包括这些改动和变型在内。
Claims (10)
1.一种任务处理方法,其特征在于,应用于计算设备,所述计算设备至少包括主处理器和协处理器,所述方法包括:
所述主处理器向所述协处理器发送请求命令,所述请求命令用于请求所述协处理器处理任务,所述主处理器维护有运行队列;所述请求命令用于指示第一地址和第二地址,所述第一地址为所述主处理器执行所述任务的线程的信息所在的内存空间的地址;所述第二地址为所述运行队列所在的内存空间的地址;
所述协处理器执行所述任务,并在所述任务执行完成后根据所述第一地址对应的内存空间获取所述线程的信息,将所述线程的信息存放至所述第二地址所指示的运行队列中。
2.如权利要求1所述的方法,其特征在于,所述主处理器从所述运行队列中获取所述线程的信息,唤醒所述线程。
3.如权利要求1或2所述的方法,其特征在于,所述第一地址和所述第二地址均为通过缓存一致性CC协议映射给所述协处理器的。
4.如权利要求1或2所述的方法,其特征在于,所述线程的信息为所述线程的线程控制块TCB信息。
5.如权利要求1-4任一项所述的方法,其特征在于,所述任务用于指示对待处理数据进行处理;
所述方法还包括:
所述主处理器向所述协处理器发送用于指示第三地址的信息,所述第三地址为用于存储所述待处理数据的内存空间的地址;
所述协处理器接收所述用于指示第三地址的信息;
所述协处理器执行所述任务,包括:从所述第三地址对应的内存空间获取所述待处理数据。
6.如权利要求5所述的方法,其特征在于,所述第三地址为通过CC协议映射给所述协处理器的。
7.如权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
所述主处理器向所述协处理器发送中断下半部处理信息;所述中断下半部处理信息包括用于指示第四地址的信息,所述第四地址为用于存放所述任务的处理结果的内存空间的地址;
所述协处理器接收所述中断下半部处理信息,并将得到的所述任务的处理结果存放至所述第四地址对应的内存空间。
8.如权利要求7所述的方法,其特征在于,所述第四地址为通过CC协议映射给所述协处理器的。
9.一种计算设备,其特征在于,所述计算设备包括主处理器、协处理器和内存;
所述内存,用于存储计算机程序指令;
所述主处理器执行调用所述内存中的计算机程序指令,以执行如权利要求1至8中任一项所述主处理器执行的方法;
所述协处理器用于执行如权利要求1至8中任一项所述协处理器执行的方法。
10.如权利要求9所述的计算设备,其特征在于,所述主处理器包括中央处理器CPU;
所述协处理器包括图形处理器GPU、数据计算单元DPU、特殊应用集成电路ASIC、***级芯片SOC、可编程门阵列FPGA、嵌入式神经网络处理器NPU、硬件计算引擎HW AE、硬件加速控制器HAC、CPU。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111205427.1A CN115981833A (zh) | 2021-10-15 | 2021-10-15 | 一种任务处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111205427.1A CN115981833A (zh) | 2021-10-15 | 2021-10-15 | 一种任务处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115981833A true CN115981833A (zh) | 2023-04-18 |
Family
ID=85968714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111205427.1A Pending CN115981833A (zh) | 2021-10-15 | 2021-10-15 | 一种任务处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115981833A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301663A (zh) * | 2023-05-12 | 2023-06-23 | 新华三技术有限公司 | 一种数据存储方法、装置及主机 |
CN116521606A (zh) * | 2023-06-27 | 2023-08-01 | 太初(无锡)电子科技有限公司 | 一种任务处理方法、装置、计算设备及存储介质 |
CN117171075A (zh) * | 2023-10-27 | 2023-12-05 | 上海芯联芯智能科技有限公司 | 一种电子设备及任务处理方法 |
-
2021
- 2021-10-15 CN CN202111205427.1A patent/CN115981833A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301663A (zh) * | 2023-05-12 | 2023-06-23 | 新华三技术有限公司 | 一种数据存储方法、装置及主机 |
CN116521606A (zh) * | 2023-06-27 | 2023-08-01 | 太初(无锡)电子科技有限公司 | 一种任务处理方法、装置、计算设备及存储介质 |
CN116521606B (zh) * | 2023-06-27 | 2023-09-05 | 太初(无锡)电子科技有限公司 | 一种任务处理方法、装置、计算设备及存储介质 |
CN117171075A (zh) * | 2023-10-27 | 2023-12-05 | 上海芯联芯智能科技有限公司 | 一种电子设备及任务处理方法 |
CN117171075B (zh) * | 2023-10-27 | 2024-02-06 | 上海芯联芯智能科技有限公司 | 一种电子设备及任务处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10620992B2 (en) | Resource migration negotiation | |
JP4704041B2 (ja) | マルチスレッド・プロセッサ性能を制御する装置及び方法 | |
CN115981833A (zh) | 一种任务处理方法及装置 | |
US20140365738A1 (en) | Systems and Methods for Memory Page Offloading in Multi-Processor Computer Systems | |
US9141173B2 (en) | Thread consolidation in processor cores | |
US20140351519A1 (en) | System and method for providing cache-aware lightweight producer consumer queues | |
US20120297216A1 (en) | Dynamically selecting active polling or timed waits | |
US20110265093A1 (en) | Computer System and Program Product | |
CN113590508B (zh) | 动态可重构的内存地址映射方法及装置 | |
US10459771B2 (en) | Lightweight thread synchronization using shared memory state | |
US11468001B1 (en) | Processing-in-memory concurrent processing system and method | |
EP4184324A1 (en) | Efficient accelerator offload in multi-accelerator framework | |
US20210357339A1 (en) | Efficient management of bus bandwidth for multiple drivers | |
US20210224213A1 (en) | Techniques for near data acceleration for a multi-core architecture | |
KR20190138365A (ko) | 멀티 프로세서 시스템 및 그 구동 방법 | |
CN108845969B (zh) | 适用于不完全对称多处理微控制器的操作控制方法及操作*** | |
JP2017033375A (ja) | 並列計算システム、マイグレーション方法、及びマイグレーションプログラム | |
US20140149691A1 (en) | Data processing system and data processing method | |
CN115481072A (zh) | 核间数据传输方法、多核芯片及机器可读存储介质 | |
US10740150B2 (en) | Programmable state machine controller in a parallel processing system | |
TW202119215A (zh) | 共用代碼之系統與代碼共用方法 | |
US10051087B2 (en) | Dynamic cache-efficient event suppression for network function virtualization | |
US20200226067A1 (en) | Coherent multiprocessing enabled compute in storage and memory | |
JP5847313B2 (ja) | 情報処理装置 | |
US20240248744A1 (en) | Systems and methods for offloading guest tasks to a host system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |