6.3.3 · D2Interconnects, Buses & SoC

Visual walkthrough — PCIe lanes, links, and bandwidth

2,297 words10 min readBack to topic

This is the visual walkthrough. We start from a single wiggling wire and end at "PCIe 4.0 x16 gives 31.5 GB/s one way." Every step has a picture. If you meet a symbol you have not seen, it gets built here — nothing is assumed from the parent note.


Step 1 — What a lane physically is

WHAT. A lane is not one wire. It is two wire-pairs: one pair carries data out of the device (the TX pair, Transmit), one pair carries data in (the RX pair, Receive). Each pair is two copper traces carrying mirror-image voltages — this is differential signaling and it kills electrical noise, because noise hits both wires equally and cancels when you subtract them.

WHY start here. Everything downstream — the "×2 for both directions" at the very end — only makes sense once you see that a lane already has two separate roads baked in.

PICTURE. Look at the figure: the black lines are the four physical wires of ONE lane. The red arrows show the two independent directions of traffic. They never wait for each other — that is what full-duplex means.

Figure — PCIe lanes, links, and bandwidth

Related depth: PCIe Electrical Signaling.


Step 2 — What one wire actually sends: the raw transfer rate

WHAT. On ONE pair, the voltage flips up and down. Each flip that the receiver can resolve is one transfer — one raw symbol on the wire. The speed of these flips is the raw transfer rate, measured in GT/s (GigaTransfers per second = transfers each second).

Term by term:

  • — the symbol we invent for "raw flips per second on the wire."
  • — the number the standard fixes for Gen 3.
  • — the unit; transfers, not yet bits of your data, because some of those transfers are overhead (Step 3).

WHY "GT/s" and not "Gbps" yet. We must NOT call these gigabits of payload — some transfers carry housekeeping. Naming the raw quantity separately keeps us honest. A transfer here happens to equal one raw bit, but the payload count is smaller.

PICTURE. The red trace is the voltage on one pair. Each shaded slot is one transfer. Count the slots per second → that is .

Figure — PCIe lanes, links, and bandwidth
Gen per lane
1.0 2.5 GT/s
2.0 5.0 GT/s
3.0 8.0 GT/s
4.0 16.0 GT/s
5.0 32.0 GT/s

Step 3 — The tax: encoding overhead

WHAT. The receiver needs to know where one bit ends and the next begins (clock recovery) and needs the signal to have no long runs of all-1s or all-0s (DC balance). To guarantee this, PCIe never sends your raw data alone — it wraps it. This wrapping is encoding overhead.

  • PCIe 1.0 & 2.0 use 8b/10b: every 8 data bits are shipped as 10 wire bits. Efficiency → you keep 80%.
  • PCIe 3.0+ use 128b/130b: every 128 data bits are shipped as 130 wire bits. Efficiency → you keep ~98.46%.

Define the encoding efficiency:

  • numerator = the bits you actually wanted to send.
  • denominator = the bits the wire actually carried (data + wrapper).
  • The ratio is always : overhead can only take away, never add.

WHY change the scheme at Gen 3? 8b/10b throws away 20% forever — brutal at high speed. 128b/130b throws away only ~1.5%, at the cost of harder circuitry. At Gen-3 speeds that trade finally paid off.

PICTURE. Two bars of equal wire length. In the red-tipped tiny slice you see the wasted bits: a fat 20% chunk for 8b/10b, a sliver of 1.5% for 128b/130b. The black portion is your real data.

Figure — PCIe lanes, links, and bandwidth

More: 8b10b Encoding · 128b130b Encoding.


Step 4 — Payload bits per second on one lane, one direction

WHAT. Multiply what the wire moves () by the fraction that is real data ():

For PCIe 3.0:

Term by term:

  • — transfers/s on the wire (Step 2).
  • — fraction that is payload (Step 3).
  • — payload gigabits per second. NOW we may say "Gbps," because the overhead has been removed.

WHY multiply and not subtract? Overhead is a proportion of the stream, not a fixed lump. A proportion scales with the rate → multiply by the ratio.

PICTURE. A funnel: 8.0 GT/s pours in the top, the red neck (the ×128/130 squeeze) narrows it, and 7.877 Gbps of pure data drips out.

Figure — PCIe lanes, links, and bandwidth

Step 5 — Bits to bytes

WHAT. People buy drives in gigaBYTES per second, and 1 byte = 8 bits, so divide:

For PCIe 3.0:

  • — payload bits/s (Step 4).
  • — bits in a byte (pure unit conversion, no physics).
  • — GB/s carried by one lane in one direction.

WHY divide by exactly 8, not 8.2 or 10? The encoding tax was already paid in Step 4. Here it is only the definition "8 bits make a byte." Nothing physical, just relabelling.

PICTURE. Eight small black bit-boxes snap together into one red byte-box, with the arithmetic over the arrow.

Figure — PCIe lanes, links, and bandwidth

