Read across for one protocol; read down to see how each answers "how many requests can be in flight, and in what order do they come back?"
APB | AXI4 | PCI Express | DCLink | |
|---|---|---|---|---|
Outstanding requests | One | Many; limit set by each requester and target | Many non-posted requests | Up to 4 (step 5) |
Label on responses | None needed | ID on every channel | Tag plus requester ID | 2-bit tag |
Completion order | In order (one at a time) | Same ID in order; different IDs any order | Different requests any order; pieces of one read in address order | Any order, matched by tag |
Interleaving | — | Read data of different IDs may interleave; write data may not (removed in AXI4) | Whole packets; never split across others | — |
One request, several responses | No | One burst returns many beats, RLAST on the last | Reads above the maximum payload split at completion boundaries | One completion per request |
Per-transfer overhead | Setup and access phases | Address handshake per burst | 20–24 bytes per packet plus encoding | One header flit per request |
Concurrency needs labels: every protocol that allows many outstanding requests also tags responses.
Ordering is kept only where needed: per ID in AXI, per request in PCIe.
Per-transfer overhead drives packet and burst sizes: the larger the fixed cost, the more a protocol rewards long transfers (lesson 6.9).