Шина USB требует обратной совместимости

23 Апр 2012

Обратная совместимость стандартов USB

Архитектура USB неочевидна и для неподготовленных пользователей —  нелогична. Режим обмена с пропускной способностью 480 Мбит/сек (High-Speed) обслуживается контроллером EHCI, низкоскоростные режимы Full-Speed и Low-Speed — либо контроллером OHCI (SiS, nVidia), либо UHCI (Intel, VIA). Они и спорят между собой за доступ к под­ключенному устройству.

В чем причина этого спора?

Вкратце суть ее состоит в том, что контроллер EHCI ра­бо­та­ет только с высокоскоростными устройствами, а низ­ко­ско­рост­ные протоколы обмена по-прежнему обслуживаются контроллерами USB 1.1.

Как это происходит? На этапе подключения внешнего USB-устройства платформа не осведомлена о его скоростных характеристиках. Это означает, что по умолчанию используется порт контроллера USB 2.0, как лучший из воз­мож­ных. После определения протокола обмена, выполняется коммутация низкоскоростных USB-девайсов на порты контроллеров-компаньонов, а высокоскоростные остаются в ведении EHCI.

Переподключение —  технологический трюк в процессе обслуживания периферийного устройства, позволивший сохранить преемственность с USB 1.1. Для этого в контроллере USB 2.0 выделяется блок раутинга (Port Routing), в составе которого есть регистровые поля, декларирующие соответствие портов EHCI портам UHCI/OHCI, от­вет­ствен­ные за управление программируемыми коммутаторами.

Преимущество совмещенной модели «EHCI+Companion Controllers» — возможность использования драйверов, написанных для UHCI и OHCI. Недостаток – функциональная избыточность и необходимость коммутации.

О терминологии. Условимся, что универсальную последовательную шину, соответствующую стандарту USB 1.1, поддерживающую Full-Speed и Low-Speed, и все что к ней относится, мы будем называть низкоскоростной. В отличие от высокоскоростной шины USB 2.0, поддерживающей High-Speed.

Устройства, обеспечивающие ветвление шины, далее по тексту называются концентраторами либо хабами. Аббревиатура HCI означает «хост контроллер интерфейс» и не требует дополнительных толкований, как и все ее  реализации: OpenHCI (OHCI), UniversalHCI (UHCI), EnhancedHCI (EHCI) и даже xHCI (eXtensible Host Controller Interface).

Как бороться с излишествами, сохранив доброе имя?

 

Эволюция USB: держим в уме обратную совместимостьПопросту говоря, можно ли отказаться от «старых» кон­трол­ле­ров типа OHCI/UHCI,  обеспечив совместимость с USB 1.1 силами одного лишь ENCI? Однозначно — да. Ведь в EHCI еще с момента разработки был заложен механизм Split Transactions, позволяющий поддерживать протоколы вза­и­мо­дей­ствия с устройствами Low и Full-Speed, физически работая на High-Speed.

 

Короткое отступление.
Почему это не было сделано сразу, в момент появления дванольного контроллера? Ответ прост: такое решение потребовало бы отказаться от доминирующей в то время архитектуры южного моста. Экономическая целесообразность, по всей видимости, наступила только с появлением одночиповой логики.

Как реализован механизм Split Transactions и в чем его суть?

Представьте ситуацию, когда на вышеописанной платформе в качестве периферийного устройства используется обыкновенный USB-концентратор, поддерживающий стандарт 2.0. Совершенно очевидно, что подключение этого устройства будет выполнено к контроллеру EHCI. А что будет, если к указанному хабу подсоединить низ­ко­ско­рост­ную клавиатуру или адаптер USB-to-COM? Как изменится схема подключения? Не будет ли переподключения к OHCI/UHCI контроллерам? Кто станет обслуживать запросы от Low или Full-Speed периферии?

Ответом на все эти вопросы и является описание работы Split Transactions. Этот механизм позволяет обойти следующее противоречие: как обслужить High-Speed соединение, если взаимодействие с оконечным устройством происходит по протоколу Full или Low Speed? Решением является еще один USB-трюк, на сей раз связанный с логикой процесса, позволяющего разместить информацию о низкоскоростных транзакциях внутри High-Speed транзакций. В таком разе USB Hub 2.0 выступает посредником, общаясь с EHCI контроллером на High-Speed, как и положено высокоскоростному устройству, а с оконечным устройством — используя Low-Speed или Full-Speed (по ситуации).

Rate Matching Hub — «Калиф на час»

Как следует из сказанного, идея разместить концентратор с поддержкой High-Speed в составе контроллера USB давно витала в воздухе. В таком случае контроллеры-компаньоны не нужны, а структура USB заметно упрощается.

Впервые такой хаб появился в составе Южного Моста набора логики Intel P55, который содержит два контроллера EHCI, при этом каждый из них снабжен своим RMH —  Rate Matching Hub.

Короткое отступление. Использование интегрированного USB-хаба RMH не следует смешивать с неотъемлемой частью архитектуры универсальной последовательной шины — корневым USB-концентратором (Root Hub). RMH не заменяет Root Hub и не претендует ни на одну из его функций, являясь логическим продолжением хабовой структуры USB.

Rate Matching Hub программно видится как USB-устройство с Vendor ID=8087h и Product ID=0020h. Как и обычный концентратор внешнего подключения, он, в соответствии со спецификацией USB, содержит Hub Repeater, Hub Controller и Transaction Translator. Но в отличие от внешнего хаба, Rate Matching Hub физически находится в составе Южного Моста и по этой причине существует возможность дополнительного управления его функциями через конфигурационные регистры чипсета.

Ключевым моментом в процессе управления RMH-концентратором является возможность его отключения. Такой процесс ведет к серьезным изменениям на USB-шине, так как в этом случае должна быть выполнена коммутация всех портов на EHCI, сопровождающаяся словами «Прощай, USB 1.1!» Сие означает, что если в системе с RMH не обнаружены низкоскоростные USB-устройства, то известно где их искать.

Архитектура контроллера EHCI также меняется, в зависимости от того, используется ли RMH-концентратор. В частности, появляются регистры управления спящим режимом (Rate Matching Hub Wake Control Register) и т.п.

В преддверии широкого использования стандарта USB 3.0, который позволяет обойтись без контроллеров-компаньонов, использование Rate Matching Hub становится не более чем соблазном «досрочно» отказаться от низкоскоростных контроллеров. Сегодня сложно сказать, используется ли в архитектуре xHCI опыт, полученный в процессе разработки RMH-концентратора, или совсем наоборот — дизайн USB 3.0 дал в качестве побочного продукта Rate Matching Hub, которому в любом случае суждено стать «Калифом на час».