[go: up one dir, main page]

CN116303173B - 减少rdma引擎片上缓存的方法、装置、系统及芯片 - Google Patents

减少rdma引擎片上缓存的方法、装置、系统及芯片 Download PDF

Info

Publication number
CN116303173B
CN116303173B CN202310564513.4A CN202310564513A CN116303173B CN 116303173 B CN116303173 B CN 116303173B CN 202310564513 A CN202310564513 A CN 202310564513A CN 116303173 B CN116303173 B CN 116303173B
Authority
CN
China
Prior art keywords
queue entry
message
rdma
fpsn
cqe
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
CN202310564513.4A
Other languages
English (en)
Other versions
CN116303173A (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.)
Shenzhen Yunque Intelligent Co., Ltd.
Original Assignee
Shenzhen Yunbao Intelligent 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 Shenzhen Yunbao Intelligent Co ltd filed Critical Shenzhen Yunbao Intelligent Co ltd
Priority to CN202310564513.4A priority Critical patent/CN116303173B/zh
Publication of CN116303173A publication Critical patent/CN116303173A/zh
Application granted granted Critical
Publication of CN116303173B publication Critical patent/CN116303173B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7846On-chip cache and off-chip main memory
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种减少RDMA引擎片上缓存的方法,其包括步骤:从主机内存读取本次发送队列条目,所述发送队列条目中至少包含fPSN;生成RDMA请求报文并发送给远端RDMA设备,并在发送队列条目缓存中删除与所述RDMA请求报文对应的发送队列条目;接收并解析ACK报文,获得其中的QPN、MSN以及PSN信息;根据QPN得到期望的消费者指针;向本端主机上报携带有所述指针的完成队列条目,以使本端主机获取相应的发送队列条目,并确定是否需要将所述完成队列条目上报给上层用户。本发明还公开了相应的装置、系统及芯片。实施本发明,可以节省RDMA引擎的缓存资源。

Description

