CN116107954A - 一种数据处理方法以及相关设备 - Google Patents
一种数据处理方法以及相关设备 Download PDFInfo
- Publication number
- CN116107954A CN116107954A CN202111320330.5A CN202111320330A CN116107954A CN 116107954 A CN116107954 A CN 116107954A CN 202111320330 A CN202111320330 A CN 202111320330A CN 116107954 A CN116107954 A CN 116107954A
- Authority
- CN
- China
- Prior art keywords
- processor
- execution information
- computing device
- data processing
- network card
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
-
- 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
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请实施例公开了一种数据处理方法及其相关设备,该方法用于通讯领域,特别是需要调用远端的处理器执行任务的场景,该方法由计算设备执行,计算设备包括网卡、处理器及处理器调度引擎,网卡从接收到的数据处理请求中获取待处理数据的第一执行信息,并将第一执行信息转化为第二执行信息,网卡将第二执行信息发送至处理器调度引擎,通过处理器调度引擎调用处理器处理,无需将数据处理请求传输到内存,通过操作***调用处理器处理,提高处理的效率。
Description
技术领域
本申请涉及通讯领域,尤其涉及一种数据处理方法以及相关设备。
背景技术
远程直接内存访问(remote direct memory access,RDMA)技术是一种直接访问远端内存的通讯技术,即可以直接将数据从客户端快速迁移到远端的内存中,而无需双方的操作***(operating system,OS)介入。
基于当前的RDMA技术,源端设备需要指示远端设备处理任务时,源端设备首先通过RDMA的发送命令将任务处理的请求发送至远端设备,远端设备的RDMA网络接口卡(rdmanetwork interface card,RNIC)接收到任务处理请求后,首先将任务处理请求存储到远端设备的内存,然后由远端设备操作***解析所述任务处理请求,并调用远端设备的中央处理器(central processing unit,CPU)执行所述任务处理请求。但是操作***调度CPU的效率比较低,从而降低了任务处理的效率。
发明内容
本申请实施例提供了一种数据处理方法以及相关设备,用于需要远端调用处理器执行任务时,提高任务执行效率。
本申请实施例第一方面提供了一种数据处理方法:
本申请实施例中的方法由计算设备执行。计算设备包括网卡、处理器及处理器调度引擎,计算设备的网卡接收数据处理请求,数据处理请求中包括待处理数据的第一执行信息,网卡直接获取数据处理请求中的第一执行信息。网卡在获取到第一执行信息后,将第一执行信息转换为第二执行信息,第二执行信息包括第一执行信息。网卡将第二执行信息发送给处理器调度引擎,通过处理器调度引擎调用处理器,处理器获取第二执行信息后,根据第二执行信息对待处理数据进行处理。
网卡接收到数据处理请求后直接解析数据处理请求,获取数据处理请求内的第一执行信息,并将第一执行信息转换为第二执行信息发送给处理器调度引擎,通过处理器调度引擎直接调用处理器对待处理数据进行处理,无需将数据处理请求发送到计算设备的内存后,由OS调用处理器解析数据处理请求,从而避免通过OS调用处理器,提高执行的效率。
基于第一方面,一种可选的实现方式中:
数据处理请求中包括待处理数据的第一执行信息,其中,待处理数据为待执行的代码,第一执行信息包括代码的第一存储地址,网卡在获取到第一执行信息后,网卡将第一执行信息转换为第二执行信息,并将第二执行信息发送给处理器调度引擎,通过处理器调度引擎调用处理器来处理第二执行信息。处理器根据第二执行信息中的第一存储地址从计算设备中获取代码,并执行该代码。
网卡直接获取数据处理请求中的第一执行信息,第一执行信息包括待处理的代码在计算设备中的地址,并将数据处理请求中的第一存储地址转换到第二执行信息中,使得处理器被调用后直接基于第二信息中的第一存储地址执行对应的代码,无需将数据处理请求发送到计算设备的内存中,再由OS调度处理器获取,节约获取时间,从而提高处理待处理数据的效率。
基于第一方面,一种可选的实现方式中:
计算设备还包括内存,数据处理请求中包括第一执行信息,待处理数据为待执行的代码,第一执行信息中包括代码的第一存储地址和执行代码所需要的上下文,网卡解析数据处理请求,获取第一执行信息中的上下文,网卡将上下文存储到内存中,并获取上下文在内存中的第二存储地址。网卡具体可以是通过直接存储器访问(direct memory access,DMA)的方式将上下文存储到内存中的,从而无需操作***调用处理器解析数据处请求并从中获取上下文,也无需操作***调用处理器将上下文复制到内存中,能够提高处理待处理数据的效率。网卡将第一存储地址与第二存储地址转换为第二执行信息。通过处理器调度引擎调用处理器来处理,处理器从第二执行信息中第一存储地址及第二存储地址,根据第一存储地址获取代码,根据第二存储地址获取上下文,根据上下文执行代码。
当执行代码需要上下文时,网卡能够将上下文的存储地址封装到第二执行信息中,无需处理器解析数据处理请求并从中获取第二执行信息,能够提高处理效率。
基于第一方面,一种可选的实现方式中;
数据处理请求携带在RDMA协议中的执行命令,数据处理请求包含BTH(basictransmission header,BTH)和扩展头,BTH包括执行命令,扩展头内包括第一执行信息。执行命令用于指示网卡对数据处理请求进行处理。
由于数据处理请求包含执行命令,无需传输到内存后,再由操作***调用处理器解析该数据处理请求,避免重复拷贝数据处理请求,浪费内存资源,且由于无需处理器解析该数据处理请求,提高效率。
基于第一方面,一种可选的实现方式中:
执行命令为在RDMA协议的传输层的自定义字段中定义的命令。执行命令用于指示网卡直接解析数据处理请求。
RDMA协议的传输层的自定义字段写入执行命令,使传输的数据处理请求包括执行命令,从而使网卡接收到包含执行命令的数据处理请求后,直接解析该数据处理请求,且无需处理器解析该数据处理请求,提高效率。
基于第一方面,一种可选的实现方式中:
处理器调度引擎为包保序引擎。
通过处理器调度引擎调度处理器,避免使用OS调用,提高处理的效率。
基于第一方面一种可选地实现方式中,三者之间的关系参见下述任一项所示:
1.计算设备包括与网卡连接的主机、主机包括处理器与处理器调度引擎。网卡获取到数据处理请求时,直接获取数据处理请求内的第一执行信息。网卡在获取到第一执行信息后,将第一执行信息转换为第二执行信息。网卡将第二执行信息发送给主机的处理器调度引擎,通过处理器调度引擎调用处理器来处理第二执行信息。处理器根据第二执行信息对待处理数据进行处理。
网卡接收到数据处理请求后直接解析数据处理请求,获取数据处理请求内的第一执行信息,并将第一执行信息转换为第二执行信息发送给网卡内的处理器调度引擎,由处理器调度引擎直接调用网卡内的处理器执行待处理数据。无需将数据处理请求传送到内存,再通过OS调用处理器,提高执行的效率。
2.计算设备为数据处理单元,包括与网卡、处理器与处理器调度引擎。待处理数据存储在另一计算设备中。网卡获取到数据处理请求时,直接获取数据处理请求内的第一执行信息。网卡在获取到第一执行信息后,将第一执行信息转换为第二执行信息。网卡将第二执行信息发送给处理器调度引擎,通过处理器调度引擎调用计算单元内的处理器来处理第二执行信息。处理器根据第二执行信息对另一计算设备中的待处理数据进行处理。
本申请实施例第二方面提供了一种网卡:
网卡包括第一处理器及存储设备,存储设备中存储程序指令,第一处理器运行程序指令以执行:接收数据处理请求,数据处理请求中包括待处理数据的第一执行信息;从数据处理请求中获取第一执行信息;将第一执行信息转换为第二执行信息,并将第二执行信息发送至处理器调度引擎,第二执行信息用于指示处理器调度引擎调度第二处理器,使第二处理器根据第二执行信息对待处理数据进行处理。
网卡直接获取数据处理请求中的第一执行信息,第一执行信息包括待处理的代码在计算设备中的地址,并将数据处理请求中的第一存储地址转换到第二执行信息中,使得处理器被调用后直接基于第二信息中的第一存储地址执行对应的代码,无需将数据处理请求发送到计算设备的内存中,再由OS调度处理器获取,节约获取时间,从而提高处理待处理数据的效率。
基于第二方面,一种可能实现的方式中;
数据处理请求携带于远程直接内存访问RDMA协议中的执行命令中,执行命令用于指示网卡对数据处理请求进行处理。
基于第二方面,一种可能实现的方式中;
执行命令为在RDMA协议的传输层的自定义字段中定义的命令。
本申请实施例第三方面提供了一种计算设备:
计算设备包括第二方面的网卡、第二处理器及处理器调度引擎。网卡用于,接收数据处理请求,数据处理请求中包括待处理数据的第一执行信息。网卡还用于,从数据处理请求中获取第一执行信息。网卡还用于,将第一执行信息转换为第二执行信息,第二执行信息包括第一执行信息。网卡还用于将第二执行信息发送至处理器调度引擎。处理器调度执行引擎用于,调用第二处理器处理第二执行信息。第二处理器用于,根据第二执行信息对待处理数据进行处理。
基于第三方面,一种可选的实现方式中,待处理数据为待执行的代码,第一执行信息包括代码的第一存储地址。第二处理器具体用于,根据第二执行信息中第一存储地址获取代码,并执行代码。
基于第三方面,一种可选的实现方式中,计算设备还包括内存,数据处理请求中包括第一执行信息,待处理数据为待执行的代码,第一执行信息中包括代码的第一存储地址和执行代码所需要的上下文,网卡解析数据处理请求,获取第一执行信息中的上下文,网卡将上下文存储到内存中,并获取上下文在内存中的第二存储地址。网卡具体可以是通过DMA的方式将上下文存储到内存中的,从而无需操作***调用第二处理器解析数据处理请求并从中获取上下文,也无需操作***调用第二处理器将上下文复制到内存中,能够提高处理待处理数据的效率。网卡将第一存储地址与第二存储地址转换为第二执行信息。通过处理器调度引擎调用第二处理器来处理,第二处理器从第二执行信息中第一存储地址及第二存储地址,根据第一存储地址获取代码,根据第二存储地址获取上下文,根据上下文执行代码。
当执行代码需要上下文时,网卡能够将上下文的存储地址封装到第二执行信息中,无需处理器解析数据处理请求并从中获取第二执行信息,能够提高处理效率。
基于第三方面,一种可选的实现方式中,数据处理请求携带于远程直接内存访问RDMA协议中的执行命令中。
基于第三方面,一种可选的实现方式中,执行命令为在RDMA协议的传输层的自定义字段中定义的命令。
基于第三方面,一种可选的实现方式中,处理器调度引擎为包保序引擎。
基于第三方面,一种可选的实现方式中,计算设备包括与网卡连接的主机,主机包括第二处理器与处理器调度引擎。
基于第三方面,一种可选的实现方式中,处理器为数据处理器DPU,计算设备连接至另一计算设备,待处理数据存储在另一计算设备中。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的数据处理***一实施例的结构示意图;
图2为本申请实施例中RDMA协议所定义的命令的示意图;
图3为图1中第二计算设备一实施例的结构示意图;
图4为本申请提供的网卡一实施例的结构示意图;
图5为本申请提供的数据处理方法第一实施例的流程示意图;
图6为本申请提供的数据处理请求的一种格式的示意图;
图7为本申请提供的数据处理请求的另一种格式的示意图;
图8为本申请第二计算设备处理数据一实施例的示意图;
图9为本申请提供数据处理***的另一个实施例的结构示意图;
图10为图9中第二计算设备一实施例的结构示意图;
图11为本申请提供的数据处理方法第二实施例的流程示意图;
图12为本申请第二计算设备处理数据另一实施例的示意图。
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
RDMA技术是一种可以把数据直接传入远端计算设备存储区的技术,让数据从一个计算设备的存储区快速移动到另一个计算设备的存储区,且在访问远端计算设备的存储区的过程中,可以不用调用处理器,提高数据在远端计算设备存取效率。
而在另一些应用场景中,RDMA技术除了用于访问远端计算设备的存储区,还可以用于调用远端计算设备的算力。具体而言,发出调度请求的调度设备(源端设备)向被调度的远端计算设备发送请求消息,请求消息中携带具体的函数计算或信息处理等任务信息,远端计算设备根据请求消息执行对应的任务,并将任务执行的结果返回至源端设备。远端计算设备需要操作***调度处理器通过轮询或中断等操作获取请求消息,并且在执行任务的过程中,需要操作***调度处理器对请求消息进行解析、拷贝等操作,这些操作都会增加处理任务的时延,而且让处理器处于高负荷运转状态,增加处理器的功耗。
为了解决基于RDMA技术的传输场景中,特别是需要远端执行任务的场景中,通过操作***调用处理器效率低的问题,本申请提供如下实施例。如图1所示,图1为本申请提供的数据处理***一实施例的结构示意图。***10包括第一计算设备11和第二计算设备12。图1中的第一计算设备11作为源端设备,用于发送数据处理请求。其中,所述数据处理请求用于指示第二计算设备12对待处理的数据进行处理,所述待处理的数据例如为计算任务。第二计算设备12为远端设备,存储有待处理的数据,例如计算任务,所述计算任务例如可以为一段程序代码,例如函数,所述第二计算设备12还用于执行所述数据处理请求所指示的任务。其中,第二计算设备12可以是服务器、计算机或平板电脑等设备。为了方便描述,下文将以所述待处理数据为计算任务为例进行描述。
第一计算设备11和第二计算设备12之间通过RDMA协议通信。本申请实施例中,在RDMA协议所执行的基本操作命令之外,本申请增加了一种新的命令,即执行(Excute)命令。该命令为在RDMA协议的传输层的自定义字段中定义的命令。请参阅图2,图2为本申请实施例中RDMA协议所定义的命令的示意图。RDMA协议当前定义的命令有发送(Send)命令、写(Write)命令、读(Read)命令和原子(Atomic)命令。本申请实施例中,在OPCode字段中定义了一种新的命令,即执行(Excute)命令,所述执行命令用于指示第二计算设备12中的网卡在接收到所述执行命令后,直接解析携带的数据,例如数据处理请求,而无需将所携带的数据传输到第二计算设备的内存。需要说明的是,“执行命令”只是对指示网卡直接解析数据处理请求的命令的统称,并不特指某个或某些命令,在实际应用中,也可能对指示网卡直接解析数据处理请求的命令不称之为“执行命令”,而以其他名称代替,具体此处不做限定,本申请实施例中只以“执行命令”为例进行说明。
具体地,如图3和图4所示,图3为本申请提供的计算设备一实施例的结构示意图;
图4为本申请提供的网卡一实施例的结构示意图。本实施例中,第二计算设备12包括图4中的网卡121、第二处理器122及处理器调度引擎123。网卡121连接处理器调度引擎123,处理器调度引擎123连接第二处理器122。其中,第二计算设备12可以包括与网卡121连接的主机124,第二处理器122与处理器调度引擎设置123在主机124内。第二处理器122可以为中央处理器(central processing unit,CPU)或图形处理器(graphics processingunit,GPU),具体此处不做限定。处理器调度引擎123可以为包保序引擎(packet orderenforcer,POE)。网卡121包括第一处理器1211和存储设备1212。
网卡121用于接收第一计算设备11的数据处理请求,并对数据处理请求进行解析。具体地,存储设备1212中存储程序指令。响应于执行命令,第一处理器1211运行该程序指令以执行下列操作:接收并解析数据处理请求,从数据处理请求中解析到计算任务的信息后,将所述计算任务的信息进行转换为调度信息,所述调度信息可以用于调度第二处理器122,然后将调度信息发送给处理器调度引擎123。处理器调度引擎123可以直接根据调度信息,调度第二处理器122处理所述调度信息所指示的计算任务。从而,在第二计算设备12执行计算任务时,无需操作***调度第二处理器122执行计算任务,从而提高了任务的执行效率。在以下实施例中,为了方便描述,将所述计算任务的信息称为第一执行信息,将所述调度信息称为第二执行信息。
第二计算设备还可以包括存储器125,存储器125与第二处理器122连接。存储器125用于存储计算任务,从而第二处理器122根据第二执行信息的指示从存储器125获取并处理计算任务。其中,存储器125可以为只读存储器(read-only memory,ROM)、闪速存储器(flash memory)或磁盘等非易失性存储器。
可选地,网卡121还包括直接存储器访问(direct memory access,DMA)控制器1213,DMA控制器1213与第一处理器1211连接。第二计算设备12还包括内存126,内存126与DMA控制器1213以及第二处理器122连接。其中,内存126为随机存储器(random accessmemory,RAM)。当网卡121解析到第一执行信息中还包括执行计算任务所需的状态信息,例如上下文时,通过DMA控制器1213将状态信息DMA传送到内存126中,以使第二处理器122能够直接从内存126中获取状态信息,从而处理计算任务。为了方便描述,下文将以状态信息为上下文为例进行描述。
基于上述的第二计算设备12,本申请提供如下的数据处理方法实施例。如图5所示,图5为本申请提供的数据处理方法第一实施例的流程示意图。本实施例包括以下步骤:
501、第二计算设备的网卡接收第一计算设备发送的数据处理请求。
在本申请实施例中,第一计算设备向第二计算设备发送数据处理请求,第二计算设备的网卡接收该数据处理请求。数据处理请求包括计算任务的第一执行信息。计算任务为待执行的代码。待执行的打码例如为算法代码或函数代码等。
其中,第一执行信息包括代码在第二计算设备中的第一存储地址。第一计算设备在向第二计算设备发送数据处理请求之前,第一计算设备需要获取第一执行信息。
为了提高任务的执行效率,计算任务可以是预先存储在第二设备的存储器中的,第一计算设备则存储计算任务与第一存储地址的映射关系。当第一计算设备需要第二计算设备基于计算任务执行函数计算等任务时,第一计算设备根据映射关系获取第一存储地址,并将第一存储地址封装到数据处理请求中。
如图6所示,图6为本申请提供的数据处理请求的一种格式的示意图。数据处理请求包括基本传输头(basic transmission header,BTH)和扩展头。BTH内的操作码(opcode,OP)包括执行命令,扩展头内包括第一执行信息。此类携带上下文的数据处理请求为无状态执行请求,即计算任务可直接被处理器运行并输出结果,而不需要额外输入数据。
如图7所示,图7为本申请提供的数据处理请求的另一种格式的示意图。数据处理请求包括BTH和扩展头。BTH内的OP包括执行命令,扩展头内包括第一执行信息。与图5中的数据处理请求的格式不同的是,图6中的数据处理请求的格式中扩展头所携带的第一执行信息中,还包括上下文。上下文例如为运行计算任务过程中所需要的数据,例如参数、初始值或取值范围等等。此类携带上下文的数据处理请求为有状态执行请求,即需要为计算任务提供上下文,计算任务才能够被处理器处理。
图6和图7中,循环冗余校验(cyclic redundancy check,CRC)是根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,用来检测或校验数据传输或者保存后可能出现的错误,利用除法及余数的原理来做错误侦测。
502、第二计算设备的网卡获取数据处理请求内的第一执行信息。
具体地,第二计算设备的网卡接收到数据处理请求后,解析数据处理请求,从数据处理请求的传输头中获取执行命令。当网卡从数据处理请求的传输头获取到的执行命令为Excute时,网卡进一步从数据处理请求的扩展头获取第一执行信息,并执行步骤503。
也即,对数据处理请求的解析由网卡完成,而非直接将数据处理请求存储到内存、操作***再调度处理器解析内存中的数据处理请求,从而,无需操作***和处理器参与,还减少了将数据处理请求写入到内存的操作,能够提高解析的效率以及降低处理器的功耗。
503、第二计算设备的网卡将第一执行信息转换为第二执行信息。
第二计算设备的网卡将解析得到的第一执行信息封装为第二执行信息。该第二执行信息为描述符,以使得处理器调度引擎能够识别第二执行消息并进行后续的调度处理器的操作。
当数据处理请求为无状态执行请求时,第一执行消息中包括第一存储地址。网卡将第一存储地址封装为描述符,得到第二执行信息。
当数据处理请求为有状态执行请求时,第一执行消息中包括第一存储地址和上下文。网卡将第一存储地址和第二存储地址封装为描述符,得到第二执行信息。
当第一执行信息包括上下文时,网卡在解析得到上下文后,网卡将上下文存储到第二计算设备的内存中,并获取上下文在内存中的第二存储地址。网卡例如通过DMA的方式将上下文写入到第二计算设备的内存中。具体地,网卡内的DMA控制器向第二处理器申请DMA传送上下文,第二处理器允许DMA传送并为DMA控制器配置写入上下文的主存起始地址,DMA控制器根据主存起始地址将上下文写入内存中。上下文在内存中的第二存储地址为主存起始地址开始,到主存起始地址加上上下文长度结束。即第二存储地址时根据第二处理器配置的主存起始地址和上下文的长度确定的。从而第二处理器可以直接从内存中获取上下文,无需操作***调用第二处理器从数据处理请求中获取上下文并将上下文复制到内存中,能够降低处理器功耗,以及提高处理器处理计算任务的效率。
在其他实施方式中,为避免数据处理请求在传输过程中被劫持,导致第一存储地址泄露而造成第二计算设备被恶意攻击,提高传输过程中的安全性,第一执行信息中的第一存储地址可以为虚拟地址(function address,FA)。第二计算设备的网卡解析出虚拟地址形式的第一存储地址后,获取地址表(adress table,AT),地址表包括虚拟地址与存储代码的实际物理地址的映射关系。第二计算设备的网卡根据地址表查找该虚拟地址形式的第一存储地址对应的实际物理地址。该情况下,第二执行消息中的第一存储地址为实际物理地址。使用虚拟替代代码的地址,防止代码的地址在传输过程中泄露,提高传输过程的安全性。
504、第二计算设备的网卡发送第二执行信息至第二计算设备的处理器调度引擎。
第二计算设备的网卡得到第二执行信息后,将第二执行信息发送至第二计算设备的处理器调度引擎,以通知处理器调度引擎调度第二处理器。
505、第二计算设备的处理器调用引擎调用第二设备的第二处理器。
处理器调度引擎为能够直接调用处理器的硬件。第二计算设备的处理器调用引擎在获取到第二执行信息后,调用空闲的第二处理器。本申请实施例,通过网卡生成调用处理器的第二执行信息,并将第二执行信息发送给处理器调度引擎,由处理器调度引擎调度第二处理器执行计算任务,无需操作***调度第二处理器,从而提高执行的效率。
506、第二计算设备的第二处理器根据第二执行信息对计算任务进行处理。
在本申请实施例中,当第二执行信息包括第一存储地址时,第二处理器根据第二执行信息中的第一存储地址从第二计算设备的存储器获取代码,并进行处理。第二计算设备的处理器调度引擎直接调用空闲的第二处理器,第二处理器接获取到第二执行信息内代码的地址后,修改第二处理器的程序计数器(program counter,PC)的值,使第二处理器从PC的值指向的地址(即第一存储地址)获取代码。第二处理器获取代码后执行该代码。
PC为第二处理器中用于存储指令的地址的控制寄存器,它包含当前正在执行的指令的地址(位置)。当每个指令被获取,程序计数器的存储地址加一。在每个指令被获取之后,程序计数器指向顺序中的下一个指令。由于大多数指令都是按顺序来执行的,所以修改PC的过程通常只是简单的对PC加“指令字节数”。当程序转移时,转移指令执行的最终结果就是要改变PC的值,此PC值就是转去的目标地址。第二处理器总是按照PC指向取指、译码、执行,以此实现了程序转移。转移指令如跳转指令时,后继指令的地址(即PC的内容)必须从指令寄存器中的地址字段取得。在这种情况下,下一条从内存取出的指令将由转移指令来规定,而不像通常一样按顺序来取得。因此程序计数器的结构应当是具有寄存信息和计数两种功能的结构。本实施例中,修改PC的值可以是按顺序修改,也可以是通过程序转移修改,对此本申请不做限制。
在其他实施例中,当第二执行信息包括第一存储地址以及上下文的第二存储地址时,第二处理器根据第一存储地址从第二计算设备中获取代码,以及根据第二存储地址从第二计算设备中的内存获取上下文,并使用上下文执行代码,即将上下文带入到代码中,然后执行代码。具体地,第二计算设备的处理器调度引擎直接调用空闲的第二处理器,第二处理器获取到第一存储地址与第二存储地址后,修改PC的值,分别获取根据第一存储地址从存储器获取代码以及根据第二存储地址从内存中获取上下文,处理器使用上下文执行该代码生成结果信息。
507、第二计算设备的网卡接收执行结果。
第二计算设备的第二处理器执行代码后,生成执行结果,第二计算设备的网卡接收第二计算设备的第二处理器发送该执行结果。
508、第二计算设备的网卡向第一计算设备发送执行结果。
第二计算设备的网卡接收到结果信息后,将该执行结果发送给第一计算设备。
以上步骤502至步骤506由第二计算设备中的各部件配合实现,请参阅图8,图8为本申请第二计算设备处理数据一实施例的示意图。网卡解析数据处理请求,当数据处理请求的基本传输头为Excute时,网卡进一步从数据处理请求的扩展头获取第一执行信息。
若第一执行信息中不包括上下文,网卡将第一执行信息中的第一存储地址(function address)封装为第二执行信息,并将第二执行信息发送至处理器调度引擎,处理器调度引擎调用空闲的第二处理器执行第一存储地址对应的代码。
若第一执行信息中包括第一存储地址和上下文,网卡将一方面将上下文存储到第二计算设备的内存,即堆栈(stack)中,并获取上下文在内存中的第二存储地址(contextaddress),另一方面将第一存储地址和第二存储地址封装为第二执行信息。网卡将第二执行信息发送至处理器调度引擎,处理器调度引擎调用空闲的第二处理器根据第一存储地址获取代码,根据第二存储地址获取上下文,处理器根据上下文执行代码。
可见,相较于相关技术中,网卡接收到数据处理请求后,直接将数据请求存储到内存,由操作***调度处理器轮询获取数据处理请求,并解析数据处理请求,在数据处理请求携带上下文的情况下,第二处理器还需要将上下文拷贝到内存中,本申请具有如下效果:网卡无需将整个数据处理请求写入内存,能够降低解析数据处理请求的时延;当网卡确定有执行任务时,网卡通知处理器调度引擎主动调用第二处理器,无需操作***调度第二处理器采用轮询、中断等方式判断是否接收到执行任务,能够减少第二处理器的带宽等开销,提高计算任务的处理效率;当存在上下文时,上下文由网卡直接存储到第二存储地址对应的位置,第二处理器只需直接根据第二存储地址从内存中获取上下文,无需第二处理器解析数据处理请求以及将上下文拷贝到第二存储地址对应的位置,能够减少第二处理器的带宽等开销,提高第二处理器的执行效率;从数据处理请求的处理,到任务的执行过程中,无需通过OS调用第二处理器,能够提高处理计算任务的执行效率。
以上是由主机中的第二处理器对计算任务进行处理的实施例,在其他实施例中,第二计算设备为数据处理单元(data processing unit,DPU),由数据处理单元中的第二处理器对计算任务进行处理。请参阅图9,图9为本申请提供数据处理***的另一个实施例的结构示意图。
***90包括第一计算设备91和第二计算设备92和第三计算设备93。图9中的第一计算设备91作为源端设备,用于发送数据处理请求。第二计算设备92为远端设备,用于根据请求执行任务。第二计算设备92为DPU。第三计算设备93为存储计算任务的设备,具体而言,第三计算设备93为包括中央处理器和内存的主机。
第一计算设备91和第二计算设备92之间通过支持RDMA协议的网络通信。第二计算设备92与第三计算设备93之间可以通过***总线进行信息传输。
如图10所示,图10为图9中第二计算设备一实施例的结构示意图。本实施例中,第二计算设备92包括网卡921、处理器922及处理器调度引擎923。本实施例中网卡921与图4中的网卡121相同,故在此不再赘述。网卡921连接处理器调度引擎923,处理器调度引擎923连接处理器922。处理器调度引擎可以为包保序引擎(packet order enforcer,POE)。本实施例中,处理器922可以为数据处理器。
网卡921用于接收第一计算设备91的数据处理请求,并对数据处理请求进行解析。网卡921从数据处理请求中解析到相应的任务信息后,将任务信息发送给处理器调度引擎923。处理器调度引擎923用于在接收到来自网卡921的任务信息后,调度处理器922处理计算任务以执行任务信息对应的任务。从而,无需操作***调度处理器922对数据处理请求进行解析,处理器922可直接被调度用于执行具体的任务,提高任务的执行效率。
基于上述的第二计算设备92,本申请提供如下的数据处理方法实施例。如图11所示,图11为本申请提供的数据处理方法第二实施例的流程示意图。本实施例包括以下步骤:
1101、第二计算设备的网卡接收第一计算设备发送的数据处理请求。
本步骤与步骤501类似,故在此不再赘述。
1102、第二计算设备的网卡获取数据处理请求内的第一执行信息。
本步骤与步骤502类似,故在此不再赘述。
1103、第二计算设备的网卡将第一执行信息转换为第二执行信息。
本步骤与步骤503类似,故在此不再赘述。
1104、第二计算设备的网卡发送第二执行信息至第二计算设备的处理器调度引擎。
本步骤与步骤504类似,故在此不再赘述。
1105、第二计算设备的处理器调用引擎调用第二设备的第二处理器。
1106、第二计算设备的第二处理器根据第二执行信息从第三计算设备获取计算任务。
计算任务存储于主机(即第三计算设备)的存储器中,因而,第二计算设备的处理器在对计算任务进行处理前,需要跟第二执行消息中的第一存储地址从第三设备中获取计算任务。
1107、第二计算设备的第二处理器对计算任务进行处理。
当第二执行信息中包括第一存储地址而不包括上下文时,第二计算设备的处理器直接对计算任务进行处理。
当第二执行信息中包括第一存储地址、上下文和第二存储地址时,第二计算设备的处理器根据上下文对计算任务进行处理。
1108、第二计算设备的网卡接收执行结果。
第二计算设备的处理器执行代码后,生成执行结果,第二计算设备的网卡接收第二计算设备的处理器发送该执行结果。
1109、第二计算设备的网卡向第一计算设备发送执行结果。
以上步骤1102至步骤1107由第二计算设备中的各部件配合实现,请参阅图12,图12为本申请第二计算设备处理数据另一实施例的示意图。网卡解析数据处理请求,当数据处理请求的基本传输头为Excute时,网卡进一步从数据处理请求的扩展头获取第一执行信息。
若第一执行信息中不包括上下文,网卡将第一执行信息中的第一存储地址封装为第二执行信息,并将第二执行信息发送至处理器调度引擎,处理器调度引擎调用空闲的处理器执行第一存储地址对应的代码。
若第一执行信息中包括第一存储地址及上下文,网卡将一方面将上下文DMA到第二计算设备的内存中并获取上下文在内存中的第二存储地址,另一方面将第一存储地址和第二存储地址封装为第二执行信息。网卡将第二执行信息发送至处理器调度引擎,处理器调度引擎调用空闲的第二处理器根据第一存储地址从第三计算设备的存储器中获取代码,根据第二存储地址获取上下文,处理器根据上下文执行代码。
可见,网卡接收到数据处理请求后直接解析数据处理请求,获取数据处理请求内的第一执行信息,并将第一执行信息转换为第二执行信息发送给处理器调度引擎,通过处理器调度引擎直接调用第二处理器对待处理数据进行处理,无需将数据处理请求发送到计算设备的内存后,由OS调用处理器解析数据处理请求,从而避免通过OS调用第二处理器,提高执行的效率。
以上,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (15)
1.一种数据处理方法,由计算设备执行,所述计算设备包括网卡、处理器及处理器调度引擎,其特征在于,所述方法包括:
所述网卡接收数据处理请求,所述数据处理请求中包括待处理数据的第一执行信息;
所述网卡从所述数据处理请求中获取所述第一执行信息;
所述网卡将所述第一执行信息转换为第二执行信息;
所述网卡将所述第二执行信息发送至所述处理器调度引擎;
所述处理器调度引擎调用所述处理器处理所述第二执行信息;
所述处理器根据所述第二执行信息对所述待处理数据进行处理。
2.根据权利要求1所述的方法,其特征在于,所述待处理数据为待执行的代码,所述第一执行信息包括所述代码的第一存储地址;
所述处理器根据所述第二执行信息对所述待处理数据进行处理包括:
所述处理器根据所述第二执行信息中的所述第一存储地址获取所述代码;
所述处理器执行所述代码。
3.根据权利要求1所述的方法,其特征在于,所述待处理数据为待执行的代码,所述第一执行信息包括所述代码的第一存储地址和执行所述代码所需要的上下文,
所述网卡在从所述数据处理请求中获取所述第一执行信息后,将所述上下文存储至所述计算设备的内存;
所述第二执行信息包括所述第一存储地址与存储所述上下文的第二存储地址;
所述处理器根据所述第二执行信息对所述待处理数据进行处理包括:
所述处理器从所述第二执行信息中获取所述第一存储地址及所述第二存储地址,根据所述第一存储地址获取所述代码,根据所述第二存储地址获取所述上下文,根据所述上下文执行所述代码。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述数据处理请求携带于远程直接内存访问RDMA协议中的执行命令中。
5.根据权利要求4所述的方法,其特征在于,所述执行命令为在所述RDMA协议的传输层的自定义字段中定义的命令。
6.根据权利要求1-5任意一项所述的方法,其特征在于,所述计算设备包括与所述网卡连接的主机,所述主机包括所述处理器与所述处理器调度引擎。
7.根据权利要求2或3所述的方法,其特征在于,所述计算设备为数据处理单元DPU,所述计算设备连接至另一计算设备,所述待处理数据存储在所述另一计算设备中,所述处理器根据所述第一存储地址获取所述代码包括:
所述处理器根据所述第一存储地址从所述另一计算设备中获取所述代码。
8.一种网卡,其特征在于,包括第一处理器及存储设备,所述存储设备中存储程序指令,所述第一处理器运行所述程序指令以执行:
接收数据处理请求,所述数据处理请求中包括待处理数据的第一执行信息;
从所述数据处理请求中获取所述第一执行信息;
将所述第一执行信息转换为第二执行信息,并将所述第二执行信息发送至处理器调度引擎,所述第二执行信息用于指示所述处理器调度引擎调度第二处理器,使所述第二处理器根据所述第二执行信息对所述待处理数据进行处理。
9.根据权利要求8所述的网卡,其特征在于,所述数据处理请求携带于远程直接内存访问RDMA协议中的执行命令中,所述执行命令用于指示所述网卡对所述数据处理请求进行处理。
10.根据权利要求8所述的网卡,其特征在于,所述执行命令为在所述RDMA协议的传输层的自定义字段中定义的命令。
11.一种计算设备,其特征在于,包括权利要求8-10所述的网卡、第二处理器及处理器调度引擎;
所述处理器调度引擎用于,调用所述第二处理器处理所述第二执行信息;
所述第二处理器用于,根据所述第二执行信息对所述待处理数据进行处理。
12.根据权利要求11所述的计算设备,其特征在于,所述待处理数据为待执行的代码,所述第一执行信息包括所述代码的第一存储地址;
所述第二处理器具体用于,根据所述第二执行信息中的所述第一存储地址获取所述代码,并执行所述代码。
13.根据权利要求12所述的计算设备,其特征在于,所述待处理数据为待执行的代码,所述第一执行信息包括所述代码的第一存储地址和执行所述代码所需要的上下文;
所述网卡在从所述数据处理请求中获取所述第一执行信息后,还用于将所述上下文存储至所述计算设备的内存;
所述第二执行信息包括所述第一存储地址与存储所述上下文的第二存储地址;
所述第二处理器具体用于,从所述第二执行信息中获取所述第一存储地址及所述第二存储地址,根据所述第一存储地址获取所述代码,根据所述第二存储地址获取所述上下文,根据所述上下文执行所述代码。
14.根据权利要求11或12所述的计算设备,其特征在于,所述计算设备包括与所述网卡连接的主机,所述主机包括所述第二处理器与所述处理器调度引擎。
15.根据权利要求13所述的计算设备,其特征在于,所述计算设备为数据处理器DPU,所述计算设备连接至另一计算设备,所述待处理数据存储在所述另一计算设备中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111320330.5A CN116107954A (zh) | 2021-11-09 | 2021-11-09 | 一种数据处理方法以及相关设备 |
PCT/CN2022/095908 WO2023082609A1 (zh) | 2021-11-09 | 2022-05-30 | 一种数据处理方法以及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111320330.5A CN116107954A (zh) | 2021-11-09 | 2021-11-09 | 一种数据处理方法以及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116107954A true CN116107954A (zh) | 2023-05-12 |
Family
ID=86264272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111320330.5A Pending CN116107954A (zh) | 2021-11-09 | 2021-11-09 | 一种数据处理方法以及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116107954A (zh) |
WO (1) | WO2023082609A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107690622B9 (zh) * | 2016-08-26 | 2020-09-22 | 华为技术有限公司 | 实现硬件加速处理的方法、设备和*** |
US11144226B2 (en) * | 2019-04-11 | 2021-10-12 | Samsung Electronics Co., Ltd. | Intelligent path selection and load balancing |
CN113312092A (zh) * | 2020-07-27 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 启动方法、***以及装置 |
CN113296718B (zh) * | 2021-07-27 | 2022-01-04 | 阿里云计算有限公司 | 数据处理方法以及装置 |
-
2021
- 2021-11-09 CN CN202111320330.5A patent/CN116107954A/zh active Pending
-
2022
- 2022-05-30 WO PCT/CN2022/095908 patent/WO2023082609A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2023082609A1 (zh) | 2023-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7269171B2 (en) | Multi-data receive processing according to a data communication protocol | |
EP1086421B1 (en) | Method and computer program product for offloading processing tasks from software to hardware | |
US9703595B2 (en) | Multi-core system with central transaction control | |
US7219121B2 (en) | Symmetrical multiprocessing in multiprocessor systems | |
WO2021042840A1 (zh) | 数据处理方法、装置、服务器和计算机可读存储介质 | |
US11860796B2 (en) | Execution space agnostic device drivers | |
US8701129B2 (en) | Web API server program, web API publication method | |
US11016769B1 (en) | Method and apparatus for processing information | |
WO2020151449A1 (zh) | 基于quic协议栈的数据处理方法、***、设备及存储介质 | |
WO2020248383A1 (zh) | 基于跨平台的数据处理方法、装置及计算机设备 | |
CN107977260B (zh) | 任务提交方法及装置 | |
CN114205183A (zh) | 基于实时操作***的at指令协议栈的通信方法及*** | |
CN111475314B (zh) | 一种网络请求的处理方法、装置、设备及存储介质 | |
CN111770043B (zh) | 游戏数据通信方法、装置、存储介质及电子设备 | |
CN107040539B (zh) | 一种协议数据包构建方法、装置及计算机*** | |
CN114584618A (zh) | 信息交互方法、装置、设备、存储介质和*** | |
CN110245027B (zh) | 一种进程间通信的方法和设备 | |
US10664418B2 (en) | Peripheral device controlling device, operation method thereof, and operation method of peripheral device controlling device driver | |
US20230153153A1 (en) | Task processing method and apparatus | |
CN111212097A (zh) | 机器人访问服务器的方法、设备及存储介质 | |
CN116107954A (zh) | 一种数据处理方法以及相关设备 | |
CN113992644B (zh) | 一种基于无服务技术的物联网关***及其数据处理方法 | |
CN115686663A (zh) | 在线文件预览方法、装置及计算机设备 | |
CN114666322A (zh) | 断点续传方法、装置和电子设备 | |
CN113849449A (zh) | 一种通信***和信息交互方法、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |