CN116711282A - 通信设备和通信方法 - Google Patents

通信设备和通信方法 Download PDF

Info

Publication number
CN116711282A
CN116711282A CN202180087386.2A CN202180087386A CN116711282A CN 116711282 A CN116711282 A CN 116711282A CN 202180087386 A CN202180087386 A CN 202180087386A CN 116711282 A CN116711282 A CN 116711282A
Authority
CN
China
Prior art keywords
tag
message
network card
local
buffer
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
Application number
CN202180087386.2A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN116711282A publication Critical patent/CN116711282A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供一种通信设备,包括:网卡和处理器。其中,网卡通过片上总线与处理器互连。网卡用于为从网络接收的第一消息传达的数据确定目标标记缓冲区。目标标记缓冲区为与第一消息匹配的第一本地标签关联的标记缓冲区,第一本地标签由处理器向网卡下发。本申请能够降低为第一消息传达的数据确定目标标记缓冲区的过程对CPU资源的消耗。

Description

通信设备和通信方法 技术领域
本申请涉及通信技术领域,具体涉及一种通信设备和一种通信方法。
背景技术
消息传递接口(Message Passing Interface、MPI)是人工智能(Artificial Intelligence、AI)和高性能计算机群(High Performance Computing、HPC)领域中被广泛应用的通信协议。MPI提供两个基本函数,分别为MPI_SEND和MPI_RECV。
发送端在发送消息时,通过运行MPI_SEND,生成一个远端标签,将该远端标签携带在消息中后,再发送消息。接收端通过运行MPI_RECV,生成一个与标记缓冲区关联的本地标签,以为接收到的数据准备标记缓冲区。在接收端接收到消息后,将消息中的远端标签与接收端中的本地标签进行匹配,以为消息传达的数据确定目标标记缓冲区,目标标记缓冲区是为该消息传达的数据准备的标记缓冲区。目标标记缓冲区为与消息中的远端标签匹配的本地标签所关联的标记缓冲区。
目前,上述为消息传达的数据确定目标标记缓冲区的过程由软件完成,即通过在接收端中的CPU上运行软件进程的方式来完成,消耗了大量的CPU资源,导致真正能够利用的CPU资源受限,例如能够进行AI和HPC应用处理的CPU资源受限。
发明内容
本申请提供了一种通信设备和一种通信方法,用于解决为消息传达的数据确定目标标记缓冲区的过程消耗了大量的CPU资源的问题。
第一方面,本申请提供一种通信设备,包括:网卡和处理器;其中,所述网卡通过片上总线与所述处理器互连;所述网卡,用于为从网络接收的第一消息传达的数据确定目标标记缓冲区;所述目标标记缓冲区为与所述第一消息匹配的第一本地标签关联的标记缓冲区,所述第一本地标签由所述处理器向所述网卡下发。
为从网络接收的第一消息传达的数据确定目标标记缓冲区的过程由网卡完成,而非通过软件完成,降低了为第一消息传达的数据确定目标标记缓冲区的过程对CPU资源的消耗,提高了真正能够利用的CPU资源。此外,网卡和处理器之间通过片上总线互连,提高了网卡和处理器之间的通信效率。另外,在通过在CPU上运行软件进程来确定目标标记缓冲区的方式中,CPU不仅要执行确定目标标记缓冲区的进程,还需要执行其他功能的进程,而在本申请中,网卡不同于CPU,网卡为一个专用器件,不用像CPU一样需执行更多功能的软件进程,因此,提高了确定目标标记缓冲区的效率。
在一种可能的实现方式中,所述网卡还用于:将所述第一消息传达的数据写入所述目标标记缓冲区。
第一消息传达的数据直接由网卡写入存储器中的目标标记缓冲区,不对操作系统造成 任何影响,进一步降低了CPU资源的消耗。
在一种可能的实现方式中,所述网卡通过下述方式确定所述目标标记缓冲区:从接收队列包括的至少一个本地标签中,确定与所述第一消息中的远端标签匹配的第一本地标签;其中,所述接收队列存储在所述通信设备的存储器中,所述存储器通过所述片上总线与所述网卡和所述处理器互连;将所述第一本地标签关联的标记缓冲区,确定为所述目标标记缓冲区。
在一种可能的实现方式中,所述网卡通过下述方式确定所述第一本地标签:分次从所述接收队列中获得所述至少一个本地标签中的部分本地标签;在分次获得的所述部分本地标签中,确定与所述第一消息中的远端标签匹配的第一本地标签。
在一种可能的实现方式中,所述网卡还用于:将从所述网络接收的第二消息传达的数据写入自由缓冲区,所述第二消息为未匹配到本地标签的消息,所述自由缓冲区为写入所述第二消息传达的数据的缓冲区。
第二消息传达的数据由网卡直接写入存储器中的自由缓冲区,不对操作系统造成任何影响,进一步降低了CPU资源的消耗。
在一种可能的实现方式中,所述网卡还用于:将所述自由缓冲区的地址和所述第二消息中的远端标签关联后写入非期望消息队列;其中,所述非期望消息队列存储在所述通信设备的存储器中,所述存储器通过所述片上总线与所述网卡和所述处理器互连。
在一种可能的实现方式中,所述网卡还用于:为从所述处理器接收的第一接收指令确定目标自由缓冲区;其中,所述目标自由缓冲区为与所述第一接收指令匹配的第一远端标签所关联的自由缓冲区。
为从处理器接收的第一接收指令确定目标自由缓冲区的过程由网卡完成,而非通过软件完成,降低了确定目标自由缓冲区的过程对CPU资源的消耗,进一步提高了真正能够利用的CPU资源。另外,在通过在CPU上运行软件进程来确定目标自由缓冲区的方式中,CPU不仅要执行确定目标自由缓冲区的进程,还需要执行其他功能的进程,而在本申请中,网卡不同于CPU,网卡为一个专用器件,不用像CPU一样执行更多功能的软件进程,因此,提高了确定目标自由缓冲区的效率。
在一种可能的实现方式中,所述网卡还用于:将所述目标自由缓冲区中的数据写入所述第一接收指令所指示的标记缓冲区中。
目标自由缓冲区中的数据直接由网卡写入存储器中的标记缓冲区,不对操作系统造成任何影响,进一步降低了CPU资源的消耗。
在一种可能的实现方式中,所述网卡通过下述方式确定所述目标自由缓冲区:在所述非期望消息队列包括的至少一个远端标签中,确定与所述第一接收指令中的第二本地标签匹配的第一远端标签;将所述第一远端标签关联的自由缓冲区确定为所述目标自由缓冲区。
在一种可能的实现方式中,所述网卡通过下述方式确定所述第一远端标签:分次从所述非期望消息队列获得所述至少一个远端标签中的部分远端标签;在分次获得的所述部分远端标签中,确定与所述第一接收指令中的第二本地标签匹配的第一远端标签。
在一种可能的实现方式中,所述网卡还用于:将从所述处理器接收的第二接收指令中的本地标签和所述第二接收指令中的标记缓冲区的地址写入所述接收队列;所述第二接收指令为未匹配到远端标签的接收指令。
第二方面,本申请提供一种通信方法,应用于网卡,包括:为从网络接收的第一消息传达的数据确定目标标记缓冲区;其中,所述目标标记缓冲区为与所述第一消息匹配的第一本地标签关联的标记缓冲区,所述第一本地标签由处理器向所述网卡下发,所述网卡通过片上总线与所述处理器互连,所述网卡和所述处理器设置在同一个通信设备中。
在一种可能的实现方式中,所述方法还包括:将所述第一消息传达的数据写入所述目标标记缓冲区。
在一种可能的实现方式中,所述为从网络接收的第一消息传达的数据确定目标标记缓冲区包括:从接收队列包括的至少一个本地标签中,确定与所述第一消息中的远端标签匹配的第一本地标签;其中,所述接收队列存储在所述通信设备的存储器中,所述存储器通过所述片上总线与所述网卡和所述处理器互连;将所述第一本地标签关联的标记缓冲区,确定为所述目标标记缓冲区。
在一种可能的实现方式中,所述从接收队列包括的至少一个本地标签中,确定与所述第一消息中的远端标签匹配的第一本地标签包括:分次从所述接收队列中获得所述至少一个本地标签中的部分本地标签;在分次获得的所述部分本地标签中,确定与所述第一消息中的远端标签匹配的第一本地标签。
在一种可能的实现方式中,所述方法还包括:将从所述网络接收的第二消息传达的数据写入自由缓冲区,所述第二消息为未匹配到本地标签的消息,所述自由缓冲区为写入所述第二消息传达的数据的缓冲区。
在一种可能的实现方式中,所述方法还包括:将所述自由缓冲区的地址和所述第二消息中的远端标签关联后写入非期望消息队列;其中,所述非期望消息队列存储在所述通信设备的存储器中,所述存储器通过所述片上总线与所述网卡和所述处理器互连。
在一种可能的实现方式中,所述方法还包括:为从所述处理器接收的第一接收指令确定目标自由缓冲区;其中,所述目标自由缓冲区为与所述第一接收指令匹配的第一远端标签所关联的自由缓冲区。
在一种可能的实现方式中,所述方法还包括:将所述目标自由缓冲区中的数据写入所述第一接收指令所指示的标记缓冲区中。
在一种可能的实现方式中,所述为从所述处理器接收的第一接收指令确定目标自由缓冲区包括:在所述非期望消息队列包括的至少一个远端标签中,确定与所述第一接收指令中的第二本地标签匹配的第一远端标签;将所述第一远端标签关联的自由缓冲区确定为所述目标自由缓冲区。
在一种可能的实现方式中,所述在所述非期望消息队列包括的至少一个远端标签中,确定与所述第一接收指令中的第二本地标签匹配的第一远端标签包括:分次从所述非期望消息队列获得所述至少一个远端标签中的部分远端标签;在分次获得的所述部分远端标签中,确定与所述第一接收指令中的第二本地标签匹配的第一远端标签。
在一种可能的实现方式中,述方法还包括:将从所述处理器接收的第二接收指令中的本地标签和所述第二接收指令中的标记缓冲区的地址写入所述接收队列;所述第二接收指令为未匹配到远端标签的接收指令。
第三方面,本申请提供一种可读存储介质,包括计算机程序,所述计算机程序在网卡上被运行时,使得所述网卡执行第二方面中任一项所述的方法。
第四方面,本申请提供一种计算机程序产品,当所述计算机程序被网卡运行时,使得所述网卡执行第二方面中任一项所述的方法。
第五方面,本申请提供一种芯片,包括处理器、网卡,所述处理器和所述网卡通过片上总线互联;所述网卡用于执行第二方面中任一项所述的方法;所述处理器被配置为向所述网卡下发接收指令。
附图说明
图1为本申请实施例提供的通信设备的结构示意图;
图2为本申请实施例提供的接收端的内部交互示意图;
图3为本申请实施例提供的接收端与发送端之间的通信流程示意图;
图4为本申请实施例提供的M*N的匹配方式的流程示意图;
图5为本申请实施例提供的确定接收端中的内部交互流程示意图;
图6为本申请实施例提供的主机的应用场景示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书实施例和权利要求书及附图中的术语“第一”、“第二”等仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
为了解决上述技术问题,本申请提供了一种全新的方案。该方案将为消息传达的数据确定目标标记缓冲区的过程下放到硬件中,由硬件主动发起并完成该过程,无需通过软件完成,极大的降低了为消息传达的数据确定目标标记缓冲区的过程对CPU资源的消耗,提高了真正能够利用的CPU资源。
基于上述理念,本申请提供了一种通信设备,该通信设备例如可以为台式电脑、手机、平板电脑、主机、服务器等具有通信功能的设备。
图1为本申请实施例提供的通信设备的结构示意图。如图1所示,该通信设备100包括存储器111、网卡112和CPU(处理器)。存储器111、网卡112和CPU通过片上总线113互连。相比于相关技术中通过高速外围互联组件(PCIe、peripheral component interconnect express)将网卡分别与存储器和处理器互联的方式,本申请通过片上总线113将网卡112与存储器111和CPU互连,使网卡112能够大带宽、低延时的访问存储器111以及大带宽、低延时的与CPU通信。
CPU、存储器111、网卡112中的至少两个可以集成在一个芯片上。CPU、存储器111、网卡112也可以分别制作在不同的芯片上,此处不作特殊限定。
存储器111可以作为通信设备100的内存。存储器111例如可以为动态随机存取存储器(Dynamic Random Access Memory、DRAM)等,本申请对此不作特殊限定。需要说明的是,存储器111还可以为双倍速率同步动态随机存储器(DDR),这样,可以提高数据存储的速率和效率。存储器111中包括多个缓冲区。
下面,结合图2~图5对发送端与接收端之间的通信和接收端内部的交互过程进行说明。发送端和接收端采用上述通信设备的结构。
图2为本申请实施例提供的接收端的内部交互流程示意图。在图2中,接收端包括NIC(网卡)、Memory(存储器)和处理器(图2中未示出)。需要说明的是,左边的Memory和右边的Memory为同一个Memory,为了画图方面,在图2中将Memory作为两个部分画在NIC的两侧。
Memory中存储有PRQ(Posted Receive Queue,接收队列)和UMQ(Unexpected Message Queue,非期望消息队列)。PRQ包括至少一个本地标签和至少一个本地标签中的每个本地标签关联的标记缓冲区的地址。UMQ包括至少一个远端标签和至少一个远端标签中的每个远端标签关联的自由缓冲区的地址。
Memory还用于提供与本地标签关联的TAG BUFFERS(标记缓冲区)、与远端标签关联的FREE BUFEERS(自由缓冲区)等缓冲区。
NIC包括存储器,在图2中,NIC中的存储器为高速缓冲存储器,NIC中的存储器包括PRQ cache(PRQ高速缓冲存储器)和UMQ cache(UMQ高速缓冲存储器)。其中,PRQ cache用于存储从PRQ中获得的本地标签和本地标签关联的标记缓冲区的地址。UMQ cache用于存储从UMQ中获得的远端标签和远端标签关联的自由缓冲区的地址。
需要说明的是,在其他实施例中,NIC中的存储器还可以为其他类型的存储器。
图2的下侧表示Network(网络),图2的上侧表示SW(Soft Ware、软件)。
下面,基于图3对发送端向接收端发送消息,接收端对消息进行处理的过程进行说明。
301.在发送端中的CPU上执行MPI_SEND,得到远端标签。
302.发送端中的CPU将远端标签携带在消息中。
303.发送端中的CPU将携带远端标签的消息发送至发送端中的NIC(网卡)。
304.发送端中的NIC将消息发送至Network,以通过Network将消息发送至接收端。
在图2中,Network packet TMH(tag、……)表示发送端发送的消息,其中,TMH(tag、……)为消息的标签匹配头,tag表示远端标签。需要说明的是,TMH(tag、……)还可以携带其他相关信息,此处不作特殊限定。
305.接收端中的NIC从Network中接收消息(即发送端发送的消息)。
306.接收端中的NIC向发送端中的NIC发送ACK(Acknowledge,肯定应答),以使发送端释放与消息相关的资源。ACK表示接收端已经正常接收消息。
307.接收端中的NIC分次从PRQ中获得PRQ中的至少一个本地标签中的部分本地标签。可以根据接收端的NIC中的PRQ cache的大小确定每次获得的部分本地标签的数量。分次获得的部分本地标签存储在PRQ cache。
308.接收端中的NIC将消息中的远端标签与分次获得的部分本地标签进行匹配。
309.若消息中的远端标签匹配到本地标签(即图2中的PRQ Tag Matching SUCCEEDS)换言之,接收端为消息传达的数据准备好了标记缓冲区,则接收端中的NIC将该消息作为第一消息,将匹配到的本地标签作为第一本地标签,将第一本地标签关联的标记缓冲区作为目标标记缓冲区(即为第一消息传达的数据准备好的标记缓冲区)。
310.接收端中的NIC将第一消息传达的数据写入目标标记缓冲区。以及接收端中的NIC生成CQE(Completion Queue Element、完成队列元素),以通过CQE通知软件消息匹配到本地标签。CQ(Completion Queue、完成队列)为存储CQE的队列。
311.若消息中的远端标签未匹配到本地标签(即图2中的PRQ Tag Matching FAILS)换言之,接收端未为消息传达的数据准备好标记缓冲区,则接收端中的NIC将该消息作为第二消息,将第二消息传达的数据写入自由缓冲区。自由缓冲区为写入第二消息传达的数据的缓冲区。
312.接收端中的NIC将自由缓冲区的地址和第二消息中的远端标签关联后写入UMQ中。显然,UMQ是一个存储第二消息(即没有匹配到本地标签的消息)中的远端标签和写入第二消息传达的数据的自由缓冲区的地址的队列。
在消息中的远端标签未匹配到本地标签时,将消息作为第二消息,将第二消息传达的数据暂存在自由缓冲区中,并将第二消息中的远端标签和自由缓冲区的地址关联后写入UMQ,这样,在接收端中的CPU下发后续接收指令后,会优先将接收指令中的本地标签与UMQ中的远端标签匹配,以确定写入接收指令所指示的标记缓冲区的数据是否已经到达且暂存在自由缓冲区中。
由上可知,接收端中的NIC用于为从网络接收的第一消息传达的数据确定目标标记缓冲区,将第一消息传达的数据写入目标标记缓冲区,以及将从网络接收的第二消息传达的数据写入自由缓冲区,将自由缓冲区的地址和第二消息中的远端标签关联后写入UMQ。
接收端中的NIC具体通过下述方式确定目标标记缓冲区:
从PRQ包括的至少一个本地标签中,确定与第一消息中的远端标签匹配的第一本地标签。将第一本地标签关联的标记缓冲区,确定为目标标记缓冲区。
由于PRQ存储在接收端的存储器中,而接收端中的NIC中的PRQ cache的空间有限,因此,接收端中的NIC通过下述方式确定第一本地标签:
分次从接收队列中获得至少一个本地标签中的部分本地标签,在分次获得的部分本地标签中,确定与第一消息中的远端标签匹配的第一本地标签。
为了提高处理从网络接收到的消息的效率,在本申请的其他实施例中,接收端中的NIC还可以同时对N个消息进行处理。接收端中的NIC同时对N个消息进行处理的流程与上述图3中的流程的区别在于:
消息的数量为M个。通过在单次匹配过程中,将M个消息中的远端标签与N个本地标签进行同时匹配的方式(如图4所示),将M个消息中的远端标签与分次获得的部分本地标签进行匹配。N和M为大于1的整数。
显然,在单次匹配过程中,同时将M个消息中的远端标签与N个本地标签进行匹配,提高了匹配速度。
需要说明的是,针对与第一消息中的远端标签匹配的第一本地标签,在PRQ cache和PRQ中释放该第一本地标签及其关联的标记缓冲区的地址。
综上,为从网络接收的第一消息传达的数据确定目标标记缓冲区的过程由网卡完成,而非通过软件完成,降低了为第一消息传达的数据确定目标标记缓冲区的过程对CPU资源的消耗,提高了真正能够利用的CPU资源。此外,网卡、存储器和处理器之间通过片上总线互连,提高了网卡、存储器和处理器之间的通信效率,进而提高了确定目标标记缓冲区的效率。另外,在通过在CPU上运行软件进程来确定目标标记缓冲区的方式中,CPU不仅要执行确定目标标记缓冲区的进程,还需要执行其他功能的进程,而在本申请中,网卡不同于CPU,网卡为一个专用器件,不用像CPU一样需执行更多功能的软件进程,因此,提高了确定目标标记缓冲区的效率。
由于第一消息传达的数据直接由网卡写入存储器中的目标标记缓冲区,第二消息传达的数据由网卡直接写入存储器中的自由缓冲区,不对操作系统造成任何影响,进一步降低了CPU资源的消耗。
下面,基于图5对接收端中的CPU向接收端中的NIC发送接收指令,以及接收端中的NIC对接收指令进行处理的过程进行说明。具体过程如下:
501.在接收端中的CPU上执行MPI_RECV,生成一个与标记缓冲区关联的本地标签,将本地标签和本地标签关联的标记缓冲区的地址携带在接收指令中。
502.接收端中的CPU向接收端中的NIC下发接收指令。在图2中,MPI Recv(*buf,tag,……)表示CPU向NIC下发的接收指令。tag表示本地标签,*Buf表示与本地标签关联的标记缓冲区的地址。需要说明的是,接收指令还可以包括其他相关信息,此处不作限定。图2中的MPIQ为用于存储接收指令的队列。
503.接收端中的NIC分次从UMQ中获得UMQ中的至少一个远端标签中的部分远端标签。可以根据接收端的NIC中的UMQ cache的大小确定每次获得的部分远端标签的数量。分次获得的部分远端标签存储在UMQ cache。
504.接收端中的NIC将接收指令中的本地标签与分次获得的部分远端标签进行匹配。
505.若接收指令中的本地标签匹配到远端标签(即图2中的UMQ Tag Matching SUCCEEDS),换言之,写入该接收指令所指示的标记缓冲区中的数据已经到达且暂存在自由缓冲区中,则接收端中的NIC将该接收指令作为第一接收指令,将第一接收指令中的本地标签作为第二本地标签,将匹配到的远端标签作为第一远端标签,将第一远端标签关联的自由缓冲区作为目标自由缓冲区。
506.接收端中的NIC将目标自由缓冲区中的数据写入第一接收指令所指示的标记缓冲区(即第一接收指令中的标记缓冲区的地址所指示的标记缓冲区)中。以及接收端中的NIC生成CQE(Completion Queue Element、完成队列元素),以通过CQE通知软件接 收指令匹配到远端标签。
507.若接收指令中的本地标签未匹配到远端标签(即图2中的UMQ Tag Matching FAILS)换言之,写入该接收指令所指示的标记缓冲区中的数据未被接收端接收,则接收端中的NIC将该接收指令作为第二接收指令。
508.接收端中的NIC将第二接收指令中的本地标签和第二接收指令中的标记缓冲区的地址关联后写入PRQ。显然,PRQ是一个存储没有匹配到远端标签的接收指令(即第二接收指令)中的本地标签和与本地标签关联的标记缓冲区的地址的队列。接收端中的NIC在接收到后续消息后,会先将消息与PRQ中的本地标签匹配,以确定是否为接收到的消息传达的数据准备好标记缓冲区。
由上可知,接收端中的NIC还用于为从处理器接收的第一接收指令确定目标自由缓冲区,将目标自由缓冲区中的数据写入第一接收指令所指示的标记缓冲区中,以及将从处理器接收的第二接收指令中的本地标签和第二接收指令中的标记缓冲区的地址关联后写入PRQ。
接收端中的NIC具体通过下述方式确定目标自由缓冲区:
在UMQ包括的至少一个远端标签中,确定与第一接收指令中的第二本地标签匹配的第一远端标签,将第一远端标签关联的自由缓冲区确定为目标自由缓冲区。
由于UMQ存储在接收端的存储器中,而NIC中的UMQ cache的空间有限,因此,接收端中的NIC通过下述方式确定第一远端标签:
分次从UMQ获得至少一个远端标签中的部分远端标签。在分次获得的部分远端标签中,确定与第一接收指令中的第二本地标签匹配的第一远端标签。
为了提高处理接收指令的效率,在本申请的其他实施例中,接收端中的NIC还可以同时对A个接收指令进行处理。接收端中的NIC同时对A个接收指令进行处理的流程与上述图5中的流程的区别在于:
接收指令的数量为A个。通过在单次匹配过程中,将A个接收指令中的本地标签与B个远端标签进行同时匹配的方式,将A个接收指令中的本地标签与分次获得的部分远端标签进行匹配。A和B为大于1的整数。
显然,在单次匹配过程中,同时将A个接收指令中的本地标签与B个远端标签进行匹配,提高了匹配速度。
需要说明的是,针对与第一接收指令中的第二本地标签匹配的第一远端标签,在UMQ cache和UMQ中释放该第一远端标签及其关联的自由缓冲区的地址。
综上,为从接收端的CPU接收的第一接收指令确定目标自由缓冲区的过程由网卡完成,而非通过软件完成,降低了确定目标自由缓冲区的过程对CPU资源的消耗,进一步提高了真正能够利用的CPU资源。此外,由于网卡、存储器和处理器之间通过片上总线互连,提高了网卡、存储器和处理器之间的通信效率,进而提高了确定目标自由缓冲区的效率。另外,在通过在CPU上运行软件进程来确定目标自由缓冲区的方式中,CPU不仅要执行确定目标自由缓冲区的进程,还需要执行其他功能的进程,而在本申请中,网卡不同于CPU,网卡为一个专用器件,不用像CPU一样执行更多功能的软件进程,因此,提高了确定目标自由缓冲区的效率。
由于目标自由缓冲区中的数据直接由网卡写入存储器中的标记缓冲区,第二接收指令 中的本地标签和标记缓冲区的地址由网卡直接写入存储器中的PRQ,不对操作系统造成任何影响,进一步降低了CPU资源的消耗。
下面,以通信设备为主机为例,对通信设备的一个应用场景进行说明。图6为本申请实施例提供的主机的应用场景示意图。如图6所示,主机HOST应用在多个节点组建的集群中,每个主机HOST代表一个节点。主机HOST包括CPU(处理器)、NIC(网卡)和MEMORY(存储器)。其中,CPU、NIC和MEMORY之间通过片上总线互联。CPU和NIC集成在一个芯片上。
NIC包括TAG MATCHING(标签匹配)、RDMA ENGINE(Remote Direct Memory Access ENGINE、远程直接数据存取引擎)和network interface(网络接口)。
TAG MATCHING用于确定目标标记缓冲区和目标自由缓冲区,RDMA ENGINE用于将消息传达的数据写入目标标记缓冲区中,以及将目标自由缓冲区中的数据写入接收指令所指示的标记缓冲区中。
CPU包括处理器核core,处理器核core包括NIC Driver(网卡驱动)和APP(应用程序,Application)。
MEMORY包括TAG BUFFERS(标记缓冲区)、FREE BUFFERS(自由缓冲区等缓冲区)和QUEUE BUFFERS(用于存储接收队列和非期望消息队列的队列缓冲区)。图6中的不同的主机之间通过上述数据通信方式通信。
需要说明的是,上述对通信设备的应用场景的描述仅为示例性的,并不用于限定本申请。
本申请还提供了一种通信方法,该通信方法应用在网卡上,该通信方法包括以下步骤:
为从网络接收的第一消息传达的数据确定目标标记缓冲区;其中,所述目标标记缓冲区为与所述第一消息匹配的第一本地标签关联的标记缓冲区,所述第一本地标签由处理器向所述网卡下发,所述网卡通过片上总线与所述处理器互连,所述网卡和所述处理器设置在同一个通信设备中。
在一种可能的实现方式中,所述方法还包括:将所述第一消息传达的数据写入所述目标标记缓冲区。
在一种可能的实现方式中,所述为从网络接收的第一消息传达的数据确定目标标记缓冲区包括:从接收队列包括的至少一个本地标签中,确定与所述第一消息中的远端标签匹配的第一本地标签;其中,所述接收队列存储在所述通信设备的存储器中,所述存储器通过所述片上总线与所述网卡和所述处理器互连;将所述第一本地标签关联的标记缓冲区,确定为所述目标标记缓冲区。
在一种可能的实现方式中,所述从接收队列包括的至少一个本地标签中,确定与所述第一消息中的远端标签匹配的第一本地标签包括:分次从所述接收队列中获得所述至少一个本地标签中的部分本地标签;在分次获得的所述部分本地标签中,确定与所述第一消息中的远端标签匹配的第一本地标签。
在一种可能的实现方式中,所述方法还包括:将从所述网络接收的第二消息传达的数据写入自由缓冲区,所述第二消息为未匹配到本地标签的消息,所述自由缓冲区为写入所 述第二消息传达的数据的缓冲区。
在一种可能的实现方式中,所述方法还包括:将所述自由缓冲区的地址和所述第二消息中的远端标签关联后写入非期望消息队列;其中,所述非期望消息队列存储在所述通信设备的存储器中,所述存储器通过所述片上总线与所述网卡和所述处理器互连。
在一种可能的实现方式中,所述方法还包括:为从所述处理器接收的第一接收指令确定目标自由缓冲区;其中,所述目标自由缓冲区为与所述第一接收指令匹配的第一远端标签所关联的自由缓冲区。
在一种可能的实现方式中,所述方法还包括:将所述目标自由缓冲区中的数据写入所述第一接收指令所指示的标记缓冲区中。
在一种可能的实现方式中,所述为从所述处理器接收的第一接收指令确定目标自由缓冲区包括:在所述非期望消息队列包括的至少一个远端标签中,确定与所述第一接收指令中的第二本地标签匹配的第一远端标签;将所述第一远端标签关联的自由缓冲区确定为所述目标自由缓冲区。
在一种可能的实现方式中,所述在所述非期望消息队列包括的至少一个远端标签中,确定与所述第一接收指令中的第二本地标签匹配的第一远端标签包括:分次从所述非期望消息队列获得所述至少一个远端标签中的部分远端标签;在分次获得的所述部分远端标签中,确定与所述第一接收指令中的第二本地标签匹配的第一远端标签。
在一种可能的实现方式中,所述方法还包括:将从所述处理器接收的第二接收指令中的本地标签和所述第二接收指令中的标记缓冲区的地址写入所述接收队列;所述第二接收指令为未匹配到远端标签的接收指令。
本申请的上述方法,其实现原理和技术效果已经在上文中进行了说明,此处不再赘述。
本申请还提供一种可读存储介质,存储介质中存储有指令,所述指令在网卡上被执行时,使得所述网卡执行上述任一种方法实施例的技术方案。
本申请还提供一种计算机程序产品,当所述计算机程序被网卡执行时,使网卡执行上述任一种方法实施例的技术方案。
本申请还提供一种芯片,包括处理器和网卡,所述网卡用于执行上述任一种方法实施例的技术方案。所述处理器被配置为向所述网卡下发消息接收指令。
进一步地,所述芯片还可以包括存储器和通信接口。所述通信接口可以是输入/输出接口、管脚或输入/输出电路等。
在实现过程中,上述方法实施例的各步骤可以通过网卡中的硬件的集成逻辑电路或者软件形式的指令完成。处理器可以是通用处理器、数字信号处理器(digital signal processor,DSP)、特定应用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。本申请实施例公开的方法的步骤可以直接体现为硬件编码处理器执行完成,或者用编码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
上述各实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖 在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (25)

  1. 一种通信设备,其特征在于,包括:网卡和处理器;
    其中,所述网卡通过片上总线与所述处理器互连;
    所述网卡,用于为从网络接收的第一消息传达的数据确定目标标记缓冲区;
    所述目标标记缓冲区为与所述第一消息匹配的第一本地标签关联的标记缓冲区,所述第一本地标签由所述处理器向所述网卡下发。
  2. 根据权利要求2所述的通信设备,其特征在于,所述网卡还用于:
    将所述第一消息传达的数据写入所述目标标记缓冲区。
  3. 根据权利要求1或2所述的通信设备,其特征在于,所述网卡通过下述方式确定所述目标标记缓冲区:
    从接收队列包括的至少一个本地标签中,确定与所述第一消息中的远端标签匹配的第一本地标签;
    其中,所述接收队列存储在所述通信设备的存储器中,所述存储器通过所述片上总线与所述网卡和所述处理器互连;
    将所述第一本地标签关联的标记缓冲区,确定为所述目标标记缓冲区。
  4. 根据权利要求3所述的通信设备,其特征在于,所述网卡通过下述方式确定所述第一本地标签:
    分次从所述接收队列中获得所述至少一个本地标签中的部分本地标签;
    在分次获得的所述部分本地标签中,确定与所述第一消息中的远端标签匹配的第一本地标签。
  5. 根据权利要求1~5中任一项所述的通信设备,其特征在于,所述网卡还用于:
    将从所述网络接收的第二消息传达的数据写入自由缓冲区,所述第二消息为未匹配到本地标签的消息,所述自由缓冲区为写入所述第二消息传达的数据的缓冲区。
  6. 根据权利要求5所述的通信设备,其特征在于,所述网卡还用于:
    将所述自由缓冲区的地址和所述第二消息中的远端标签关联后写入非期望消息队列;
    其中,所述非期望消息队列存储在所述通信设备的存储器中,所述存储器通过所述片上总线与所述网卡和所述处理器互连。
  7. 根据权利要求6所述的通信设备,其特征在于,所述网卡还用于:
    为从所述处理器接收的第一接收指令确定目标自由缓冲区;
    其中,所述目标自由缓冲区为与所述第一接收指令匹配的第一远端标签所关联的自由缓冲区。
  8. 根据权利要求7所述的通信设备,其特征在于,所述网卡还用于:
    将所述目标自由缓冲区中的数据写入所述第一接收指令所指示的标记缓冲区中。
  9. 根据权利要求7或8所述的通信设备,其特征在于,所述网卡通过下述方式确定所述目标自由缓冲区:
    在所述非期望消息队列包括的至少一个远端标签中,确定与所述第一接收指令中的第二本地标签匹配的第一远端标签;
    将所述第一远端标签关联的自由缓冲区确定为所述目标自由缓冲区。
  10. 根据权利要求9所述的通信设备,其特征在于,所述网卡通过下述方式确定所述第一远端标签:
    分次从所述非期望消息队列获得所述至少一个远端标签中的部分远端标签;
    在分次获得的所述部分远端标签中,确定与所述第一接收指令中的第二本地标签匹配的第一远端标签。
  11. 根据权利要求7~10中任一项所述的通信设备,其特征在于,所述网卡还用于:
    将从所述处理器接收的第二接收指令中的本地标签和所述第二接收指令中的标记缓冲区的地址写入所述接收队列;
    所述第二接收指令为未匹配到远端标签的接收指令。
  12. 一种通信方法,其特征在于,应用于网卡,包括:
    为从网络接收的第一消息传达的数据确定目标标记缓冲区;
    其中,所述目标标记缓冲区为与所述第一消息匹配的第一本地标签关联的标记缓冲区,所述第一本地标签由处理器向所述网卡下发,所述网卡通过片上总线与所述处理器互连,所述网卡和所述处理器设置在同一个通信设备中。
  13. 根据权利要求12所述的通信方法,其特征在于,所述方法还包括:
    将所述第一消息传达的数据写入所述目标标记缓冲区。
  14. 根据权利要求12或13所述的通信方法,其特征在于,所述为从网络接收的第一消息传达的数据确定目标标记缓冲区包括:
    从接收队列包括的至少一个本地标签中,确定与所述第一消息中的远端标签匹配的第一本地标签;
    其中,所述接收队列存储在所述通信设备的存储器中,所述存储器通过所述片上总线与所述网卡和所述处理器互连;
    将所述第一本地标签关联的标记缓冲区,确定为所述目标标记缓冲区。
  15. 根据权利要求14所述的通信方法,其特征在于,所述从接收队列包括的至少一 个本地标签中,确定与所述第一消息中的远端标签匹配的第一本地标签包括:
    分次从所述接收队列中获得所述至少一个本地标签中的部分本地标签;
    在分次获得的所述部分本地标签中,确定与所述第一消息中的远端标签匹配的第一本地标签。
  16. 根据权利要求12~15中任一项所述的通信方法,其特征在于,所述方法还包括:
    将从所述网络接收的第二消息传达的数据写入自由缓冲区,所述第二消息为未匹配到本地标签的消息,所述自由缓冲区为写入所述第二消息传达的数据的缓冲区。
  17. 根据权利要求16所述的通信方法,其特征在于,所述方法还包括:
    将所述自由缓冲区的地址和所述第二消息中的远端标签关联后写入非期望消息队列;
    其中,所述非期望消息队列存储在所述通信设备的存储器中,所述存储器通过所述片上总线与所述网卡和所述处理器互连。
  18. 根据权利要求17所述的通信方法,其特征在于,所述方法还包括:
    为从所述处理器接收的第一接收指令确定目标自由缓冲区;
    其中,所述目标自由缓冲区为与所述第一接收指令匹配的第一远端标签所关联的自由缓冲区。
  19. 根据权利要求18所述的通信方法,其特征在于,所述方法还包括:
    将所述目标自由缓冲区中的数据写入所述第一接收指令所指示的标记缓冲区中。
  20. 根据权利要求18或19所述的通信方法,其特征在于,所述为从所述处理器接收的第一接收指令确定目标自由缓冲区包括:
    在所述非期望消息队列包括的至少一个远端标签中,确定与所述第一接收指令中的第二本地标签匹配的第一远端标签;
    将所述第一远端标签关联的自由缓冲区确定为所述目标自由缓冲区。
  21. 根据权利要求20所述的通信方法,其特征在于,所述在所述非期望消息队列包括的至少一个远端标签中,确定与所述第一接收指令中的第二本地标签匹配的第一远端标签包括:
    分次从所述非期望消息队列获得所述至少一个远端标签中的部分远端标签;
    在分次获得的所述部分远端标签中,确定与所述第一接收指令中的第二本地标签匹配的第一远端标签。
  22. 根据权利要求18~21中任一项所述的通信方法,其特征在于,所述方法还包括:
    将从所述处理器接收的第二接收指令中的本地标签和所述第二接收指令中的标记缓冲区的地址写入所述接收队列;
    所述第二接收指令为未匹配到远端标签的接收指令。
  23. 一种可读存储介质,包括计算机程序,所述计算机程序在网卡上被运行时,使得所述网卡执行权利要求12~22中任一项所述的方法。
  24. 一种计算机程序产品,当所述计算机程序被网卡运行时,使得所述网卡执行权利要求12~22中任一项所述的方法。
  25. 一种芯片,其特征在于,包括处理器、网卡,所述处理器和所述网卡通过片上总线互联;
    所述网卡用于执行权利要求12~22中任一项所述的方法;
    所述处理器被配置为向所述网卡下发接收指令。
