当前位置: 首页 > news >正文

FPGA XDMA VS MMIO

PCIe XDMA vs BAR 直接映射(MMIO)速度结论

一句话总览

  1. 大块连续数据流(采集 / 回放 / 图像):XDMA 远快于 BAR 直接映射,带宽接近 PCIe 物理极限、CPU 占用极低;
  2. 极小数据包(寄存器读写、几字节控制指令):BAR MMIO 延迟更低、更快
  3. 读操作差距极大:BAR 读往返延迟高,XDMA 批量读碾压 MMIO。

一、两种方式底层原理

1. BAR 直接映射(MMIO/PIO)

把 FPGA 内部寄存器 / 片上 RAM 映射到主机虚拟地址,CPU 主动发起读写

  • 写:CPU store → PCIe MemWr Posted TLP,无需回复;
  • 读:CPU load → PCIe MemRd → FPGA 返回 CplD 完成包,CPU 阻塞等待往返;
  • 本质:CPU 逐字节 / 逐 Burst 搬运数据,每一笔访问都占用 CPU 流水线;
  • 内存属性:必须nocache/wc写合并,CPU 缓存失效,单次访问开销大。

2. XDMA(SG-DMA)

FPGA 内置硬件 DMA 引擎,绕过 CPU 直接访问主机系统内存

  1. CPU 仅下发描述符(源地址、长度、方向);
  2. FPGA 硬件自主发起 PCIe 读写大块数据;
  3. 传输完成仅发一次 MSI 中断通知 CPU;
  4. 支持分散聚集 SG,无需连续物理内存,大 Burst 打包,PCIe 链路利用率拉满。

二、核心性能对比(PCIe Gen3 x8 实测典型值)

表格

维度BAR 直接映射 (MMIO)XDMA SG-DMA
峰值带宽300~800MB/s,CPU 瓶颈,无法跑满 PCIe3.2~3.6GB/s,逼近 PCIe 理论上限 (4GB/s 单向)
CPU 占用极高(循环读写占用单核 100%)极低(<5%,仅下发描述符)
单次延迟 (小包)写~200ns;读~800~1200ns(往返)初始化描述符开销~1~3μs,小包吃亏
大块吞吐量延迟累积延迟极高,CPU 循环拖慢整体硬件流水线搬运,稳定低抖动
读性能极差,每笔读都等返回包,带宽暴跌批量读硬件预取,读写对称带宽
适用传输长度≤1KB 寄存器、少量控制命令≥4KB,MB/GB 级连续数据流(雷达 / 图像 / 采集)
零拷贝能力FPGA 侧内存有限,无法主机 DDR 直传完全零拷贝,FPGA ↔ 主机 DDR 直连

三、分场景详细速度分析

场景 1:大数据块(1MB+,最常用采集场景)

XDMA 速度是 BAR 映射的 4~10 倍

  • BAR 映射:CPU 循环 memcpy/AVX 写 MMIO 地址,每次写都触发 PCIe 小包 TLP,总线碎片化;CPU 持续占用,内存屏障、TLB 失效持续拖慢速度;
  • XDMA:硬件自动组超大 Burst TLP,填满 PCIe 链路;CPU 只需要一次 ioctl 下发任务,后台 DMA 并行传输,无 CPU 拷贝开销。 实测:Gen3 x8 传输 1GB 数据
  • BAR MMIO:约 1.2~1.8s
  • XDMA:0.25~0.3s

场景 2:极小数据包(1~64 字节,寄存器控制)

BAR MMIO 更快XDMA 需要配置 DMA 描述符、队列、中断,初始化开销远大于直接 MMIO 单次访问; 比如读写 32bit 状态寄存器,MMIO 仅几百 ns,XDMA 要微秒级启动开销。

场景 3:读操作(FPGA→主机取数据)

差距被放大:

  • BAR 读:每一次 load 都要等 PCIe 往返完成包,流水线阻塞,带宽甚至不足 100MB/s;
  • XDMA 读:硬件批量预取,一次描述符拉取整段内存,读写带宽几乎持平。

场景 4:非连续内存(零散 buffer)

