0

假设我有一个 InfiniBand 或类似的 PCIe 设备和一个快速的 Intel Core CPU,我想通过 IB 链路发送例如 8 字节的用户数据。还要说没有设备驱动程序或其他内核:我们保持简单,直接写入硬件。最后,假设 IB 硬件先前已针对上下文正确配置,因此它只是在等待执行操作。

问:本地 CPU 需要多少 CPU 周期才能告诉硬件数据在哪里以及应该开始发送数据?

更多信息:我想估算一下使用 PCIe 通信服务与 CPU 本地服务(例如使用协处理器)相比的成本。我期望的是,PCIe 总线上的寄存器会有很多写入,例如设置数据包的地址和长度,可能还有状态和/或控制寄存器的一些读取和写入。我预计每个都需要数百个 CPU 周期,所以我预计整体设置将需要 1000 到 2000 个 CPU 周期。我会是对的吗?

我只是在寻找一个大概的答案...

4

1 回答 1

1

你的球场号码是正确的。

如果您想使用 RDMA 写入发送 8 字节有效负载,首先您将使用 Programmed IO 将请求描述符写入 NIC,然后 NIC 将使用 PCIe DMA 读取来获取有效负载。我希望 PIO 和 DMA 读取都需要 200-500 纳秒,尽管 PIO 应该更快。

您可以通过将有效负载放入请求描述符中来摆脱 DMA 读取并节省一些延迟。

于 2014-07-18T02:38:46.020 回答