一种远程直接存储器存取的方法及装置的制造方法

文档序号:9711590阅读:684来源:国知局
一种远程直接存储器存取的方法及装置的制造方法
【技术领域】
[0001]本发明涉及电子技术领域,尤其涉及一种远程直接存储器存取的方法及装置。
【背景技术】
[0002]远端直接数据存取(Remote direct memory access,RDMA)一般用于网络中主机之间的数据传输。在数据传输过程中,数据源端和数据目的端的主机CPU不需要参与数据的搬移和复制,从而减轻CPU的负担,降低网络上主机之间数据交换的延时。根据底层承载的协议的不同,RDMA技术可以基于TCP协议和无损融合以太网实现。三种实现方式在传输层及以上是相同的。
[0003]RDMA协议中,如图1所示,任意两个主机之间需要交互的应用之间需要建立一个队列对(QP)进行通信。
[0004]在建立的队列对中包括主机和设备,主机和设备之间的通信,需要主机先将报文传递到设备,设备完成处理后再将报文返回给主机,标准的RDMA写请求操作流程,完成一次报文从主机到设备,设备处理完后再到主机处理流程如图2所示:
[0005]步骤201,设备将本地数据缓存地址B传给主机,用于缓存主机发给设备处理的数据的存储;
[0006]步骤202,主机返回响应给设备,表面主机已经正确接收到地址信息;
[0007]步骤203,主机将需要设备处理的数据通过RDMA写请求报文方式写到设备上的地址B中;
[0008]步骤204,设备返回响应给主机,表面设备已经正确接收到报文,设备对报文进行处理,比如压缩解压缩、加解密等硬件加速处理;
[0009]步骤205,主机将地址A传递给设备,用于设备处理完成后返回给主机时的存储地址;
[0010]步骤206,设备返回响应给主机,表面设备已经正确接收到地址信息;
[0011]步骤207,设备将处理完成的数据通过RDMA写请求报文方式写到主机上的地址A中;
[0012]步骤208,主机返回响应给设备,表面主机已经正确接收到处理完成后的报文。
[0013]现有技术中的主机和设备之间的数据传递基于标准的RDMA协议,数据传递过程交互频繁,对数据交互的时延和速率都有很大的影响。并且,设备接收到报文后可以直接处理报文,或者只需要在设备的接口进行协议无关的缓存,并不需要按照RDMA协议进行地址的申请、注册等管理,所以对应这种主机和设备之间的数据交互,使用标准的RDMA造成了部分无效的交互,浪费了传输带宽资源和数据交互的延时。

【发明内容】

[0014]本发明提供一种远程直接存储器存取的方法及装置,本发明所提供的方法和装置解决现有技术中使用标准的RDMA造成了部分无效的交互,浪费了传输带宽资源和数据交互的延时问题。
[0015]第一方面,提供一种远程直接存储器存取的方法,该方法应用于第一电子设备中,第一电子设备与第二电子设备之间建立有远程直接存储器存取RDMA连接;其中,一种典型的应用场景是第一电子设备可以是用于进行业务加速的加速器(例如,基于FPGA等硬件实现的,具备比通用CPU处理能力更强的专用加速器),加速器通常只接收请求,然后返回结果,是一个被动执行的单元;第二电子设备可以是业务请求方,通常也称为主机,实际产品中,可以是服务器、终端等需要进行业务处理的各类产品。
[0016]该方法包括:
[0017]第一电子设备通过所述RDMA连接接收到第二电子设备发送的第一RDMA写请求报文后,从该第一 RDMA写请求报文的RDMA协议头中获取第一地址;
[0018]其中,第一电子设备在收到第一RDMA写请求报文时,会先解析报文,得到相应字段的信息,在解析报文时,可以一次性将全部的信息完成解析出来,也可以先解析一部分(如先解析报文头),然后再根据需要解析另外一些部分的信息(如净荷字段),这些都为本领域技术人员所公知的技术,本发明实施例并不对此进行限定及详细描述。
[0019]将所述第一地址与预存的标志地址进行比较,如果第一地址与所述标志地址相同,则从所述第一RDMA写请求报文的协议扩展头中获取第二地址,对第一RDMA写请求报文的净荷进行处理得到处理后得到的结果数据;
[0020]上述两个步骤中的“预存的标志地址”可以理解为一个“伪地址”,该地址的作用仅在于满足协议的要求(因为RDMA协议规定在头中需要携带这个地址),同时,该地址也是通信双约定,共同知道的一个地址,在实际中,会将这个约定地址作为“预存的标志地址”来判断收到的第一地址是不是这个伪地址。在具体实现时,“预存的标志地址”可以保存在一个存储在易失或非易失存器中的文件中,或者也可以通过编程的方式写入代码,在程序执行时,被存在一个临时的存储区中;当“第一地址”与“预存的标志地址”相同时,就判断这是一个“伪地址”,然后进行后续操作;
[0021]上述步骤中的“协议扩展头”可以是用户自定义的一个字段,例如,可以采用协议预留的字段,或者也可以在净荷字段中预留一部分来作为这个协议扩展头;
[0022]上述步骤中的,“第二地址”即为要写入到第二设备中的存储地址,这是一个真实的地址(并不是前面提到的“伪地址”),后续也是按照正常的流程将其放入到RDMA协议头中(而不是放入到“扩展协议头”);
[0023]用所述第二地址和所述结果数据构造第二RDMA写请求报文,并利用所述第二地址将所述第二 RDMA写请求报文写到所述第二电子设备中所述第二地址对应的存储区域中。
[0024]结合第一方面,在第一种可能的实现方式中,第一电子设备接收到第二电子设备发送的第一RDMA写请求报文之前,当第一电子设备和第二电子设备协商建立RDMA连接时,所述该方法还包括:
[0025]第一电子设备接收到第二电子设备发起的RDMA建链请求报文,在响应报文中携带第一电子设备的属性标志;其中,该属性标志用于标示所述第一电子设备对于接收到的RDMA写请求报文直接处理不进行缓存;
[0026]接收第二电子设备反馈的所述标志地址;其中,所述标志地址是所述第二电子设备根据所述响应报文中的属性标志构造的地址;
[0027]将所述标志地址记录在建立地RDMA连接对应的上下文信息中。
[0028]结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述将所述第一地址与预存的标志地址进行比较之前,该方法还包括:
[0029]从所述第一 RDMA写请求报文中获取所述RDMA连接对应的连接号;
[0030]利用所属连接号查询所述RDMA连接对应的上下文信息,从所述上下文信息中获取所述标志地址。
[0031]第二方面,提供一种远程直接存储器存取的装置,该装置应用于第一电子设备中,第一电子设备与第二电子设备之间建立有远程直接存储器存取RDMA连接,该装置包括:
[0032]获取模块,用于通过所述RDMA连接接收到第二电子设备发送的第一RDMA写请求报文后,从该第一 RDMA写请求报文的RDMA协议头中获取第一地址;
[0033]数据处理模块,用于将所述第一地址与预存的
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1