6.3.2 · D2Interconnects, Buses & SoC

Visual walkthrough — PCI Express (PCIe) architecture and generations

1,834 words8 min readBack to topic

This page builds the effective bandwidth of a PCIe link from absolute zero. We start with two wires and a wiggling voltage, and end with the famous number "x16 Gen 3 = 15.75 GB/s per direction". Every symbol is earned before it is used. Read it top to bottom; each step has a picture that carries the idea.

Parent topic: PCI Express (PCIe) architecture and generations.


Step 1 — One lane is two tiny wire-pairs

WHAT. The smallest unit of PCIe is a lane. A lane is four wires: two carry data out (the transmit pair, TX), two carry data in (the receive pair, RX).

WHY two wires per direction and not one? A single wire measures voltage against a shared ground. Any electrical noise nearby pushes that voltage up or down and the receiver is fooled. Instead PCIe sends the same signal on two wires but flipped in sign — this is differential signalling. The receiver looks only at the difference between the two wires.

Here is the voltage on wire A, is the voltage on wire B, and the difference is the real signal. If noise adds the same amount to both wires, it cancels: . The noise vanishes.

PICTURE. The red and teal traces are the two wires; the noise bump hits both equally, so the plum "difference" line stays clean.

Figure — PCI Express (PCIe) architecture and generations

Step 2 — Voltage wiggles become bits: the raw pulse rate

WHAT. The transmitter flips the differential voltage between "high" and "low". Each flip is a chance to send one bit. The number of these chances per second is the transfer rate, measured in GT/s (gigatransfers per second) — billions of signalling opportunities per second.

WHY call it "transfers" and not "bits"? Because — as we will see in Step 6 — for the early generations one transfer really is one raw bit, but the encoding steals some of those bits. Keeping the name "transfer" reminds us: this is the line rate, not yet the data rate.

For PCIe Gen 3, one lane runs at

where is the raw per-lane transfer rate. That is voltage decisions every second, in each direction.

PICTURE. A square wave: each shaded slot is one "transfer" — one opportunity to be a 1 or a 0. Count the slots per second and you have .

Figure — PCI Express (PCIe) architecture and generations

Step 3 — Not every bit is yours: the encoding tax

WHAT. The raw stream cannot be pure data. The receiver has no separate clock wire; it must recover timing from the data itself. So PCIe pads the stream with extra bits. From Gen 3 onward the scheme is 128b/130b: for every 128 of your data bits, 2 housekeeping bits are inserted, making a 130-bit block.

WHY these extra 2 bits? They mark where each block begins and guarantee the voltage keeps flipping often enough for the receiver to stay locked. Without them, a long run of identical bits would leave the receiver "lost in the dark" with no edges to time against.

We define the encoding efficiency = fraction of the line that is actually your data:

Here is your payload bits and is the total bits actually sent. So of the line is "tax".

PICTURE. A bar of 130 slots: 128 orange "your data" slots, 2 plum "sync" slots. The tax is the thin plum sliver.

Figure — PCI Express (PCIe) architecture and generations

Step 4 — One lane, one direction: multiply rate by efficiency

WHAT. Now combine Steps 2 and 3. The useful data rate on one lane, one direction is the raw rate times the efficiency :

is the raw transfer rate (Step 2), is the usable fraction (Step 3), and the result is in gigabits per second (Gb/s), because each transfer here is one bit.

WHY multiply? Rate says "how many bits per second cross the wire"; efficiency says "what fraction of them are yours". Fraction-of-a-rate is a multiplication — exactly like "60 mph for of the trip".

PICTURE. A funnel: 8 Gb/s pours in the top, the 1.54% tax spills out the side, 7.877 Gb/s of pure data drips out the bottom.

Figure — PCI Express (PCIe) architecture and generations

WHAT. A link bundles several identical lanes side by side. The number of lanes is the link width, written = x1, x2, x4, x8, or x16 (the widest standard). Because each lane is fully independent, their data rates simply add:

is the number of parallel lanes, and Gb/s is the single-lane result from Step 4.

WHY add, not something cleverer? There is no shared clock and no arbitration between lanes at this level — 16 independent pipes each moving 7.877 Gb/s move Gb/s together. Plain addition.

PICTURE. Sixteen parallel pipes, each labelled 7.877 Gb/s, merging into one thick pipe labelled 126 Gb/s.

Figure — PCI Express (PCIe) architecture and generations

Step 6 — Bits to bytes, and the two-directions question

WHAT. Data storage is measured in bytes, and 1 byte = 8 bits. Convert:

Notice the case-sensitive units: Gb/s is gigabits, GB/s is gigabytes — off by a factor of 8. This is the famous x16 Gen 3 = 15.75 GB/s number.

The two-directions subtlety. Because the link is full-duplex (Step 1), the same 15.75 GB/s flows the other way at the same time. The aggregate is therefore:

PICTURE. A two-way street: 15.75 GB/s northbound, 15.75 GB/s southbound, the sign at the junction reading "31.5 GB/s total".

Figure — PCI Express (PCIe) architecture and generations

Step 7 — The degenerate and edge cases

Every scenario the reader might hit, so nothing surprises them.

  • x1 link (). The formula still holds: GB/s ≈ 985 MB/s per direction. This is the smallest real link.
  • The x32 "ghost". The spec defines x32 on paper, but no hardware ships it. Do not use in real calculations.
  • Gen 1 / Gen 2 (8b/10b). Here and one transfer is still one raw bit, so Gen 1 x1 = GB/s = 250 MB/s. Same formula, different and .
  • Gen 6 (PAM-4). The rules bend: instead of two voltage levels, PAM-4 uses four levels (), so each symbol carries bits. The "64 GT/s" figure already folds this doubling in, and the efficiency uses FLIT framing (). The shape of our derivation survives — only and change.

PICTURE. A small table-figure: three eye-diagrams side by side — NRZ (2 levels, wide open eye), PAM-4 (4 levels, three cramped eyes), showing why PAM-4 needs error correction (its voltage gaps are as tall).

Figure — PCI Express (PCIe) architecture and generations

The one-picture summary

The whole derivation is a chain of multiply-and-convert: raw rate → keep only your fraction → stack the lanes → convert to bytes → double for full-duplex.

Figure — PCI Express (PCIe) architecture and generations
Recall Feynman retelling — say it to a friend with no notation

Imagine one pipe that can push 8 billion pulses a second down the wire. But you can't use all of them — about 1 in 65 pulses is a little "timing marker" so the other end knows where it is, so only 98.46% of the pulses are your actual data. That leaves about 7.877 billion useful bits a second in one pipe. A big graphics-card slot bundles 16 of those pipes side by side, so multiply by 16 → 126 billion bits a second. Computer people count in bytes, and 8 bits make a byte, so divide by 8 → about 15.75 billion bytes a second going one way. And since data can flow both ways at once, if you add up both directions you get double, 31.5. The magic formula is just: rate, times the useful fraction, times how many pipes, divided by 8 — and double it if you're counting both directions. Every fancier generation only changes the "8 billion" and the "useful fraction"; the recipe never changes.

Reveal-me checks:

What does the "GT/s" (transfers/second) figure measure — data bits or raw line pulses?
Raw line pulses (signalling opportunities); the encoding tax has not yet been removed.
Why divide by 8 near the end?
To convert from bits (Gb/s) to bytes (GB/s), since 1 byte = 8 bits.
For x16 Gen 3, what is the per-direction bandwidth?
15.75 GB/s (and 31.5 GB/s aggregate for both directions).
Does going 8b/10b → 128b/130b give 13× more data?
No — it gives about 1.23× more usable data; the 13× is only the shrink in the wasted fraction.