减少RDMA引擎片上缓存的方法、装置、系统及芯片
技术领域
本发明涉及远程直接存储器存取(Remote Direct Memory Access,RDMA)技术领域,特别是涉及一种减少RDMA引擎片上缓存的方法、装置、系统及芯片。
背景技术
RDMA引擎在收到远端的ACK报文的时候,会根据ACK报文的MSN(消息序列号)来判断SQ WQE(发送队列条目)是否执行完成,如果执行完成则向本端主机(Host)上报CQE(Completion Queue Element,完成队列条目),RDMA引擎在上报CQE时需要读取对应的SQWQE,其中SQ WQE的cqe_ind(CQE上报指示)用于指示该SQ WQE是否需要上报CQE,只有cqe_ind为1时才上报CQE,为0则不需要上报CQE。
当RDMA引擎从自身内存中读取SQWQE时,如果相应的SQ WQE缓存miss(出错或丢失),则RDMA引擎需要通过PCIE再次去主机内存中读取该SQ WQE,需要占用PCIE的带宽。如果在RDMA引擎中设计一个尺寸较大的缓存空间(cache)来缓存所有未上报CQE的SQ WQE,则会导致芯片的功耗和面积增大。
因此,如何在SQ WQE缓存miss的时候,尽量实现不占用太多的PCIE带宽,以及降低芯片的面积成为亟待解决的问题。
发明内容
本发明所要解决的技术问题在于,提供一种减少RDMA引擎片上缓存的方法、装置、系统及芯片,可以节省RDMA引擎的缓存资源。
为解决上述技术问题,作为本发明的一方面,提供一种减少RDMA引擎片上缓存的方法,其至少包括如下步骤:
在需要进行远程访问操作时,从主机内存读取本次发送队列条目SQ WQE,并存入SQ WQE缓存中;
生成RDMA请求报文并发送给远端RDMA设备,并在SQ WQE缓存中删除与所述RDMA请求报文对应的SQ WQE;
接收并解析来自远端RDMA设备的ACK报文,并至少获得所述ACK报文中的队列号QPN;
根据所述队列号QPN从队列管理上下文QPC缓存中获取相应的QPC,从所述QPC得到期望的消费者指针ECI;
向本端主机上报携带有所述ECI的完成队列条目CQE,以使本端主机根据所述ECI从主机内存中获取相应的SQ WQE,并确定是否需要将所述CQE上报给上层用户。
其中,所述本端主机根据所述ECI从主机内存中获取相应的SQWQE,并确定是否需要将所述CQE上报给上层用户,进一步包括:
根据所述ECI从主机内存中索引获取相应的SQWQE,根据所述SQ WQE中的cqe_ind确定是否需要向上层用户进行上报;如果cqe_ind为1,则需要将所述SQ WQE的CQE上报给上层用户,如果cqe_ind为0,则将当前CQE丢弃。
其中,进一步包括:
在每次CQE上报完成后,将ACK报文携带的包序列号PSN加1作为期望包的序列号ePSN,并保存到QPC缓存的QPC中。
其中,进一步包括:
在上报一次CQE后,将当前ECI值加1,根据ACK报文携带的消息序列号MSN确定是否继续上报后续的CQE。
其中,进一步包括:所述发送队列条目(SQ WQE)中具有该发送队列条目对应的首包序列号(fPSN);
在接收来自远端RDMA设备的报文过程中,如果判断到需要对RDMA请求报文进行断点重传时,向主机内存请求获取相应的发送队列条目,并至少根据所述发送队列条目中存储的首包序列号(fPSN)确定断点重传的位置。
其中,进一步包括:本端主机通过下述方式为每个发送队列条目生成对应消息的首包序列号fPSN,并存入主机内存的发送队列条目中::
如果所述SQ WQE为首个,则本端主机在与远端RDMA设备建立链接时协商确定其fPSN;
否则,采用下述公式计算当前的SQ WQE对应的fPSN:
fPSN=上一个SQ WQE的fPSN+ceil(messagelength/PMTU)
其中,message length为上一个SQ WQE的消息长度,ceil为向上取整函数,PMTU为路径最大传输单元的长度值;当message length为0时,将ceil(message length/PMTU))赋值为1;
将所获得的fPSN存入主机内存的所述SQWQE中。
其中,所述至少根据所述发送队列条目中存储的首包序列号(fPSN)确定断点重传的位置,进一步包括:
在需要对RDMA请求报文进行断点重传时,根据QPC中存储的ECI,向主机内存请求获取所述ECI对应的SQ WQE;
根据所述SQ WQE中的fPSN以及从QPC中获取的当前ePSN,以下式计算确定重传报文的首字节:
SQ WQE对应的首字节+(ePSN-fPSN)*PMTU。
相应地,本发明的再一方面,还提供一种减少RDMA引擎片上缓存的装置,应用于RDMA引擎中,其至少包括:
发送队列条目读取单元,用于在需要进行远程访问操作时,从主机内存读取本次发送队列条目SQ WQE,并存入SQ WQE缓存中;
请求发送处理单元,用于生成RDMA请求报文并发送给远端RDMA设备,并在SQ WQE缓存中删除与所述RDMA请求报文对应的SQ WQE;
响应报文解析单元,用于接收并解析来自远端RDMA设备的ACK报文,并至少获得所述ACK报文中的队列号QPN;
ECI获取单元,用于根据所述队列号QPN从队列管理上下文QPC缓存中获取相应的QPC,从所述QPC得到期望的消费者指针ECI;
CQE上报单元,用于向本端主机上报携带有所述ECI的完成队列条目CQE,以使本端主机根据所述ECI从主机内存中获取相应的SQ WQE,并确定是否需要将所述CQE上报给上层用户。
其中,进一步包括:
ePSN处理单元,用于在每次CQE上报完成后,将ACK报文携带的PSN加1作为期望包的序列号ePSN,并保存到QPC缓存的QPC中;
CQE继续上报判断单元,用于在上报一次CQE后,将当前ECI值加1,根据ACK报文携带的消息序列号MSN确定是否继续上报后续的CQE。
其中,进一步包括:
重传处理单元,用于在需要对RDMA请求报文进行断点重传时,根据QPC中存储的ECI,向主机内存请求获取所述ECI对应的SQ WQE;并根据所述SQ WQE中的fPSN以及从QPC中获取的当前ePSN,以下式计算确定重传报文的首字节:SQ WQE对应的首字节+(ePSN-fPSN)*PMTU。
相应地,本发明的再一方面,还提供一种减少RDMA引擎片上缓存的系统,至少包括本端主机、主机内存以及RDMA引擎,其中:
所述RDMA引擎包括有QPC缓存、SQ WQE缓存以及如前述的减少RDMA引擎片上缓存的装置。
其中,所述本端主机进一步包括:
fPSN计算处理单元,用于通过下述方式生成对应的消息的首包序列号fPSN并存储:
如果所述SQ WQE为首个,则本端主机在与远端RDMA设备建立链接时协商确定其fPSN;
否则,采用下述公式计算当前的SQ WQE对应的fPSN:
上一个SQ WQE的fPSN+ceil(messagelength/PMTU)
其中,message length为上一个SQ WQE的消息长度,ceil为向上取整函数,PMTU为路径最大传输单元的长度值;当message length为0时,将ceil(message length/PMTU))赋值为1;
存储处理单元,用于将所获得的fPSN存入主机内存的所述SQWQE中。
其中,所述本端主机进一步包括:
上报判断处理单元,用于根据完成队列条目CQE中的ECI从主机内存中索引获取相应的SQ WQE,根据所述SQ WQE中的cqe_ind确定是否需要向上层用户进行上报;如果cqe_ind为1,则需要将所述SQ WQE的CQE上报给上层用户,如果cqe_ind为0,则将当前CQE丢弃。
本发明的再一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述的方法的步骤。
本发明的再一方面,还提供一种芯片,其集成有如前述的减少RDMA引擎片上缓存的系统。
实施本发明实施例,具有如下的有益效果:
本发明提供一种减少RDMA引擎片上缓存的方法、装置、系统及芯片。通过在将RDMA请求报文发送给远端RDMA设备后,将该发送队列条目删除,并且在上报CQE时只需携带对应SQ WQE的index,由本端主机根据该index去索引得到SQ WQE对应的opcode和cqe_ind,即RDMA引擎在上报CQE时无需读取SQ WQE,从而在RDMA引擎中不再需要提供缓存资源用于缓存已经被发送侧处理但仍未报告CQE的SQ WQE,从而节省了RDMA引擎的缓存资源。
此外,通过在SQ WQE增加fPSN域段,该域段由本端主机将SQ WQE放入到SQ时计算得到。在RDMA引擎发生重传时,只需要从主机内存中读取当前重传的SQWQE就可以得到fPSN,然后和QPC内的ePSN结合能得到准确的重传点,从而支持断点重传功能,还能够减少总体上对PCIE带宽的占用。
故本发明可以有效减少RDMA引擎片上缓存的使用,从而在有限的片上缓存的情况下提高RDMA的链接规模,同时能支持断点重传的功能,减少PCIE带宽的占用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,根据这些附图获得其他的附图仍属于本发明的范畴。
图1为本发明提供的一种减少RDMA引擎片上缓存的方法的一个实施例的主流程示意图;
图2为本发明涉及的方法的应用环境示意图;
图3为本发明提供的一种减少RDMA引擎上缓存的装置的一个实施例的结构示意图;
图4为图3中本端主机的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
如图1所示,示出了本发明提供的一种减少RDMA引擎片上缓存的方法的一个实施例的主流程示意图;一并结合图2所示,在本实施例中,所述方法运行于所述RDMA引擎中,所述方法至少包括如下的步骤:
步骤S10,在需要进行远程访问操作时,RDMA引擎从主机内存读取本次发送队列条目SQ WQE,并存入SQ WQE缓存中,所述SQ WQE中至少包含有本端主机生成的对应的消息的首包序列号fPSN,在一个消息中可能包含不止一个报文,故需要确定消息的首包序列号fPSN以进行相应的定位;
其中,远程访问操作包括RDMA支持的通信原语,例如RDMAWrite、RDMA Read、Send等操作;
步骤S11,RDMA引擎生成RDMA请求报文并发送给远端RDMA设备,并在SQ WQE缓存中删除与所述RDMA请求报文对应的SQ WQE;
步骤S12,RDMA引擎接收并解析来自远端RDMA设备的响应报文,当该响应报文为ACK报文,获得所述ACK报文中的队列号QPN、消息序列号MSN以及包序列号PSN;
步骤S13,RDMA引擎根据所述队列号QPN从队列管理上下文缓存中获取相应的QPC,从所述QPC得到期望的消费者指针ECI;
步骤S14,RDMA引擎向本端主机上报携带有所述ECI的完成队列条目CQE,以使本端主机根据所述ECI从主机内存中获取相应的SQ WQE,并确定是否需要将所述CQE上报给上层用户。
可以理解的是,在本发明的具体例子中,RDMA引擎还需要实现如下的步骤:
在每次CQE上报完成后,RDMA引擎将ACK报文携带的PSN加1作为期望包的序列号ePSN,并保存到队列管理上下文缓存的QPC中。
以及在上报一次CQE后,RDMA引擎将当前ECI值加1,根据消息序列号MSN确定是否继续上报后续的CQE。可以理解的是,ECI为期望的消费者指针,保存在QPC里面,用来指示下一个上报CQE的SQ WQE的指针(index)。MSN为消息序列号,用于指示MSN减1之前的SQ WQE已经执行完成。例如在一个例子中,当前的ECI为0,当收到一个ACK报文,报文携带的MSN为10时,那么RDMA引擎可以将index为0~9的SQ WQE的CQE都进行上报处理。
可以理解的是,在本发明的具体例子中,RDMA引擎还支持实现断点重传的功能,在接收来自远端RDMA设备的报文过程中,如果判断到需要对RDMA请求报文进行断点重传时(具体根据预先制订的检测错误的机制来判断),向主机内存请求获取相应的发送队列条目,并至少根据所述发送队列条目中存储的首包序列号(fPSN)确定断点重传的位置。具体地进一步包括:
在需要对RDMA请求报文进行断点重传时,RDMA引擎根据QPC中存储的ECI,向主机内存请求获取所述ECI对应的SQ WQE;
RDMA引擎根据所述SQ WQE中的fPSN以及从QPC中获取的当前ePSN,以下式计算确定重传报文的首字节:
SQ WQE对应的首字节+(ePSN-fPSN)*PMTU。
可以理解的是,在本发明的具体例子中,还需要本端主机实现相应的功能。
具体地,进一步包括:本端主机通过下述方式生成对应的消息的首包序列号fPSN并存储:
如果所述SQ WQE为首个,则本端主机在与远端RDMA设备建立链接时协商确定其fPSN;
否则,采用下述公式计算当前的SQ WQE对应的fPSN=
上一个SQ WQE的fPSN+ceil(messagelength/PMTU)
其中,message length为上一个SQ WQE的消息长度,ceil为向上取整函数,PMTU为路径最大传输单元的长度值;当message length为0时,将ceil(message length/PMTU))赋值为1;
将所获得的fPSN存入主机内存的所述SQWQE中。
可以理解的是,在本发明的具体例子中,所述本端主机根据所述ECI从主机内存中获取相应的SQWQE,并确定是否需要将所述CQE上报给上层用户,进一步包括:
根据所述ECI从主机内存中索引获取相应的SQWQE,根据所述SQ WQE中的cqe_ind确定是否需要向上层用户进行上报;如果cqe_ind为1,则需要将所述SQ WQE的CQE上报给上层用户,如果cqe_ind为0,则将当前CQE丢弃。
下述结合图2,对本发明涉及的更详细的完整流程及原理进行说明如下:
步骤1,本端主机将发送队列条目SQWQE放入发送队列SQ中时,需要计算该SQ WQE对应的消息的首包序列号fPSN并将fPSN放到存储于本机内存的SQ WQE里面。
其中,首个SQ WQE对应的fPSN是建链的时候协商的;非首个SQ WQE的fPSN是根据上一个SQ WQE携带的消息长度(message length)和PMTU值计算得到,当前的SQ WQE的fPSN等于上一个SQ WQE的fPSN加上ceil(messagelength/PMTU),其中,message length是上一个SQ WQE的消息长度,ceil是向上取整函数,另外当message length为0的时候,用1来代替ceil(messagelength/PMTU));在本发明实施例中提供的SQ WQE中,其至少包含有fPSN、操作码(opcode)和CQE指示值(cqe_ind)。
步骤2,本端主机将发送队列门铃寄存器(SQdoorbell)进行下发。
步骤3,RDMA引擎根据所述发送队列门铃寄存器的信息,从主机内存中读取相应的SQ WQE并存入其SQ WQE缓存,但RDMA引擎在处理完一个SQ WQE后立即将该SQ WQE从SQ WQE缓存内无效化(删除),因为当该SQ WQE对应的CQE上报的时候,RDMA引擎不再需要从其缓存中读取相应的SQ WQE。
步骤4,RDMA引擎生成RDMA请求报文,并将该RDMA请求报文发往远端,具体地,可以是诸如SEND、RDMA READ、RDMA WRITE报文等。
步骤5,经过往返时间(RTT)后,RDMA引擎接收到网络侧ACK或者READ RESPONSE报文;如果是ACK报文,则执行步骤6;
如果不是ACK报文,当发生断点重传的时候,RDMA引擎需要计算重传报文首地址。
步骤6,如果是ACK报文,则解析报文得到QPN(队列号)、MSN(消息序列号)、PSN(包序列号),其中,MSN用于指示“MSN减1”之前的SQ WQE已经执行完成。RDMA引擎先通过QPN(队列号)得到QPC(队列管理的上下文),然后从QPC得到ECI(期望的消费者指针),所述ECI表示下一个上报CQE的SQ WQE对应的指针(index)。
步骤7,RDMA引擎不需要根据ECI读取SQ WQE,只需要在上报时携带该ECL,即将ECI作为上报CQE的SQ WQE对应的index。
步骤8,当ECI对应的SQ WQE上报CQE后,RDMA引擎会将ECI加1,然后继续上报CQE,直到MSN减1对应的SQ WQE的CQE上报完成。
可以理解的是,ECI表示下一个要完成的SQWQE的index,而MSN表示MSN-1之前的SQWQE都可以完成。例如,当前的ECI为0,当收到一个ACK报文,报文携带的MSN为10时,那么RDMA引擎可以将index为0~9的SQ WQE的CQE都进行上报处理。
步骤9,本端主机在处理RDMA引擎上报的CQE时,通过CQE携带的ECI(即SQ WQE的index)索引得到SQ WQE中对应的opcode和 cqe_ind,如果cqe_ind为1则指示该SQ WQE需要上报CQE给上层用户;如果cqe_ind为0,则说明该SQ WQE不需要报告CQE给上层用户,由本端主机将RDMA引擎报告的CQE丢弃。
步骤10,RDMA引擎不需要保存SQ WQE的fPSN到QPC中,只需要将ACK报文携带的psn加1作为ePSN保存到QPC。
当发生断点重传的时候,RDMA引擎根据QPC内的ECI从主机内存读取SQ WQE从而得到fPSN,然后从QPC得到ePSN,通过计算得到重传报文的首字节,具体本计算方式为:SQWQE对应的首字节+(ePSN-fPSN)*PMTU。
可以理解的是,本发明提供的方法,通过在将RDMA请求报文发送给远端RDMA设备后,将该发送队列条目删除,并且在上报CQE时只需携带对应SQ WQE的index,由本端主机根据该index去索引得到SQ WQE对应的opcode和cqe_ind,即RDMA引擎在上报CQE时无需读取SQ WQE,从而在RDMA引擎中不再需要提供缓存资源用于缓存已经被发送侧处理但仍未报告CQE的SQ WQE,从而节省了RDMA引擎的缓存资源。
此外,通过在SQ WQE增加fPSN域段,该域段由本端主机将SQ WQE放入到SQ时计算得到。在RDMA引擎发生重传时,只需要从主机内存中读取当前重传的SQWQE就可以得到fPSN,然后和QPC内的ePSN结合能得到准确的重传点,从而支持断点重传功能。由于发生断点重传的机会很小,因而本发明实施例方案在能够支持断点重传功能的同时,还能够减少总体上对PCIE带宽的占用。
如图3所示,示出了本发明提供的一种减少RDMA引擎片上缓存的装置的一个实施例的结构示意图。所述减少RDMA引擎片上缓存的装置1应用于如图2所示的RDMA引擎中,其至少包括:
发送队列条目读取单元10,用于在需要进行远程访问操作时,从主机内存读取本次发送队列条目SQ WQE,并存入SQ WQE缓存中,所述SQ WQE中至少包含有本端主机生成的对应的消息的首包序列号fPSN;
请求发送处理单元11,用于生成RDMA请求报文并发送给远端RDMA设备,并在SQWQE缓存中删除与所述RDMA请求报文对应的SQ WQE;
响应报文解析单元12,用于接收并解析来自远端RDMA设备的ACK报文,并获得所述ACK报文中的队列号QPN、消息序列号MSN以及包序列号PSN;
ECI获取单元13,用于根据所述队列号QPN从队列管理上下文QPC缓存中获取相应的QPC,从所述QPC得到期望的消费者指针ECI;
CQE上报单元14,用于向本端主机上报携带有所述ECI的完成队列条目CQE,以使本端主机根据所述ECI从主机内存中获取相应的SQ WQE,并确定是否需要将所述CQE上报给上层用户。
在一个具体的例子中,所述装置1进一步包括:
ePSN处理单元15,用于在每次CQE上报完成后,将ACK报文携带的PSN加1作为期望包的序列号ePSN保存到队列管理上下文缓存的QPC中;
CQE继续上报判断单元16,用于在上报一次CQE后,将当前ECI值加1,根据消息序列号MSN确定是否继续上报后续的CQE;以及
重传处理单元17,用于在需要对RDMA请求报文进行断点重传时,根据QPC中存储的ECI,向主机内存请求获取所述ECI对应的SQ WQE;并根据所述SQ WQE中的fPSN以及从QPC中获取的当前ePSN,以下式计算确定重传报文的首字节=SQ WQE对应的首字节+(ePSN-fPSN)*PMTU。
更多细节,可以参考并结合前述对图1和图2的描述,在此不进行赘述。
相应地,本发明的再一方面,还提供一种减少RDMA引擎片上缓存的系统,具体可以参考图2所示,所述减少RDMA引擎片上缓存的系统至少包括本端主机 2、主机内存以及RDMA引擎,其中:
所述RDMA引擎包括有QPC缓存、SQ WQE缓存以及如图3示出的减少RDMA引擎片上缓存的装置1。
其中,所述本端主机2进一步包括:
fPSN计算处理单元20,用于通过下述方式生成对应的消息的首包序列号fPSN并存储:
如果所述SQ WQE为首个,则本端主机在与远端RDMA设备建立链接时协商确定其fPSN;
否则,采用下述公式计算当前的SQ WQE对应的fPSN:
上一个SQ WQE的fPSN+ceil(messagelength/PMTU)
其中,message length为上一个SQ WQE的消息长度,ceil为向上取整函数,PMTU为路径最大传输单元的长度值;当message length为0时,将ceil(message length/PMTU))赋值为1;
存储处理单元21,用于将所获得的fPSN存入主机内存的所述SQ WQE中。
其中,所述本端主机进一步包括:
上报判断处理单元22,用于根据完成队列条目CQE中的ECI从主机内存中索引获取相应的SQ WQE,根据所述SQ WQE中的cqe_ind确定是否需要向上层用户进行上报;如果cqe_ind为1,则需要将所述SQ WQE的CQE上报给上层用户,如果cqe_ind为0,则将当前CQE丢弃。
更多的细节,可以参考并前述对图3的描述,在此不进行赘述。
本发明的再一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述图1至图2描述的方法的步骤。更多细节,可以参考前述对图1和图2的描述,在此不进行赘述。
本发明的再一方面,还提供一种芯片,其集成有如前述结合图3和图4描述的减少RDMA引擎上缓存的系统。更多细节,可以参考前述对图3图4描述,在此不进行赘述。
实施本发明实施例,具有如下的有益效果:
本发明提供一种减少RDMA引擎片上缓存的方法、装置、系统、芯片及存储介质。通过在SQ WQE增加fPSN域段,该域段由本端主机将SQ WQE放入到SQ时计算得到。RDMA引擎在上报CQE时只需携带对应SQ WQE的index,由本端主机根据该index去索引得到SQ WQE对应的opcode和cqe_ind,即RDMA引擎在上报CQE时无需读取SQ WQE,从而在RDMA引擎中不再需要提供缓存资源用于缓存已经被发送侧处理但仍未报告CQE的SQ WQE,从而节省了RDMA引擎的缓存资源。
同时,在RDMA引擎发生重传时,只需要从主机内存中读取当前重传的SQ WQE就可以得到fPSN,然后和QPC内的ePSN结合能得到准确的重传点,从而支持断点重传功能。
故本发明可以有效减少RDMA引擎片上缓存的使用,从而在有限的片上缓存的情况下提高RDMA的链接规模。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (15)

