Skip to content

AMBA AXI · Module 8

Different-ID & Out-of-Order Completion

How AXI lets different-ID transactions complete out of order — the throughput it buys, why the manager must accept any completion order, and the address hazards that arise when overlapping accesses use different IDs.

The same-ID rule (Chapter 8.3) is half the ordering model; this chapter is the other half. Transactions with different IDs have no ordering guarantee — the interconnect and subordinates are free to complete them out of order, and they will, because that's where the throughput comes from. A fast access shouldn't wait behind a slow, unrelated one. But this freedom shifts a burden onto the manager: it must accept responses in any order (matching by ID), and it must never assume ordering between different-ID transactions — especially dangerous when they touch the same address. This chapter covers the reordering, the throughput it buys, and the hazards it introduces.

1. Different IDs May Complete Out of Order

AXI guarantees ordering only within an ID. Across different AxIDs, there is no ordering — the system may return responses in whatever order is fastest. So if a manager issues read ID=0 then read ID=1, ID=1's data may come back first if its slave/access is quicker. This is legal and expected; the manager pairs each response to its request by RID/BID, regardless of order.

Manager issues read ID 0 then ID 1; subordinate returns ID 1's data first, then ID 0's, matched by RID.ManagerSubordinateAR — ARID=0 (slow access)AR — ARID=0(slow…AR — ARID=1 (fast access)AR — ARID=1(fast…R — RID=1 (ready first)R — RID=1(ready…R — RID=0 (later)
Figure 1 — out-of-order completion across IDs. The manager issues read ID=0 then read ID=1; the subordinate (or interconnect) returns ID=1's data first because it was ready sooner, then ID=0's. Different IDs have no ordering guarantee, so responses come back in readiness order; the manager matches them by RID.

2. Why Out-of-Order Completion Buys Throughput

Reordering is the point of having multiple IDs. If different-ID transactions had to complete in issue order, a single slow access (a DRAM page miss, a contended slave, a far interconnect hop) would stall every later transaction behind it — head-of-line blocking. By letting independent (different-ID) transactions complete as soon as they're ready, the system extracts parallelism:

  • A fast slave can answer while a slow one is still working — no waiting.
  • A memory controller can reorder across banks to maximize row hits.
  • Responses fill the data channel in readiness order, keeping it busy rather than idle behind a straggler.

This is the same latency-hiding from Chapter 8.1, now expressed through IDs: outstanding depth keeps many in flight; different IDs let them finish in any order so none blocks the others. The same-ID rule then carves out the subset that must stay ordered.

out-of-order — different-ID reads complete in readiness order

6 cycles
ARID 0 then ARID 1 issued; read data returns RID 1 first then RID 0, out of issue order, each tagged by RID.ID=1 returns before ID=0issue ID=0 then ID=1issue ID=0 then ID=1ID=1 ready first → returns firstID=1 ready first → ret…aclkarvalidarid011111rvalidridXX1100rdataXXD1D1D0D0t0t1t2t3t4t5
Figure 2 — out-of-order: reads issued ID=0 then ID=1, but ID=1's data returns first (its access was ready sooner) and ID=0's follows. The data channel stays busy in readiness order rather than idling behind the slower ID=0. RID labels each beat so the manager routes the data correctly despite the swapped order.

3. The Burden — Managers Must Accept Any Order

Out-of-order completion means a manager cannot assume responses arrive in issue order across IDs. Its response-handling must:

  • Match strictly by ID — route each RID/BID response to the request that carried that ID, not to "the next expected" transaction.
  • Tolerate any interleaving — a later-issued ID may complete first, responses may interleave arbitrarily across IDs, and the manager's buffers/tracking must handle that without losing or misrouting data.

A manager that implicitly assumes in-order completion (e.g., pops a FIFO of pending requests on each response regardless of ID) will mismatch data the moment the system reorders — pairing ID=1's data with ID=0's request. This is a common bug in naively-written masters, and it only surfaces when a slave/interconnect actually reorders, which simple testbenches may never do.

Manager must match responses by ID and tolerate any interleaving; assuming in-order completion causes data mismatch.Responses (anyorder)RID/BID interleavedMatch by IDroute to that requestMatch by positionmismatch on reorder — BUG12
Figure 3 — the manager's burden. Because different-ID responses can arrive in any order, the manager must match each response to its request strictly by ID and tolerate arbitrary interleaving. A manager that assumes in-order completion (matching by arrival position instead of ID) mismatches data as soon as the system reorders.

4. The Real Hazard — Overlapping Addresses, Different IDs

The subtlest and most dangerous consequence: if two transactions touch the same (or overlapping) address but use different IDs, AXI imposes no ordering between them, so the result is undefined. Examples of the hazard:

  • A write (ID=0) and a later read (ID=1) to the same address — the read may be serviced before or after the write lands; it may return old or new data (also compounded by the read/write separation of Chapter 8.3).
  • Two writes (ID=0, ID=1) to the same address — they may complete in either order, so the final stored value is unpredictable (a write-after-write hazard).
  • A read (ID=0) and a write (ID=1) to the same address — the read may catch the value before or after the write.

The rule that protects against this: transactions to the same/overlapping address that must be ordered must share an ID (so the same-ID rule orders them) — or be serialized by waiting for the first's response before issuing the second (needed especially across the read/write boundary, which IDs can't order). Using different IDs to overlapping addresses is only safe when the accesses are genuinely independent (no ordering needed) — i.e., they don't actually overlap in a way that matters.

Overlapping-address accesses needing order must share an ID or be serialized; different IDs to overlapping addresses give an undefined result.yes — enforceif left differentOverlappingaddresses,must beordered?Same ID (samedirection) orserialize (R/W)Different IDs →no order →undefined result
Figure 4 — the same-address hazard and its fix. Two accesses to overlapping addresses with different IDs have no ordering → undefined result (WAW/RAW/WAR hazard). If they must be ordered: give them the same ID (same-ID rule orders same-direction accesses) or serialize via response-wait (required across read/write). Different IDs to overlapping addresses are safe only if truly order-independent.

5. Common Misconceptions

6. Debugging Insight

7. Verification Insight

8. Interview Questions

9. Summary

Different-ID transactions have no ordering guarantee and may complete out of order — and that's the intended behavior, because it's where AXI's throughput comes from: independent accesses finish in readiness order, fast bypassing slow, keeping the data channel busy instead of head-of-line-blocked. The same-ID rule (8.3) then carves out the subset that must stay ordered. The freedom carries two burdens for the manager: it must match responses strictly by RID/BID and tolerate any interleaving (position-based matching corrupts data the instant the system reorders), and it must avoid address hazards — overlapping accesses with different IDs have an undefined result (WAW/RAW/WAR), so accesses that must be ordered need a shared ID (same direction) or serialization via response-wait (across reads/writes).

The throughline of Module 8's ordering model: AXI guarantees only same-ID, same-direction order and reorders everything else for performance, making hazard avoidance and out-of-order tolerance the manager's job. Bugs are latent until the system actually reorders — position-based matching and same-address different-ID races — so verification must actively reorder responses and hunt same-address hazards. Next: how outstanding depth and IDs play out across the interconnect — where multiple managers, reordering, and ID extension all interact.

10. What Comes Next

You've got both halves of the ordering model; next, how it scales through the interconnect:

Previous: 8.3 — Same-ID Ordering Rules. Related: 8.2 — Transaction IDs for ID matching, and 8.1 — Why Outstanding Transactions Exist for the latency-hiding this enables. For the broader protocol catalog, see the AMBA family overview doc.