Notes about RDMA Doorbell机制
本文将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理解成软件通知硬件的方式。
参考资料: