PCI Express
PCI Express (PCIe) — основная шина данных внутри современного компьютера. На ней висит почти всё, что не является датчиком: видеокарта, накопители, сеть, Thunderbolt, кардридер.
Главное отличие от старых шин: PCIe — точка-точка. Не общая магистраль, где все ждут своей очереди, а отдельные линии от каждого устройства к контроллеру.
Линии и их количество
Связь идёт по линиям (lanes), каждая линия — две пары проводов (передача и приём, каждая пара дифференциальная). Линии собирают в группы: x1, x4, x8, x16. Чем больше линий, тем больше полоса.
| Поколение | Скорость на линию | Кодирование | Полоса x4 (порядок) |
|---|---|---|---|
| Gen1 | 2,5 GT/s | 8b/10b | ~1 ГБ/с |
| Gen2 | 5 GT/s | 8b/10b | ~2 ГБ/с |
| Gen3 | 8 GT/s | 128b/130b | ~4 ГБ/с |
| Gen4 | 16 GT/s | 128b/130b | ~8 ГБ/с |
| Gen5 | 32 GT/s | 128b/130b | ~16 ГБ/с |
«GT/s» — гигатранзакции в секунду, а не гигабайты: полезная скорость ниже из-за кодирования и накладных расходов. Отсюда и правило: Gen3 x4 быстрее, чем Gen4 x1 — ширина линии часто важнее поколения.
Кто кого к чему подключает
| Элемент | Роль |
|---|---|
| Корневой комплекс (root complex) | «Начало» PCIe: связывает процессор и память с шиной |
| Корневой порт (root port) | Выход из комплекса: один порт — одна ветка устройств |
| Мост (bridge) | Соединяет две части шины; так появляются вложенные ветки |
| Коммутатор (switch) | Раздаёт одну линию на несколько устройств (в ноутбуках почти не встречается) |
| Устройство (endpoint) | Собственно карта: NVMe, Wi-Fi, видео |
Каждое устройство адресуется как шина:устройство.функция — например, 3b:00.0. Шины нумеруются при перечислении, и это делает прошивка (UEFI) и ядро, а не человек.
Что видно снаружи: конфигурационное пространство
У каждого устройства есть конфигурационное пространство — набор регистров, через который система узнаёт, что это за устройство и как с ним работать: идентификаторы производителя и модели, класс, BAR (адреса памяти или портов), возможности, прерывания.
Отсюда и команды:
$ lspci # список устройств
$ lspci -t # дерево: кто на каком мосту
$ lspci -k # какой драйвер взял устройство
$ lspci -s 3b:00.0 -vv # всё про конкретное устройство, включая скорость и ширину линии
В -vv ищите строки LnkCap (что устройство умеет) и LnkSta (что получилось на самом деле). Типичная картина «карта вставлена в слот x16, а работает на x4» — именно оттуда: слот и устройство договорились о меньшей ширине.
Что на PCIe в этом ноутбуке
Снято на Dell Latitude 7400:
$ lspci | grep -i 'non-volatile'
3b:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller 980 (DRAM-less)
- NVMe-накопитель — тоже PCIe-устройство. «DRAM-less» в названии значит, что у контроллера нет собственной DRAM-кэш-памяти: для бюджетных моделей это нормально;
- Thunderbolt — целая ветка PCIe наружу:
lspci -tпоказывает цепочку мостов1c.0 → 01 → 02 → 03/39, и на шине39обнаруживается ещё один USB-контроллер; - Wi-Fi сидит на
CNVi— не совсем обычный PCIe, а выделенный интерфейс чипсета для Wi-Fi-модуля.
Горячее подключение и питание
Обычная PCIe внутри корпуса не предполагает горячего подключения: карта ставится при выключенном питании. Thunderbolt — исключение: он пробрасывает PCIe через кабель и умеет горячее подключение, поэтому док-станция «на ходу» — это PCIe, появившееся в дереве после включения.
Питание устройств идёт по отдельным линиям (12 В и 3,3 В), а не по линиям данных. Именно поэтому мощная видеокарта требует дополнительных разъёмов питания, а NVMe в ноутбуке обходится тем, что даёт слот M.2.
Когда что-то не так
- устройство пропало — смотреть
lspci,dmesg | grep -i pcie,journalctl -k; - ошибки шины — сообщения
AER(Advanced Error Reporting) в журнале:dmesg | grep -i aer; - медленно — проверить
LnkSta: скорость и ширину линии, а не только название модели; - не определяется после сна — частая история с NVMe и Wi-Fi; помогает перезагрузка, а причина — в драйвере или управлении питанием.
Источники
- Спецификация PCI Express: PCI-SIG, https://pcisig.com/.
- Документация ядра: https://docs.kernel.org/PCI/ — подсистема PCI, перечисление, AER.
man 8 lspci,man 8 setpci.- Устройства и дерево — с ноутбука Dell Latitude 7400 (Ubuntu 26.04, ядро 7.0.0), 25.10.2026.
Что ещё не проверено
- Скорости в таблице — по спецификации, не замеры. Реальная полоса зависит от ширины линии, накладных расходов и самого устройства.
- Строки
LnkStaна этой машине вывести не удалось: без прав rootlspci -vvне отдал расширенные поля. На своей системе смотритеsudo lspci -vv -s <адрес> | grep -A1 LnkSta.
Комментарии
Пока комментариев нет.