Соединение PCI Express (PCI Express Link) — это пара встречных симплексных каналов, соединяющих два компонента. По этим каналам передаются пакеты, несущие команды и данные транзакций, сообщения и управляющие посылки. Канал может быть образован одной или несколькими линиями передачи сигналов (Lane); применение нескольких линий позволяет масштабировать пропускную способность канала. В PCI Express с помощью пакетного протокола реализуются все транзакции чтения и записи, используемые в PCI, причем в расщепленном варианте (как в PCI-X). Таким образом, здесь фигурируют за-просчик (requester) и исполнитель (completer) транзакции. В PCI Express рассматриваются четыре пространства: памяти, ввода-вывода, конфигурационное и сообщений. Новое (по сравнению с PCI) пространство сообщений (message space) используется для передачи в виде пакетов «внеполосных» сигналов PCI: прерываний по линиям INTx, сигналов управления потреблением и т. п. Таким образом реализуются «виртуальные провода». Порт PCI Express содержит передатчик, приемник и узлы, необходимые для сборки-разборки пакетов.
Пример топологии средств ввода-вывода, иллюстрирующий архитектуру PCI Express, приведен на рис. 14.8. Центральным элементом архитектуры является корневой комплекс (root complex), соединяющий иерархию ввода-вывода с центром — процессором (одним или несколькими) и памятью. Корневой комплекс может иметь один и более портов PCI Express, каждый из этих портов определяет свой домен иерархии (hierarchy domain). Каждый домен состоит из одной конечной точки (endpoint) или субиерархии — нескольких конечных точек, связанных коммутаторами. Наличие непосредственных одноранговых коммуникаций между элементами разных доменов обязательным не является, но может иметь место в конкретных реализациях. Для обеспечения прозрачных одноранговых коммуникаций в корневом комплексе должны присутствовать коммутаторы. Возможность взаимодействия центрального процессора с любым устройством любого домена безусловна, как и возможность обращения любого устройства к памяти. Корневой комплекс должен генерировать запросы к конфигурационному пространству — его роль аналогична главному мосту PCI.
Конечная точка — это устройство, способное инициировать или/и исполнять транзакции PCI Express от своего имени или от имени устройства, не являющегося устройством PCI Express (например, от имени хост-контролера USB). Конечная точка должна быть видима в одном из доменов иерархии — представлять в нем свои конфигурационные регистры и отвечать как исполнитель на конфигурационные запросы. В качестве механизма сигнализации прерываний все конечные точки используют MSI. В PCI Express рассматриваются два типа конечных точек: «наследники» (legacy) и новые точки, построенные по идеологии PCI Express. К «наследным» точкам имеется ряд послаблений в плане адресации памяти, перемещаемости ресурсов (из пространства ввода-вывода в пространство памяти) и некоторых нюансов.
Коммутатор (switch) имеет несколько портов PCI Express. Логически он представляет собой несколько виртуальных мостов PCI-PCI, соединяющих порты коммутатора со своей внутренней локальной шиной. Однако тех издержек, которые вносят «настоящие» мосты PCI, коммутатор не вносит. Коммутатор транслирует между портами пакеты всех типов, основываясь на адресной информации, актуальной для пакета данного типа. Арбитраж между портами коммутатора может учитывать виртуальные каналы и, соответственно, взвешенно распределять пропускную способность. Коммутатор не имеет права разбивать пакеты на более мелкие (у мостов PCI такое право имеется).
Мост PCI-Express-PCI соединяет иерархию шин PCI/PCI-Х с «фабрикой» ввода-вывода.
Конфигурирование «фабрики» осуществляется либо со 100-процентной совместимостью с конфигурационным механизмом PCI 2.3, либо с использованием расширенного конфигурационного пространства PCI-X. Каждое соединение PCI Express с помощью виртуальных мостов отображается в виде логической шины PCI со своим номером. Логически устройства отображаются в конфигурационном пространстве как устройства PCI, каждое из которых может иметь 1-8 функций со своим набором конфигурационных регистров.