1.一种减少RDMA引擎片上缓存的方法,其特征在于,至少包括如下步骤:
在需要进行远程访问操作时,从主机内存读取本次发送队列条目SQ WQE,并存入发送队列条目缓存中;
生成RDMA请求报文并发送给远端RDMA设备,并在发送队列条目缓存中删除与所述RDMA请求报文对应的发送队列条目;
接收并解析来自远端RDMA设备的响应报文,当确定所述响应报文为ACK报文,至少获得所述ACK报文中的队列号QPN;
根据所述队列号从队列管理上下文QPC缓存中获取相应的队列管理上下文,从所述队列管理上下文得到期望的消费者指针ECI;
向本端主机上报携带有所述指针的完成队列条目CQE,以使本端主机根据所述ECI从主机内存中获取相应的发送队列条目,并确定是否需要将所述完成队列条目上报给上层用户。
2.如权利要求1所述的方法,其特征在于,所述本端主机根据所述ECI从主机内存中获取相应的发送队列条目,并确定是否需要将所述完成队列条目上报给上层用户,进一步包括:
根据所述ECI从主机内存中索引获取相应的发送队列条目,根据所述发送队列条目中的cqe_ind确定是否需要向上层用户进行上报;如果cqe_ind为1,则需要将所述发送队列条目的完成队列条目上报给上层用户,如果cqe_ind为0,则将当前完成队列条目丢弃。
3.如权利要求2所述的方法,其特征在于,进一步包括:
在每次完成队列条目上报完成后,将ACK报文携带的包序列号PSN加1作为期望包的序列号ePSN,并保存到队列管理上下文中。
4.如权利要求3所述的方法,其特征在于,进一步包括:
在上报一次完成队列条目后,将当前ECI值加1,根据ACK报文携带的消息序列号MSN确定是否继续上报后续的完成队列条目。
5.如权利要求1至4任一项所述的方法,其特征在于:
所述发送队列条目SQ WQE中具有该发送队列条目对应的首包序列号fPSN;
在接收来自远端RDMA设备的响应报文后,如果判断到需要对RDMA请求报文进行断点重传时,向主机内存请求获取相应的发送队列条目,并至少根据所述发送队列条目中存储的首包序列号fPSN确定断点重传的位置。
6.如权利要求5所述的方法,其特征在于:本端主机通过下述方式为每个发送队列条目生成对应消息的首包序列号fPSN,并存入主机内存的发送队列条目中:
如果所述发送队列条目为首个,则本端主机在与远端RDMA设备建立链接时协商确定其fPSN;
否则,当前发送队列条目对应的fPSN=上一个发送队列条目的fPSN+ceil(messagelength/PMTU)
其中,message length为上一个发送队列条目的消息长度,ceil为向上取整函数,PMTU为路径最大传输单元的长度值;当message length为0时,将ceil(message length/PMTU))赋值为1;
将所获得的fPSN存入主机内存的所述发送队列条目中。
7.如权利要求6所述的方法,其特征在于,所述至少根据所述发送队列条目中存储的首包序列号fPSN确定断点重传的位置,进一步包括:
在需要对RDMA请求报文进行断点重传时,根据队列管理上下文中存储的ECI,向主机内存请求获取所述ECI对应的发送队列条目;
根据所述发送队列条目中的fPSN以及从队列管理上下文中获取的当前ePSN,确定重传报文的首字节=发送队列条目对应的首字节+(ePSN-fPSN)*PMTU。
8.一种减少RDMA引擎片上缓存的装置,应用于RDMA引擎中,其特征在于,至少包括:
发送队列条目读取单元,用于在需要进行远程访问操作时,从主机内存读取本次发送队列条目SQ WQE,并存入发送队列条目缓存中;
请求发送处理单元,用于生成RDMA请求报文并发送给远端RDMA设备,并在发送队列条目缓存中删除与所述RDMA请求报文对应的发送队列条目;
响应报文解析单元,用于接收并解析来自远端RDMA设备的响应报文,当确定所述响应报文为ACK报文,至少获得所述ACK报文中的队列号QPN;
ECI获取单元,用于根据所述队列号从队列管理上下文QPC缓存中获取相应的队列管理上下文,从所述队列管理上下文得到期望的消费者指针ECI;
CQE上报单元,用于向本端主机上报携带有所述指针的完成队列条目CQE,以使本端主机根据所述ECI从主机内存中获取相应的发送队列条目,并确定是否需要将所述完成队列条目上报给上层用户。
9.如权利要求8所述的装置,进一步包括:
ePSN处理单元,用于在每次CQE上报完成后,将ACK报文携带的包序列号PSN加1作为期望包的序列号ePSN,并保存到QPC缓存的QPC中;
CQE继续上报判断单元,用于在上报一次CQE后,将当前ECI值加1,根据ACK报文携带的消息序列号MSN确定是否继续上报后续的CQE。
10.如权利要求9所述的装置,其特征在于,进一步包括:
重传处理单元,用于在判断到需要对RDMA请求报文进行断点重传时,根据QPC中存储的ECI,向主机内存请求获取所述ECI对应的发送队列条目;并根据所述发送队列条目中的fPSN以及从QPC中获取的当前ePSN,计算确定重传报文的首字节=发送队列条目对应的首字节+(ePSN-fPSN)*PMTU。
11.一种减少RDMA引擎片上缓存的系统,至少包括本端主机、主机内存、RDMA引擎,其特征在于,其中:
所述RDMA引擎包括有QPC缓存、发送队列条目缓存以及如权利要求8-10任一项所述的减少RDMA引擎片上缓存的装置。
12.如权利要求11所述的系统,其特征在于,所述本端主机进一步包括:
fPSN计算处理单元,用于通过下述方式生成对应的消息的首包序列号fPSN并存储:
如果所述发送队列条目为首个,则本端主机在与远端RDMA设备建立链接时协商确定其fPSN;
否则,根据下式确定当前的发送队列条目对应的fPSN:
当前的fPSN=上一个发送队列条目的fPSN+ceil(messagelength/PMTU)
其中,message length为上一个发送队列条目的消息长度,ceil为向上取整函数,PMTU为路径最大传输单元的长度值;当message length为0时,将ceil(message length/PMTU))赋值为1;
存储处理单元,用于将所获得的fPSN存入主机内存的所述发送队列条目中。
13.如权利要求12所述的系统,所述本端主机进一步包括:
上报判断处理单元,用于根据完成队列条目中的ECI从主机内存中索引获取相应的发送队列条目,根据所述发送队列条目中的cqe_ind确定是否需要向上层用户进行上报;如果cqe_ind为1,则需要将所述发送队列条目的完成队列条目上报给上层用户,如果cqe_ind为0,则将当前完成队列条目丢弃。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的方法的步骤。
15.一种芯片,其特征在于,集成有如权利要求11至13任一项所述的减少RDMA引擎片上缓存的系统。
CN202310564513.4A 2023-05-19 2023-05-19 减少rdma引擎片上缓存的方法、装置、系统及芯片 Active CN116303173B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310564513.4A CN116303173B (zh) 2023-05-19 2023-05-19 减少rdma引擎片上缓存的方法、装置、系统及芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310564513.4A CN116303173B (zh) 2023-05-19 2023-05-19 减少rdma引擎片上缓存的方法、装置、系统及芯片

