6.3.2 · D3Interconnects, Buses & SoC

Worked examples — PCI Express (PCIe) architecture and generations

3,765 words17 min readBack to topic

This page is the calculator's playground for PCI Express architecture and generations. The parent note gives you the formulas; here we drive them through every situation you could meet — the tiny x1 link, the huge x16 link, the two different encodings, the sneaky "13× vs 1.23×" trap, and a PAM-4 signal-quality problem. By the end, no exam question about PCIe throughput should surprise you.

Every number below is machine-checked. If you follow a worked example and get a different number, you found the typo, not the vault.


The scenario matrix

Before touching a single number, let us map out every kind of question this topic can throw at you. Think of it like a chessboard: each square is a "case class", and we will make sure at least one worked example lands on every square.

Cell What makes it different Which example covers it
A — tiny link lane (smallest, catches per-lane errors) Example 1
B — wide link lanes (aggregation) Example 2
C — old encoding 8b/10b, efficiency Example 1, 3
D — new encoding 128b/130b, efficiency Example 2, 4
E — the ratio trap "13× less waste" vs "1.23× more data" Example 5
F — degenerate / zero or "raw = usable?" edge questions Example 6
G — full-duplex doubling multiply by 2 for bidirectional aggregate Example 7
H — real-world word problem "will an SSD saturate this slot?" Example 8
I — exam twist / PAM-4 SNR signal-quality, , dB Example 9

Let us pin down each knob with a picture before we compute.

Figure — PCI Express (PCIe) architecture and generations

What this figure shows (Figure 1 — the master pipeline). Read the diagram left to right as an assembly line that manufactures a bandwidth number. The lane-count box on the far left (lavender, and drawn as a rectangle) is your lane count — how many independent wire-pairs the link has. The arrow feeds into the raw-rate box (coral, drawn as a rounded rectangle), the raw transfer rate (in GT/s = gigatransfers per second) that each lane pushes. That feeds the efficiency box (mint, drawn as an ellipse), the encoding efficiency — always a fraction below 1, because every encoding sacrifices some bits for clock recovery and error checking. Finally the duplex box (butter, drawn as a diamond with a "?" mark because it is optional) is an optional : flip it on only when the question wants both directions added together. Each box is also labelled with a bold letter (L, R, E, ×2?) so you can refer to it without relying on colour. The white output box on the right (drawn with a thick double border) is the finished product — the bandwidth the exam is asking for. The italic caption under the line reminds you of the one extra move: divide by 8 if they want bytes rather than bits. Every single example below is just this same line with different numbers dropped into the four labelled boxes.

One unit fact we will lean on constantly:


Worked examples

Forecast: Guess now — will it be more or less than 312 MB/s (which is 2.5 Gb/s ÷ 8, ignoring encoding)? Because encoding throws away 20%, expect less.

Step 1 — set the knobs. , GT/s, and since 1 transfer = 1 bit here, that is Gb/s of raw line rate. Why this step? We are just reading the scenario into the master formula's slots. Gen 1 is one bit per transfer, so no PAM-4 subtlety.

Step 2 — apply encoding efficiency. . Why this step? Of every 10 bits on the wire, only 8 are your data. So multiply by .

Step 3 — convert to bytes. Divide by 8: Why this step? The question asks in MB/s (bytes), and 8 bits make a byte.

Answer: 250 MB/s.

Recall Verify: units and sanity

✓, and ✓. This matches the parent note's Gen 1 x1 row exactly. And yes — , as forecast, because encoding ate 20%.


Forecast: Gen 1 x1 was 0.25 GB/s. This is 16 lanes, faster rate, better encoding. Guess a number near 15 GB/s.

Step 1 — per-lane usable bits. Why this step? First find one lane's real data rate; then lanes just multiply (they are independent — no sharing).

Step 2 — aggregate 16 lanes. Why this step? Each lane is a private wire pair, so total data = one lane × lane count. No contention, so plain multiplication is valid.

Step 3 — bits to bytes. Why this step? Answer requested in bytes.

Answer: ≈ 15.75 GB/s (one direction).

Recall Verify