XDMA 优势巨大:支持 SG 分散聚集,多段内存一次传输; BAR 映射只能连续访问,多段数据需要 CPU 分段拷贝,额外开销。

四、优缺点总结

BAR 直接映射(MMIO)

✅ 优点:

  • 小包控制延迟最低,驱动简单;
  • 无需 DMA 描述符、中断管理,适合简单寄存器交互; ❌ 缺点:
  • 大带宽完全拉胯,CPU 满载;
  • 读性能极差;
  • 只能访问 FPGA 片上 BAR 空间,不能直接操作主机大容量 DDR。

XDMA

✅ 优点:

  • 大块数据带宽天花板,释放 PCIe 全部性能;
  • CPU 占用极低,后台并行传输;
  • 支持主机 DDR ↔ FPGA 高速互通,零拷贝;
  • SG 支持碎片化内存,多通道并发; ❌ 缺点:
  • 极小数据包有固定启动开销;
  • FPGA 逻辑资源消耗更大,驱动逻辑复杂一点。

五、选型建议

  1. 高速采集、视频、雷达、大容量数据流→ 必选 XDMA;
  2. 仅寄存器读写、少量控制指令、小包交互→ 用 BAR MMIO;
  3. 混合系统:BAR 做命令控制,XDMA 走数据通路,两者配合最优。
http://www.jsqmd.com/news/1064987/

相关文章:

  • 恩施闺蜜游怎么选?李李团队李李带队只拼同频女生结伴小团 - 老张爱旅游
  • OpenCore Legacy Patcher:让老旧Mac重获新生的开源利器
  • 084、STM32项目分享开源:智能婴儿监护系统
  • RabbitMQ常见问题介绍
  • 构建MCP生态下AI应用安全防线:CASCADE三层防御架构解析与实践
  • 市值冲破万亿!智谱GLM-5.2开源即登顶,国产大模型诞生首个万亿标的
  • 2026年6月PP板品牌哪家专业,PP板表面硬度比较高 - 品牌推荐师
  • SciPy科学计算库:从零开始到生产部署的完整指南
  • 2026最新国学排盘软件深度横评:规避流派误差与数字断更迷局
  • 如何用WinUtil终极Windows优化工具一键搞定系统管理难题
  • 2026制造业实战:基于检验计划软件的工程图纸自动识别与质量控制指南
  • 2026年近期文昌预拌砂浆可靠供应商盘点与选择策略 - 品牌鉴赏官2026
  • ACE-Step UI终极指南:免费开源AI音乐生成神器
  • 深度解析L1B3RT45:AI对话系统的架构设计与交互机制
  • Windows 10终极清理指南:用Windows10Debloater一键移除预装垃圾应用
  • **推拉力测试机企业名声大?注意!这3家才是真正王者!**
  • Rufus终极指南:3步绕过Windows 11硬件限制,让旧电脑重获新生
  • 跨越语言屏障:证券投资翻译的核心要义
  • 基于 Harmony 7.0 应用的颜色搭配助手应用首页实现
  • 5分钟快速上手:使用MoneyPrinterTurbo免费AI短视频生成器
  • 嵌入式路侧实时车辆轨迹预测架构EdgeVTP的设计与工程实践
  • 如何快速上手SV4D 2.0:面向初学者的完整视频生成指南
  • BIOSS框架:统一边界积分方程与状态空间,革新室内声学建模
  • AI产品经理转型正确方法:做对这4点,涨薪30%不难!
  • 2026年6月专业的喷淋塔除尘器定制厂家推荐,催化燃烧RTO/RCO装置/布袋除尘器,喷淋塔除尘器销售厂家口碑推荐 - 品牌推荐师
  • 抖音下载神器:5分钟搞定免费批量下载的终极方案 ✨
  • (2026最新)南宁防水补漏正规公司甄选推荐:漏水检测维修-暗管漏水精准定位检测漏水点-卫生间/厨房/屋顶/阳台/渗漏水维修-本地人必选的正规测漏公司 - 即刻修防水
  • 大模型代码评估中的偏见:权威性、冗长度与思维链效应解析
  • 传音 Infinix 手机数据迁移至 iPhone 完整操作
  • 土区Chat GPT订阅价格暴涨,薅羊毛时代结束!