CN114726883A - 一种嵌入式rdma系统 - Google Patents
一种嵌入式rdma系统 Download PDFInfo
- Publication number
- CN114726883A CN114726883A CN202210459192.7A CN202210459192A CN114726883A CN 114726883 A CN114726883 A CN 114726883A CN 202210459192 A CN202210459192 A CN 202210459192A CN 114726883 A CN114726883 A CN 114726883A
- Authority
- CN
- China
- Prior art keywords
- module
- ethernet
- access
- remote
- protocol stack
- 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.)
- Granted
Links
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/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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
-
- 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/40—Bus networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明提供了一种嵌入式RDMA系统,包括:DMA控制模块、分布式访问处理模块、以太网协议栈模块、MAC模块、PHY模块;DMA控制模块,用于将获取到的多个远程访问指令通过多个DMA通道分别发送至所述分布式访问处理模块进行远程访问请求,并根据远程访问结果对分布式访问的相关参数进行修改;分布式访问处理模块,用于处理所述远程访问请求;以太网协议栈模块,用于接收分布式访问处理模块的远程访问指令。采用本发明实施例,能够将远程访问的所有功能均在硬件上完成,无需与CPU进行交互,减少嵌入式设备之间的访问延迟,提高了实时性。
Description
技术领域
本发明涉及嵌入式技术领域,尤其涉及一种嵌入式RDMA系统。
背景技术
RDMA(Remote Direct Memory Access,远程直接内存访问)旨在解决网络传输中端到端数据处理的延迟,是一种绕过远程主机的操作系统访问其内存中数据的技术。由于不经过操作系统,不仅节省了大量CPU资源,同样也提高了系统吞吐量、降低了系统的网络通信延迟,尤其适合在大规模并行计算机集群中有广泛应用。嵌入式系统是以应用为中心,以现代计算机技术为基础,能够根据用户需求灵活裁剪软硬件模块的专用计算机系统。与一般计算机系统不同,嵌入式系统通常执行具有特定要求的预定义任务,设计工程师可以去除不必要的部分,实现更低的功耗和成本,提高可靠性和性能。
近年来,在新兴的嵌入式系统中,需要高效的远程数据传输,但是,本发明人在对现有技术的研究中发现,现有的网络硬件和协议导致了较高的通信延迟,无法满足实时性的要求。
发明内容
本发明提供一种嵌入式RDMA系统,能够减少嵌入式设备之间的访问延迟,提高实时性。
为实现上述目的,本发明实施例提供了一种嵌入式RDMA系统,包括:DMA控制模块、分布式访问处理模块、以太网协议栈模块、MAC模块、PHY模块;
所述DMA控制模块与所述分布式访问处理模块连接,所述分布式访问处理模块分别与所述以太网协议栈模块、所述MAC模块连接,所述以太网协议栈模块与所述MAC模块连接,所述MAC模块与所述PHY模块连接;
所述DMA控制模块,用于将获取到的多个远程访问指令通过多个DMA通道分别发送至所述分布式访问处理模块进行远程访问请求,并根据远程访问结果对分布式访问的相关参数进行修改;所述分布式访问处理模块,用于处理所述远程访问请求,与所述以太网协议栈模块进行数据交互;所述以太网协议栈模块,用于接收所述分布式访问处理模块的远程访问指令,并与所述MAC模块进行数据交互;所述MAC模块,用于所述以太网协议栈模块与所述PHY模块对接;所述PHY模块,用于与外部设备对接。
作为其中一种可选的实施例,所述嵌入式RDMA系统还包括转换器模块;
所述MAC模块通过所述转换器模块与所述PHY模块连接。
作为其中一种可选的实施例,所述MAC模块包括接收FIFO模块、以太网接收模块、以太网发送模块、发送FIFO模块、以太网收发控制模块、AXI主控接口模块;
所述接收FIFO模块分别与所述以太网接收模块、所述以太网收发控制模块、所述以太网协议栈模块连接,所述以太网接收模块与所述转换器模块连接,所述以太网发送模块与所述转换器模块、所述发送FIFO模块连接,所述发送FIFO模块与所述AXI主控接口模块连接,所述以太网收发控制模块与所述以太网协议栈模块连接,所述AXI主控接口模块分别与所述分布式访问处理模块、所述以太网协议栈模块连接;
所述接收FIFO模块,用于缓冲所述以太网接收模块接收的数据;所述以太网接收模块,用于从所述PHY模块接收以太网报文,并将所述以太网报文写入所述接收FIFO模块中;所述以太网发送模块,用于读取所述发送FIFO模块的以太网报文,并将所述以太网报文通过PHY模块发送至外部设备;所述发送FIFO模块,用于缓存待发送的以太网报文;所述以太网收发控制模块,用于对接收和发送的数据进行处理;所述AXI主控接口模块,用于将所述以太网收发控制模块以及所述分布式访问处理模块对存储器的访问转换为对AXI总线的访问。
作为其中一种可选的实施例,所述DMA控制模块具体用于:
响应预设的远程访问指令,将所述远程访问指令拆分为多个远程访问请求,并根据每一远程访问请求对所述分布式访问处理模块逐一完成远程访问;
根据所述分布式访问处理模块反馈的每一远程访问结果,对所述分布式访问处理模块的分布式访问指令地址以及数据数量进行更新或者修正,并在每一远程访问结束后,生成分布式访问指令对应的执行状态。
作为其中一种可选的实施例,所述分布式访问处理模块具体用于:
从所述以太网协议栈模块接收其它节点的远程存储读写访问指令,通过所述AXI主控接口模块进行本地读写操作,并将读数据或者写结果反馈至所述节点;
接收本地的远程读写操作指令,并将读命令或者待写数据通过所述以太网协议栈模块发送至待访问的目标节点,并在接收到应答数据包时,将读数据写入本地存储器中或者将写结果发送至所述DMA控制模块。
作为其中一种可选的实施例,所述以太网协议栈模块具体用于:
对接收到的以太网报文进行解析,并在判断到MAC地址匹配且满足远程访问要求时,提取所述以太网报文中远程访问内容,并将所述远程访问内容发送至所述分布式访问处理模块进行处理;
接收所述分布式访问处理模块发送的远程访问指令,并将所述远程访问指令打包为以太网报文,发送至所述发送FIFO模块中进行发送。
作为其中一种可选的实施例,所述以太网协议栈模块包括状态机单元;
则,所述以太网协议栈模块还具体用于:
基于所述状态机单元,对接收到的以太网报文进行帧头解析,并根据所述帧头的各字段的含义,进行校验和计算、MAC地址匹配、协议字段匹配,并在所述状态机判断到接收到的报文满足预设报文要求时,生成并发送应答报文。
与现有技术相比,本发明实施例提供的一种嵌入式RDMA系统,具有以下有益效果:
1、远程访问的所有功能均在硬件上完成,无需与CPU进行交互,大大减少了远程数据传输时CPU的参与度,从而提高了系统的整体计算性能;
2、基于多DMA通道完成多线程并发的远程数据访问,提高了远程通信网络带宽和远程的利用率;
3、基于硬件实现以太网通信,相比于传统UDP的Socket通信,降低了协议栈的网络延迟和CPU开销,减少嵌入式设备之间的访问延迟,提高了实时性。
附图说明
图1是本发明实施例提供的一种嵌入式RDMA系统的结构示意图;
图2是本发明实施例提供的远程存储访问协议的命令帧的结构示意图;
图3是本发明实施例提供的远程存储访问协议的应答帧的结构示意图;
图4是本发明实施例提供的软件栈与现有技术软件栈的执行流程的对比示意图;
图5是本发明实施例提供的远程DMA读操作的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
第一方面,本发明实施例提供了一种嵌入式RDMA系统,参见图1,是本发明实施例提供的一种嵌入式RDMA系统的结构示意图,包括:DMA控制模块1、分布式访问处理模块2、以太网协议栈模块3、MAC模块4、PHY模块5;
所述DMA控制模块1与所述分布式访问处理模块2连接,所述分布式访问处理模块2分别与所述以太网协议栈模块3、所述MAC模块4连接,所述以太网协议栈模块3与所述MAC模块4连接,所述MAC模块4与所述PHY模块5连接;
所述DMA控制模块1,用于将获取到的多个远程访问指令通过多个DMA通道分别发送至所述分布式访问处理模块进行远程访问请求,并根据远程访问结果对分布式访问的相关参数进行修改;所述分布式访问处理模块2,用于处理所述远程访问请求,与所述以太网协议栈模块进行数据交互;所述以太网协议栈模块3,用于接收所述分布式访问处理模块的远程访问指令,并与所述MAC模块进行数据交互;所述MAC模块4,用于所述以太网协议栈模块与所述PHY模块对接;所述PHY模块5,用于与外部设备对接。
可以理解的是,嵌入式RDMA可以为多个系统提供远程互操作访问能力,面向百兆以太网的硬件协议栈,通过UDP协议包传送远程存储访问的命令与数据,采用命令应答式协议提高访问的可靠性与管理效率,多个嵌入式系统通过嵌入式RDMA以有线或者无线的方式连接到同一个网络后,即可进行远程存储访问。
其中,需要说明的是,为了节省嵌入式的成本,采用双MAC的设计,将进行远程存储访问的以太网MAC和CPU的以太网MAC共同使用同一个PHY接口。传统RDMA拥有独立的网口,需要单独走线连接网络,而双MAC的设计不会给嵌入式设备增加新的网口,从而增加了设备使用时的便捷性。
示例性的,通过在Xilinx ZynqMP架构的开发板上完成原型设计和功能验证。嵌入式RDMA用于分布式系统中,为多个嵌入式设备间建立一个协同分布式处理机制提供数据与控制交互通道,而为了提高多设备间的数据交互速率与效率,采用硬件处理方案实现远程存储访问,使得一个嵌入式设备中处理器能够通过直接对其它嵌入式设备的存储器、传感器、执行器等进行点对点的寻址访问。为了更契合嵌入式平台,通过设计精简高效的远程控制协议与以太网硬件协议栈,通过硬件完成整个远程访问时请求的发起和回馈。为了提高远程存储访问的带宽以及并行度,设计了硬件多通道,四个通道大大增加了嵌入式RDMA的性能。
目前,新兴的嵌入式系统,如自动驾驶汽车,需要高效的远程数据传输,而现有的网络硬件和协议导致了较高的通信延迟和CPU消耗。而与现有技术相比,本发明实施例提供的一种嵌入式RDMA系统,具有以下有益效果:
1、远程访问的所有功能均在硬件上完成,无需与CPU进行交互,大大减少了远程数据传输时CPU的参与度,从而提高了系统的整体计算性能;
2、基于多DMA通道完成多线程并发的远程数据访问,提高了远程通信网络带宽和远程的利用率;
3、基于硬件实现以太网通信,相比于传统UDP的Socket通信,降低了协议栈的网络延迟和CPU开销,减少嵌入式设备之间的访问延迟,提高了实时性。
作为其中一种可选的实施例,所述嵌入式RDMA系统还包括转换器模块6;
所述MAC模块4通过所述转换器模块6与所述PHY模块5连接。
示例性的,转换器模块6采用的是SGMII/RGMII转换器,用于连接以太网MAC与验证板上的PHY芯片,将以太网MAC的GMII接口转换为SGMII或RGMII协议。为了减少连接线,百兆网PHY芯片通常采用RGMII接口或SGMII接口协议。
作为其中一种可选的实施例,所述MAC模块4包括接收FIFO模块41、以太网接收模块42、以太网发送模块43、发送FIFO模块44、以太网收发控制模块45、AXI主控接口模块46;
所述接收FIFO模块41分别与所述以太网接收模块42、所述以太网收发控制模块45、所述以太网协议栈模块3连接,所述以太网接收模块42与所述转换器模块6连接,所述以太网发送模块43与所述转换器模块6、所述发送FIFO模块44连接,所述发送FIFO模块44与所述AXI主控接口46模块连接,所述以太网收发控制模块45与所述以太网协议栈模块3连接,所述AXI主控接口模块46分别与所述分布式访问处理模块2、所述以太网协议栈模块3连接。
所述接收FIFO模块41,用于缓冲所述以太网接收模块42接收的数据。
具体的,接收FIFO模块41的大小为2048字节,能够缓冲一个以太网帧的数据(最大1518字节)。接收FIFO模块41不仅能够缓冲接收的数据,还能够通过采用异步读写时钟,实现MAC与PHY操作的异步时钟域的信息同步。
所述以太网接收模块42,用于从所述PHY模块接收以太网报文,并将所述以太网报文写入所述接收FIFO模块中。
具体的,以太网接收模块42从PHY接口,按照GMII协议,接收以太网协议包的数据,写入接收FIFO模块41中。以太网接收模块42在接收以太网数据时,还会对数据按帧进行CRC校验,对数据帧长不对、接收FIFO溢出等错误进行识别。
所述以太网发送模块43,用于读取所述发送FIFO模块的以太网报文,并将所述以太网报文通过PHY模块发送至外部设备。
所述发送FIFO模块44,用于缓存待发送的以太网报文。
具体的,发送FIFO模块44的大小为2048字节。其中,因双MAC的设计,在上层的操作系统进行以太网通信时,发送FIFO由CPU使用的MAC写入,由以以太网发送模块43读取;在进行分布式访问通信时,发送FIFO由以以太网协议栈模块3写入,由以太网发送模块43读取。两者对以太网PHY的竞争由硬件控制,分布式访问发送数据的优先级大于以太网。
所述以太网收发控制模块45,用于对接收和发送的数据进行处理。
所述AXI主控接口模块46,用于将所述以太网收发控制模块45以及所述分布式访问处理模块3对存储器的访问转换为对AXI总线的访问。
具体的,AXI主控接口模块46用于把以太网收发控制模块45及分布式访问处理模块2对存储器的访问转换为对AXI总线的访问,提供AXI总线访问请求、AXI总线地址驱动、数据驱动与锁存等功能。
作为其中一种可选的实施例,所述DMA控制模块1具体用于:
响应预设的远程访问指令,将所述远程访问指令拆分为多个远程访问请求,并根据每一远程访问请求对所述分布式访问处理模块2逐一完成远程访问;
根据所述分布式访问处理模块2反馈的每一远程访问结果,对所述分布式访问处理模块2的分布式访问指令地址以及数据数量进行更新或者修正,并在每一远程访问结束后,生成分布式访问指令对应的执行状态。
具体的,DMA控制模块1用于实现分布式访问命令与状态控制,从控制寄存器中取得软件设置的远程访问命令,将访问命令拆分为多个远程访问请求,控制分布式访问处理模块逐一完成远程访问。DMA控制模块1在分布访问命令执行期间,会根据每一次远程访问的结果,更新或修正分布式访问命令地址与数据数量,并在访问结束后,生成分布式访问命令执行状态。
作为其中一种可选的实施例,所述DMA控制模块1采用多DMA通道的优先权管理机制。
具体的,多个DMA通道在工作过程中,会存在远程通信网络竞争问题,为了使每个DMA通道都能获得均衡的远程通信网络资源的使用机会,设计了多DMA通道的优先权管理机制,实现循环优先级算法和固定优先级算法。具体的,将DMA通道的RDMA线程的优先级划分为0、1、2、3共4个级别,优先权从0到3依次降低,优先级相同时,按DMA通道号大小选择。采用循环优先级时,在一次远程DMA操作完成后,会将本身的优先级置为最低级,并把其它循环优先级的DMA通道的优先级提升一级。采用固定优先级方式DMA通道的优先级,在远程DMA完成时不会改变优先级,也不会在其它DMA通道的RDMA完成时被改变。上层应用对四个通道的操作可以并行执行,应用程序通过驱动控制寄存器来设置每个通道的模式和初始优先级。
示例性的,DMA控制器1支持多个线程并发的远程数据访问,支持最多4个远程DMA访问线程同时进行传输。其中,每个DMA通道可以进行独立的设置,完成指定的远程DMA访问,使得多通道没有线程安全问题,可以向上层应用提供无锁的多通道操作接口。
值得说明的是,通过多线程RDMA控制器可以大大减少远程数据传输时CPU的参与度,从而提高了系统的整体计算性能以及远程通信网络带宽的利用率。
作为其中一种可选的实施例,所述分布式访问处理模块2具体用于:
从所述以太网协议栈模块3接收其它节点的远程存储读写访问指令,通过所述AXI主控接口模块46进行本地读写操作,并将读数据或者写结果反馈至所述节点;
接收本地的远程读写操作指令,并将读命令或者待写数据通过所述以太网协议栈模块3发送至待访问的目标节点,并在接收到应答数据包时,将读数据写入本地存储器中或者将写结果发送至所述DMA控制模块1。
具体的,分布式访问处理模块2用于处理远程存储访问命令,是分布式控制命令执行的核心部分,完成以下访问控制:1)从以太网协议栈模块3接收其它节点的远程存储读写访问命令,通过AXI主控接口模块46进行本地读操作,将读数据或写结果返回给命令节点;2)接收本地的远程读写操作命令,将读命令或待写数据送以太网协议栈模块3发送给要访问的节点,等接到应答协议包后,将读数据写到本地存储器或将写结果通知DMA控制模块1。
作为其中一种可选的实施例,所述以太网协议栈模块3具体用于:
对接收到的以太网报文进行解析,并在判断到MAC地址匹配且满足远程访问要求时,提取所述以太网报文中远程访问内容,并将所述远程访问内容发送至所述分布式访问处理模块2进行处理;
接收所述分布式访问处理模块2发送的远程访问指令,并将所述远程访问指令打包为以太网报文,发送至所述发送FIFO模块44中进行发送。
具体的,以太网协议栈主要功能包括:1)自动给出ARP、ICMP应答;2)对收到的以太网报文进行识别解析,如果MAC地址匹配,并且是远程存储访问命令,提取命令内容,交分布式访问处理模块去处理;3)根据分布式访问处理模块2的命令,把远程存储访问命令或应答状态,打包成UDP报文,送到发送FIFO模块44中进行发送。
可以理解的是,普通的网络TCP/IP协议栈在内核中执行,效率不高,且对嵌入式设备而言完整的协议栈资源开销不小,低端的嵌入式系统通常采用轻量级的LwIP(LightWeigh IP,轻型IP协议)。而常见的RDMA协议,则使用了复杂的软件栈和应用程序编程接口进行RDMA操作,其RDMA操作过程中必须包括内存注册(MR),发送队列(SQ),接收队列(RQ),完成队列(CQ)等功能或数据结构,更不适合在嵌入式环境下使用。为了适配嵌入式环境,通过设计嵌入式RDMA驱动,以轻量级的软件栈来支持高效、可靠的RDMA读写操作,如图4所示,左侧为嵌入式RDMA进行远程读操作流程,右侧为普通网络栈接收报文的流程。
具体的,嵌入式RDMA使用的是用户空间驱动程序,类似于UIO,将读写操作的配置和通道的绑定放在用户空间完成,仅在内核态完成中断接收,以减少用户空间和内核空间之间频繁切换的开销。应用程序可以选择在用户空间轮询或在内核空间接收中断来等待完成,中断适用于大量数据阻塞方式,轮询适用于少量数据非阻塞方式。嵌入式RDMA只用于RDMA单边读写,不需要维护完成队列等数据结构,因此,该中断处理流程较传统RDMA中断流程更短,处理速度更快。
另外,嵌入式RDMA的访存都是基于连续的物理地址,但进程的分页机制给RDMA操作带来了困难。传统RDMA通常在硬件中实现缓存页表项来完成虚拟地址到物理地址的转换,但缓存的大小有限不便于扩展,且带来额外的硬件资源消耗,不适合在嵌入式平台使用。嵌入式RDMA驱动在内核态中将一个连续的物理地址映射到用户空间,应用程序可以直接通过用户空间中的地址进行远程读写,没有数据拷贝开销,效率更高。
作为其中一种可选的实施例,所述以太网协议栈模块3包括状态机单元;
则,所述以太网协议栈模块3还具体用于:
基于所述状态机单元,对接收到的以太网报文进行帧头解析,并根据所述帧头的各字段的含义,进行校验和计算、MAC地址匹配、协议字段匹配,并在所述状态机判断到接收到的报文满足预设报文要求时,生成并发送应答报文。
具体的,以太网协议栈模块3采用硬件逻辑实现了一个支持UDP协议的简化以太网协议栈,其内部包含一个状态机,对收到的报文帧头进行解析。状态机根据帧头各个字段的含义,进行计算校验和、MAC地址匹配、协议字段匹配等操作。若在状态机判断出收到的报文是合法的ARP报文或者ICMP报文时,将自动构造应答报文发送,其中,不支持DHCP,也不会主动发送ARP、ICMP等请求。若状态机收到合法的UDP报文,将对端口与安全字进行匹配,如果合法,则视为远程存储访问命令,信息递交给分布式访问处理模块2。
可以理解的是,远程存储访问是进行分布式控制访问的基础,通过远程存储访问协议,嵌入式RDMA可以使用UDP协议包进行远程存储访问命令、应答状态及数据的相互传送。远程存储访问采用命令应答式协议。远程读操作,目标设备通过一个应答帧返回读出的数据;远程写操作,目标设备通过一个状态应答帧向源设备报告写操作完成状态;命令执行错误,目标设备通过一个状态应答帧向源设备报告命令执行的错误原因。
示例性的,远程存储访问协议采用UDP报文,包括命令报文和应答报文。一个远程存储访问命令报文由MAC地址、IP地址、UDP端口、命令帧组成,一个远程存储访问应答报文由MAC地址、IP地址、UDP端口、应答帧组成。具体的:
(1)IP地址与UDP端口
每个嵌入式RDMA都有一个独有的MAC地址,IP地址和设备编号。在构造远程存储访问命令报文时,分布式远程访问控制器根据要访问的目标设备编号,取得目标设备的IP地址与MAC地址作为UDP报文数据帧的目标MAC地址和目标IP地址,将本节点的MAC地址与IP地址作为UDP报文数据帧的源MAC地址和源IP地址。远程存储访问应答报文也是如此。远程存储访问使用UDP端口号作为远程存储访问协议的识别标志,远程存储访问命令报文通过端口0xc001发送,远程存储访问应答通过端口0xc002发送。
(2)命令帧
命令帧是UDP报文中的数据部分,它包括安全验证码、命令字、地址字、数据等部分,具体组成如图2所示,其中,需要说明的是:
1)保留1的目的是为了在UDP数据报中,把远程存储访问命令帧按32位对齐,也可以用于扩展用。
2)安全验证码用来传送安全算法计算出密钥。在命令接收端根据安全算法对收到的密钥进行验证,验证不正确,则丢弃命令。
3)命令字共32位。位31-24是命令序号,命令帧与应答帧的序号应当相同,每发送一个命令帧,1会自动将序号加1。位18和17是地址控制标志,用来指出在远程存储访问时,远程地址与本地地址是否固定不变。位15-8是读写长度。
4)远程地址字给出了命令在目标设备上要读写的起始地址,本地地址字给出了命令读写的数据在本地的存储地址。均为48位,可寻址256TB。
5)数据部分在写操作命令时,为待写入目标设备的数据;读命令不需要携带数据。
(3)应答帧
应答帧包括安全验证码、状态字、地址字、数据等部分,大部分内容与命令帧语义一致,不再赘述。具体组成图3所示。其中:
1)状态字共32位,位7是命令执行结果,为0表示命令执行正确,为1表示命令执行出现了错误。位6是命令执行超时标志,为1表示命令执行中出现了AXI总线访问超时,为0表示正常。位5-0后续用来扩展命令执行的错误原因,如果没有错误应当为0。
2)数据部分在读操作时,为目标设备读到的数据。写命令的应答帧与错误读写命令的应答帧也不需要携带数据。
值得说明的是,为实现高速的远程存储访问,设计硬件实现的以太网协议栈与传统软件网络栈相比能大大提高协议处理速度。本发明在UDP协议之上设计远程存储访问协议,实现存储访问、丢包重传和身份验证等功能。另外,通过FPGA设计多个模块,与软件网络栈各个协议层分离的设计相似,不同模块完成不同阶段的任务,使得远程存储访问的所有功能都在硬件完成,而不需要与CPU进行交互,等待软件响应和处理,硬件协议栈处理速度远高于嵌入式设备软件栈的速度。
作为其中一种可选的实施例,所述以太网收发控制模块45具体用于:
1)对发送、接收描述符表进行管理,根据描述符表的设置,在数据收发时进行主机内存读写管理,完成以太网通信数据的DMA操作;
2)对接收到的以太网协议包进行MAC地址识别匹配,过滤非本节点的数据报;
3)根据通信状态,设置修正描述符表中的状态字;
4)根据需要向主机产生中断请求。
作为其中一种可选的实施例,嵌入式RDMA系统还包括寄存器模块7。
具体的,寄存器模块7是用户对分布式控制器进行控制与状态查询的接口,包括MAC地址设置、通信控制设置、收发信息描述符初始指针、远程访问命令/状态等寄存器。其中,在ZynqMP架构中,控制寄存器连接在APB总线上。
值得说明的是,基于RDMA可绕过Linux网络软件栈,降低了CPU开销,减少了嵌入式设备之间访问的延迟,提高了实时性。另外,针对嵌入式场景设计低功耗的RDMA硬件,使得远程存储访问在嵌入式设备之间变得可行,而基于硬件实现的命令应答协议保证数据传输过程中的可靠性,也比软件协议速度更快,同时,相比通用RDMA的软件栈,轻量化的软件栈更适合资源受限的嵌入式环境,无需安装多种复杂的库,更精简,延迟更低。
进一步的,为了进一步体现本发明提供的一种嵌入式RDMA系统所达到的技术效果,下面以嵌入式RDMA读操作的详细过程为例进行进一步的说明,包括驱动配置、操作分割、命令与应答的详细步骤。访问执行过程如图5所示,其中,远程DMA读操作是指,板卡1要从板卡2中地址TADDR开始,读取长度为N个32位字的数据,放到本地址存储器SADDR处。具体的:
(1)板卡1上的软件通过控制寄存器进行远程存储访问目标设置,设置要访问的目标站点的IP地址、远程地址TADDR、本地地址SADDR,访问长度N,访问操作为读操作后启动远程存储访问。
(2)板卡1上的远程DMA控制模块对传输长度N进行判断,如果N大于256将此次操作分割为多次远程读操作,其后向以太网协议栈产生发送请求。以太网协议栈在四个通道之间,选择通道的优先级最高的通道进行发送,其他通道保持等待。
(3)选出本次发送操作的通道之后,将该通道优先级设置为最低,其余通道优先级升高,固定优先级的通道不变。以太网协议栈根据目标站点IP地址,取得目标MAC地址,按照远程存储访问协议,将远程存储访问命令UDP报文所有内容按32位字逐一写入发送FIFO,启动以太网发送,并设置远程存储访问等待标志。
(4)目标站点板卡2的以太网协议栈收到远程存储访问命令报文后,取得报文中的读操作地址,将地址、读请求、读取长度送分布式访问处理模块。后将收到的报文中的源与目标MAC、源与目标IP地址、源与目标UDP端口号等信息进行对调,存入远程存储访问命令缓冲区。
(5)板卡2的分布式访问处理模块,通过AXI主控接口对AXI总线发起TADDR的读操作请求。等待AXI总线回送数据应答,或错误报告。根据返回结果向以太网协议栈发送错误或者正确标志,后通知以太网协议栈可以回送应答帧,并将数据写入以太网协议栈的远程访问命令缓冲区。
(5)板卡2的以太网协议栈把所有内容按32位字逐一写入发送FIFO,并启动以太网发送。AXI总线读出数据会先写入命令缓冲区中,然后再搬移到发送FIFO中。如果AXI总线访问出现错误,则不需要进行数据搬移。向命令缓冲区写入数据,和数据搬到发送FIFO中是并行的。
(6)板卡1上收到应答报文后,清除等待标志,取得报文中的执行状态,如果访问出现错误,并且没有进行过重试,则设置一个重试标志,重新开始一次远程存储器读操作;如果进行过重试,则通知远程DMA控制模块结束远程DMA读操作,且设置读操作结束标志及错误标志,结束本次远程DMA读操作。
(7)如果访问正常,远程DMA控制模块会启动分布式访问处理模块,从命令缓冲区中将收到的数据写入到AXI总线以SADDR为起始地址的存储器中。如果AXI总线写操作出现故障,会重试一次,重试后还不正确,则通知控制寄存器出给出远程DMA读操作结束标志及错误标志,结束本次远程DMA读操作。
(8)板卡1中的远程DMA控制模块将数据长度与本次远程读操作长度进行比较,如果是最后一次操作则给出远程DMA读操作结束标志及正确完成标志。若不是最后一次,则将当前读操作的目标地址TADDR、本地地址SADDR加上完成长度*4,将数据长度N减去完成长度,得到新的数据地址和长度,继续下一次读操作。
需要说明的是,远程DMA写操作是指板卡1要将本地地址SADDR开始的长度为N个32位字的数据,写入到板卡2中地址TADDR开始的存储器中。访问执行过程与远程DMA读操作类似,大部分操作互为镜像,整个过程不再赘述。
另外,需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本领域技术人员可以理解,可以对实施例中的装置中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个装置中。可以把实施例中的模块或单元组合成一个模块或单元,以及此外可以把它们分成多个子模块或子单元。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
应该注意的是,上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包括”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在本发明的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (7)
1.一种嵌入式RDMA系统,其特征在于,包括:DMA控制模块、分布式访问处理模块、以太网协议栈模块、MAC模块、PHY模块;
所述DMA控制模块与所述分布式访问处理模块连接,所述分布式访问处理模块分别与所述以太网协议栈模块、所述MAC模块连接,所述以太网协议栈模块与所述MAC模块连接,所述MAC模块与所述PHY模块连接;
所述DMA控制模块,用于将获取到的多个远程访问指令通过多个DMA通道分别发送至所述分布式访问处理模块进行远程访问请求,并根据远程访问结果对分布式访问的相关参数进行修改;所述分布式访问处理模块,用于处理所述远程访问请求,与所述以太网协议栈模块进行数据交互;所述以太网协议栈模块,用于接收所述分布式访问处理模块的远程访问指令,并与所述MAC模块进行数据交互;所述MAC模块,用于所述以太网协议栈模块与所述PHY模块对接;所述PHY模块,用于与外部设备对接。
2.根据权利要求1所述的嵌入式RDMA系统,其特征在于,所述嵌入式RDMA系统还包括转换器模块;
所述MAC模块通过所述转换器模块与所述PHY模块连接。
3.根据权利要求2所述的嵌入式RDMA系统,其特征在于,所述MAC模块包括接收FIFO模块、以太网接收模块、以太网发送模块、发送FIFO模块、以太网收发控制模块、AXI主控接口模块;
所述接收FIFO模块分别与所述以太网接收模块、所述以太网收发控制模块、所述以太网协议栈模块连接,所述以太网接收模块与所述转换器模块连接,所述以太网发送模块与所述转换器模块、所述发送FIFO模块连接,所述发送FIFO模块与所述AXI主控接口模块连接,所述以太网收发控制模块与所述以太网协议栈模块连接,所述AXI主控接口模块分别与所述分布式访问处理模块、所述以太网协议栈模块连接;
所述接收FIFO模块,用于缓冲所述以太网接收模块接收的数据;所述以太网接收模块,用于从所述PHY模块接收以太网报文,并将所述以太网报文写入所述接收FIFO模块中;所述以太网发送模块,用于读取所述发送FIFO模块的以太网报文,并将所述以太网报文通过PHY模块发送至外部设备;所述发送FIFO模块,用于缓存待发送的以太网报文;所述以太网收发控制模块,用于对接收和发送的数据进行处理;所述AXI主控接口模块,用于将所述以太网收发控制模块以及所述分布式访问处理模块对存储器的访问转换为对AXI总线的访问。
4.根据权利要求3所述的嵌入式RDMA系统,其特征在于,所述DMA控制模块具体用于:
响应预设的远程访问指令,将所述远程访问指令拆分为多个远程访问请求,并根据每一远程访问请求对所述分布式访问处理模块逐一完成远程访问;
根据所述分布式访问处理模块反馈的每一远程访问结果,对所述分布式访问处理模块的分布式访问指令地址以及数据数量进行更新或者修正,并在每一远程访问结束后,生成分布式访问指令对应的执行状态。
5.根据权利要求3所述的嵌入式RDMA系统,其特征在于,所述分布式访问处理模块具体用于:
从所述以太网协议栈模块接收其它节点的远程存储读写访问指令,通过所述AXI主控接口模块进行本地读写操作,并将读数据或者写结果反馈至所述节点;
接收本地的远程读写操作指令,并将读命令或者待写数据通过所述以太网协议栈模块发送至待访问的目标节点,并在接收到应答数据包时,将读数据写入本地存储器中或者将写结果发送至所述DMA控制模块。
6.根据权利要求3所述的嵌入式RDMA系统,其特征在于,所述以太网协议栈模块具体用于:
对接收到的以太网报文进行解析,并在判断到MAC地址匹配且满足远程访问要求时,提取所述以太网报文中远程访问内容,并将所述远程访问内容发送至所述分布式访问处理模块进行处理;
接收所述分布式访问处理模块发送的远程访问指令,并将所述远程访问指令打包为以太网报文,发送至所述发送FIFO模块中进行发送。
7.根据权利要求3所述的嵌入式RDMA系统,其特征在于,所述以太网协议栈模块包括状态机单元;
则,所述以太网协议栈模块还具体用于:
基于所述状态机单元,对接收到的以太网报文进行帧头解析,并根据所述帧头的各字段的含义,进行校验和计算、MAC地址匹配、协议字段匹配,并在所述状态机判断到接收到的报文满足预设报文要求时,生成并发送应答报文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210459192.7A CN114726883B (zh) | 2022-04-27 | 2022-04-27 | 一种嵌入式rdma系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210459192.7A CN114726883B (zh) | 2022-04-27 | 2022-04-27 | 一种嵌入式rdma系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114726883A true CN114726883A (zh) | 2022-07-08 |
CN114726883B CN114726883B (zh) | 2023-04-07 |
Family
ID=82246407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210459192.7A Active CN114726883B (zh) | 2022-04-27 | 2022-04-27 | 一种嵌入式rdma系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114726883B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115297187A (zh) * | 2022-07-12 | 2022-11-04 | 重庆大学 | 一种网络通讯协议与总线协议的转换装置及集群系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1802836A (zh) * | 2003-06-11 | 2006-07-12 | 英特尔公司 | 网络协议卸载引擎存储器管理 |
US20140195631A1 (en) * | 2011-05-09 | 2014-07-10 | Emulex Corporation | Roce packet sequence acceleration |
CN106534168A (zh) * | 2016-12-06 | 2017-03-22 | 中国电子科技集团公司第三十二研究所 | 基于fpga的tcpip协议栈安全化处理系统 |
CN107077441A (zh) * | 2014-12-09 | 2017-08-18 | 英特尔公司 | 使用远程直接存储器访问(rdma)和主动消息的异构输入/输出(i/o) |
CN107508828A (zh) * | 2017-09-18 | 2017-12-22 | 南京斯坦德云科技股份有限公司 | 一种超远程数据交互系统及方法 |
CN108268208A (zh) * | 2016-12-30 | 2018-07-10 | 清华大学 | 一种基于rdma的分布式内存文件系统 |
CN108710638A (zh) * | 2018-04-13 | 2018-10-26 | 上海交通大学 | 一种基于混合rdma操作的分布式并发控制方法及系统 |
US20190141041A1 (en) * | 2017-11-08 | 2019-05-09 | Ca, Inc. | Remote direct memory access authorization |
CN110113420A (zh) * | 2019-05-08 | 2019-08-09 | 重庆大学 | 基于nvm的分布式消息队列管理系统 |
CN112596669A (zh) * | 2020-11-25 | 2021-04-02 | 新华三云计算技术有限公司 | 一种基于分布式存储的数据处理方法及装置 |
CN113326228A (zh) * | 2021-07-30 | 2021-08-31 | 阿里云计算有限公司 | 基于远程直接数据存储的报文转发方法、装置及设备 |
-
2022
- 2022-04-27 CN CN202210459192.7A patent/CN114726883B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1802836A (zh) * | 2003-06-11 | 2006-07-12 | 英特尔公司 | 网络协议卸载引擎存储器管理 |
US20140195631A1 (en) * | 2011-05-09 | 2014-07-10 | Emulex Corporation | Roce packet sequence acceleration |
CN107077441A (zh) * | 2014-12-09 | 2017-08-18 | 英特尔公司 | 使用远程直接存储器访问(rdma)和主动消息的异构输入/输出(i/o) |
CN106534168A (zh) * | 2016-12-06 | 2017-03-22 | 中国电子科技集团公司第三十二研究所 | 基于fpga的tcpip协议栈安全化处理系统 |
CN108268208A (zh) * | 2016-12-30 | 2018-07-10 | 清华大学 | 一种基于rdma的分布式内存文件系统 |
CN107508828A (zh) * | 2017-09-18 | 2017-12-22 | 南京斯坦德云科技股份有限公司 | 一种超远程数据交互系统及方法 |
US20190141041A1 (en) * | 2017-11-08 | 2019-05-09 | Ca, Inc. | Remote direct memory access authorization |
CN108710638A (zh) * | 2018-04-13 | 2018-10-26 | 上海交通大学 | 一种基于混合rdma操作的分布式并发控制方法及系统 |
CN110113420A (zh) * | 2019-05-08 | 2019-08-09 | 重庆大学 | 基于nvm的分布式消息队列管理系统 |
CN112596669A (zh) * | 2020-11-25 | 2021-04-02 | 新华三云计算技术有限公司 | 一种基于分布式存储的数据处理方法及装置 |
CN113326228A (zh) * | 2021-07-30 | 2021-08-31 | 阿里云计算有限公司 | 基于远程直接数据存储的报文转发方法、装置及设备 |
Non-Patent Citations (4)
Title |
---|
HANKOOK JANG等: ""Implementation of an efficient RDMA mechanism tightly coupled with a TCP/IP offload engine"", 《2008 INTERNATIONAL SYMPOSIUM ON INDUSTRIAL EMBEDDED SYSTEMS》 * |
刘铎等: ""Application-Specific Wear Leveling for Extending Lifetime of Phase Change Memory in Embedded Systems"", 《IEEE TRANSACTIONS ON COMPUTER-AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS》 * |
刘铎等: ""近似存储技术综述"", 《计算机研究与发展》 * |
魏星达等: "" 基于RDMA高速网络的高性能分布式系统"", 《大数据》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115297187A (zh) * | 2022-07-12 | 2022-11-04 | 重庆大学 | 一种网络通讯协议与总线协议的转换装置及集群系统 |
CN115297187B (zh) * | 2022-07-12 | 2023-11-17 | 重庆大学 | 一种网络通讯协议与总线协议的转换装置及集群系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114726883B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11016911B2 (en) | Non-volatile memory express over fabric messages between a host and a target using a burst mode | |
US11899596B2 (en) | System and method for facilitating dynamic command management in a network interface controller (NIC) | |
US7581015B2 (en) | Communication device having transmitting and receiving units supports RDMA communication | |
CN109582614B (zh) | 针对远程存储器访问的nvm express控制器 | |
US9430432B2 (en) | Optimized multi-root input output virtualization aware switch | |
US9258171B2 (en) | Method and system for an OS virtualization-aware network interface card | |
US7996569B2 (en) | Method and system for zero copy in a virtualized network environment | |
US7783769B2 (en) | Accelerated TCP (Transport Control Protocol) stack processing | |
US8255475B2 (en) | Network interface device with memory management capabilities | |
US10331595B2 (en) | Collaborative hardware interaction by multiple entities using a shared queue | |
US8660133B2 (en) | Techniques to utilize queues for network interface devices | |
WO2001018988A1 (en) | Bridge between parallel buses over a packet-switched network | |
EP1530850A2 (en) | Store and forward switch device, system and method | |
GB2409073A (en) | Dedicated connection between CPU and network interface in multi-processor systems | |
US20230132302A1 (en) | Data transmission method, processor system, and memory access system | |
US9918270B2 (en) | Wireless interface sharing | |
US7761529B2 (en) | Method, system, and program for managing memory requests by devices | |
JP2006085400A (ja) | データ処理システム | |
US7631313B2 (en) | System and method for transferring data | |
CN114726883B (zh) | 一种嵌入式rdma系统 | |
US6856619B1 (en) | Computer network controller | |
CN110765046A (zh) | 一种动态可重构高速串行总线的dma传输装置与方法 | |
CN116225992A (zh) | 一种支持虚拟化仿真设备的NVMe验证平台及方法 | |
CN116991780A (zh) | 基于PCIe总线的数据处理系统及方法、存储介质 | |
CN115442267A (zh) | 一种基于arinc664协议的icmp方法 |
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 |