概述
在计算机系统中,数据交互通常面临速度与连通性的权衡。内存(RAM)读写速度快但封闭,以太网(Ethernet)连接性强但延迟高。反射内存(Reflective Memory)技术结合了两者优势,通过硬件实现多机间微秒级共享内存。
本文以 PCIE-5565 反射内存卡为例,深入分析其基于 FPGA 的底层架构及数据同步机制。
硬件架构解析
PCIE-5565 是一张基于 PCI Express 总线的高速实时通讯卡,核心特性为'写入即广播'。其内部逻辑可划分为三个区域:总线接口区、核心逻辑区(FPGA)、光纤收发区。
核心组件
- Main FPGA Core:整张卡的逻辑核心,通常为 Xilinx 或 Altera 高性能 FPGA 芯片。作为纯硬件逻辑电路,它不依赖操作系统指令流水线,处理速度达到时钟周期级,负责同时处理本地主机数据流和光纤网络数据流。
- On-board SDRAM:板载双口存储器(通常 128MB 或 256MB)。对 CPU 而言是普通物理内存地址,可通过 PCIe 映射直接读写;对 FPGA 而言是数据暂存基地。这种设计实现了传输的透明性。
数据同步流程
以下跟踪一个数据包从节点 A 到节点 B 的旅程,说明为何该过程不占用 CPU 资源。
假设在节点 A 执行 C++ 代码:
// pRefMem 为映射好的反射内存指针
*(int*)(pRefMem + 0x100) = 8888;
- CPU 写入 (Local Write):CPU 将数据
8888写入 PCIe 总线目标地址,随后立即释放总线控制权,无需调用驱动或封装协议包。 - FPGA 捕获 (Capture):FPGA 内部 PCIe 接口逻辑捕获写操作(地址
0x100,数据8888),并执行本地更新(写入板载 SDRAM)及触发发送。 - 数据传输 (Transmission):Packet Engine 生成极简数据帧(含 CRC 校验),经 SERDES 转换为串行光信号,通过光模块发送。速率可达 2.125Gbps。
- 全网同步 (Network Update):节点 B 的光模块接收信号,FPGA 读取数据并强制写入节点 B 的 SDRAM 对应地址。此过程节点 B 的 CPU 完全无感知,直到程序读取该地址时才发现数据已更新。
关键设计特性
独立 DMA 通道
支持 Direct Memory Access (DMA)。对于大体积数据(如图像),FPGA 可直接接管 PCIe 总线进行高速搬运(约 170 MByte/s),无需 CPU 逐字节移动,显著降低系统负载。
环形冗余与 Bypass
支持 Ring Topology(环形拓扑)。高档型号配备 Bypass 继电器,当检测到节点掉电或看门狗超时时,光口继电器闭合,光信号物理跳过故障节点,确保环网其他节点通信不中断。
动态包长度与 FIFO
Tx/Rx FIFO 作为蓄水池缓冲,解决 PCIe 总线与光纤速率不匹配问题。若写入过快,FIFO 暂存数据;若快满,通过流控机制通知主机降速,保证数据完整性。
总结
反射内存体系采用硬件驱动模式,区别于 TCP/IP 的软件驱动模式。CPU 仅需执行内存写入,后续的数据打包、校验、传输均由 FPGA 硬件逻辑完成。这种确定性(Determinism)和低 CPU 占用特性,使其适用于飞行模拟器、核电站控制等硬实时(Hard Real-Time)场景。


