CN113852656B - 一种数据传输方法、处理器系统及内存访问系统 - Google Patents
一种数据传输方法、处理器系统及内存访问系统 Download PDFInfo
- Publication number
- CN113852656B CN113852656B CN202011063642.8A CN202011063642A CN113852656B CN 113852656 B CN113852656 B CN 113852656B CN 202011063642 A CN202011063642 A CN 202011063642A CN 113852656 B CN113852656 B CN 113852656B
- Authority
- CN
- China
- Prior art keywords
- address
- network card
- rdma network
- memory
- data
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 564
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000005540 biological transmission Effects 0.000 title claims abstract description 29
- 238000004806 packaging method and process Methods 0.000 claims abstract description 5
- 238000013507 mapping Methods 0.000 claims description 113
- 230000004044 response Effects 0.000 claims description 34
- 238000005538 encapsulation Methods 0.000 claims description 33
- 208000033748 Device issues Diseases 0.000 claims description 11
- 238000004891 communication Methods 0.000 description 13
- 238000013475 authorization Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4604—LAN interconnection over a backbone network, e.g. Internet, Frame Relay
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Bus Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供一种数据传输方法、处理器系统及内存访问系统,涉及计算机存储领域,能够远程降低内存访问的时延。该处理器系统应用于源端设备,该处理器系统包括:处理器核心和第一RDMA网卡,该处理器核心用于下发写内存指令,写内存指令包含待写入数据和待写入数据的目的地址,该目的地址为目的端设备的内存地址。第一RDMA网卡用于根据待写入数据的目的地址和目的端设备的配置信息封装待写入数据,并且向目的端设备的第二RDMA网卡发送封装后的待写入数据。
Description
本申请要求于2020年06月28日提交国家知识产权局、申请号为202010599682.8、申请名称为“一种内存访问的方法和装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请实施例涉及计算机存储领域,尤其涉及一种数据传输方法、处理器系统及内存访问系统。
背景技术
远程直接内存访问(remote direct memory access,RDMA)是一种网卡技术,通过RDMA网卡能够实现设备之间的快速内存访问。
示例性的,以计算机1与计算机2基于RDMA技术进行内存访问为例,计算机1和计算机2的结构可参考图1。当计算机1向计算机2的内存写入数据时,计算机1的处理器核心11将写任务存储至计算机1的内存12,然后计算机1的处理器核心11基于指定的通信协议组装本地内存对应的数据,并通知计算机1的RDMA网卡13将该数据写至计算机2的内存22。当计算机1读取计算机2的内存中的数据时,计算机1的处理器核心12将读任务存储至内存12,然后处理器核心11通知RDMA网卡13从计算机2的内存22读取数据,进而计算机2的RDMA网卡23从内存22中读取数据(该数据是由计算机2的处理器核心基于指定的通信协议组装的),并返回至RDMA网卡13,该RDMA网卡13将该数据写入计算机1的内存12中,后续地,处理器核心11可以从内存12中读取该数据。
然而上述内存访问的过程中,对于读数据和写数据,均需要由处理器核心进行数据组装数据,内存访问的时延仍然较大。
发明内容
本申请实施例提供一种数据传输方法、处理器系统及内存访问系统,能够远程降低内存访问的时延。
为达到上述目的,本申请实施例采用如下技术方案:
第一方面,本申请实施例提供一种处理器系统,应用于源端设备,该处理器系统包括:处理器核心和第一RDMA网卡。其中,该处理器核心用于下发写内存指令,该写内存指令包含待写入数据和待写入数据的目的地址,该待写入数据的目的地址为目的端设备的内存地址;第一RDMA网卡用于根据待写入数据的目的地址目的端设备的配置信息封装待写入数据,向目的端设备的第二RDMA网卡发送封装后的待写入数据,以使得第二RDMA网卡将待写入数据写入目的端设备的内存。
本申请实施例提供的处理器系统中,由于源端设备的处理器核心发送写内存指令给源端设备的RDMA网卡,该写内存访问指令中携带的是目的端设备的内存地址(待写入数据的目的地址),如此,待写入数据不需要写到本地内存,而是由处理器核心与RDMA网卡之间实现数据交换,然后由RDMA网卡对待写入数据进行封装(即不基于处理器核心的通知,而是在收到写内存指令后,网卡执行封装的动作),并维护通信协议的数据结构,与现有技术相比,源端设备的处理器核心无需运行复杂的应用软件封装待写入数据,也无需维护通信协议的数据结构,因此,能够降低远程内存访问的时延。
并且由于处理器核心无需封装待写入数据,能够降低处理器核心的开销,节省处理器核心的算力资源。
一种可能的实现方式中,该目的端设备的配置信息至少包括:目的端设备的地址和/或第二RDMA网卡的地址。上述第一RDMA网卡还用于获取目的端设备的配置信息。
本申请实施例中,在源端设备和目的端设备之间进行内存访问之前,分别对源端设备和目的端设备进行初始化配置,包括配置各设备的地址和设备上的RDMA网卡的地址等信息,从而源端设备和目的端设备交互,将各自的设备地址和RDMA网卡地址等信息发送给对方,以用于后续内存访问时根据对端的配置信息进行数据封装或解封装。
一种可能的实现方式中,上述处理器系统还包括互连总线,该互连总线连接处理器核心和至少一个RDMA网卡,该至少一个RDMA网卡包括第一RDMA网卡。该互连总线用于接收处理器核心下发的写内存指令,并且基于第一映射关系从至少一个RDMA网卡中确定待写入数据的目的地址对应的第一RDMA网卡,以及向第一RDMA网卡发送待写入数据;其中,第一映射关系是地址窗口与RDMA网卡地址之间的映射关系。
通过互连总线对该源端设备的处理器核心下发的写内存指令进行地址映射进以将该写内存指令顺利地转发至对应的RDMA网卡。
一种可能的实现方式中,上述互连总线具体用于确定待写入数据的目的地址所属的第一地址窗口,并且基于第一映射关系从至少一个RDMA网卡中确定与第一地址窗口对应的第一RDMA网卡。
一种可能的实现方式中,上述处理器系统还包括内存,该内存与互连总线连接。上述源端设备的内存与目的端设备的内存统一编址;或者,源端设备的内存与目的端设备的内存非统一编址。
一种可能的实现方式中,在源端设备的内存与目的端设备的内存非统一编址的情况下,第一RDMA网卡还用于基于第二映射关系,对待写入数据的目的地址进行转换,该第二映射关系是第一内存地址与第二内存地址的之间映射关系。其中,待写入数据的目的地址是第一内存地址,第一内存地址是目的端设备的内存映射到源端设备的地址空间之后的映射地址;转换后的目的地址为第二内存地址,第二内存地址是目的端设备的内存的本地地址。第一RDMA网卡具体用于根据转换后的目的地址和目的端设备的配置信息封装待写入数据。
由于源端设备的内存与目的端设备的内存非同一编址时,该源端设备的内存地址与目的端设备的内存地址可能发生冲突,那么当源端设备的处理器核心下发写内存指令时,该源端设备的第一RDMA网卡接收到该写指令后,该第一RDMA网卡无法识别出该写指令中的内存地址是源端设备的内存地址,还是目的端设备的内存地址,如此,可能导致内存访问失败。本申请实施例中,第一RDMA网卡通过地址映射对内存访问的目的地址进行地址转换,解决地址冲突的问题,能够顺利完成内存访问。
一种可能的实现方式中,上述处理器系统还包括直通口,处理器核心通过直通口与互连总线连接。直通口用于从处理器核心接收写内存指令,为写内存指令添加时间戳,并且启动直通口中的定时器,以及向互连总线发送该写内存指令。
如此,在目的端设备(具体为目的端设备的内存控制器)接收到多个指令时,可以按照指令的时间戳信息,即按照指令的时间先后按序处理多个指令,避免拥塞。可选地,该时间寄存器的长度为64bit。
一种可能的实现方式中,直通口具体用于在定时器到期之前接收到第二RDMA网卡的响应消息,停止定时器;或者,在定时器到期时未接收到第二RDMA网卡的响应消息,向处理器核心上报超时响应信息。
本申请实施例中,当写内存指令出现超时、抖动等异常情况,直通口在定时器到期时一直未收到响应消息,则直通口向处理器核心上报超时响应消息,如此,处理器核心对该超时情况进行响应,能够避免处理器核心挂死。
一种可能的实现方式中,上述写内存指令包含一条指令,则上述待写入数据是处理器核心的寄存器中的数据,该处理器核心从寄存器中读取待写入数据,并且将该待写入数据和目的端设备的内存地址(即目的地址)携带在写内存指令中进行下发,以通知其他模块需将该待写入数据写入目的端设备的内存中该目的地址对应的内存空间。
可选地,处理器核心的寄存器支持的数据长度可以为64比特(bit),该处理器核心的寄存器也支持长度扩展。
一种可能的实现方式中,上述写内存指令包括第一指令和第二指令;上述处理器核心具体用于下发第一指令,该第一指令包括待写入数据和第一地址;并且下发第二指令,该第二指令包括待写入数据的目的地址和第二地址,第一地址和第二地址分别为第一RDMA网卡中的寄存器中的地址,第一地址是第一RDMA网卡的寄存器中用于存储待写入数据的地址,第二地址是第一RDMA网卡的寄存器中用于存储待写入数据的目的地址的地址。第一RDMA网卡具体用于根据第一指令中的第一地址,将待写入数据写入第一RDMA网卡中的寄存器,并且根据第二指令中的第二地址,将待写入数据的目的地址写入第一RDMA网卡中的寄存器,以及根据寄存器中的待写入数据的目的地址封装待写入数据,且向目的端设备的第二RDMA网卡发送封装后的待写入数据,以使得第二RDMA网卡将待写入数据写入目的端设备的内存。
本申请实施例中,当该第一RDMA网卡检测到该第一RDMA网卡的寄存器的指定地址中存储有上述待写入数据和该待写入数据的目的地址(即第一地址对应的存储空间中存储有待写入数据,第二地址对应的存储空间中存储有待写入数据的目的地址)时,第一RDMA网卡将该待写入数据写入目的端设备的内存中该目的地址对应的内存空间。
一种可能的实现方式中,对待写入数据进行封装的协议包括下述一种:RDMA协议、TCP协议、IP协议或InfiniBand协议。本申请实施例中,对待写入数据进行封装所需的信息的具体内容与封装协议有关,对于不同的封装协议,封装待写入数据所需的信息的内容可能有差异。
一种可能的实现方式中,第一RDMA网卡还用于在接收到第二RDMA网卡的响应消息之后,维护第一RDMA网卡上的数据封装协议的数据结构(可以理解为更新相关配置信息)。
第二方面,本申请实施例提供一种内存访问系统,包括源端设备和目的端设备,源端设备的处理器系统包括:处理器核心和第一远程直接内存访问RDMA网卡,目的端设备的处理器系统包括第二RDMA网卡和内存。源端设备的处理器核心用于下发读内存指令,读内存指令包含待读取的数据的地址和寄存器地址,待读取的数据的地址为目的端设备的内存地址,寄存器地址为处理器核心的寄存器中的地址;第一RDMA网卡,用于根据待读取的数据的地址向目的端设备的第二RDMA网卡发送包含封装后的寄存器地址的读请求。目的端设备的第二RDMA网卡,用于从第一RDMA网卡接收读请求,对封装后的寄存器地址进行解封装,并且根据待读取的数据的地址从目的端设备的内存中读取待读取的数据,并且根据读内存指令中的寄存器地址封装待读取的数据,以及向第一RDMA网卡发送封装后的待读取的数据。第一RDMA网卡还用于从第二RDMA网卡接收封装后的待读取的数据,并且对封装后的待读取的数据进行解封装,以及向处理器核心的寄存器发送解封装后的待读取的数据。
本申请实施例中,在读取数据的过程中,源端设备的处理器核心发送读内存指令给源端设备的RDMA网卡,该读存访问指令中携带的是目的端设备的内存地址(待读取的数据的地址)和处理器核心的寄存器地址,类似于写数据的过程,处理器核心也不需要将待读取的数据的地址和寄存器地址写到本地内存,而是将该读内存指令发送至源端设备的RDMA网卡,然后由源端设备的RDMA网卡向目的端设备的RDMA网卡发送读请求,目的端设备的RDMA网卡从目的端设备的内存中读取待读取的数据,并封装该待读取的数据,再将该待读取的数据返回至源端设备的RDMA网卡,进而源端设备的RDMA网卡与处理器核心实现数据交换。可知,待读取的数据由目的端设备的RDMA网卡封装,并维护通信协议的数据结构,与现有技术相比,目的端设备的处理器核心无需运行复杂的应用软件封装待读取的数据,也无需维护通信协议的数据结构,因此,能够降低远程内存访问的时延。并且由于处理器核心无需封装待读取的数据,能够降低处理器核心的开销,节省处理器核心的算力资源。
本申请实施例中,源端设备的处理器核下发读内存指令后,在待读取数据返回至该处理器核心之前的时间段内,该处理器核心可执行其他指令,能够提升处理器核心的工作效率。
一种可能的实现方式中,目的端设备的配置信息至少包括目的端设备的地址和/或第二RDMA网卡的地址;第一RDMA网卡还用于获取目的端设备的配置信息。
一种可能的实现方式中,源端设备的配置信息至少包括:源端设备的地址和/或第一RDMA网卡的地址。第二RDMA网卡还用于获取源端设备的配置信息。
一种可能的实现方式中,源端设备的处理器系统还包括直通口和互连总线,处理器核心通过直通口连接互连总线,互连总线还连接至少一个RDMA网卡,至少一个RDMA网卡包括第一RDMA网卡。该源端设备的直通口用于从处理器核心接收读内存指令,为读内存指令添加时间戳,并且启动直通口中的定时器,以及向互连总线发送该读内存指令;该源端设备的互连总线用于从直通口接收读内存指令,并且基于第一映射关系从至少一个RDMA网卡中确定待读取的数据的地址对应的第一RDMA网卡,以及向第一RDMA网卡发送读内存指令。其中,第一映射关系是地址窗口与RDMA网卡地址之间的映射关系。
一种可能的实现方式中,源端设备的互连总线具体用于确定待读取的数据的地址所属的第一地址窗口,并且基于第一映射关系从至少一个RDMA网卡中确定与第一地址窗口对应的第一RDMA网卡。
一种可能的实现方式中,该源端设备的直通口具体用于在定时器到期之前接收到待读取的数据,停止定时器;或者,在定时器到期时未接收到待读取的数据,向处理器核心上报超时响应信息。
一种可能的实现方式中,源端设备的处理器系统还包括内存,内存与互连总线连接,源端设备的内存与目的端设备的内存统一编址;或者,源端设备的内存与目的端设备的内存非统一编址。
一种可能的实现方式中,在源端设备的内存与目的端设备的内存非统一编址的情况下,第一RDMA网卡还用于基于第二映射关系,对待读取的数据的地址进行转换,该第二映射关系是第一内存地址与第二内存地址之间的映射关系。其中,待读取的数据的地址是第一内存地址,第一内存地址是目的端设备的内存映射到源端设备的地址空间之后的映射地址;转换后的目的地址为第二内存地址,第二内存地址是目的端设备的内存的本地地址。第一RDMA网卡具体用于根据转换后的地址向目的端设备的第二RDMA网卡发送包含封装后的寄存器地址的读请求。
一种可能的实现方式中,对待读取的数据进行封装或解封装的协议包括下述一种:RDMA协议、TCP协议、IP协议或InfiniBand协议。
一种可能的实现方式中,上述第一RDMA网卡还用于在接收到第二RDMA网卡发送的待读取的数据之后,维护第一RDMA网卡上的数据封装协议的数据结构。第二RDMA网卡还用户在向第二RDMA网卡发送待读取的数据之后,维护第二RDMA网卡上的数据封装协议的数据结构。
第三方面,本申请实施例提供一种数据传输方法,应用于源端设备,该方法包括:源端设备的处理器核心下发写内存指令,该写内存指令包含待写入数据和待写入数据的目的地址,待写入数据目的地址为目的端设备的内存地址;然后源端设备的第一RDMA网卡接收写内存指令,并且第一RDMA网卡根据写内存指令中的待写入数据的目的地址和目的端设备的配置信息封装待写入数据,然后第一RDMA网卡向目的端设备的第二RDMA网卡发送封装后的待写入数据。
一种可能的实现方式中,上述源端设备的处理器核心下发写内存指令之前,本申请实施例提供的数据传输方法还包括:第一RDMA网卡获取目的端设备的配置信息,该目的端设备的配置信息至少包括:目的端设备的地址和/或第二RDMA网卡的地址。
一种可能的实现方式中,本申请实施例提供的数据传输方法还包括:源端设备的互连总线接收处理器核心下发的写内存指令;并且该互连总线基于第一映射关系从至少一个RDMA网卡中确定待写入数据的目的地址对应的第一RDMA网卡,第一映射关系是地址窗口与RDMA网卡地址之间的映射关系;以及互连总线向第一RDMA网卡发送待写入数据。
一种可能的实现方式中,上述互连总线基于第一映射关系从至少一个RDMA网卡中确定待写入数据的目的地址对应的第一RDMA网卡具体包括:互连总线确定待写入数据的目的地址所属的第一地址窗口;并且互连总线基于第一映射关系从至少一个RDMA网卡中确定与第一地址窗口对应的第一RDMA网卡。
一种可能的实现方式中,源端设备的内存与目的端设备的内存统一编址;或者,源端设备的内存与目的端设备的内存非统一编址。
一种可能的实现方式中,本申请实施例提供的数据传输方法还包括:在源端设备的内存与目的端设备的内存非统一编址的情况下,第一RDMA网卡基于第二映射关系,对待写入数据的目的地址进行转换;其中,第二映射关系是第一内存地址与第二内存地址的之间映射关系,待写入数据的目的地址是第一内存地址,第一内存地址是目的端设备的内存映射到源端设备的地址空间之后的映射地址,转换后的目的地址为第二内存地址,第二内存地址是目的端设备的内存的本地地址。
一种可能的实现方式中,上述第一RDMA网卡根据待写入数据的目的地址和目的端设备的配置信息封装待写入数据具体包括:第一RDMA网卡根据转换后的目的地址和目的端设备的配置信息,封装待写入数据。
一种可能的实现方式中,本申请实施例提供的数据传输方法还包括:源端设备的直通口从处理器核心接收写内存指令,为写内存指令添加时间戳,并且启动直通口中的定时器,以及向互连总线发送该写内存指令。本申请实施例中,在定时器到期之前接收到第二RDMA网卡的响应消息,停止定时器;或者,在定时器到期时未接收到第二RDMA网卡的响应消息,直通口向处理器核心上报超时响应信息。
一种可能的实现方式中,上述写内存指令包含一条指令,则上述待写入数据是处理器核心的寄存器中的数据,该处理器核心从寄存器中读取待写入数据,并且将该待写入数据和目的端设备的内存地址(即目的地址)携带在写内存指令中进行下发,以通知其他模块需将该待写入数据写入目的端设备的内存中该目的地址对应的内存空间。
一种可能的实现方式中,上述处理器核心下发写内存指令包括发送第一指令和发送第二指令;该第一指令包括待写入数据和第一地址,该第二指令包括待写入数据的目的地址和第二地址,第一地址和第二地址分别为第一RDMA网卡中的寄存器中的地址,第一地址是第一RDMA网卡的寄存器中用于存储待写入数据的地址,第二地址是第一RDMA网卡的寄存器中用于存储待写入数据的目的地址的地址。第一RDMA网卡具体用于根据第一指令中的第一地址,将待写入数据写入第一RDMA网卡中的寄存器,并且根据第二指令中的第二地址,将待写入数据的目的地址写入第一RDMA网卡中的寄存器,以及根据寄存器中的待写入数据的目的地址封装待写入数据,且向目的端设备的第二RDMA网卡发送封装后的待写入数据,以使得第二RDMA网卡将待写入数据写入目的端设备的内存。
一种可能的实现方式中,对待写入数据进行封装的协议包括下述一种:RDMA协议、TCP协议、IP协议或InfiniBand协议。本申请实施例中,对待写入数据进行封装所需的信息的具体内容与封装协议有关,对于不同的封装协议,封装待写入数据所需的信息的内容可能有差异。
一种可能的实现方式中,上述第一RDMA网卡在接收到第二RDMA网卡的响应消息之后,本申请实施例提供的数据传输方法还包括:第一RDMA网卡维护第一RDMA网卡上的数据封装协议的数据结构。
第四方面,本申请实施例提供一种数据传输方法,应用于源端设备和目的端设备,该方法包括:源端设备的处理器核心下发读内存指令,读内存指令包含待读取的数据的地址和寄存器地址,待读取的数据的地址为目的端设备的内存地址,寄存器地址为处理器核心的寄存器中的地址;源端设备的第一RDMA网卡接收读内存指令,并根据读内存指令中的待读取的数据的地址和目的端设备的配置信息,封装寄存器地址;以及向目的端设备的第二RDMA网卡发送包含封装后的寄存器地址的读请求。进而目的端设备的第二RDMA网卡从第一RDMA网卡接收读请求;并且对封装后的寄存器地址进行解封装,并根据待读取数据的地址从目的端设备的内存中读取待读取的数据;再根据寄存器地址和源端设备的配置信息封装待读取的数据,然后向第一RDMA网卡发送封装后的待读取的数据。上述第一RDMA网卡从第二RDMA网卡接收封装后的待读取的数据,并且对封装后的待读取的数据进行解封装;并向处理器核心的寄存器发送解封装后的待读取的数据。
一种可能的实现方式中,上述源端设备的处理器核心下发读内存指令之前,本申请实施例提供过的数据传输方法还包括:源端设备从目的端设备接收目的端设备的配置信息,目的端设备的配置信息至少包括:目的端设备的地址和/或第二RDMA网卡的地址;目的端设备从源端设备接收源端设备的配置信息,源端设备的配置信息至少包括:源端设备的地址和/或第一RDMA网卡的地址。
一种可能的实现方式中,本申请实施例提供过的数据传输方法还包括:源端设备的直通口从处理器核心接收读内存指令,为读内存指令添加时间戳,并且启动直通口中的定时器,以及向源端设备的互连总线发送读内存指令。进而源端设备的互连总线接收从直通口接收读内存指令;并且基于第一映射关系从至少一个RDMA网卡中确定待读取的数据的地址对应的第一RDMA网卡,第一映射关系是地址窗口与RDMA网卡地址之间的映射关系;以及向第一RDMA网卡发送读内存指令。
本申请实施例中,直通口在定时器到期之前接收到待读取的数据,停止定时器;或者,在定时器到期时未接收到待读取的数据,直通口向处理器核心上报超时响应信息。
一种可能的实现方式中,上述互连总线基于第一映射关系从至少一个RDMA网卡中确定待读取的数据的地址对应的第一RDMA网卡具体包括:互连总线确定待读取的数据的地址所属的第一地址窗口;并基于第一映射关系从至少一个RDMA网卡中确定与第一地址窗口对应的第一RDMA网卡。
一种可能的实现方式中,源端设备的处理器系统还包括内存,内存与互连总线连接,源端设备的内存与目的端设备的内存统一编址;或者,源端设备的内存与目的端设备的内存非统一编址。
一种可能的实现方式中,本申请实施例提供过的数据传输方法还包括:在源端设备的内存与目的端设备的内存非统一编址的情况下,第一RDMA网卡基于第二映射关系,对待读取的数据的地址进行转换;其中,第二映射关系是第一内存地址与第二内存地址之间的映射关系,待读取的数据的地址是第一内存地址,第一内存地址是目的端设备的内存映射到源端设备的地址空间之后的映射地址,转换后的地址为第二内存地址,第二内存地址是目的端设备的内存的本地地址。
一种可能的实现方式中,上述第一RDMA网卡向目的端设备的第二RDMA网卡发送包含封装后的寄存器地址的读请求具体包括:第一RDMA网卡,具体用于根据转换后的地址向目的端设备的第二RDMA网卡发送包含封装后的寄存器地址的读请求。
一种可能的实现方式中,对待读取的数据进行封装或解封装的协议包括下述一种:RDMA协议、TCP协议、IP协议或InfiniBand协议。
一种可能的实现方式中,本申请实施例提供的数据传输方法还包括:第一RDMA网卡在接收到第二RDMA网卡发送的待读取的数据之后,第一RDMA网卡维护第一RDMA网卡上的数据封装协议的数据结构;第二RDMA网卡向第二RDMA网卡发送待读取的数据之后,第二RDMA网卡维护第二RDMA网卡上的数据封装协议的数据结构。
第二方面、第三方面以及第四方面的相关内容和技术效果可以参考第一方面的内容和技术效果的描述,此处不再赘述。
附图说明
图1为本申请实施例提供的一种内存访问系统的架构示意图一;
图2为本申请实施例提供的一种处理器系统的结构示意图一;
图3为本申请实施例提供的一种下发写内存指令的流程示意图;
图4为本申请实施例提供的一种处理器系统的结构示意图二;
图5为本申请实施例提供的一种源端设备的RDMA网卡与目的端设备的RDMA网卡的连接关系示意图;
图6为本申请实施例提供的一种处理器系统的结构示意图三;
图7为本申请实施例提供的一种源端设备和目的端设备的配置流程图;
图8为本申请实施例提供的一种内存访问系统的架构示意图二;
图9为本申请实施例提供的一种内存访问系统的架构示意图三;
图10为本申请实施例提供的一种数据传输方法流程图一;
图11为本申请实施例提供的一种内存访问系统的架构示意图四;
图12为本申请实施例提供的一种内存访问系统的架构示意图五;
图13为本申请实施例提供的一种数据传输方法流程图二;
图14为本申请实施例提供的一种数据传输方法流程图三。
具体实施方式
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一RDMA网卡和第二RDMA网卡等是用于区别不同的RDMA网卡,而不是用于描述RDMA网卡的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
在现有的一种远程内存访问的方案中,在写数据的过程中,源端设备的处理器核心下发的写任务携带的是源端设备的本地内存的内存地址(该内存地址用于将待写入数据写入本地内存),处理器核心基于通信协议封装待写入数据(例如,对于RDMA协议,指的是生成WQE SGE)并写入本地内存,然后通知RDMA网卡将本地内存中的待写入数据发送至目的端设备的RDMA卡,进而由目的端设备的RDMA网卡将待写入数据写入目的端设备的内存。
在读取数据的过程中,源端设备的处理器核心下发的读任务携带的是源端设备的本地内存的内存地址(该内存地址用于存储从目的端设备的内存读取的数据),处理器核心基于通信协议封装该内存地址(例如,对于RDMA协议,指的是生成WQE SGE)并写入本地内存,然后通知RDMA网卡执行读任务,进而源端设备的RDMA网卡向目的端设备的RDMA网卡发送读请求,目的端设备的RDMA网卡向源端设备的RDMA网卡发送读取的数据,之后,源端设备的RDMA网卡将该读取的数据写入源端设备的本地内存。
本申请实施例提供一种数据传输方法、处理器系统及内存访问系统,该内存访问系统包括源端设备和目的端设备,能够实现源端设备与目的端设备之间的内存访问,具体包括源端设备向目的端设备的内存写入数据,或者源端设备读取目的端设备的内存中的数据。在写数据的过程中,源端设备的处理器核心发送写内存指令给源端设备的RDMA网卡,该写内存访问指令中携带的是目的端设备的内存地址(待写入数据的目的地址),如此,待写入数据不需要写到本地内存,而是由处理器核心与RDMA网卡之间实现数据交换,然后由RDMA网卡对待写入数据进行封装(即不基于处理器核心的通知,而是在收到写内存指令后,网卡执行封装的动作),并维护通信协议的数据结构,与现有技术相比,源端设备的处理器核心无需运行复杂的应用软件封装待写入数据,也无需维护通信协议的数据结构。
在读取数据的过程中,源端设备的处理器核心发送读内存指令给源端设备的RDMA网卡,该读存访问指令中携带的是目的端设备的内存地址(待读取的数据的地址)和处理器核心的寄存器地址,类似于写数据的过程,处理器核心也不需要将待读取的数据的地址和寄存器地址写到本地内存,而是将该读内存指令发送至源端设备的RDMA网卡,然后由源端设备的RDMA网卡向目的端设备的RDMA网卡发送读请求,目的端设备的RDMA网卡从目的端设备的内存中读取待读取的数据,并封装该待读取的数据,再将该待读取的数据返回至源端设备的RDMA网卡,进而源端设备的RDMA网卡与处理器核心实现数据交换。可知,待读取的数据由目的端设备的RDMA网卡封装,并维护通信协议的数据结构,与现有技术相比,目的端设备的处理器核心无需运行复杂的应用软件封装待读取的数据,也无需维护通信协议的数据结构。
综上,通过本申请实施例提供的技术方案能够降低远程内存访问的时延。并且由于处理器核心无需封装待写入数据,能够降低处理器核心的开销,节省处理器核心的算力资源。
本申请实施例提供的数据传输方法、处理器系统及内存访问系统用于远程内存访问的场景,例如包括写内存和读内存,或者其他内存访问方式(如原子访问),具体将在下述实施例中分别介绍。
首先,对于写内存,如图2所示,本申请实施例提供一种处理器系统,该处理器系统可以应用于源端设备,该处理器系统包括:处理器核心201和第一RDMA网卡202。其中,该处理器核心201用于下发写内存指令(store指令),该写内存指令包含待写入数据和待写入数据的目的地址,该待写入数据的目的地址为目的端设备的内存地址;第一RDMA网卡202用于根据待写入数据的目的地址和目的端设备的配置信息封装待写入数据,并且向目的端设备的第二RDMA网卡发送封装后的待写入数据,以使得第二RDMA网卡将待写入数据写入目的端设备的内存。
上述待写入数据的目的地址是目的端设备的内存地址,可以理解为,将待写入数据写入目的端设备的内存的指定地址(即目的地址)。可选地,待写入数据的目的地址可以为物理地址,也可以为虚拟地址,本申请实施例不作限定。
需要说明的是,本申请实施例中,上述写内存指令中携带的待写入数据的目的地址可以为目的端设备的内存的本地地址,也可以是该目的端设备的内存的本地地址映射至源端设备的地址空间之后的映射地址,具体将在下述实施例中进行详细介绍。
可选地,上述目的端设备的配置信息至少包括:目的端设备的地址和/或第二RDMA网卡的地址,目的端设备的地址和/或第二RDMA网卡的地址用于标识RDMA网卡,在上述处理器核心201下发写内存指令之前,上述第一RDMA网卡202还用于获取目的端设备的配置信息。
示例性的,第二RDMA网卡的地址可以为该第二RDMA网卡的互联网协议(internetprotocol,IP)地址或者该第二RDMA网卡的媒体接入控制(media access control,MAC)地址,本申请实施例不作限定。
本申请实施例中,在源端设备和目的端设备之间进行内存访问之前,分别对源端设备和目的端设备进行初始化配置,包括配置各设备的地址和设备上的RDMA网卡的地址等信息,从而源端设备和目的端设备交互,将各自的设备地址和RDMA网卡地址等信息发送给对方,以用于后续内存访问时根据对端的配置信息进行数据封装或解封装。
本申请实施例中,对待写入数据进行封装的协议包括下述一种:RDMA协议、传输控制协议(transmission control protocol,TCP)、互联网协议(IP协议)或无限带宽(InfiniBand)协议。具体的,根据实际情况选择一种数据封装协议,并基于上述目的端设备的地址和/或目的设备上的RDMA网卡的地址对待写入数据进行封装。
需要说明的是,对待写入数据进行封装所需的信息的具体内容与封装协议有关,对于不同的封装协议,封装待写入数据所需的信息的内容可能有差异。
需要说明的是,本申请实施例中,上述源端设备的处理器核心下发的写内存指令可以是一条指令,也可以是两条指令。
在一种实现方式中,如图3中的(a)所示,当上述写内存指令仅包含一条指令时,上述待写入数据是处理器核心的寄存器中的数据,该处理器核心从寄存器中读取待写入数据,并且将该待写入数据和目的端设备的内存地址(即目的地址)携带在写内存指令中进行下发,以通知其他模块需将该待写入数据写入目的端设备的内存中该目的地址对应的内存空间。
可选地,处理器核心的寄存器支持的数据长度可以为64比特(bit),该处理器核心的寄存器也支持长度扩展,例如通过LDP等扩展指令将数据长度扩展至128bit或者更长,本申请实施例不作限定。
在另一种实现方式中,如图3中的(b)所示,当上述内存指令包含多条指令时,例如该写内存指令包括第一指令和第二指令。具体的,上述处理器核心201具体用于下发第一指令,该第一指令包括待写入数据和第一地址;并且下发第二指令,该第二指令包括待写入数据的目的地址和第二地址,该第一地址和第二地址分别为第一RDMA网卡中的寄存器中的地址,可以理解的是,第一地址是第一RDMA网卡的寄存器中用于存储待写入数据的地址,第二地址是第一RDMA网卡的寄存器中用于存储待写入数据的目的地址的地址。
相应地,上述第一RDMA网卡202具体用于根据第一指令中的第一地址,将待写入数据写入第一RDMA网卡中的寄存器,并且根据第二指令中的第二地址,将待写入数据的目的地址写入第一RDMA网卡中的寄存器,以及根据第一RDMA网卡的寄存器中的待写入数据的目的地址封装待写入数据,且向目的端设备的第二RDMA网卡发送封装后的待写入数据,以使得第二RDMA网卡将待写入数据写入目的端设备的内存。
可以理解的是,该处理器核心通过第一指令将待写入数据写入第一RDMA网卡的寄存器中,通过第二指令将待写入数据的目的地址(即目的端设备的内存地址)写入该第一RDMA网卡的寄存器中,当该第一RDMA网卡检测到该第一RDMA网卡的寄存器的指定地址中存储有上述待写入数据和该待写入数据的目的地址(即第一地址对应的存储空间中存储有待写入数据,第二地址对应的存储空间中存储有待写入数据的目的地址)时,第一RDMA网卡将该待写入数据写入目的端设备的内存中该目的地址对应的内存空间。
可选地,如图4所示,本申请实施例提供的(源端设备的)处理器系统还包括互连总线203,该互连总线203连接处理器核心201和至少一个RDMA网卡,该至少一个RDMA网卡包括第一RDMA网卡202。该互连总线203用于接收处理器核心下发的写内存指令,并且基于第一映射关系从至少一个RDMA网卡中确定待写入数据的目的地址对应的第一RDMA网卡202,以及向第一RDMA网卡202发送待写入数据。其中,第一映射关系是地址窗口与RDMA网卡地址之间的映射关系。
上述互连总线203具体用于确定待写入数据的目的地址所属的第一地址窗口,并且基于第一映射关系从至少一个RDMA网卡中确定与第一地址窗口对应的第一RDMA网卡。
可选地,本申请实施例中,互连总线用于连接处理器核心和其他部件,互连总线包括但不限于CHI、AXI、PCIE、CXL,具体根据实际使用需求选择,本申请实施例不作限定。
可以理解的是,源端设备的下发的写内存指令经互连总线发送至该源端设备的第一RDMA网卡,进而再发送至目的端设备的第二RDMA网卡。
本申请实施例中,源端设备的互连总线用于对该源端设备的处理器核心下发的写内存指令进行地址映射进而进行数据转发。应理解,上述源端设备可以包括至少一个RDMA网卡,该至少一个RDMA网卡可以分别连接一个或多个其他设备(包含上述目的端设备)的RDMA网卡,以实现远程内存访问。图5为源端设备的至少一个RDMA网卡(包括RDMA网卡A、RDMA网卡B以及RDMA网卡C)与目的端设备的RDMA网卡(包括RDMA网卡1、RDMA网卡2以及RDMA网卡3)的连接关系的示意图。由于源端设备包含多个RDMA网卡,当源端设备的互连总线接收到一个写内存指令时,该互连总线需确定将该写内存指令发送至该源端设备的哪一个RDMA网卡,具体的,互连总线根据互连总线上预配置的第一映射关系,确定出该写内存指令包含的目的地址属于哪一个地址窗口(一个地址窗口中可以包含多个内存地址),进而将该写内存指令发送至与目的地址所属的地址窗口对应的RDMA网卡。结合图5,下述表1为源端设备的第一映射关系的一种示例。
表1
结合表1,假设互连总线接收到的写内存指令中包含的目的地址为内存地址8,该互连总线确定该内存地址8是地址窗口1中的内存地址,而与该地址窗口1对应的RDMA网卡为RDMA网卡A,因此,该互连总线将接收到的写内存指令发送至RDMA网卡A。
可选地,如图6所示,本申请实施例提供的(源端设备的)处理器系统还包括内存204,该内存204与互连总线203连接。
可选地,源端设备的内存(即上述内存204)与目的端设备的内存统一编址,或者,源端设备的内存与目的端设备的内存非统一编址。应理解,本申请实施例中,源端设备的内存地址均指的是源端设备的内存的本地地址,目的端设备的内存地址也均指该目的端设备的内存的本地地址。
例如,当源端设备的内存与目的端设备的内存统一编址时,源端设备的内存的地址为0x00000000至0x80000000,目的端设备的内存的地址是0x90000000-至0x100000000。又例如,当源端设备的内存与目的端设备的内存非统一编址时,源端设备的内存的地址为0x00000000至0x80000000,目的端设备的内存的地址是0x00000000至0x80000000,可见源端设备的内存与目的端设备的内存非统一编址时,该源端设备的内存地址与目的端设备的内存地址发生重复编址。
由于源端设备的内存与目的端设备的内存非同一编址时,该源端设备的内存地址与目的端设备的内存地址可能发生冲突,那么当源端设备的处理器核心下发写内存指令时,该源端设备的第一RDMA网卡接收到该写指令后,该第一RDMA网卡无法识别出该写指令中的内存地址是该源端设备的内存地址,还是目的端设备的内存地址,如此,可能导致内存访问失败。
本申请实施例中,在源端设备的内存与目的端设备的内存非统一编址的情况下,上述第一RDMA网卡还用于基于第二映射关系,对待写入数据的目的地址进行转换,该第二映射关系是第一内存地址与第二内存地址之间的映射关系。其中,待写入数据的目的地址是第一内存地址,第一内存地址是目的端设备的内存映射到源端设备的地址空间之后的映射地址;转换后的目的地址为第二内存地址,该第二内存地址是目的端设备的内存的本地地址。
上述第一RDMA网卡具体用于根据转换后的目的地址和目的端设备的配置信息封装待写入数据。
示例性的,源端设备的地址空间为0x00000000至0xffffffff,其中,0x00000000至0x80000000是源端设备的内存的本地地址,0x90000000至0x100000000是目的端设备的内存映射到源端设备的地址空间之后的映射地址,目的端设备的内存的本地地址是0x00000000-0x80000000。如下表2为第二映射关系的一种示例。
表2
第一内存地址 | 第二内存地址 |
0x90000000 | 0x00000000 |
…… | …… |
0x100000000 | 0x80000000 |
结合表2,当源端设备向目的端设备写入数据时,该源端设备的处理器核心下发的写内存指令中的目的地址为0x90000001,第一RDMA网卡接收到该写内存指令后,确定该目的地址是属于0x90000000至0x100000000的地址区间的,可知该写内存指令用于指示将待写入数据写入目的端设备的内存,因此该第一RDMA网卡根据上述表2所示的第二映射关系,将0x90000001转换为0x00000001(目的端设备的内存的本地地址),则该第一RDMA网卡将待写入数据发送至目的端设备的第二RDMA网卡,从而将该待写入数据写入目的端设备的内存地址为0x00000001的内存空间。
综上,在源端设备的内存与目的端设备的内存非统一编址的情况下,第一RDMA网卡通过地址映射对内存访问的目的地址进行地址转换,解决地址冲突的问题,能够顺利完成内存访问。
可选地,如图6所示,本申请实施例提供过的(源端设备的)处理器系统还包括直通口(direct access port)205,上述处理器核心201通过直通口205与互连总线203连接。该直通口205用于从处理器核心201接收写内存指令,为该写内存指令添加时间戳(即时间标签tag),并且启动直通口205中的定时器,进而向互连总线203发送该写内存指令。
本申请实施例中,直通口205中设置有时间寄存器,该时间寄存器用于为写内存指令进行保序。具体的,直通口205接收到写内存指令时,为该写内存指令添加时间戳,如此,在目的端设备(具体为目的端设备的内存控制器)接收到多个指令时,可以按照指令的时间戳信息,即按照指令的时间先后按序处理多个指令,避免拥塞。可选地,该时间寄存器的长度为64bit。
可选地,上述直通口205中还设置有定时器(当直通口205接收到写内存指令时,该直通口205启动该定时器),该直通口205具体用于在定时器到期之前接收到第二RDMA网卡的响应消息,停止定时器。本申请实施例中,当第二RDMA网卡将待写入数据写入目的端设备的内存之后,第二RDMA网卡向源端设备(依次通过第一RDMA网卡202、互连总线203、直通口205、处理器核心201)发送响应消息,直通口205在定时器到期之前接收到该响应消息,则表明该写内存指令运行正常,即上述待写入数据被成功写入了目的端设备的内存。
或者,上述直通口205具体用于在定时器到期时未接收到第二RDMA网卡的响应消息,向处理器核心上报超时响应信息。本申请实施例中,当写内存指令出现超时、抖动等异常情况,直通口在定时器到期时一直未收到响应消息,则直通口向处理器核心上报超时响应消息,如此,处理器核心对该超时情况进行响应,能够避免处理器核心挂死。
综上,设置有定时器的直通口具有指令超时返回功能,在内存访问的过程中,能够确保数据传输是否成功,避免系统挂死。
可选地,本申请实施例中,第一RDMA网卡还用于在接收到第二RDMA网卡的响应消息之后,维护第一RDMA网卡上的数据封装协议的数据结构(可以理解为更新相关配置信息),下文将结合具体的协议对数据结构进行详述。
需要说明的是,本申请实施例中,上述第一RDMA网卡202、互连总线203以及直通口205这三个组件仅是逻辑上的划分,并不对实际三个组件的物理形态进行限定。该三个组件可以集成在不同的芯片,运行于不同的设备上;该三个组件也可以集成在统一芯片,运行于统一设备中。
本申请实施例提供一种处理器系统,当处理器系统的处理器核心下发写内存指令时,该处理器系统中的RDMA网卡可以对待写入数据进行封装,并向目的端设备的RDMA网卡发送封装后的数据,从而使得目的端设备的RDMA网卡将待写入数据写入目的端设备的内存。由于源端设备的处理器核心发送写内存指令给源端设备的RDMA网卡,该写内存访问指令中携带的是目的端设备的内存地址(待写入数据的目的地址),如此,待写入数据不需要写到本地内存,而是由处理器核心与RDMA网卡之间实现数据交换,然后由RDMA网卡对待写入数据进行封装(即不基于处理器核心的通知,而是在收到写内存指令后,网卡执行封装的动作),并维护通信协议的数据结构,与现有技术相比,源端设备的处理器核心无需运行复杂的应用软件封装待写入数据,也无需维护通信协议的数据结构,因此,能够降低远程内存访问的时延。
并且由于处理器核心无需封装待写入数据,能够降低处理器核心的开销,节省处理器核心的算力资源。
结合上述实施例的描述可知,本申请实施例中的处理器系统用于写数据时,数据封装和解封装的协议可以为多种协议中的一种,以下以RDMA协议为例详细介绍源端设备和目的端设备的内存访问(包括写数据和读数据)过程。
首先,结合图7的配置流程图,对源端设备和目的端设备的配置的过程进行简单描述。
步骤1、源端设备和目的设备分别进行初始化,配置各自的RDMA网卡的配置空间(bar空间)。
步骤2、源端设备和目的端设备分别创建队列对(queue pair,QP)。
具体的,源端设备的处理器核心通过互连总线与该源端设备的RDMA网卡(第一RDMA网卡)交互,完成创建QP的流程,从而生成该源端设备的QP号;同理,目的端设备的处理器核心通过互连总线与该目的端设备的RDMA网卡(第二RDMA网卡)交互,完成创建QP的流程,从而生成该目的端设备的QP号。可以理解的是,创建QP之前首先创建CQ(completequeue,完成队列),包括写CQ上下文、更改CQ属性);创建QP包括写QP上下文、更改QP属性。
关于创建QP的详细过程的描述可参考现有的RDMA技术的内容,本申请实施例不再详述。
步骤3、源端设备与目的端设备分别进行内存注册。
本申请实施例中,源端设备与目的端设备分别进行内存注册,以设置该源端设备和目的端设备的内存中哪些内存空间可以被RDMA网卡访问,可被RDMA网卡访问的内存也可以称为RDMA内存。
步骤4、源端设备和目的端设备交换各自的QP号、RDMA内存地址。
本申请实施例中,源端设备与目的端设备首先进行建链,创建队列对上下文(queue pair context,QPC),QPC包含有QP的所有配置信息,QPC用于记录访存地址等RDMA网卡封装(组装)报文所需的信息。可选地,可以通过CM(通信管理)或socket(网络套接字)方式进行建链。
在源端设备与目的端设备完成建链之后,可以采用rdma_cm(远程直接内存访问通信管理)或socket(网络套接字)交换QP号、RDMA内存地址、设备的IP地址对应的授权信息(key)等,具体的,源端设备的RDMA网卡向目的端设备的RDMA网卡发送该源端设备的QP号、RDMA内存地址、源端设备的IP地址对应的授权信息等,目的端设备的RDMA网卡向源端设备的RDMA网卡发送该目的端设备的QP号、RDMA内存地址、目的端设备的IP地址对应的授权信信息(key)等。
步骤6、源端设备和目的端设备各自配置各自的地址映射关系。
具体的,源端设备配置上述第一映射关系,当源端设备的内存与目的端设备的内存非统一编址时,还需配置上述第二映射关系。同理,目的端设备也配置相应的映射关系。
可选地,上述第一映射关系中的地址窗口可以支持多种配置,例如将地址窗口的访问属性配置为具有读权限和/或写权限,支持共享等。
步骤7、启动守护进程,管理和监测RDMA链路状态。
基于上述源端设备和目的端设备的配置流程,如图8所示,本申请实施例提供一种内存访问系统,包括源端设备801和目的端设备802,该源端设备801的处理器系统包括:处理器核心8011和第一RDMA网卡8012,该目的端设备802的处理器系统包括第二RDMA网卡8021和内存8022。其中,源端设备801的处理器核心8011用于下发写内存指令(即store指令),该写内存指令包含待写入数据和待写入数据的目的地址,该目的地址为目的端设备802的内存地址;第一RDMA网卡8012用于根据待写入数据的目的地址和目的端设备的配置信息封装待写入数据,并且向目的端设备802的第二RDMA网卡8021发送封装后的待写入数据。第二RDMA网卡8021用于接收封装后的待写入数据,并对封装后的待写入数据进行解封装,以及将解封装后的待写入数据写入目的端设备802的内存8022。
可选地,本申请实施例中,上述源端设备801的处理器核心8011下发的写内存指令可以包括一条指令,该写内存指令也可以包括两条指令。
当该写内存指令包括两条指令时,即包括第一指令和第二指令,处理器核心8011具体用于下发第一指令,第一指令包括待写入数据和第一地址;并且下发第二指令,第二指令包括待写入数据的目的地址和第二地址,第一地址和第二地址分别为第一RDMA网卡中的寄存器中的地址,可以理解的是,第一地址是第一RDMA网卡的寄存器中用于存储待写入数据的地址,第二地址是第一RDMA网卡的寄存器中用于存储待写入数据的目的地址的地址。基于此,第一RDMA网卡8012具体用于根据第一指令中的第一地址,将待写入数据写入第一RDMA网卡中的寄存器,并且根据第二指令中的第二地址,将待写入数据的目的地址写入第一RDMA网卡中的寄存器,以及根据寄存器中的待写入数据的目的地址封装待写入数据,且向目的端设备802的第二RDMA网卡8021发送封装后的待写入数据,以使得第二RDMA网卡8021将待写入数据写入目的端设备802的内存8022。
可选地,如图9所示,源端设备的处理器系统还包括互连总线8013,该互连总线8013连接处理器核心8011和至少一个RDMA网卡,至少一个RDMA网卡包第一RDMA网卡8012。该互连总线8013用于接收处理器核心8011下发的写内存指令,并且基于第一映射关系从至少一个RDMA网卡中确定待写入数据的目的地址对应的第一RDMA网卡8012,以及向第一RDMA网卡8012发送待写入数据。其中,第一映射关系是地址窗口与RDMA网卡地址之间的映射关系。
上述互连总线8013具体用于确定待写入数据的目的地址所属的第一地址窗口,并且基于第一映射关系从至少一个RDMA网卡中确定与第一地址窗口对应的第一RDMA网卡。
关于第一映射关系的具体描述可参考上述实施例中的相关内容,此处不再赘述。
可选地,结合图9,源端设备801的处理器系统还包括内存8014,该源端设备801的内存8014与互连总线8013连接。该源端设备801的内存8014与目的端设备802的内存8022统一编址;或者,源端设备801的内存8014与目的端设备802的内存8022非统一编址。
本申请实施例中,在源端设备801的内存8014与目的端设备802的内存8022非统一编址的情况下,第一RDMA网卡8012还用于基于第二映射关系,对待写入数据的目的地址进行转换,第二映射关系是第一内存地址与第二内存地址之间的映射关系。其中,待写入数据的目的地址是第一内存地址,第一内存地址是目的端设备的内存映射到源端设备的地址空间之后的映射地址;转换后的目的地址为第二内存地址,该第二内存地址是目的端设备的内存的本地地址。
上述第一RDMA网卡8012具体用于根据转换后的目的地址和目的端设备802的配置信息封装待写入数据。
本申请实施例中,第一RDMA网卡在配置流程中获取的目的端设备的配置信息,该配置信息中包括目的端设备的IP地址,对于RDMA协议,该配置信息中还包括目的端设备的QP号、目的端设备的IP地址对应的授权信息(key)等信息,该授权信息指示目的端设备的内存中的一段内存空间。进而第一RDMA网卡根据待写入数据的目的地址、目的端设备的IP地址,目的端设备的QP号对应的QP上下文、上述授权信息以及待写入数据的长度等信息封装待写入数据,即组装成WQE报文,并向第二RDMA网卡发送该WQE报文,第二RDMA网卡接收到该WQE报文之后,解封装该WQE报文,得到待写入数据,并将该待写入数据写入授权信息对应的内存空间。
可选地,结合图9,源端设备801的处理器系统还包括直通口8015,源端设备801的处理器核心8011通过直通口8015与互连总线8013连接。该直通口8015用于从处理器核心8011接收写内存指令,为写内存指令添加时间戳,并且启动直通口中的定时器,进而向互连总线8013发送该写内存指令。
上述直通口8015具体用于在定时器到期之前接收到第二RDMA网卡的响应消息,停止定时器;或者,在定时器到期时未接收到第二RDMA网卡的响应消息,向处理器核心上报超时响应信息。
本申请实施例中,当第二RDMA网卡将待写入数据写入目的端设备的内存之后,第二RDMA网卡向第一RDMA网卡发送响应消息,以通知源端设备(通过互连总线、直通口至处理器核心)已完成待写入数据的写入流程,进而处理器核心退出上述写内存指令,具体的,第一RDMA网卡通过中断上报至直通口,从而直通口上报至处理器核心。
可选地,上述第一RDMA网卡还用于在接收到第二RDMA网卡的响应消息之后,维护第一RDMA网卡上的RDMA协议的数据结构,该第一RDMA网卡维护RDMA协议的数据结构具体包括但不限于更新CQE,CQC以及CE。具体的,第一RDMA网卡根据创建队列上下文QPC和完成队列上下文(complete queue context,CQC)生成完成队列事件(complete queue event,CQE)和CE(CE为CQE中的元素)。本申请实施例中,由RDMA网卡维护RDMA协议的数据结构,无需处理器核心维护RDMA协议的数据结构,如此,能够降低处理器核心的开销。
上述对于源端设备的互连总线、直通口的详细内容描述可参考上述实施例中的相关描述,此处不再赘述。可参考图10对上述内存访问过程进行理解。相应地,本申请实施例提供一种数据传输方法,包括如下步骤:
步骤1001、源端设备的处理器核心下发写内存指令。
步骤1002、源端设备的直通口接收该写内存指令,对该写内存指令添加时间戳,并且启动直通口上的定时器,以及向源端设备互连总线发送该写内存指令。
步骤1003、源端设备的互连总线从直通口接收写内存指令,并基于第一映射关系从至少一个RDMA网卡中确定第一RDMA网卡,向第一RDMA网卡发送该写内存指令。
步骤1004、源端设备的第一RDMA网卡接收写内存指令,并根据待写入数据的目的地址和目的端设备的配置信息封装待写入数据,并且向目的端设备的第二RDMA网卡发送封装后的待写入数据。
本申请实施例中,在源端设备的处理器核心下发写内存指令之前,第一RDMA网卡获取目的端设备的配置信息,该目的端设备的配置信息至少包括:目的端设备的地址和/或第二RDMA网卡的地址。
可选地,在源端设备的内存与目的端设备的内存非统一编址的情况下,第一RDMA网卡基于第二映射关系,对待写入数据的目的地址进行转换,如此,第一RDMA网卡根据转换后的目的地址和目的端设备的配置信息,封装待写入数据。
步骤1005、目的端设备的第二RDMA网卡接收封装后的待写入数据,对封装后的待写入数据进行解封装,以及将解封装后的待写入数据写入目的端设备的内存中该目的地址对应的内存空间。
步骤1006、目的端设备的第二RDMA网卡向源端设备的第一RDMA网卡发送响应消息。
本申请实施例中,第一RDMA网卡接收到第二RDMA网卡发送的响应消息之后,第一RDMA网卡维护第一RDMA网卡上的数据封装协议的数据结构。
关于上述数据传输方法的各个步骤的描述可以参考上述实施例的描述,此处不再赘述。
基于上述源端设备和目的端设备的配置流程,本申请实施例提供一种内存访问系统,如图11所示,该内存访问系统包括源端设备1101和目的端设备1102,源端设备1101的处理器系统包括:处理器核心11011和第一RDMA网卡11012,目的端设备1102的处理器系统包括第二RDMA网卡11021和内存11022。源端设备1101的处理器核心11011用于下发读内存指令(即load指令),该读内存指令包含待读取的数据的地址和寄存器地址,该待读取的数据的地址为目的端设备的内存地址,该寄存器地址为处理器核心的寄存器中的地址;第一RDMA网卡11012用于根据待读取的数据的地址和目的端设备的配置细信息,封装所述寄存器地址封装该寄存器地址,向目的端设备1102的第二RDMA网卡11021发送包含该封装后的寄存器地址的读请求。第二RDMA网卡11021用于从第一RDMA网卡接收读请求,对封装后的寄存器地址进行解封装,并且根据待读取的数据的地址从目的端设备的内存中读取待读取的数据,并且根据该寄存器地址和源端设备的配置信息封装待读取的数据,以及向第一RDMA网卡发送封装后的待读取的数据。第一RDMA网卡11012还用于从第二RDMA网卡11021接收封装后的待读取的数据,并且对封装后的待读取的数据进行解封装,以及向处理器核心11011的寄存器发送解封装后的待读取的数据。
上述目的端设备的配置信息至少包括目的端设备的IP地址和/或第二RDMA网卡的地址,源端设备的配置信息至少包括源端设备的IP地址和/或第一RDMA网卡的地址。
同理,第一RDMA网卡在配置流程中获取的目的端设备的配置信息,该配置信息包括目的端设备的IP地址,对于RDMA协议,该配置信息中还包括目的端设备的QP号以及目的端设备的IP地址对应的授权信息(key)等信息,该授权信息指示目的端设备的内存中的一端内存空间。进而第一RDMA网卡根据读内存指令的目的地址、目的端设备的IP地址,目的端设备的QP号对应的QP上下文、上述授权信息以及待读取的数据的长度等信息封装源端设备的处理器核心的寄存器地址,即组装成WQE报文,并向第二RDMA网卡发送该WQE报文。
第二RDMA网卡接收到该WQE报文之后,解封装该WQE报文,得到待读取的数据的地址和源端设备的处理器核心的寄存器地址,并将读取目的端设备的内存中该目的地址对应的内存空间中的数据,并且该第二RDMA网卡根据寄存器地址和该第二RDMA网卡获取的源端设备的配置信息(包括源端设备的IP地址,QP号以及源端设备的IP地址对应的授权信息)封装待读取的数据。
可选地,如图12所示,源端设备的处理器系统还包括直通口11013和互连总线11014,处理器核心11011通过直通口11013连接互连总线11014,互连总线11014还连接至少一个RDMA网卡,该至少一个RDMA网卡包括第一RDMA网卡11012。直通口11013用于从处理器核心11011接收读内存指令,为读内存指令添加时间戳,并且启动直通口11013中的定时器。互连总线11014用于从直通口11013接收读内存指令,并且基于第一映射关系从至少一个RDMA网卡中确定待读取的数据的地址对应的第一RDMA网卡11012,以及向第一RDMA网卡11012发送读内存指令。其中,第一映射关系是地址窗口与RDMA网卡地址之间的映射关系。
互连总线11014具体用于确定待读取的数据的地址所属的第一地址窗口,并且基于第一映射关系从至少一个RDMA网卡中确定与第一地址窗口对应的第一RDMA网卡。
可选地,本申请实施例中,互连总线11014还用于管理源端设备的内存,例如,源端设备的内存中的部分内存为RDMA内存,该互连总线模块可以将RDMA内存的属性设置为支持共享(shareable)写入,即支持不同的设备对该RDMA内存进行写入操作。
可以理解的是,上述第一RDMA网卡11012将解封装后的待读取的数据发送至处理器核心11011的过程为:第一RDMA网卡11012依次经互连总线11014、直通口11013至处理器核心11011,进而处理器核心11011将该数据写入处理器核心11011的寄存器,之后,处理器核心11011退出读内存指令。
可选地,上述第一RDMA网卡还用于在接收到第二RDMA网卡发送的待读取的数据之后,维护第一RDMA网卡上的数据封装协议的数据结构。例如,对于RDMA协议,第一RDMA网卡维护第一RDMA网卡上的数据封装协议的数据结构包括但不限于更新CQE,CQC以及CE;第二RDMA网卡还用户在向第二RDMA网卡发送待读取的数据之后,维护第二RDMA网卡上的数据封装协议的数据结构,例如,对于RDMA协议,第二RDMA网卡维护第二RDMA网卡上的数据封装协议的数据结构包括但不限于更新CQE,CQC以及CE。
本申请实施例中,上述直通口11013具体用于在定时器到期之前接收到待读取的数据,停止定时器;或者,在定时器到期时未接收到待读取的数据,向处理器核心11011上报超时响应信息。
可选地,结合图12,上述源端设备1101的处理器系统还包括内存11015,内存11015与互连总线11014连接。源端设备1101的内存11015与目的端设备1102的内存11022统一编址;或者,源端设备1101的内存11015与目的端设备1102的内存11022非统一编址。
本申请实施例中,源端设备1101的内存11015与目的端设备1102的内存11022非统一编址的情况下,上述第一RDMA网卡11012还用于基于第二映射关系,对待读取的数据的地址进行转换,该第二映射关系是第一内存地址与第二内存地址之间的映射关系。其中,待读取的数据的地址是第一内存地址,第一内存地址是目的端设备的内存映射到源端设备的地址空间之后的映射地址;转换后的目的地址为第二内存地址,该第二内存地址是目的端设备的内存的本地地址。上述第一RDMA网卡11012具体用于根据转换后的目的地址向目的端设备的第二RDMA网卡发送读内存指令。
上述直通口11013和互连总线11014的作用与上述实施例中源端设备向目的端设备的内存写入数据时直通口8015和互连总线8013的作用类似,具体可参考上述实施例的描述,此处不再赘述。另外,可参考图13对上述内存访问过程进行理解。相应地,本申请实施例提供一种数据传输方法,包括以下步骤:
步骤1301、源端设备的处理器核心下发读内存指令。
该读内存指令包括待读取的数据的地址和处理器核心的寄存器地址。
步骤1302、源端设备的直通口从处理器核心接收该读内存指令,对该读内存指令添加时间戳,并且启动直通口上的定时器,以及向源端设备互连总线发送该读内存指令。
步骤1303、源端设备的互连总线从直通口接收读内存指令,并基于第一映射关系从至少一个RDMA网卡中确定第一RDMA网卡,向第一RDMA网卡发送该读内存指令。
步骤1304、源端设备的第一RDMA网卡接收读内存指令,根据该读内存指令中的待读取的数据的地址和目的端设备的配置信息,封装寄存器地址。
步骤1305、源端设备的第一RDMA网卡向目的端设备的第二RDMA网卡发送包含封装后的寄存器地址的读请求。
可选地,在源端设备的内存与目的端设备的内存非统一编址的情况下,第一RDMA网卡基于第二映射关系,对待读取的数据的地址进行转换,如此,第一RDMA网卡根据转换后的地址向所述目的端设备的第二RDMA网卡包含封装后的寄存器地址的读请求。
步骤1306、目的端设备的第二RDMA网卡从第一RDMA网卡接收读请求,对封装后的寄存器地址进行解封装,根据待读取的数据的地址从目的端设备的内存中读取待读取的数据,并且封装该待读取的数据。
步骤1307、目的端设备的第二RDMA网卡向源端设备的第一RDMA网卡发送封装后的待读取的数据。
步骤1308、源端设备的第一RDMA网卡从第二RDMA网卡接收封装后的待读取的数据,并对封装后的待读取的数据进行解封装,将该解封装后的待读取的数据通过互连总线、直通口发送至处理器核心,并写入该处理器核心的寄存器。
可选地,第一RDMA网卡在接收到第二RDMA网卡发送的待读取的数据之后,第一RDMA网卡维护第一RDMA网卡上的数据封装协议的数据结构。第二RDMA网卡向第二RDMA网卡发送待读取的数据之后,第二RDMA网卡维护第二RDMA网卡上的数据封装协议的数据结构。
关于上述数据传输方法的各个步骤的描述可以参考上述实施例的描述,此处不再赘述。
本申请实施例提供一种内存访问系统,在读取数据的过程中,源端设备的处理器核心发送读内存指令给源端设备的RDMA网卡,该读存访问指令中携带的是目的端设备的内存地址(待读取的数据的地址)和处理器核心的寄存器地址,类似于写数据的过程,处理器核心也不需要将待读取的数据的地址和寄存器地址写到本地内存,而是将该读内存指令发送至源端设备的RDMA网卡,然后由源端设备的RDMA网卡向目的端设备的RDMA网卡发送读请求,目的端设备的RDMA网卡从目的端设备的内存中读取待读取的数据,并封装该待读取的数据,再将该待读取的数据返回至源端设备的RDMA网卡,进而源端设备的RDMA网卡与处理器核心实现数据交换。可知,待读取的数据由目的端设备的RDMA网卡封装,并维护通信协议的数据结构,与现有技术相比,目的端设备的处理器核心无需运行复杂的应用软件封装待读取的数据,也无需维护通信协议的数据结构,因此,能够降低远程内存访问的时延。并且由于处理器核心无需封装待读取的数据,能够降低处理器核心的开销,节省处理器核心的算力资源。
需要说明的是,本申请实施例中,源端设备的处理器核下发读内存指令后,在待读取数据返回至该处理器核心之前的时间段内,该处理器核心可执行其他指令,能够提升处理器核心的工作效率。
本申请实施例提供的内存访问系统还支持源端设备对目的端设备执行原子指令(automic指令),原子指令指的是一组操作,例如一个原子指令可以是先进行写操作,再进行读操作。以原子指令为先写后读的原子加指令为例,该原子加指令的执行过程包括:源端设备的处理器核心下发原子加指令(包含待写入数据、目的地址、地址步长、处理器核心的寄存器地址),以向目的端设备的内存的目的地址对应内存空间中写入待写入数据,在目的端设备完成数据写入之后,目的端设备的第二RDMA网卡对上述目的地址进行原子加操作,即按照地址步长增加上述目的地址,得到新的目的地址(目的地址+地址步长),进而目的端设备的第二RDMA网卡读取该新的目的地址对应的内存空间中的数据,并根据封装该数据,从而将该数据写入源端设备的处理器核心的寄存器中。结合图14对上述内存访问(原子指令)过程进行理解。相应地,本申请实施例提供一种数据传输方法,具体步骤如下:
步骤1401、源端设备的处理器核心下发原子指令。
该原子指令包括处理器核心的寄存器中的待写入数据、待写入数据的目的地址,地址步长,处理器核心的寄存器地址。
步骤1402、源端设备的直通口接收原子指令,对该原子指令添加时间戳,并且启动直通口上的定时器,以及向源端设备的互连总线发送该原子指令。
步骤1403、源端设备的互连总线基于第一映射关系从至少一个RDMA网卡中确定第一RDMA网卡,向第一RDMA网卡发送原子指令。
步骤1404、源端设备的第一RDMA网卡接收原子指令,并封装待写入数据,并将封装后的待写入数据发送至目的端设备的第二RDMA网卡。
步骤1405、目的端设备的第二RDMA网卡解封装该待写入数据,将该待写入数据写入目的端设备的内存中待写入数据的目的地址对应的内存空间。
步骤1406、目的端设备的第二RDMA网卡根据原子指令中的地址步长和待写入数据的目的地址,确定待读取的数据的地址。
待读取的数据的是上述原子指令中的待写入数据的目的地址加上述地址步长得到的地址。
步骤1407、目的端设备读取待读取的数据的地址对应内存空间的待读取的数据,并且封装该待读取的数据,向源端设备的第一RDMA网卡发送该封装后的待读取的数据。
步骤1408、第一RDMA网卡接收封装后的待读取的数据,并解封装该待读取的数据,将解封装后的待读取的数据通过互连总线、直通口发送至处理器核心,并写入该处理器核心的寄存器。
需要说明的是,上述原子指令中涉及的写数据和读数据的流程的相关细节可参考上述实施例的详细描述,此处不再赘述。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (28)
1.一种处理器系统,其特征在于,应用于包括所述处理器系统的源端设备,所述处理器系统包括:处理器核心、第一远程直接内存访问RDMA网卡和互连总线;所述互连总线连接所述处理器核心和至少一个RDMA网卡,所述至少一个RDMA网卡包括所述第一RDMA网卡;
所述处理器核心,用于下发写内存指令,所述写内存指令包含待写入数据和所述待写入数据的目的地址,所述目的地址为目的端设备的内存地址;
所述互连总线,用于接收所述处理器核心下发的写内存指令,并且基于第一映射关系从所述至少一个RDMA网卡中确定所述待写入数据的目的地址对应的第一RDMA网卡,以及向所述第一RDMA网卡发送所述待写入数据;其中,所述第一映射关系是地址窗口与RDMA网卡地址之间的映射关系;
所述第一RDMA网卡,用于根据所述待写入数据的目的地址和所述目的端设备的配置信息封装所述待写入数据;向所述目的端设备的第二RDMA网卡发送封装后的待写入数据。
2.根据权利要求1所述的处理器系统,其特征在于,
所述第一RDMA网卡,还用于获取所述目的端设备的配置信息,所述目的端设备的配置信息至少包括:所述目的端设备的地址和/或所述第二RDMA网卡的地址。
3.根据权利要求1或2所述的处理器系统,其特征在于,
所述互连总线,具体用于确定所述待写入数据的目的地址所属的第一地址窗口,并且基于所述第一映射关系从所述至少一个RDMA网卡中确定与所述第一地址窗口对应的第一RDMA网卡。
4.根据权利要求1或2所述的处理器系统,其特征在于,所述处理器系统还包括内存;
所述源端设备的内存与所述目的端设备的内存统一编址;或者,
所述源端设备的内存与所述目的端设备的内存非统一编址。
5.根据权利要求4所述的处理器系统,其特征在于,在所述源端设备的内存与所述目的端设备的内存非统一编址的情况下;
所述第一RDMA网卡,还用于基于第二映射关系,对所述待写入数据的目的地址进行转换;所述第二映射关系是第一内存地址与第二内存地址的之间映射关系,所述待写入数据的目的地址是第一内存地址,所述第一内存地址是所述目的端设备的内存映射到所述源端设备的地址空间之后的映射地址,转换后的目的地址为第二内存地址,所述第二内存地址是所述目的端设备的内存的本地地址;
所述第一RDMA网卡,具体用于根据所述转换后的目的地址和所述目的端设备的配置信息,封装所述待写入数据。
6.根据权利要求1、2或5中任一项所述的处理器系统,其特征在于,所述处理器系统还包括直通口;
所述直通口,用于从所述处理器核心接收写内存指令,为所述写内存指令添加时间戳,并且启动所述直通口中的定时器,以及向所述互连总线发送所述写内存指令。
7.根据权利要求6所述的处理器系统,其特征在于,
所述直通口,具体用于在所述定时器到期之前接收到所述第二RDMA网卡的响应消息,停止所述定时器;或者,在所述定时器到期时未接收到所述第二RDMA网卡的响应消息,向所述处理器核心上报超时响应信息。
8.根据权利要求1、2、5或7中任一项所述的处理器系统,其特征在于,所述写内存指令包括第一指令和第二指令;
所述处理器核心,具体用于下发所述第一指令,所述第一指令包括所述待写入数据和第一地址;并且下发所述第二指令,所述第二指令包括所述待写入数据的目的地址和第二地址,所述第一地址和所述第二地址分别为所述第一RDMA网卡中的寄存器中的地址;
所述第一RDMA网卡,具体用于根据所述第一指令中的第一地址,将所述待写入数据写入所述第一RDMA网卡中的寄存器,并且根据所述第二指令中的第二地址,将所述待写入数据的目的地址写入所述第一RDMA网卡中的寄存器,以及根据所述寄存器中的所述待写入数据的目的地址封装所述待写入数据,向所述目的端设备的第二RDMA网卡发送封装后的待写入数据,以使得所述第二RDMA网卡将所述待写入数据写入所述目的端设备的内存。
9.根据权利要求1、2、5或7中任一项所述的处理器系统,其特征在于,
所述第一RDMA网卡,还用于在接收到所述第二RDMA网卡的响应消息之后,维护所述第一RDMA网卡上的数据封装协议的数据结构。
10.一种内存访问系统,其特征在于,包括源端设备和目的端设备,所述源端设备的处理器系统包括:处理器核心和第一远程直接内存访问RDMA网卡;所述目的端设备的处理器系统包括第二RDMA网卡和内存;
所述源端设备的处理器核心,用于下发读内存指令,所述读内存指令包含待读取的数据的地址和寄存器地址,所述待读取的数据的地址为目的端设备的内存地址,所述寄存器地址为所述处理器核心的寄存器中的地址;
所述第一RDMA网卡,用于根据所述待读取的数据的地址和所述目的端设备的配置信息,封装所述寄存器地址,向所述目的端设备的第二RDMA网卡发送包含封装后的寄存器地址的读请求;
所述第二RDMA网卡,用于从所述第一RDMA网卡接收所述读请求,对所述封装后的寄存器地址进行解封装,并根据所述待读取的数据的地址从所述目的端设备的内存中读取待读取的数据,并且根据所述寄存器地址和所述源端设备的配置信息封装所述待读取的数据,以及向所述第一RDMA网卡发送封装后的待读取的数据;
所述第一RDMA网卡,还用于从所述第二RDMA网卡接收所述封装后的待读取的数据,并且对所述封装后的待读取的数据进行解封装,以及向所述处理器核心的寄存器发送解封装后的待读取的数据。
11.根据权利要求10所述的内存访问系统,其特征在于,
所述第一RDMA网卡,还用于获取所述目的端设备的配置信息,所述目的端设备的配置信息至少包括:所述目的端设备的地址和/或所述第二RDMA网卡的地址;
所述第二RDMA网卡,还用于获取所述源端设备的配置信息,所述源端设备的配置信息至少包括:所述源端设备的地址和/或所述第一RDMA网卡的地址。
12.根据权利要求10或11所述的内存访问系统,其特征在于,所述源端设备的处理器系统还包括直通口和互连总线,所述处理器核心通过所述直通口连接所述互连总线,所述互连总线还连接至少一个RDMA网卡,所述至少一个RDMA网卡包括所述第一RDMA网卡;
所述直通口,用于从所述处理器核心接收所述读内存指令,为所述读内存指令添加时间戳,并且启动所述直通口中的定时器,以及向所述互连总线发送所述读内存指令;
所述互连总线,用于从所述直通口接收所述读内存指令,并且基于第一映射关系从所述至少一个RDMA网卡中确定所述待读取的数据的地址对应的第一RDMA网卡,以及向所述第一RDMA网卡发送所述读内存指令;其中,所述第一映射关系是地址窗口与RDMA网卡地址之间的映射关系。
13.根据权利要求12所述的内存访问系统,其特征在于,
所述互连总线,具体用于确定所述待读取的数据的地址所属的第一地址窗口,并且基于所述第一映射关系从所述至少一个RDMA网卡中确定与所述第一地址窗口对应的第一RDMA网卡。
14.根据权利要求13所述的内存访问系统,其特征在于,
所述直通口,具体用于在所述定时器到期之前接收到所述待读取的数据,停止所述定时器;或者,在所述定时器到期时未接收到所述待读取的数据,向所述处理器核心上报超时响应信息。
15.根据权利要求10、11、13或14中任一项所述的内存访问系统,其特征在于,在所述源端设备的内存与所述目的端设备的内存非统一编址的情况下;
所述第一RDMA网卡,还用于基于第二映射关系,对所述待读取的数据的地址进行转换;所述第二映射关系是第一内存地址与第二内存地址之间的映射关系,所述待读取的数据的地址是第一内存地址,所述第一内存地址是所述目的端设备的内存映射到所述源端设备的地址空间之后的映射地址,转换后的地址为第二内存地址,所述第二内存地址是所述目的端设备的内存的本地地址;
所述第一RDMA网卡,具体用于根据所述转换后的地址向所述目的端设备的第二RDMA网卡发送包含封装后的寄存器地址的读请求。
16.根据权利要求10、11、13或14中任一项所述的内存访问系统,其特征在于,
所述第一RDMA网卡,还用于在接收到所述第二RDMA网卡发送的待读取的数据之后,维护所述第一RDMA网卡上的数据封装协议的数据结构;
所述第二RDMA网卡,还用于在向所述第二RDMA网卡发送待读取的数据之后,维护所述第二RDMA网卡上的数据封装协议的数据结构。
17.一种数据传输方法,其特征在于,应用于源端设备,所述方法包括:
所述源端设备的处理器核心下发写内存指令,所述写内存指令包含待写入数据和所述待写入数据的目的地址,所述目的地址为目的端设备的内存地址;
所述源端设备的互连总线接收所述处理器核心下发的写内存指令;所述互连总线连接至少一个RDMA网卡,所述至少一个RDMA网卡包括所述第一RDMA网卡;
所述互连总线基于第一映射关系从所述至少一个RDMA网卡中确定所述待写入数据的目的地址对应的第一RDMA网卡,所述第一映射关系是地址窗口与RDMA网卡地址之间的映射关系;
所述互连总线向所述第一RDMA网卡发送所述待写入数据;
所述源端设备的第一RDMA网卡接收所述写内存指令;
所述第一RDMA网卡根据所述写内存指令中的所述待写入数据的目的地址和所述目的端设备的配置信息封装所述待写入数据;
所述第一RDMA网卡向所述目的端设备的第二RDMA网卡发送封装后的待写入数据。
18.根据权利要求17所述的方法,其特征在于,所述源端设备的处理器核心下发写内存指令之前,所述方法还包括:
所述第一RDMA网卡获取所述目的端设备的配置信息,所述目的端设备的配置信息至少包括:所述目的端设备的地址和/或所述第二RDMA网卡的地址。
19.根据权利要求17或18所述的方法,其特征在于,所述互连总线基于第一映射关系从所述至少一个RDMA网卡中确定所述待写入数据的目的地址对应的第一RDMA网卡,包括:
所述互连总线确定所述待写入数据的目的地址所属的第一地址窗口;
所述互连总线基于所述第一映射关系从所述至少一个RDMA网卡中确定与所述第一地址窗口对应的第一RDMA网卡。
20.根据权利要求17或18所述的方法,其特征在于,所述方法还包括:
在所述源端设备的内存与所述目的端设备的内存非统一编址的情况下,所述第一RDMA网卡基于第二映射关系,对所述待写入数据的目的地址进行转换;
其中,所述第二映射关系是第一内存地址与第二内存地址的之间映射关系,所述待写入数据的目的地址是第一内存地址,所述第一内存地址是所述目的端设备的内存映射到所述源端设备的地址空间之后的映射地址,转换后的目的地址为第二内存地址,所述第二内存地址是所述目的端设备的内存的本地地址;
所述第一RDMA网卡根据所述待写入数据的目的地址和所述目的端设备的配置信息封装所述待写入数据,包括:
所述第一RDMA网卡根据所述转换后的目的地址和所述目的端设备的配置信息,封装所述待写入数据。
21.根据权利要求17或18所述的方法,其特征在于,所述方法还包括:
所述源端设备的直通口从所述处理器核心接收所述写内存指令;
所述直通口为所述写内存指令添加时间戳,并启动所述直通口中的定时器;
所述直通口向所述源端设备的互连总线发送所述写内存指令。
22.根据权利要求17或18所述的方法,其特征在于,所述第一RDMA网卡在接收到所述第二RDMA网卡的响应消息之后,所述方法还包括:
第一RDMA网卡维护所述第一RDMA网卡上的数据封装协议的数据结构。
23.一种数据传输方法,其特征在于,应用于源端设备和目的端设备,所述方法包括:
所述源端设备的处理器核心下发读内存指令,所述读内存指令包含待读取的数据的地址和寄存器地址,所述待读取的数据的地址为目的端设备的内存地址,所述寄存器地址为所述处理器核心的寄存器中的地址;
所述源端设备的第一RDMA网卡接收所述读内存指令;
所述第一RDMA网卡根据所述读内存指令中的所述待读取的数据的地址和所述目的端设备的配置信息,封装所述寄存器地址;
所述第一RDMA网卡向所述目的端设备的第二RDMA网卡发送包含封装后的寄存器地址的读请求;
所述目的端设备的第二RDMA网卡从所述第一RDMA网卡接收所述读请求;
所述第二RDMA网卡对所述封装后的寄存器地址进行解封装,并根据所述待读取数据的地址从所述目的端设备的内存中读取待读取的数据;
所述第二RDMA网卡根据所述寄存器地址和所述源端设备的配置信息封装所述待读取的数据;
所述第二RDMA网卡向所述第一RDMA网卡发送封装后的待读取的数据;
所述第一RDMA网卡从所述第二RDMA网卡接收所述封装后的待读取的数据,并且对所述封装后的待读取的数据进行解封装;
所述第一RDMA网卡向所述处理器核心的寄存器发送解封装后的待读取的数据。
24.根据权利要求23所述的方法,其特征在于,所述源端设备的处理器核心下发读内存指令之前,所述方法还包括:
所述源端设备从所述目的端设备接收所述目的端设备的配置信息,所述目的端设备的配置信息至少包括:所述目的端设备的地址和/或所述第二RDMA网卡的地址;
所述目的端设备从所述源端设备接收所述源端设备的配置信息,所述源端设备的配置信息至少包括:所述源端设备的地址和/或所述第一RDMA网卡的地址。
25.根据权利要求23或24所述的方法,其特征在于,所述方法还包括:
所述源端设备的直通口从所述处理器核心接收所述读内存指令;
所述直通口为所述读内存指令添加时间戳,并且启动所述直通口中的定时器,向所述源端设备的互连总线发送所述读内存指令;
所述源端设备的互连总线从所述直通口接收所述读内存指令;所述互连总线连接至少一个RDMA网卡,所述至少一个RDMA网卡包括所述第一RDMA网卡;
所述互连总线基于第一映射关系从所述至少一个RDMA网卡中确定所述待读取的数据的地址对应的第一RDMA网卡,所述第一映射关系是地址窗口与RDMA网卡地址之间的映射关系;
所述互连总线向所述第一RDMA网卡发送所述读内存指令。
26.根据权利要求25所述的方法,其特征在于,所述互连总线基于第一映射关系从所述至少一个RDMA网卡中确定所述待读取的数据的地址对应的第一RDMA网卡,包括:
所述互连总线确定所述待读取的数据的地址所属的第一地址窗口;
所述互连总线基于所述第一映射关系从所述至少一个RDMA网卡中确定与所述第一地址窗口对应的第一RDMA网卡。
27.根据权利要求23、24或26中任一项所述的方法,其特征在于,所述方法还包括:
在所述源端设备的内存与所述目的端设备的内存非统一编址的情况下,所述第一RDMA网卡基于第二映射关系,对所述待读取的数据的地址进行转换;
其中,所述第二映射关系是第一内存地址与第二内存地址之间的映射关系,所述待读取的数据的地址是第一内存地址,所述第一内存地址是所述目的端设备的内存映射到所述源端设备的地址空间之后的映射地址,转换后的地址为第二内存地址,所述第二内存地址是所述目的端设备的内存的本地地址;
所述第一RDMA网卡向所述目的端设备的第二RDMA网卡发送包含封装后的寄存器地址的读请求,包括:
所述第一RDMA网卡,具体用于根据所述转换后的地址向所述目的端设备的第二RDMA网卡发送包含封装后的寄存器地址的读请求。
28.根据权利要求23、24或26中任一项所述的方法,其特征在于,所述方法还包括:
所述第一RDMA网卡在接收到所述第二RDMA网卡发送的待读取的数据之后,所述第一RDMA网卡维护所述第一RDMA网卡上的数据封装协议的数据结构;
所述第二RDMA网卡向所述第二RDMA网卡发送待读取的数据之后,所述第二RDMA网卡维护所述第二RDMA网卡上的数据封装协议的数据结构。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/093981 WO2022001417A1 (zh) | 2020-06-28 | 2021-05-15 | 一种数据传输方法、处理器系统及内存访问系统 |
EP21832036.4A EP4155925A4 (en) | 2020-06-28 | 2021-05-15 | DATA TRANSMISSION METHOD, PROCESSOR SYSTEM AND MEMORY ACCESS SYSTEM |
US18/146,720 US20230132302A1 (en) | 2020-06-28 | 2022-12-27 | Data transmission method, processor system, and memory access system |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2020105996828 | 2020-06-28 | ||
CN202010599682 | 2020-06-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113852656A CN113852656A (zh) | 2021-12-28 |
CN113852656B true CN113852656B (zh) | 2023-02-10 |
Family
ID=78972826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011063642.8A Active CN113852656B (zh) | 2020-06-28 | 2020-09-30 | 一种数据传输方法、处理器系统及内存访问系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230132302A1 (zh) |
EP (1) | EP4155925A4 (zh) |
CN (1) | CN113852656B (zh) |
WO (1) | WO2022001417A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115374024A (zh) * | 2021-05-21 | 2022-11-22 | 华为技术有限公司 | 一种内存数据排序方法及相关设备 |
CN114780465B (zh) * | 2022-03-01 | 2024-04-16 | 阿里巴巴(中国)有限公司 | 可共享远程直接数据存取链接的创建方法及装置 |
CN115002047B (zh) * | 2022-05-20 | 2023-06-13 | 北京百度网讯科技有限公司 | 一种远程直接数据存取方法、装置、设备以及存储介质 |
US12120022B1 (en) * | 2022-09-15 | 2024-10-15 | Juniper Networks, Inc. | Traffic filtering based on destination address and incoming interface of a network device |
CN116028232B (zh) * | 2023-02-27 | 2023-07-14 | 浪潮电子信息产业股份有限公司 | 跨机柜服务器内存池化方法、装置、设备、服务器及介质 |
WO2024192557A1 (zh) * | 2023-03-17 | 2024-09-26 | 清华大学 | 远端内存访问保护机制构建方法、远端内存节点及设备 |
CN116627888B (zh) * | 2023-07-25 | 2023-10-03 | 苏州浪潮智能科技有限公司 | 硬件计算模块、设备、方法、电子设备及存储介质 |
CN117255101B (zh) * | 2023-11-16 | 2024-02-20 | 苏州元脑智能科技有限公司 | 分布式存储系统的数据处理方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104571934A (zh) * | 2013-10-18 | 2015-04-29 | 华为技术有限公司 | 一种内存访问的方法、设备和系统 |
CN105450588A (zh) * | 2014-07-31 | 2016-03-30 | 华为技术有限公司 | 一种基于rdma的数据传输方法及rdma网卡 |
CN108494817A (zh) * | 2018-02-08 | 2018-09-04 | 华为技术有限公司 | 数据传输方法、相关装置及系统 |
WO2019129167A1 (zh) * | 2017-12-29 | 2019-07-04 | 华为技术有限公司 | 一种处理数据报文的方法和网卡 |
CN110647480A (zh) * | 2018-06-26 | 2020-01-03 | 华为技术有限公司 | 数据处理方法、远程直接访存网卡和设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10223326B2 (en) * | 2013-07-31 | 2019-03-05 | Oracle International Corporation | Direct access persistent memory shared storage |
CN103414535B (zh) * | 2013-07-31 | 2017-04-19 | 华为技术有限公司 | 数据发送方法和数据接收方法及相关装置 |
CN103902486B (zh) * | 2014-04-08 | 2017-02-22 | 华为技术有限公司 | 一种远端直接内存访问实现方法、装置及系统 |
CN105518611B (zh) * | 2014-12-27 | 2019-10-25 | 华为技术有限公司 | 一种远程直接数据存取方法、设备和系统 |
US10732893B2 (en) * | 2017-05-25 | 2020-08-04 | Western Digital Technologies, Inc. | Non-volatile memory over fabric controller with memory bypass |
-
2020
- 2020-09-30 CN CN202011063642.8A patent/CN113852656B/zh active Active
-
2021
- 2021-05-15 EP EP21832036.4A patent/EP4155925A4/en active Pending
- 2021-05-15 WO PCT/CN2021/093981 patent/WO2022001417A1/zh unknown
-
2022
- 2022-12-27 US US18/146,720 patent/US20230132302A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104571934A (zh) * | 2013-10-18 | 2015-04-29 | 华为技术有限公司 | 一种内存访问的方法、设备和系统 |
CN105450588A (zh) * | 2014-07-31 | 2016-03-30 | 华为技术有限公司 | 一种基于rdma的数据传输方法及rdma网卡 |
WO2019129167A1 (zh) * | 2017-12-29 | 2019-07-04 | 华为技术有限公司 | 一种处理数据报文的方法和网卡 |
CN108494817A (zh) * | 2018-02-08 | 2018-09-04 | 华为技术有限公司 | 数据传输方法、相关装置及系统 |
CN110647480A (zh) * | 2018-06-26 | 2020-01-03 | 华为技术有限公司 | 数据处理方法、远程直接访存网卡和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113852656A (zh) | 2021-12-28 |
WO2022001417A1 (zh) | 2022-01-06 |
EP4155925A1 (en) | 2023-03-29 |
US20230132302A1 (en) | 2023-04-27 |
EP4155925A4 (en) | 2023-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113852656B (zh) | 一种数据传输方法、处理器系统及内存访问系统 | |
EP1358562B8 (en) | Method and apparatus for controlling flow of data between data processing systems via a memory | |
EP3042297B1 (en) | Universal pci express port | |
US6667920B2 (en) | Scratchpad memory | |
US7409468B2 (en) | Controlling flow of data between data processing systems via a memory | |
US20020071450A1 (en) | Host-fabric adapter having bandwidth-optimizing, area-minimal, vertical sliced memory architecture and method of connecting a host system to a channel-based switched fabric in a data network | |
US20140040527A1 (en) | Optimized multi-root input output virtualization aware switch | |
US9596186B2 (en) | Multiple processes sharing a single infiniband connection | |
EP1399829A1 (en) | End node partitioning using local identifiers | |
CA2432386A1 (en) | Method and apparatus for transferring interrupts from a peripheral device to a host computer system | |
US9311044B2 (en) | System and method for supporting efficient buffer usage with a single external memory interface | |
CN104714904A (zh) | 采用窗口映射机制的RapidIO控制器及其控制方法 | |
CN106844263B (zh) | 一种基于可配置的多处理器计算机系统及实现方法 | |
CN115396527B (zh) | 一种基于fpga的pcie和srio协议转换系统及方法 | |
US6856619B1 (en) | Computer network controller | |
KR101559089B1 (ko) | 장치의 컴포넌트들 간에 메모리 자원들을 공유하기 위한 통신 프로토콜 | |
CN102843435A (zh) | 一种在集群系统中存储介质的访问、响应方法和系统 | |
US20020049875A1 (en) | Data communications interfaces | |
US7266614B1 (en) | Embedded channel adapter having link layer configured for concurrent retrieval of payload data during packet transmission | |
US20020049878A1 (en) | Data communications interfaces | |
CN101441661A (zh) | 一种在多个嵌入式系统之间共享文件资源的系统及方法 | |
US9104637B2 (en) | System and method for managing host bus adaptor (HBA) over infiniband (IB) using a single external memory interface | |
US20230418697A1 (en) | Data transmission system and related device | |
CN112988633A (zh) | 一种电子设备及数据传输方法 | |
CN117234997A (zh) | 一种基于fpga的嵌入式系统高速互联方法及系统 |
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 |