Infiniband动词涉及哪些PCIe操作?

Anu*_*lia 5 rdma pci infiniband pci-e

以下是一些细节.

当一个进程调用时ibv_post_send(),在HCA的PCI接口上会发生什么?WQE是否封装在PCIe门铃内并通过Programmed IO写入?或者WQE是否由HCA单独读取?

当进程调用时会发生什么ibv_poll_cq()?HCA如何将CQE推送到系统内存?或者,如果它是基于拉力的,那么CPU如何在HCA中检测新的CQE?

kli*_*eyn 4

WQE是否封装在PCIe门铃内并通过Programmed IO写入?或者 WQE 是在 HCA 读取的单独 DMA 中获取的吗?

两者都可以。通常的方式是写入 WQE 并按门铃,此时 HCA 将通过 DMA 获取 WQE。不太常见的方式是所谓的“蓝色火焰”——PCIe BAR 的一部分用于 WQE,WQE 写入 HCA 的方式与写入门铃的方式相同。

HCA 如何将 CQE 推送到系统内存?

HCA 使用 DMA 将 CQE 写入系统内存。您的应用程序有两种方式了解新的完成情况:基于轮询或基于事件。 ibv_poll_cq()用于基于民意调查的方法。

  • 谢谢!这非常有帮助。是否有在线文档解释这种交互(并提供有关 Infiniband 硬件的其他有用信息?)。我找到了一份“动词实施指南”,但即便如此,也没有说明 CQE 是如何推动的。 (2认同)
  • CQE/WQE 和其他事物的处理 - 所有这些都依赖于实现。每个供应商都可以为所欲为。如果你想了解动词是如何实现的,你只需要检查相关的源代码——一切都是开放的。例如,对于 Mellanox ConnectX 系列 HCA:http://lxr.free-electrons.com/source/drivers/infiniband/hw/mlx4/ 如果您想了解更多信息,您需要设备 PRM(编程参考手册) 。您需要联系供应商的支持人员并索要此文档。 (2认同)