CN202180087386.2A 2021-04-30 2021-04-30 通信设备和通信方法 Pending CN116711282A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2021/091648 WO2022227053A1 (zh) 2021-04-30 2021-04-30 通信设备和通信方法

Publications (1)

Publication Number Publication Date
CN116711282A true CN116711282A (zh) 2023-09-05

Family

ID=83847541

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180087386.2A Pending CN116711282A (zh) 2021-04-30 2021-04-30 通信设备和通信方法

Country Status (2)

Country Link
CN (1) CN116711282A (zh)
WO (1) WO2022227053A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8249072B2 (en) * 2009-03-12 2012-08-21 Oracle America, Inc. Scalable interface for connecting multiple computer systems which performs parallel MPI header matching
CN101650698B (zh) * 2009-08-28 2011-11-16 曙光信息产业(北京)有限公司 直接存储器访问的实现方法
CN105871739B (zh) * 2016-06-17 2018-12-07 华为技术有限公司 一种处理报文的方法及计算设备
CN109768939B (zh) * 2018-11-27 2021-05-25 中国科学院计算技术研究所 一种支持优先级的标签化网络栈方法和系统

Also Published As

Publication number Publication date
WO2022227053A1 (zh) 2022-11-03

Similar Documents

Publication Publication Date Title
US20060047849A1 (en) Apparatus and method for packet coalescing within interconnection network routers
US10116746B2 (en) Data storage method and network interface card
CN110661725A (zh) 用于对出口上的网络分组进行重排序的技术
CN110958215A (zh) 安全的在线接收的网络分组处理
US11822811B2 (en) Method, electronic device and computer program product for processing data
CN114244790B (zh) PCIe设备与主机设备的通信方法、系统及设备
CN110457251B (zh) 一种多处理器间的数据通信方法及装置
CN109478171B (zh) 提高openfabrics环境中的吞吐量
CN112698959A (zh) 一种多核通信方法和装置
CN115964319A (zh) 远程直接内存访问的数据处理方法及相关产品
EP3542519B1 (en) Faster data transfer with remote direct memory access communications
US20140082120A1 (en) Efficient cpu mailbox read access to gpu memory
US8819305B2 (en) Directly providing data messages to a protocol layer
CN105939293B (zh) 一种skb回收方法及装置
US8687639B2 (en) Method and system for ordering posted packets and non-posted packets transfer
CN115878351B (zh) 消息的传输方法及装置、存储介质及电子装置
CN110958216B (zh) 安全的在线网络分组传输
US9288163B2 (en) Low-latency packet receive method for networking devices
CN113422792B (zh) 数据传输方法、装置、电子设备及计算机存储介质
CN116711282A (zh) 通信设备和通信方法
CN112422485A (zh) 一种传输控制协议的通信方法及装置
CN106325377B (zh) 外部设备扩展卡及输入输出外部设备的数据处理方法
CN103294560A (zh) 跨进程传递字符串的方法及装置
CN111615150B (zh) 基于PCIe接口的5G数据传输方法、装置、设备及存储介质
CN118427151B (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