USB на Intel Z87. Ничего лишнего

08 Июн 2013

USB на Intel Z87. Ничего лишнего

Есть мнение, что 8-я серия чипсетов Intel ничем сущест­вен­но не отличается от предыдущего набора системной логи­ки. Справедливо ли это в от­но­ше­нии USB-подсистемы мы решили проверить на платформе Z87-K, предостав­лен­ной нам офисом ASUS в Украине.

«По когтю льва»

Первое, что бросается в глаза при исследовании пла­фор­мы Intel Z87 — это вариативность количества пор­тов, подклю­чен­ных к USB 3.0 интерфейсу. Завесу в этом вопросе от­кры­ва­ет документация на чипсет: впервые разработчик системной логики дает производителям материнских плат воз­мож­ность гибко уп­рав­лять функциональностью. В зависимости от целевого назначения выпускаемой плат­фор­мы оснащение USB 3.0 может уменьшаться с 6-ти до 4-х портов с возможностью использования освободившихся линий для PCIe-шины.

Что это значит и кому это нужно?

Во-первых, это значит, что Intel заботиться прежде всего не о пользователях (хотя, конечно, к системной логике Z87 вопросов нет), а о производителях платформ. Именно такая маркетинговая поддержка не на словах, а на деле позволит немногим выжившим в этой страшной борьбе за место под солнцем выкладывать на прилавки то, что будут покупать. А совсем не то, что удалось запаять.

Во-вторых, наконец-то программируемая логическая матрица чипсета стала на самом деле программируемой! Сколько укажет BIOS (ОК, не BIOS, а UEFI), столько и будет портов USB, PCIe и SATA. Всем заинтересованным стоит обратить внимание на стр.55 документа «Intel 8 Series / C220 Series Chipset Family Platform Controller Hub (PCH)».

Говорят, в древности по отпечатку когтя льва определяли его характер. Что-то похожее демонстрирует нам Intel, показывая масштабируемость интерфейсов на платформах с Z87.

Шина USB на Intel Z87, как она есть

Нужно признаться, что USB-шина и особенности ее реализации давно интересуют «Компостер». В статье «Загадки USB. Седьмая серия» мы коснулись особенностей xHCI-контроллера, интегрированного в чипсет. А обзор архитектуры адаптеров USB 3.0 посвящен дискретным решениям для шины PCI Express. По этой причине мы не могли упустить возможность детально рассмотреть xHCI-контроллер USB 3.0 в составе PCH (Platform Controller Hub), набора системной логики Intel Z87 на платформе ASUS Z87-K, «заточенной» под процессоры Socket 1150.

Детальный анализ информации, полученной в результате сканирования конфигурационного пространства, показывает очевидное сходство USB в чипсете 8-й серии с ее предыдущей реализацией: имеется один USB 3.0 контроллер eXtensible Host Controller Interface и два USB 2.0 контроллера Enhanced Host Controller Interface. Каждый из EHCI-контроллеров поддерживает Debug Port.

Чипсет 8-й серии включает в себя один USB 3.0 контроллер eXtensible Host Controller Interface и два USB 2.0 контроллера Enhanced Host Controller Interface. Каждый из EHCI-контроллеров поддерживает Debug Port.

Просматривая список EHCI-подключений, видим, что каждый из двух контроллеров оборудован своим Rate Match­ing Hub концентратором. RMH присутствуют как USB устройства с параметрами USB Vendor ID = 8087h, USB Product ID = 8008h и 8000h. Эта информация подтверждается также и в среде Everest, хотя официальная документация да­ет другое значение PID = 0024h, которое не соответствует действительности.

Каждый из EHCI-контроллеров оборудован своим Rate Matching Hub концентратором

Подключаем устройства:

Определение подключенных USB-устройств с помощью утилиты ICDiag

При рассмотрении PCH 7-го поколения мы акцентировали внимание на программно-управляемых коммутаторах, подключающих USB 3.0 порты к USB 2.0 контроллеру для совместимости с программным обеспечением, которое «не знает» о существовании USB 3.0 xHCI. Очевидно, в Platform Controller Hub 8-го поколения такие коммутаторы также присутствуют. Запустив нашу диагностическую утилиту в режиме сканирования USB 2.0 EHCI, мы увидели устройство, подключенное к «синему» разъему USB 3.0.

Результат сканирования USB-пространства

Анализ конфигурации USB 3.0 xHCI

Прочитав блоки операционных и конфигурационных регистров,  разобрав их в соответствии со спецификацией xHCI, мы выделили значения параметров конфигурации контроллера. Результатом стала следующая таблица:

Параметр Метод получения Биты Формат z87 PCH 7-Series PCH
Number of Logical Ports HCSPARAMS1 [31-24] 8 bit 21 8
Number of Device Slots HCSPARAMS1 [07-00] 8 bit 32 32
Page Size, bytes PAGESIZE.N=1 (2^(N+12)) 32 bit 4096 4096
Number of USB2 ports xHCI Sup. Prot. Cap. Reg. (USB2.0) [15-08] 8 bit 14 4
Number of USB3 ports xHCI Sup. Prot. Cap. Reg. (USB3.0) [15-08] 8 bit 6 4

Как видно, контроллер соответствует спецификации xHCI 1.00, поддерживает 14 логических портов USB 2.0 и 6 логических портов USB 3.0. В пересчете на физические порты, получаем 14 разъемов, 6 из которых поддерживают USB 3.0, а остальные 8 – только USB 2.0.

Акцентируем внимание на отличиях от Platform Controller Hub седьмого поколения:

  • Количество декларированных портов USB 3.0 увеличено с четырех до шести.
  • Количество портов USB 2.0, допускающих программный выбор обслуживающего их контроллера (USB 2.0 EHCI или USB 3.0 xHCI) увеличено с четырех до четырнадцати.

В поисках лишнего порта

Мы уже отметили выше, что пропажа двух USB 3.0 портов на материнской плате ASUS Z87-K прояснилась в документации к чипсету. Из нее следует, что функциональность ряда внешних выводов микросхемы PCH конфигурируется разработчиком платформы с помощью технологии Flexible I/O. Линии, используемые для двух из шести портов USB 3.0, на данной плате имеют альтернативное назначение. Они используются для формирования дополнительных портов PCI Express. При этом количество портов, поддерживающих USB 3.0, уменьшается до четырех.

Сложнее обстоит с подсчетом общего количества USB-портов, доступных на платформе Intel Z87. Арифметика этого дела несложная: 6 портов USB 3.0 плюс 14 портов в стандарте USB 2.0 в сумме дают 20 портов. Но сводная таблица результатов дает другое значение. Параметр HCSPARAMS1 указывает на 21 порт. Ошибки быть не может, ведь на 720 стр. «Intel 8 Series / C220 Series Chipset Family Platform Controller Hub (PCH)» тоже утверждается, что общее количество физических портов по умолчанию 15h, что в десятичной системе равно 21.Откуда взялся лишний порт?

В системной логике Intel Z87 ничего лишнего не бывает. Мы предполагаем, что один порт зарезервирован для реализации технологии Intel KVM. Косвенное подтверждение этому можно найти на стр.676 выше упомянутого документа. Процитируем описание битовых полей регистра Host Controller Structural Parameters полностью:

N_PORTSRead/Write.
This field specifies the number of physical downstream ports implemented on this host controller. The value of this field determines how many registers are addressable in the Operational Register Space. Valid value are in the range of 1h to Fh. A 0 in this field is undefined.
For Integrated USB 2.0 Rate Matching Hub Enable: each EHCI reports 2 ports by default. Port 0 assigned to the RMH and port 1 assigned as debug port. When the KVM/USB-R features is enabled it will show up as Port2 on the EHCI, and BIOS would need to update this field to 3h.

Из этого следует, что ресурсы для еще одного KVM/USB-R порта зарезервированы, но не реализованы на исследуемой нами плате ASUS Z87-K. Нужно набраться терпения в ожидании максимального использования чипсета Z87 на персональных платформах. Возможно, для этого придется исследовать уже серверные решения от Intel.

Резюме

Поддержка «нового» режима USB 3.0 Super Speed при условии сохранения совместимости со «старыми» устройствами и программным обеспечением вынуждает разработчиков поддерживать в составе одной микросхемы PCH два типа контроллеров: USB 2.0 EHCI и USB 3.0 xHCI. Такой подход отягощается дополнительной аппаратной оснасткой — коммутационной матрицей, обеспечивающей подключение заданного порта к заданному контроллеру.

Несколько разочаровывает отсутствие поддержки технологии виртуализации SR-IOV, реализации которой уделено достаточно много внимания в спецификации xHCI. Неприятный осадок остается также и от того, что производитель чипсета ни единым словом не обмолвился о поддержке Battery Charging Specification.

Но, как уже сказано, современные наборы системной логики, являются программно-конфигурируемыми устройствами, а это значит, что значения регистровых полей, декларирующих архитектуру контроллера и набор поддерживаемых технологий, не являются жестко прошитыми, а загружаются при выполнении процедуры BIOS POST. Не исключено, что после обновления BIOS, технологии, поддержку которых мы не обнаружили, появятся, а противоречия, найденные в регистровых полях, исчезнут.