Элементы и топология соединений интерфейса PCI Express

 

Соединение PCI Express (PCI Express Link) — это пара встречных симплексных каналов, соединяющих два компонента. По этим каналам передаются пакеты, несущие команды и данные транзакций, сообщения и управляющие посылки. Канал может быть образован одной или несколькими линиями передачи сиг­налов (Lane); применение нескольких линий позволяет увеличивать (масштабировать) про­пускную способность канала. В интерфейсе PCI Express с помощью пакетного протокола реализуются все транзакции чтения и записи, используемые в интерфейсе PCI, причем в расщепленном варианте (как в интерфейсе PCI-X). Таким образом, здесь фигурируют запросчик (requester) и исполнитель (completer) транзакции.

В интерфейсе PCI Express рас­сматриваются четыре пространства:

пространство оперативнойпамяти;

пространство ввода-вывода;

конфигурационное пространство;

пространство сообщений.

Новое (по сравнению с интерфейсом PCI) пространство сообщений (message space) используется для передачи в виде пакетов «внеполосных» сигналов интерфейса PCI: прерываний по линиям INTx, сигналов управления потреблением и т. п. Таким образом реализуются «виртуальные провода».

Порт интерфейса PCI Express содержит пере­датчик, приемник и узлы, необходимые для сборки-разборки пакетов.

Пример топологии средств ввода-вывода, иллюстрирующий структуру интерфейса PCI Express, приведен на рис. 26.6.

 

 

Рис. 26.6. Топология интерфейса PCI Express

 

Центральным элементом структуры интерфейса является корневой комплекс (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 такое право было).