Technopedia

The technologist’s encyclopedia

On-chip interconnects

On-chip interconnects are the metallic or polysilicon wires that carry signals between functional units within a single silicon die. They are relevant whenever a processor or SoC must move data between its own components: between a core and its L1 cache, between cores in a multicore chip, or between a CPU and an on-die memory controller. At the µm–mm scale, the dominant physics is RC delay, and the design discipline is transistor-level timing closure.

This page covers the three canonical topologies in increasing order of scale and complexity — shared bus, crossbar, network-on-chip — plus the innermost interconnect of all, the register file. The consumer of these wires on the core side (pipelines, renaming, out-of-order execution) is described in CPU Architecture; the latency and bandwidth context that motivates the whole design is in Memory Hierarchy; and the boundary where an “interconnect” stops being on-chip (chiplets, package substrates, PCB traces) is covered in Board-level electrical interconnects.

The physics: RC delay

Details

Why is RC delay the dominant physics on-die, when board-level traces are transmission lines? A wire must be treated as a transmission line only when its length is a significant fraction of the signal’s rise-time distance (L≳trise⋅vL \gtrsim t_\text{rise} \cdot v where vv is the propagation speed, roughly c/2c/2 in silicon dioxide). On-die wires are µm to a few mm long with sub-100-ps rise times, so they behave as lumped RC circuits: no reflections, no impedance matching, no termination. The wire is a resistance in series with a capacitance to the substrate and to neighbouring wires.

The classic model is the Elmore delay for a distributed RC line of length LL, with resistance rr and capacitance cc per unit length:

tpd≈0.69 r c L2t_{pd} \approx 0.69\, r\, c\, L^2

The quadratic dependence on length is the single most important fact on this page: doubling a wire’s length quadruples its delay. Three design consequences follow:

  1. Repeaters. Long wires are split into nn segments separated by buffers, turning L2L^2 into n⋅(L/n)2=L2/nn \cdot (L/n)^2 = L^2/n. This is why NoC routers exist at all: a 10 mm wire is unusable, but ten 1 mm segments with a register at each boundary are fine.
  2. Wires do not scale. Transistor delay has improved by orders of magnitude per process generation; wire resistance and capacitance have not (copper resistivity rises with thinning, and capacitance is set by geometry). On modern chips, interconnect — not transistors — sets the critical path.
  3. Crosstalk. The same capacitance that sets delay couples neighbouring wires; a bus bundles its wires so they switch together, and spacing or shielding protects critical signals.

Shared bus

Definition. A single set of wires shared by all participants; only one master drives the bus at a time, selected by an arbiter.

Shared bus with a central arbiter CPU core GPU DMA engine Video codec Address Data Control Arbiter One master granted at a time; all others tri-state their drivers
Details

A shared bus is the simplest interconnect topology. All masters (CPU, DMA, GPU) connect to the same address, data, and control lines. An arbiter (typically a priority encoder or round-robin) grants bus access to one master at a time; every other master tri-states its drivers.

Example. The canonical on-chip example is ARM’s AMBA family, which wires the peripherals of most ARM-based SoCs (and many others). AMBA AHB is a multi-master system bus supporting burst transfers and split transactions; AMBA APB is a simple, low-power, single-manager bus for slow peripherals (UARTs, timers, GPIO). A typical SoC hangs a fast AHB backbone off the CPU and bridges it to an APB segment for the slow periphery. AMBA AXI (IHI 0022) generalises this into point-to-point channels — see the crossbar section below.

The key trade-off: a shared bus is cheap — the wire count is O(1)O(1) in the number of masters, since the bus width does not grow — but the aggregate bandwidth is fixed. Adding masters adds contention, not throughput.

Fairness. Under strict priority, a low-priority master can be starved indefinitely (a bounded-unfairness problem, distinct from priority inversion, which is when a low-priority holder of a resource blocks a high-priority requester). Round-robin or weighted fair queuing guarantees each master a bounded wait.

Try it yourself: the simulation below runs four masters against a strict-priority and a round-robin arbiter. Master 0 requests every cycle; watch its share of grants under each policy, and watch the starvation counter for the low-priority masters.

Example problem

Two masters request the bus simultaneously. Master A has priority 1, Master B has priority 2. The arbiter uses strict priority. Which master gets the bus, and what is the worst-case wait for Master B?

Solution

Master A gets the bus (higher priority). Master B waits until Master A releases the bus. In the worst case, if Master A issues back-to-back transactions, Master B can be starved indefinitely — plain starvation under strict priority (not priority inversion, which requires a resource holder). This motivates round-robin or weighted fair queuing in modern arbiters, which bound the wait to at most one transaction per competing master.

Authoritative sources

Crossbar

Definition. A fully connected switching fabric: every input port can be connected to any output port simultaneously, giving non-blocking, point-to-point paths.

