USB или FireWire?

8 апрель, 2003 - 23:00Сергей Митилино
Сегодня у нас день большого шоу. Разрешите представить: в левом углу агрессивный новичок и действующий чемпион -- USB 2.0, в правом -- ветеран спорта, обладатель множества титулов IEEE 1394 FireWire. Несмотря на недавнее поражение, FireWire полон решимости отвоевать утраченные было позиции, с другой стороны, USB не питает особого уважения к прошлым заслугам своего соперника. Несмотря на то что большинство игроков уже сделали ставки именно на новую звезду, нельзя недооценивать потенциал опытного спортсмена.
USB и FireWire -- технологии конкурирующие или органично дополняющие одна другую? Вопрос непростой, учитывая, с одной стороны, достаточно бурное развитие обоих интерфейсов и многообразие устройств, использующих эти интерфейсы, и, с другой стороны, некоторые принципиальные различия USB и FireWire и пока еще несравнимые степени их распространенности.

USB уже вполне оправдала свое звание "универсальной шины" (Universal Serial Bus), и разнообразие USB-устройств достигло небывалых масштабов. Сейчас к USB можно подключить практически "все что угодно" -- устройства ввода, всевозможные накопители, периферию, устройства захвата видео и даже такую экзотику, как... небольшие настольные лампы, бритвы и зубные щетки, которые все питаются от USB. С массовым распространением USB 2.0 стало реальностью использование высокоскоростных внешних накопителей (жестких дисков, CD-RW, USB-flash) и производительных сканеров. Вместе с тем FireWire, несмотря на значительно меньшую распространенность, прочно занимает свою нишу даже в системах x86, не говоря уже об Apple-совместимых ПК, из среды которых этот интерфейс произошел. Даже сейчас, когда по теоретической пропускной способности USB 2.0 превзошла FireWire (480 против 400 Mbps), последняя остается вне конкуренции, например, в таких областях, как работа с видеоданными. Кроме того, уже выпущена FireWire-800 с удвоенной до 800 Mbps пропускной способностью, и Apple недавно начала поставки первых таких систем.

Чтобы лучше понять текущую ситуацию с этими двумя интерфейсами, мы подготовили тему номера, посвященную технологиям и устройствам USB и FireWire. Здесь собраны обзорные материалы по истории развития USB и FireWire, особенностям каждой технологии, основным классам устройств, использующих один из этих интерфейсов или сразу оба, а также небольшой тест внешних винчестеров, которые становятся все более популярным средством апгрейда, резервного копирования и переноски данных.
В теории

Кажется, что все уже предрешено, однако всегда остается место для неожиданности, как это недавно произошло с Владимиром Кличко. Чтобы понять сильные и слабые стороны USB и FireWire, стоит начать с теоретических вопросов: потенциал технологии закладывается еще при ее проектировании. Практическое воплощение задумок и рыночный успех -- это совершенно иные вещи, заслуживающие отдельной статьи. А задумано все было в обоих случаях великолепно.

С точки зрения пользователя, USB и FireWire имеют очень много общего на физическом уровне, то есть в способе передачи информации в виде электрических импульсов. Оба стандарта подобно Ethernet базируются на дифференциальных передатчиках и используют схему кодирования NRZ(I). Чем они различаются, так это механизмом синхронизации приемника и передатчика: чтобы приемник не сбился, USB требует от передатчика вставлять в определенных ситуациях дополнительные разграничительные символы I. FireWire обходится без избыточной информации непосредственно в канале передачи данных, однако специфицирует отдельный провод, по которому транслируется стробирующий синхросигнал. Данные передаются внутри кадров, генерируемых одним из узлов: в случае USB это хаб, и кадр длится 1 миллисекунду; в случае FireWire это хост, и циклы равняются 125 мкс.

Гораздо более серьезные отличия заключаются в логической структуре организации соединений. Это еще раз доказывает: правильное использование старой "железной" технологии может приводить к существенному росту показателей эффективности и производительности. USB пропагандирует своего рода интерфейсную "вертикаль власти": хабы образуют иерархическую структуру, в которой право выдачи разрешений на передачу информации зарезервировано за хостом (корневым хабом). FireWire предполагает более демократическое сообщество равноправных устройств, способных существовать и без центрального узла. Образно выражаясь, IEEE 1394 сегодня является "модной" технологией, поскольку базируется на идеологии peer-to-peer. Здесь нет, как у USB, данного "от рождения" права на главенствующую роль, и полномочия распределяются динамически в зависимости от текущей конфигурации сети.

USB предполагает наличие хоста, к которому могут быть подсоединены хабы 2-го, 3-го и прочих уровней общим числом не более семи (ограничение установлено из соображений стабилизации временных параметров прохождения сигнала). Хабы могут быть как с автономным питанием, так и получать его от корневого хаба. Всеми вопросами адресации, конфигурации и распределения полосы пропускания заведует хост.

По-другому обстоят дела в "демократическом" царстве FireWire. Недаром создателем стандарта является Apple Computers, "США в миниатюре" -- оплот всего неформального и либерального внутри, что, однако, не распространяется на внешнее пространство. Для соединения устройств посредством FireWire не требуется ПК или какой-либо хаб в качестве промежуточного арбитра. Существует и плата за демократию -- стоимость контроллера FireWire, как правило, выше стоимости соответствующего устройства USB.

Одна шина FireWire может насчитывать до 64 узлов. При подключении нового устройства запускается полная реконфигурация шины, происходящая на аппаратном уровне, а не программно, как у USB. Новоприбывший выставляет "1" на обеих парах проводов, отведенных для передачи и приема данных и строба. Этот сигнал принимается к сведению ближайшим узлом, к которому и было осуществлено подключение, и ретранслируется далее по шине. Таким образом, все элементы шины узнают о начале реконфигурации. На первом этапе выбирается корневой узел. Сначала каждое устройство, имеющее только одно подключение, идентифицирует себя как дочернее, выставив состояние Parent_Notify на своих портах. Узлы, обнаружившие его, подают на эти порты сигнал Child_Notify, подтверждая прием. Если узел, имеющий более одного подключения, обнаруживает, что на одном из портов состояние Parent_Notify не было выставлено, он делает это самостоятельно. Узел, получивший на все свои порты указанный сигнал, и становится корневым. Если претендентов на роль корневого узла более одного -- используется нечто вроде механизма отката в TCP/IP, каждый из этих конкурирующих узлов запускает таймер и пытается захватить лидерство в произвольно выбранный момент.

Аналогичным образом происходит выбор адресов. Вначале корневой узел генерирует в порт с наименьшим номером специальный сигнал. Узел, получивший сигнал, но не являющийся крайним (leaf), в свою очередь генерирует такой же сигнал на своем "дочернем" порту с наименьшим номером. И так до тех пор, пока сигнал не дойдет до крайнего узла, который присваивает себе номер "ID 0" и высылает обратно пакет с подтверждением "self ID packet". Этот пакет ретранслируется всем узлам шины, и каждый из них увеличивает на единицу свой счетчик ID. После отсылки пакета крайний узел выставляет на своем порту сигнал о завершении самоидентификации. Стоящий немного выше в иерархии, получив этот сигнал, начинает идентифицировать следующее устройство, подключенное к нему. Как только идентификация дочерних устройств закончится, "родительскому" узлу посылается сигнал о завершении самоидентификации. Так постепенно все узлы получают адреса.

Теперь приходит черед назначения одного из узлов менеджером изохронных ресурсов (потоковая передача данных реального времени -- например, аудио или видео). Все узлы, желающие получить эту роль, сообщают об этом в своих ID-пакетах, а вакансию занимает устройство с самым старшим ID -- кто последний, тот и съел.

В процессе идентификации узлы также определяют максимальную скорость, на которой они могут связываться. Учитывая тот факт, что существует три возможные скорости передачи (100, 200 и 400 Mbps), в случае медленной "врезки" между двумя скоростными устройствами общая производительность данной ветви снизится. Поэтому о таких вещах должен заботиться человек, производящий физическую конфигурацию шины.

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

