USB (англ. Universal Serial Bus — «универсальная последовательная шина») — последовательный интерфейс для подключения периферийных устройств к вычислительной технике. Получил широчайшее распространение и стал основным интерфейсом подключения периферии к бытовой цифровой технике.
Современный мир сложно представить без огромного числа устройств, которые отличаются и форматом, и предназначением. Настольные компьютеры и портативные ноутбуки, универсальные планшеты и смартфоны, которые всегда с собой, современные беспроводные наушники, а еще портативные аккумуляторы и умные часы. Практически каждый такой гаджет в том или ином виде использует интерфейс USB. Он прошел длинный эволюционный путь и подстроился под размер и нужды целого зоопарка из девайсов, которые находятся в обиходе современного пользователя.
В Intel днем рождения USB называют 15 ноября 1995 года. Первые спецификации для USB 1.0 были представлены в 1994—1995 годах. Разработка USB поддерживалась фирмами Intel, Microsoft, Philips, US Robotics. USB стал «общим знаменателем» под тремя не связанными друг с другом стремлениями разных компаний:
- Расширение функциональности компьютера. На тот момент для подключения внешних периферийных устройств к персональному компьютеру использовалось несколько «традиционных» (англ. legacy) интерфейсов (PS/2, последовательный порт rs-232,ieee 488 ,параллельный порт, порт для подключения джойстика, SCSI), и с появлением новых внешних устройств разрабатывали и новый разъём. Предполагалось, что USB заменит их все и заодно подхлестнёт разработку нетрадиционных устройств.
- Подключить к компьютеру мобильный телефон. В то время мобильные сети переходили на цифровую передачу голоса, и ни один из имеющихся интерфейсов не годился для передачи с телефона на компьютер как речи, так и данных.
- Простота для пользователя. Старые интерфейсы (например, последовательный (COM) и параллельный (LPT) порты) были крайне просты для разработчика, но не давали настоящего «подключи и работай». Требовались новые механизмы взаимодействия компьютера с низко- и среднескоростными внешними устройствами — возможно, более сложные для конструкторов, но надёжные, дружественные и пригодные к «горячему» подключению.
Поддержка USB вышла в виде патча к Windows 95 OEM Service Release 2, в дальнейшем она вошла в стандартную поставку Windows 98. В первые годы устройств было мало, поэтому шину в шутку называли «Useless serial bus» («бесполезная последовательная шина»). Впрочем, производители быстро осознали пользу USB, и уже к 2000 году большинство принтеров и сканеров работали с новым интерфейсом.
Hewlett-Packard, Intel, Lucent, Microsoft, NEC и Philips совместно выступили с инициативой по разработке более скоростной версии USB. Спецификация USB 2.0 была опубликована в апреле 2000 года, и в конце 2001 года эта версия была стандартизирована USB Implementers Forum. USB 2.0 является обратно совместимой со всеми предыдущими версиями USB.
В начале 2000-х годов корпорация Apple отдавала приоритет шине FireWire, в разработке которой она принимала активное участие. Ранние модели iPod были оснащены только интерфейсом FireWire, а USB отсутствовал. Впоследствии компания отказалась от FireWire в пользу USB, оставив в некоторых моделях FireWire только для подзарядки. Однако часть выпускавшихся клавиатур и мышей, начиная со второй половины 1990-х годов, имела интерфейс USB.
Кабель USB (до 2.0 включительно) состоит из четырех медных проводников. Два проводника питания и два проводника данных в витой паре — и заземлённой оплётки (экрана).
Кабели USB ориентированы, то есть имеют физически разные наконечники «к устройству» (Тип B) и «к хосту» (Тип A). Возможна реализация USB устройства без кабеля, со встроенным в корпус наконечником «к хосту». Возможно и неразъёмное встраивание кабеля в устройство, как в мышь (стандарт запрещает это для устройств full и high speed, но производители его нарушают). Существуют, хотя и запрещены стандартом, и пассивные USB удлинители, имеющие разъёмы «от хоста» и «к хосту».
С помощью кабелей формируется интерфейс между USB устройствами и USB хостом. В качестве хоста выступает программно-управляемый USB контроллер, который обеспечивает функциональность всего интерфейса. Контроллер, как правило, интегрирован в микросхему южного моста, хотя может быть исполнен и в отдельном корпусе. Соединение контроллера с внешними устройствами происходит через USB концентратор (USB hub). В силу того, что USB шина имеет древовидную топологию, концентратор самого верхнего уровня называется корневым (root hub). Он встроен в USB контроллер и является его неотъемлемой частью.
Для подключения внешних устройств к USB концентратору в нём предусмотрены порты, заканчивающиеся разъёмами. К разъёмам с помощью кабельного хозяйства могут подключаться USB устройства либо USB концентраторы нижних уровней. Такие концентраторы — активные электронные устройства (пассивных не бывает), обслуживающие несколько собственных USB портов. С помощью USB концентраторов допускается до пяти уровней каскадирования, не считая корневого. Сам USB интерфейс не позволяет соединять между собой два компьютера (хост-устройства), это возможно лишь при использовании специальной электроники, имеющей два USB входа и специализированный мост, например, эмулирующей два соединённых Ethernet адаптера. По одному для каждой из сторон — либо использующие специализированное ПО для обмена файлами.
Устройства могут быть запитаны от шины, но могут и требовать внешний источник питания. По умолчанию устройствам гарантируется ток до 100 мА, а после согласования с хост-контроллером — до 500 мА. Поддерживается и дежурный режим для устройств и концентраторов по команде с шины со снятием основного питания при сохранении дежурного питания и включением по команде с шины.
USB поддерживает «горячее» подключение и отключение устройств. Это достигнуто увеличенной длиной заземляющего контакта разъёма по отношению к сигнальным. При подключении разъёма USB первыми замыкаются заземляющие контакты, потенциалы корпусов двух устройств становятся равны и дальнейшее соединение сигнальных проводников не приводит к перенапряжениям, даже если устройства питаются от разных фаз силовой трёхфазной сети.
На логическом уровне устройство USB поддерживает транзакции приёма и передачи данных. Каждый пакет каждой транзакции содержит в себе номер оконечной точки (endpoint) на устройстве. При подключении устройства драйверы в ядре ОС читают с устройства список оконечных точек и создают управляющие структуры данных для общения с каждой оконечной точкой устройства. Совокупность оконечной точки и структур данных в ядре ОС называется каналом (pipe).
Оконечные точки, а значит, и каналы, относятся к одному из четырех классов — поточный (bulk), управляющий (control), изохронный (isoch) и прерывание (interrupt). Низкоскоростные устройства, такие, как мышь, не могут иметь изохронных и поточных каналов.
Управляющий канал предназначен для обмена с устройством короткими пакетами «вопрос-ответ». Любое устройство имеет управляющий канал 0, который позволяет программному обеспечению ОС прочитать краткую информацию об устройстве, в том числе коды производителя и модели, используемые для выбора драйвера, и список других оконечных точек.
Канал прерывания позволяет доставлять короткие пакеты и в том, и в другом направлении, без получения на них ответа/подтверждения, но с гарантией времени доставки — пакет будет доставлен не позже, чем через N миллисекунд. Например, используется в устройствах ввода (клавиатуры, мыши, джойстики).
Изохронный канал позволяет доставлять пакеты без гарантии доставки и без ответов/подтверждений, но с гарантированной скоростью доставки в N пакетов на один период шины (1 кГц у low и full speed, 8 кГц у high speed). Используется для передачи аудио- и видеоинформации.
Поточный канал даёт гарантию доставки каждого пакета, поддерживает автоматическую приостановку передачи данных по нежеланию устройства (переполнение или опустошение буфера), но не даёт гарантий скорости и задержки доставки. Используется, например, в принтерах и сканерах.
Время шины делится на периоды, в начале периода контроллер передаёт всей шине пакет «начало периода». Далее в течение периода передаются пакеты прерываний, потом изохронные в требуемом количестве, в оставшееся время в периоде передаются управляющие пакеты и в последнюю очередь — поточные.
Активной стороной шины всегда является контроллер, передача пакета данных от устройства к контроллеру реализована как короткий вопрос контроллера и длинный, содержащий данные, ответ устройства. Расписание движения пакетов для каждого периода шины создаётся совместными усилиями аппаратуры контроллера и ПО драйвера, для этого многие контроллеры используют крайне сложный DMA со сложной DMA-программой, формируемой драйвером.
Размер пакета для оконечной точки – это константа, встроенная в таблицу оконечных точек устройства и изменению не подлежит. Он выбирается разработчиком устройства из числа тех, что поддерживаются стандартом USB.
OHCI и UHCI, являются спецификациями, совместимыми с USB, и описывают интерфейс различных аппаратных реализаций встраиваемого контроллера. Многообразие встраиваимых в аппаратную часть систем контроллеров, является естественным развитием и создается в рамках спецификации USB.
Также система команд SCSI реализована поверх протокола USB, что является частью спецификации класса Mass Storage device. Это позволяет подключать через интерфейс USB любые хранилища данных (от флеш-накопителей до внешних жёстких дисков), не разрабатывая для них собственного протокола обмена, а вместо этого используя имеющийся в операционной системе драйвер SCSI.
Сертификацией новых стандартов и коннекторов USB занималась и продолжает заниматься некоммерческая организация USB Implementers Forum (USB-IF). Она объединяет разработчиков и производителей, которые используют технологию USB. Главная цель этой компании заключается в продолжении принципов интерфейса: сохранение направления на унификацию разъемов и кабелей, управление необходимым потреблением энергии, использование утвержденных протоколов для передачи данных, унификация набора функциональных возможностей и драйверов для всех гаджетов с поддержкой USB.
Версии USB и максимальная скорость:
Версия | Скорость |
---|---|
USB 1.0 | 1,5 Мбит/с |
USB 1.1 | 12 Мбит/с |
USB 2.0 | 480 Мбит/с |
USB 3.0 | 5 Гбит/с |
USB 3.1 Gen 2 | 10 Гбит/с |
USB Type-C или USB-C — спецификация USB для универсального компактного двухстороннего 24-контактного разъёма для USB-устройств и USB-кабелей.
Согласно спецификации USB 4.0 все устройства, которые с ним совместимы, разделяются на 4 типа:
- периферийные;
- хаб;
- док-станция;
- хост.
Что касается периферийных устройств, то это самые разные аксессуары, включая внешний накопитель. У периферийного девайса будет один входящий порт (UFP). Хаб и док-станция ― сильно похожие по реализации подключения устройства, которые отличаются тем, что док-станция позволяет подключать девайсы и другие интерфейсы, не только USB. Ну а хост ― это ноутбук или десктопный ПК.
USB 4 (официально «USB4» без пробела) является важным обновлением не только из-за новых возможностей, но также из-за устранения путаницы, связанную с именованием USB 3.x, что дает пользователям предсказуемое и понимание. Для протокола USB4 требуется кабель USB-C <-> USB-C.
Скорость передачи данных до 40 Гбит/с: устройства USB4 должны поддерживать 20 Гбит/с (2.4 ГБ/сек). Возможно дополнительно поддерживать 40 Гбит/с (4.8 ГБ/сек), если устройства используют более короткий кабель 0.8 метра Gen 3.
Несколько протоколов данных и отображения: USB4 поддерживает USB 3.2, PCIe и DisplayPort 1.4a с помощью метода, называемого туннелированием протокола. DisplayPort и Thunderbolt 3 также поддерживаются в альтернативном режиме.
Обратная совместимость с USB 3.2, USB 2.0 и Thunderbolt 3: USB4 поддерживает совместимость с предыдущими версиями спецификации USB и, благодаря своей основе Thunderbolt 3, также поддерживает альтернативный режим TB3.
Оптимизация полосы пропускания видео и данных: USB 3.2 выделил фиксированную полосу пропускания для данных или видеосигнала, а в альтернативном режиме DP, предоставил 100% полосы для видео. USB4 динамически распределяет полосу пропускания для видео и данных в зависимости от реальных потребностей.
Зарядка 100 Вт: все устройства USB4 поддерживают подачу питания через USB. Когда устройство подключено к порту USB4, USB PD заключает «контракт» на поставку мощности, безопасно обеспечивая до 100 Вт (5A / 20V).
USB 4 ― достаточно «умный» стандарт, чтобы учитывать, какую скорость требуют девайсы, которые подключены одновременно. Например, внешний накопитель и монитор. Стандарт спокойно справляется с грамотным распределением ресурсов.