Skip to content

AMBA AXI · Module 9

Read/Write Independence

Why AXI's read and write channels are fully decoupled — separate wires and handshakes operating concurrently (full-duplex) — what that independence enables for throughput, and the RAW/WAR/WAW hazards it leaves the master to manage.

Chapter 9.1 established that AXI never orders a read against a write. This chapter explains why — the read and write paths are physically and logically separate — and what that independence buys and costs. Reads use AR/R; writes use AW/W/B; the two sets of channels have their own handshakes and run concurrently and independently, like two one-way streets rather than a shared road. That decoupling is a major source of AXI's throughput (full-duplex read and write at once), but it hands the master the entire job of managing read/write hazards (RAW, WAR, WAW) where accesses actually depend on each other. This chapter covers both sides.

1. Two Separate Channel Sets

AXI's five channels split cleanly into two independent groups:

  • Read: AR (read address) + R (read data/response).
  • Write: AW (write address) + W (write data) + B (write response).

These are distinct wires with distinct VALID/READY handshakes. Nothing in the protocol couples them: a read address can be accepted while write data flows; a write response can return while read data streams. They are two parallel subsystems sharing only the subordinate they ultimately address. This is the structural reason for the "no read/write ordering" rule — there is literally no shared channel or handshake to impose an order.

Read channels AR/R and write channels AW/W/B operate concurrently and independently between manager and subordinate.ManagerSubordinateAR — read addressAW — write address (concurrent)AW — writeaddress…W — writedataR — read data(concurrent)B — write response
Figure 1 — the read and write channel sets are independent. Read uses AR/R; write uses AW/W/B; each has its own VALID/READY handshakes and runs concurrently. A read and a write proceed in parallel with no protocol coupling — which is exactly why the bus imposes no ordering between them.

2. Full-Duplex — What Independence Enables

Because reads and writes don't share wires or block each other, a manager can drive both directions at once — full-duplex:

  • Concurrent throughput — the read-data bus and write-data bus can both be busy in the same cycles, so a mixed read/write workload approaches the sum of both directions' bandwidth, not a shared total.
  • No cross-direction blocking — a stalled write (slow B, backed-up W) doesn't hold up reads, and a slow read doesn't hold up writes. Each direction flow-controls itself.
  • Independent outstanding pools — reads and writes have separate ID spaces and separate in-flight tracking, so depth in one doesn't consume the other.

This is a real architectural advantage over a shared read/write bus (like older single-channel protocols): a DMA can read a source and write a destination simultaneously, a CPU can fetch while storing, and the interconnect can keep both data buses saturated.

rw-independence — read and write data flowing concurrently

7 cycles
RVALID/RDATA on the read channel and WVALID/WDATA on the write channel are both active in overlapping cycles, showing full-duplex operation.read + write data buses both busyreads and writes concurrentreads and writes concu…no cross-direction blockingno cross-direction blo…aclkrvalidrdataXR0R1R2R2R2R2wvalidwdataXW0W1W2W3W3W3t0t1t2t3t4t5t6
Figure 2 — rw-independence: the read and write data channels active in the same cycles (full-duplex). RVALID returns read data while WVALID drives write data concurrently — the two directions don't share wires or block each other, so a mixed workload uses both buses at once.

3. The Cost — Read/Write Hazards Are the Master's Job

Independence means the bus provides no coherency between a read and a write to the same location. Where accesses genuinely depend on each other, the master must manage three classic hazards:

  • RAW (read-after-write) — a read of a location just written. Without enforcement, the read may be serviced before the write lands and return old data. Fix: issue the write, wait for its B response, then issue the read.
  • WAR (write-after-read) — a write to a location currently being read. The write may clobber the data before the read captures it. Fix: issue the read, wait for its final R beat, then issue the write.
  • WAW (write-after-write) — two writes to the same location. They may land in either order, leaving an undefined final value. Fix: give them the same AWID (same-ID ordering) or serialize.

The unifying point: the master must insert a response-wait at any read↔write dependency (RAW/WAR) and use a shared ID or serialization for write↔write (WAW). The bus will not detect or resolve these — independence is total.

RAW fixed by waiting for B before read; WAR by waiting for R before write; WAW by same AWID or serialize.RAWread after writeWARwrite after readWAWwrite after writewait for Bthen readwait for Rthen writesame AWIDor serialize12
Figure 3 — the three read/write hazards and their fixes. RAW (read after write) → wait for B before the read. WAR (write after read) → wait for final R before the write. WAW (write after write) → same AWID or serialize. The bus enforces none of these; the master must, at every genuine same-location dependency.

4. The Trade-Off

The decoupling is a deliberate trade: full-duplex performance in exchange for master-managed hazards. It pays off because the overwhelming majority of read and write traffic is to different locations (independent), where the parallelism is pure gain and no hazard exists. Only the relatively rare genuine read↔write dependency needs a response-wait, so the cost is concentrated and small while the benefit (both buses busy, no cross-blocking) is pervasive.

The design discipline is the same as Chapter 9.1's: assume no read/write ordering, enjoy the concurrency everywhere, and pay the serialization cost only at real same-location dependencies. A master that over-serializes (waits between every read and write) throws away the full-duplex advantage; one that under-serializes (ignores a RAW/WAR/WAW) corrupts data.

Independence gives full-duplex throughput; cost is master-managed hazards only at same-location dependencies; balance is serialize only where needed.enablesdemandsdisciplineRead/writeindependenceFull-duplexthroughput (mosttraffic)Master managesRAW/WAR/WAW(rare deps)Serialize only atreal dependencies
Figure 4 — the trade-off. Read/write independence delivers full-duplex throughput and no cross-direction blocking (the pervasive benefit, since most accesses are independent), at the cost of master-managed RAW/WAR/WAW hazards (the concentrated cost, only at real same-location dependencies). Over-serializing wastes the benefit; under-serializing corrupts data.

5. Common Misconceptions

6. Debugging Insight

7. Verification Insight

8. Interview Questions

9. Summary

AXI's read and write paths are fully independent — separate channel sets (AR/R vs AW/W/B) with their own handshakes, running concurrently with no protocol coupling. That's the structural reason the bus never orders a read against a write, and it enables full-duplex operation: both data buses busy at once, no cross-direction blocking, separate outstanding pools — a pervasive throughput win since most traffic targets independent locations. The cost is that the bus offers no read/write coherency, so the master must manage same-location hazards itself: RAW (wait for B before the read), WAR (wait for final R before the write), and WAW (same AWID or serialize).

The discipline mirrors 9.1: assume no read/write ordering, run everything concurrently, and serialize only at genuine same-location dependencies — under-serializing corrupts data (the memmove-style overlap bug), over-serializing collapses full-duplex into half-duplex. A high-performance master makes hazard handling precise and local (conflict-detect outstanding overlaps) rather than blanket. Next: exclusive access — the one place AXI does provide a hardware mechanism for atomic read-modify-write, via the exclusive monitor and EXOKAY.

10. What Comes Next

You've got the read/write decoupling; next, the atomic mechanism layered on top of it:

  • 9.3 — Exclusive Access (coming next) — the exclusive monitor, load-/store-exclusive semantics, and the EXOKAY response for atomic read-modify-write.

Previous: 9.1 — Read & Write Ordering. Related: Five Channels and Independent Channels for the channel structure this builds on. For the broader protocol catalog, see the AMBA family overview doc.