Дополнительные возможности интерфейса PCI Express
В интерфейсе PCI Express (по сравнению с интерфейсом PCI) появились новые возможности — поддержка виртуальных каналов, QoS (Quality of Service) и изохронной передачи данных.
Начнём с рассмотрения механизма, обеспечивающего совместимость интерфейса PCI Express с параллельным интерфейсом PCI. Как уже отмечалось, физический уровень интерфейса PCI Express обеспечивает лишь соединения «точка-точка», что вынуждает использовать для подключения множества устройств специальные коммутаторы, объединяя устройства в «звездную» сеть. Но «классический» интерфейс PCI — параллельный интерфейс, к тому же использующий механизм прерываний, не поддерживаемый в PCI Express. Сравните: если в случае интерфейса PCI в компьютере было, скажем, два интерфейса — один для графического адаптера (AGP), и другой — для всех остальных устройств, обращения к которым так и производились по адресу — «интерфейс такой-то, устройство такое-то», то при переходе на интерфейс PCI Express от былой топологии не осталось и следа.
Механизмы маршрутизации, заложенные в стандарт интерфейса, позволяют особенно не задумываться над этим вопросом — при пересылке пакетов коммутаторы сами определят, на какой порт его необходимо передать. Отправителю достаточно указать устройство-получатель и пакет каким-то образом до него дойдет. То есть, программное обеспечение (ПО) теперь работает не непосредственно с аппаратурой, а с виртуальными каналами данных (старая схема адресации «интерфейс-устройство-функция устройства» при этом сохраняется, хотя такое разделение теперь достаточно условно). Для полной имитации «обычного» PCI-интерфейса контроллер интерфейса PCI Express даже имитирует запросы на прерывания при поступлении от устройства соответствующего сообщения (служебная информация вроде вызова прерывания также передается в виде пакетов). Впрочем, к механизму сообщений есть и прямой доступ, без использования этого режима совместимости.
Итак, с устройствами можно продолжать работать, как с обычными PCI-устройствами, но «виртуальность» интерфейса PCI Express позволяет обеспечить большую гибкость полученной системы. Каждый виртуальный канал до устройства (их может быть по нескольку на каждое устройство — для этого и нужна последняя компонента PCI-адреса) никак не привязан к «физическому» носителю, а значит, его можно настроить произвольным образом. Например, стандарт интерфейса PCI Express позволяет указывать для виртуального канала его пропускную способность и максимально допустимую задержку передачи данных по нему. Физическая среда передачи данных, конечно, накладывает некоторые ограничения на допустимые здесь значения
Виртуальные каналы создаются и изменяются «на лету» — например, плата видеозахвата может большую часть времени обходиться единственным каналом доставки сообщений и запрашивать дополнительный виртуальный канал для передачи данных лишь в момент подключения к ней внешнего устройства. Если у контроллера интерфейса PCI Express для создания канала не хватит физических ресурсов, то он честно об этом сообщит, но если канал будет создан, то он будет в точности отвечать запрошенным параметрам и никакие «внешние» события — активизация других PCI-устройств, действия пользователя и т.п. на него не повлияют (QoS — запрошенный сервис обладает гарантированным качеством).
Помимо каналов с гарантированной пропускной способностью интерфейс PCI Express поддерживает также создание изохронных каналов — информация по ним передается с гарантированной максимальной задержкой (это нужно для устройств, работающих в режиме реального времени - например, для устройств, передающих по сети человеческую речь). Впрочем, QoS устройство может отключить (собственно при работе в режиме совместимости с интерфейсом PCI так и происходит), тогда «виртуальным каналам» устройства будут отводиться все остающиеся после QoS-каналов ресурсы интерфейса.
«Физическая» реализация гарантированного качества (QoS) и изохронности зависит от конкретной реализации контроллеров интерфейса PCI Express и использующихся коммутаторов, но в конечном итоге все это сводится лишь к тому, какие из пакетов, претендующих на одновременную передачу по одному и тому же направлению, контроллер пошлет в первую очередь, а какие — лишь по мере возможности. Возможный вариант: изохронные пакеты идут «вне очереди», остальное время делится пропорционально между устройствами, требующими некоторую заданную полосу пропускания и лишь все, что остается, распределяется между «обычными», не приоритетными пакетами данных, которые передаются в порядке их поступления в контроллер.
В интерфейсе PCI Express также поддерживаются режимы пониженного энергопотребления — в полном соответствии с «четырехуровневыми» стандартами ACPI. Линия интерфейса PCI Express может «отключаться», если она не используется в данный момент для передачи данных — отключаются линии передачи тактового сигнала, линии приема и передачи данных. Вместе с ними могут отключаться и приемник и передатчик в PCI Express контроллере, а с устройства может быть снято питание — целиком (устройство «логически выключено») или частично (остается маломощное дежурное напряжение питания, функционирует «линия пробуждения» WAKE#, по которой передается сигнал на перевод устройства в нормальный рабочий режим). Если интерфейс состоит из нескольких линий, то при небольшой загрузке интерфейса можно отключать ненужные в данный момент линии (например, использовать интерфейс PCI Express x4 как x1, а три линии выключить). Переключение в «энергосберегающий» режим при этом может потребовать как само устройство интерфейса PCI Express, так и «система» в целом — скажем, при переходе в «спящий режим» (hibernate). В «десктопных» вариантах интерфейса PCI Express энергосберегающие режимы являются необязательными (то есть могут быть реализованы, а могут и нет), но в мобильных вариантах описанные возможности являются обязательными.
Интерфейс PCI Express полностью исключает использование дополнительных физических линий (тактовых, сигналов ошибок, изменения режимов и прерываний) — все это перенесено на логический уровень. В случае, когда несколько сигнальных линий (каналов интерфейса) работают параллельно, они имеют одинаковую тактовую частоту. Допустимо также применение «размывания» спектра сигнала (Spread Spectrum — отклонение частоты тактового генератора вблизи опорного значения).