У USB распределением пропускной способности занимается хост, у FireWire -- корневой узел, однако процессы эти происходят по-разному. Видимо, из собственного опыта инженеры Apple знают -- побеждать должен тот, кто находится ближе "к руководству". Все узлы, желающие передавать информацию, запрашивают разрешение у корневого узла на выделение им временных слотов в рамках 125-микросекундного цикла. Сначала это могут делать изохронные источники данных, и лишь после того, как они разделят между собой квоту (за этим и следит менеджер изохронных ресурсов), к дележу приступают источники асинхронных данных, то есть отдельных пакетов. Естественно, поскольку выделение ресурсов происходит на физическом уровне, узлы, наиболее близкие к корневому, успевают первыми подать заявку и оформить владение. Чтобы не произошел захват всей доступной пропускной способности одним узлом, для изохронных источников предусмотрено правило: один узел -- один изохронный слот. Для асинхронных источников, которым разрешено занимать более одного слота за раз, придумана другая "рогатка": выиграв тендер на слот, узел обнуляет особый бит, позволяющий участвовать в конкурсе. Соответственно, после этого появляется шанс у более удаленных устройств. И лишь если в течение 20 микросекунд никто не обращается с требованием зарезервировать слот, происходит сброс (arbitration reset), и все узлы снова получают право на доступ к шине. Такая внешне сложная иерархическая процедура становится понятной, если обратить внимание на граничные способности FireWire -- между подключенными к сети начальным и конечным устройствами при стандартной длине кабеля 4,5 м расстояние может составить 72 м, на пути следования сигналы преодолеют гирлянду из последовательно соединенных 16 FireWire-сегментов!

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

На этом экскурс в технологические характеристики двух конкурирующих и взаимодополняющих шин мы завершим. Подробности о более высоких уровнях сетевой модели (пакеты, транзакции и так далее) для простоты оставим "за бортом", поскольку анализ имеющихся здесь различий будет не так уж тривиален. К тому же здесь мы умалчиваем о различных вариантах спецификаций вроде IEEE 1394a и USB 1.0 и 1.1.

Немного истории: FireWire

Как известно, технология FireWire была разработана в середине 80-х годов компанией Apple и изначально задумывалась как высокоскоростное средство обмена данными с жесткими дисками в компьютерах Macintosh; при этом одна из задач, которую ставили перед собой инженеры, заключалась в максимальном упрощении внутренних кабельных соединений.

Однако вскоре в компании осознали, что FireWire может применяться и для подключения внешней периферии, была подана заявка на рассмотрение в Institute of Electrical and Electronics Engineers (IEEE), выпустивший в декабре 1995 г. спецификацию IEEE 1394. Она описывает технологию передачи информации со скоростями 100, 200 и 400 Mbps. IEEE 1394 используется в достаточно сложных устройствах -- цифровых фото- и видеокамерах, сканерах и т. д., причем именно она является традиционным выбором для потребительской электроники.

Недавно IEEE завершил работу над новой спецификацией FireWire -- IEEE 1394b, описывающей методы обмена данными на расстояниях до 100 м со скоростью до 800 Mbps, причем для их реализации подходит стандартный сетевой кабель категории 5 либо оптоволокно. Это, по словам многих специалистов, открывает абсолютно новые возможности по применению рассматриваемой технологии -- в частности, речь идет о построении на ее основе домашних сетей, объединяющих ПК, периферию, телевизоры, музыкальные центры, игровые консоли и т. д.


А что на деле?

USB доминирует. В 2002 году было продано 400 млн. устройств, поддерживающих эту шину, в отличие от 60 млн. FireWire-совместимых устройств. Долгое время некоторые недальновидные, но весьма самоуверенные эксперты наивно полагали, что USB никогда не сможет составить конкуренцию IEEE 1394. "Если когда-либо производительность USB и достигнет 400 Mbps, FireWire к тому времени перешагнет барьер 1 Gbps", -- иронизировали они. Сегодня производительность USB 2.0 равняется 480 Mbps, а следующая версия FireWire, поддерживающая пропускную способность 800 Mbps, лишь начинает прокладывать себе дорогу на рынок. Ситуация напоминает борьбу OpenGL и DirectX: за то время, пока первый стандарт едва добрался до версии 1.4, трудолюбивые программисты Microsoft успели выпустить десяток полноценных релизов своей библиотеки. Как уже многократно было доказано: упорство важнее таланта.

