知识卡片

DMA环形队列的Head-Tail协作

专业/工作 · 1109.a

内容

网卡DMA和CPU之间不是直接对话,而是靠一圈环形队列做异步交接:Base/Size寄存器划定这块物理连续内存的范围,Head寄存器由硬件维护、只读,表示硬件当前处理到哪;Tail寄存器由软件填写,告诉DMA控制器”这个位置之前的描述符你可以处理了”。Head等于Tail意味着队列空,Head等于Tail的下一格意味着队列满——这是经典的生产者/消费者环形缓冲区模型,只不过生产者和消费者分别是CPU和硬件DMA引擎,靠两个独立寄存器而非共享锁协调进度。

参考来源

《深入浅出DPDK》第6章《PCIe与包处理I/O》