Gb/s ✓; Gb/s ✓; GB/s ✓ (rounds to the parent's Gen 3 x16 entry of 15.75 GB/s).


Example 3 — Cell C, doubled rate (x1, Gen 2)

Forecast: Same encoding, exactly double the rate → expect exactly double Gen 1's 250, so 500 MB/s.

Step 1 — usable bits. . Why this step? Same 8b/10b machine as Example 1, just faster line rate.

Step 2 — to bytes. . Why this step? Byte answer requested.

Answer: 500 MB/s — exactly Gen 1.

Recall Verify

GB/s = 500 MB/s ✓, and ✓.


Example 4 — Cell D, half-width middle case (x8, Gen 4)

Forecast: Gen 4 x16 is famously 31.5 GB/s (from the parent table). Half the lanes → guess ~15.75 GB/s.

Step 1 — per-lane. Gb/s. Why this step? Lane rate first, always.

Step 2 — aggregate 8 lanes. Gb/s. Why this step? Lane count multiplies. Notice it equals Gen 3 x16 from Example 2 — twice the rate, half the lanes cancel out.

Step 3 — bytes. GB/s.

Answer: ≈ 15.75 GB/s.

Recall Verify

GB/s ✓ (rounds to 15.75). And Gen 4 x16 double this = 31.5 GB/s, matching the parent table.


Example 5 — Cell E: the "13× vs 1.23×" ratio trap

Forecast: Two ratios are hiding. One compares wasted fractions, the other compares usable fractions. They are NOT the same and NOT interchangeable.

Step 1 — wasted fraction of each encoding. Why this step? "Waste" is the overhead bits divided by total bits. This is what "less waste" refers to.

Step 2 — ratio of the two wastes. Why this step? This is the honest source of the "13×" claim — the wasted fraction shrank 13-fold.

Step 3 — but usable throughput is what you feel. Compare the efficiencies, not the wastes: Why this step? Since 80% was already getting through, killing the last chunk of waste only lifts you from 80% to 98.46% — a gain, not .

Answer: = shrinkage of wasted bits; = growth of usable data (per lane, encoding change alone).

Figure — PCI Express (PCIe) architecture and generations

What this figure shows (Figure 2 — two ratios, side by side). The chart splits into two coral bars on the left and two mint bars on the right, and to stay readable without colour each waste bar is filled with a diagonal-hatch pattern while each usable bar is filled solid; every bar is also text-labelled ("waste" or "usable") right on it. The waste bars (hatched, coral) are the wasted fraction: the left one is a tall 20% (8b/10b), the right one is a stubby 1.54% (128b/130b) — and the lavender double-arrow labels the gap "13× shorter". That shrinkage is real and honest. Now move your eye to the usable bars (solid, mint), the usable-data fraction: the left is 80%, the right 98.46%, and the lavender arrow labels them "only 1.23× taller". The whole point of the picture is the contrast: the same encoding change makes the hatched waste bar collapse dramatically (13×) yet nudges the solid usable bar up only a sliver (1.23×). Your GPU feels the solid bars, not the hatched ones — so the honest per-lane data gain from the encoding change is 1.23×, never 13×.

Recall Verify

✓; ✓.


Example 6 — Cell F: degenerate inputs (x0, and "does raw = usable?")

Before we touch this example's part (b), we must define a term the parent note used only in passing.

Forecast: (a) Zero lanes = zero data, formula must give 0. (b) No generation reaches 100% — every encoding costs something.

Step 1 — (a) plug . Why this step? A link with no lanes carries nothing; the formula must and does collapse to zero. This is the sanity floor — always confirm your formula gives 0 for 0 lanes.

Step 2 — (a) convert to bytes. Divide by 8: Why this step? We still run the same final byte-conversion step every example uses, to prove it does not accidentally introduce bandwidth — zero divided by 8 is still zero, confirming the pipeline is consistent even at the degenerate input.

Step 3 — (b) check every efficiency.

  • 8b/10b:
  • 128b/130b:
  • Gen 6 FLIT:

Every one is strictly below 1. Why this step? "Efficiency = 100%" would require zero overhead bits, but clock recovery, DC balance, and error-check bits are mandatory. The closest is 128b/130b at 98.46%.

Answer: (a) 0 GB/s. (b) No — the highest efficiency is 98.46% (128b/130b); it never reaches 100%.

Recall Verify

✓; and ✓.


Example 7 — Cell G: the full-duplex doubling (x16, Gen 5, aggregate)

Forecast: One-direction Gen 5 x16 should be double Gen 4's 31.5 → 63 GB/s. Aggregate doubles again → 126 GB/s.

Step 1 — one-direction per lane. Gb/s. Why this step? Lane rate first.

Step 2 — 16 lanes, one direction, to bytes. Why this step? This is the number the parent table lists (per-direction), which rounds to 63.

Step 3 — apply the for full-duplex. Why this step? Because TX and RX are physically separate wire-pairs, both can run at full speed at the same time — neither steals bandwidth from the other. When a question asks for the aggregate (both directions summed), we are allowed to add the two equal one-direction numbers, which is the same as multiplying by 2.

Answer: ≈ 63 GB/s one direction, ≈ 126 GB/s aggregate.

Recall Verify

GB/s ✓ (rounds to 63); aggregate GB/s ✓ (rounds to 126).


Example 8 — Cell H: real-world word problem (will the SSD saturate the slot?)

Forecast: Gen 3 x4 is a quarter of the x16 (15.75 GB/s) → about 3.9 GB/s ≈ 3,900 MB/s. The drive wants 7,000. Expect a bottleneck.

Step 1 — slot's one-direction usable rate. Why this step? Reads flow in one direction; we compare against the drive's read spec, so one-direction is the fair comparison.

Step 2 — to MB/s. Why this step? Drive spec is in MB/s, so convert to matching units. Never compare Gb/s against MB/s.

Step 3 — compare. Drive wants MB/s; slot delivers MB/s. Since , the slot is the bottleneck — the drive can only run at about 56% of its rating here. Why this step? A chain runs at the speed of its slowest link. The final decision the question asks for — "does the slot bottleneck?" — can only be answered by directly comparing the two rates in the same units, which is exactly what this step does. Whichever number is smaller is the ceiling.

Answer: Yes — the Gen 3 x4 slot caps the drive at ~3,938 MB/s. To hit 7,000 MB/s you need Gen 4 x4 (double the rate → ~7,877 MB/s).

Recall Verify

GB/s = 3938.5 MB/s ✓; Gen 4 x4 doubles to MB/s ✓.


Example 9 — Cell I: exam twist — PAM-4 SNR penalty (Gen 6)

Forecast: (a) Four levels = 2 bits (). (b) The gaps between levels shrink to a third, and dB uses of a voltage ratio, so expect roughly dB.

Step 1 — (a) bits per symbol. Why this step? Each symbol chooses among levels; the number of bits it encodes is . This is why PAM-4 doubles data without raising the symbol clock.

Figure — PCI Express (PCIe) architecture and generations

What this figure shows (Figure 3 — NRZ vs PAM-4 voltage levels). Two "eye" pictures sit side by side over the same voltage axis. Left (NRZ): just two lavender levels drawn as solid lines, meaning bit 1 and meaning bit 0, with a fat coral double-arrow marking the gap of between them — a receiver can easily tell them apart even with noise. Right (PAM-4): four mint levels drawn as dashed lines () crammed into the same outer span, each pair carrying two bits (). Every level is text-labelled with its voltage and bit-pair so colour is never required to read it. The coral double-arrow now marks a gap of only between neighbouring levels. That is the whole story: three-times-narrower gaps mean noise that was harmless for NRZ can now flip a symbol, which is why Gen 6 must add error correction.

Step 2 — (b) voltage separation shrinks by a factor of 3. In NRZ the two levels are apart. In PAM-4 the four levels span the same outer range but sit in three equal steps, so neighbouring levels are only apart — a factor of closer. Why this step? The signal-to-noise margin is governed by how far apart the levels you must distinguish are. Levels that are 3× closer give you 3× less voltage headroom against noise, so the margin worsens by exactly that factor of 3.

Step 3 — convert the factor-of-3 to decibels. Decibels for a voltage/amplitude ratio use : Why this step? dB is the standard engineering unit for signal ratios, so the exam wants the answer in dB. The multiplier is (not ) because signal power scales as amplitude squared, and — so an amplitude ratio of 3 becomes dB.

Answer: (a) 2 bits/symbol; (b) about 9.5 dB worse SNR — which is exactly why Gen 6 makes forward error correction (FEC) mandatory.

Recall Verify

✓; dB ✓ (rounds to the parent note's "≈ 9.5 dB").


Recall gauntlet

Recall Which knob changed from Gen 1 to Gen 2?

Only the rate (2.5 → 5.0 GT/s). Encoding stayed 8b/10b, so throughput exactly doubled.

Recall "13× less waste" — what is actually 13×?

The wasted fraction shrank 13× (). The usable data only grew 1.23× ().

Recall Gen 3 x16 one-direction bandwidth?

GB/s.

Recall What is a FLIT and why is its efficiency 94.53%?

A FLIT is Gen 6's fixed 256-byte flow-control block; only 242 of those bytes are payload (the rest is FEC + CRC), so .

Recall Why does full-duplex let you multiply by 2?

TX and RX are separate physical pairs, so both run at full speed at once — nothing is shared, so adding them is legitimate.

Recall Why does PAM-4 need FEC when NRZ did not?

Four levels sit ~3× closer together → ~9.5 dB worse SNR margin → far more bit errors → FEC becomes mandatory to clean them up.