Skip to content
hardware hardware

PCIe (PCIe)

pcie bus hardware expansion gpu nvme lanes
Plain English

PCIe is the computer’s internal highway for fast devices. Graphics cards, NVMe drives, and network cards all plug into PCIe slots so they can move data to and from the processor quickly. Each slot has a number of lanes, like lanes on a road: more lanes and a newer generation mean more traffic can move at once.

Technical Definition

Peripheral Component Interconnect Express (PCIe) is a point-to-point serial interconnect standardized by PCI-SIG. Each device gets dedicated lanes; nothing is shared like on the old parallel PCI bus.

Lanes: a link is x1, x4, x8, or x16 lanes wide. GPUs use x16, NVMe drives x4, NICs x1 to x8. A physical x16 slot may be wired for fewer lanes; the motherboard manual tells you.

Generations (approximate usable throughput per direction):

GenPer lanex4x16
3.0~1 GB/s~4 GB/s~16 GB/s
4.0~2 GB/s~8 GB/s~32 GB/s
5.0~4 GB/s~16 GB/s~63 GB/s

Each generation roughly doubles the last. Devices and slots are backward compatible; the link runs at the lower of the two.

Lane budget: the CPU provides a fixed number of lanes, and the chipset adds more that share one uplink to the CPU. Populating some M.2 slots can disable a SATA port or drop a PCIe slot to x8. This is a frequent surprise in builds.

Addressing in Linux: devices appear as domain:bus:device.function, such as 0000:01:00.0. Seen with lspci, and the basis for PCI passthrough to VMs through the IOMMU (VT-d or AMD-Vi).

Source: PCI-SIG specifications

Inspecting PCIe devices

# Every PCIe device
$ lspci
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics
01:00.0 Non-Volatile memory controller: Samsung Electronics NVMe SSD Controller
02:00.0 Ethernet controller: Intel Corporation I226-V

# Negotiated speed and width for one device
$ sudo lspci -s 01:00.0 -vv | grep -E "LnkCap|LnkSta"
LnkCap: Port #0, Speed 16GT/s, Width x4
LnkSta: Speed 16GT/s, Width x4

# Tree view: what hangs off which bridge
$ lspci -tv

# Which driver claimed each device
$ lspci -k
In the Wild

PCIe matters whenever you add hardware. Before buying a 10 GbE NIC, a second NVMe drive, or a GPU for a homelab, check how many lanes the slot actually has and what else shares them. If a fast drive benchmarks slow, LnkSta often shows it running at a lower generation or fewer lanes than LnkCap. On Proxmox and other KVM hosts, PCIe passthrough lets a VM own a GPU or NIC directly, which needs IOMMU enabled in firmware and devices in clean IOMMU groups.