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

Шина 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. Недостаток – функциональная избыточность и необходимость коммутации

 

Преимущество совмещенной модели «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 Con­t­rol­ler и Transaction Translator. Но в отличие от внешнего хаба, Rate Matching Hub физически находится в составе Южного Моста и по этой причине существует возможность дополнительного управления его функциями через кон­фи­гу­ра­ци­он­ные регистры чипсета.

Rate Matching Hub программно видится как USB-устройство с Vendor ID=8087h и Product ID=0020h

 

Ключевым моментом в процессе управления 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, ко­то­ро­му в любом случае суждено стать «Калифом на час».