CN117749739B - 数据发送方法、数据接收方法、装置、设备及存储介质 - Google Patents

数据发送方法、数据接收方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN117749739B
CN117749739B CN202410179255.2A CN202410179255A CN117749739B CN 117749739 B CN117749739 B CN 117749739B CN 202410179255 A CN202410179255 A CN 202410179255A CN 117749739 B CN117749739 B CN 117749739B
Authority
CN
China
Prior art keywords
data
server
hardware queue
network card
intelligent network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202410179255.2A
Other languages
English (en)
Other versions
CN117749739A (zh
Inventor
范文韬
张昊中
张扬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Volcano Engine Technology Co Ltd
Original Assignee
Beijing Volcano Engine Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Volcano Engine Technology Co Ltd filed Critical Beijing Volcano Engine Technology Co Ltd
Priority to CN202410179255.2A priority Critical patent/CN117749739B/zh
Publication of CN117749739A publication Critical patent/CN117749739A/zh
Application granted granted Critical
Publication of CN117749739B publication Critical patent/CN117749739B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本公开实施例提供一种数据发送方法、数据接收方法、装置、设备及存储介质,通过接收服务器通过高速总线发送的至少两个数据发送请求,数据发送请求用于请求智能网卡将存储于服务器一侧的报文数据发送至外部设备;针对每一数据发送请求,确定对应的目标硬件队列,其中,硬件队列用于通过高速总线与服务器通信,各数据发送请求对应的目标硬件队列分布于至少两个硬件队列组内,硬件队列组与高速总线一一对应;由各目标硬件队列通过对应的至少两条高速总线同时与服务器通信,获得对应的报文数据,并发送至外部设备。通过目标硬件队列来实现至少高速总线的同步数据传输,充分利用智能网卡的带宽资源,提高智能网卡与服务器之间的数据传输效率。

Description

数据发送方法、数据接收方法、装置、设备及存储介质
技术领域
本公开实施例涉及虚拟机技术领域,尤其涉及一种数据发送方法、数据接收方法、装置、设备及存储介质。
背景技术
虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,虚拟机是基于物理服务器(Host)的资源而创建的,因此,虚拟机的性能直接受到物理服务器的性能影响。
当前,为了进一步提高虚拟机的性能,现有技术中,通过高速总线为物理服务器挂载内置数据处理器(Data Processing Unit,DPU)的智能网卡,将数据通信的处理步骤卸载到智能网卡内执行,以释放物理服务器的计算资源。
然而,现有技术中的方案中,存在智能网卡与服务器之间数据传输效率低的问题,影响智能网卡的数据传输性能。
发明内容
本公开实施例提供一种数据发送方法、数据接收方法、装置、设备及存储介质,以克服智能网卡与服务器之间数据传输效率低的问题。
第一方面,本公开实施例提供一种数据发送方法,应用于智能网卡,所述智能网卡具有至少两条高速总线的总线端口,所述智能网卡通过所述高速总线与服务器通信,所述方法包括:
接收所述服务器通过所述高速总线发送的至少两个数据发送请求,所述数据发送请求用于请求所述智能网卡将存储于所述服务器一侧的报文数据发送至外部设备;针对每一所述数据发送请求,确定对应的目标硬件队列,其中,硬件队列用于通过所述高速总线与所述服务器通信,各所述数据发送请求对应的目标硬件队列分布于至少两个硬件队列组内,所述硬件队列组与所述高速总线一一对应;由各所述目标硬件队列通过对应的至少两条高速总线同时与所述服务器通信,获得对应的报文数据,并将所述报文数据发送至所述外部设备。
第二方面,本公开实施例提供一种数据接收方法,应用于智能网卡,所述智能网卡具有至少两条高速总线的总线端口,所述智能网卡通过所述高速总线与服务器通信,所述方法包括:
接收外部设备通过网络端口发送的至少两个数据接收请求,所述数据接收请求用于请求所述智能网卡将所述外部设备发送的报文数据存储至所述服务器;针对每一所述数据接收请求,确定对应的目标硬件队列,其中,硬件队列用于通过所述高速总线与所述服务器通信,各所述数据接收请求对应的目标硬件队列分布于至少两个硬件队列组内,所述硬件队列组与所述高速总线一一对应;由各所述目标硬件队列通过对应的至少两条高速总线同时与所述服务器通信,以将所述报文数据发送至所述服务器。
第三方面,本公开实施例提供一种数据发送装置,应用于智能网卡,所述智能网卡具有至少两条高速总线的总线端口,所述智能网卡通过所述高速总线与服务器通信,包括:
收发模块,用于接收所述服务器通过所述高速总线发送的至少两个数据发送请求,所述数据发送请求用于请求所述智能网卡将存储于所述服务器一侧的报文数据发送至外部设备;
队列模块,用于针对每一所述数据发送请求,确定对应的目标硬件队列,其中,硬件队列用于通过所述高速总线与所述服务器通信,各所述数据发送请求对应的目标硬件队列分布于至少两个硬件队列组内,所述硬件队列组与所述高速总线一一对应;
通信模块,用于由各所述目标硬件队列通过对应的至少两条高速总线同时与所述服务器通信,获得对应的报文数据,并将所述报文数据发送至所述外部设备。
第四方面,本公开实施例提供一种数据接收装置,应用于智能网卡,所述智能网卡具有至少两条高速总线的总线端口,所述智能网卡通过所述高速总线与服务器通信,包括:
通信模块,用于接收外部设备通过网络端口发送的至少两个数据接收请求,所述数据接收请求用于请求所述智能网卡将所述外部设备发送的报文数据存储至所述服务器;
队列模块,用于针对每一所述数据接收请求,确定对应的目标硬件队列,其中,硬件队列用于通过所述高速总线与所述服务器通信,各所述数据接收请求对应的目标硬件队列分布于至少两个硬件队列组内,所述硬件队列组与所述高速总线一一对应;
收发模块,用于由各所述目标硬件队列通过对应的至少两条高速总线同时与所述服务器通信,以将所述报文数据发送至所述服务器。
第五方面,本公开实施例提供一种电子设备,包括:处理器和存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的数据发送方法,或者,执行如上第二方面以及第二方面各种可能的设计所述的数据接收方法。
第六方面,本公开实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的数据发送方法,或者,实现如上第二方面以及第二方面各种可能的设计所述的数据接收方法。
第七方面,本公开实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上第一方面以及第一方面各种可能的设计所述的数据发送方法,或者,实现如上第二方面以及第二方面各种可能的设计所述的数据接收方法。
本实施例提供的数据发送方法、数据接收方法、装置、设备及存储介质,通过接收所述服务器通过所述高速总线发送的至少两个数据发送请求,所述数据发送请求用于请求所述智能网卡将存储于所述服务器一侧的报文数据发送至外部设备;针对每一所述数据发送请求,确定对应的目标硬件队列,其中,硬件队列用于通过所述高速总线与所述服务器通信,各所述数据发送请求对应的目标硬件队列分布于至少两个硬件队列组内,所述硬件队列组与所述高速总线一一对应;由各所述目标硬件队列通过对应的至少两条高速总线同时与所述服务器通信,获得对应的报文数据,并将所述报文数据发送至所述外部设备。通过确定数据发送请求所对应的、分布于不同硬件队列组的目标硬件队列,并通过目标硬件队列来实现至少高速总线的同步数据传输,从而充分利用智能网卡的带宽资源,提高智能网卡与服务器之间的数据传输效率,提高智能网卡的数据传输性能。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的数据发送方法的一种应用场景图;
图2为本公开实施例提供的数据发送方法的流程示意图一;
图3为本公开实施例提供的一种智能网卡与服务器的连接关系示意图;
图4为本公开实施例提供的一种硬件队列的示意图;
图5为本公开实施例提供的数据发送方法的流程示意图二;
图6为本公开实施例提供的一种智能网卡的结构示意图;
图7为步骤S200的一种具体实现方式的流程图;
图8为本公开实施例提供的数据接收方法的流程示意图一;
图9为图8所示实施例中步骤S302的具体实现方式的流程图;
图10为本公开实施例提供的数据发送装置的结构框图;
图11为本公开实施例提供的数据接收装置的结构框图;
图12为本公开实施例提供的一种电子设备的结构示意图;
图13为本公开实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
下面对本公开实施例的应用场景进行解释:
图1为本公开实施例提供的数据发送方法的一种应用场景图,本公开实施例提供的数据发送方法,可以应用于基于数据处理单元(Data Processing Unit,DPU)与虚拟机服务器之间的数据通信场景中,其中,数据处理单元可以为智能网卡,其挂载在虚拟机服务器上,用于处理虚拟机服务器与外部设备(例如其他网卡)的网络通信数据,从而降低虚拟机服务器的计算负载。在该过程中,智能网卡与服务器之间通过高速总线连接并传输数据,当智能网卡作为弹性网卡与虚拟机服务器连接时,一个智能网卡通过高速总线与虚拟机服务器内的一个或多个中央处理器(CPU)通信,例如图中所示,智能网卡DPU_1通过高速总线#1与虚拟机服务器通信,来传输虚拟机服务器内的中央处理器CPU_1、中央处理器CPU_2的报文数据。此种情况下,由于智能网卡从虚拟机服务器上接收或向虚拟机服务器发送的流量均基于该对应总线实现,因此,智能网卡的数据传输带宽也直接受到该高速总线的带宽限制。
然而,在一些相关技术中,一些高规格的智能网卡提供了多个高速总线接口,例如还包括图中所示的高速总线#2,在挂载到服务器上对应的中央处理器下的高速总线通道后,理论上可以达到更高的网络带宽,然而,现有技术中的方案中,由于对智能网卡采用了固定配置策略,致使智能网卡在与虚拟机服务器进行通信时,只能利用一个高速总线(例如仅通过高速总线#1)进行数据传输,从而导致了智能网卡的出口带宽的带宽上限受限限制,影响智能网卡与虚拟机服务器之间的数据传输效率。
本公开实施例提供一种数据发送方法、数据接收方法以解决上述问题。
参考图2,图2为本公开实施例提供的数据发送方法的流程示意图一,对应虚拟机服务器(以下简称服务器)通过智能网卡向外部设备发送数据的过程,本实施例的方法可以应用在智能网卡中,其中,智能网卡具有至少两条高速总线的总线端口,智能网卡通过高速总线与服务器通信,该数据发送方法包括:
步骤S101:接收服务器通过高速总线发送的至少两个数据发送请求,数据发送请求用于请求智能网卡将存储于服务器一侧的报文数据发送至外部设备。
示例性地,图3为本公开实施例提供的一种智能网卡与服务器的连接关系示意图,如图3所示,智能网卡具有两个高速总线的总线端口,例如图中所示,分别为总线端口#1和总线端口#2,智能网卡通过上述总线端口#1和总线端口#2与服务器建立高速总线连接,其中,高速总线例如为PCIe(peripheral component interconnect express),相应的,智能网卡与服务器之间,通过PCIe_1和PCIe_2两条高速总线连接,服务器内设置有CPU_1等一个或多个中央处理器。另一方面,智能网卡还具有网络端口,具体地,该网络端口例如为光模块端口,智能网卡通过网络端口与其他设备通信,例如与其他服务器上挂载的外部设备通信,其中,外部设备可以为与其他服务器连接的交换机,或者其他服务器上安装的智能网卡,从而实现当前的服务器与其他服务器之间的数据通信。
参考上述智能网卡的结构示意图,该智能网卡具有至少两个高速总线的总线端口,因此可以通过至少两条高速总线与服务器进行通信,针对具备此类特征的智能网卡,在通过智能网卡向外部设备发送数据时,首先,智能网卡会接收到服务器通过高速总线发送的数据发送请求,用于请求智能网卡将存储于服务器一侧的报文数据发送至外部设备。在一种可能的实现方式中,服务器向智能网卡发送数据发送请求时所使用的高速总线是固定的,即智能网卡所对应的目标高速总线,示例性地,该目标高速总线(的总线标识),可以基于智能网卡的网卡标识确定,确定目标高速总线的总线标识步骤,可以由服务器在检测到智能网卡安装后执行,另一方面,智能网卡在安装至服务器后,基于其所插入的服务器一侧的总线端口的端口标识,确定得到对应的目标高速总线,并基于该目标高速总线来获得服务器向其发送的数据发送请求。
步骤S102:针对每一数据发送请求,确定对应的目标硬件队列,其中,硬件队列用于通过高速总线与服务器通信,各数据发送请求对应的目标硬件队列分布于至少两个硬件队列组内,硬件队列组与高速总线一一对应。
步骤S103:由各目标硬件队列通过对应的至少两条高速总线同时与服务器通信,获得对应的报文数据,并将报文数据发送至外部设备。
进一步地,该报文数据存储于服务器一侧,当智能网卡接收到该数据发送请求后,智能网卡对该数据发送请求进行响应,来从服务器获取上述报文数据,并对其进行处理后,发送至外部设备。具体地,首先,智能网卡在通过高速总线从服务器获取数据或向服务器发送时,利用智能网卡内设置的硬件队列实现,其中,硬件队列是一种由智能网卡提供的用于执行数据传输任务的队列结构,其具体实现形式与智能网卡的具有硬件设计相关,本实施例中不对此展开介绍。
进一步地,每一高速总线对应一组硬件队列,即硬件队列组,每一硬件队列组中包含有数量相同(或者不相同)的硬件队列,智能网卡在接收到数据发送请求后,根据数据发送请求中的内容,确定用于处理对应报文数据的目标硬件队列,并由该目标硬件队列执行对应的数据请求任务,以通过对应的高速总线来从服务器一侧获取报文数据。
图4为本公开实施例提供的一种硬件队列的示意图,如图4所示,示例性地,智能网络具有两个高速总线的总线端口,分别对应高速总线PCIe_0和高速总线PCIe_1,通过该高速总线PCIe_0和高速总线PCIe_1与服务器通信。在此基础上,每一总线对应一个硬件队列组,即高速总线PCIe_0对应硬件队列组A、高速总线PCIe_1对应硬件队列组B,而硬件队列组A和硬件队列组B中,分别包含有32个用于执行数据通信任务的硬件队列。当智能网卡接收到服务器发送的至少两个数据发送请求,例如数据发送请求R1和数据发送请求R2,该数据发送请求R1和数据发送请求R2可以是智能网卡先后接收到或同时接收到的;之后,智能网卡将数据发送请求R1映射至硬件队列组A中的某一硬件队列,例如图中所示的queue_1、将数据发送请求R2映射至硬件队列组B中的某一硬件队列,例如图中所示的queue_2,在之后,分别由queue_1通过高速总线PCIe_0从服务器获取报文数据#1、分别由queue_2通过高速总线PCIe_1从服务器获取报文数据#2,上述过程可以异步执行,相互不干扰,因此,可以使智能网卡实现同时通过高速总线PCIe_0和高速总线PCIe_1来从服务器获取数据的目的,即实现了同时利用多个高速总线的数据带宽、提高具有多个高速总线端口的智能网卡的数据传输性能的目的。
再之后,将上述步骤中获得的报文数据,例如报文数据#1和报文数据#2,通过智能网卡的网络端口向外部设备发送,使外部设备接收到报文数据,完成从服务器至外部设备的数据发送过程,其中,外部设备可以是与本实施例中提及的智能网卡类似,挂载或内置在其他服务器上的智能网卡,也可以是具有数据转发功能的其他电子设备,此处不做限制。
本实施例中,通过接收服务器通过高速总线发送的至少两个数据发送请求,数据发送请求用于请求智能网卡将存储于服务器一侧的报文数据发送至外部设备;针对每一数据发送请求,确定对应的目标硬件队列,其中,硬件队列用于通过高速总线与服务器通信,各数据发送请求对应的目标硬件队列分布于至少两个硬件队列组内,硬件队列组与高速总线一一对应;由各目标硬件队列通过对应的至少两条高速总线同时与服务器通信,获得对应的报文数据,并将报文数据发送至外部设备。通过确定数据发送请求所对应的、分布于不同硬件队列组的目标硬件队列,并通过目标硬件队列来实现至少高速总线的同步数据传输,从而充分利用智能网卡的带宽资源,提高智能网卡与服务器之间的数据传输效率,提高智能网卡的数据传输性能。
参考图5,图5为本公开实施例提供的数据发送方法的流程示意图二。本实施例在图2所示实施例的基础上,进一步对步骤S102-S103进行细化,并增加了对智能网卡进行配置的步骤,示例性地,智能网卡内设置有现场可编辑门阵列芯片,现场可编辑门阵列芯片与高速总线连接,并提供与高速总线一一对应的硬件队列组,该数据发送方法包括:
步骤S201:接收服务器通过高速总线发送的至少两个数据发送请求,数据发送请求中包括报文数据对应的数据标识和目标高速总线的总线标识。
步骤S202:获取现场可编辑门阵列芯片的第一配置信息,第一配置信息用于表征与现场可编辑门阵列芯片连接的高速总线的总线标识和数据标识构成的数据对与目标硬件队列之间的映射关系。
步骤S203:根据第一配置信息处理,以及数据发送请求中的数据标识和目标高速总线的总线标识,得到目标硬件队列。
示例性地,首先,智能网卡接收服务器发送的数据发送请求后,对该数据发送请求进行识别,获得数据发送请求中的数据标识和总线标识,其中,数据标识是针对待发送的报文数据的描述信息,该数据标识可以是预先定义的标识,智能网卡通过该数据标识,可以实现对待发送的报文数据的定位,例如确定待发送的报文数据在服务器内存中的地址,而总线标识是用于针对智能网卡所使用的高速总线的总线端口的描述信息,即用于指示智能网卡插在服务器的哪个高速总线端口上的信息。智能网卡在通过数据发送请求获得上述信息后,通过上述信息进行映射,而确定对应的目标硬件队列。
进一步地,一种可能的实现方式中,智能网卡内设置有现场可编辑门阵列(FieldProgrammable Gate Array ,FPGA)芯片,该现场可编辑门阵列芯片具有两个及以上的高速总线端口,能够同时使用两个及以上的高速总线(例如PCIe)与服务器通信,可编辑门阵列芯片可以提供与高速总线对应的硬件队列(Front end queue,FEQ)。该现场可编辑门阵列芯片经配置后,具有第一配置信息,该第一配置信息用于表征与现场可编辑门阵列芯片连接的高速总线的总线标识和数据标识构成的数据对与目标硬件队列之间的映射关系,具体地,即:
其中,Tag_1表征高速总线的总线标识,data表征报文数据的数据标识;queue即对应的目标硬件队列。具体实现上,由现场可编辑门阵列芯片接收数据发送请求,并基于上述第一配置信息对数据发送请求进行处理后,确定一个目标硬件队列,之后,再由现场可编辑门阵列芯片通过目标硬件队列来获取对应的报文数据。
步骤S204:通过现场可编辑门阵列芯片响应数据发送请求,生成数据请求任务,并将数据请求任务顺序写入数据发送请求对应的目标硬件队列中。
步骤S205:由现场可编辑门阵列芯片的各目标硬件队列分别异步执行队列内的数据请求任务,以通过至少两个高速总线同时对服务器内存进行直接内存访问,得到数据请求任务对应的报文数据。
示例性地,另一方面,现场可编辑门阵列芯片根据数据发送请求,生成对应的数据请求任务,该数据请求任务在执行后用于从服务器一侧获取报文数据,具体地,例如,对服务器内存进行直接内存访问(Direct Memory Access ,DMA)来获取报文数据。其中,现场可编辑门阵列芯片在基于数据发送请求,生成对应的数据请求任务后,根据上述步骤中所确定的目标硬件队列(的队列标识),将该数据请求任务写入该目标硬件队列中进行执行,由于现场可编辑门阵列芯片获取数据发送请求并生成对应的数据请求任务的耗时相对较短,而执行数据请求任务的耗时较长,因此通常情况下数据请求任务会通过目标硬件队列排队执行,同时,由于目标硬件队列分属于至少两个硬件队列组、对应至少两个高速总线,因此,至少可以同时通过两个高速总线来并行传输数据,也即,通过至少两个高速总线同时对服务器内存进行直接内存访问,从而获得数据请求任务对应的报文数据,到达提高总线带宽的利用率的目的。
步骤S206:通过现场可编辑门阵列芯片的网络端口,将报文数据发送至外部设备。
示例性地,在通过现场可编辑门阵列芯片获得报文数据后,进一步地,可以通过现场可编辑门阵列芯片的网络端口,将报文数据转发至同样具有该网络端口的外部设备,从而实现报文数据的转发,针对外部设备,在之前实施例中已经进行介绍,此处不再赘述。
可选地,上述第一配置信息等信息,是预先配置在智能网卡内的,因此,为实现上述步骤,在步骤S201之前还包括对智能网卡进行配置的步骤,示例性地,智能网卡还包括与现场可编辑门阵列芯片连接的控制芯片,在步骤S201之前,还包括:
步骤S200:通过控制芯片对现场可编辑门阵列芯片进行初始化,以配置现场可编辑门阵列芯片所对应的至少两个硬件队列组内的硬件队列。
图6为本公开实施例提供的一种智能网卡的结构示意图,如图6所示,智能网卡包括现场可编辑门阵列(FPGA)芯片和与其连接的控制芯片,其中,控制芯片可以为系统级芯片(System on Chip,SOC),现场可编辑门阵列芯片与控制芯片之间可以通过高速总线接口(PCIe)连接,更具体地,其中,例如,FPGA芯片中包括多个硬件通道、高速总线接口(PCIe)和网络接口,此外,FPGA芯片还提供多个模块,包括起到解析、处理、发送和接收数据等作用的模块。在SoC芯片上,包含了起到设备模拟、网络数据处理、存储数据处理等功能的单元。此外,对接数据中心(服务器)的管控、DPU(智能网卡)整体监控、服务器BMC管理等功能,也都通过SoC芯片进行处理。
进一步地,在智能网卡的初始化阶段,控制芯片对现场可编辑门阵列芯片进行配置,例如上述实施例步骤中的第一配置信息,以及配置现场可编辑门阵列芯片所提供的硬件队列组内的硬件队列的排列、分布,从而使现场可编辑门阵列芯片在响应数据发送请求时,能够将其所对应的数据请求任务能够均衡的写入对应的目标硬件队列内,即提高所确定的目标硬件队列的合理性,实现多个高速总线间的负载均衡。
示例性地,如图7所示,步骤S200的具体实现方式包括:
步骤S2001:根据高速总线的第一数量和硬件队列的总队列数,得到硬件队列组的组容量。
步骤S2002:基于硬件队列组的组容量,将现场可编辑门阵列芯片的所有硬件队列均衡分配至第一数量的硬件队列组内,得到现场可编辑门阵列对应的配置后硬件队列组。
示例性地,由现场可编辑门阵列芯片所提供的高速总线是固定的,一种可能的实现方式中,现场可编辑门阵列芯片提供固定数量的硬件队列数,即总队列数;之后,现场可编辑门阵列芯片具有两个以上的高速总线的总线端口,即对应至少两个高速总线,现场可编辑门阵列芯片基于高速总线的第一数量,即第一数量,和总队列数,确定每一高速总线所对应的硬件队列数量,即硬件队列组的组容量。例如,总队列数为128,高速总线的数量为2,则对应硬件队列组的组容量为64。之后,基于该组容量,将每一硬件队列均衡分配至第一数量的硬件队列组内,得到现场可编辑门阵列芯片对应的配置后硬件队列组,例如,现场可编辑门阵列芯片提供的全部硬件队列的队列标识的集合为[0,1,2,3,......,127],高速总线的数量为2(第一数量),则对应硬件队列组的数量为2,每一硬件队列组的组容量为64,则硬件队列均衡分配至两个的硬件队列组内,得到第一个硬件队列组为[0,2,4,6……,126],第二个硬件队列组为[1,3,5,7……,127]。之后,基于上述两个硬件队列组,生成对应的第一配置信息。
更具体地,为了突破单PCIe物理带宽的限制,支持智能网卡会将自身的队列分成两部分进行配置。以32个逻辑队列的智能网卡为了,将第0,2,4,...,30个逻辑队列分为第一组,第1,3,5,...,31个队列分为第二组。第一组队列的配置,使用设备所在PCIe下的FPGA的硬件队列;第二组队列的配置,使用FPGA上另一个PCIe连接下的硬件队列。为了通过PCIeRoot Complex对请求ID的验证,第二组队列需要被配置PCIe_1(即第一组队列对应的PCIe)下的设备ID作为请求ID,用于在给服务器发送DMA请求时使用。
本实施例步骤中,通过在初始化阶段,配置现场可编辑门阵列的硬件队列,来实现后续数据传输过程中的负载均衡,从而提高多个高速总线并行传输数据时的综合效率。
可选地,步骤S200还包括:
步骤S2003:通过控制芯片配置现场可编辑门阵列芯片对应的硬件队列组的带宽限速;和/或,与硬件队列组分别对应的目标高速总线。
示例性地,在上述步骤的基础上,控制芯片可以进一步对现场可编辑门阵列芯片对应的硬件队列组的带宽限速进行配置,该过程可以发生在初始化阶段或者初始化之后的其他阶段,此处不做限制,其中,由于硬件队列组与高速总线一一对应,因此该带宽限速也即针对高速总线的限制,更具体地,例如,限制每一硬件队列组对应的带宽限速为80Gbps,若现场可编辑门阵列芯片提供两个硬件队列组,即与两个高速总线连接,则智能网卡所能提供的最大带宽为160Gbps。
示例性地,控制芯片还可以进一步对现场可编辑门阵列芯片对应的硬件队列组分别对应的目标高速总线进行配置,从而使硬件队列组内的硬件队列,可以映射至任一由控制芯片所配置的高速总线上,提高智能网卡使用过程中的灵活性和可扩展性,该过程可以发生在初始化阶段或者初始化之后的其他阶段,此处不做限制。
本实施例中,步骤S201的实现方式与本公开图2所示实施例中的步骤S101的实现方式相同,在此不再一一赘述。
图8为本公开实施例提供的数据接收方法的流程示意图一,对应外部设备通过智能网卡向服务器发送数据的过程,本实施例的方法可以应用在智能网卡中,其中,智能网卡具有至少两条高速总线的总线端口,智能网卡通过高速总线与服务器通信,该数据发送方法包括:
步骤S301:接收外部设备通过网络端口发送的至少两个数据接收请求,数据接收请求用于请求智能网卡将外部设备发送的报文数据存储至服务器。
步骤S302:针对每一数据接收请求,确定对应的目标硬件队列,其中,硬件队列用于通过高速总线与服务器通信,各数据接收请求对应的目标硬件队列分布于至少两个硬件队列组内,硬件队列组与高速总线一一对应。
步骤S303:由各目标硬件队列通过对应的至少两条高速总线同时与服务器通信,以将报文数据发送至服务器。
示例性地,参考图2-图7所示的服务器通过智能网卡向外部设备发送报文数据的过程中的数据发送方法,本实施例提供的数据接收方法,相当于上述数据发送方法所对应的数据逆向传输方案,在报文数据传输从外部设备传输至服务器的过程中,仍需要利用目标硬件队列来实现两条高速总线同时与服务器通信的目的,其中,硬件队列、硬件队列组的相关概念,与图2-图7所示实施例中的对应概念一致,此处不再重复介绍。
进一步地,本实施例所提供的数据接收方法,可以发生在图2-图7所示实施例提供的数据发送方法之前或之后,此处不做限制。为更清楚的说明本实施例的方案,下面以在图2-图7所示实施例提供的数据发送方法执行完毕后执行本实施例提供的数据接收方法的情况为例,对本实施例提供的数据接收方法进行介绍。
示例性地,智能网卡在接收到外部设备发送的数据接收请求后,对该数据进行处理,而确定对应的目标硬件队列,进一步地,在一种可能的实现方式中,智能网卡内设置有现场可编辑门阵列芯片和控制芯片,现场可编辑门阵列芯片与高速总线和网络端口连接,并提供与高速总线一一对应的硬件队列组,数据接收请求中包括报文数据对应的数据标识和网络端口的端口标识,如图9所示,步骤S302的具体实现方式包括:
步骤S3021:获取现场可编辑门阵列芯片的第二配置信息,第二配置信息用于表征与现场可编辑门阵列芯片连接的网络端口的端口标识和数据标识构成的数据对与目标硬件队列之间的映射关系。
步骤S3022:根据第二配置信息处理,以及数据接收请求中的数据标识和网络端口的端口标识,得到目标硬件队列。
示例性地,其中,第二配置信息与之前实施例中的第一配置信息类似,可以是在智能网卡的初始化阶段,由控制芯片对现场可编辑门阵列芯片进行配置后生成的,第二配置信息用于表征与现场可编辑门阵列芯片连接的网络端口的端口标识和数据标识构成的数据对与目标硬件队列之间的映射关系,即:
其中,Tag_2表征网络端口的端口标识,data表征报文数据的数据标识或者报文数据本身;queue即对应的目标硬件队列。具体实现上,由现场可编辑门阵列芯片接收数据接收请求,并基于上述第二配置信息对数据接收请求进行处理后,确定一个目标硬件队列。
之后,再由现场可编辑门阵列芯片通过目标硬件队列来向服务器发送对应的报文数据,具体地,可编辑门阵列芯片利用目标硬件队列,通过对应的至少两条高速总线同时与服务器通信,以将报文数据存储至服务器的缓冲区,实现通过多条高速总线同时传输数据的目的,提高向服务器发送报文数据时的数据发送效率。其中,第二配置信息的具体生成过程可参考第一配置信息的生成过程,此处不再重复介绍。
可选地,本实施例中还包括:
通过现场可编辑门阵列芯片响应数据接收请求,生成数据接收任务,并将数据接收任务顺序写入数据接收请求对应的目标硬件队列中;
可选地,由各目标硬件队列通过对应的至少两条高速总线同时与服务器通信,以将报文数据发送至服务器,包括:由现场可编辑门阵列芯片的各目标硬件队列分别异步执行队列内的数据接收任务,以通过至少两个高速总线同时向服务器的报文缓冲区写入报文数据。
可选地,智能网卡还包括与现场可编辑门阵列芯片连接的控制芯片;方法还包括:通过控制芯片对现场可编辑门阵列芯片进行初始化,以配置现场可编辑门阵列芯片所对应的至少两个硬件队列组内的硬件队列。
可选地,通过控制芯片对现场可编辑门阵列芯片进行初始化,以配置现场可编辑门阵列芯片所对应的至少两个硬件队列组内的硬件队列,包括:根据高速总线的第一数量和硬件队列的总队列数,得到硬件队列组的组容量;基于硬件队列组的组容量,将现场可编辑门阵列芯片的所有硬件队列均衡分配至第一数量的硬件队列组内,得到现场可编辑门阵列对应的配置后硬件队列组。
可选地,方法还包括:通过控制芯片配置现场可编辑门阵列芯片对应的硬件队列组的带宽限速;和/或,与硬件队列组分别对应的目标高速总线。
对应于上文实施例的数据发送方法,图10为本公开实施例提供的数据发送装置的结构框图。为了便于说明,仅示出了与本公开实施例相关的部分。参照图10,示例性地,数据发送装置3应用于智能网卡,智能网卡具有至少两条高速总线的总线端口,智能网卡通过高速总线与服务器通信,数据发送装置3,包括:
收发模块31,用于接收服务器通过高速总线发送的至少两个数据发送请求,数据发送请求用于请求智能网卡将存储于服务器一侧的报文数据发送至外部设备;
队列模块32,用于针对每一数据发送请求,确定对应的目标硬件队列,其中,硬件队列用于通过高速总线与服务器通信,各数据发送请求对应的目标硬件队列分布于至少两个硬件队列组内,硬件队列组与高速总线一一对应;
通信模块33,用于由各目标硬件队列通过对应的至少两条高速总线同时与服务器通信,获得对应的报文数据,并将报文数据发送至外部设备。
根据本公开的一个或多个实施例,智能网卡内设置有现场可编辑门阵列芯片,现场可编辑门阵列芯片与高速总线连接,并提供与高速总线一一对应的硬件队列组,数据发送请求中包括报文数据对应的数据标识和目标高速总线的总线标识;队列模块32,具体用于:获取现场可编辑门阵列芯片的第一配置信息,第一配置信息用于表征与现场可编辑门阵列芯片连接的高速总线的总线标识和数据标识构成的数据对与目标硬件队列之间的映射关系;根据第一配置信息处理,以及数据发送请求中的数据标识和目标高速总线的总线标识,得到目标硬件队列。
根据本公开的一个或多个实施例,队列模块32,还用于:通过现场可编辑门阵列芯片响应数据发送请求,生成数据请求任务,并将数据请求任务顺序写入数据发送请求对应的目标硬件队列中;通信模块33,具体用于:由现场可编辑门阵列芯片的各目标硬件队列分别异步执行队列内的数据请求任务,以通过至少两个高速总线同时对服务器内存进行直接内存访问,得到数据请求任务对应的报文数据。
根据本公开的一个或多个实施例,智能网卡还包括与现场可编辑门阵列芯片连接的控制芯片;队列模块32,具体用于:通过控制芯片对现场可编辑门阵列芯片进行初始化,以配置现场可编辑门阵列芯片所对应的至少两个硬件队列组内的硬件队列。
根据本公开的一个或多个实施例,队列模块32在通过控制芯片对现场可编辑门阵列芯片进行初始化,以配置现场可编辑门阵列芯片所对应的至少两个硬件队列组内的硬件队列时,具体用于:根据高速总线的第一数量和硬件队列的总队列数,得到硬件队列组的组容量;基于硬件队列组的组容量,将现场可编辑门阵列芯片的所有硬件队列均衡分配至第一数量的硬件队列组内,得到现场可编辑门阵列对应的配置后硬件队列组。
根据本公开的一个或多个实施例,队列模块32,还用于:通过控制芯片配置现场可编辑门阵列芯片对应的硬件队列组的带宽限速;和/或,与硬件队列组分别对应的目标高速总线。
根据本公开的一个或多个实施例,收发模块31,还用于:根据智能网卡的端口标识,得到对应的目标高速总线;收发模块31在接收服务器通过高速总线发送的至少两个数据发送请求时,具体用于:接收服务器通过目标高速总线发送的至少两个数据发送请求。
其中,收发模块31、队列模块32和通信模块33依次连接。本实施例提供的数据发送装置3可以执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
对应于上文实施例的数据接收方法,图11为本公开实施例提供的数据接收装置的结构框图。为了便于说明,仅示出了与本公开实施例相关的部分。参照图11,示例性地,数据接收装置4应用于智能网卡,智能网卡具有至少两条高速总线的总线端口,智能网卡通过高速总线与服务器通信,数据接收装置4,包括:
收发模块41,用于接收外部设备通过网络端口发送的至少两个数据接收请求,数据接收请求用于请求智能网卡将外部设备发送的报文数据存储至服务器;
队列模块42,用于针对每一数据接收请求,确定对应的目标硬件队列,其中,硬件队列用于通过高速总线与服务器通信,各数据接收请求对应的目标硬件队列分布于至少两个硬件队列组内,硬件队列组与高速总线一一对应;
通信模块43,用于由各目标硬件队列通过对应的至少两条高速总线同时与服务器通信,以将报文数据发送至服务器。
根据本公开的一个或多个实施例,智能网卡内设置有现场可编辑门阵列芯片,现场可编辑门阵列芯片与高速总线和网络端口连接,并提供与高速总线一一对应的硬件队列组,数据接收请求中包括报文数据对应的数据标识和网络端口的端口标识;队列模块42,具体用于:获取现场可编辑门阵列芯片的第二配置信息,第二配置信息用于表征与现场可编辑门阵列芯片连接的网络端口的端口标识和数据标识构成的数据对与目标硬件队列之间的映射关系;根据第二配置信息处理,以及数据接收请求中的数据标识和网络端口的端口标识,得到目标硬件队列。
其中,收发模块41、队列模块42和通信模块43依次连接。本实施例提供的数据接收装置4可以执行上述方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
其中,在一种可能的实现方式中,本实施例中的收发模块41,可以相当于图10所示实施例中的通信模块33,本实施例中的通信模块43,可以相当于图10所示实施例中的收发模块31,因此,本实施例中的数据接收装置,还可以是由依次连接的通信模块、队列模块、收发模块构成,其中,通信模块,用于接收外部设备通过网络端口发送的至少两个数据接收请求,数据接收请求用于请求智能网卡将外部设备发送的报文数据存储至服务器;队列模块,用于针对每一数据接收请求,确定对应的目标硬件队列,其中,硬件队列用于通过高速总线与服务器通信,各数据接收请求对应的目标硬件队列分布于至少两个硬件队列组内,硬件队列组与高速总线一一对应;收发模块,用于由各目标硬件队列通过对应的至少两条高速总线同时与服务器通信,以将报文数据发送至服务器。
图12为本公开实施例提供的一种电子设备的结构示意图,如图12所示,该电子设备5包括:
处理器51,以及与处理器51通信连接的存储器52;
存储器52存储计算机执行指令;
处理器51执行存储器52存储的计算机执行指令,以实现如图2-图7所示实施例中的数据发送方法;或者,以实现如图8-图9所示实施例中的数据接收方法。
其中,可选地,处理器51和存储器52通过总线53连接。
相关说明可以对应参见图2-图9所对应的实施例中的步骤所对应的相关描述和效果进行理解,此处不做过多赘述。
本公开实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现本公开图2-图7所示实施例中的数据发送方法;或者,实现如图8-图9所示实施例中的数据接收方法。
本公开实施例提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现本公开图2-图7所示实施例中的数据发送方法;或者,以实现如图8-图9所示实施例中的数据接收方法。
为了实现上述实施例,本公开实施例还提供了一种电子设备。
参考图13,其示出了适于用来实现本公开实施例的电子设备900的结构示意图,该电子设备900可以为终端设备或服务器。其中,终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、个人数字助理(Personal Digital Assistant,简称PDA)、平板电脑(Portable Android Device,简称PAD)、便携式多媒体播放器(Portable MediaPlayer,简称PMP)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图13示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图13所示,电子设备900可以包括处理装置(例如中央处理器、图形处理器等)901,其可以根据存储在只读存储器(Read Only Memory ,简称ROM)902中的程序或者从存储装置908加载到随机访问存储器(Random Access Memory ,简称RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有电子设备900操作所需的各种程序和数据。处理装置901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
通常,以下装置可以连接至I/O接口905:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置906;包括例如液晶显示器(Liquid CrystalDisplay ,简称LCD)、扬声器、振动器等的输出装置907;包括例如磁带、硬盘等的存储装置908;以及通信装置909。通信装置909可以允许电子设备900与其他设备进行无线或有线通信以交换数据。虽然图13示出了具有各种装置的电子设备900,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置909从网络上被下载和安装,或者从存储装置908被安装,或者从ROM 902被安装。在该计算机程序被处理装置901执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备执行上述实施例所示的方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LocalArea Network ,简称LAN)或广域网(Wide Area Network ,简称WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元或模块的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(现场可编辑门阵列)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
第一方面,根据本公开的一个或多个实施例,提供了一种数据发送方法,应用于智能网卡,所述智能网卡具有至少两条高速总线的总线端口,所述智能网卡通过所述高速总线与服务器通信,所述方法包括:
接收所述服务器通过所述高速总线发送的至少两个数据发送请求,所述数据发送请求用于请求所述智能网卡将存储于所述服务器一侧的报文数据发送至外部设备;针对每一所述数据发送请求,确定对应的目标硬件队列,其中,硬件队列用于通过所述高速总线与所述服务器通信,各所述数据发送请求对应的目标硬件队列分布于至少两个硬件队列组内,所述硬件队列组与所述高速总线一一对应;由各所述目标硬件队列通过对应的至少两条高速总线同时与所述服务器通信,获得对应的报文数据,并将所述报文数据发送至所述外部设备。
根据本公开的一个或多个实施例,所述智能网卡内设置有现场可编辑门阵列芯片,所述现场可编辑门阵列芯片与所述高速总线连接,并提供与所述高速总线一一对应的硬件队列组,所述数据发送请求中包括所述报文数据对应的数据标识和目标高速总线的总线标识;所述针对每一所述数据发送请求,确定对应的目标硬件队列,包括:获取所述现场可编辑门阵列芯片的第一配置信息,所述第一配置信息用于表征与所述现场可编辑门阵列芯片连接的高速总线的总线标识和数据标识构成的数据对与目标硬件队列之间的映射关系;
根据所述第一配置信息处理,以及所述数据发送请求中的所述数据标识和所述目标高速总线的总线标识,得到所述目标硬件队列。
根据本公开的一个或多个实施例,所述方法还包括:通过所述现场可编辑门阵列芯片响应所述数据发送请求,生成数据请求任务,并将所述数据请求任务顺序写入所述数据发送请求对应的目标硬件队列中;所述由各所述目标硬件队列通过对应的至少两条高速总线同时与所述服务器通信,获得对应的报文数据,包括:由所述现场可编辑门阵列芯片的各目标硬件队列分别异步执行队列内的数据请求任务,以通过至少两个高速总线同时对服务器内存进行直接内存访问,得到所述数据请求任务对应的报文数据。
根据本公开的一个或多个实施例,所述智能网卡还包括与所述现场可编辑门阵列芯片连接的控制芯片;所述方法还包括:通过所述控制芯片对所述现场可编辑门阵列芯片进行初始化,以配置所述现场可编辑门阵列芯片所对应的至少两个硬件队列组内的硬件队列。
根据本公开的一个或多个实施例,所述通过所述控制芯片对所述现场可编辑门阵列芯片进行初始化,以配置所述现场可编辑门阵列芯片所对应的至少两个硬件队列组内的硬件队列,包括:根据所述高速总线的第一数量和硬件队列的总队列数,得到所述硬件队列组的组容量;基于所述硬件队列组的组容量,将所述现场可编辑门阵列芯片的所有硬件队列均衡分配至所述第一数量的硬件队列组内,得到所述现场可编辑门阵列对应的配置后硬件队列组。
根据本公开的一个或多个实施例,所述方法还包括:通过所述控制芯片配置所述现场可编辑门阵列芯片对应的硬件队列组的带宽限速;和/或,与所述硬件队列组分别对应的目标高速总线。
根据本公开的一个或多个实施例,所述方法还包括:根据所述智能网卡的端口标识,得到对应的目标高速总线;所述接收所述服务器通过所述高速总线发送的至少两个数据发送请求,包括:接收所述服务器通过所述目标高速总线发送的至少两个数据发送请求。
第二方面,根据本公开的一个或多个实施例,提供了一种数据接收方法,应用于智能网卡,所述智能网卡具有至少两条高速总线的总线端口,所述智能网卡通过所述高速总线与服务器通信,所述方法包括:
接收外部设备通过网络端口发送的至少两个数据接收请求,所述数据接收请求用于请求所述智能网卡将所述外部设备发送的报文数据存储至所述服务器;针对每一所述数据接收请求,确定对应的目标硬件队列,其中,硬件队列用于通过所述高速总线与所述服务器通信,各所述数据接收请求对应的目标硬件队列分布于至少两个硬件队列组内,所述硬件队列组与所述高速总线一一对应;由各所述目标硬件队列通过对应的至少两条高速总线同时与所述服务器通信,以将所述报文数据发送至所述服务器。
根据本公开的一个或多个实施例,所述智能网卡内设置有现场可编辑门阵列芯片,所述现场可编辑门阵列芯片与所述高速总线和所述网络端口连接,并提供与所述高速总线一一对应的硬件队列组,所述数据接收请求中包括所述报文数据对应的数据标识和所述网络端口的端口标识;所述针对每一所述数据接收请求,确定对应的目标硬件队列,包括:获取所述现场可编辑门阵列芯片的第二配置信息,所述第二配置信息用于表征与所述现场可编辑门阵列芯片连接的网络端口的端口标识和数据标识构成的数据对与目标硬件队列之间的映射关系;根据所述第二配置信息处理,以及所述数据接收请求中的所述数据标识和所述网络端口的端口标识,得到所述目标硬件队列。
根据本公开的一个或多个实施例,还包括:通过现场可编辑门阵列芯片响应数据接收请求,生成数据发送任务,并将数据发送任务顺序写入数据接收请求对应的目标硬件队列中;
根据本公开的一个或多个实施例,所述由各目标硬件队列通过对应的至少两条高速总线同时与服务器通信,以将报文数据发送至服务器,包括:由现场可编辑门阵列芯片的各目标硬件队列分别异步执行队列内的数据发送任务,以通过至少两个高速总线同时向服务器的报文缓冲区写入报文数据。
根据本公开的一个或多个实施例,智能网卡还包括与现场可编辑门阵列芯片连接的控制芯片;所述方法还包括:通过控制芯片对现场可编辑门阵列芯片进行初始化,以配置现场可编辑门阵列芯片所对应的至少两个硬件队列组内的硬件队列。
根据本公开的一个或多个实施例,所述通过控制芯片对现场可编辑门阵列芯片进行初始化,以配置现场可编辑门阵列芯片所对应的至少两个硬件队列组内的硬件队列,包括:根据高速总线的第一数量和硬件队列的总队列数,得到硬件队列组的组容量;基于硬件队列组的组容量,将现场可编辑门阵列芯片的所有硬件队列均衡分配至第一数量的硬件队列组内,得到现场可编辑门阵列对应的配置后硬件队列组。
根据本公开的一个或多个实施例,所述方法还包括:通过控制芯片配置现场可编辑门阵列芯片对应的硬件队列组的带宽限速;和/或,与硬件队列组分别对应的目标高速总线。
第三方面,根据本公开的一个或多个实施例,提供了一种数据发送装置,包括:
收发模块,用于接收所述服务器通过所述高速总线发送的至少两个数据发送请求,所述数据发送请求用于请求所述智能网卡将存储于所述服务器一侧的报文数据发送至外部设备;
队列模块,用于针对每一所述数据发送请求,确定对应的目标硬件队列,其中,硬件队列用于通过所述高速总线与所述服务器通信,各所述数据发送请求对应的目标硬件队列分布于至少两个硬件队列组内,所述硬件队列组与所述高速总线一一对应;
通信模块,用于由各所述目标硬件队列通过对应的至少两条高速总线同时与所述服务器通信,获得对应的报文数据,并将所述报文数据发送至所述外部设备。
根据本公开的一个或多个实施例,所述智能网卡内设置有现场可编辑门阵列芯片,所述现场可编辑门阵列芯片与所述高速总线连接,并提供与所述高速总线一一对应的硬件队列组,所述数据发送请求中包括所述报文数据对应的数据标识和目标高速总线的总线标识;所述队列模块,具体用于:获取所述现场可编辑门阵列芯片的第一配置信息,所述第一配置信息用于表征与所述现场可编辑门阵列芯片连接的高速总线的总线标识和数据标识构成的数据对与目标硬件队列之间的映射关系;根据所述第一配置信息处理,以及所述数据发送请求中的所述数据标识和所述目标高速总线的总线标识,得到所述目标硬件队列。
根据本公开的一个或多个实施例,所述队列模块,还用于:通过所述现场可编辑门阵列芯片响应所述数据发送请求,生成数据请求任务,并将所述数据请求任务顺序写入所述数据发送请求对应的目标硬件队列中;所述通信模块,具体用于:由所述现场可编辑门阵列芯片的各目标硬件队列分别异步执行队列内的数据请求任务,以通过至少两个高速总线同时对服务器内存进行直接内存访问,得到所述数据请求任务对应的报文数据。
根据本公开的一个或多个实施例,所述智能网卡还包括与所述现场可编辑门阵列芯片连接的控制芯片;所述队列模块,具体用于:通过所述控制芯片对所述现场可编辑门阵列芯片进行初始化,以配置所述现场可编辑门阵列芯片所对应的至少两个硬件队列组内的硬件队列。
根据本公开的一个或多个实施例,所述队列模块在通过所述控制芯片对所述现场可编辑门阵列芯片进行初始化,以配置所述现场可编辑门阵列芯片所对应的至少两个硬件队列组内的硬件队列时,具体用于:根据所述高速总线的第一数量和硬件队列的总队列数,得到所述硬件队列组的组容量;基于所述硬件队列组的组容量,将所述现场可编辑门阵列芯片的所有硬件队列均衡分配至所述第一数量的硬件队列组内,得到所述现场可编辑门阵列对应的配置后硬件队列组。
根据本公开的一个或多个实施例,所述队列模块,还用于:通过所述控制芯片配置所述现场可编辑门阵列芯片对应的硬件队列组的带宽限速;和/或,与所述硬件队列组分别对应的目标高速总线。
根据本公开的一个或多个实施例,所述收发模块,还用于:根据所述智能网卡的端口标识,得到对应的目标高速总线;所述收发模块在接收所述服务器通过所述高速总线发送的至少两个数据发送请求时,具体用于:接收所述服务器通过所述目标高速总线发送的至少两个数据发送请求。
第四方面,根据本公开的一个或多个实施例,提供了一种数据接收装置,包括:
通信模块,用于接收外部设备通过网络端口发送的至少两个数据接收请求,所述数据接收请求用于请求所述智能网卡将所述外部设备发送的报文数据存储至所述服务器;
队列模块,用于针对每一所述数据接收请求,确定对应的目标硬件队列,其中,硬件队列用于通过所述高速总线与所述服务器通信,各所述数据接收请求对应的目标硬件队列分布于至少两个硬件队列组内,所述硬件队列组与所述高速总线一一对应;
收发模块,用于由各所述目标硬件队列通过对应的至少两条高速总线同时与所述服务器通信,以将所述报文数据发送至所述服务器。
根据本公开的一个或多个实施例,智能网卡内设置有现场可编辑门阵列芯片,现场可编辑门阵列芯片与高速总线和网络端口连接,并提供与高速总线一一对应的硬件队列组,数据接收请求中包括报文数据对应的数据标识和网络端口的端口标识;队列模块,具体用于:获取现场可编辑门阵列芯片的第二配置信息,第二配置信息用于表征与现场可编辑门阵列芯片连接的网络端口的端口标识和数据标识构成的数据对与目标硬件队列之间的映射关系;根据第二配置信息处理,以及数据接收请求中的数据标识和网络端口的端口标识,得到目标硬件队列。
第五方面,根据本公开的一个或多个实施例,提供了一种电子设备,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的数据发送方法,或者,执行如上第二方面以及第二方面各种可能的设计所述的数据接收方法。
第六方面,根据本公开的一个或多个实施例,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的数据发送方法,或者,实现如上第二方面以及第二方面各种可能的设计所述的数据接收方法。
第七方面,根据本公开的一个或多个实施例,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上第一方面以及第一方面各种可能的设计所述的数据发送方法,或者,实现如上第二方面以及第二方面各种可能的设计所述的数据接收方法。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

Claims (14)

1.一种数据发送方法,其特征在于,应用于智能网卡,所述智能网卡具有至少两条高速总线的总线端口,所述智能网卡通过所述高速总线与服务器通信,所述方法包括:
接收所述服务器通过所述高速总线发送的至少两个数据发送请求,所述数据发送请求用于请求所述智能网卡将存储于所述服务器一侧的报文数据发送至外部设备;
针对每一所述数据发送请求,确定对应的目标硬件队列,其中,硬件队列用于通过所述高速总线与所述服务器通信,各所述数据发送请求对应的目标硬件队列分布于至少两个硬件队列组内,所述硬件队列组与所述高速总线一一对应;
由各所述目标硬件队列通过对应的至少两条高速总线同时与所述服务器通信,获得对应的报文数据,并将所述报文数据发送至所述外部设备。
2.根据权利要求1所述的方法,其特征在于,所述智能网卡内设置有现场可编辑门阵列芯片,所述现场可编辑门阵列芯片与所述高速总线连接,并提供与所述高速总线一一对应的硬件队列组,所述数据发送请求中包括所述报文数据对应的数据标识和目标高速总线的总线标识;
所述针对每一所述数据发送请求,确定对应的目标硬件队列,包括:
获取所述现场可编辑门阵列芯片的第一配置信息,所述第一配置信息用于表征与所述现场可编辑门阵列芯片连接的高速总线的总线标识和数据标识构成的数据对与目标硬件队列之间的映射关系;
根据所述第一配置信息处理,以及所述数据发送请求中的所述数据标识和所述目标高速总线的总线标识,得到所述目标硬件队列。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
通过所述现场可编辑门阵列芯片响应所述数据发送请求,生成数据请求任务,并将所述数据请求任务顺序写入所述数据发送请求对应的目标硬件队列中;
所述由各所述目标硬件队列通过对应的至少两条高速总线同时与所述服务器通信,获得对应的报文数据,包括:
由所述现场可编辑门阵列芯片的各目标硬件队列分别异步执行队列内的数据请求任务,以通过至少两个高速总线同时对服务器内存进行直接内存访问,得到所述数据请求任务对应的报文数据。
4.根据权利要求2所述的方法,其特征在于,所述智能网卡还包括与所述现场可编辑门阵列芯片连接的控制芯片;所述方法还包括:
通过所述控制芯片对所述现场可编辑门阵列芯片进行初始化,以配置所述现场可编辑门阵列芯片所对应的至少两个硬件队列组内的硬件队列。
5.根据权利要求4所述的方法,其特征在于,所述通过所述控制芯片对所述现场可编辑门阵列芯片进行初始化,以配置所述现场可编辑门阵列芯片所对应的至少两个硬件队列组内的硬件队列,包括:
根据所述高速总线的第一数量和硬件队列的总队列数,得到所述硬件队列组的组容量;
基于所述硬件队列组的组容量,将所述现场可编辑门阵列芯片的所有硬件队列均衡分配至所述第一数量的硬件队列组内,得到所述现场可编辑门阵列对应的配置后硬件队列组。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
通过所述控制芯片配置所述现场可编辑门阵列芯片对应的硬件队列组的带宽限速;和/或,与所述硬件队列组分别对应的目标高速总线。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述智能网卡的端口标识,得到对应的目标高速总线;
所述接收所述服务器通过所述高速总线发送的至少两个数据发送请求,包括:
接收所述服务器通过所述目标高速总线发送的至少两个数据发送请求。
8.一种数据接收方法,其特征在于,应用于智能网卡,所述智能网卡具有至少两条高速总线的总线端口,所述智能网卡通过所述高速总线与服务器通信,所述方法包括:
接收外部设备通过网络端口发送的至少两个数据接收请求,所述数据接收请求用于请求所述智能网卡将所述外部设备发送的报文数据存储至所述服务器;
针对每一所述数据接收请求,确定对应的目标硬件队列,其中,硬件队列用于通过所述高速总线与所述服务器通信,各所述数据接收请求对应的目标硬件队列分布于至少两个硬件队列组内,所述硬件队列组与所述高速总线一一对应;
由各所述目标硬件队列通过对应的至少两条高速总线同时与所述服务器通信,以将所述报文数据发送至所述服务器。
9.根据权利要求8所述的方法,其特征在于,所述智能网卡内设置有现场可编辑门阵列芯片,所述现场可编辑门阵列芯片与所述高速总线和所述网络端口连接,并提供与所述高速总线一一对应的硬件队列组,所述数据接收请求中包括所述报文数据对应的数据标识和所述网络端口的端口标识;
所述针对每一所述数据接收请求,确定对应的目标硬件队列,包括:
获取所述现场可编辑门阵列芯片的第二配置信息,所述第二配置信息用于表征与所述现场可编辑门阵列芯片连接的网络端口的端口标识和数据标识构成的数据对与目标硬件队列之间的映射关系;
根据所述第二配置信息处理,以及所述数据接收请求中的所述数据标识和所述网络端口的端口标识,得到所述目标硬件队列。
10.一种数据发送装置,其特征在于,应用于智能网卡,所述智能网卡具有至少两条高速总线的总线端口,所述智能网卡通过所述高速总线与服务器通信,包括:
收发模块,用于接收所述服务器通过所述高速总线发送的至少两个数据发送请求,所述数据发送请求用于请求所述智能网卡将存储于所述服务器一侧的报文数据发送至外部设备;
队列模块,用于针对每一所述数据发送请求,确定对应的目标硬件队列,其中,硬件队列用于通过所述高速总线与所述服务器通信,各所述数据发送请求对应的目标硬件队列分布于至少两个硬件队列组内,所述硬件队列组与所述高速总线一一对应;
通信模块,用于由各所述目标硬件队列通过对应的至少两条高速总线同时与所述服务器通信,获得对应的报文数据,并将所述报文数据发送至所述外部设备。
11.一种数据接收装置,其特征在于,应用于智能网卡,所述智能网卡具有至少两条高速总线的总线端口,所述智能网卡通过所述高速总线与服务器通信,包括:
通信模块,用于接收外部设备通过网络端口发送的至少两个数据接收请求,所述数据接收请求用于请求所述智能网卡将所述外部设备发送的报文数据存储至所述服务器;
队列模块,用于针对每一所述数据接收请求,确定对应的目标硬件队列,其中,硬件队列用于通过所述高速总线与所述服务器通信,各所述数据接收请求对应的目标硬件队列分布于至少两个硬件队列组内,所述硬件队列组与所述高速总线一一对应;
收发模块,用于由各所述目标硬件队列通过对应的至少两条高速总线同时与所述服务器通信,以将所述报文数据发送至所述服务器。
12.一种电子设备,其特征在于,包括:处理器和存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如权利要求1至9任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至9任一项所述的方法。
14.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9任一项所述的方法。
CN202410179255.2A 2024-02-18 2024-02-18 数据发送方法、数据接收方法、装置、设备及存储介质 Active CN117749739B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410179255.2A CN117749739B (zh) 2024-02-18 2024-02-18 数据发送方法、数据接收方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410179255.2A CN117749739B (zh) 2024-02-18 2024-02-18 数据发送方法、数据接收方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN117749739A CN117749739A (zh) 2024-03-22
CN117749739B true CN117749739B (zh) 2024-06-04

Family

ID=90251145

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410179255.2A Active CN117749739B (zh) 2024-02-18 2024-02-18 数据发送方法、数据接收方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117749739B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101393540A (zh) * 2007-09-19 2009-03-25 富士通株式会社 数据传送装置、信息处理系统以及计算机可读记录介质
WO2021042782A1 (zh) * 2019-09-06 2021-03-11 华为技术有限公司 网卡的信息处理方法及芯片
CN113377288A (zh) * 2021-04-30 2021-09-10 深圳大普微电子科技有限公司 硬件队列管理系统、方法、固态硬盘控制器及固态硬盘
CN216623148U (zh) * 2021-12-28 2022-05-27 北京百度网讯科技有限公司 一种嵌入式服务器、智能网卡、soc模块以及电子设备
CN116303171A (zh) * 2023-03-21 2023-06-23 南方电网数字电网集团信息通信科技有限公司 一种服务器之间的数据交互方法、装置、电子设备及介质
CN116527609A (zh) * 2023-05-16 2023-08-01 迈普通信技术股份有限公司 报文转发方法、装置、智能网卡、服务器和存储介质
CN116743883A (zh) * 2023-08-15 2023-09-12 中移(苏州)软件技术有限公司 一种智能网卡、数据处理系统及其工作方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101393540A (zh) * 2007-09-19 2009-03-25 富士通株式会社 数据传送装置、信息处理系统以及计算机可读记录介质
WO2021042782A1 (zh) * 2019-09-06 2021-03-11 华为技术有限公司 网卡的信息处理方法及芯片
CN113377288A (zh) * 2021-04-30 2021-09-10 深圳大普微电子科技有限公司 硬件队列管理系统、方法、固态硬盘控制器及固态硬盘
CN216623148U (zh) * 2021-12-28 2022-05-27 北京百度网讯科技有限公司 一种嵌入式服务器、智能网卡、soc模块以及电子设备
CN116303171A (zh) * 2023-03-21 2023-06-23 南方电网数字电网集团信息通信科技有限公司 一种服务器之间的数据交互方法、装置、电子设备及介质
CN116527609A (zh) * 2023-05-16 2023-08-01 迈普通信技术股份有限公司 报文转发方法、装置、智能网卡、服务器和存储介质
CN116743883A (zh) * 2023-08-15 2023-09-12 中移(苏州)软件技术有限公司 一种智能网卡、数据处理系统及其工作方法

Also Published As

Publication number Publication date
CN117749739A (zh) 2024-03-22

Similar Documents

Publication Publication Date Title
US20240311046A1 (en) Data storage method and apparatus, readable medium, and electronic device
CN113886019B (zh) 虚拟机创建方法、装置、系统、介质和设备
WO2023174013A1 (zh) 显存分配方法、装置、介质及电子设备
CN114625481A (zh) 数据处理方法、装置、可读介质及电子设备
CN116774933A (zh) 存储设备的虚拟化处理方法、桥接设备、系统及介质
CN116257320B (zh) 一种基于dpu虚拟化配置管理方法、装置、设备及介质
CN115237589A (zh) 一种基于sr-iov的虚拟化方法、装置和设备
CN112306685B (zh) 任务隔离方法、装置、电子设备及计算机可读介质
CN113886018A (zh) 虚拟机资源分配方法、装置、介质及设备
CN117608757A (zh) 存储设备控制方法、装置、电子设备及存储介质
CN117749739B (zh) 数据发送方法、数据接收方法、装置、设备及存储介质
CN116450554A (zh) 中断处理方法、根复合体设备及电子设备
US20230153153A1 (en) Task processing method and apparatus
CN115098030A (zh) 虚拟磁盘写入或读出数据的方法、装置及计算机设备
CN111694672B (zh) 资源分配方法、任务提交方法、装置、电子设备和介质
CN109240602B (zh) 数据存取方法
CN117891624B (zh) 基于虚拟化设备的应用间通信方法、装置及电子设备
CN117215730B (zh) 数据传输方法、装置、设备及存储介质
CN115941750B (zh) 自动驾驶系统芯片的算力优化方法、设备和计算机介质
CN118132289A (zh) 一种本地通信方法、系统、设备、存储介质和产品
CN117170831A (zh) 云设备管理方法、装置、设备及存储介质
CN117640796A (zh) 网络报文处理方法及设备
CN112148448A (zh) 资源分配方法、装置、设备和计算机可读介质
CN114281571A (zh) 穿戴设备的数据处理方法及设备
CN116668564A (zh) 多模态网络报文处理方法、装置、设备及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant