CN117171073A - 处理远程直接内存访问请求的方法和计算机设备 - Google Patents

处理远程直接内存访问请求的方法和计算机设备 Download PDF

Info

Publication number
CN117171073A
CN117171073A CN202310681772.5A CN202310681772A CN117171073A CN 117171073 A CN117171073 A CN 117171073A CN 202310681772 A CN202310681772 A CN 202310681772A CN 117171073 A CN117171073 A CN 117171073A
Authority
CN
China
Prior art keywords
rdma
request
mpt
memory address
address space
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
CN202310681772.5A
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 CN117171073A publication Critical patent/CN117171073A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提供一种处理远程直接内存访问请求的方法和计算机设备。所述计算机设备,在接收到RDMA请求时,发送包含所述地址空间标识的DMA操作请求,使得转换器能够根据地址空间标识与页表的对应关系,将DMA操作请求中的所述虚拟内存地址转换为物理内存地址。这样,网络适配器就不再需要根据MTT实现虚拟内存地址到物理内存地址的转换,省去了因存储MTT所造成的资源占用,避免了现有技术中网络适配器与内存之间频繁迁移MTT时所带来的资源的消耗。并且,通过操作系统分配的页表实现RDMA访问过程中的地址转换,能够提升虚拟内存地址与物理内存地址之间映射的灵活性。

Description

处理远程直接内存访问请求的方法和计算机设备
技术领域
本申请涉及信息技术领域,特别涉及一种处理远程直接内存访问请求的方法和计算机设备。
背景技术
远程直接内存访问(remote direct memory access,RDMA)通过网络在两个端点的应用软件之间实现Buffer的直接传递;相比传统的网络传输,RDMA又无需操作系统和协议栈的介入。RDMA可以轻易实现端点间的超低延时、超高吞吐量传输,而且基本不需要中央处理器、操作系统等资源介入,也不必再为网络数据的处理和搬移耗费过多其他资源。
RDMA要实现主机间的内存直接访问,应用软件在使用之前,需要先通过调用RDMA的内存管理Verbs,完成对需要进行RDMA访问的内存注册。通过注册在RDMA的网卡芯片中生成一个内存保护表(memory protect table,MPT)和内存翻译表(memory trans lat iontable,MTT),其中MPT用于权限控制,MTT完成注册内存的虚拟内存到物理内存的映射。
MTT通常占用空间较大,当网卡上的资源有限时,需要频繁地从内存迁移MTT到网卡内部,导致网卡等资源的占用和消耗。
发明内容
本申请实施例提供一种处理RDMA请求的方法、网络适配器和计算机设备,以解决处理RDMA请求时资源占用过多的问题。
第一方面,本申请实施例提供一种计算机设备,所述计算机设备包括网络适配器和转换器,其中:
所述网络适配器用于:
接收RDMA请求,所述RDMA请求携带有RDMA访问的关键字;
根据所述关键字获取对应的地址空间标识;
发送包含所述地址空间标识的直接内存访问(direct memory access,DMA)操作请求,其中,所述DMA操作请求携带有所述RDMA请求中包含的虚拟内存地址;
所述转换器用于:
拦截所述DMA操作请求,根据所述地址空间标识获取与所述地址空间标识对应的页表,其中,所述页表包括所述RDMA请求的虚拟内存地址与物理内存地址之间的对应关系;
根据所述页表将所述虚拟内存地址转换为物理内存地址。
上述计算机设备中的网络适配器在接收到RDMA请求时,发送包含所述地址空间标识的DMA操作请求,使得转换器能够根据地址空间标识与页表的对应关系,将DMA操作请求中的所述虚拟内存地址转换为物理内存地址。本发明实施例提供的计算机设备,无须为网络适配器设置专门的MTT,而可以利用计算机设备中现有的页表实现虚拟内存地址到物理内存地址的转换,省去了因存储MTT所造成的资源占用,避免了现有技术中网络适配器与内存之间频繁迁移MTT时所带来的资源的消耗。同时,由于页表是操作系统分配给应用程序的,操作系统可以动态地分配页表,通过页表实现虚拟内存地址与物理内存地址的转换,相对于MTT中虚拟内存地址与物理内存地址之间固定的对应关系,能够提升虚拟内存地址与物理内存地址之间映射的灵活性。
所述RDMA请求,包括但不限于RDMA读/写请求。所述RDMA读/写请求中包含需要进行相关RDMA操作的内存地址,该内存地址是应用程序能够识别并访问的虚拟内存地址。
可选的,所述转换器可以通过Intel直接输入输出虚拟化技术(Intel Virtualizat ion Technology for Direct I/O,VT-d)实现或通过输入/输出内存管理单元(input/output memory management unit,IOMMU)实现。
可选的,所述页表是所述计算机设备中的操作系统为应用程序分配的虚拟内存地址与物理内存地址之间的对应关系表。
在一种可能的设计中,所述地址空间标识用于标识所述RDMA请求所请求访问的虚拟内存地址空间。可选的,所述地址空间标识为进程地址空间标识(Process AddressSpace ID,PASID)。在一种实现方式中,所述地址空间标识是应用程序可访问的内存地址空间的标识,所述RDMA请求所请求访问的内存地址空间,属于所述应用程序注册的可以进行RDMA访问的内存地址空间。
在一种可能的设计中,所述网络适配器中存储有MPT,所述MPT记录有所述关键字和所述地址空间标识的对应关系。
可选的,所述MPT记录有MPT表项,所述MPT表项中记录有所述关键字和所述地址空间标识的对应关系。
其中,所述MPT表项记录有用于RDMA操作的虚拟内存地址的范围与操作权限。
可选的,所述网络适配器根据所述关键字获取对应的地址空间标识包括:
所述网络适配器根据所述关键字,从所述网络适配器中的MPT中查找包含所述关键字的MPT表项,并从查找到的MPT表项中获取所述地址空间标识。
可选的,所述MPT存储在所述网络适配器的存储空间中,或存储在所述计算机设备的内存中。
可选的,所述网络适配器包括网卡处理器,所述MPT存储在所述网卡处理器的存储空间中或存储在所述网卡处理器之外的、所述网络适配器的存储空间中。
在一种可能的设计中,所述关键字包括所述RDMA请求中的R_Key、L_Key或专门用于标识MPT表项的信息。
在一种可能的设计中,所述网络适配器还用于:
根据所述MPT表对所述RDMA请求进行鉴权;
其中,当鉴权通过时,所述网络适配器发送所述DMA操作请求。
可选的,对所述RDMA请求鉴权,即验证所述RDMA请求是否合法。根据所述MPT中的表项,对所述RDMA请求进行鉴权,即根据所述MPT表项验证所述RDMA请求是否合法。
可选的,所述网络适配器根据所述MPT表项对所述RDMA请求进行鉴权包括:
所述网络适配器判断所述RDMA请求的内存地址是否落在所述MPT表项记录的虚拟内存地址的范围内,并判断所述MPT表项中是否记录有所述RDMA请求所请求的操作类型;
当所述RDMA请求的内存地址落在所述MPT表项记录的虚拟内存地址的范围内,且所述MPT表项中记录有所述RDMA请求所请求的操作类型时,通过对所述RDMA请求的鉴权。
在一种可能的设计中,所述计算机设备还包括处理器,用于在所述转换器中配置所述地址空间标识与所述页表的对应关系。
可选的,所述转换器,用于根据所述地址空间标识,以及所述地址空间标识与所述页表的对应关系获取与所述地址空间标识对应的页表。
在一种可能的设计中,所述处理器,还用于为应用程序分配所述地址空间标识,并将所述地址空间标识发送给所述网络适配器,其中,所述RDMA请求是针对所述应用程序发起的请求。
可选的,所述应用程序的虚拟内存地址空间,包含所述RDMA请求所访问的虚拟内存地址空间。
可选的,所述应用程序是运行在所述计算机设备中的任意一个应用程序。具体的,所述应用程序是运行在所述计算机设备的操作系统中的应用程序,并通过所述处理器执行该应用程序以实现其相应的功能。
可选的,所述应用程序包括一个或多个进程。相应的,所述页表是所述应用程序中每个进程的页表。即每个进程都有一个页表,该进程的页表是该进程的虚拟内存地址与物理内存地址之间的对应关系表。当所述应用程序包括一个进程时,所述处理器为应用程序分配空间地址标识,是为该进程分配的空间地址标识。当所述应用程序包括多个进程时,所述处理器为所述应用程序分配空间地址标识,是为所述应用程序包括的多个进程分别分配的空间地址标识。
可选的,所述MPT表项记录有所述应用程序用于RDMA操作的虚拟内存地址的范围与操作权限。
在一种可能的设计中,所述处理器还用于,为所述应用程序分配所述MPT表项,并将所述MPT表项发送给所述网络适配器;所述网络适配器,还用于将所述地址空间标识保存在所述MPT表项中。
可选的,当所述应用程序包括一个进程时,所述网络适配器可以将该进程的地址空间标识存储在该进程对应的MPT表项中。当所述应用程序包括多个进程时,所述网络适配器可以将每个进程的地址空间标识存储在每个进程对应的MPT表项中。
第二方面,本申请实施例提供了一种处理RDMA请求的方法,所述方法包括:
接收远程直接内存访问RDMA请求,所述RDMA请求携带有RDMA访问的关键字,根据所述关键字获取对应的地址空间标识,发送包含所述地址空间标识的直接内存访问DMA操作请求,所述DMA操作请求携带有所述RDMA请求中包含的虚拟内存地址;
根据所述地址空间标识获取与所述地址空间标识对应的页表,根据所述页表将所述虚拟内存地址转换为物理内存地址,其中,所述页表包括所述RDMA请求的虚拟内存地址与物理内存地址之间的对应关系。
上述方法中,在接收到RDMA请求时,发送包含所述地址空间标识的DMA操作请求,并根据地址空间标识与页表的对应关系,将DMA操作请求中的虚拟内存地址转换为物理内存地址。这样,就不再需要根据MTT实现虚拟内存地址到物理内存地址的转换,省去了因存储MTT所造成的资源占用,避免了现有技术中网络适配器与内存之间频繁迁移MTT时所带来的资源的消耗。同时,由于页表是操作系统分配给应用程序的,操作系统可以动态地分配页表,通过页表实现虚拟内存地址与物理内存地址的转换,相对于MTT中虚拟内存地址与物理内存地址之间固定不变的对应关系,能够提升虚拟内存地址与物理内存地址之间映射的灵活性。
所述RDMA请求,包括RDMA读/写请求。所述RDMA读/写请求中包含需要进行相关RDMA操作的内存地址,该内存地址是应用程序能够识别并访问的虚拟内存地址。
可选的,所述页表是所述计算机设备中的操作系统为所述应用程序分配的虚拟内存地址与物理内存地址之间的对应关系表。
在一种可能的设计中,所述地址空间标识用于标识所述RDMA请求所请求访问的虚拟内存地址空间。
可选的,所述地址空间标识为PASID。在一种实现方式中,所述地址空间标识是应用程序可访问的内存地址空间的标识,所述RDMA请求所请求访问的内存地址空间,属于所述应用程序注册的可以进行RDMA访问的内存地址空间。
在一种可能的设计中,所述方法还包括:
根据所述关键字和内存保护表MPT获取所述地址空间标识,其中,所述MPT记录有所述关键字和所述地址空间标识的对应关系,所述地址空间标识用于标识所述RDMA请求所请求访问的虚拟内存地址空间。
可选的,所述应用程序的虚拟内存地址空间,包含所述RDMA请求所访问的虚拟内存地址空间。
可选的,所述应用程序是运行在所述计算机设备中的任意一个应用程序。具体的,所述应用程序是运行在所述计算机设备的操作系统中的应用程序,并通过所述处理器执行该应用程序以实现其相应的功能。
可选的,所述应用程序包括一个或多个进程。相应的,所述页表是所述应用程序中每个进程的页表。即每个进程都有一个页表,该进程的页表是该进程的虚拟内存地址与物理内存地址之间的对应关系表。当所述应用程序包括一个进程时,所述处理器为应用程序分配空间地址标识,是为该进程分配的空间地址标识。当所述应用程序包括多个进程时,所述处理器为所述应用程序分配空间地址标识,是为所述应用程序包括的多个进程分别分配的空间地址标识。
可选的,所述MPT中包括MPT表项,所述MPT表项记录有所述应用程序用于RDMA操作的虚拟内存地址的范围与操作权限。
在一种可能的设计中,所述关键字包括所述RDMA请求中的R_Key、L_Key或专门用于标识MPT表项的信息。
在一种可能的设计中,所述方法还包括:根据所述MPT对所述RDMA请求进行鉴权;
相应的,所述发送包含所述地址空间标识的DMA操作请求包括:
当对所述RDMA请求鉴权通过后,发送包含所述地址空间标识的DMA操作请求。
可选的,根据所述MPT对所述RDMA请求进行鉴权,即根据所述MPT中的MPT表项对所述RDMA请求进行鉴权。
可选的,所述根据所述MPT表项对所述RDMA请求进行鉴权包括:
判断所述RDMA请求的内存地址是否落在所述MPT表项记录的虚拟内存地址的范围内,并判断所述MPT表项中是否记录有所述RDMA请求所请求的操作类型;
当所述RDMA请求的内存地址落在所述MPT表项记录的虚拟内存地址的范围内,且所述MPT表项中记录有所述RDMA请求所请求的操作类型时,通过对所述RDMA请求的鉴权。
在一种可能的设计中,所述根据所述关键字获取对应的地址空间标识包括:
根据所述关键字查找包含所述关键字的MPT表项,并从查找到的MPT表项中获取所述地址空间标识。
在一种可能的设计中,所述方法还包括:
配置所述地址空间标识与所述应用程序的页表之间的对应关系。
可选的,当所述应用程序包括一个进程时,可以将该进程的地址空间标识存储在该进程对应的MPT中。当所述应用程序包括多个进程时,可以将每个进程的地址空间标识存储在每个进程对应的MPT中。
第三方面,本申请实施例提供了一种网络适配器,所述网络适配器包括处理器和存储器,所述存储器存储有计算机可执行程序,所述处理器用于调用所述存储器中的计算机可执行程序,执行如下步骤:
接收RDMA请求,所述RDMA请求携带有RDMA访问的关键字;
根据所述关键字获取对应的地址空间标识;
发送包含所述地址空间标识的DMA操作请求,所述DMA操作请求携带有所述RDMA请求中包含的虚拟内存地址,以使得转发所述DMA操作请求的设备根据所述地址空间标识获取与所述地址空间标识对应的页表,根据所述页表将所述虚拟内存地址转换为物理内存地址,其中,所述页表包括所述RDMA请求的虚拟内存地址与物理内存地址之间的对应关系。
上述网络适配器在接收到RDMA请求时,能够发送包含地址空间标识的DMA操作请求,使得转发所述DMA操作请求的设备根据所述地址空间标识获取与所述地址空间标识对应的页表,并根据所述页表将所述虚拟内存地址转换为物理内存地址。这样,所述网络适配器就不再需要根据MTT实现虚拟内存地址到物理内存地址的转换,省去了因存储MTT所造成的资源占用,避免了现有技术中网络适配器与内存之间频繁迁移MTT时所带来的资源的消耗。
所述RDMA请求,包括但不限于RDMA读/写请求。所述RDMA读/写请求中包含需要进行相关RDMA操作的内存地址,该内存地址是应用程序能够识别并访问的虚拟内存地址。
在一种可能的设计中,所述地址空间标识用于标识所述RDMA请求所请求访问的虚拟内存地址空间。
可选的,所述地址空间标识为PASID。在一种实现方式中,所述地址空间标识是应用程序可访问的内存地址空间的标识,所述RDMA请求所请求访问的内存地址空间,属于所述应用程序注册的可以进行RDMA访问的内存地址空间。
可选的,所述处理器还用于执行下述步骤:
接收为应用程序分配的地址空间标识,并存储所述地址空间标识;其中,其中,所述RDMA请求是针对所述应用程序发起的请求。
在一种可能的设计中,所述处理器还用于执行下述步骤:
接收为应用程序创建的MPT,存储所述MPT,并将所述地址空间标识存储在所述MPT中;其中,所述RDMA请求是针对所述应用程序的请求。
可选的,所述应用程序包括一个或多个进程。
可选的,所述关键字包括所述RDMA请求中的R_Key、L_Key或专门用于标识MPT表项的信息。
在一种可能的设计中,所述根据所述关键字获取对应的地址空间标识,发送包含所述地址空间标识的DMA操作请求包括:
根据所述关键字,查找包含所述关键字的MPT表项,并从查找到的MPT表项中获取所述地址空间标识,根据获取到的所述地址空间标识发送包含所述地址空间标识的DMA操作请求。
在一种可能的设计中,所述发送包含所述地址空间标识的DMA操作请求包括:
根据所述MPT对所述RDMA请求鉴权,并在鉴权通过时,发送包含所述地址空间标识的DMA操作请求。
可选的,根据所述MPT表项对所述RDMA请求鉴权包括:
判断所述RDMA请求的内存地址是否落在所述MPT表项记录的虚拟内存地址的范围内,并判断所述MPT表项中是否记录有所述RDMA请求所请求的操作类型;
当所述RDMA请求的内存地址落在所述MPT表项记录的虚拟内存地址的范围内,且所述MPT表项中记录有所述RDMA请求所请求的操作类型时,通过对所述RDMA请求的鉴权。
第四方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器、网络适配器,其中处理器包括转换器,所述网络适配器包括网卡处理器,所述网卡处理器包括报文处理模块和DMA模块;
所述报文处理模块,用于接收RDMA请求,所述RDMA请求携带有RDMA访问的关键字,根据所述关键字获取对应的地址空间标识,并将所述地址空间标识发送给DMA模块;
所述DMA模块,用于发送包含所述地址空间标识的DMA操作请求,所述DMA操作请求携带有所述RDMA请求中包含的虚拟内存地址;
所述转换器,用于拦截所述DMA操作请求,根据所述地址空间标识获取与所述地址空间标识对应的页表,根据所述页表将所述虚拟内存地址转换为物理内存地址,其中,所述页表包括所述RDMA请求的虚拟内存地址与物理内存地址之间的对应关系。
上述计算机设备中的网络适配器在接收到关于所述应用程序的RDMA请求时,能够触发包含PASID的DMA操作,使得转换器能够根据PASID与页表的对应关系,将所述DMA操作的内存地址转换为物理内存地址。这样,网络适配器就不再需要根据MTT实现虚拟内存地址到物理内存地址的转换,省去了因存储MTT所造成的资源占用,避免了现有技术中网络适配器与内存之间频繁迁移MTT时所带来的资源的消耗。同时,由于页表是操作系统分配给应用程序的,操作系统可以动态地分配页表,相对于现有技术中MTT中虚拟内存地址与物理内存地址之间固定不变的对应关系,能够提升虚拟内存地址与物理内存地址之间映射的灵活性。
所述关于所述应用程序的RDMA请求,包括但不限于其它应用程序针对所述应用程序发起的RDMA读/写请求。所述RDMA读/写请求中包含需要进行相关RDMA操作的内存地址,该内存地址是应用程序能够识别并访问的虚拟内存地址。
可选的,所述应用程序是运行在所述计算机设备中的任意一个应用程序。具体的,所述应用程序是运行在所述计算机设备的操作系统中的应用程序,并通过所述处理器执行该应用程序以实现其相应的功能。
可选的,所述转换器可以通过VT-d实现或通过IOMMU实现。
可选的,所述页表是所述计算机设备中的操作系统为所述应用程序分配的虚拟内存地址与物理内存地址之间的对应关系表。
可选的,所述应用程序包括一个或多个进程。相应的,所述页表是所述应用程序中每个进程的页表。即每个进程都有一个页表,该进程的页表是该进程的虚拟内存地址与物理内存地址之间的对应关系表。当所述应用程序包括一个进程时,所述处理器为应用程序分配PASID,是为该进程分配的PASID。当所述应用程序包括多个进程时,所述处理器为所述应用程序分配PASID,是为所述应用程序包括的多个进程分别分配的PASID。
在一种可能的设计中,所述处理器还包括PASID管理单元和内存管理单元,所述处理器包括还MPT;
所述内存管理单元,用于接收应用程序发起的内存注册,创建MPT表项并将所述MPT表项发送给网络适配器;
所述PASID管理单元,用于为所述应用程序分配PASID,将所述PASID发送给网络适配器,建立所述PASID与页表的对应关系,并将所述PASID与页表的对应关系配置在转换器中;其中,所述页表是所述应用程序的虚拟内存地址与物理内存地址之间的对应关系表;
所述MPT,用于记录所述MPT表项,所述MPT表项中包括所述关键字和所述PASID的对应关系。
在一种可能的设计中,所述MPT表项记录有所述应用程序用于RDMA操作的虚拟内存地址的范围与操作权限。
可选的,当所述应用程序包括一个进程时,所述网络适配器可以将该进程的PASID存储在该进程对应的MPT表项中。当所述应用程序包括多个进程时,所述网络适配器可以将每个进程的PASID存储在每个进程对应的MPT表项中。
在一种可能的设计中,所述报文处理模块根据所述RDMA请求中携带的标识信息,从所述网络适配器中的MPT中查找包含所述标识信息的MPT表项,并从查找到的MPT表项中获取所述PASID。
在一种可能的设计中,所述标识信息是所述RDMA请求中的R_Key、L_Key或专门用于标识MPT表项的信息。
可选的,所述网络适配器包括网卡处理器,所述MPT存储在所述网卡处理器的存储空间中或存储在所述网络适配器上所述网卡处理器之外的存储空间中,或存储在所述计算机设备的内存中。
在一种可能的设计中,所述报文处理模块根据MPT表项验证网络适配器接收到的RDMA请求是否合法包括:
所述报文处理模块判断所述RDMA请求的内存地址是否落在所述MPT表项记录的虚拟内存地址的范围内,并判断所述MPT表项中是否记录有所述RDMA请求所请求的操作类型;
当所述RDMA请求的内存地址落在所述MPT表项记录的虚拟内存地址的范围内,且所述MPT表项中记录有所述RDMA请求所请求的操作类型时,通过对所述RDMA请求的鉴权。
本申请实施例还提供了一种计算机可读存储介质,包括程序代码,该程序代码包括用于执行第二方面提供的任一方法的部分或全部步骤的指令。
本申请实施例还提供了一种计算机可读存储介质,其上储存有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述第二方面提供的任一种可能的方法。
本申请实施例还提供了一种计算机程序产品,当其在计算机上运行时,使得第二方面提供的任一方法被执行。
可以理解地,上述提供的任一种存储设备、计算机可读存储介质或计算机程序产品等均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。
附图说明
下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种InfiniBand网络中硬件结构的示意图;
图2A为本申请实施例提供的一种计算机设备200的结构示意图;
图2B为本申请实施例提供的计算机设备200的一种实现方式结构示意图;
图2C为本申请实施例提供的计算机设备200的另一种实现方式结构示意图;
图3A为本申请实施例提供的一种内存访问方法的流程示意图;
图3B为本申请实施例提供的另一种内存访问方法的流程示意图;
图3C为本申请实施例提供的再一种内存访问方法的流程示意图;
图4为本申请实施例提供的一种计算机设备400的结构示意图;
图5为本申请实施例提供的一种网络适配器500的结构示意图;
图6为本申请实施例提供的一种处理RDMA请求的方法流程示意图;
图7A为本申请实施例提供的一种计算机设备700的结构示意图;
图7B为本申请实施例提供的另一种计算机设备700的结构示意图。
具体实施方式
下面结合附图,对本发明的实施例进行描述。
首选,对本申请中涉及的部分术语及相关技术进行解释说明,以方便理解:
DMA:一种无需CPU参与就可以让外设(例如网卡)和系统内存之间进行双向数据传输的硬件机制。可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的吞吐率。
RDMA:DMA的升级版,让计算机可以远程直接存取其它计算机存储区的数据,而不需要过多的CPU干预。主要目的是为了解决网络传输中服务器端数据处理的延迟而产生的。
Verbs:提供给操作系统(operat ing system,OS)或应用的接口。软件应用程序调用verbs层接口至少执行如下操作:队列对(Queue Pairs,QP)管理、内存注册或处理传输完成事件以及处理不符合预期的事件等。Verbs可以理解为访问RDMA硬件的“一组标准动作”。
PASID:是PCIe规范中引入的一个新的可选特性,与PCIe的请求ID(Requester ID)可以唯一标识一个事务的地址空间。该特性增加了一个PCIE的事务层包(Transact ionLayer Packet,TLP)前缀,它包含一个20位PASID地址空间,可以添加到内存事务TLP中。具体可参考PCIe4.0相关规范。
RDMA通常是通过在网络接口卡(Network Interface Card,NIC)的硬件中部署一项可靠的传输协议以及支持零拷贝技术和内核内存旁路实现的。零拷贝技术使NIC可以直接与应用内存相互传输数据,应用内存与内核内存之间不复制数据。内核内存旁路使得应用无需执行内核内存调用就可以向NIC发送命令。
RDMA操作使应用可以从一个远程应用的内存中读取数据或向这个内存写数据。当一个应用执行RDMA读或写请求时,不执行任何数据复制。在不需要任何内核内存(例如处理器的内存)参与的条件下,RDMA请求从运行在用户空间中的应用中发送到本地网络适配器,然后经过网络传送到远程网络适配器,这样就减少了在处理网络传输流时内核内存空间与用户空间之间切换的次数。
RDMA协议可以由不同的网络来承载,根据承载RDMA网络的不同,可以将RDMA的实现分为三类:
一是在InfiniBand(IB)网络上实现。InfiniBand是一种专为RDMA设计的网络,在硬件级别保证可靠传输。InfiniBand技术主要应用于服务器与服务器(例如应用于服务器之间复制、分布式工作等),服务器与存储设备(比如存储区域网络和直接存储附件)以及服务器与网络(比如局域网、广域网或互联网)之间的通信。
二是在RDMA通过融合以太网(RDMA over Converged Ethernet,RoCE)网络上实现。RoCE又分为RoCEv1和RoCEv2两个版本,RoCEv1将RDMA协议运行在以太网之上,RoCEv2将RDMA协议实现在UDP之上上,因此RoCEv2具有跨子网的能力。构建RoCE网络仅需要支持RoCE的专用网卡,以太网交换机仍然可以继续使用。
三是在互联网广域RDMA协议(Internet Wide Area RDMA Protocol,iWARP)网络上实现。iWARP将RDMA构建在TCP之上,因此,iWARP也可以运行在以太网之上,但也需要专用的支持iWARP的网卡。
下面以IB网络为例,对RDMA的相关实现方式做进一步的介绍。
IB架构(InfiniBand Architecture,IBA)是一种用于服务器输入输出(Input/Output,I/O)互连和服务器内部互连的标准。定义了基于交换的、点对点的网络互连,提供高带宽、低时延的传输。主要应用于服务器集群、系统之间的互连。
IBA网络中主机和输入输出设备通过信道适配器(Channel Adapter,CA)、级联的交换机和路由器连接起来。
CA是安装在主机设备或端点设备上的接口卡,通常通过网卡等设备实现,主要功能是生成和/或处理数据包。CA可以包括主机通道适配器(Host Channel Adapter,HCA)和目标通道适配器(Target Channel Adapter,TCA)两种类型。HCA和TCA中都集成了DMA控制器,从而实现内存数据直接访问。一般地,HCA负责将主机设备接入到InfiniBand网络,而TCA负责将端点设备直接接入到InfiniBand网络中。其中,端点设备包括但不限于存储设备或计算设备等带有存储器的设备。
HCA和TCA为每一条连接提供一对QP,其中一个是发送队列(Send Queue,SQ)用于发送,另一个是接收队列(Receive Queue,RQ)用于接收。SQ中存放了把数据从一个应用程序的内存传输到另一个应用程序的内存中的指令;RQ中存放了从另外一个应用程序接收的数据存储在本地应用程序指定的内存中的指令。
两个应用程序相互通信,首先要创建各自由QP组成的工作队列(Work Queue,WQ),接着将要执行的操作指令或者称为工作队列元素(Work Queue Element,WQE)放入工作队列中,即放入SQ中。然后CA从SQ中取出对应的WQE,对其进行解释并执行,生成一个请求信息,经过InfiniBand网络物理链路,传送到目的端口。当一个WQE执行结束后,一个完成队列元素(Completed Queue Element,CQE)就会产生并放入预先创建的完成队列(CompletedQueue,CQ)中。最后CA利用CQ通知对应WQE的发起者发送数据执行完成。前述过程中,避免了OS的参与,卸载了大量的CPU负载。
一个用户进程可能会同时和很多进程通信,但并不是每一个进程都可以访问这个进程注册的内存区域。所以IBA提供了保护域,保护域可以让用户控制哪些QP可以访问哪些内存区域。
上层应用如果需要访问硬件资源时,首先需要划分一段连续的虚拟内存空间,然后向CA注册这段内存空间。注册完成后,CA可以对这段内存空间进行DMA操作。
内存注册实际上就是CA对这段内存空间建立虚拟地址和物理地址之间的转换表,实现地址转换。内存注册时,要设置这个内存区域的操作权限,包括但不限于本地读写权限、远程读写权限等。每个内存注册都有本地关键字(L_Key)和远程关键字(R_Key)。其中,L_Key用于控制本地CA访问本地内存的权限,R_Key用于控制远程CA访问本地内存的权限。同一内存空间可以进行多次注册,每次注册都有各自不同的关键字。
内存注册时,CA(例如HCA)会建立MPT和MTT。当有一个RDMA请求时,CA根据RDMA请求中的内存关键字(R_Key或者L_Key)查询MPT以验证访问权限。如果允许访问,根据该RDMA请求消息中的访问地址查询MTT,并根据MTT将RDMA请求的虚拟地址转换成网卡能够直接DMA访问的物理地址,然后通过DMA方式访问这些内存。
由于MTT的数量都很大,支持RDMA的网卡芯片内部无法存放这么多的表项。因此,MTT通常存放在主机内存中,网卡芯片通过Cache机制来访问这些表项。当使用到某个表项时从内存迁移到网卡芯片内部,后续访问时就直接从网卡芯片内部读取而不再从内存去读取,以提高表项的访问性能。如果网卡芯片内部空间不够时,再把不常使用的表项迁移到主机的内存中,使得新访问的表项能够迁移到网卡芯片内部。
由于网卡的资源有限,在MTT比较大时需要频繁从内存迁移MTT到网卡芯片内部,造成网卡资源因迁移表项所带来的损耗。并且,通过MTT实现虚拟内存地址与物理内存地址的方式,需要预先固定虚拟内存地址与物理内存地址的关系,无法做到虚拟内存地址与物理内存地址的动态映射。
本申请实施例提供一种处理RDMA请求的方法和设备,利用PASID,直接使用OS的页表解决虚拟内存地址与物理内存地址的映射问题。不再需要MTT,这样就可以避免预先固定虚拟内存地址与物理内存地址的映射关系,并能够避免网卡与内存之间频繁迁移MTT所带来的资源消耗。
下面以InfiniBand网络为例,对本申请实施例提供的内存访问的方法、设备和系统进行描述。可以理解,对于在RoCE和iWARP网络中的实现方式,可以参照下述的实现方式来实现,不再赘述。
图1为本申请实施例提供的一种InfiniBand网络中一种连接关系示意图。如图1所示,计算机设备1和计算机设备2通过网络通信,计算机设备1包括内存10和网卡11,计算机设备2包括内存20和网卡21。网卡11和网卡12通过网络连接,以实现计算机设备1和计算机设备2之间的通信。当计算机设备1通过网络向计算机设备2发起RDMA的读写请求时,是通过网卡11和网卡21将需要写的数据从内存10直接写入内存20中或将需要读的数据从内存20直接写入内存10中。
一种实现方式中,计算机设备1是InfiniBand网络中的主机设备,计算机设备2是InfiniBand网络中的端点设备。在这种情况下,网卡11实现HCA的功能,网卡21实现TCA的功能。在另一种实现方式中,计算机设备1是InfiniBand网络中的端点设备,计算机设备2是InfiniBand网络中的主机设备。在这种情况下,网卡11实现TCA的功能,网卡21实现HCA的功能。
图2A为本申请实施例提供的一种计算机设备200的结构示意图。计算机设备200包括处理器201、网络适配器2022013内存204和总线205。处理器201、网络适配器202、转换器2013和内存204分别与总线205连接,处理器201包括转换器2013。网络适配器202包括处理器2021,用于实现网络适配器202的功能。
处理器201的数量可以是一个或多个,图2A仅示意了其中一个处理器201。可选的,处理器201可以是中央处理器(Central Process ing Unit,CPU)。若计算机设备200具有多个处理器201,多个处理器201的类型可以不同,或者可以相同。可选的,处理器201可以包括一个或多个处理器核;或者计算机设备200的多个处理器也可以集成为多核处理器。
内存204用于存储计算机指令和数据,内存204也可以存储通过RDMA读写的数据,还可以存储用于实现本申请实施例提供的一种实现内存访问的方法所需要执行步骤的指令。内存204可以是以下存储介质的任一种或任一种组合:只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)或高速缓存Cache。
网络适配器202可以是网卡,用于实现计算机设备200与网络之间的通信。处理器2021是网络适配器202上的控制器件,可以通过CPU,可运行程序的处理器核,系统级芯片(System-on-a-Chip,SOC),现场可编程门阵列(field programmable gate array,FPGA)、专用集成电路(已复制appl icat ion-specific integrated circuit,ASIC)或FPGA+ASIC等设备实现。
转换器2013主要是用于协助I/O子系统实现DMA操作。转换器2013通常位于快捷外围部件互连标准(Peripheral Component Interconnect Express,PCIe)设备树的根部,或者位于I/O子系统的根部,能够拦截位于其下面的所有I/O设备(例如网卡)通过DMA方式对内存访问的请求,通过I/O页表的方式来重新定位I/O设备访问的物理内存地址。本申请实施例中,转换器2013可以通过VT-d实现或通过IOMMU实现。
总线205用于将处理器201与内存204和网络适配器202连接。
需要说明的是,图2A只是为描述本申请实例提供的技术方案,示出了上述组件及其连接关系。在具体实现时,图2A所示的计算机设备200还可以包括上述组件之外的其它组件,例如还可以包括硬盘等硬件资源,也还可以包括需要运行的操作系统、应用程序等软件资源。
处理器201,用于为应用程序分配地址空间标识。例如处理器201为应用程序分配PASID作为地址空间标识。下述实施例以PASID作为空间地址标识为例进行说明。处理器201将所述PASID发送给网络适配器202,建立所述PASID与页表的对应关系,并将所述对应关系配置在转换器2013中;所述页表是所述应用程序的虚拟内存地址与物理内存地址之间的对应关系表;
其中,所述应用程序可以是运行在计算机设备200中的任意一个应用程序。在一种实现方式中,所述应用程序是运行在计算机设备200的操作系统中的应用程序,并通过处理器201执行该应用程序以实现其相应的功能。
所述PASID,用于标识所述应用程序。在一种实现方式中,所述PASID是PCIe规范所规定的PASID。在具体实现时,可以参考PCIe4.0规范所定义方式为所述应用程序分配PASID。
本申请实施例中,页表是操作系统为应用程序分配的虚拟内存地址与物理内存地址之间的对应关系表。每个应用程序都有操作系统可以访问的虚拟内存地址,应用程序也是基于虚拟内存地址,发起相关的读写操作。与虚拟内存地址对应的物理内存地址,是物理存储介质上的内存地址。例如,物理内存地址可以是图2A中内存204的物理地址。当应用程序发起对虚拟内存地址的读写操作时,最终会转换为对应的物理内存地址所对应的存储空间上的读写操作。
在一种实现方式中,所述应用程序可以包括一个或多个进程。相应的,所述页表是所述应用程序中每个进程的页表。即每个进程都有一个页表,该进程的页表是该进程的虚拟内存地址与物理内存地址之间的对应关系表。
在一种实现方式中,当所述应用程序包括一个进程时,处理器201为应用程序分配PASID,是为该进程分配的PASID。当所述应用程序包括多个进程时,处理器201为应用程序分配PASID,是为该应用程序包括的多个进程分别分配的PASID。
网络适配器202,用于接收所述PASID,并在接收到关于所述应用程序的RDMA请求时,发送包含所述PASID的DMA操作请求,所述DMA操作请求的内存地址为所述RDMA请求中包含的虚拟内存地址;
在一种实现方式中,网络适配器202接收所述PASID并存储。所述网络适配器202可以将所述PASID存储在所述应用程序对应的MPT中。所述MPT记录有所述应用程序用于RDMA操作的虚拟内存地址的范围与操作权限。可选的,当所述应用程序包括一个进程时,网络适配器202可以将该进程的PASID存储在该进程对应的MPT中。当所述应用程序包括多个进程时,网络适配器202可以将每个进程的PASID存储在每个进程对应的MPT中。
所述关于所述应用程序的RDMA请求,包括但不限于其它应用程序针对所述应用程序发起的RDMA读/写请求。所述RDMA读/写请求中包含需要进行相关RDMA操作的内存地址,该内存地址是应用程序能够识别并访问的虚拟内存地址。
网络适配器202接收到关于所述应用程序的RDMA请求时,根据所述RDMA请求中包含的虚拟内存地址发起DMA操作请求,以执行所述RDMA请求,实现对所述RDMA请求所对应的内存空间的读/写操作。网络适配器202发起的DMA操作请求包含所述PASID,使得转换器2013能够根据所述PASID以及处理器201配置在转换器2013中的PASID与页表的对应关系,实现DMA操作请求中虚拟内存地址到物理内存地址的转换。
所述转换器2013,用于拦截DMA操作请求,根据所述PASID以及所述页表的对应关系,将所述DMA操作请求中的内存地址转换为物理内存地址,所述物理内存地址是所述页表中与所述RDMA请求中包含的虚拟内存地址对应的物理内存地址。
具体的,所述转换器2013拦截网络适配器202发起的DMA操作请求,根据所述DMA操作请求中的所述PASID,查询存储的PASID与页表的对应关系表,获取与所述PASID对应的页表。因为所述页表记录了所述应用程序的虚拟内存地址与物理内存地址的对应关系,转换器2013能够根据所述页表获取与所述RDMA请求中包含的虚拟内存地址对应的物理内存地址,从而将针对所述虚拟内存地址的DMA操作请求转换为针对所述物理内存地址的DMA操作请求。
上述网络适配器202在接收到关于所述应用程序的RDMA请求时,能够触发包含PASID的DMA操作请求,使得转换器2013能够根据PASID与页表的对应关系,获取与所述PASID对应的页表,并根据所述页表将针对所述虚拟内存地址的DMA操作请求转换为针对所述物理内存地址的DMA操作请求。这样,网络适配器202就不再需要根据MTT实现虚拟内存地址到物理内存地址的转换,省去了因存储MTT所造成的资源占用,避免了网络适配器202与内存204之间频繁迁移MTT时所带来的资源的消耗。同时,由于页表是操作系统分配给应用程序的,操作系统可以动态地分配页表,相对于现有技术中MTT中虚拟内存地址与物理内存地址之间固定不变的对应关系,能够提升虚拟内存地址与物理内存地址之间映射的灵活性。
下面结合图2B对本申请实施例提供的计算机设备200的具体实现方式做进一步详细的描述。如图2B所示,处理器201包括内存管理单元2011、PASID管理单元2012和转换器2013,处理器2021包括MPT20211、报文处理模块20212和DMA模块20213。
所述内存管理单元2011,用于接收应用程序发起的内存注册,创建MPT表项并将所述MPT表项发送给网络适配器202。
示例性的,应用程序可以通过Verbs发起内存注册,内存管理单元2011基于所述应用程序的内存注册,创建针对所述应用程序的MPT表项,并将创建的MPT表项发送给网络适配器202。通过内存注册,内存管理单元2011能够获知该应用程序能够用于RDMA访问的内存空间的范围,以及访问的权限。其中,该应用程序所注册的能够用于RDMA访问的内存空间是该应用程序的虚拟内存地址空间;该应用程序访问的权限包括但不限于读操作、写操作、本地访问权限或远程访问权限等。
例如,应用程序A能够用于RDMA读写的内存空间的起始地址为S,长度为100KB。其中,起始地址为S、长度为100KB的内存地址是该应用程序A的一段虚拟内存地址。应用程序A可通过Verbs向内存管理单元2011注册该段虚拟内存地址,以及相应的访问权限。当应用程序A向内存管理单元2011注册该段虚拟内存地址后,该段虚拟内存具备了RDMA相关的属性,包括但不限于:RDMA操作上下文(context)、虚拟内存的起始地址、虚拟内存的长度、本地关键字(L_Key)和远程关键字(R_Key)等。其中,L_Key用于控制本地设备访问本地内存的权限,R_Key用于控制远程设备(例如通过IB网络与本地设备通信的设备)访问本地内存的权限。
所述内存管理单元2011在接收到应用程序通过Verbs发起的内存注册后,根据该应用程序可用于RDMA访问的虚拟内存地址的范围和相应的访问权限,建立该应用程序的MPT表项,并将建立的MPT表项发送给网络适配器202。
可选的,内存管理单元2011可以通过PCIe总线将所述MPT表项发送给网络适配器202。
在一种实现方式中,应用程序可以通过Verbs将注册的虚拟内存地址与进行RDMA操作的QP关联起来,以实现内存访问窗口的绑定。这样,当该应用程序发起RDMA的读写操作时,网络适配器202能够明确相关的QP内存访问的范围以及相应的权限。
所述PASID管理单元2012,用于为所述应用程序分配PASID,将所述PASID发送给网络适配器202,建立所述PASID与页表的对应关系,并将所述PASID与页表的对应关系配置在转换器2013中。
可选的,所述PASID管理单元2012可以通过运行在计算机设备200中的操作系统或操作系统中的一个模块实现,所述操作系统中的模块可以是计算机设备200中运行的虚拟机管理器(virtual machine manager,VMM)或虚拟机监控器Hypervisor等。
可选的,所述PASID管理单元2012可以通过PCIe总线将分配的PASID发送给网络适配器202。
网络适配器202将接收到的MPT和PASID被保存在网络适配器的MPT20211中。
在一种实现方式中,上述应用程序A在MPT20211中存储的信息可以如表1所示:
表1
表1中包括多个应用程序的MPT表项,下面以第一行记载的应用程序A的MPT表项为例对MPT表项的一种实现方式进行说明。
表1中,应用程序A注册的RDMA访问的虚拟内存地址的起始地址为S,长度为100K。注册的RDMA操作权限是读操作、写操作、L_Key和R_Key,即应用程序A支持RDMA的读写操作,允许远程的RDMA访问和本地的RDMA访问。0001是PASID管理单元2012为应用程序A分配的PASID,“0001”只是一种举例,在具体实现时,可以用其它不同的标识用于标识PASID,本申请实施例不限定PASID的具体形式。
可选的,当MPT20211中包含多个MPT表项时,可以R_Key作为MPT表项的索引查找对应的MPT表项。在具体实现时,也可以用其它标识信息作为索引来查找MPT表项。例如,针对本地的RDMA操作时可以用L_Key作为索引。当然,除了用R_Key或L_Key之外,也可以用其它信息作为索引,例如专门配置的标识作为索引,本申请实施例不限定具体索引的方式。
需要说明的是,图2B中MPT20211位于处理器2021内只是一种举例。在具体实现时,MPT20211可以存储于处理器2021的一个存储单元(例如缓冲器)中,也可以存储于网络适配器202上的其它存储器中。例如存储于网络适配器202上处理器2021之外的一个RAM中,还可以存储于内存204中,当需要的时候从内存204中获取。本申请实施例不限定MPT20211具体的存储位置。
在一种实现方式中,可以由网络适配器中的处理器2021,将处理器201发送的某一应用程序的MPT表项及其PASID存储在MPT20211中。例如,处理器2021先将接收到的某一应用程序的MPT表项存入MPT20211中,再将该应用程序的PASID存入该应用程序在MPT20211中的MPT表项中。
本申请实施例中,MPT20211中包括PASID的信息,网络适配器202就可以不再需要保存MTT。这样,能够避免从内存204迁移MTT时带来的资源的消耗;同时,MTT往往占用比较大的存储空间,而PASID占用的存储空间相对较小,用PASID替代MTT,当MPT20211写入网络适配器202时,能够节省网络适配器202上的存储资源。
报文处理模块20212,用于根据MPT20211验证网络适配器202接收到的RDMA请求是否合法,当所述RDMA请求合法时,从所述MPT20211中获取相应的PASID并发送给DMA模块20213。
下面以其它应用程序针对应用程序A发起RDMA的读请求为例,描述报文处理模块20212根据所述MPT20211验证网络适配器202接收到的RDMA请求是否合法的实现方式。
网络适配器202接收到其它应用程序通过网络发起的针对应用程序A的RDMA读请求后,网络适配器202中的报文处理模块20212获取该RDMA请求中携带的R_Key,根据该R_Key查询MPT20211。如果查询到包含该R_Key的MPT表项,即应用程序A的MPT表项,报文处理模块20212获取所述RDMA读请求中携带的所请求数据的地址(虚拟内存地址)信息,判断所请求的数据地址是否在应用程序A的MPT表项所记录的虚拟地址的范围之内。如果所请求的数据地址在应用程序A的MPT表项所记录的虚拟地址的范围之内,则判断应用程序A的MPT表项中记录的权限范围是否包含读请求。如果应用程序A的MPT表项中记录有读请求的权限,则确认针对应用程序A的RDMA读请求合法。如果根据所述R_Key未查询到对应的MPT表项,或针对应用程序A的RDMA读请求所请求数据的地址范围没落在应用程序A的MPT表项记录的虚拟内存地址范围之内,或应用程序A的MPT表项中记录的权限范围未包含读请求,则确认针对应用程序A的RDMA读请求不合法。
例如,网络适配器202接收到针对应用程序A的RDMA读请求所请求访问的地址的起始地址为S,长度为20K。报文处理模块20212根据所述RDMA读请求中携带的R_Key,查找MPT20211。如果查找到包含该R_Key的MPT表项,即应用程序A的MPT表项,再判断该起始地址为S,长度为20K的地址范围是否在应用程序A的MPT表项中所记录的虚拟内存地址范围内。由于应用程序A的MPT表项记录的可以进行RDMA访问的地址范围是起始地址为S,长度为100K,则报文处理模块20212确认该RDMA读请求的内存地址范围在应用程序A注册的内存地址范围内。进一步的,报文处理模块20212判断应用程序A的MPT表项所记录的权限信息中是否包含读请求。如上表1所示,应用程序A的MPT表项中包含读请求的权限,则报文处理模块20212确认该RDMA读请求合法。
需要说明的是,报文处理模块20212根据R_Key在MPT20211中查询MPT表项,包含了通过R_Key对上述RDMA读请求的验证。如果未查询到包含该RDMA读请求中包含的R_Key,说明该R_Key无对应的RDMA操作权限,报文处理模块20212确认该RDMA读请求不合法。报文处理模块20212确认该RDMA读请求不合法时,可以将该RDMA读请求丢弃。
上述只是以RDMA读请求为例进行说明,在具体实现时,针对应用程序A的RDMA写请求,可以参考上述的实现方式来实现。并且,上述R_Key也只是举例,在具体实现时,针对本地发起的RDMA请求,例如包含L_Key的RDMA请求,也可以参考上述的实现方式来实现。不再赘述。
报文处理模块20212对RDMA请求验证合法后,将查询到的MPT表项中的PASID发送给DMA模块20213。例如,报文处理模块20212根据RDMA请求中携带的R_Key查询到对应的MPT表项并验证通过后,从查询到的MPT表项中获取PASID,并发送给DMA模块20213。
DMA模块20213,用于根据报文处理器模块20212发送的PASID,发送包含所述PASID的DMA操作请求。
具体实现时,DMA模块20213能够将网络适配器202接收到RDMA请求转换为具体的DMA操作请求,以实现对相应内存的访问,例如对相应内存的直接数据读写。本申请实施例中,DMA模块发送的DMA操作请求,还包括有PASID,这样使得转换器2013能够根据携带的PASID获取相应的页表,并根据获取的页表获取与虚拟内存地址对应的物理内存地址,并将DMA操作请求中的虚拟内存地址转换为物理内存地址。
需要说明的是,DMA模块20213将网络适配器202接收到的RDMA请求转换为DMA操作请求,可以通过现有的实现方式来实现。本申请实施例提供的方案,是在DMA模块20213将网络适配器202接收到的RDMA请求转换为DMA操作请求的基础上(不需要查询MTT并将RDMA请求中的虚拟内存地址转换为物理内存地址),在转换后的DMA操作请求中携带PASID的信息,即携带该与RDMA请求相关的应用程序的PASID。正是因为本申请实施例提供的技术方案中,DMA模块20213转换后的DMA操作请求携带有PASID的信息,转换器2013能够根据DMA操作请求中携带的PASID查找页表,并根据查找到的页表实现虚拟内存地址到物理内存地址的转换。
可选的,基于图2B所示的实现方案,处理器201还可以包括处理器核2014。如图2C所示,处理器核2014用于实现处理器201应实现的部分功能。具体的,处理器核2014可以参考现有技术中处理器核的实现方式来实现,不再赘述。
参考图3A,图3A为本申请实施例提供的一种内存访问方法的流程示意图。图3A所示的方法,可以由计算机设备中的网络适配器来实现,例如,可以由上述图2A或图2B中的网络适配器202来实现。下面以图2B所示的计算机设备200中的网络适配器202为例,描述所述方法的实现过程:
步骤302:接收RDMA请求;
例如,网络适配器202接收其它设备通过网络发送的RDMA请求,该RDMA请求是针对应用程序A发起的读请求。该RDMA读请求中包含请求读取数据的虚拟内存地址以及请求的操作类型(即读请求);并且,该RDMA读请求中还包括远程关键字(R_Key)。
步骤304:对所述RDMA请求进行鉴权;
即网络适配器202对接收到的RDMA请求进行鉴权。具体的,可以由网络适配器202中的报文处理模块20212对所述RDMA请求进行鉴权。
例如,网络适配器202中的报文处理模块20212,获取上述RDMA读请求中的R_key,根据R_key查找MPT20211,如果查找到包含该R_key的MPT表项,则验证该RDMA请求中携带的待读取数据的虚拟内存地址是否落在该MPT表项中记录的地址范围之内,并判断该MPT表项是否包含读请求的权限。如果该RDMA请求中携带的待读取数据的虚拟内存地址落在该MPT表项中记录的地址范围之内,且该MPT表项包含读请求的权限,则对该RDMA读请求的鉴权结果为通过。如果根据该RDMA请求中携带的R_key在MPT20211中没有查到MPT表项,或该RDMA请求中携带的待读取数据的虚拟内存地址不在该MPT表项中记录的地址范围之内,或该MPT表项没有包含读请求的权限,则对该RDMA读请求的鉴权结果为不通过。
步骤306:在鉴权通过时,获取PASID;
例如,网络适配器202中的报文处理模块20212通过对所述RDMA读请求的鉴权时,从相应的MPT表项中获取记录的PASID。该PASID是处理器201为该应用程序分配的并发送给网络适配器202的PASID。
步骤308:发送包含所述PASID的DMA操作请求以执行所述RDMA请求。
具体的,网络适配器202根据所述RDMA请求中携带的地址范围和操作类型,发送携带所述PASID的DMA操作请求。
例如,可以由网络适配器202中的DMA模块20213根据报文处理模块20212发送的PASID,以及所述RDMA读请求中请求读取的数据的地址(待读取数据的虚拟内存地址)和操作类型(读操作),发起包含所述PASID的DMA操作请求。该DMA操作请求用于根据该虚拟内存地址直接从内存读取数据。
在一种实现方式中,DMA模块20213可以通过携带PASID的PCIe报文发起DMA操作请求,该PCIe报文中携带的内存地址是所述RDMA读请求中携带的虚拟内存地址。
上述方法中,网络适配器202中不再需要存储MTT,而是通过PASID替代MTT并发送包含PASID的DMA操作请求。由于不再需要MTT,能够避免网络适配器202频繁从内存204迁移MTT所造成的资源的消耗,也能够节省网络适配器202中的存储空间。
本申请实施例提供的另一种内存方法的实现方式中,上述方法还包括网络适配器接收处理器发送的MPT和PASID,并存储在网络适配器202中的步骤。如图3B所示,所述方法还包括:
步骤300:接收MPT和PASID并存储。
即网络适配器202接收处理器201发送的MPT表项以及PASID信息,将所述PASID记录在所述MPT表项中并存储。
例如,应用程序A在发起RDMA相关的操作前,先进行内存注册。通过内存注册,处理器201能够获取应用程序A进行RDMA操作的地址范围和权限信息,将应用程序A进行RDMA操作的地址范围和权限信息以MPT表项的形式发送给网络适配器202。同时,处理器201为应用程序A分配PASID,并将分配的PASID发送给网络适配器202。网络适配器202将处理器201为应用程序A分配的PASID与应用程序A的MPT表项一起存入MPT中。具体实现时,可以是处理器中的内存管理单元2011将应用程序A的MPT发送给网络适配器202,PASID管理单元2012为应用程序A分配PASID并发送给网络适配器202。
上述计算机设备200可以是图1中的计算机设备1或计算机设备2。当计算机设备200是图1中的计算机设备1时,网络适配器202作为HCA实现上述图3A或图3B所示的功能。当计算机设备200是图1中的计算机设备2时,网络适配器202作为TCA实现上述图3A或图3B所示的功能。
进一步的,本申请实施例提供的方法还进一步包括步骤310,如图3C所示:
步骤310:转换器根据所述PASID,将所述DMA操作请求的内存地址转换为物理内存地址。
具体的,所述转换器2013拦截网络适配器202发起的包含所述PASID的DMA操作请求,根据所述DMA操作请求中的所述PASID,查询存储的PASID与页表的对应关系表,获取与所述PASID对应的页表,并根据所述页表获取与所述RDMA请求中包含的虚拟内存地址对应的物理内存地址,从而将所述DMA操作请求中的虚拟内存地址转换为物理内存地址。
图3C所示的方法中,转换器2013根据与PASID对应的页表,将该DMA操作请求中的虚拟内存地址转换为物理内存地址,实现了虚拟内存地址到物理内存地址的转换。这样,替代了通过MTT实现虚拟内存地址到物理内存地址的转换的方式,由于页表是操作系统分配给应用程序的,可以实现灵活的调整,相对于MTT中虚拟内存地址与物理内存地址的固定的对应关系,灵活度更高。
图4为本申请实施例提供的一种计算机设备400的结构示意图。如图4所示,计算机设备400包括网络适配器401和转换器402,其中:
所述网络适配器401,用于接收RDMA请求,所述RDMA请求携带有RDMA访问的关键字,根据所述关键字获取对应的地址空间标识,发送包含所述地址空间标识的DMA操作请求,所述DMA操作请求携带有所述RDMA请求中包含的虚拟内存地址;
所述转换器402,用于拦截所述DMA操作请求,根据所述地址空间标识获取与所述地址空间标识对应的页表,根据所述页表将所述虚拟内存地址转换为物理内存地址,其中,所述页表包括所述RDMA请求的虚拟内存地址与物理内存地址之间的对应关系。
上述计算机设备400中的网络适配器401在接收到RDMA请求时,能够发送包含地址空间标识的DMA操作请求,使得转换器402能够根据所述地址空间标识获取与所述地址空间标识对应的页表,根据所述页表将所述虚拟内存地址转换为物理内存地址。这样,网络适配器401就不再需要根据MTT实现虚拟内存地址到物理内存地址的转换,省去了因存储MTT所造成的资源占用,避免了现有技术中网络适配器与内存之间频繁迁移MTT时所带来的资源的消耗。同时,由于页表是操作系统分配给应用程序的,操作系统可以动态地分配页表,通过页表实现虚拟内存地址与物理内存地址的转换,相对于现有技术中MTT中虚拟内存地址与物理内存地址之间固定不变的对应关系,能够提升虚拟内存地址与物理内存地址之间映射的灵活性。
本申请实施例提供的计算机设备400,可以参考上述图2A、图2B或图2C所示的计算机设备200的实现方式来实现。例如,网络适配器401可以参考图2A或图2B中关于网络适配器202的实现方式来实现,转换器402可以参考图2A、图2B或图2C中关于转换器2013的实现方式来实现,不再赘述。
图5为本申请实施例提供的一种网络适配器500的结构示意图。如图5所示,所述网络适配器500包括处理器501和存储器502,所述存储器502存储有计算机可执行程序,所述处理器501用于调用所述存储器中的计算机可执行程序,执行如下步骤:
接收远程直接内存访问RDMA请求,所述RDMA请求携带有RDMA访问的关键字;
根据所述关键字获取对应的地址空间标识;
发送包含所述地址空间标识的直接内存访问DMA操作请求,所述DMA操作请求携带有所述RDMA请求中包含的虚拟内存地址,以使得转发所述DMA操作请求的设备根据所述地址空间标识获取与所述地址空间标识对应的页表,根据所述页表将所述虚拟内存地址转换为物理内存地址,其中,所述页表包括所述RDMA请求的虚拟内存地址与物理内存地址之间的对应关系。
上述网络适配器500在接收到RDMA请求时,能够发送包含所述地址空间标识的直接内存访问DMA操作请求,使得转发所述DMA操作请求的设备根据所述地址空间标识获取与所述地址空间标识对应的页表,根据所述页表将所述虚拟内存地址转换为物理内存地址。这样,网络适配器500就不再需要根据MTT实现虚拟内存地址到物理内存地址的转换,省去了因存储MTT所造成的资源占用,避免了现有技术中网络适配器与内存之间频繁迁移MTT时所带来的资源的消耗。
本申请实施例提供的网络适配器500,可以参考上述图2A、图2B或图2C所示的计算机设备200中的网络适配器202的实现方式来实现,不再赘述。
图6为本申请实施例提供的一种处理RDMA请求的方法流程示意图。如图6所示,所述方法包括:
步骤600:接收RDMA请求,所述RDMA请求携带有RDMA访问的关键字;
步骤602:根据所述关键字获取对应的地址空间标识;
步骤604:发送包含所述地址空间标识的直接内存访问DMA操作请求,其中,所述DMA操作请求携带有所述RDMA请求中包含的虚拟内存地址;
步骤606:根据所述地址空间标识获取与所述地址空间标识对应的页表,其中,所述页表包括所述RDMA请求的虚拟内存地址与物理内存地址之间的对应关系;
步骤608:根据所述页表将所述虚拟内存地址转换为物理内存地址。
上述方法中,在接收到RDMA请求时,能够发送包含所述地址空间标识的直接内存访问DMA操作请求,并根据所述地址空间标识获取与所述地址空间标识对应的页表,根据所述页表将所述虚拟内存地址转换为物理内存地址。这样,就不再需要根据MTT实现虚拟内存地址到物理内存地址的转换,省去了因存储MTT所造成的资源占用,避免了现有技术中网络适配器与内存之间频繁迁移MTT时所带来的资源的消耗。同时,由于页表是操作系统分配给应用程序的,操作系统可以动态地分配页表,通过页表实现虚拟内存地址与物理内存地址的转换,相对于现有技术中MTT中虚拟内存地址与物理内存地址之间固定不变的对应关系,能够提升虚拟内存地址与物理内存地址之间映射的灵活性。
上述方法可以由计算机设备执行并实现。具体的,可以参考上述图2A、图2B或图2C所示的计算机设备200的实现方式来实现,也可以参考上述图3A-图3C的实现方式来实现,不再赘述。
图7A为本申请实施例提供的一种计算机设备700的结构示意图。如图7B所示,计算机设备700包括处理器701、网络适配器702,其中处理器701包括转换器7011,所述网络适配器包括处理器7021,所述处理器7021包括报文处理模块70211和DMA模块70212;
所述报文处理模块70211,用于接收RDMA请求,所述RDMA请求携带有RDMA访问的关键字,根据所述关键字获取对应的地址空间标识,并将所述地址空间标识发送给DMA模块7021;
所述DMA模块7021,用于发送包含所述地址空间标识的DMA操作请求,所述DMA操作请求携带有所述RDMA请求中包含的虚拟内存地址;
所述转换器7011,用于拦截所述DMA操作请求,根据所述地址空间标识获取与所述地址空间标识对应的页表,根据所述页表将所述虚拟内存地址转换为物理内存地址,其中,所述页表包括所述RDMA请求的虚拟内存地址与物理内存地址之间的对应关系。
图7B为本申请实施例提供的另一种计算机设备700的结构示意图。如图7所示,处理器701还包括PASID管理单元7012和内存管理单元7013,所述处理器7021包括还MPT70213;
所述内存管理单元7013,用于接收应用程序发起的内存注册,创建MPT表项并将所述MPT表项发送给网络适配器702;
所述PASID管理单元7012,用于为所述应用程序分配PASID,将所述PASID发送给网络适配器702,建立所述PASID与页表的对应关系,并将所述PASID与页表的对应关系配置在转换器7011中;其中,所述页表是所述应用程序的虚拟内存地址与物理内存地址之间的对应关系表;
所述MPT70211,用于记录所述MPT表项和所述PASID,所述MPT表项中包括所述PASID。上述计算机设备700的具体实现方式,可以参考上述图2B或图2C所示的计算机设备200的实现方式来实现。例如,处理器701可以参考图2B或图2C中关于处理器201的实现方式来实现,网络适配器702可以参考图2B或图2C中关于网络适配器202的实现方式来实现,不再赘述。
上述计算机设备700中的网络适配器702在接收到关于所述应用程序的RDMA请求时,能够触发包含PASID的DMA操作,使得转换器7013能够根据PASID与页表的对应关系,将所述DMA操作的内存地址转换为物理内存地址。这样,网络适配器702就不再需要根据MTT实现虚拟内存地址到物理内存地址的转换,省去了因存储MTT所造成的资源占用,避免了现有技术中网络适配器与内存之间频繁迁移MTT时所带来的资源的消耗。同时,由于页表是操作系统分配给应用程序的,操作系统可以动态地分配页表,相对于现有技术中MTT中虚拟内存地址与物理内存地址之间固定不变的对应关系,能够提升虚拟内存地址与物理内存地址之间映射的灵活性。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的计算机设备、网络适配器和方法,可以通过其它的方式实现。例如,以上所描述的计算机设备200的实现方式仅仅是示意性的,例如,图2B中单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (17)

1.一种计算机设备,所述计算机设备包括网络适配器和转换器,其特征在于:
所述网络适配器用于:
接收远程直接内存访问RDMA请求;
所述转换器用于:
拦截DMA操作请求。
2.根据权利要求1所述的计算机设备,其特征在于:
所述网络适配器中存储有内存保护表MPT,其中,所述MPT记录有所述关键字和所述地址空间标识的对应关系,所述地址空间标识用于标识所述RDMA请求所请求访问的虚拟内存地址空间;
所述网络适配器用于根据所述关键字和所述MPT获取所述地址空间标识。
3.根据权利要求1所述的计算机设备,其特征在于:
所述关键字包括所述RDMA请求中的R_Key、L_Key或专门用于标识MPT表项的信息。
4.根据权利要求2所述的计算机设备,其特征在于:
所述关键字包括所述RDMA请求中的R_Key、L_Key或专门用于标识MPT表项的信息。
5.根据权利要求2所述的计算机设备,其特征在于,所述网络适配器还用于:
根据所述MPT对所述RDMA请求进行鉴权;
其中,所述网络适配器用于当鉴权通过时发送所述DMA操作请求。
6.根据权利要求4所述的计算机设备,其特征在于,所述网络适配器还用于:
根据所述MPT对所述RDMA请求进行鉴权;
其中,所述网络适配器用于当鉴权通过时发送所述DMA操作请求。
7.根据权利要求1-6中任意一项所述的计算机设备,其特征在于,所述计算机设备还包括处理器,用于在所述转换器中配置所述地址空间标识与所述页表的对应关系。
8.根据权利要求7所述的计算机设备,其特征在于,所述处理器,还用于为应用程序分配所述地址空间标识,并将所述地址空间标识发送给所述网络适配器,其中,所述RDMA请求是针对所述应用程序发起的请求。
9.根据权利要求1-6任意一项所述的计算机设备,其特征在于,所述计算机设备还包括处理器,用于为应用程序分配所述地址空间标识,并将所述地址空间标识发送给所述网络适配器,其中,所述RDMA请求是针对所述应用程序发起的请求。
10.一种处理远程直接内存访问RDMA请求的方法,其特征在于,所述方法包括:
接收RDMA请求;
拦截DMA操作请求。
11.根据权利要求10所述的方法,其特征在于,所述根据所述关键字获取对应的地址空间标识包括:
根据所述关键字和内存保护表MPT获取所述地址空间标识,其中,所述MPT记录有所述关键字和所述地址空间标识的对应关系,所述地址空间标识用于标识所述RDMA请求所请求访问的虚拟内存地址空间。
12.根据权利要求10所述的方法,其特征在于:
所述关键字包括所述RDMA请求中的R_Key、L_Key或专门用于标识MPT表项的信息。
13.根据权利要求11所述的方法,其特征在于:
所述关键字包括所述RDMA请求中的R_Key、L_Key或专门用于标识MPT表项的信息。
14.根据权利要求11所述的方法,其特征在于,所述方法还包括:
根据所述MPT对所述RDMA请求进行鉴权;
所述发送包含所述地址空间标识的DMA操作请求包括:
当对所述RDMA请求鉴权通过后,发送包含所述地址空间标识的DMA操作请求。
15.根据权利要求13所述的方法,其特征在于,所述方法还包括:
根据所述MPT对所述RDMA请求进行鉴权;
所述发送包含所述地址空间标识的DMA操作请求包括:
当对所述RDMA请求鉴权通过后,发送包含所述地址空间标识的DMA操作请求。
16.根据权利要求10-15中任意一项所述的方法,其特征在于,所述方法还包括:
配置所述地址空间标识与应用程序的页表之间的对应关系。
17.一种计算机可读存储介质,其特征在于,所述计算机可读介质包括程序代码,所述程序代码包括用于执行权利要求10-16中任意一项方法的指令。
CN202310681772.5A 2019-09-30 2019-12-31 处理远程直接内存访问请求的方法和计算机设备 Pending CN117171073A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN2019109441712 2019-09-30
CN201910944171 2019-09-30
CN201911419145.4A CN111221758B (zh) 2019-09-30 2019-12-31 处理远程直接内存访问请求的方法和计算机设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201911419145.4A Division CN111221758B (zh) 2019-09-30 2019-12-31 处理远程直接内存访问请求的方法和计算机设备

