USB xHCI, NVMe, RDMA, IO_URING, AF_XDP都使用生产消费模型,在此作一个比较
目前只从Ring/Queue, Element, Producer/Consumer, 以及Doorbell几个角度,之后可能会增加新的维度
| Spec | Ring/Queue/... | Element | Producer | Consumer | Doorbell | ||||
| xHCI | Transfer Ring Command Ring | TRB (transfer request block) | Host/CPU | xHC | DB Target, DB stream ID | ||||
| Event Ring | TRB | xHC | Host/CPU | MSI/MSI-X/Legacy interrupt or Polling | |||||
| NVMe | Admin/IO Submission Queue - SQ | SQE | Host/CPU | Controller | SQ tail doorbell register | ||||
| Admin/IO Completion Queue - CQ | CQE | Controller | Host/CPU | CQ head doorbell register | |||||
| RDMA | WQ - QP (SQ, RQ) | WR | Host/CPU | RDMA HW | ? | ||||
| CQ | WC | RDMA HW | Host/CPU | ? | |||||
| IO_URING | SQ | index of SQE | User | Kernel | io_uring_enter/IORING_SETUP_SQPOLL | ||||
| CQ | index of SQE | Kernel | User | IORING_SETUP_IOPOLL | |||||
| AF_XDP | Fill Q <-> Receive Q Tx Q <-> Completion Q | descriptor | User | User | NA | ||||
| SDXI | Software producer ring | descriptor | software | SDXI function | Doorbell BAR | ||||
| Software consumer ring | descriptor | SDXI function | software | Interrupt |
SDXI - Smart Data Accelerator Interface
Smart Data Accelerator Interface (SDXI) is a proposed standard for a memory to memory Data Mover and acceleration interface
Smart Data Accelerator Interface (SDXI) TWG | SNIA



