
Архитектура 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).
Как бороться с излишествами, сохранив доброе имя?
Попросту говоря, можно ли отказаться от «старых» контроллеров типа 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, которому в любом случае суждено стать «Калифом на час».