Skip to content

AMBA AXI · Module 12

Arbiter & Arbitration

How an AXI interconnect resolves contention at a shared subordinate — round-robin, fixed-priority, and QoS-weighted arbitration schemes, the fairness-vs-priority trade-off, the arbiter state machine, and starvation avoidance.

When multiple managers target the same subordinate (the per-subordinate contention of Chapter 12.2), the interconnect must decide who goes first — that's the arbiter's job. The arbitration scheme determines the system's fairness (does any manager starve?), throughput (is the port kept busy?), and priority (do latency-critical masters get precedence?). This chapter covers the main schemes — round-robin, fixed-priority, and QoS-weighted — the fairness-vs-priority trade-off, the arbiter as a state machine, and how to avoid starvation.

1. The Arbiter's Job

At each shared subordinate port, an arbiter sees the set of managers currently requesting access and grants one per cycle (or per transaction). The granted manager's transaction proceeds; the others wait and are reconsidered next round. Arbitration happens on the address channels (AW and AR contention are arbitrated, each independently — read and write are separate), and similarly on response paths where they contend.

A good arbiter has three properties: no starvation (every requester eventually wins), high throughput (the port isn't idle while requests are pending — grant someone every cycle there's a request), and policy (it can favor higher-priority/QoS masters when desired). The scheme chosen trades these off.

Three managers request one subordinate; an arbiter grants one per round and the others wait.M0 requestswaitingM1 requestsgrantedM2 requestswaitingArbitergrant one per roundSubordinateserves granted manager12
Figure 1 — the arbiter at a shared subordinate port. Multiple managers request the same subordinate; the arbiter grants one per round, the others wait and are reconsidered. Arbitration is per-channel (AW and AR independently). A good arbiter is starvation-free, keeps the port busy, and can honor priority/QoS.

2. The Arbitration Schemes

The common schemes:

  • Round-robin (RR): rotate priority among requesters so each gets a fair turn — after granting a manager, it goes to the back of the line. No starvation, fair bandwidth distribution. The common default for general traffic.
  • Fixed-priority: managers have static priorities; the highest-priority requesting manager always wins. Simple and low-latency for the top priority, but lower-priority masters can starve if a high-priority one is always requesting.
  • QoS-weighted: use AxQOS (Chapter 6.5) to weight arbitration — higher-QoS transactions get more grants/precedence. Programmable priority that lets software/system tune which masters get bandwidth under contention.
  • Weighted round-robin / least-recently-granted: hybrids that give some masters proportionally more turns while still bounding everyone's wait — balancing fairness and priority.

The choice depends on the traffic: RR for fairness among equals, fixed-priority where one master is genuinely most critical (and starvation of others is acceptable or impossible), QoS-weighted for tunable, mixed-criticality systems.

Round-robin fair no starvation; fixed-priority simple but starves; QoS-weighted programmable; weighted-RR balances.Round-robinfair, no starvation (default)Fixed-prioritytop wins, can starve othersQoS-weightedAxQOS-tuned precedenceWeighted RR / LRGproportional + bounded wait12
Figure 2 — arbitration schemes. Round-robin: rotate turns, fair, no starvation (default). Fixed-priority: highest-priority requester always wins — simple, low-latency for top priority, but can starve the rest. QoS-weighted: AxQOS weights grants — programmable, tunable bandwidth. Weighted-RR/LRG hybrids balance proportional priority with bounded waits.

3. The Arbiter State Machine

Conceptually, an arbiter cycles through request → grant → advance:

Idle to Grant on a request, Grant to Rotate on acceptance, Rotate to Grant if more requests or to Idle if none.request(s) present: grant (RR order)request(s)present: grant (R…transfer accepted: advance past winnertransfer accepted:advance past…more requestspendingno requestsIdle (norequests)GrantwinnerRotatepointer
Figure 3 — a round-robin arbiter state machine. From Idle (no requests), when request(s) arrive it grants the highest-priority requester in the current rotation (Grant); when the transfer is accepted it advances the rotation pointer past the winner (Rotate); then it grants the next pending requester, or returns to Idle if none. The rotating pointer is what makes it fair (no starvation).

The rotating pointer is what gives round-robin its fairness: after a manager wins, the pointer moves past it, so it won't win again until everyone ahead of it in the rotation has had a turn — bounding each manager's worst-case wait. Fixed-priority lacks this (the pointer never moves off the top priority), which is why it can starve. The arbiter also typically grants per address transaction (once granted, the manager's burst proceeds on the granted path), then re-arbitrates for the next.

4. Fairness vs Priority — The Core Trade

Arbitration is fundamentally a fairness-vs-priority trade-off:

  • Fairness (round-robin) treats requesters equally — no one starves, bandwidth is shared evenly. Best when masters are peers and predictable latency for all matters.
  • Priority (fixed-priority) favors the most critical master — lowest latency for it — at the cost of potentially starving others. Best when one master genuinely must come first (e.g., a real-time display controller that must never underflow) and starving others is acceptable.
  • QoS-weighted is the tunable middle: it lets the system grant proportionally more bandwidth to higher-QoS masters without fully starving lower ones — combining priority's responsiveness with fairness's safety, programmable per workload.

Real interconnects often use QoS-weighted or weighted round-robin precisely because pure fairness ignores criticality and pure priority risks starvation. The arbitration policy is a key performance knob: it determines, under contention, which master gets the bandwidth and which waits — directly shaping system latency and throughput.

Round-robin for fairness, fixed-priority for criticality with starvation risk, QoS-weighted as the tunable balance.peersone criticalmixedEqual peers,or mixedcriticality?Equal →round-robin(fair, nostarvation)One critical →fixed-priority(starvationrisk)Mixed →QoS-weighted(tunablebalance)
Figure 4 — the fairness-vs-priority trade. Round-robin maximizes fairness (no starvation, equal shares) but ignores criticality. Fixed-priority maximizes responsiveness for the top master but can starve others. QoS-weighted (and weighted-RR) is the tunable middle — proportional priority with bounded waits. The policy is a performance knob set to the traffic's criticality mix.

5. Common Misconceptions

6. Debugging Insight

7. Verification Insight

8. Interview Questions

9. Summary

The arbiter resolves contention at a shared subordinate port (per-subordinate, per-channel), granting one of the competing managers per round. The main schemes: round-robin (rotate turns — fair, no starvation, the default for peers), fixed-priority (top requester always wins — simple and low-latency for it, but can starve others), QoS-weighted (use AxQOS to weight grants — programmable, proportional priority without full starvation), and weighted-RR/LRG hybrids. The rotating pointer is what makes round-robin starvation-free; fixed-priority's static pointer is why it can starve. A good arbiter is starvation-free, work-conserving (no idle cycles with pending requests), and policy-honoring.

The core trade-off is fairness vs priority: round-robin maximizes fairness, fixed-priority maximizes responsiveness for one master (risking starvation), and QoS-weighting is the tunable middle for mixed-criticality systems — which is why real interconnects favor QoS-weighted/weighted-RR. Arbitration is a key performance knob, and its bugs (starvation, unfairness, ignored QoS, priority inversion, non-work-conserving) are performance/fairness failures that functional tests miss — so verify the fairness/weighting behavior (bounded waits, grant distribution, utilization) under sustained contention, not just transaction correctness. Next: mux/demux and ID-based routing — how responses find their way back through the interconnect.

10. What Comes Next

You've got contention resolution; next, routing responses back:

Previous: 12.3 — Decoder & Address Map. Related: 6.5 — AxPROT, AxQOS & AxREGION for the QoS signal, and 12.2 — Crossbar Architecture for the per-subordinate contention this resolves. For the broader protocol catalog, see the AMBA family overview doc.