Answer each question out loud before opening it. If you miss more than three in the checkpoint, revisit the lessons linked at the end.
When its N² crosspoints and die-spanning wires outrun area and timing, typically in the tens of ports; then a mesh or hierarchy wins.
Keep a pointer to the last winner; grant the first asking requester after it, wrapping; move the pointer to the winner.
Only if higher-priority traffic is rate-bounded; otherwise lower requesters can starve.
The CPU waits on the held resource, not on arbitration; if the holder is slow or preempted by medium traffic, the wait is unbounded.
Per beat cuts waiting but needs interleaving; per burst is simpler, so cap burst length on shared links.
Wired-AND SDA; each reads back every bit; driving 1 but reading 0 means lost, so it stops; the winner's bits are intact.
Class plus priority with ageing, a token bucket on the GPU, reserved queue slots or a VC for the display, capped bursts, and a hop-by-hop latency budget.
It never turns from Y back to X, and every cycle in a mesh needs such a turn.
Task. Eight agents share a memory port: one display (2 GB/s, 1 µs worst latency), one GPU (bulk), and six CPU clusters (latency-sensitive, moderate bandwidth). The port moves 25 GB/s. Design the arbitration and QoS.
Three classes: real-time (display), latency-sensitive (CPUs), bulk (GPU). At the port: strict priority for real-time but with a token bucket at about 2.5 GB/s so it can never starve others; weighted round-robin between CPUs and GPU, CPUs weighted higher, with ageing so the GPU always progresses. Reserve a few queue slots for the display and for CPUs so neither waits behind queued GPU traffic. Regulate the GPU (say 18 GB/s average, bounded burst) to keep total demand below the memory's sustained bandwidth and its queues short. Cap bursts at 16 beats on the shared path so a grant cannot hold the port long. Budget the display's worst latency: one capped burst in progress plus the memory controller's latency at expected load, and verify with a saturating GPU and CPU load.
Crossbar N²; mesh N, with about √N hops.
At most one grant per resource per cycle, and only to requesters that ask.
5.
A high-priority requester waits on a low-priority holder that is kept from finishing by medium-priority traffic.
Grants to others times the longest burst.
The dominant value, 0.
So a misbehaving high-priority source cannot starve everything else.
A buffer sized for its credit loop, a credit loop, arbitration and allocation, and a VC field.
From Y back to X.
N − 1 messages (often plus answers) per event, and events grow with N too.