Step 6 — Add the lanes (the parallel-highway step)

WHAT. A link of width is lanes side by side, all pushing data at once and independently. So bandwidth scales linearly:

For PCIe 3.0 x16:

  • — lane count (the "x16").
  • — one lane's GB/s (Step 5).
  • — GB/s for the whole link, one way.

WHY linear and not more? Lanes do not cooperate or share a clock's payload — each is a separate road. Two roads carry exactly twice one road. No synergy, no penalty.

PICTURE. Sixteen identical red arrows stacked as parallel lanes; the total-width brace on the right reads .

Figure — PCIe lanes, links, and bandwidth

Common widths (why a slot may not use all its pins): Motherboard Lane Allocation · PCIe Bifurcation.


Step 6b — Re-run the chain in Gen 4: reaching the headline number

WHAT. Everything above used Gen 3's GT/s. The only thing that changes for Gen 4 is that number — it doubles to GT/s. Same encoding , same , same . Run the identical pipeline:

Term by term:

  • — Gen-4 raw rate, exactly double Gen 3.
  • — unchanged encoding efficiency.
  • — unchanged bits-to-bytes.
  • — the x16 lane count.
  • this is our promised headline: PCIe 4.0 x16, one-way.

WHY show this separately. The intro promised "PCIe 4.0 x16 → 31.5 GB/s one-way," so here is the explicit standalone calculation. Notice Gen 4 = exactly every Gen-3 number, because doubling only doubles the whole product.

PICTURE. The Gen-3 result (15.75) and the Gen-4 result (31.5) side by side; the red arrow marks the ×2 that comes purely from doubling .

Figure — PCIe lanes, links, and bandwidth

Step 7 — Both directions at once (aggregate vs one-way)

WHAT. Recall Step 1: each lane has a TX road AND an RX road running together. So there are two honest numbers (using our Gen-4 x16 headline):

  • — what you get reading or writing (e.g. a GPU pulling textures from RAM).
  • — TX + RX added together; the big marketing number.

WHY keep them separate? Most workloads are lopsided — a GPU mostly reads. Quoting the aggregate 63 GB/s when you can only use 31.5 GB/s one-way is the single most common way people over-estimate PCIe.

PICTURE. The red TX arrow and a black RX arrow, each labelled 31.5 GB/s, meeting a "+" that yields 63.0 GB/s aggregate.

Figure — PCIe lanes, links, and bandwidth

Step 8 — Edge and degenerate cases

Every scenario the reader can hit:

  • N = 1 (x1 link). Gen 4: GB/s. The formula still holds — one lane is just the base case.
  • Gen 1 / Gen 2 (8b/10b). jumps to . PCIe 2.0 x1 GB/s. The only thing that changes across generations is and ; Steps 4–7 are untouched.
  • Slot wider than lanes wired ("x16 @ x8"). The physical connector has 16 pins but only 8 are electrically live. Use , the negotiated width, never the slot's shape. See Motherboard Lane Allocation.
  • Bifurcation (x16 → x8/x8). The 16 lanes split into two independent links. Each device sees GB/s (Gen 4, rounds to 15.75); the two together sum back to the full GB/s. You divided, you did not lose. See PCIe Bifurcation.
  • Zero active lanes (). Link is down — . Not a trick; the linear formula degrades gracefully to "no lanes, no data."

PICTURE. A 16-pin slot outline with only 8 pins glowing red ("x16 @ x8"), beside a bifurcated slot split down the middle into two red x8 halves.

Figure — PCIe lanes, links, and bandwidth

The one-picture summary

Every layer, one flow, in Gen 4: raw transfers → subtract encoding tax → bits to bytes → multiply by lanes → double for both directions, ending at the headline 31.5 GB/s one-way.

Figure — PCIe lanes, links, and bandwidth
Recall Feynman retelling — say it back in plain words

A lane is four wires: two carry data out, two carry data in, and they work at the same time. On one of those roads the voltage flips a fixed number of times per second — call that the raw rate, in GigaTransfers. But not every flip is your data: some flips are wrappers so the receiver can find the beat and stay balanced. Old PCIe wasted 1 in 5; new PCIe wastes only ~15 in 1000. Multiply the raw rate by "fraction that's real data" and you get real bits per second. Divide by 8 because a byte is 8 bits, and now you have GB/s for one lane, one way. Stack lanes side by side and just multiply by — they're separate roads, so it's plain addition. For Gen 4 the raw rate is doubled to 16 GT/s, so every number doubles: one lane is 1.969 GB/s, and x16 is 31.5 GB/s one way. Finally, since every lane already had an out-road and an in-road, you can double again if you count both directions (63 GB/s aggregate) — but for a GPU pulling data one way, the single-direction 31.5 GB/s is the honest number. Corner cases: fewer live pins than the slot shows? use the real lane count. Split a x16 into two x8? each half is smaller, but nothing vanished.