Загадки USB. Седьмая серия

18 Мар 2013

Загадки архитектуры USB в чипсетах Intel 7-й серии

Хорошая традиция – считать «выходом на режим» для IT-технологии ее интеграцию в чипсет. Так было с передачей данных Ultra DMA, с интерфейсом Serial ATA, со спе­ци­фи­ка­ци­ей USB 2.0. Так стало и с универсальной последова­тель­ной шиной, соответствующей новому стандарту – спе­цификации USB 3.0. Вернее сказать, таким событием хо­те­лось бы считать появление в наборах системной логики Intel 7-series контроллера USB 3.0, известного как eXtensible Host Controller Interface.

В топовых модификациях PCH (Platform Controller Hub) интегрирован один контроллер xHCI (4 порта USB 3.0) и два контроллера EHCI (8 и 6 портов, всего 14 портов USB 2.0). Каждый EHCI-контроллер снабжен Rate Matching Hub и Debug Port. Декларирование особенностей топологии USB-подсистемы и коммутация портов между xHCI и EHCI–контроллерами обеспечивается рядом кон­фи­гу­ра­ци­он­ных регистров.

Почему логических портов больше?

Согласно документации, чипсет Intel 7-series предоставляет пользователю платформы доступ к 14 физическим портам, из которых четыре — с поддержкой USB 3.0. Каждый из портов оформлен конструктивно как разъем. Те из них, что содержат пластиковые элементы синего цвета, соответствуют скоростным портам xHCI-контроллера.

Драйвер или другое программное обеспечение, взаимодействующее с операционными регистрами USB-подсистемы, оперируют не разъемами, а логическими портами. Логическим портом мы будем называть регистр управления и состояния (Port Status and Control или PORTSC), посредством которого программа взаимодействует с периферийным USB-устройством.

USB-подсистему PCH-хаба удобно представлять в виде четырех составляющих:
  1. Два контроллера EHCI поддерживают 8+6=14 логических портов
  2. USB2-подсистема xHCI поддерживает 4 логических порта
  3. USB3-подсистема xHCI поддерживает 4 логических порта
  4. Подсистема конфигурирования, обеспечивающая коммутацию заданных портов на заданные контроллеры, запрет или разрешение режима USB 3.0 и декларирование функциональности платформы.

Каждый из EHCI-контроллеров поддерживает обмен со скоростью в 480 Мбит/сек, что соответствует требованиям спецификации USB 2.0, а также  низкоскоростные режимы Low-Speed и Full-Speed, специфицированные USB 1.1, с помощью интегрированного в чипсет Rate Matching Hub с USB-параметрами: Vendor ID = 8087h, USB Product ID = 0024h.

Структура контроллера, обеспечивающего eXtensible Host Controller Interface, включает в себя поддержку протокола USB 2.0 и поддержку протокола USB 3.0. Этим и объясняется удвоенное количество логических портов контроллера xHCI (4+4), потому что каждый из четырех физических портов представлен двумя регистрами управления и состояния для обслуживания своего USB-режима: PORTSC USB 2, PORTSC USB 3.

Теперь разберемся, каким образом они соединяются с USB-разъемами так, что их общее количество в топовой конфигурации платформ уменьшается с 14+4+4=22 до 10+4=14.

Разъемы и контроллеры

Разъемы для обслуживания USB 1.1 и USB 2.0

С разъемами черного цвета все очевидно и сравнительно просто: их десять. Они подключаются линиями Data+ и Data- к контроллеру, формирующему Enhanced Host Controller Interface, который в сочетании с RMH-хабом обеспечивает весь диапазон средне- и низкоскоростного трафика.

Разъемы для обслуживания USB 2.0 и USB 3.0

Четыре синих разъема для обслуживания USB 3.0 используют отдельные цепи для SuperSpeed-сигналов SSRX+, SSRX-, SSTX+, SSTX- в виде дифференциальных пар. Ламели этих выводов при подключении к разъему два-нольных устройств отношения к этим устройствам не имеют. С этим тоже все понятно — механическая коммутация в действии.

Ламели коннектора USB 3.0 (сам разъем содержит пластиковые элементы синего цвета)
Рис 1. Устройство разъема для обслуживания USB 3.0 интерфейса.
Нижние ламели предназначены для работы с USB 2.0 и, кроме линий
питания, подключены к сигналам Data+ и Data–. Верхние ламели —
это SSRX+, SSRX–, SSTX+, SSTX– и сигнальное заземление.

Сложнее выглядит ситуация с подключением устройств к USB 2.0 ламелям. Эти ламели в составе синего разъема подключены к линиям Data+/Data-, которые интерфейсом USB 3.0 не обслуживаются. Но, в зависимости от настройки платформы, они могут коммутироваться между USB2-подсистемой xHCI-контроллера и EHCI-интерфейсом. Для этого предназначен регистр XUSB2PR — xHC USB 2.0 Port Routing Register (см. документацию PCH Data Sheet, пункт 17.1.33).

Итак, для обслуживания USB2-режима задействуется электронная коммутация, позволяющая использовать одну из возможных реализаций:
  • Контроллер Enhanced Host Controller Interface;
  • USB2-подсистему контроллера eXtensible Host Controller Interface.

Этот выбор может осуществляться с помощью BIOS Setup при старте платформы. Коммутация происходит индивидуально для каждого из четырех портов и сводится к записи значения в регистр XUSB2PR. В сеансе операционной системы драйвер читает информацию о конфигурации платформы, подготовленную BIOS и настраивает контроллер заданным образом. Для этого используется регистр XUSB2PRM   xHC USB 2.0 Port Routing Mask Register (см. документацию PCH Data Sheet, пункт  17.1.34). Биты указанного регистра для каждого из четырех коммутируемых портов сообщают, можно ли динамически изменять содержимое регистра XUSB2PR и самостоятельно выбирать, кто будет USB2-компаньоном для контроллера USB3.

Выводы

Почему все так сложно и запутанно? Ведь спецификация eXtensible Host Controller Interface обещает если не «ми­ро­вую гармонию», то хотя бы поддержку всех видов USB-устройств одним контроллером. Конечно, если бы такая архитектура была внедрена в системную логику Intel 7-series, наша статья называлась бы «Сам себе компаньон» :)

Одна из основных причин — требования совместимости с рядом существующих операционных систем в условиях запаздывающей драйверной поддержки для нового USB-контроллера.

Но есть и позитив. Наличие в микросхеме PCH программно-коммутируемой матрицы, соединяющей заданный порт с выбранным контроллером, обеспечивает возможность гибкого управления функциональностью пер­со­наль­ной платформы средствами BIOS: Press DEL to Enter Setup!