主机环境中的 FPGA PCIe EP 到 NVMe SSD

主机环境中的 FPGA PCIe EP 到 NVMe SSD

我有一张 FPGA 数据采集卡,可插入典型高端 Windows/Linux 工作站的 PCIe 插槽。我想将进入 FPGA 的数据传输到插入另一个 PCIe 插槽的 NVMe 驱动器。

我是否需要 FPGA 中的 NVMe 主机控制器来直接写入 NVMe 驱动器?

是否可以让主机中的 NVMe 控制器在 FPGA 和 NVMe 驱动器之间设置 DMA 传输,然后让它不再干扰?

我设想将数据零拷贝传输到 SSD,即不使用任何主机处理或内存。谢谢!

答案1

我认为您正在尝试执行点对点 DMA (P2PDMA) 操作,该操作会卸载 CPU 的 DMA 流量。请参阅这里了解一些背景知识。Linux 内核支持这里

我是否需要 FPGA 中的 NVMe 主机控制器来直接写入 NVMe 驱动器?

您需要某种控制器来允许 P2PDMA 操作在没有 CPU 的情况下进行。

是否可以让主机中的 NVMe 控制器在 FPGA 和 NVMe 驱动器之间设置 DMA 传输,然后让它不再干扰?

我见过一些 NoLoad 加速器,例如艾迪康. 你可能会发现简短的介绍也很有用。查看另一个 Eideticom 合作伙伴解决方案这里

使用 Eideticom 的 NoLoad NVM Express 计算存储处理器和 Linux® p2pdma 框架可从 CPU 的内存子系统中消除 100% 的 DMA 流量。这极大地提高了在 CPU 上运行的应用程序的性能。

相关内容