Publications (1)

Publication Number Publication Date
CN117171073A true CN117171073A (zh) 2023-12-05

Family

ID=70811467

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201911419145.4A Active CN111221758B (zh) 2019-09-30 2019-12-31 处理远程直接内存访问请求的方法和计算机设备
CN202310681772.5A Pending CN117171073A (zh) 2019-09-30 2019-12-31 处理远程直接内存访问请求的方法和计算机设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201911419145.4A Active CN111221758B (zh) 2019-09-30 2019-12-31 处理远程直接内存访问请求的方法和计算机设备

Country Status (1)

Country Link
CN (2) CN111221758B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117851286A (zh) * 2023-12-13 2024-04-09 天翼云科技有限公司 一种rdma roce中的内存地址翻译表压缩方法

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113900791A (zh) * 2020-06-22 2022-01-07 华为技术有限公司 一种作业处理方法以及相关设备
CN114327248A (zh) * 2020-10-10 2022-04-12 华为技术有限公司 存储节点、存储设备及网络芯片
CN112948149A (zh) * 2021-03-29 2021-06-11 江苏为是科技有限公司 一种远端内存共享方法、装置、电子设备及存储介质
CN115309665A (zh) * 2021-05-07 2022-11-08 华为技术有限公司 计算机设备及内存注册方法
CN113297111B (zh) * 2021-06-11 2023-06-23 上海壁仞智能科技有限公司 人工智能芯片及其操作方法
EP4365748A4 (en) * 2021-07-23 2024-10-09 Huawei Tech Co Ltd DATA ACCESS METHOD AND ASSOCIATED DEVICE
CN114301641B (zh) * 2021-12-15 2024-03-19 中国科学院深圳先进技术研究院 一种适用于rdma网络的虚拟化安全网关系统
CN116414735A (zh) * 2021-12-30 2023-07-11 华为技术有限公司 数据存储方法、系统、存储访问配置方法及相关设备
CN116418848A (zh) * 2021-12-31 2023-07-11 华为技术有限公司 网络节点的配置和访问请求的处理方法、装置
CN115185643A (zh) * 2022-07-22 2022-10-14 地平线征程(杭州)人工智能科技有限公司 访问控制方法、装置、计算机可读存储介质及电子设备
CN117667369A (zh) * 2022-08-26 2024-03-08 华为云计算技术有限公司 内存管理方法、电子设备、芯片系统及可读存储介质
CN115640241B (zh) * 2022-10-08 2023-06-09 中科驭数(北京)科技有限公司 基于地址池的内存转换表表项管理方法、查询方法及装置
CN118093468B (zh) * 2024-04-23 2024-07-02 北京数渡信息科技有限公司 具有RDMA加速功能的PCIe交换芯片及PCIe交换机

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5091846A (en) * 1986-10-03 1992-02-25 Intergraph Corporation Cache providing caching/non-caching write-through and copyback modes for virtual addresses and including bus snooping to maintain coherency
US5754764A (en) * 1994-02-22 1998-05-19 National Semiconductor Corp. Combination of input output circuitry and local area network systems
CN1912885B (zh) * 1995-02-13 2010-12-22 英特特拉斯特技术公司 用于安全交易管理和电子权利保护的系统和方法
US6970990B2 (en) * 2002-09-30 2005-11-29 International Business Machines Corporation Virtual mode virtual memory manager method and apparatus
US20060075057A1 (en) * 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
CN102467509A (zh) * 2010-11-05 2012-05-23 中科正阳信息安全技术有限公司 一种基于穷尽搜索的操作系统客体重用检验方法
CN102253855B (zh) * 2011-06-17 2016-04-13 天津书生软件技术有限公司 一种传递共享内存的方法和装置
WO2013091185A1 (en) * 2011-12-21 2013-06-27 Intel Corporation Gpu accelerated address translation for graphics virtualization
US9565472B2 (en) * 2012-12-10 2017-02-07 Time Warner Cable Enterprises Llc Apparatus and methods for content transfer protection
US9343185B2 (en) * 2013-09-26 2016-05-17 International Business Machines Corporation Electronic circuit for fitting a virtual address range to a physical memory containing faulty address
US10083131B2 (en) * 2014-12-11 2018-09-25 Ampere Computing Llc Generating and/or employing a descriptor associated with a memory translation table
CN105975407B (zh) * 2016-03-22 2020-10-09 华为技术有限公司 一种内存地址的映射方法及设备
CN110008692B (zh) * 2019-03-22 2021-08-17 联想(北京)有限公司 一种信息处理方法、装置与存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117851286A (zh) * 2023-12-13 2024-04-09 天翼云科技有限公司 一种rdma roce中的内存地址翻译表压缩方法