Настораживают лишь результаты реальных замеров. Оказывается, что, несмотря на большую номинальную скорость передачи данных, USB 2.0, как правило, проигрывает на значительных объемах потоковых данных. Так, например, в тестах с жестким диском (который обладал обоими интерфейсами) USB тратит в среднем на 10--15% больше времени на считывание файлов общим объемом 170 MB, чем в случае подключения с помощью IEEE 1394. Также обнаружилось преимущество FireWire при воспроизведении DVD-видео с DVD-ROM, поскольку в случае с USB скорость кадров имела зависимость от загруженности процессора и прочих факторов. Как известно, в спецификацию USB изначально не закладывались требования по потоковой передаче "в реальном времени". Напротив, повторимся, в FireWire в изохронном режиме пакеты данных переменной длины передаются с регулярными интервалами ко всем частям шины и без подтверждения. Это создает идеальные условия для работы мультимедийных приложений, использующих видео и/или звук в реальном времени.

Похоже, подтверждается печальное предсказание, что FireWire, несмотря на свой солидный возраст, гораздо лучше справляется с мультимедийными потоками. Это дает право некоторым аналитикам выдвигать тезис: если USB будет так же хороша при передаче видео и аудио, как FireWire, то эта шина просто превратится в FireWire. Хотя... Здесь необходимо вспомнить о том, что согласно спецификациям FireWire изохронные потоки могут занимать до 80% (320 Mbps) пропускной способности шины, а разработчики USB 2.0 посчитали оптимальным решением остановиться на 41% (196 Mbps). В принципе, USB должен уступать не на 14%, а на все 63%. Объяснений может быть два: или поток данных в тесте не достиг ~32 Mbps, или USB гораздо более эффективно справляется с передачей изохронных данных. Последнее вполне возможно, так как, в от личие от своего конкурента, эта шина не требует проводить каждый цикл процедуру перераспределения слотов.

Почему поскупились разработчики USB, можно понять, если учесть, что для сообщений реального времени шина отводит до 42% своей пропускной способности. Все просто: если FireWire при своей высокой стоимости ориентирована исключительно на аудио- и видеопотоки, и подключение мышки или модема к порту FireWire является лишь в кошмарных снах, то USB при очевидной дешевизне способна обслуживать самый широкий спектр периферии. IEEE 1394 и USB выглядят приблизительно как болид "Формулы-1" и дорожный спорткар: они могут развить одинаковую скорость, но никому не придет в голову отправиться в гольф-клуб на BMW Williams FW25. Толку от того, что он быстр? Ведь ездить на нем можно лишь по гоночному треку: игрушка, да и только.

А теперь пару слов по поводу грозного обещания: "когда USB будет быстрой, FireWire приобретет умопомрачительную производительность". Оно сбылось... отчасти. В прошлом месяце Apple объявила о начале продаж ноутбуков со следующей версией шины IEEE 1394b или, как компания сама назвала этот продукт, -- FireWire 800. Новый стандарт предусматривает скорости передачи данных 800, 1600 и 3200 Mbps при длине кабеля до 100 метров. Итак, сейчас вы увидите бой профессиональной лиги, 12 раундов...

Немного истории: USB

Идея создания единой простой в использовании технологии, призванной заменить множество портов ввода/вывода разнообразных типов, возникла в 1993 г. За ее реализацию взялись Compaq, Digital Equipment Corporation, Microsoft и NEC, организовавшие в 1995 г. консорциум USB Implementers Forum, которым год спустя была утверждена первая спецификация USB.

Данная технология представляет собой массовый интерфейс, применяемый в широком диапазоне устройств периферии, -- от клавиатур и мышек. В 1999 г. была начата разработка новой версии USB -- 2.0, обеспечивающей скорость взаимодействия до 480 Mbps (в сравнении с 12 Mbps у USB 1.1). Соответствующая спецификация появилась в 2000 г. Как полагают наблюдатели, в конечном итоге она полностью заменит USB 1.1, однако более отдаленное будущее технологии считается весьма туманным. Отчасти это обусловлено особенностями используемой архитектуры: процессом передачи данных управляет компьютер, что не позволяет связывать электронные устройства напрямую, хотя подобное решение, конечно же, и дешевле, чем FireWire. Возможно, подобных недостатков не будет иметь беспроводной вариант USB (точнее, там он не будет ощущаться), над которым в настоящее время работает несколько компаний, включая Intel и Cypress Semiconductor.