An interconnect with 8 agents is a crossbar: any agent can reach any other in one hop, several pairs at once. The next chip has 64 agents. The same crossbar would need 4,096 crosspoints and wires that cross the whole die, and it no longer closes timing. The designers switch to a mesh, accept a few more hops of latency, and gain a fabric that grows one tile at a time.
How should many agents share the wires between them, and how does the answer change as their number grows?
The obvious answer for a few agents is one shared bus: everyone on the same wires, one transfer at a time. It is cheap and simple, and its bandwidth is fixed however many agents join, so each agent's share shrinks as the count grows. The opposite extreme, a dedicated path between every pair, gives everyone full bandwidth and costs wires and switches that grow with the square of the count. Every real topology sits somewhere between.
Topology | Bandwidth as agents grow | Latency | Cost grows as | Typical use |
|---|---|---|---|---|
Bus | Fixed total, shared by all | One hop, plus waiting for the bus | N (taps on one wire) | Few agents, low traffic: peripheral buses |
Crossbar | Up to N transfers at once | One hop | N² crosspoints, long wires | Up to a few tens of agents |
Ring | Grows with N, but traffic shares segments | Up to N/2 hops | N links | Moderate counts, simple layout |
Mesh | Grows with N (many parallel links) | About √N hops across | N routers, short local links | Many agents on a large die |
Tree | Limited near the root | log N hops | N switches | Hierarchies, aggregation of traffic |
Agents: 8 64
Crossbar crosspoints (N x N): 64 4,096
Mesh routers (one per agent): 8 64 (a 2x4 grid, then 8x8)
Mesh worst-case hops (corner to corner, 8x8): 7 + 7 = 14
Bus: one transfer at a time whether 8 or 64 agents share itThe crossbar's cost grows 64 times for 8 times as many agents; the mesh's grows 8 times, paid for in hops. That trade, area and wire length against latency, is the core of the choice.
Arbitration wherever two transfers want the same wire or output (lessons 8.2 to 8.6).
Routing wherever there is more than one way to get somewhere (lesson 8.9).
Flow control on every link, so shared buffers do not overflow (Part 4).
A deadlock argument wherever paths can form cycles: rings and meshes (Part 9).
A design (illustrative) kept growing a crossbar from 12 to 32 ports to avoid changing its software model. The crossbar met its bandwidth target on paper but its wires spanned the die, it needed extra pipeline stages that added latency to every access, and its area doubled twice. A two-level design, small crossbars joined by a ring, delivered the bandwidth with a fraction of the wiring.
From 256 to 1,024: four times.
The bus carries one transfer at a time; its total bandwidth is fixed and is shared among more agents.
Bus, crossbar, ring, mesh and tree trade area and wire length against bandwidth and hop count.
Crossbars grow as N² and suit tens of agents; meshes grow as N and suit many, at about √N hops.
Every shared topology needs arbitration, routing, flow control and a deadlock argument.