Skip to content

AMBA AXI · Module 8

Transaction IDs

How AXI transaction IDs (AxID/BID/RID) tag transactions so many can be in flight at once — matching responses to requests, defining ordered streams (same ID) vs reorderable ones (different IDs), and how interconnects extend IDs to route responses back.

Outstanding transactions (Chapter 8.1) let a manager keep many requests in flight — but the moment responses can come back in a different order than requests went out, you need a way to tell which response belongs to which request. That's what the transaction ID does. AxID tags every request, BID/RID tag every response with the matching value, and together they turn a stream of concurrent transactions into something the system can sort out. Crucially, the ID also defines AXI's ordering model: same-ID transactions are an ordered stream, different-ID transactions are independent and may be reordered for performance. This chapter is about how IDs enable concurrency; the precise ordering rule is Chapter 8.3.

1. What the ID Does for Concurrency

Every transaction carries an ID on its address channel — AWID for writes, ARID for reads — and every response echoes it: BID on the write response, RID on each read-data beat. With many transactions outstanding, this lets the manager (and every component on the path) match a returning response to its originating request by ID. Without it, a manager with 8 reads in flight couldn't tell which returning data answered which request once they're allowed to come back out of order.

So the ID is the key that makes concurrency usable: issue ahead freely, and pair each response to its request by its ID when it returns.

Manager issues reads ID 0, 1, 2; subordinate returns RID 0, then RID 2, then RID 1; each response is matched to its request by ID.ManagerSubordinateAR — ARID=0AR — ARID=1AR — ARID=2R — RID=0R — RID=2 (out of order)R — RID=2(out of…R — RID=1
Figure 1 — IDs match responses to requests. The manager issues reads tagged ID=0, ID=1, ID=2; the subordinate returns data tagged RID, which the manager matches back to the right request even though the responses arrive in a different order (ID=2 before ID=1 here). The ID is the key that pairs each response with its request.

2. Same ID vs Different ID — The Ordering Model

The ID does more than label — it partitions transactions into ordering domains:

  • Same ID → an ordered stream. Transactions issued with the same AxID must complete in order (their responses return in issue order). A manager that needs ordering between transactions gives them the same ID.
  • Different IDsindependent streams. Transactions with different IDs have no ordering guarantee relative to each other; the interconnect/subordinate may complete them in any order — reordering freely for performance (servicing whichever is ready first, scheduling across banks, etc.).

So an ID is effectively a thread: one ID is one in-order thread of transactions; distinct IDs are parallel threads that can overtake one another. This is the mechanism that lets AXI extract performance from concurrency while still offering ordering where you need it — you choose by ID assignment. (The exact rule and its consequences are Chapter 8.3.)

Same ID transactions are an ordered stream; different ID transactions are independent and reorderable.ID=5, ID=5, ID=5ordered stream — in-ordercompletionOrdering guaranteedsame ID → in orderID=0, ID=1, ID=2independent — any completionorderReordering alloweddifferent IDs → may overtake12
Figure 2 — IDs define ordering domains. Transactions sharing an ID form one ordered stream (responses return in issue order). Transactions with different IDs are independent and may complete in any order, letting the system reorder for performance. The ID is effectively a thread identifier: one ID = one in-order thread.

3. How Interconnects Use the ID

When a transaction passes through an interconnect, the ID also carries routing information. An interconnect connects several managers to several subordinates; when manager M's transaction (say ARID=2) reaches a shared subordinate, the response must find its way back to M. Interconnects handle this by extending the ID: they append bits identifying the source manager, so the subordinate sees a wider ID, and on the response path the interconnect uses those extra bits to route RID/BID back to the correct manager, then strips them so M sees its original ID.

This is why ID width grows toward the subordinate and why two managers can both use ARID=0 without collision — the interconnect's added source bits keep them distinct internally. It also means a subordinate's ID space must be wide enough for the interconnect's expansion (an integration concern). The ordering model is preserved through this: same (full) ID stays ordered; the source bits make different managers' transactions different-ID (independent) to each other, as expected.

Interconnect appends source bits to manager IDs toward the subordinate and uses them to route responses back to the right manager.Manager 0ARID=0Manager 1ARID=0Interconnectappends source bit →{0,0}/{1,0}Subordinatesees wider, distinct IDs12
Figure 3 — interconnect ID extension. The interconnect appends source-identifying bits to each manager's AxID so transactions from different managers stay distinct at the shared subordinate, then uses those bits to route BID/RID responses back to the originating manager and strips them. ID width grows toward the subordinate; this is how responses find their way home.

4. Choosing IDs — Ordering vs Concurrency

ID assignment is a deliberate design choice that trades ordering against reordering freedom:

  • Need ordering between a set of transactions (e.g., a sequence that must hit memory in order)? Give them the same ID — they form one in-order stream.
  • Want maximum concurrency / reordering (independent transactions that can complete in any order to maximize throughput)? Give them distinct IDs — the system can service whichever is ready first.

ID width sets how many distinct streams are possible: more AxID bits → more independent threads in flight → more reordering opportunity (at the cost of wider buses and bigger tracking structures). A common pattern is a master using a small number of IDs to express a few independent streams while keeping ordering within each.

If transactions must stay ordered use the same ID; if independent and you want reordering use distinct IDs.yesnoMust thesetransactionsstay ordered?Same ID → oneordered streamDistinct IDs →independent,reorderable
Figure 4 — choosing IDs. Assign the same ID when transactions must stay ordered; assign distinct IDs when they're independent and you want the system free to reorder for throughput. ID width bounds how many independent streams you can have. The choice is how a designer dials in the ordering-vs-concurrency trade-off.

5. Common Misconceptions

6. Debugging Insight

7. Verification Insight

8. Interview Questions

9. Summary

Transaction IDs are what make AXI's concurrency correct and tunable. AxID tags each request and BID/RID echo it on responses, so a manager with many transactions outstanding can match each response to its request even when they return out of order. Beyond matching, the ID defines AXI's ordering model: same ID = an ordered stream (in-order completion), different IDs = independent streams that may be reordered for performance — so an ID behaves like a thread, and ID assignment is how a designer trades ordering against concurrency. Through an interconnect, IDs are extended with source bits so multiple managers can reuse ID values, responses route back to the right manager, and ID width grows toward the subordinate.

The practical consequences are sharp: matching errors corrupt/misroute responses; over-sharing an ID needlessly serializes independent transactions (head-of-line stalls); under-sharing (splitting dependent transactions across IDs) lets the system reorder things that needed ordering. Choose the same ID for order, distinct IDs for throughput, and size ID width for the interconnect's expansion. Next: the precise statement and consequences of the same-ID ordering rule — the guarantee this chapter has been leaning on.

10. What Comes Next

You've got the ID mechanism; next, the ordering guarantee it rests on:

  • 8.3 — Same-ID Ordering Rules (coming next) — the precise rule that same-ID transactions complete in order, and what that does and doesn't guarantee.

Previous: 8.1 — Why Outstanding Transactions Exist. Related: 6.3 — AxID for the ID signal mechanics, and 8.1 — Why Outstanding Transactions Exist for the concurrency these IDs make correct. For the broader protocol catalog, see the AMBA family overview doc.