Шины в этом ноутбуке
Теория шин полезна, когда видно, как она выглядит на живой машине. Ниже — полная карта шин ноутбука Dell Latitude 7400 (Ubuntu 26.04, ядро 7.0.0). Все выводы команд сняты на нём, а не переписаны из учебника.
PCIe: скелет всей машины
Начнём с дерева. lspci -t рисует его как дерево — от корневого комплекса к мостам и устройствам:
-[0000:00]-+-00.0 корневой комплекс (Host bridge)
+-02.0 видеокарта (UHD Graphics 620)
+-14.0 USB-контроллер (xHCI)
+-14.3 Wi-Fi (CNVi)
+-15.0 I2C-контроллер №0
+-15.1 I2C-контроллер №1
+-15.3 I2C-контроллер (платформенный)
+-19.0 I2C-контроллер
+-1c.0-[01-39]----00.0-[02-39]--+-00.0-[03]----00.0
| +-01.0-[04-38]--
| \-02.0-[39]----00.0 ← USB-контроллер Thunderbolt
+-1d.0-[3a]----00.0
+-1d.4-[3b]----00.0
+-1f.0 LPC-мост (встроенный контроллер)
+-1f.3 звук
+-1f.4 SMBus
+-1f.5 SPI-контроллер (прошивка)
Как это читается:
00:00.0— корневой комплекс: с него начинается вся PCIe. Дальше всё висит на нём;00:02.0— видеокарта. Она на PCIe, как и всё остальное, — «встроенная» значит «в процессоре», а не «вне шины»;00:14.0— контроллер USB. К нему мы вернёмся;00:15.x,00:19.0— контроллеры I2C. Их в ноутбуке четыре: именно через них процессор общается с датчиками и служебными микросхемами;00:1c.0,00:1d.0,00:1d.4— корневые порты PCIe. Через них подключены внешние по отношению к чипсету устройства;00:1f.0— LPC-мост, наследник ISA: через него живёт встроенный контроллер (питание, клавиатура, вентилятор);00:1f.4— SMBus, родственник I2C для управления питанием и памятью;00:1f.5— SPI-контроллер: к нему подключена флеш-память с прошивкой.
Обратите внимание на строку 1c.0-[01-39]----00.0-[02-39]: это Thunderbolt. Порт пробрасывает наружу целую PCIe-ветку — мосты JHL6340 (Alpine Ridge) на шинах 01, 02, 03 и дальше. Поэтому в дереве появляется «матросская вложенность»: один мост за другим, вплоть до USB-контроллера на шине 39 и контроллера Thunderbolt на 03:00.0.
Накопитель: NVMe — это не SATA
$ lsblk -o NAME,TRAN,SIZE,MODEL
NAME TRAN SIZE MODEL
nvme0n1 nvme 931,5G Samsung SSD 980 1TB
TRAN=nvme — диск подключён по PCIe, а не по SATA. Отдельного SATA-контроллера в этой машине нет вовсе: NVMe — это протокол поверх PCIe, и «шина» у него та же, что у видеокарты.
USB: два контроллера, четыре шины
$ lspci | grep -i usb
00:14.0 USB controller: Intel Corporation Cannon Point-LP USB 3.1 xHCI Controller
39:00.0 USB controller: Intel Corporation JHL6340 Thunderbolt 3 USB 3.1 Controller
Контроллеров два: один в чипсете, второй — в контроллере Thunderbolt. Каждый xHCI даёт две шины: одну для USB 2.0 (480 Мбит/с), одну для USB 3.x (10 Гбит/с). Отсюда четыре шины в lsusb:
$ lsusb -t
Bus 001: root_hub, Driver=xhci_hcd/12p, 480M ← USB 2.0, чипсет
Port 003: Xiaomi Wireless Mouse 3 (HID, 12M)
Port 006: Integrated Webcam (Video, 480M)
Port 010: Bluetooth 9460/9560 (Wireless, 12M)
Bus 002: root_hub, Driver=xhci_hcd/6p, 10000M ← USB 3.x, чипсет (пусто)
Bus 003: root_hub, Driver=xhci_hcd/2p, 480M ← USB 2.0, Thunderbolt (пусто)
Bus 004: root_hub, Driver=xhci_hcd/2p, 10000M ← USB 3.x, Thunderbolt (пусто)
Что из этого видно про шины:
- устройства сидят на разных скоростях — мышь и Bluetooth на 12 Мбит/с (USB 1.1), камера на 480 Мбит/с (USB 2.0). Им не нужна USB 3;
- USB 3-шины пустуют — обычная картина: быстрые порты ждут флешку или диск;
- хаб внутри контроллера (
12p,6p,2p) — это число портов, которые контроллер умеет обслуживать.
Проверить у себя: lsusb (список), lsusb -t (дерево), ls /sys/bus/usb/devices (всё, включая интерфейсы).
I2C и SMBus: шина управления
В lspci четыре устройства называются Serial bus controller — это контроллеры I2C. В системе они превращаются в двенадцать адаптеров (i2c-0 … i2c-11): часть — от этих контроллеров, часть — от видеоядра (линии DDC для чтения EDID монитора), часть — от SMBus.
Устройства на шинах видны так:
$ ls /sys/bus/i2c/devices
4-0036
4-0037
4-0050
Запись 4-0036 читается как «шина 4, адрес 0x36». То есть на i2c-4 висят три устройства:
- 0x50 — типичный адрес EEPROM (часто именно там лежит EDID монитора или служебные данные платформы);
- 0x36 и 0x37 — служебные устройства платформы. Что именно это за микросхемы, по адресам не определить: нужна документация Dell на конкретную модель.
Именно поэтому I2C — шина управления, а не данных: по двум проводам (SDA и SCL) десятки устройств с разными адресами обмениваются байтами. Камера по такой шине видео не передаст — для этого есть USB.
SPI и ответ на вопрос про UEFI
$ ls /sys/bus/spi/devices
spi0.0
spi0.1
spi0 — контроллер SPI (тот самый 00:1f.5), а spi0.0 — устройство на нём. На этой шине живёт флеш-память с прошивкой.
Теперь про UEFI. Проверяем:
$ ls /sys/firmware/efi
$ cat /sys/class/dmi/id/bios_vendor /sys/class/dmi/id/bios_version /sys/class/dmi/id/bios_date
Dell Inc.
1.43.0
09/08/2025
$ journalctl -k | grep -i 'EFI v'
окт 22 ... kernel: efi: EFI v2.7 by American Megatrends
Что это значит:
- система загружена через UEFI (
/sys/firmware/efiприсутствует); - прошивка — Dell 1.43.0 от 08.09.2025, сделана American Megatrends (AMI);
- физически она лежит во флеш-памяти на шине SPI, а не «на PCIe» и не «на USB».
UEFI — не устройство на шине. Это прошивка, которую процессор исполняет при включении: читает её из SPI-флеш, выполняет свой код, своими драйверами опрашивает PCIe и USB (поэтому возможна загрузка с USB), а затем передаёт управление ядру. После этого от UEFI остаются только сервисы времени выполнения и переменные — их видно в /sys/firmware/efi/efivars.
Точная формулировка: UEFI хранится в SPI-флеш; работает поверх PCIe и USB, но само на них не «сидит».
Как осмотреть свою машину
$ lspci -t # дерево PCIe
$ lspci -k # какие драйверы взяли устройства
$ lsblk -o NAME,TRAN,SIZE,MODEL # транспорт накопителей (nvme/sata/usb)
$ lsusb -t # дерево USB со скоростями
$ ls /sys/bus/i2c/devices # устройства I2C: «шина-адрес»
$ ls /sys/bus/spi/devices # устройства SPI
$ ls /sys/firmware/efi # загружено ли через UEFI
Источники
- Документация ядра: https://docs.kernel.org/driver-api/ — подсистемы PCI, USB, I2C, SPI.
man 8 lspci,man 8 lsusb,man 8 lsblk,man 8 i2cdetect.- Все выводы команд — с ноутбука Dell Latitude 7400 (Ubuntu 26.04, ядро 7.0.0), сняты 25.10.2026.
Что ещё не проверено
- Что за микросхемы на
i2c-4(0x36, 0x37, 0x50) — по адресам не определить, нужна документация производителя. Названо только типичное назначение 0x50. i2cdetectна машине не запускался: утилита не установлена (пакетi2c-tools). Поэтому список адаптеров (i2c-0…11) взят из/sys, а не изi2cdetect -l— привязка «адаптер → контроллер» не проверена.- Внутреннее устройство Thunderbolt-ветки описано по дереву PCIe; какие именно устройства появятся при подключении дока — не проверялось.
Комментарии
Пока комментариев нет.