Publications (2)

Publication Number Publication Date
CN116303173A CN116303173A (zh) 2023-06-23
CN116303173B true CN116303173B (zh) 2023-08-08

Family

ID=86827292

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310564513.4A Active CN116303173B (zh) 2023-05-19 2023-05-19 减少rdma引擎片上缓存的方法、装置、系统及芯片

Country Status (1)

Country Link
CN (1) CN116303173B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117687795B (zh) * 2024-01-25 2024-05-10 珠海星云智联科技有限公司 用于远程直接内存访问的硬件卸载方法、设备及介质
CN118301100A (zh) * 2024-04-24 2024-07-05 深圳云豹智能有限公司 报文重排方法、装置、芯片、设备、存储介质及程序产品
CN118694490A (zh) * 2024-07-17 2024-09-24 成都云豹创芯智能科技有限公司 报文发送装置及接收装置
CN119342001A (zh) * 2024-10-17 2025-01-21 无锡众星微系统技术有限公司 一种网络通信系统及方法
CN119512996B (zh) * 2024-10-18 2025-11-07 无锡众星微系统技术有限公司 一种远程直接存储器访问设备及方法
CN119211151B (zh) * 2024-11-21 2025-03-14 杭州菲田云计算有限公司 报文转发方法、网卡、网关设备、存储介质和程序

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103647807A (zh) * 2013-11-27 2014-03-19 华为技术有限公司 一种信息缓存方法、装置和通信设备
US10860511B1 (en) * 2015-12-28 2020-12-08 Western Digital Technologies, Inc. Integrated network-attachable controller that interconnects a solid-state drive with a remote server computer
CN112463654A (zh) * 2019-09-06 2021-03-09 华为技术有限公司 一种带预测机制的cache实现方法
CN112559436A (zh) * 2020-12-16 2021-03-26 中国科学院计算技术研究所 一种rdma通信设备的上下文访问方法及系统
CN113849293A (zh) * 2021-11-30 2021-12-28 湖北芯擎科技有限公司 数据处理方法、装置、系统及计算机可读存储介质
CN113986791A (zh) * 2021-09-13 2022-01-28 西安电子科技大学 一种智能网卡快速dma设计方法、系统、设备及终端
CN114090274A (zh) * 2020-07-31 2022-02-25 华为技术有限公司 网络接口卡、存储装置、报文接收方法和发送方法
CN115002047A (zh) * 2022-05-20 2022-09-02 北京百度网讯科技有限公司 一种远程直接数据存取方法、装置、设备以及存储介质
CN115470156A (zh) * 2022-09-13 2022-12-13 深圳云豹智能有限公司 基于rdma的内存使用方法、系统、电子设备和存储介质
CN115629840A (zh) * 2022-10-19 2023-01-20 深圳云豹智能有限公司 一种rdma虚拟机热迁移的方法、系统及相应物理机
CN115633104A (zh) * 2022-09-13 2023-01-20 江苏为是科技有限公司 数据发送方法、数据接收方法、装置及数据收发系统
CN115982091A (zh) * 2023-03-21 2023-04-18 深圳云豹智能有限公司 基于rdma引擎的数据处理方法与系统、介质、设备
CN116016570A (zh) * 2022-12-29 2023-04-25 深圳云豹智能有限公司 报文处理方法、装置和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060075067A1 (en) * 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access with striping over an unreliable datagram transport

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103647807A (zh) * 2013-11-27 2014-03-19 华为技术有限公司 一种信息缓存方法、装置和通信设备
US10860511B1 (en) * 2015-12-28 2020-12-08 Western Digital Technologies, Inc. Integrated network-attachable controller that interconnects a solid-state drive with a remote server computer
CN112463654A (zh) * 2019-09-06 2021-03-09 华为技术有限公司 一种带预测机制的cache实现方法
CN114090274A (zh) * 2020-07-31 2022-02-25 华为技术有限公司 网络接口卡、存储装置、报文接收方法和发送方法
CN112559436A (zh) * 2020-12-16 2021-03-26 中国科学院计算技术研究所 一种rdma通信设备的上下文访问方法及系统
CN113986791A (zh) * 2021-09-13 2022-01-28 西安电子科技大学 一种智能网卡快速dma设计方法、系统、设备及终端
CN113849293A (zh) * 2021-11-30 2021-12-28 湖北芯擎科技有限公司 数据处理方法、装置、系统及计算机可读存储介质
CN115002047A (zh) * 2022-05-20 2022-09-02 北京百度网讯科技有限公司 一种远程直接数据存取方法、装置、设备以及存储介质
CN115470156A (zh) * 2022-09-13 2022-12-13 深圳云豹智能有限公司 基于rdma的内存使用方法、系统、电子设备和存储介质
CN115633104A (zh) * 2022-09-13 2023-01-20 江苏为是科技有限公司 数据发送方法、数据接收方法、装置及数据收发系统
CN115629840A (zh) * 2022-10-19 2023-01-20 深圳云豹智能有限公司 一种rdma虚拟机热迁移的方法、系统及相应物理机
CN116016570A (zh) * 2022-12-29 2023-04-25 深圳云豹智能有限公司 报文处理方法、装置和系统
CN115982091A (zh) * 2023-03-21 2023-04-18 深圳云豹智能有限公司 基于rdma引擎的数据处理方法与系统、介质、设备

