Антология USB: истоки

Сегодня мало кто помнит ис­то­рию, свя­зан­ную с кон­фу­зом на вы­став­ке COM­DEX в апреле 1998 года. Тог­да пре­зен­та­ция Win­dows 98 за­вер­ши­лась кра­хом опе­ра­ци­он­ной си­с­те­мы — ком­пью­тер прос­то по­вис, ког­да Крис Ка­­пос­­с­е­ла (Chris Capossela) по­ка­зы­вал Бил­лу Гейт­су, как ре­а­ли­зо­ван ме­ха­низм Plug-and-Play при «го­ря­чем под­клю­че­нии» USB-сканера.

Были и другие курьезы, где главным действующим лицом становилась шина USB или подключаемые к ней устройства. За давностью лет забылись проблемы c USB-клавиатурой, когда для ее при­ме­не­ния при­хо­ди­лось в установках BIOS раз­ре­шать Legacy USB Support с помощью классического PS/2-устройства ввода. Слож­ным и тернистым был путь уни­вер­саль­ной по­сле­до­ва­тель­ной шины от момента ее рождения до без­раз­дель­но­го господства на рынке. Вспомним, как все начиналось.

Made in Intel

Одним из архитекторов USB стал Аджай Бхатт, инженер компании Intel. Исходно, спецификация шины раз­ра­ба­ты­ва­лась с при­це­лом на не­до­ро­гие приложения: про­из­во­ди­тель­ная периферия к 1995 году уже во­всю за­дей­ст­во­ва­ла Fire­Wire IEEE1394. Еди­но­мыш­лен­ни­ка­ми Intel в разработке нового ин­тер­фей­са, ставшего вскоре стандартом, были как софтверные гиганты (IBM, Microsoft), так и крупные производители ком­пью­тер­ной техники (Compaq, NEC). Они и ряд других компаний организовались в USB Implementers Forum, из недр которого 11 ноября 1994 года и появился первый черновик основополагающего документа — Universal Serial Bus Specification, Revision 1.0.

Разброд и шатания

Все, кто работал о спецификациями, знают, сколь трудно выудить прикладные знания из канцелярского текс­та этих до­ку­мен­тов. Не удивительно, что наряду с USB Spec на видном месте для разработчиков оказалось ру­ко­вод­ст­во по схем­ным решениям с использованием Universal Host Controller Interface — первого из из­вест­ных USB-контроллеров. Его разработала компания Intel как неотъемлемый компонент нового в то время на­бо­ра системной логики VX (его еще на­зы­ва­ли Triton-II).

Здесь уместно подчеркнуть, что программная модель UHCI и хост-контроллеров следующих поколений, а так­же ар­хи­тек­ту­ра их вза­и­мо­дей­ст­вия с ресурсами пер­со­наль­ной плат­фор­мы, ос­та­ет­ся «за скоб­ка­ми» USB-спе­ци­фи­ка­ции и оп­ре­де­ля­ет­ся от­дель­ны­ми документами.

Первый из известных USB-контроллеров разработала компания Intel как неотъемлемый компонент набора системной логики Intel VX

 

UHCI включался в состав южного моста Intel 82371SB и обеспечивал работу двух USB-портов, каждый из ко­то­рых мог варь­и­ро­вать по своему усмотрению (и по способности подключенного устройства) скорость об­ме­на от эко­ном­но ма­лой Low-Speed (1,5 Мб/сек) до невероятно (по тем временам) скоростной Full-Speed (12 Мб/сек). О про­из­во­ди­тель­но­с­ти USB с высокой пропускной способностью можно говорить без иронии — ос­нов­ным сетевым про­то­ко­лом тогда был Ethernet 10Base-T, ус­ту­па­ю­щий ре­жи­му Full-Speed.

Вскоре универсальный USB-контроллер появился и у набирающей обороты VIA Technology. Но, к сожалению, обе про­грам­мные модели (Intel и VIA) были далеко не универсальными: UHCI поддерживал всего два USB-пор­та, обмен с ко­то­рым создавал приличную нагрузку на хилые процессоры Pentium. Корни проблемы ухо­ди­ли в не­до­ста­ток ав­то­ном­но­с­ти при обработке последовательности транзакций. Как следствие, кон­т­рол­лер ин­тен­сив­но ге­не­ри­ро­вал за­про­сы на пре­ры­ва­ние для центрального процессора: сценарий обмена требовал по­сто­ян­но­го вни­ма­ния со стороны CPU. Сы­грал свою негативную роль и консервативный подход к размещению ре­гист­ров ста­ту­са и управления в про­ст­ран­ст­ве пор­тов ввода-вывода.

