Skip to content

AMBA AXI · Module 1

AXI vs AHB vs APB

A mechanism-level comparison of the three classic AMBA buses — APB, AHB, and AXI — across handshake, pipelining, concurrency, bandwidth, and cost.

The previous chapter placed the AMBA protocols on a map. This one puts the three classic memory-mapped buses — APB, AHB, and AXI — side by side and compares how they actually move a transfer. The goal is not to crown a winner; it is to make the trade-offs concrete enough that, shown any of the three, you can explain its transfer model, predict its bandwidth ceiling, and say why an architect chose it there. We compare at the mechanism level — phases, pipelining, concurrency, cost — and still hold the channel-signal detail for later modules.

1. Three Buses, One Decision

APB, AHB, and AXI are all memory-mapped AMBA buses: a master issues an address and reads or writes data at a slave. They differ in how much machinery they put between "I want to move data" and "the data moved." That machinery buys concurrency and bandwidth — and costs logic, verification effort, and design time. Comparing them is really comparing how much of that machinery a given piece of traffic actually needs.

Three questions separate them, and they are the spine of this chapter:

  • How is a single transfer structured? (the handshake / phase model)
  • How many transfers can be in flight at once? (pipelining and concurrency)
  • What does that cost? (logic area, complexity, verification)

Get those three and the right-bus-for-the-job answer falls out on its own.

2. APB — The Two-Phase Peripheral Bus

APB moves one transfer as two phases: a setup phase that presents the address and control, then an access phase that completes the read or write (optionally extended with wait states). There is no pipelining and no concurrency — the next transfer cannot begin until the current one finishes. That is by design: APB exists for configuration registers and slow peripherals, where transfers are rare and the priority is minimal logic, not throughput.

The payoff is that an APB slave is almost trivial to build and verify. The price is a hard, low bandwidth ceiling — which, for a baud-rate register touched once at boot, is no price at all.

3. AHB — The Pipelined Shared Bus

AHB keeps a single shared bus but pipelines it: the address phase of the next transfer overlaps the data phase of the current one, so the bus is busier than APB's strict two-phase march. It adds bursts (a sequence of related transfers from one address handshake) and arbitration so multiple masters can take turns.

Its ceiling is structural, and it is the exact gap Chapter 1.1 described: the bus is shared and held. A granted master owns the bus for its transfer, the pipeline is only one stage deep, and the system still does essentially one transfer in flight at a time. Pipelining overlaps address and data; it does not let two independent transactions progress at once. That is enough for a simple single-master subsystem and not enough for a chip full of concurrent high-bandwidth masters.

4. AXI — The Decoupled Multi-Channel Interconnect

AXI replaces "one shared, held bus" with independent paths for requesting, moving data, and responding, routed through a switch-like interconnect. Because those paths are decoupled, a master can keep many transactions outstanding, responses can return out of order, and two masters talking to two slaves proceed in parallel rather than taking turns. Bursts move blocks of data efficiently on top of that.

This is more machinery: more wires, more states, a far larger verification surface. AXI earns it on the CPU-to-memory and DMA-to-memory paths where concurrency and latency-hiding decide system performance — and it is overkill on a GPIO register, which is precisely why real chips keep APB around for those.

Transfer models compared: APB runs setup then access serially; AHB pipelines the next address phase over the current data phase on a shared bus; AXI runs address, data, and response as independent overlapping activities.thenthenoverlapoverlapdecoupleddecoupledAPBSetupAccessNext transferwaitsAHBAddress 1Data 1 + Address 2Data 2 + Address 3AXIMany requests issuedData streamsconcurrentlyResponses (outof order)
Figure 1 — the transfer model of each bus, time flowing left to right. APB marches two phases per transfer with no overlap; AHB overlaps the next address with the current data on one shared bus (one transfer in flight); AXI decouples address, data, and response so many transactions overlap freely. The deeper the overlap, the higher the achievable throughput — and the more machinery required.

5. Side by Side — The Mechanism Comparison

The contrast across the axes that matter, without oversimplifying any single one:

AspectAPBAHBAXI
Transfer modelTwo phases (setup, access), serialPipelined address + data on a shared busIndependent address / data / response paths
Transfers in flightOne, no overlapOne (pipelined a single stage deep)Many outstanding, out of order
ConcurrencyNoneMasters arbitrate and take turnsParallel master→slave conversations
BurstsNoYesYes (and longer / more flexible)
Bandwidth ceilingLowModerateHigh
TopologySimple bus behind a bridgeShared bus + arbiterSwitch / interconnect
CoherencyNoNoNo — plain AXI; ACE/CHI add it
Logic & verification costVery lowModerateHigh
Natural homeControl / config registersSimple, mostly single-master subsystemsHigh-performance masters + memory

Read the table as a single story: each column to the right adds the ability to overlap more work, and pays for it in complexity. Nothing in the table says "newer is better" — it says "more capable where you need it, more expensive where you don't."

The same single access, expressed as how each bus thinks:

