本文将mark下RDMA Doorbell机制的相关notes。

What

Doorbell是一种软件发起、硬件接收的通知机制。例如软件通过Doorbell告诉硬件:

  • 开始做某事:例如软件准备好WQE时,通知硬件开始处理
  • 已经做完某事:例如软件读取CQE后,通知硬件”我已经取走CQE”

How

Doorbell有两种实现机制:

Doorbell寄存器

硬件提供的寄存器,来供软件读写。

  • 优点:实现简单,只需要软件读写寄存器地址
  • 缺点:读写寄存器行为会抢占总线;硬件需要立即响应,可能会打断硬件正在进行的工作(例如在DMA读取主机的内存),从而影响传输速率

Doorbell record

使用主机的一段内存作为中介。软件和硬件都知道这段内存的地址。软件直接写这段内存,硬件在必要时读取该内存. This buffer is used in the recovery path in case the NIC drops the write to its doorbell (DB).

  • 优点:软件通知时不需要抢总线
  • 缺点:实时性较差

可以把DB理解成软件通知硬件的方式。


参考资料:

  1. 浅析DeepSeek中提到的IBGDA
  2. Improving Network Performance of HPC Systems Using NVIDIA Magnum IO NVSHMEM and GPUDirect Async