4×4 crossbar: the worked example's matching Core 0 Core 1 Core 2 Core 3 MC 0 MC 1 MC 2 MC 3 ● granted ● blocked ○ idle A valid configuration is a matching: at most one connection per input and per output
Details

A crossbar (or crosspoint switch) provides a dedicated path between any input and any output. If there are NN inputs and NN outputs, the crossbar has N2N^2 crosspoints — one connection point where an input row crosses an output column, each a pass-gate plus its control logic. (A 2×2 switch is a small building block assembled from several crosspoints, not a crosspoint itself.) Each cycle the configured connections must form a matching: at most one connection per input and per output, which is the only way a crossbar “blocks”.

Example. A 4-core CPU with a 4×4 crossbar connecting four cores to four memory controllers. Each core can access its own memory controller simultaneously with the other cores accessing theirs — no contention. AMBA AXI is the standard channel-based protocol spoken over such point-to-point fabrics: five independent channels (read address/data, write address/data, write response) per manager–subordinate pair, which is what makes parallel paths useful.

The cost is quadratic in the number of ports: a 16×16 crossbar has 256 crosspoints, each with routing logic, and the wires to reach them grow too. This is why large SoCs move to ring or mesh topologies.

Example problem

A 4×4 crossbar connects 4 cores to 4 memory controllers. Core 0 requests MC 2, Core 1 requests MC 2, Core 2 requests MC 0, Core 3 requests MC 3. How many requests can be served simultaneously?

Solution

Core 0→MC 2, Core 2→MC 0, and Core 3→MC 3 can all be served simultaneously (no two share an input or output). Core 1→MC 2 conflicts with Core 0→MC 2 (same output), so it must wait. Three of four requests are served in this cycle.

Ring and mesh NoC

Definition. A Network-on-Chip (NoC) replaces the crossbar with a regular topology (ring, 2-D mesh, torus) where each node is a router connected to its neighbours. Packets are routed hop-by-hop.

4×4 mesh NoC: a packet routed corner to corner hop 0 / 6
Details

As core counts grew beyond ~16, the quadratic wire cost of a crossbar became prohibitive. A mesh NoC connects each router to its north, south, east, and west neighbours; a ring connects each node to exactly two neighbours. A packet traverses multiple hops, each adding one router latency (~1–2 cycles). The animation above walks a packet from router (0,0) to router (3,3) — six hops, the mesh’s diameter.

Examples. Intel’s client CPUs (Skylake through Coffee Lake) connect cores, cache slices, and the integrated GPU over a bidirectional ring; AMD’s Infinity Fabric in Ryzen/EPYC is likewise assembled from ring segments. For larger fabrics, Intel’s Xeon Phi (Knights Landing) used a 2-D mesh across its 72 cores. Coherent NoC protocols are standardised too: AMBA CHI (IHI 0051) and ACE define snoop, DVM, and data messages over such fabrics, so that a mesh can be cache-coherent out of the box.

The trade-off: a mesh scales linearly in wire count — an N×NN \times N 2-D mesh has 2N(N−1)2N(N-1) bidirectional links (NN rows of N−1N-1 horizontal links plus NN columns of N−1N-1 vertical links; boundary nodes have fewer neighbours) — but latency grows with the diameter, 2(N−1)2(\sqrt{N}-1) hops for an N×NN \times N mesh of NN nodes. Virtual channels and wormhole routing mitigate head-of-line blocking.

Example problem

A 4×4 mesh NoC has 16 cores. What is the maximum hop count (diameter) between any two cores, and how does this compare to a 4×4 crossbar?

Solution

The diameter of a 4×4 mesh is 6 hops (corner to opposite corner: 3 + 3). A 4×4 crossbar has a diameter of 1 hop (any input to any output in a single switch). The mesh trades 6× latency for a much lower wire count: the mesh has 2⋅4⋅3=242 \cdot 4 \cdot 3 = 24 bidirectional links, while the crossbar has 42=164^2 = 16 crosspoints per direction of transfer — but the crossbar’s wiring and muxing per crosspoint is far heavier, and the gap explodes with port count (a 16×16 crossbar needs 256 crosspoints versus 480 mesh links for a 16×16 mesh of 256 nodes).

Authoritative sources

The standard textbook is W. Dally & B. Towles, Principles and Practices of Interconnection Networks, Morgan Kaufmann, 2004.

Register file and on-die SRAM

Definition. The register file is the innermost interconnect: the multi-ported array of flip-flop-based bit-cells and the metal routing that lets execution units read operands and write results in a single cycle, over wires only tens of µm long.

Details

A register file is not a bus in the traditional sense, but it is where all on-chip interconnect begins: the ALU reads two registers and writes one result per cycle, and the “interconnect” is the metal routing from the execution units to the register file, typically 10–100 µm. In the memory hierarchy it is the top level — and structurally it is not an SRAM array: SRAM optimises density with few ports, while a register file needs many ports, so it is built from flip-flop/latch bit-cells with dedicated access paths per port.