Also Published As

Publication number Publication date
CN111221758B (zh) 2023-06-27
CN111221758A (zh) 2020-06-02

Similar Documents

Publication Publication Date Title
CN111221758B (zh) 处理远程直接内存访问请求的方法和计算机设备
US10924483B2 (en) Packet validation in virtual network interface architecture
EP3706394B1 (en) Writes to multiple memory destinations
US8156503B2 (en) System, method and computer program product for accessing a memory space allocated to a virtual machine
US10678432B1 (en) User space and kernel space access to memory devices through private queues
US7370174B2 (en) Method, system, and program for addressing pages of memory by an I/O device
CN113688072B (zh) 数据处理方法及设备
US7543290B2 (en) Multiple queue pair access with single doorbell
US9342448B2 (en) Local direct storage class memory access
US8713180B2 (en) Zero-copy network and file offload for web and application servers
US7493425B2 (en) Method, system and program product for differentiating between virtual hosts on bus transactions and associating allowable memory access for an input/output adapter that supports virtualization
US6598144B1 (en) Arrangement for limiting access to addresses by a consumer process instigating work in a channel adapter based on virtual address mapping
US11940933B2 (en) Cross address-space bridging
US11507285B1 (en) Systems and methods for providing high-performance access to shared computer memory via different interconnect fabrics
US8566416B2 (en) Method and system for accessing storage device
WO2016119469A1 (zh) 业务上下文管理方法、物理主机、pcie设备及迁移管理设备
US20170017609A1 (en) Access control in peer-to-peer transactions over a peripheral component bus
US11741039B2 (en) Peripheral component interconnect express device and method of operating the same
EP3070633A1 (en) Network interface devices with remote storage control
CN115129625A (zh) 外围设备中的增强的存储协议仿真
US20110246600A1 (en) Memory sharing apparatus
US20230342087A1 (en) Data Access Method and Related Device
EP3913488B1 (en) Data processing method and device
US20240211392A1 (en) Buffer allocation
KR20190064290A (ko) 네트워크 인터페이스 카드를 이용한 데이터 송수신 가속 방법 및 장치

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