Решение не заставило себя ждать. Застрельщиком оказалась коалиция в составе Compaq, Microsoft и Na­ti­onal Semi­con­duc­tor. На свет появилась спецификация открытого контроллера USB — Open Host Controller Interface (OHCI), ли­шен­ная пе­ре­чис­лен­ных недостатков.

Спецификация OHCI сняла ограничение на количество USB-портов и открыла путь к использованию ре­гист­ров в ад­рес­ном про­ст­ран­ст­ве памяти (Memory-Mapped IO) вместо портов ввода-вывода. Кроме того, в силу более раз­ви­той ап­па­рат­ной под­держ­ки рас­пи­са­ния транз­ак­ций, контроллер OHCI по сравнению с UHCI по­зво­лил не­сколь­ко сни­зить ути­ли­за­цию цен­т­раль­но­го про­цес­со­ра. Обязанности по вне­д­ре­нию раз­де­ли­ли ком­па­нии, которых уже нет на рынке: CMD (Ca­li­for­nia Mic­ro De­vic­es), Cyrix и OPTi. Се­го­дня их дело про­дол­жа­ет AMD/ATi, NVIDIA, SiS (вернее, то, что от нее ос­та­лось).

По пути улучшений

Груз проблем, связанных с внедрением USB-интерфейса, породил новую и уже стабильную ревизию спе­ци­фи­ка­ции, по вре­ме­ни совпавшую с выходом Windows 98. Фактически, USB-устройств в широком пред­ло­же­нии на рынке все еще не бы­ло, но потребность в них возрастала день ото дня, хотя круг энтузиастов в то­му вре­ме­ни со­кра­тил­ся. Ло­ко­мо­ти­ва­ми ин­тер­фей­са оставались только Compaq, Intel, NEC, Microsoft. Они и под­го­то­ви­ли спецификацию USB v1.1.

Основной проблематикой нового документа стала заблаговременная подготовка к мак­си­маль­но без­бо­лез­нен­но­му пе­ре­хо­ду на USB2.0. Как это произошло — читайте в следующих публикациях сайта «Компостер 2.0».

Post Scriptum. Anti-Ajay

В воспоминаниях Аджая Бхатта часто встречается тезис о том, что изначально рас­смат­ри­ва­лась ре­вер­сив­ная кон­ст­рук­ция разъ­е­ма USB Type-A. На сей счет есть несколько соображений, и все они не в пользу l'esprit d'escalier.

  • Во-первых, не в традиции дизайнеров компьютерной техники ис­поль­зо­вать сим­мет­рич­ные кон­ст­рук­ции, все стро­го на­о­бо­рот: защитные пазы использовались для пред­от­вра­ще­ния «об­рат­но­го» под­клю­че­ния — в 90-х все кон­нек­то­ры имеют эту особенность.
  • Во-вторых, дефицит USB-портов в интегрированных и дискретных контроллерах не пред­ве­щал той рас­то­чи­тель­нос­ти, ко­то­рую по­зво­ля­ет себе реверсивная конструкция: один из портов в сим­мет­рич­ном разъ­еме мо­жет ос­та­вать­ся не­ис­поль­зо­ван­ным.
  • В-третьих, нарекания на сложность подключения «классического» USB-Am смело сто­ит от­нес­ти к до­су­жим: кон­ст­рук­ция разъ­ема четко декларирует, где у него верх и где низ, чего в большинстве случаев до­ста­точ­но для со­е­ди­не­ния с USB-гнездом с первой же попытки, что, впрочем, не от­ме­ня­ет удоб­ства USB Type-C.
Конструкция USB-гнезд на плате ASUS TUF Gaming X570-Plus с направляющими синего цвета указывает, какой должна быть ориентация кабельного разъема USB Type-A для подключения с первой попытки

Конструкция USB-гнезд на плате ASUS TUF Gaming X570-Plus с направляющими синего цвета указывает, какой должна быть ориентация кабельного разъема USB Type-A для подключения с первой попытки