Example. The x86-64 architectural register file has 16 general-purpose registers (64 bits each). Out-of-order cores keep a much larger physical register file to support register renaming — how and why is covered in CPU Architecture; the interconnect-relevant fact is simply that many execution units must each read two registers and write one every cycle, so the port count, not the capacity, dominates the design.

The design constraint is access time: a register file must be readable and writable in a single clock cycle (~0.3 ns at 3 GHz). Each additional read port adds a full set of word-lines and bit-lines spanning the whole array, so area grows roughly quadratically in port count while capacity grows linearly. This limits the size to a few hundred entries; beyond that, the array becomes too large (and its wires too long, per the RC-delay section) to access in one cycle.

Example problem

A register file has 32 registers of 64 bits, with 2 read ports and 1 write port. How many bit-cells does it contain, how many per-port access paths does that imply, and why does the port count — not the 2048 bits — dominate its area?

Solution

Capacity: 32×64=204832 \times 64 = 2048 bit-cells. Each bit-cell needs one access path per port: 2048×3=61442048 \times 3 = 6144 port paths. Each read port requires its own word-line per register and its own bit-line per bit, routed across the entire array — so going from 1 to 2 read ports roughly doubles that wiring, while doubling capacity (32→64 registers) only doubles the cell count. Because the wiring per port spans the whole array and must charge/discharge within one ~0.3 ns cycle, area and delay are set by the port count; this is exactly why register files stop at a few hundred entries and why caches (which need few ports) use dense SRAM instead.

The package boundary: die-to-die

When the “interconnect” crosses from one silicon die to another inside a single package — chiplets linked by UCIe, AMD’s Infinity Fabric, Intel’s EMIB — the engineering regime changes: the distances (1–10 mm) and the bump/TSV parasitics belong to packaging, not to on-die RC design. That subject is treated in Board-level electrical interconnects, and the fabrication side (TSV formation, microbump placement, CoWoS assembly) in Interconnect and packaging.

Scaling summary

The three topologies are three points on a single trade-off: wire count versus blocking.

TopologyWire countBlockingLatencyTypical use
Shared busO(1) — fixed width, independent of master countFully blocking: one transaction at a time1 hop + arbitration waitPeripheral fabrics (AMBA APB/AHB)
CrossbarO(N²) crosspoints and muxingNon-blocking (limited only by matching conflicts)1 hopCore ↔ cache banks, small SoC fabrics (AMBA AXI)
RingO(N) linksContention on shared segmentsUp to N/2 hopsClient CPUs, mid-size coherent clusters
2-D meshO(N) links — 2N(N−1) for an N×N meshLocal contention, multi-hopUp to 2(√N−1) hopsMany-core (Xeon Phi), coherent NoC (AMBA CHI)

A bus buys universality with O(1) wires and pays with total serialization; a crossbar buys zero blocking with O(N²) hardware; a ring or mesh buys O(N) scalability with multi-hop latency. Every on-chip fabric in production is a hybrid of these three — e.g. crossbars inside a cluster, rings or meshes between clusters.

Quiz

Example problem

A SoC has 4 cores and 4 memory controllers. Every link is 64 bits wide and runs at 1 GHz, so one link carries 8 GB/s. Compare three fabrics:

(a) a single shared 64-bit bus at 1 GHz; (b) a 4×4 crossbar; (c) a 4×4 mesh where each memory controller hangs off one router and each hop adds 1 cycle of latency.

(i) What is the peak aggregate bandwidth of each fabric? (ii) All 4 cores each demand 8 GB/s from a distinct memory controller. Which fabrics sustain this? (iii) In the mesh, a core sits 3 hops from its controller. What latency does that add compared to the crossbar?

How to solve
Solution

(i) The bus carries 8 GB/s total — its width and clock are fixed, so aggregate bandwidth is 8 GB/s no matter how many masters contend. The crossbar gives each of the 4 input–output pairs its own 8 GB/s path: 32 GB/s aggregate. The mesh also has 4 private controller links (32 GB/s in principle), but flows that share a link must split it, so the sustainable aggregate depends on the traffic pattern.

(ii) The bus cannot: 4 × 8 = 32 GB/s is demanded of an 8 GB/s medium. The crossbar can: four distinct inputs to four distinct outputs is a valid matching, so all four flows run at full speed simultaneously. The mesh can too, if the four flows’ paths are link-disjoint; if two flows cross the same link, they share its 8 GB/s.

(iii) The crossbar delivers in 1 hop; the mesh needs 3 hops, i.e. 2 extra cycles of latency per request (more if routers pipeline header/body separately). This is the price of the mesh’s O(N) wiring: bandwidth scales, latency grows with distance — the exact inverse of the bus, whose latency is constant but whose bandwidth never scales.