CN109033004B - 一种基于Aurora总线的双机内存数据共享系统 - Google Patents

一种基于Aurora总线的双机内存数据共享系统 Download PDF

Info

Publication number
CN109033004B
CN109033004B CN201810977787.5A CN201810977787A CN109033004B CN 109033004 B CN109033004 B CN 109033004B CN 201810977787 A CN201810977787 A CN 201810977787A CN 109033004 B CN109033004 B CN 109033004B
Authority
CN
China
Prior art keywords
address
aurora
data
machine
bus
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
Application number
CN201810977787.5A
Other languages
English (en)
Other versions
CN109033004A (zh
Inventor
王啸林
卢秋实
张小佩
阎哲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Computer Technology and Applications
Original Assignee
Beijing Institute of Computer Technology and Applications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Computer Technology and Applications filed Critical Beijing Institute of Computer Technology and Applications
Priority to CN201810977787.5A priority Critical patent/CN109033004B/zh
Publication of CN109033004A publication Critical patent/CN109033004A/zh
Application granted granted Critical
Publication of CN109033004B publication Critical patent/CN109033004B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port

Landscapes

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

Abstract

本发明涉及一种基于Aurora总线的双机内存数据共享系统,涉及数据共享技术领域。本发明的方案采用Xilinx提供的PCIe总线IP核与Aurora总线IP核配合本方案着重设计的Aurora传输层协议映射模块和Aurora链路管理模块实现了双机系统内存数据共享。本发明的方案中对数据链路层Aurora总线进行了传输层包装,实现了CPU地址域域共享虚拟地址域的映射,并设计了Aurora数据包格式和解析规则,完成了双机之间内存地址空间的透明映射。

Description

一种基于Aurora总线的双机内存数据共享系统
技术领域
本发明涉及数据共享技术领域,具体涉及一种基于Aurora总线的双机内存数据共享系统。
背景技术
PCIe总线是目前在各类计算机中大规模应用的一种高速串行局部总线。作为连接Cache和主存储器的系统总线的延伸,其主要功能是连接外部设备。作为传统PCI总线的升级,PCIe在兼容PCI总线的同时,大大提升了数据传输速率与效率,更能有效地保证传输的可靠性。
然而PCIe总线是基于一种树形的拓补结构,并不适合在双机系统中实现点对点对等通信以及内存数据共享等应用。Aurora是Xilinx公司于2002年首次提出的一种可裁剪的、轻量级的、数据链路层的点对点高速串行总线协议,专门针对FPGA之间的高速数据通信。相比于涵盖至传输层的、并适合于点对高性能但价格不菲的SRIO总线,Aurora总线具有开源免费、速率配置灵活的特点。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何设计一种基于PCIe总线DMA传输与Aurora总线的双机系统中的数据共享系统。
(二)技术方案
为了解决上述技术问题,本发明提供了一种基于Aurora总线的双机内存数据共享系统,包括:PCIe总线IP核、PCIe-AXI总线桥接模块、AXI总线互联模块,DMA控制器模块,Aurora传输层协议映射模块、Aurora总线链路管理模块以及Aurora总线接口IP核;
其中,所述PCIe总线IP核用于与上游设备的CPU进行数据交互,收发PCIe总线TLP;
所述PCIe-AXI总线桥接模块用于处理所述TLP,将上游设备发来的数据包转换为AXI4总线事务,将内部的AXI4总线事务转换为PCIe数据包TLP,发送给上游设备的CPU;
所述AXI总线互联模块用于系统内部AXI总线事务的处理、路由转发,实现系统中主从设备之间不同时钟域、不同数据位宽,以及不同接口协议(AXI-full和AXI-lite)之间的匹配,为系统内各模块提供互联的通路;
所述DMA控制器模块作为PCIe EP中的bus master,在CPU内存与本系统内部Aurora传输层协议映射模块之间进行数据搬运,DMA控制器模块支持Scatter-Gather模式,按照约定的模式处理CPU维护的缓存描述符链表,并搬运数据缓存之间的数据;
Aurora传输层协议映射模块用于实现本发明中为Aurora总线定义的用于实现双机系统内存数据共享的传输层协议功能;
所述Aurora总线链路管理模块用于将上层Aurora传输层协议映射模块与下层Aurora总线接口IP核之间进行数据通路互联,以及基于Aurora总线的自然流量控制NFC和用户流量控制UFC功能实现数据流量控制与中断消息交互。
优选地,所述Aurora传输层协议映射模块6中结合数据负载,即双机间用于共享的数据和Aurora传输层协议映射模块6中的配置寄存器,产生传输层包Aurora_TLP,经由Aurora总线链路管理模块7送入Aurora总线接口IP核8发出;并处理收到的Aurora_TLP。
优选地,Aurora总线链路管理模块具体用于采用Aurora总线支持的NFC实现链路的流量控制:当接收方的接收数据缓存占用超过寄存器中配置的阈值后,向对端发送XOFFNFC消息,强制发送方关闭发送,待发送的数据阻塞在发送方的发送缓存,当接收方的数据缓存数据被取走,占用量下降到寄存器中配置的阈值之下后,向发送方发送XON NFC消息,打开发送,使得发送方发送数据缓存中的数据得以继续发送。
优选地,所述Aurora总线链路管理模块具体用于采用Aurora总线支持的UFC实现中断的交互:发送方CPU向指定寄存器的写操作将被转换为Aurora UFC消息被发送出去,接收方接收到UFC消息后,会将UFC消息映射为请求,向CPU上报中断。
本发明还提供了一种利用所述的系统实现本机将其内存一地址段的数据写入远端内存一地址段的方法,首先在该方法中做如下定义:CPU地址域,指单机CPU能够访问到的地址范围,包括通过PCIe总线能够访问到的BAR空间;共享虚拟地址域:指CPU之间进行共享数据时可主动将自己内部的数据通过直接读写或PCIe DMA的方式向远端写出或者从外部将数据读入的地址,这种读或写请求的目标地址落在一地址范围内,会被本系统以整体偏移的方式转换,映射到对双机含义统一的共享虚拟地址域,这个地址范围被称为OutboundWindow;反之,一方主动发起读写请求,读写请求被映射到共享虚拟地址域中的一段地址空间,则会被接收方的FPGA以类似的整体偏移方式映射到接收方CPU域的一段地址空间;对接收方来说,共享虚拟地址域空间中的这段地址空间被称为Inbound Window;
本机A机将其内存一地址段X的数据写入远端B机内存一地址段Y的过程为:首先A机设置Outbound Window参数,B机设置Inbound Window参数,配置A机CPU域地址X到共享虚拟地址域Z的转换关系和共享虚拟地址域Z到B机CPU地址域Y的转换关系;若A机采用直接访问的方式向B机写数据,则向远端写出操作的AXI总线事务由CPU经过PCIe总线发出,目标地址应落到Aurora传输层协议映射模块中设置的Outbound Window地址范围,经过Aurora传输层协议映射模块转换为共享虚拟地址域中的地址,之后将转换后的地址域数据负载及长度和寄存器中配置的包格式信息组成Aurora_TLP,送往Aurora总线接口IP核发往B机;若A机采用DMA的方式向远端写出数据,则DMA控制器模块中设置的源地址为A机CPU域内存中数据负载所在的地址,目标地址为Outbound Window中的地址范围,此时实际远端写出操作的AXI总线事务不再由CPU通过PCIe总线发出,而是由DMA控制器模块发出到Aurora传输层协议映射模块,并转换出Aurora_TLP,进而发送到B机。
本发明又提供了一种利用所述的系统实现本机使用其CPU地址域从远端一地址段读取数据的过程的方法,首先在该方法中做如下定义:CPU地址域,指单机CPU能够访问到的地址范围,包括通过PCIe总线能够访问到的BAR空间;共享虚拟地址域:指CPU之间进行共享数据时可主动将自己内部的数据通过直接读写或PCIe DMA的方式向远端写出或者从外部将数据读入的地址,这种读或写请求的目标地址落在一地址范围内,会被本系统以整体偏移的方式转换,映射到对双机含义统一的共享虚拟地址域,这个地址范围被称为OutboundWindow;反之,一方主动发起读写请求,读写请求被映射到共享虚拟地址域中的一段地址空间,则会被接收方的FPGA以类似的整体偏移方式映射到接收方CPU域的一段地址空间;对接收方来说,共享虚拟地址域空间中的这段地址空间被称为Inbound Window;
本机A机使用其CPU地址域X从远端B机一地址段Y读取数据的过程为:首先A机设置Outbound Window参数,B机设置Inbound Window参数,配置A机CPU域地址X到共享虚拟地址域Z的转换关系和共享虚拟地址域Z到B机CPU地址域Y的转换关系;若A机采用直接访问的方式从B机读数据,则向远端发出的读取请求AXI总线事务由CPU经过PCIe总线发出,目标地址应落到Aurora传输层协议映射模块中设置的Outbound Window地址范围,经过Aurora传输层协议映射模块转换为共享虚拟地址域中的地址,之后将转换后的地址域数据负载及长度和寄存器中配置的包格式信息组成NREAD格式的Aurora_TLP,送往Aurora总线接口IP核发往B机,等待B机的响应(RESPONSE格式Aurora_TLP);若A机采用DMA的方式从远端B机读取数据,则DMA控制器模块中设置的源地址为Outbound Window中的地址范围,目标地址为A机CPU域目标数据地址X,此时实际远端读请求对应的AXI总线事务不再有CPU通过PCIe总线发出,而是由DMA控制器模块发出到Aurora传输层协议映射模块,并转换出Aurora_TLP,进而发送到B机等待B机的响应。
本发明还提供了一种利用所述的系统实现本机接收远端向其CPU地址域中地址段写入数据的过程的方法,首先在该方法中做如下定义:CPU地址域,指单机CPU能够访问到的地址范围,包括通过PCIe总线能够访问到的BAR空间;共享虚拟地址域:指CPU之间进行共享数据时可主动将自己内部的数据通过直接读写或PCIe DMA的方式向远端写出或者从外部将数据读入的地址,这种读或写请求的目标地址落在一地址范围内,会被本系统以整体偏移的方式转换,映射到对双机含义统一的共享虚拟地址域,这个地址范围被称为OutboundWindow;反之,一方主动发起读写请求,读写请求被映射到共享虚拟地址域中的一段地址空间,则会被接收方的FPGA以类似的整体偏移方式映射到接收方CPU域的一段地址空间;对接收方来说,共享虚拟地址域空间中的这段地址空间被称为Inbound Window;
本机B机接收远端A机向其CPU地址域中地址段Y写入数据的过程为:首先B机设置Inbound Window参数;Aurora传输层协议映射模块收到Aurora_TLP后,根据InboundWindow参数将TLP共享虚拟地址域的地址转换为B机CPU域地址,之后将Aurora_TLP拆分为一个或多个AXI总线写事务,依次经过AXI总线互联模块,PCIe-AXI总线桥接模块,PCIe总线IP核写入B机内存。
本发明还提供了一种利用所述的系统实现本机接收远端从其CPU地址域中地址段中读取数据的过程的方法,首先在该方法中做如下定义:CPU地址域,指单机CPU能够访问到的地址范围,包括通过PCIe总线能够访问到的BAR空间;共享虚拟地址域:指CPU之间进行共享数据时可主动将自己内部的数据通过直接读写或PCIe DMA的方式向远端写出或者从外部将数据读入的地址,这种读或写请求的目标地址落在一地址范围内,会被本系统以整体偏移的方式转换,映射到对双机含义统一的共享虚拟地址域,这个地址范围被称为Outbound Window;反之,一方主动发起读写请求,读写请求被映射到共享虚拟地址域中的一段地址空间,则会被接收方的FPGA以类似的整体偏移方式映射到接收方CPU域的一段地址空间;对接收方来说,共享虚拟地址域空间中的这段地址空间被称为Inbound Window;
本机B机接收远端A机从其CPU地址域中地址段Y中读取数据的过程为:首先B机设置Inbound Window参数;Aurora传输层协议映射模块收到Aurora_TLP后,根据InboundWindow参数将TLP共享虚拟地址域的地址转换为B机CPU域地址,之后将Aurora_TLP拆分为一个或多个AXI总线读事务,依次经过AXI总线互联模块,PCIe-AXI总线桥接模块,PCIe总线IP核发送给CPU,从内存中读取数据,并将数据重组为RESPONSE Aurora_TLP,并通过Aurora总线接口IP核返回。
(三)有益效果
本发明的方案采用Xilinx提供的PCIe总线IP核与Aurora总线IP核配合本方案着重设计的Aurora传输层协议映射模块和Aurora链路管理模块实现了双机系统内存数据共享。本发明的方案中对数据链路层Aurora总线进行了传输层包装,实现了CPU地址域域共享虚拟地址域的映射,并设计了Aurora数据包格式和解析规则,完成了双机之间内存地址空间的透明映射。本发明的方案采用了免费开源的Aurora总线技术,与采用价格不菲的SRIO实现双机点对点通信、内存数据共享的方案相比,本发明的方案提出的系统能够满足双机之间内存数据共享的需求,同时具备了低成本的特点和能够灵活裁剪的特性:在最低配置的条件下,本发明的方案可在Xilinx Spartan6FPGA平台实现,当对通信带宽要求提升时,可采用更高配置的FPGA实现本方案,达到更高的链路宽度与链路速度。
附图说明
图1是本发明的一种基于Aurora总线的双机内存数据共享系统示意图;
图2是利用本发明的系统实现的CPU向远端写数据工作流程图;
图3是利用本发明的系统实现的CPU从远端读取数据工作流程图;
图4是利用本发明的系统实现的系统响应远端写入数据工作流程图;
图5是利用本发明的系统实现的系统响应远端读取数据工作流程图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
FPGA是一种可编程器件,接口极为灵活,通过编程可以在芯片上实现PCIe总线接口及Aurora总线接口与外界通信。相比于专用的协议芯片,其功能可以按照需求进行裁剪或扩展。可以用于实现两种总线之间的连接功能,并基于此种架构实现双机系统间数据共享。在满足性能要求的前提下,可对系统功能进行灵活裁剪、能够提高系统集成度,控制成本。本发明就是提供一种利用FPGA实现的基于PCIe总线DMA传输与Aurora总线的双机系统中的数据共享系统。
本发明为一种采用FPGA平台设计的,基于PCIe总线DMA传输技术与Aurora总线技术的双机系统中实现数据共享的系统。图1是本设计方案结构示意图。其中包括:PCIe总线IP核2、PCIe-AXI总线桥接模块3、AXI总线互联模块4,DMA控制器模块5,Aurora传输层协议映射模块6、Aurora总线链路管理模块7以及Aurora总线接口IP核8。
其中,所述PCIe总线IP核2用于与上游设备的CPU 1进行数据交互,收发PCIe总线TLP。
所述PCIe-AXI总线桥接模块3用于处理所述TLP,将上游设备发来的数据包转换为AXI4总线事务,将内部的AXI4总线事务转换为PCIe数据包TLP,发送给上游设备的CPU 1。
所述AXI总线互联模块4用于系统内部AXI总线事务的处理、路由转发,实现系统中主从设备之间不同时钟域、不同数据位宽,以及不同接口协议(AXI-full和AXI-lite)之间的匹配,为系统内各模块提供互联的通路。
所述DMA控制器模块5作为PCIe EP中的bus master,在CPU内存与本系统内部Aurora传输层协议映射模块6之间进行数据搬运,DMA控制器模块5支持Scatter-Gather模式,按照约定的模式处理CPU维护的缓存描述符链表,并搬运数据缓存之间的数据;
Aurora传输层协议映射模块6用于实现本发明中为Aurora总线定义的用于实现双机系统内存数据共享的传输层协议功能。因为Aurora总线是一种数据链路层协议,只关心点到点的数据传输,而不关心所传输数据的具体内容;因而为了实现特定的功能,本发明系统中针对需求定义了传输层协议,在该Aurora传输层协议映射模块6中结合数据负载(即双机间用于共享的数据)和Aurora传输层协议映射模块6中的配置寄存器,产生传输层包(为了和所述PCIe总线TLP进行区分,以下简称Aurora_TLP),经由Aurora总线链路管理模块7送入Aurora总线接口IP核8发出;并处理收到的Aurora_TLP。这里TLP的格式采用了同样适合点对点对等通信的SRIO总线IO逻辑包的包格式:N_WRITE,N_WRITER,S_WRITE,NREAD,RESOPNSE。
Aurora总线链路管理模块7用于将上层Aurora传输层协议映射模块6与下层Aurora总线接口IP核8之间进行数据通路互联,以及基于Aurora总线的NFC(自然流量控制)和UFC(用户流量控制)功能实现数据流量控制与中断消息交互。
本发明的系统针对双机之间共享内存数据设计,其核心功能在于总线协议以及地址之间的映射。为方便叙述其应用,首先提出两个地址域的概念:CPU地址域,是指单机CPU能够访问到的地址范围(包括通过PCIe总线能够访问到的BAR空间);共享虚拟地址域:是指CPU之间进行共享数据时可以主动将自己内部的数据通过直接读写或PCIe DMA的方式向远端写出或者从外部将数据读入的地址。这种读或写请求的目标地址落在某一地址范围内,会被本系统以整体偏移的方式转换,映射到对双机含义统一的共享虚拟地址域,这个地址范围被称为Outbound Window。反之,一方主动发起读写请求,读写请求被映射到共享虚拟地址域中的某一段地址空间,则会被接收方的FPGA以类似的整体偏移方式映射到接收方CPU域的一段地址空间。对接收方来说,共享虚拟地址域空间中的这段地址空间被称为Inbound Window。通过设置Outbound Window和Inbound Window参数,双机系统实现共享内存数据。以下分别阐述不同应用场景下的本发明系统的工作流程:
如图2所述,A机将本机内存某地址段X的数据写入远端B机内存某一地址段Y的过程为:首先A机设置Outbound Window参数,B机设置Inbound Window参数,配置A机CPU域地址X到共享虚拟地址域Z的转换关系和共享虚拟地址域Z到B机CPU地址域Y的转换关系;若A机采用直接访问的方式向B机写数据,则向远端写出操作的AXI总线事务由CPU经过PCIe总线发出,目标地址应落到Aurora传输层协议映射模块6中设置的Outbound Window地址范围,经过Aurora传输层协议映射模块6转换为共享虚拟地址域中的地址,之后将转换后的地址域数据负载及长度和寄存器中配置的包格式信息组成Aurora_TLP,送往Aurora总线接口IP核8发往B机;若A机采用DMA的方式向远端写出数据,则DMA控制器模块5中设置的源地址为A机CPU域内存中数据负载所在的地址,目标地址为Outbound Window中的地址范围,此时实际远端写出操作的AXI总线事务不再由CPU通过PCIe总线发出,而是由DMA控制器模块5发出到Aurora传输层协议映射模块6,并转换出Aurora_TLP,进而发送到B机。
远端写出操作对应的Aurora_TLP包格式有三种,N_WRITE、N_WRITER和S_WRITE,三种包格式的含义及地址对其方式与SRIO总线相同,即S_WRITE包仅支持8字节对齐传输,而N_WRITE和N_WRITER支持一定程度的非对齐模式的传输,N_WRITER发出后需要对端进行应答。AXI总线与SRIO总线支持的非对齐传输形式不同,因而在转换时可能会发生拆包的行为,这一功能由Aurora传输层协议映射模块完成,按照支持的对齐方式,将一个AXI总线写事务拆分成多个Aurora_TLP,按照地址递增顺序,依次顺序传输。选择包格式的策略可以通过设置Aurora传输层协议映射模块的寄存器设置:全部采用N_WRITE和S_WRITE,应用该策略时,拆分后的Aurora_TLP只要满足8字节对其即转换为S_WRITE,否则使用N_WRITE;N_WRITE/S_WRITE配合末包N_WRITER,拆分后的最后一个Aurora_TLP采用N_WRITER格式传输,其他的包若满足8字节对齐则采用S_WRITE包传输,否则采用N_WRITE包传输;全部采用N_WRITER包,即所有Aurora_TLP均采用N_WRITER包传输。
如图3所述,A机使用本机CPU地址域X从远端B机某一地址段Y读取数据的过程为:首先A机设置Outbound Window参数,B机设置Inbound Window参数,配置A机CPU域地址X到共享虚拟地址域Z的转换关系和共享虚拟地址域Z到B机CPU地址域Y的转换关系;若A机采用直接访问的方式从B机读数据,则向远端发出的读取请求AXI总线事务由CPU经过PCIe总线发出,目标地址应落到Aurora传输层协议映射模块6中设置的Outbound Window地址范围,经过Aurora传输层协议映射模块6转换为共享虚拟地址域中的地址,之后将转换后的地址域数据负载及长度和寄存器中配置的包格式信息组成NREAD格式的Aurora_TLP,送往Aurora总线接口IP核发往B机,等待B机的响应(RESPONSE格式Aurora_TLP);若A机采用DMA的方式从远端B机读取数据,则DMA控制器模块5中设置的源地址为Outbound Window中的地址范围,目标地址为A机CPU域目标数据地址X,此时实际远端读请求对应的AXI总线事务不再有CPU通过PCIe总线发出,而是由DMA控制器模块5发出到Aurora传输层协议映射模块6,并转换出Aurora_TLP,进而发送到B机等待B机的响应(RESPONSE格式Aurora_TLP)。
Aurora传输层协议映射模块6对协议的转换过程中仍然涉及到对AXI数据包拆分的过程,此时接收B机的响应包时,能够将B机以乱序方式返回的RESPONSE Aurora_TLP中的数据负载按照包头中的TID字段进行重组。
如图4所示,B机接收远端A机向其CPU地址域中地址段Y写入数据的过程为:首先B机设置Inbound Window参数;Aurora传输层协议映射模块6收到Aurora_TLP后,根据Inbound Window参数将TLP共享虚拟地址域的地址转换为B机CPU域地址,之后将Aurora_TLP拆分为一个或多个AXI总线写事务,依次经过AXI总线互联模块4,PCIe-AXI总线桥接模块3,PCIe总线IP核2写入B机内存。
如图5所示,B机接收远端A机从其CPU地址域中地址段Y中读取数据的过程为:首先B机设置Inbound Window参数;Aurora传输层协议映射模块6收到Aurora_TLP后,根据Inbound Window参数将TLP共享虚拟地址域的地址转换为B机CPU域地址,之后将Aurora_TLP拆分为一个或多个AXI总线读事务,依次经过AXI总线互联模块4,PCIe-AXI总线桥接模块3,PCIe总线IP核2发送给CPU,从内存中读取数据,并将数据重组为RESPONSE Aurora_TLP,并通过Aurora总线接口IP核8返回。
Aurora总线链路管理模块7用于实现链路流量控制和双机之间中断交互,Aurora总线链路管理模块7具体用于采用Aurora总线支持的NFC(自然流量控制)实现链路的流量控制:当接收方的接收数据缓存占用超过寄存器中配置的阈值后,向对端发送XOFF NFC消息,强制发送方关闭发送,待发送的数据阻塞在发送方的发送缓存,当接收方的数据缓存数据被取走,占用量下降到寄存器中配置的阈值之下后,向发送方发送XON NFC消息,打开发送,使得发送方发送数据缓存中的数据得以继续发送。
Aurora总线链路管理模块7具体用于采用Aurora总线支持的UFC(用户流量控制)实现中断的交互:发送方CPU向指定寄存器的写操作将被转换为Aurora UFC消息被发送出去,接收方接收到UFC消息后,会将UFC消息映射为请求,向CPU上报中断。
可以看出,本发明的方案采用Xilinx提供的PCIe总线IP核与Aurora总线IP核配合本方案着重设计的Aurora传输层协议映射模块和Aurora链路管理模块实现了双机系统内存数据共享。本发明的方案中对数据链路层Aurora总线进行了传输层包装,实现了CPU地址域域共享虚拟地址域的映射,并设计了Aurora数据包格式和解析规则,完成了双机之间内存地址空间的透明映射。
本发明的方案采用了免费开源的Aurora总线技术,与采用价格不菲的SRIO实现双机点对点通信、内存数据共享的方案相比,本发明的方案提出的系统能够满足双机之间内存数据共享的需求,同时具备了低成本的特点和能够灵活裁剪的特性:在最低配置的条件下,本发明的方案可在Xilinx Spartan6FPGA平台实现(PCIe x1、2.5Gbps搭配Aurora x1、2.0Gbps),当对通信带宽要求提升时,可以采用更高配置的FPGA实现本方案,达到更高的链路宽度与链路速度。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (8)

1.一种基于Aurora总线的双机内存数据共享系统,其特征在于,包括:PCIe总线IP核、PCIe-AXI总线桥接模块、AXI总线互联模块,DMA控制器模块,Aurora传输层协议映射模块、Aurora总线链路管理模块以及Aurora总线接口IP核;
其中,所述PCIe总线 IP核用于与上游设备的CPU 进行数据交互,收发PCIe总线TLP;
所述PCIe-AXI总线桥接模块用于处理所述TLP,将上游设备发来的数据包转换为AXI4总线事务;将内部的AXI4总线事务转换为PCIe数据包TLP,发送给上游设备的CPU ;
所述AXI总线互联模块用于系统内部AXI总线事务的处理、路由转发,实现系统中主从设备之间不同时钟域、不同数据位宽,以及不同接口协议之间的匹配,为系统内各模块提供互联的通路;
所述DMA控制器模块作为PCIe EP中的bus master,在CPU内存与本系统内部Aurora传输层协议映射模块之间进行数据搬运,DMA控制器模块支持Scatter-Gather模式,按照约定的模式处理CPU维护的缓存描述符链表,并搬运数据缓存之间的数据;
Aurora传输层协议映射模块用于实现为Aurora总线定义的用于实现双机系统内存数据共享的传输层协议功能;
所述Aurora总线链路管理模块用于将上层Aurora传输层协议映射模块与下层Aurora总线接口IP核之间进行数据通路互联,以及基于Aurora总线的自然流量控制NFC和用户流量控制UFC功能实现数据流量控制与中断消息交互。
2.如权利要求1所述的系统,其特征在于,所述Aurora传输层协议映射模块(6)中结合数据负载,即双机间用于共享的数据和Aurora传输层协议映射模块(6)中的配置寄存器,产生传输层包Aurora_TLP,经由Aurora总线链路管理模块送入Aurora总线接口IP核(8)发出;并处理收到的Aurora_TLP。
3.如权利要求1所述的系统,其特征在于,Aurora总线链路管理模块具体用于采用Aurora总线支持的NFC实现链路的流量控制:当接收方的接收数据缓存占用超过寄存器中配置的阈值后,向对端发送XOFF NFC消息,强制发送方关闭发送,待发送的数据阻塞在发送方的发送缓存,当接收方的数据缓存数据被取走,占用量下降到寄存器中配置的阈值之下后,向发送方发送XON NFC消息,打开发送,使得发送方发送数据缓存中的数据得以继续发送。
4.如权利要求1所述的系统,其特征在于,所述Aurora总线链路管理模块具体用于采用Aurora总线支持的UFC实现中断的交互:发送方CPU向指定寄存器的写操作将被转换为Aurora UFC消息被发送出去,接收方接收到UFC消息后,会将UFC消息映射为请求,向CPU上报中断。
5.一种利用权利要求1至4中任一项所述的系统实现本机将其内存一地址段的数据写入远端内存一地址段的方法,其特征在于,
首先在该方法中做如下定义:CPU地址域,指单机CPU能够访问到的地址范围,包括通过PCIe总线能够访问到的BAR空间;共享虚拟地址域:指CPU之间进行共享数据时可主动将自己内部的数据通过直接读写或PCIe DMA的方式向远端写出或者从外部将数据读入的地址;这种读或写请求的目标地址落在一地址范围内,会被本系统以整体偏移的方式转换,映射到对双机含义统一的共享虚拟地址域,这个地址范围被称为Outbound Window;反之,一方主动发起读写请求,读写请求被映射到共享虚拟地址域中的一段地址空间,则会被接收方的FPGA以整体偏移方式映射到接收方CPU域的一段地址空间;对接收方来说,共享虚拟地址域空间中的这段地址空间被称为Inbound Window;
本机A机将其内存一地址段X的数据写入远端B机内存一地址段Y的过程为:首先A机设置Outbound Window参数,B机设置Inbound Window参数,配置A机CPU域地址X到共享虚拟地址域Z的转换关系和共享虚拟地址域Z到B机CPU地址域Y的转换关系;若A机采用直接访问的方式向B机写数据,则向远端写出操作的AXI总线事务由CPU经过PCIe总线发出,目标地址应落到Aurora传输层协议映射模块中设置的Outbound Window地址范围,经过Aurora传输层协议映射模块转换为共享虚拟地址域中的地址,之后将转换后的地址域数据负载及长度和寄存器中配置的包格式信息组成Aurora_TLP,送往Aurora总线接口IP核发往B机;若A机采用DMA的方式向远端写出数据,则DMA控制器模块中设置的源地址为A机CPU域内存中数据负载所在的地址,目标地址为Outbound Window中的地址范围,此时实际远端写出操作的AXI总线事务不再由CPU通过PCIe总线发出,而是由DMA控制器模块发出到Aurora传输层协议映射模块,并转换出Aurora_TLP,进而发送到B机。
6.一种利用权利要求1至4中任一项所述的系统实现本机使用其CPU地址域从远端一地址段读取数据的过程的方法,其特征在于,
首先在该方法中做如下定义:CPU地址域,指单机CPU能够访问到的地址范围,包括通过PCIe总线能够访问到的BAR空间;共享虚拟地址域:指CPU之间进行共享数据时可主动将自己内部的数据通过直接读写或PCIe DMA的方式向远端写出或者从外部将数据读入的地址;这种读或写请求的目标地址落在一地址范围内,会被本系统以整体偏移的方式转换,映射到对双机含义统一的共享虚拟地址域,这个地址范围被称为Outbound Window;反之,一方主动发起读写请求,读写请求被映射到共享虚拟地址域中的一段地址空间,则会被接收方的FPGA以整体偏移方式映射到接收方CPU域的一段地址空间;对接收方来说,共享虚拟地址域空间中的这段地址空间被称为Inbound Window;
本机A机使用其CPU地址域X从远端B机一地址段Y读取数据的过程为:首先A机设置Outbound Window参数,B机设置Inbound Window参数,配置A机CPU域地址X到共享虚拟地址域Z的转换关系和共享虚拟地址域Z到B机CPU地址域Y的转换关系;若A机采用直接访问的方式从B机读数据,则向远端发出的读取请求AXI总线事务由CPU经过PCIe总线发出,目标地址应落到Aurora传输层协议映射模块中设置的Outbound Window地址范围,经过Aurora传输层协议映射模块转换为共享虚拟地址域中的地址,之后将转换后的地址域数据负载及长度和寄存器中配置的包格式信息组成NREAD格式的Aurora_TLP,送往Aurora总线接口IP核发往B机,等待B机的响应;若A机采用DMA的方式从远端B机读取数据,则DMA控制器模块中设置的源地址为Outbound Window中的地址范围,目标地址为A机CPU域目标数据地址X,此时实际远端读请求对应的AXI总线事务不再由CPU通过PCIe总线发出,而是由DMA控制器模块发出到Aurora传输层协议映射模块,并转换出Aurora_TLP,进而发送到B机等待B机的响应。
7.一种利用权利要求1至4中任一项所述的系统实现本机接收远端向其CPU地址域中地址段写入数据的过程的方法,其特征在于,
首先在该方法中做如下定义:CPU地址域,指单机CPU能够访问到的地址范围,包括通过PCIe总线能够访问到的BAR空间;共享虚拟地址域:指CPU之间进行共享数据时可主动将自己内部的数据通过直接读写或PCIe DMA的方式向远端写出或者从外部将数据读入的地址;这种读或写请求的目标地址落在一地址范围内,会被本系统以整体偏移的方式转换,映射到对双机含义统一的共享虚拟地址域,这个地址范围被称为Outbound Window;反之,一方主动发起读写请求,读写请求被映射到共享虚拟地址域中的一段地址空间,则会被接收方的FPGA以整体偏移方式映射到接收方CPU域的一段地址空间;对接收方来说,共享虚拟地址域空间中的这段地址空间被称为Inbound Window;
本机B机接收远端A机向其CPU地址域中地址段Y写入数据的过程为:首先B机设置Inbound Window参数;Aurora传输层协议映射模块收到Aurora_TLP后,根据InboundWindow参数将TLP共享虚拟地址域的地址转换为B机CPU域地址,之后将Aurora_TLP拆分为一个或多个AXI总线写事务,依次经过AXI总线互联模块,PCIe-AXI总线桥接模块,PCIe总线IP核写入B机内存。
8.一种利用权利要求1至4中任一项所述的系统实现本机接收远端从其CPU地址域中地址段中读取数据的过程的方法,其特征在于,
首先在该方法中做如下定义:CPU地址域,指单机CPU能够访问到的地址范围,包括通过PCIe总线能够访问到的BAR空间;共享虚拟地址域:指CPU之间进行共享数据时可主动将自己内部的数据通过直接读写或PCIe DMA的方式向远端写出或者从外部将数据读入的地址;这种读或写请求的目标地址落在一地址范围内,会被本系统以整体偏移的方式转换,映射到对双机含义统一的共享虚拟地址域,这个地址范围被称为Outbound Window;反之,一方主动发起读写请求,读写请求被映射到共享虚拟地址域中的一段地址空间,则会被接收方的FPGA以整体偏移方式映射到接收方CPU域的一段地址空间;对接收方来说,共享虚拟地址域空间中的这段地址空间被称为Inbound Window;
本机B机接收远端A机从其CPU地址域中地址段Y中读取数据的过程为:首先B机设置Inbound Window参数;Aurora传输层协议映射模块收到Aurora_TLP后,根据InboundWindow参数将TLP共享虚拟地址域的地址转换为B机CPU域地址,之后将Aurora_TLP拆分为一个或多个AXI总线读事务,依次经过AXI总线互联模块,PCIe-AXI总线桥接模块,PCIe总线IP核发送给CPU,从内存中读取数据,并将数据重组为RESPONSE Aurora_TLP,并通过Aurora总线接口IP核返回。
CN201810977787.5A 2018-08-27 2018-08-27 一种基于Aurora总线的双机内存数据共享系统 Active CN109033004B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810977787.5A CN109033004B (zh) 2018-08-27 2018-08-27 一种基于Aurora总线的双机内存数据共享系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810977787.5A CN109033004B (zh) 2018-08-27 2018-08-27 一种基于Aurora总线的双机内存数据共享系统

Publications (2)

Publication Number Publication Date
CN109033004A CN109033004A (zh) 2018-12-18
CN109033004B true CN109033004B (zh) 2021-05-25

Family

ID=64627868

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810977787.5A Active CN109033004B (zh) 2018-08-27 2018-08-27 一种基于Aurora总线的双机内存数据共享系统

Country Status (1)

Country Link
CN (1) CN109033004B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110083568B (zh) * 2019-03-29 2021-07-13 海光信息技术股份有限公司 数据交换系统、数据交换命令路由方法、芯片及电子设备
CN111045817B (zh) * 2019-11-08 2023-09-26 瑞芯微电子股份有限公司 一种PCIe传输管理方法、系统和装置
CN111274180A (zh) * 2020-01-17 2020-06-12 济南浪潮高新科技投资发展有限公司 一种Aurora和Rapid IO接口转换装置
CN112069115B (zh) * 2020-09-18 2021-06-25 上海燧原科技有限公司 数据传输方法、设备及系统
CN112148651B (zh) * 2020-10-10 2022-05-03 中国人民解放军国防科技大学 一种增强型rapidio互联装置及设备
CN114385534A (zh) * 2020-10-19 2022-04-22 华为技术有限公司 一种数据处理的方法及装置
CN113341215B (zh) * 2021-05-06 2022-11-25 南方电网数字电网研究院有限公司 双芯智能电表
CN114610667B (zh) * 2022-05-10 2022-08-12 沐曦集成电路(上海)有限公司 复用数据总线装置和芯片
CN115357416B (zh) * 2022-10-19 2023-03-24 南京芯驰半导体科技有限公司 一种跨系统进行数据处理的方法及装置
CN115617722B (zh) * 2022-12-05 2023-03-07 成都博宇利华科技有限公司 实现多pcie设备共享dma链表的系统及方法
CN115827546B (zh) * 2023-02-15 2023-04-18 北京象帝先计算技术有限公司 PCIe设备、电子组件、电子设备及地址映射方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010068380A1 (en) * 2008-12-08 2010-06-17 Xilinx,Inc. Data storage system with removable memory module having parallel channels of dram memory and flash memory
CN103905793A (zh) * 2014-03-28 2014-07-02 中国科学院上海技术物理研究所 一种高速红外信号处理系统
CN104022828A (zh) * 2014-05-16 2014-09-03 天津大学 一种基于异步通信模式的光纤数据传输方法
CN106292409A (zh) * 2015-06-03 2017-01-04 国网智能电网研究院 一种基于fpga多速率光纤通讯的实时仿真系统及其仿真方法
CN106325097A (zh) * 2015-06-18 2017-01-11 国网智能电网研究院 一种多时间尺度混合实时数字仿真系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010068380A1 (en) * 2008-12-08 2010-06-17 Xilinx,Inc. Data storage system with removable memory module having parallel channels of dram memory and flash memory
CN103905793A (zh) * 2014-03-28 2014-07-02 中国科学院上海技术物理研究所 一种高速红外信号处理系统
CN104022828A (zh) * 2014-05-16 2014-09-03 天津大学 一种基于异步通信模式的光纤数据传输方法
CN106292409A (zh) * 2015-06-03 2017-01-04 国网智能电网研究院 一种基于fpga多速率光纤通讯的实时仿真系统及其仿真方法
CN106325097A (zh) * 2015-06-18 2017-01-11 国网智能电网研究院 一种多时间尺度混合实时数字仿真系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于Aurora协议的高速通信技术的研究;李维明;《集成电路应用》;20131206;第39卷(第12期);第37-40页 *
基于PCI_Express和Aurora协议高速光纤通信板卡的实现;王长清;《微计算机应用》;20100105;第31卷(第1期);第64-68页 *

Also Published As

Publication number Publication date
CN109033004A (zh) 2018-12-18

Similar Documents

Publication Publication Date Title
CN109033004B (zh) 一种基于Aurora总线的双机内存数据共享系统
AU2007278728B2 (en) Method and apparatus for distributing usb hub functions across a network
US10152441B2 (en) Host bus access by add-on devices via a network interface controller
US8571033B2 (en) Smart routing between peers in a point-to-point link based system
KR100675850B1 (ko) AXI 프로토콜을 적용한 NoC 시스템
US9448957B2 (en) Unified system area network and switch
US7606933B2 (en) Shared memory and high performance communication using interconnect tunneling
JP4410190B2 (ja) PCI−Express通信システム
US9430432B2 (en) Optimized multi-root input output virtualization aware switch
US20040151170A1 (en) Management of received data within host device using linked lists
US20050132089A1 (en) Directly connected low latency network and interface
US7596148B2 (en) Receiving data from virtual channels
WO2001018988A1 (en) Bridge between parallel buses over a packet-switched network
US20140095753A1 (en) Network interface controller with direct connection to host memory
CN105635176A (zh) 一种基于RapidIO的网络数据传输方法
EP2515241B1 (en) Unified system area network and switch
KR20170133236A (ko) PCIe 장치들에서의 고속 입출력을 위한 스토리지 시스템, 방법 및 장치
US7302505B2 (en) Receiver multi-protocol interface and applications thereof
US20040017813A1 (en) Transmitting data from a plurality of virtual channels via a multiple processor device
US6298409B1 (en) System for data and interrupt posting for computer devices
WO2022141250A1 (zh) 数据传输方法和相关装置
JPWO2015052854A1 (ja) トラフィック管理システムおよびトラフィック管理方法
CN117435538A (zh) 一种PCIe转SRIO的桥接系统
WO2015015652A1 (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