5

这里有一些细节。

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

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

4

1 回答 1

4

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

它可以是任何一个。通常的方法是写入 WQE 并按门铃,在这种情况下,HCA 将通过 DMA 获取 WQE。不太常见的方式是所谓的“蓝色火焰”——PCIe BAR 的一部分用于 WQE,WQE 以与写入门铃相同的方式写入 HCA。

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

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

于 2014-01-29T14:48:13.260 回答