Azvya Education Pvt. Ltd.VLSI Mentor
Snippet
// Conceptual — one access, three styles of thinking (not implementations).
// APB : present address, then data — one transfer, finish before the next.
//         access(addr, data);                       // serial
// AHB : pipeline the next address over the current data on a shared bus —
//         addr(a0); data(a0) || addr(a1);           // one transfer in flight
// AXI : issue many requests without waiting; responses return in any order.
//         req(a0); req(a1); req(a2);                // outstanding + out-of-order

Three altitudes of concurrency in three lines — and the entire performance gap between the buses lives in that last one.

6. Pipelining & Concurrency — Where the Bandwidth Comes From

The single biggest performance separator is how many transactions can make progress at once, and it is worth isolating because beginners conflate it with clock speed or bus width.

  • APB has no overlap: phase, phase, done, repeat. Throughput is one transfer per (setup+access) window.
  • AHB overlaps adjacent transfers by one stage and adds bursts, so the shared bus stays busier — but the chip is still doing one transaction's worth of work in flight, and a slow slave or a busy bus stalls everyone waiting their turn.
  • AXI keeps many transactions outstanding and lets their responses return independently, so memory latency is hidden behind other in-flight work and disjoint traffic runs truly in parallel.

This is why "just make AHB faster" doesn't reach AXI-class throughput: a faster or wider shared bus still serializes. The win is concurrency, a property of the protocol model, not a clock-frequency knob.

Concurrency depth comparison: APB has no overlap and serial transfers, AHB has a one-deep pipeline with one transfer in flight, and AXI supports many outstanding out-of-order transactions.depth0depth1depthNAPBAHBAXISerial — no overlapone transfer, two phasesOne in flightone-deep pipeline, sharedbusMany outstandingout-of-order, parallel paths12
Figure 2 — concurrency depth. APB does one transfer with no overlap; AHB keeps one transfer in flight with a one-stage pipeline; AXI keeps many transactions outstanding with out-of-order completion. Bandwidth scales with this depth, which is why a faster shared bus never matches a decoupled one.

7. Cost & Complexity — Why Heavier Isn't Always Better

The comparison is incomplete if it only counts bandwidth, because capability has a price and a good architect spends it deliberately. AXI's outstanding transactions, out-of-order completion, and interconnect routing are real gate count, real timing-closure effort, and a verification space that is orders of magnitude larger than APB's. Putting AXI on a handful of status registers buys nothing and pays all of that cost.

So the three buses occupy three points on a capability-vs-cost curve, and the right choice is the cheapest bus that meets the traffic's need — not the most capable one available.

Capability versus cost trade-off: APB is low cost and low capability, AHB is moderate, AXI is high capability and high cost; choose the cheapest bus that meets the requirement.more capability →more capability →APBlow cost · low bandwidthAHBmoderate cost · moderatebandwidthAXIhigh cost · high bandwidth12
Figure 3 — capability versus cost. The three buses sit at three points on the same curve: APB is cheap and low-bandwidth, AHB is the moderate middle, AXI is high-capability and high-cost. The engineering goal is the cheapest bus that meets the need — over-provisioning wastes area, power, and verification effort.

8. Choosing Between Them

In practice the choice is a short series of questions about the traffic, not about the protocols' prestige. Work top-down: start from the cheapest bus and only step up when a real requirement forces you to.

Bus selection decision flow: if the traffic is only low-speed registers use APB; else if it is a simple mostly single-master subsystem use AHB or AHB-Lite; else if it needs concurrent high-bandwidth masters use AXI.yesnoyesnoyesWhat is thetraffic?Onlylow-speedregister /control?APBSimple,mostlysingle-master?AHB / AHB-LiteConcurrent,high-bandwidthmasters?AXI
Figure 4 — a practical selection flow. Start cheap and climb only when a requirement demands it: registers stay on APB; a simple single-master subsystem is fine on AHB-Lite; concurrent high-bandwidth masters need AXI. (Coherency between caching masters pushes you to ACE/CHI — see the previous chapter.)

9. Common Misconceptions

10. Debugging Insight

11. Verification Insight

12. Interview Questions

13. Summary

APB, AHB, and AXI are three memory-mapped AMBA buses that differ in how a transfer is structured and how many transfers can be in flight at once. APB runs one two-phase transfer at a time — cheap, serial, perfect for control registers. AHB pipelines address over data on a shared, held bus and adds bursts and arbitration — moderate bandwidth, ideal for simple mostly-single-master subsystems. AXI decouples address, data, and response onto independent paths through a switch, keeping many transactions outstanding with out-of-order completion — high bandwidth for concurrent masters and memory, at a high logic and verification cost.

The unifying idea: capability climbs left-to-right and so does cost, so the right bus is the cheapest one that meets the traffic's need — not the most capable one available. Pipelining (AHB) is not concurrency (AXI); a faster shared bus does not become a decoupled one; and APB is a current, deliberate choice, not a relic. Carry the three questions — transfer model, transfers-in-flight, and cost — and you can compare these buses, and predict their behaviour, on sight.

14. What Comes Next

You can now compare the three classic buses at the mechanism level. The next chapter builds the model that the rest of the AXI track depends on:

  • 1.4 — The AXI Mental Model (coming next) — the channel-and-transaction model AXI is built on, the foundation for every chapter after Module 1.

Previous: 1.2 — The AMBA Family Overview. For the broader protocol catalog, see the AMBA family overview doc.