> **Source:** ... [论文] 在 ARMv8 环境中对虚拟地址远程 DMA 的 IOMMU 支持

发布: (2025年11月25日 GMT+8 00:11)
6 min read
原文: arXiv

Source: arXiv - 2511.19258v2

概览

本论文展示了 ARM 的系统内存管理单元(SMMU)——平台的 I/O MMU——可以用于对远程 DMA 传输的 虚拟地址 进行翻译,这一能力是 Unimem “虚拟化全局地址空间”愿景所必需的。通过在 Xilinx Zynq UltraScale+ MPSoC 上构建并运行自定义 Linux 内核模块,作者证明了处理系统(PS)和可编程逻辑(PL)中的 DMA 引擎能够安全且透明地操作虚拟地址。

关键贡献

  • 首次在真实 ARMv8 MPSoC 平台上验证基于 SMMU 的虚拟地址 DMA
  • 内核模块测试框架,用于编程 SMMU 翻译条目并验证来自 PS 与 PL 的端到端 DMA 流程。
  • 动态页表共享:一个模块将 SMMU 指向用户空间页表,消除对静态虚拟‑物理映射的需求。
  • 完整的 SMMU 编程模型文档,填补了 Linux 上游文档的空白。

方法论

  1. 平台选择 – 之所以选择 Xilinx Zynq UltraScale+ MPSoC,是因为它将 ARMv8 CPU 集群(PS)与可编程逻辑(PL)以及片上 SMMU 集成在一起。
  2. 内核模块开发 – 编写了两个自定义模块:
    • 映射模块:向 SMMU 插入显式的虚拟‑物理条目,并触发对该虚拟地址的 DMA 写入。
    • 动态翻译模块:配置 SMMU 使用用户进程的页表基址,让硬件在运行时进行页表遍历。
  3. DMA 测试模式 – 分配简单的内存缓冲区,填入已知数据,然后通过 PS‑DMA 引擎或基于 PL 的 DMA IP 进行传输。每次传输后检查目标缓冲区,以确认数据正确移动。
  4. 验证 – 作者记录了 SMMU 翻译错误,检查了 IOMMU 页遍历硬件计数器,并将 /proc/iomem 中得到的物理地址与 DMA 期间观察到的地址进行对比。

所有实验均在单节点上完成;Unimem 的多节点一致性部分留待后续工作。

结果与发现

场景地址提供方式SMMU 行为结果
PS 发起的 DMA(静态映射)虚拟地址 → 预先编程的 SMMU 条目翻译成功,无错误数据正确落入目标缓冲区
PL 发起的 DMA(静态映射)虚拟地址 → 预先编程的 SMMU 条目与 PS 相同的翻译路径确认数据传输正确
PL 发起的 DMA(动态页表指针)虚拟地址 → 用户进程页表SMMU 在运行时进行页遍历在没有任何手动映射的情况下成功传输

这些实验证明 SMMU 可以作为真正的 IOMMU 用于 虚拟地址远程 DMA,能够处理 CPU 侧和 FPGA 侧的 DMA 引擎。动态方式显示单一 SMMU 配置即可服务整个用户进程,极大简化了软件栈。

实际意义

  • 简化的编程模型 – 开发者可以像访问普通内存一样对虚拟指针发起 DMA,无需手动固定和管理物理地址。
  • 安全与隔离 – 由于 SMMU 强制执行每个进程的页表,恶意 DMA 不会意外访问其他进程的内存,符合现代零信任设计。
  • 加速器集成 – 基于 FPGA 的加速器(如 AI 推理引擎)可以直接连接到 PL DMA 引擎并操作用户空间缓冲区,降低延迟并减少 CPU 开销。
  • 分布式共享内存的基础 – 在节点之间翻译虚拟地址是实现 Unimem 等系统的前提,这类系统旨在为异构计算节点集群提供单一地址空间。
  • 工具链提升 – 本工作中创建的内核模块和文档可作为需要 SMMU 支持的开源驱动(如 RDMA 网卡、高速存储)的起点。

局限性与未来工作

  • 单节点范围 – 本论文仅在一块 MPSoC 上验证了 SMMU 行为;向多节点一致性(Unimem 的最终目标)扩展仍未测试。
  • 特性覆盖 – 未探索 SMMU 的高级功能,如流 ID、地址空间标识符以及错误处理回调。
  • 性能分析 – 工作侧重于正确性;虚拟地址翻译相对于传统物理 DMA 的延迟/吞吐量定量影响留待后续基准测试。
  • 可移植性 – 自定义模块针对 Xilinx 的 Zynq UltraScale+;将此方法迁移到其他 ARMv8 平台(如 Qualcomm、NXP)可能需要额外的驱动工作。

未来研究可以将概念验证扩展为完整的分布式内存系统,评估性能权衡,并将 SMMU 启用的 DMA 路径集成到主流 Linux 驱动中。

作者

  • Antonis Psistakis

论文信息

  • arXiv ID: 2511.19258v2
  • 分类: cs.DC, cs.AR
  • 发布日期: 2025 年 11 月 24 日
  • PDF: Download PDF
Back to Blog

相关文章

阅读更多 »