CN116594951B - 一种基于fpga的数据传输***及方法 - Google Patents
一种基于fpga的数据传输***及方法 Download PDFInfo
- Publication number
- CN116594951B CN116594951B CN202310854194.0A CN202310854194A CN116594951B CN 116594951 B CN116594951 B CN 116594951B CN 202310854194 A CN202310854194 A CN 202310854194A CN 116594951 B CN116594951 B CN 116594951B
- Authority
- CN
- China
- Prior art keywords
- gate array
- programmable gate
- field programmable
- data
- fpga
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 126
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000004891 communication Methods 0.000 claims abstract description 24
- 230000003993 interaction Effects 0.000 claims abstract description 16
- 230000001360 synchronised effect Effects 0.000 claims description 7
- 238000012546 transfer Methods 0.000 claims description 7
- 238000011161 development Methods 0.000 description 21
- 238000005516 engineering process Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 14
- 230000002093 peripheral effect Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- VIEYMVWPECAOCY-UHFFFAOYSA-N 7-amino-4-(chloromethyl)chromen-2-one Chemical compound ClCC1=CC(=O)OC2=CC(N)=CC=C21 VIEYMVWPECAOCY-UHFFFAOYSA-N 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种基于FPGA的数据传输***及方法,其中,基于FPGA的数据传输***包括:主机设备;现场可编程门阵列设备,所述现场可编程门阵列设备装载在所述主机设备中,所述现场可编程门阵列设备与所述主机设备通信连接,所述现场可编程门阵列设备与远端的远程内存直接访问设备连接;其中,所述现场可编程门阵列设备设有共享内存区,所述现场可编程门阵列设备、所述主机设备均从所述共享内存区中读取或写入数据。本申请可以实现现场可编程门阵列设备和主机设备的简单交互。
Description
技术领域
本申请涉及数据传输技术领域,具体涉及一种基于FPGA的数据传输***及方法。
背景技术
随着高性能计算和大数据应用的不断发展,对于数据中心网络的高速和高效的数据传输需求不断提高。传统的网络通信协议(如TCP/IP)存在延迟高、吞吐量低和CPU利用率低等问题,不能满足高性能计算和数据中心网络的要求。因此,远程直接内存访问(RDMA,Remote Direct Memory Access)技术被广泛应用,而RoCE v2是一种重要的RDMA技术,能够在以太网上实现低延迟、高吞吐量的数据传输。在通用的RDMA网络适配器领域,针对RDMA网络编程,有通用的RDMA协议栈驱动程序和libibverbs库来支持RDMA编程。在厂商层面,需要在RDMA协议栈驱动程序中,添加与厂商硬件相关的RDMA协议栈驱动程序部分,大大增加了开发难度。在嵌入式RoCEv2技术领域,Xilinx提供了实现RoCEv2技术的IP核以及相应的参考设计和在嵌入式Linux***中的驱动程序支持,为有需求的厂商进行定制的嵌入式RDMA网络适配器开发,但在涉及到FPGA(FieldProgrammable Gate Array,现场可编程门阵列)设备和主机设备CPU异构编程上,没有完整的开发方案支持。虽然有一些通用的异构编程框架,但需要平台适配和熟悉相应的异构编程技术,加大了技术开发的难度和成本。
发明内容
为了解决上述技术问题,提出了本申请。本申请的实施例提供了一种基于FPGA的数据传输***及方法,可以实现现场可编程门阵列设备和主机设备的简单交互。
根据本申请的一个方面,提供了一种基于FPGA的数据传输***,包括:主机设备;现场可编程门阵列设备,所述现场可编程门阵列设备装载在所述主机设备中,所述现场可编程门阵列设备与所述主机设备通信连接,所述现场可编程门阵列设备与远端的远程内存直接访问设备连接;其中,所述现场可编程门阵列设备设有共享内存区,所述现场可编程门阵列设备、所述主机设备均从所述共享内存区中读取或写入数据。
在一实施例中,所述现场可编程门阵列设备包括:密文分组链接消息认证码模块,所述密文分组链接消息认证码模块与以太网连接,所述密文分组链接消息认证码模块构造为传出以太网数据包;数据包过滤器模块,所述数据包过滤器模块与所述密文分组链接消息认证码模块连接,所述数据包过滤器模块构造为将所述以太网数据包分为RoCE v2协议包和非RoCEv2协议包;ERNIC模块,所述ERNIC模块与所述数据包过滤器模块连接,所述ERNIC模块构造为解析所述RoCE v2协议包;AXI DMA模块,所述AXIDMA模块与所述ERNIC模块连接,所述AXIDMA模块构造为将所述ERNIC模块解析出来的数据写入至所述共享内存区中;软核处理器,所述软核处理器与所述密文分组链接消息认证码模块连接。
在一实施例中,所述现场可编程门阵列设备还包括:XDMA模块,所述XDMA模块与所述主机设备连接,所述XDMA模块构造为完成与所述主机设备的控制交互和数据传递;mb_xdma_handshake模块,所述mb_xdma_handshake模块与所述软核处理器连接,所述mb_xdma_handshake模块构造为实现控制命令通信;所述mb_xdma_handshake模块包括块RAM,所述块RAM用于构成所述共享内存区;双倍速率同步动态随机存储器模块,所述双倍速率同步动态随机存储器模块构成所述共享内存区。
在一实施例中,所述现场可编程门阵列设备与所述主机设备通过PCIe总线连接,所述现场可编程门阵列设备通过QSFP接口与远端的所述远程内存直接访问设备连接。
根据本申请的另一个方面,提供了一种基于FPGA的数据传输方法,适用于上述任一项实施例所述的基于FPGA的数据传输***,所述基于FPGA的数据传输方法以所述现场可编程门阵列设备作为客户端,远端的远程内存直接访问设备作为服务器端,所述现场可编程门阵列设备与主机设备通信连接,所述基于FPGA的数据传输方法包括:所述现场可编程门阵列设备读取当前共享内存区中的数据;当所述共享内存区中的数据表示有传输任务时,所述现场可编程门阵列设备解析当前共享内存区中的数据,获取操作命令和待传输的数据;其中,所述操作命令和待传输的数据来自所述主机设备;根据所述操作命令,所述现场可编程门阵列设备向所述客户端发送待传输的数据;发送数据完毕后,所述现场可编程门阵列设备向所述共享内存区中写入通信结束信息,并向所述主机设备发送本次待传输的数据传输完成的信号。
在一实施例中,在所述现场可编程门阵列设备读取当前共享内存区中的数据之前,所述基于FPGA的数据传输方法还包括:所述现场可编程门阵列设备清除所述共享内存区中的数据。
根据本申请的另一个方面,提供了一种基于FPGA的数据传输方法,适用于上述任一项实施例所述的基于FPGA的数据传输***,所述基于FPGA的数据传输方法以主机设备作为客户端,且现场可编程门阵列设备与所述主机设备通信连接,远端的远程内存直接访问设备作为服务器端,所述基于FPGA的数据传输方法包括:所述主机设备从现场可编程门阵列设备的共享内存区读取数据;当所述数据表示所述现场可编程门阵列设备确定接收待传输的数据时,将所述待传输的数据存储至所述现场可编程门阵列设备的所述共享内存区中;通知所述现场可编程门阵列设备从所述共享内存区中读取所述待传输的数据;获取所述现场可编程门阵列设备发送的本次待传输的数据传输完成的信号。
根据本申请的另一个方面,提供了一种基于FPGA的数据传输方法,适用于上述任一项实施例所述的基于FPGA的数据传输***,所述基于FPGA的数据传输方法以所述现场可编程门阵列设备作为服务器端,远端的远程内存直接访问设备作为客户端,所述现场可编程门阵列设备与主机设备通信连接,所述基于FPGA的数据传输方法包括:所述现场可编程门阵列设备监听所述客户端的连接请求;当所述客户端发起连接请求时,所述现场可编程门阵列设备接收所述客户端的客户端数据;所述现场可编程门阵列设备将所述客户端数据存储至所述现场可编程门阵列设备的共享内存区;所述现场可编程门阵列设备通知所述主机设备开始接收所述客户端数据;当所述现场可编程门阵列设备接收到所述主机设备发送的接收完成的信号时,继续监听所述客户端的连接请求。
在一实施例中,所述当所述客户端发起连接请求时,所述现场可编程门阵列设备接收所述客户端的客户端数据之后,所述基于FPGA的数据传输方法还包括:所述现场可编程门阵列设备解析所述客户端数据,获得操作命令;所述现场可编程门阵列设备将所述操作命令通过所述共享内存区传送给所述主机设备;所述现场可编程门阵列设备从所述共享内存区中获取所述主机设备基于所述操作命令存储的待传送数据;将所述待传送数据发送至所述客户端。
根据本申请的另一个方面,提供了一种基于FPGA的数据传输方法,适用于上述任一项实施例所述的基于FPGA的数据传输***,所述基于FPGA的数据传输方法以主机设备作为服务器端,且现场可编程门阵列设备与所述主机设备通信连接,远端的远程内存直接访问设备作为客户端,所述基于FPGA的数据传输方法包括:所述主机设备从现场可编程门阵列设备的共享内存区读取数据;当所述主机设备确定所述数据中存在待传输的数据时,所述主机设备从所述共享内存区中拷贝所述待传输的数据;当拷贝完成时,所述主机设备向所述现场可编程门阵列设备发送接收完成的信号。
本申请提供的基于FPGA的数据传输***及方法,在现场可编程门阵列设备中开辟一块保留内存,此部分在设备树中进行设置,作为主机设备和现场可编程门阵列设备之间的共享内存区,双方在通信时,会从共享内存空间的指定位置读取或写入相关的数据,从而实现双方的控制信息传输和数据传递,解决了需要运用复杂的开发工具和异构编程平台进行支持的困境,实现了现场可编程门阵列设备和主机设备的简单交互。
附图说明
通过结合附图对本申请实施例进行更详细的描述,本申请的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是本申请一示例性实施例提供的基于FPGA的数据传输***的结构示意图。
图2是本申请一示例性实施例提供的现场可编程门阵列设备的结构示意图。
图3是本申请一示例性实施例提供的基于FPGA的数据传输方法的流程示意图。
图4是本申请一示例性实施例提供的基于FPGA的数据传输方法的原理示意图。
图5是本申请另一示例性实施例提供的基于FPGA的数据传输方法的流程示意图。
图6是本申请另一示例性实施例提供的基于FPGA的数据传输方法的原理示意图。
图7是本申请另一示例性实施例提供的基于FPGA的数据传输方法的流程示意图。
图8是本申请另一示例性实施例提供的基于FPGA的数据传输方法的原理示意图。
图9是本申请另一示例性实施例提供的基于FPGA的数据传输方法的流程示意图。
图10是本申请另一示例性实施例提供的基于FPGA的数据传输方法的原理示意图。
图11是本申请一示例性实施例提供的电子设备的结构图。
附图标记说明:1、主机设备;2、现场可编程门阵列设备;3、远端的远程内存直接访问设备;21、共享内存区;22、密文分组链接消息认证码模块;23、数据包过滤器模块;24、ERNIC模块;25、AXI DMA模块;26、软核处理器;27、XDMA模块;28、mb_xdma_handshake模块;29、双倍速率同步动态随机存储器模块;30、块RAM;31、硬件握手模块;32、AXI GPIO模块;33、***设备连接模块;34、AXI Interconnect1模块;35、AXI Interconnect2模块;36、AXIInterconnect3模块。
具体实施方式
下面,将参考附图详细地描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。
申请概述
嵌入式 RoCE(RDMAover Converged Ethernet,基于融合以太网的远程内存直接访问)v2技术是在RoCE v2技术的基础上发展而来。嵌入式 RoCE v2 技术将 RoCE v2 技术集成到网络适配器或SoC芯片中,从而实现更高的性能和更低的功耗。与传统的远程内存直接访问(Remote Direct Memory Access,RDMA)技术相比,嵌入式RoCE v2技术不需要额外的网络适配器或硬件加速卡,可以直接通过SoC芯片的硬件集成实现,从而大大降低了成本和功耗。在嵌入式RoCE v2技术的发展过程中,还涌现出一些相关技术,例如基于FPGA(FieldProgrammable Gate Array,现场可编程门阵列)的嵌入式RoCE v2技术、嵌入式RoCEv2技术在云计算中的应用等。这些技术的出现,进一步推动了嵌入式RoCE v2技术的发展和应用。
但是,现有技术主要面向 HPC(High-PerformanceComputing,高性能计算)和数据中心,开发流程复杂,需要对硬件平台的整套开发流程非常熟悉,同时需要厂家对不同的硬件平台进行适配支持,虽然有完整的统一软件平台和开发工具支持,但对不熟悉开发工具和流程的硬件工程师和软件工程师很不友好,在不同FPGA平台之间需要大量的适配和调试工作。因此,本发明在实现Xilinx的RoCEv2参考设计方案的基础上,在异构数据传输方面,摒弃了复杂的技术方案,在现有通用技术的基础上,在硬件上,增加新的IP核,用于连通与主机间的通信。在软件上,采用异构***间共享存储空间的方案,进行主机***和设备***间的程序控制和数据传输,从而解决了需要运用复杂的开发工具和异构编程平台进行支持的困境。
示例性***
图1是本申请一示例性实施例提供的基于FPGA的数据传输***的结构示意图,如图1所示,基于FPGA的数据传输***包括:主机设备1;现场可编程门阵列设备2,现场可编程门阵列设备2与主机设备1通信连接,现场可编程门阵列设备2与远端远程内存直接访问设备3连接;其中,现场可编程门阵列设备2设有共享内存区21,现场可编程门阵列设备2、主机设备1均从共享内存区21中读取或写入数据。
远端的远程内存直接访问设备3为其他的远端的装载有远程内存直接访问网卡的主机设备,远端的远程内存直接访问设备3需要与主机设备1进行数据交互,而现场可编程门阵列设备2作为中介设备实现与主机设备1的异构通信,现场可编程门阵列设备2和主机设备1组成的服务端,从而简单快速的完成远端的远程内存直接访问设备3客户端到服务端的数据交互。现场可编程门阵列设备2与主机设备1通过PCIe(PeripheralComponentInterface Extend)总线连接,PCIe总线是一个树状形的接口总线。现场可编程门阵列设备2通过QSFP(QuadSmall Form-factor Pluggable)接口与远端的远程内存直接访问设备3连接,QSFP接口可实现更高密度的高速插拔。在现场可编程门阵列设备2中开辟一块保留内存,此部分在设备树中进行设置,作为主机设备1和现场可编程门阵列设备2之间的共享内存区21,双方在通信时,会从共享内存空间的指定位置读取或写入相关的数据,从而实现双方的控制信息传输和数据传递,解决了需要运用复杂的开发工具和异构编程平台进行支持的困境。
图2是本申请一示例性实施例提供的现场可编程门阵列设备的结构示意图,如图2所示,现场可编程门阵列设备包括:密文分组链接消息认证码(CMAC,CipherBlockChaining-Message Authentication Code)模块22,密文分组链接消息认证码模块22与以太网连接,密文分组链接消息认证码模块22构造为传出以太网数据包;数据包过滤器(Packet filter)模块23,数据包过滤器模块23与密文分组链接消息认证码模块22连接,数据包过滤器模块23构造为将以太网数据包分为RoCE v2协议包和非RoCEv2协议包;ERNIC(EmbeddedRDMA enabled NIC,嵌入式RDMA兼容NIC)模块24,ERNIC模块24与数据包过滤器模块23连接,ERNIC模块24构造为解析RoCEv2协议包;AXI DMA(DirectMemory Access,直接存储器访问)模块25,AXIDMA模块25与ERNIC模块24连接,AXIDMA模块25构造为将ERNIC模块24解析出来的数据写入至共享内存区中;软核处理器(Microblaze处理器)26,软核处理器26与密文分组链接消息认证码模块22连接;XDMA模块27,XDMA模块27与主机设备连接,XDMA(XilinxDirect Memory Access)模块27构造为完成与主机设备的控制交互和数据传递;mb_xdma_handshake模块28,mb_xdma_handshake模块28与软核处理器26连接,mb_xdma_handshake模块28构造为实现控制命令通信;mb_xdma_handshake模块28包括块RAM(BlockRAM,BRAM)30,块RAM30用于构成共享内存区;双倍速率同步动态随机存储器(DoubleData Rate SynchronousDynamic Random Access Memory,DDR)模块29,双倍速率同步动态随机存储器模块29构成共享内存区。
本发明旨在实现一种基于FPGA的嵌入式RoCEv2技术,该技术由硬件和软件两部分组成。硬件部分可以基于Xilinx公司的Virtex™ UltraScale+™ FPGA VCU118开发板,来实现嵌入式RoCE v2。VCU118开发板包括一颗FPGA芯片(例如型号为XCVU9P-FLGA2104-2L-e的芯片),两个28Gb/sQSFP+连接器,一个UART(UniversalAsynchronous Receiver/Transmitter,通用异步收发器)串口,一个JTAG(JointTestActionGroup)接口,BPI16-bitFLASH以及4Gb(256Mbx16)DDR4-2400。VCU118开发板通过PCIe连接器***服务器金手指插槽。FPGA内部设计以ERNIC(Xilinx Embedded RDMAenabled NIC)IP为核心,实现了嵌入式RoCEv2的核心功能。在此基础上,使用了XDMA IP,添加了mb_xdma_handshake模块,以实现服务器主机与FPGA的控制命令交互和数据传递。其中,ERNIC IP可以采用由Xilinx公司开发的LogiCOREIP,该IP是支持RDMAover Converged Ethernet(RoCE v2)的NIC功能的实现。在FPGA内部,采用软核处理器(Microblaze处理器)作为软核CPU,运行Linux操作***。Microblaze通过AXI4-Lite协议控制ERNIC模块,ERNIC模块主要负责RoCEv2协议的实现和以太网包的解析。现场可编程门阵列设备内部***设计如图2所示,主要由以下几个部分组成:ERNIC模块24、软核处理器26、XDMA模块27、AXIDMA模块25、密文分组链接消息认证码模块22、AXIGPIO模块32、***设备连接模块33、AXIInterconnect1模块34、AXIInterconnect2模块35、AXIInterconnect3模块36、双倍速率同步动态随机存储器模块29,数据包过滤器模块23,硬件握手模块31,mb_xdma_handshake模块28和块RAM30。
通过使用MicroBlazeIP,以软核的方式实现了CPU,使得Linux操作***可以在FPGA内运行。软核处理器26作为RoCEv2***的主控,负责终端信息的打印显示、AXI DMA模块25的配置、硬件握手模块的配置、中断的处理、与服务器的命令交互、对ERNIC模块24的初始化以及配置。通过使用ERNIC IP来完成RoCE v2协议的实现。密文分组链接消息认证码模块22负责100Gb/s以太网的物理层和链路层,通过使用UltraScale+™ DevicesIntegrated 100G EthernetIP实现。数据包过滤器模块23负责将密文分组链接消息认证码模块22传出的以太网数据包分为RoCEv2协议包和非RoCEv2协议包,然后通过AXI4-Stream协议传递给ERNIC模块24。AXIDMA模块25负责ERNIC模块24解析出来的数据的搬运,将数据写入双倍速率同步动态随机存储器模块29内部。硬件握手(Hardwarehandshake)模块负责与ERNIC模块24的门铃机制响应。mb_xdma_handshake模块28负责服务器与软核处理器26之间的控制命令通信。mb_xdma_handshake模块28主要由块RAM30和控制逻辑组成。将块RAM30视为一块寄存器空间,通过定义不同地址位以实现控制命令及参数的传递。XDMA模块27通过使用Xilinx公司的XDMAIP来实现。负责对PCIe包的事务处理,以完成服务器主机和现场可编程门阵列设备的控制命令交互和数据传递。***设备连接(PeripheralInterconnect)模块33用于实现连接。AXIInterconnect1模块34、AXI Interconnect2模块35、AXIInterconnect3模块36作为连接模块,实现现场可编程门阵列设备中其他模块与共享内存区之间的连接和读写。AXI GPIO模块32是由用户通过配置芯片的逻辑资源来实现的一个功能模块。
此外,还配合有软件部分以实现基于FPGA的嵌入式RoCEv2技术,软件部分主要分为三大块,基于FPGA设备(现场可编程门阵列设备)的软件适配和RDMA应用程序接口,与FPGA设备相连的主机Host接口程序,以及搭载通用的RDMA网卡的服务器/客户端接口程序。一、FPGA设备内部的软件程序是在Xilinx microblaze平台运行的,开发工具使用的是Xilinx公司的petalinux工具。这一部分主要是基于Xilinx公司提供的ERNIC IP驱动程序、内存管理程序等驱动程序,进行RDMA应用程序移植和功能开发,主要在FPGA中实现RDMA的RDMASEND、RDMA READ和RDMAWRITE三个基本的操作,在应用程序层面实现基于RoCEv2的从FPGA设备到远端RDMA设备的数据传输。FPGA设备可以作为一个具备RoCE v2功能的独立计算设备,也可作为Host主机的外设设备,通常是PCIe设备。作为外设设备时,RDMA应用程序需要分为两部分,一部分是运行在FPGA设备中的RDMA程序主体,一部分是运行在Host主机设备部分,与FPGA设备中RDMA程序进行交互的部分。为此,可以通过共享内存区实现Host主机控制程序与FPGA设备中的RDMA程序的控制交互和数据传递。二、Host主机接口程序主要是在主机端提供了一种方法,此方法通过往FPGA设备的共享内存区中读取或写入数据,与FPGA设备中的RDMA程序进行控制交互和数据传递。FPGA设备中的RDMA程序在接收到相应的命令和数据,解析后,通过ERNIC模块传送给远端的装载有RDMA网卡的主机设备。从而达到了装载有FPGA设备的Host主机与远端装载有RDMA网卡的主机设备的通信。三、在装载通用RDMA网卡的Host主机中,需要与FPGA设备中的RDMA程序进行配套的RDMA接口程序,以实现与FPGA设备中的RDMA程序交互,此部分基于C/S架构,开发流程与普通的RDMA应用程序无异。其中FPGA设备和装载通用RDMA网卡的Host主机中的RDMA应用程序可以是服务器程序,也可以是客户端程序,根据使用场景进行配置。以上三部分构成了本发明中的应用程序框架,通过这三部分的组合实现了基于FPGA RoCE v2技术的应用。
示例性方法1
图3是本申请一示例性实施例提供的基于FPGA的数据传输方法的流程示意图,如图3所示,该基于FPGA的数据传输方法适用于本申请任一项实施例提供的基于FPGA的数据传输***,上述基于FPGA的数据传输方法以现场可编程门阵列设备作为客户端,远端远程内存直接访问设备作为服务器端,现场可编程门阵列设备与主机设备通信连接,示例性方法1以作为客户端的现场可编程门阵列设备作为执行主体,基于FPGA的数据传输方法包括:
步骤110:现场可编程门阵列设备读取当前共享内存区中的数据。
现场可编程门阵列设备读取现场可编程门阵列设备侧的共享内存区中的数据,从读取的数据中判断主机设备(Host)侧是否有新的传输任务。
步骤120:当共享内存区中的数据表示有传输任务时,现场可编程门阵列设备解析当前共享内存区中的数据,获取操作命令和待传输的数据。
其中,操作命令和待传输的数据来自主机设备。
如果有新的传输任务,则现场可编程门阵列设备从共享内存区中的指定位置读取数据,如果没有新的传输任务,则继续从共享内存区中读取数据。现场可编程门阵列设备解析读取的数据,获取操作命令和待传输的数据,此部分数据中,包含服务器端的IP地址和端口号,以及待传输的数据在现场可编程门阵列设备侧的共享内存区中的地址和大小。
步骤130:根据操作命令,现场可编程门阵列设备向客户端发送待传输的数据。
根据解析出来的操作命令,调用现场可编程门阵列设备侧的RDMA通信模块,通过RDMA通信模块向远端的远程内存直接访问设备发送远程内存直接访问数据。
步骤140:发送数据完毕后,现场可编程门阵列设备向共享内存区中写入通信结束信息,并向主机设备发送本次待传输的数据传输完成的信号。
数据发送完毕后,向现场可编程门阵列设备的共享内存区中指定位置写入通信结束信息,并且通知主机设备已完成了一次RDMA传输,主机设备可以进行下一轮的数据传输准备。
在一实施例中,在上述步骤110之前,基于FPGA的数据传输方法还可以包括:现场可编程门阵列设备清除共享内存区中的数据。
在程序启动时,对现场可编程门阵列设备侧的共享内存区进行清空,防止参与信息的影响。
图4是本申请一示例性实施例提供的基于FPGA的数据传输方法的原理示意图,如图4所示,以现场可编程门阵列设备侧作为客户端,远端的远程内存直接访问设备作为服务器端,在程序启动时,对现场可编程门阵列设备侧的共享内存区进行清空(S11),防止参与信息的影响,从共享内存中读取数据(S12),从读取的数据中判断主机设备侧是否有新的传输任务,如果有新的传输任务,则判断是否可以从共享内存区中获取数据(S13),如果不能获取数据,则执行S12,如果可以获取数据,则从共享内存区中的指定位置读取数据(S14)。读取数据后,解析读取的数据,获取操作命令和待传输的数据(S15)。调用现场可编程门阵列设备侧的RDMA通信模块,通过RDMA通信模块向远端的远程内存直接访问设备发送待传输的数据(S16),通信结束时,向现场可编程门阵列设备的共享内存区中指定位置写入通信结束信息,并且通知主机设备已完成了一次RDMA传输(S17),然后继续执行S12。
示例性方法2
图5是本申请一示例性实施例提供的基于FPGA的数据传输方法的流程示意图,如图5所示,该基于FPGA的数据传输方法适用于本申请任一项实施例提供的基于FPGA的数据传输***,基于FPGA的数据传输方法以主机设备作为客户端(RDMA客户端实现在现场可编程门阵列设备中,与现场可编程门阵列设备中的客户端接口配套使用),且现场可编程门阵列设备与主机设备通信连接,远端远程内存直接访问设备作为服务器端,示例性方法2以作为客户端的主机设备作为执行主体,基于FPGA的数据传输方法包括:
步骤210:主机设备从现场可编程门阵列设备的共享内存区读取数据。
主机设备从现场可编程门阵列设备侧的共享内存区读取数据,该数据可以供主机设备判断现场可编程门阵列设备是否准备好接收待传输的数据。
步骤220:当数据表示现场可编程门阵列设备确定接收待传输的数据时,将待传输的数据存储至现场可编程门阵列设备的共享内存区中。
当数据表示现场可编程门阵列设备确定接收待传输的数据时,主机设备准备好待传输的数据,并将待传输的数据放入现场可编程门阵列设备侧的共享内存区中。
步骤230:通知现场可编程门阵列设备从共享内存区中读取待传输的数据。
主机设备通知现场可编程门阵列设备开始从共享内存区中读取待传输的数据。
步骤240:获取现场可编程门阵列设备发送的本次待传输的数据传输完成的信号。
当本次待传输的数据传输完成后,主机设备获取现场可编程门阵列设备发送的本次待传输的数据传输完成的信号,并且主机设备继续从现场可编程门阵列设备侧的共享内存区读取数据。
图6是本申请另一示例性实施例提供的基于FPGA的数据传输方法的原理示意图,如图6所示,以主机设备侧作为客户端(RDMA客户端实现在现场可编程门阵列设备中,与现场可编程门阵列设备中的客户端接口配套使用),程序启动后,从现场可编程门阵列设备侧中的共享内存区读取数据(S21);判断现场可编程门阵列设备侧是否准备好接收数据(S22);如果准备好接收数据,则转到S23;否则,转到S21;准备要传输的数据(S23);将数据放入现场可编程门阵列设备侧的共享内存区(S24);通知现场可编程门阵列设备侧,可以从共享内存区读取数据(S25);回到S21。
示例性方法3
图7是本申请一示例性实施例提供的基于FPGA的数据传输方法的流程示意图,如图7所示,该基于FPGA的数据传输方法适用于本申请任一项实施例提供的基于FPGA的数据传输***,基于FPGA的数据传输方法以现场可编程门阵列设备作为服务器端,远端远程内存直接访问设备作为客户端,现场可编程门阵列设备与主机设备通信连接,示例性方法3以作为服务器端的现场可编程门阵列设备作为执行主体,基于FPGA的数据传输方法包括:
步骤310:现场可编程门阵列设备监听客户端的连接请求。
现场可编程门阵列设备持续监听客户端的连接请求,检查客户端是否有连接请求。
步骤320:当客户端发起连接请求时,现场可编程门阵列设备接收客户端的客户端数据。
如果有客户端发起连接请求,则现场可编程门阵列设备确定开始接收远端的远程内存直接访问客户端的客户端数据。
步骤330:现场可编程门阵列设备将客户端数据存储至现场可编程门阵列设备的共享内存区。
将客户端数据存储至现场可编程门阵列设备的共享内存区中,以便主机设备接收客户端发送的客户端数据。
步骤340:现场可编程门阵列设备通知主机设备开始接收客户端数据。
现场可编程门阵列设备完成客户端数据在共享内存区中的存储后,通知主机设备开始从共享内存区中拷贝客户端数据,将客户端数据拷贝至主机设备中。
步骤350:当现场可编程门阵列设备接收到主机设备发送的接收完成的信号时,继续监听客户端的连接请求。
通过读取现场可编程门阵列设备侧的共享内存区中的指定区域,判断主机设备是否接收完数据,如果已经接收完数据,则继续持续持续监听客户端的连接请求,以便完成下一次客户端数据传输。
图8是本申请另一示例性实施例提供的基于FPGA的数据传输方法的原理示意图,如图8所示,程序启动时,首先进行RDMA服务器模块初始化(S31);持续监听客户端连接请求(S32);判断是否有连接请求(S33),如果有客户端连接请求,则转到S34;否则,转到S32;接收客户端数据(S34);将接收到的客户端数据放入现场可编程门阵列设备侧的共享内存区(S35);通知主机设备侧,可以开始接受客户端数据(S36);读取现场可编程门阵列设备侧共享内存区的指定区域(S37);判断主机设备侧是否接收完数据(S38);如果已经接收完数据,转到S32;否则,转到S37。
在一实施例中,当上述步骤320之后,基于FPGA的数据传输方法还可以包括:现场可编程门阵列设备解析客户端数据,获得操作命令;现场可编程门阵列设备将操作命令通过共享内存区传送给主机设备;现场可编程门阵列设备从共享内存区中获取主机设备基于操作命令存储的待传送数据;将待传送数据发送至客户端。
此外,现场可编程门阵列设备端的RDMA应用程序模块解析完命令请求后,将相应的操作命令和数据通过共享内存区域传送给主机设备端,主机设备根据解析的命令,判断是否需要给客户端返回数据,如果需要,则将待传送的数据放入共享内存区,现场可编程门阵列设备端拿到数据后,将数据再通过RDMA应用程序模块传送给远端的远程内存直接访问设备,从而完成一次远端的远程内存直接访问客户端到现场可编程门阵列设备和Host主机端组成的服务端的数据交互。
示例性方法4
图9是本申请一示例性实施例提供的基于FPGA的数据传输方法的流程示意图,如图9所示,该基于FPGA的数据传输方法适用于本申请任一项实施例提供的基于FPGA的数据传输***,基于FPGA的数据传输方法以主机设备作为服务器端,且现场可编程门阵列设备与主机设备通信连接,远端远程内存直接访问设备作为客户端,基于FPGA的数据传输方法包括:
步骤410:主机设备从现场可编程门阵列设备的共享内存区读取数据。
主机设备读取共享内存区中的指定区域的数据,从而判断是否可以从现场可编程门阵列设备侧接收数据。
步骤420:当主机设备确定数据中存在待传输的数据时,主机设备从共享内存区中拷贝待传输的数据。
当主机设备确定可以开始从现场可编程门阵列设备接收数据,并且数据中存在待传输的数据时,主机设备从共享内存区中拷贝待传输的数据,将待传输的数据拷贝至主机设备中。
步骤430:当拷贝完成时,主机设备向现场可编程门阵列设备发送接收完成的信号。
当拷贝完成时,主机设备通知现场可编程门阵列设备,待传输的数据已从共享内存区中拷贝完成。在拷贝完成后,主机设备继续从现场可编程门阵列设备的共享内存区读取数据,从而判断是否有下一次数据传输。
图10是本申请另一示例性实施例提供的基于FPGA的数据传输方法的原理示意图,如图10所示,主机设备作为服务器端与现场可编程门阵列设备作为服务器端的交互流程图。程序启动;读取现场可编程门阵列设备侧共享内存区指定区域的数据(S41);判断是否可以从现场可编程门阵列设备侧接收数据(S42);如果准备好接收数据,则转到S43;否则,转到S41;将数据从现场可编程门阵列设备侧的共享内存区中拷贝到主机设备(S43);通知现场可编程门阵列设备侧,数据已从共享内存区拷贝完成(S44);转到S41。
示例性电子设备
一种电子设备,电子设备包括:处理器;用于存储处理器可执行指令的存储器;处理器,用于执行本申请提供的实施例所述的基于FPGA的数据传输方法。
下面,参考图11来描述根据本申请实施例的电子设备。该电子设备可以是第一设备和第二设备中的任一个或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以从它们接收所采集到的输入信号。
图11图示了根据本申请实施例的电子设备的框图。
如图11所示,电子设备10包括一个或多个处理器11和存储器12。
处理器11可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备10中的其他组件以执行期望的功能。
存储器12可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器11可以运行所述程序指令,以实现上文所述的本申请的各个实施例的基于FPGA的数据传输方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
在一个示例中,电子设备10还可以包括:输入装置13和输出装置14,这些组件通过总线***和/或其他形式的连接机构(未示出)互连。
在该电子设备是单机设备时,该输入装置13可以是通信网络连接器,用于从第一设备和第二设备接收所采集的输入信号。
此外,该输入装置13还可以包括例如键盘、鼠标等等。
该输出装置14可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置14可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图11中仅示出了该电子设备10中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备10还可以包括任何其他适当的组件。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序用于执行本申请提供的实施例所述的基于FPGA的数据传输方法。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (10)
1.一种基于FPGA的数据传输***,其特征在于,包括:
主机设备;
现场可编程门阵列设备,所述现场可编程门阵列设备装载在所述主机设备中,所述现场可编程门阵列设备与所述主机设备通信连接,所述现场可编程门阵列设备与远端的远程内存直接访问设备连接;
其中,所述现场可编程门阵列设备设有共享内存区,所述现场可编程门阵列设备、所述主机设备均从所述共享内存区中读取或写入数据;
所述现场可编程门阵列设备还包括:
XDMA模块,所述XDMA模块与所述主机设备连接,所述XDMA模块构造为完成与所述主机设备的控制交互和数据传递;
mb_xdma_handshake模块,所述mb_xdma_handshake模块构造为实现控制命令通信;所述mb_xdma_handshake模块包括块RAM,所述块RAM用于构成所述共享内存区;
双倍速率同步动态随机存储器模块,所述双倍速率同步动态随机存储器模块构成所述共享内存区。
2.根据权利要求1所述的基于FPGA的数据传输***,其特征在于,所述现场可编程门阵列设备包括:
密文分组链接消息认证码模块,所述密文分组链接消息认证码模块与以太网连接,所述密文分组链接消息认证码模块构造为传出以太网数据包;
数据包过滤器模块,所述数据包过滤器模块与所述密文分组链接消息认证码模块连接,所述数据包过滤器模块构造为将所述以太网数据包分为RoCE v2协议包和非RoCE v2协议包;
ERNIC模块,所述ERNIC模块与所述数据包过滤器模块连接,所述ERNIC模块构造为解析所述RoCE v2协议包;
AXI DMA模块,所述AXI DMA模块与所述ERNIC模块连接,所述AXI DMA模块构造为将所述ERNIC模块解析出来的数据写入至所述共享内存区中;
软核处理器,所述软核处理器与所述密文分组链接消息认证码模块连接。
3.根据权利要求2所述的基于FPGA的数据传输***,其特征在于,所述mb_xdma_handshake模块与所述软核处理器连接。
4.根据权利要求1所述的基于FPGA的数据传输***,其特征在于,所述现场可编程门阵列设备与所述主机设备通过PCIe总线连接,所述现场可编程门阵列设备通过QSFP接口与远端的所述远程内存直接访问设备连接。
5.一种基于FPGA的数据传输方法,适用于权利要求1-4中任一项所述的基于FPGA的数据传输***,其特征在于,所述基于FPGA的数据传输方法以所述现场可编程门阵列设备作为客户端,远端的远程内存直接访问设备作为服务器端,所述现场可编程门阵列设备与主机设备通信连接,所述基于FPGA的数据传输方法包括:
所述现场可编程门阵列设备读取当前共享内存区中的数据;
当所述共享内存区中的数据表示有传输任务时,所述现场可编程门阵列设备解析当前共享内存区中的数据,获取操作命令和待传输的数据;其中,所述操作命令和待传输的数据来自所述主机设备;
根据所述操作命令,所述现场可编程门阵列设备向所述客户端发送待传输的数据;
发送数据完毕后,所述现场可编程门阵列设备向所述共享内存区中写入通信结束信息,并向所述主机设备发送本次待传输的数据传输完成的信号。
6.根据权利要求5所述的基于FPGA的数据传输方法,其特征在于,在所述现场可编程门阵列设备读取当前共享内存区中的数据之前,所述基于FPGA的数据传输方法还包括:
所述现场可编程门阵列设备清除所述共享内存区中的数据。
7.一种基于FPGA的数据传输方法,适用于权利要求1-4中任一项所述的基于FPGA的数据传输***,其特征在于,所述基于FPGA的数据传输方法以主机设备作为客户端,且现场可编程门阵列设备与所述主机设备通信连接,远端的远程内存直接访问设备作为服务器端,所述基于FPGA的数据传输方法包括:
所述主机设备从现场可编程门阵列设备的共享内存区读取数据;
当所述数据表示所述现场可编程门阵列设备确定接收待传输的数据时,将所述待传输的数据存储至所述现场可编程门阵列设备的所述共享内存区中;
通知所述现场可编程门阵列设备从所述共享内存区中读取所述待传输的数据;
获取所述现场可编程门阵列设备发送的本次待传输的数据传输完成的信号。
8.一种基于FPGA的数据传输方法,适用于权利要求1-4中任一项所述的基于FPGA的数据传输***,其特征在于,所述基于FPGA的数据传输方法以所述现场可编程门阵列设备作为服务器端,远端的远程内存直接访问设备作为客户端,所述现场可编程门阵列设备与主机设备通信连接,所述基于FPGA的数据传输方法包括:
所述现场可编程门阵列设备监听所述客户端的连接请求;
当所述客户端发起连接请求时,所述现场可编程门阵列设备接收所述客户端的客户端数据;
所述现场可编程门阵列设备将所述客户端数据存储至所述现场可编程门阵列设备的共享内存区;
所述现场可编程门阵列设备通知所述主机设备开始接收所述客户端数据;
当所述现场可编程门阵列设备接收到所述主机设备发送的接收完成的信号时,继续监听所述客户端的连接请求。
9.根据权利要求8所述的基于FPGA的数据传输方法,其特征在于,所述当所述客户端发起连接请求时,所述现场可编程门阵列设备接收所述客户端的客户端数据之后,所述基于FPGA的数据传输方法还包括:
所述现场可编程门阵列设备解析所述客户端数据,获得操作命令;
所述现场可编程门阵列设备将所述操作命令通过所述共享内存区传送给所述主机设备;
所述现场可编程门阵列设备从所述共享内存区中获取所述主机设备基于所述操作命令存储的待传送数据;
将所述待传送数据发送至所述客户端。
10.一种基于FPGA的数据传输方法,适用于权利要求1-4中任一项所述的基于FPGA的数据传输***,其特征在于,所述基于FPGA的数据传输方法以主机设备作为服务器端,且现场可编程门阵列设备与所述主机设备通信连接,远端的远程内存直接访问设备作为客户端,所述基于FPGA的数据传输方法包括:
所述主机设备从现场可编程门阵列设备的共享内存区读取数据;
当所述主机设备确定所述数据中存在待传输的数据时,所述主机设备从所述共享内存区中拷贝所述待传输的数据;
当拷贝完成时,所述主机设备向所述现场可编程门阵列设备发送接收完成的信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310854194.0A CN116594951B (zh) | 2023-07-13 | 2023-07-13 | 一种基于fpga的数据传输***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310854194.0A CN116594951B (zh) | 2023-07-13 | 2023-07-13 | 一种基于fpga的数据传输***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116594951A CN116594951A (zh) | 2023-08-15 |
CN116594951B true CN116594951B (zh) | 2023-09-26 |
Family
ID=87599356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310854194.0A Active CN116594951B (zh) | 2023-07-13 | 2023-07-13 | 一种基于fpga的数据传输***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116594951B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108989317A (zh) * | 2018-07-26 | 2018-12-11 | 浪潮(北京)电子信息产业有限公司 | 一种基于FPGA的RoCE网卡数据传输方法及网卡 |
CN110619595A (zh) * | 2019-09-17 | 2019-12-27 | 华中科技大学 | 一种基于多fpga加速器互联的图计算优化方法 |
CN112099940A (zh) * | 2016-08-26 | 2020-12-18 | 华为技术有限公司 | 实现硬件加速处理的方法、设备和*** |
CN113326154A (zh) * | 2021-06-28 | 2021-08-31 | 深信服科技股份有限公司 | 连接管理方法、装置、电子设备和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11704059B2 (en) * | 2020-02-07 | 2023-07-18 | Samsung Electronics Co., Ltd. | Remote direct attached multiple storage function storage device |
-
2023
- 2023-07-13 CN CN202310854194.0A patent/CN116594951B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112099940A (zh) * | 2016-08-26 | 2020-12-18 | 华为技术有限公司 | 实现硬件加速处理的方法、设备和*** |
CN108989317A (zh) * | 2018-07-26 | 2018-12-11 | 浪潮(北京)电子信息产业有限公司 | 一种基于FPGA的RoCE网卡数据传输方法及网卡 |
CN110619595A (zh) * | 2019-09-17 | 2019-12-27 | 华中科技大学 | 一种基于多fpga加速器互联的图计算优化方法 |
CN113326154A (zh) * | 2021-06-28 | 2021-08-31 | 深信服科技股份有限公司 | 连接管理方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116594951A (zh) | 2023-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106951388B (zh) | 一种基于PCIe的DMA数据传输方法及*** | |
CN107203484B (zh) | 一种基于FPGA的PCIe与SRIO总线桥接*** | |
CN103902486B (zh) | 一种远端直接内存访问实现方法、装置及*** | |
WO2017084400A1 (zh) | 一种NVMe网络化存储的实现方法、终端、服务器及*** | |
CN112256601B (zh) | 数据存取控制方法、嵌入式存储***及嵌入式设备 | |
CN108132897B (zh) | 一种基于zynq平台软核的srio控制器 | |
KR101720134B1 (ko) | 버스 브리지 장치 | |
WO2018120780A1 (zh) | PCIe中断方法和*** | |
CN114003392B (zh) | 一种数据加速计算方法及相关装置 | |
JP4837659B2 (ja) | 分割トランザクションを処理するためのバス・コントローラ | |
CN114253740A (zh) | 基于Linux内核的协议栈数据传输方法及装置 | |
US12034604B2 (en) | MQTT protocol simulation method and simulation device | |
CN112947857B (zh) | 一种数据搬移方法、装置、设备及计算机可读存储介质 | |
CN102207920B (zh) | 一种bvci总线到ahb总线的转换桥 | |
CN109634901A (zh) | 一种基于uart的数据传输***及其控制方法 | |
US7383372B2 (en) | Bus system, station for use in a bus system, and bus interface | |
US20160077986A1 (en) | Electronic apparatus providing real-time switching and sharing of usb electronic devices among hosts | |
CN116225992A (zh) | 一种支持虚拟化仿真设备的NVMe验证平台及方法 | |
JP2007501472A (ja) | 転送ディスクリプタ用メモリを備えるusbホストコントローラ | |
US20140075063A1 (en) | Smart device with no AP | |
CN116594951B (zh) | 一种基于fpga的数据传输***及方法 | |
KR20120134918A (ko) | 복수의 프로세서를 포함하는 전자 장치 | |
JP2008502977A (ja) | バス・コントローラのための割り込み方式 | |
CN111506461A (zh) | 一种基于总线、用于测试的反压模块及其实现方法 | |
JP2609078B2 (ja) | バスインタフェースユニットを利用する集中管理システム |
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 |