AMBA AXI · Module 5
Read Latency
What AXI read latency is and where it comes from — request-to-first-data, the round-trip contributors (routing, subordinate access, return), latency vs throughput, and how outstanding reads hide it.
A read takes time, and that time has a name and a structure worth understanding precisely. Read latency is the delay from issuing the address to the first data beat coming back — and it's distinct from throughput, which is how fast beats stream once they start. This chapter defines read latency exactly, decomposes it into its round-trip contributors (routing, the subordinate's own access time, the return path), separates latency from throughput on a waveform, and shows the one lever that hides it: outstanding reads. Read latency is where the performance modules (8, 13) begin, and this is the chapter that makes it concrete on the read path.
1. Defining Read Latency
Read latency is the time from the read being launched (the AR handshake) to the first R data beat arriving. It is a per-transaction property — one number per read — measuring the round trip from "I asked" to "I got the first answer."
Read latency = cycles from
ARVALID && ARREADYto the firstRVALID && RREADY.
It is emphatically not the same as the whole read's duration. The total time to receive an N-beat read is roughly latency + N beats of throughput: you pay the latency once to get the first beat, then the remaining beats stream at the channel's throughput (Chapter 3.4). So a 64-beat read isn't 64× the latency — it's one latency plus 63 more beats. Separating these two is the foundation of read performance reasoning.
// Conceptual — measure read latency: AR accepted → first R beat of that read.
if (arvalid && arready) t_launch[arid] = now(); // read issued
if (rvalid && rready && first_of[rid])
read_latency[rid] = now() - t_launch[rid]; // request → first data2. The Round-Trip Contributors
Read latency is a round trip, and naming its segments is what lets you attribute a slow read. From the AR handshake to the first R beat, the request and its answer traverse:
- AR acceptance — the address handshake itself (often 1 cycle, more if the target backpressures
ARREADY). - Interconnect forward path — decode (which subordinate owns the address), arbitration (if other masters contend), and the routing/pipeline stages to the target. Each interconnect hop adds cycles.
- Subordinate access time — the target actually fetching the data. This is usually the dominant term (below).
- Return path — the first R beat travels back through the interconnect (and any pipeline/CDC stages) to the manager.
3. The Dominant Term — Subordinate Access
Across these segments, the subordinate's own access time usually dominates, and it varies enormously by target:
- On-chip SRAM / registers: a few cycles — fast, deterministic.
- DRAM (through a controller): tens of cycles, and variable — a row already open is fast; a row miss (precharge + activate) is much slower; refresh and bank conflicts add more.
- A bridged / off-chip / NoC-distant target: more still, plus any clock-domain-crossing penalty.
So "read latency" is mostly "how far away and how slow is the thing I'm reading." Two reads on the same bus can have very different latencies purely because one hit SRAM and the other hit a closed DRAM row. The interconnect terms (decode, arbitration, hops) add to it — and contention makes them variable: under heavy traffic, arbitration delay at a shared port can dominate even a fast target.
4. Latency vs Throughput
The two are different axes, and a waveform makes the distinction unmistakable: latency is the gap before the first beat; throughput is the rate of the beats once they arrive.
Read latency (the gap) vs throughput (the stream)
11 cyclesThis is why bursts are efficient (Chapter 1.6): one latency amortizes over many beats. A single-beat read pays the full latency for one beat of data; a long burst pays the same latency once and then streams — so the effective per-byte cost of latency drops as the burst lengthens. Latency hurts most on short, scattered reads.
5. Hiding Latency — Outstanding Reads
Latency is paid per transaction, but it doesn't have to be paid serially. Because AR and R are decoupled (Chapter 2.4), a manager can issue the next read's AR while earlier reads are still in flight — so multiple reads' latencies overlap instead of stacking. The first read's data is still on its way when the second, third, and fourth are already launched; their latencies run concurrently, and data streams back in a near-continuous flow.
This is the technique for tolerating memory latency, and it's why AXI's outstanding/out-of-order machinery exists (Module 8). The latency of any single read doesn't shrink — but the system stops waiting on it. (Depth tuning — how many outstanding reads you need to fully hide a given latency — is Module 13.)
6. Common Misconceptions
7. Debugging Insight
8. Verification Insight
9. Interview Questions
10. Summary
Read latency is the round-trip delay from the AR handshake to the first R data beat — a per-transaction number, distinct from throughput (the rate of beats once they flow). Its contributors are the forward path (AR acceptance, interconnect decode/arbitration/hops), the subordinate access time (usually the dominant and most variable term — a few cycles for SRAM, tens for DRAM, more on a row miss), and the return path. Because latency is paid once per transaction, bursts amortize it (one latency, many beats), so latency hurts most on short, scattered reads.
Latency can't easily be made small — it's mostly the target's access time and any contention — so the system-level answer is to hide it with outstanding reads: decoupled AR/R let a manager overlap many reads' latencies, turning serial waits into a near-continuous stream without changing any single read's latency. Debug by measuring the gap and attributing it to a segment; verify by modeling variable latency in the responder (a correctness check, not just performance) alongside outstanding/out-of-order returns. Next: how read data from different transactions could be interleaved (AXI3) and why AXI4 removed it.
11. What Comes Next
You can reason about a read's timing; next, how multiple reads' data shares the R channel:
- 5.5 — Read Data Interleaving (coming next) — interleaving by ID in AXI3 and its removal in AXI4.
- 5.6 — Read Transaction Waveforms (coming soon) — annotated end-to-end read waveforms (single, burst, multi-ID).
Previous: 5.3 — RLAST & RRESP. For the broader protocol catalog, see the AMBA family overview doc.