Also Published As

Publication number Publication date
CN116303173A (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
CN116303173B (zh) 减少rdma引擎片上缓存的方法、装置、系统及芯片
US11695669B2 (en) Network interface device
US7089289B1 (en) Mechanisms for efficient message passing with copy avoidance in a distributed system using advanced network devices
US6799200B1 (en) Mechanisms for efficient message passing with copy avoidance in a distributed system
CN111327603B (zh) 数据传输方法、装置和系统
US6321269B1 (en) Optimized performance for transaction-oriented communications using stream-based network protocols
CN102045772B (zh) 一种数据传输方法及装置
US6412092B1 (en) Method and apparatus to reduce the cost of preparing the checksum for out bound data in network communication protocols by caching
TW200814672A (en) Method and system for a user space TCP offload engine (TOE)
CN103188059A (zh) 快速通道互联系统中数据包重传方法、装置和系统
CN104247322B (zh) 促进计算环境中的通信的方法、系统和计算机可读介质
WO2023213086A1 (zh) 数据处理方法、装置、计算机可读介质及电子设备
CN101421719B (zh) 管理网络响应缓冲行为
JP2004343552A (ja) 受信装置、送信装置およびプログラム
CN111404842A (zh) 数据传输方法、装置及计算机存储介质
CN116226027A (zh) 数据传输系统、方法、装置、通信设备及存储介质
WO2018137218A1 (zh) 一种数据传输方法、数据接收设备及数据发送设备
US6263001B1 (en) Packet data communication protocol with reduced acknowledgements in a client/server computing system
CN114490459A (zh) 数据传输方法、装置、设备、接收机和存储介质
CN115913473B (zh) 一种数据选择性重传方法及其系统、存储介质、电子设备
WO2024139438A1 (zh) 报文处理方法、装置和系统
CN113300967B (zh) Rdma网络传输方法、装置以及rdma网络通信系统
WO2019015487A1 (zh) 一种数据重传处理方法、rlc实体和mac实体
CN115632992A (zh) 数据传输方法、装置、计算机设备和存储介质
CN112104629A (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
CP03 Change of name, title or address

Address after: 518000Guangdong Province, Qianhai Hong Kong Cooperation Zone, Qianwan Road No.1, Building A, 201st Room (registered with Shenzhen Qianhai Business Secretary Co., Ltd.)

Patentee after: Shenzhen Yunque Intelligent Co., Ltd.

Country or region after: China

Address before: 518000Guangdong Province, Qianhai Hong Kong Cooperation Zone, Qianwan Road No.1, Building A, 201st Room (registered with Shenzhen Qianhai Business Secretary Co., Ltd.)

Patentee before: Shenzhen yunbao intelligent Co.,Ltd.

Country or region before: China

CP03 Change of name, title or address