Дополнительные возможности PCI Express

 

Стоит упомянуть и о других новых возможностях, появившихся в стандарте PCI Express (по сравнению с PCI) — поддержке виртуальных каналов, QoS (Quality of Service) и изохронной передаче данных. Начнём с рассмотрения механизма, обеспечивающего совместимость PCI Express с обычным PCI. Как мы уже заметили, сегодняшний физический уровень PCI Express обеспечивает лишь соединения «точка-точка», что вынуждает использовать для подключения множества устройств специальные свитчи, объединяя устройства в «звездную» сеть. Но «классическая» PCI — параллельная шина, к тому же использующая механизм прерываний, не поддерживаемый в PCI Express! Сравните: если в случае PCI у нас в ПК было, скажем, две шины — одна для графического адаптера (AGP), и другая — для всех остальных устройств, обращения к которым так и производились по адресу — «шина такая-то, устройство такое-то», то при переходе на PCI Express от былой топологии не остается и следа. В нашем примере (см. рисунок) появляется семь шин PCI Express (не считая шины, соединяющей северный и южный мосты чипсета), причем шесть из них относятся к единственной бывшей PCI (bus 1). К счастью, механизмы маршрутизации, заложенные в стандарт, позволяют особенно не задумываться над этим вопросом — при пересылке пакетов «свитчи» сами определят, на какую шину его необходимо передать. Отправителю достаточно указать устройство-получатель и пакет каким-то образом до него дойдет. То есть ПО теперь работает не непосредственно с аппаратурой, а с непонятно каким образом функционирующими виртуальными каналами данных (старая схема адресации «шина-устройство-функция устройства» при этом сохраняется, хотя такое разделение теперь достаточно условно). Для полной имитации «обычной» PCI-шины контроллер PCI Express даже имитирует прерывания этой шины при поступлении от устройства соответствующего сообщения (служебная информация вроде вызова прерывания также передается в виде пакетов). Впрочем, как уже говорилось, к механизму сообщений есть и прямой доступ, без использования этого режима совместимости.

 

Итак, с устройствами можно продолжать работать, как с обычными PCI, но «виртуальность» этой шины позволяет обеспечить большую гибкость полученной системы. Каждый виртуальный канал до устройства (напомним, что их может быть по нескольку на каждое устройство — для этого и нужна последняя компонента PCI-адреса) никак не привязан к «физическому» носителю, а значит, его можно настроить произвольным образом. Например, стандарт позволяет указывать для виртуального канала его пропускную способность и максимально допустимую задержку передачи данных по нему. Физическая среда передачи данных, конечно, накладывает некоторые ограничения на допустимые здесь значения — больше 200 Мбайт/с через PCI Express 1x при всем желании пропустить невозможно. Виртуальные каналы создаются и изменяются «на лету» — например, плата видеозахвата может большую часть времени обходиться единственным каналом доставки сообщений и запрашивать дополнительный виртуальный канал для передачи данных лишь в момент подключения к ней внешнего устройства. Если у контроллера PCI Express для создания канала не хватит физических ресурсов, то он честно об этом сообщит, но если канал будет создан, то он будет в точности отвечать запрошенным параметрам и никакие «внешние» события — активизация других PCI-устройств, действия пользователя и т.п. на него не повлияют (QoS — запрошенный сервис обладает гарантированным качеством).

 

Помимо каналов с гарантированной пропускной способностью PCI Express поддерживает также создание изохронных каналов — информация по ним передается с гарантированной максимальной задержкой (это нужно для устройств, работающих в режиме реального времени - например, для устройств, передающих по сети человеческую речь). Впрочем, QoS устройство может отключить (собственно при работе в режиме совместимости с PCI так и происходит), тогда «виртуальным каналам» устройства будут отводиться все остающиеся после QoS-каналов ресурсы шины. «Физическая» реализация QoS и изохронности зависит от конкретной реализации контроллеров PCI Express и использующихся «свитчей», но в конечном итоге все это сводится лишь к тому, какие из пакетов, претендующих на одновременную передачу по одной и той же шине, контроллер пошлет в первую очередь, а какие — лишь по мере возможности. Возможный вариант: изохронные пакеты идут «вне очереди», остальное время пропорционально делится между устройствами, требующими некоторую заданную полосу пропускания и лишь все, что остается распределяется между «обычными», не приоритетными пакетами данных, которые передаются в порядке их поступления в контроллер.

 

В новой шине также поддерживаются режимы пониженного энергопотребления — в полном соответствии с «четырехуровневыми» стандартами ACPI. Линия PCI Express может «отключаться», если она не используется в данный момент для передачи данных — отключаются линии передачи тактового сигнала, линии приема и передачи данных (и вместе с ними могут отключаться и приемник и передатчик в PCI-Express контроллере), с устройства может быть снято питание — целиком (устройство «логически выключено») или частично (остается маломощное дежурное напряжение питания, функционирует «линия пробуждения» WAKE#, по которой передается сигнал на перевод устройства в нормальный рабочий режим). Если шина состоит из нескольких линий, то при небольшой загрузке шины можно отключать ненужные в данный момент линии (например, использовать PCI Express x4 как x1, а три линии выключить). Переключение в «энергосберегающий» режим при этом может потребовать как само устройство PCI Express, так и «система» в целом — скажем, при переходе в «спящий режим» (hibernate). В «десктопных» вариантах шины PCI Express энергосберегающие режимы являются необязательными (то есть могут быть реализованы, а могут и нет), но в мобильных описанные возможности являются обязательными.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: