IEEE 1394(FireWire[1], i-Link) — устаревший стандарт последовательной высокоскоростной шины, предназначенной для обмена цифровой информацией между компьютером и другими электронными устройствами.
Различные компании продвигали стандарт под своими торговыми марками:
В 1986 году членами Комитета по стандартам микрокомпьютеров (Microcomputer Standards Committee) принято решение объединить существовавшие в то время различные варианты последовательной шины (Serial Bus).
В 1992 году разработкой интерфейса занялась Apple.
В 1995 году принят стандарт IEEE 1394 (сама технология была разработана намного раньше, до появления Windows 95, что показывает большой потенциал данного института).
Около 1998 года содружество компаний, в том числе Microsoft, развивало идею обязательности 1394 для любого компьютера и использования 1394 внутри корпуса, а не только вне его. Существовали даже карты контроллеров с одним разъёмом, направленным внутрь корпуса. Также существовала идея Device Bay, то есть отсека для устройства со встроенным в отсек разъёмом 1394 и поддержкой горячей замены.
Такие тенденции прослеживаются в материалах Microsoft той поры, предназначенных для разработчиков компьютеров. Можно сделать вывод, что 1394 предлагали как замену ATA, то есть на роль, ныне выполняемую SATA.
Но этим идеям не суждено было воплотиться, и одной из главных причин такого исхода была лицензионная политика компании Apple, требующей выплат за каждый чип контроллера. Модели системных плат и ноутбуков, которые были представлены на рынке начала 2010-х годов, как правило, уже не поддерживали интерфейс FireWire. Исключения были представлены в узком топовом IT-сегменте[2][3]. Ко второй половине 2010-х годов FireWire был полностью вытеснен стандартами USB (версии 3) и Thunderbolt.
Главным отличием 1394 от USB являлось то, что USB использует строго иерархическую топологию с хост-контроллером в центре, хост-контроллер принципиально отличен от остальных устройств, и весь трафик шины идет по инициативе хост-контроллера - запросы от него устройствам и ответы от устройств.
Что же касается 1394, то она есть "шина равных" (peer-to-peer), все устройства равноправны, что дает легкую возможность создания сети на базе 1394, а также соединения периферийных устройств без компьютера.
Кроме того, до версии 3 шина USB использовала всего одну витую пару, направление передачи по которой переключалось. Это приводило к сильному снижению скорости из-за необходимости выжидания электромагнитного "переворота" кабеля (длина кабеля / фазовую скорость волны).
USB 3, а также все версии 1394, используют две перекрещенных витых пары "туда" и "оттуда", что делает ненужным такое выжидание.
Преимущества
Горячее подключение — возможность переконфигурировать шину без выключения компьютера.
Различная скорость передачи данных — 100, 200 и 400 Мбит/с в стандарте IEEE 1394/1394a, дополнительно 800 и 1600 Мбит/с в стандарте IEEE 1394b и 3200 Мбит/с в спецификации S3200.
Гибкая топология — равноправие устройств, допускающее различные конфигурации (возможность «общения» устройств без компьютера).
Высокая скорость — возможность обработки мультимедиа-сигнала в реальном времени
Кабель представляет собой 2 витые пары — А и B, распаянные как A к B, а на другой стороне кабеля — как B к A. Также возможен необязательный проводник питания.
Устройство может иметь до 4 портов (разъёмов). В одной топологии может быть до 64 устройств. Максимальная длина пути в топологии — 16. Топология древовидная, замкнутые петли не допускаются.
При присоединении и отсоединении устройства происходит сброс шины, после которого устройства самостоятельно выбирают из себя главное (root), пытаясь взвалить это «главенство» на соседа. После определения главного устройства становится ясна логическая направленность каждого отрезка кабеля — к главному или же от главного. После этого возможна раздача номеров устройствам. После раздачи номеров возможно исполнение обращений к устройствам.
Во время раздачи номеров по шине идёт трафик broadcast-пакетов SelfID, каждый из которых содержит в себе количество портов на устройстве, ориентацию каждого порта — не подключён/к главному/от главного, а также максимальную скорость каждой связи (2 порта и отрезок кабеля). Контроллер 1394 принимает эти пакеты, после чего стек драйверов строит карту топологии (связей между устройствами по их номерам) и скоростей (наихудшая скорость на пути от одного устройства до другого).
Операции шины делятся на асинхронные и изохронные.
Асинхронные операции — это запись/чтение 32-битного слова, блока слов, а также атомарные операции. Асинхронные операции используют 24-битные адреса в пределах каждого устройства и 16-битные номера устройств (поддержка межшинных мостов). Некоторые адреса зарезервированы под главнейшие управляющие регистры устройств (например, config ROM, в которой находятся номера производителя и модели устройства - VID/PID). Асинхронные операции поддерживают двухфазное исполнение — запрос, промежуточный ответ, потом позже - окончательный ответ. Фактически, асинхронные операции есть RDMA.
Изохронные операции — это передача пакетов данных в ритме, строго приуроченном к ритму 8 КГц, задаваемому ведущим устройством шины путём инициации транзакций «запись в регистр текущего времени». Вместо адресов в изохронном трафике используются номера каналов от 0 до 31. Подтверждений не предусмотрено, изохронные операции есть одностороннее вещание. Изохронное вещание напоминает IP multicast, используемый, например, в IP-телевидении.
Изохронные операции требуют выделения изохронных ресурсов — номера канала и полосы пропускания. Это делается атомарной асинхронной транзакцией на некие стандартные адреса одного из устройств шины, избранного как «менеджер изохронных ресурсов».
Помимо кабельной реализации шины, в стандарте описана и наплатная (реализации неизвестны).
Использование
Сеть поверх 1394 и FireNet
Существуют стандарты RFC 2734 — IP поверх 1394 и RFC 3146 — IPv6 поверх 1394. Поддерживались в ОС Windows XP и Windows Server 2003. Поддержка со стороны Microsoft прекращена в ОС Windows Vista, однако существует реализация сетевого стека FireNet в альтернативных драйверах от компании Unibrain[5][6] (версия 6.00 вышла в ноябре 2012 года[7]).
Поддерживается во многих ОС семейства UNIX (обычно требуется пересборка ядра с этой поддержкой).
Стандарт не подразумевает эмуляцию Ethernet (в том числе 6-байтных MAC адресов) над 1394 и использует совершенно иной протокол ARP. Несмотря на это, эмуляция Ethernet над 1394 была включена в ОС FreeBSD и является специфичной для данной ОС.
Внешние дисковые устройства
Существует стандарт SBP-2 — SCSI поверх 1394. В основном используется для подключения внешних корпусов с жёсткими дисками к компьютерам — корпус содержит чип моста 1394—ATA. При этом скорость передачи данных может достигать 27 МБ/с, что превышает скорость USB 2.0 как интерфейса к устройствам хранения данных, равную примерно 43 МБ/с, однако гораздо ниже таковой для USB 3.0.
Поддерживается в ОС семейства Windows с Windows 98 и по сей день. Также поддерживается в популярных ОС семейства UNIX.
MiniDV-видеокамеры
Исторически первое использование шины. Используется и по сей день как средство захвата фильмов с MiniDV в файлы. Возможен и захват с камеры на камеру.
Видеосигнал, идущий по 1394, идёт практически в том же формате, что и хранится на видеоленте (а, в случае сохранения в "сырой", без ре-компрессии, AVI файл - формат файла также аналогичен). Это упрощает камеру, снижая требования к ней по наличию памяти.
В ОС Windows подключённая по 1394 камера является устройством DirectShow. Захват видео с такого устройства возможен в самых разнообразных приложениях — Adobe Premiere, Ulead Media Studio Pro, Киностудия Windows. Существует также огромное количество простейших утилит, способных выполнять только этот захват. Возможно также и использование тестового инструмента Filter Graph Editor из свободно распространяемого DirectShow SDK.
Использование 1394 c miniDV положило конец проприетарным платам видеозахвата.
Отладчики
Интересным свойством контроллеров 1394 является способность читать и писать произвольные адреса памяти со стороны шины без использования процессора и ПО. Это проистекает из богатого набора асинхронных транзакций 1394, а также из её структуры адресации.
Эта возможность чтения и редактирования памяти через 1394 без помощи процессора послужила причиной использования 1394 в двухмашинном отладчике ядра Windows — WinDbg. Такое использование существенно быстрее последовательного порта, но требует ОС не ниже Windows XP с обеих сторон. Также возможность используется в отладчиках для других ОС, например, Firescope для Linux[8].
Организация устройств IEEE 1394
Устройства IEEE 1394 организованы по трёхуровневой схеме — Transaction, Link и Physical, соответствующие трём нижним уровням модели OSI.
Transaction Layer — маршрутизация потоков данных с поддержкой асинхронного протокола записи-чтения.
Link Layer — формирует пакеты данных и обеспечивает их доставку.
Physical Layer — преобразование цифровой информации в аналоговую для передачи и наоборот, контроль уровня сигнала на шине, управление доступом к шине.
Связь между шиной PCI и Transaction Layer осуществляет Bus Manager. Он назначает вид устройств на шине, номера и типы логических каналов, обнаруживает ошибки.
Данные передаются кадрами длиной 125 мкс. В кадре размещаются временные слоты для каналов.
Возможен как синхронный, так и асинхронный режимы работы. Каждый канал может занимать один или несколько временных слотов. Для передачи данных устройство-передатчик просит предоставить синхронный канал требуемой пропускной способности. Если в передаваемом кадре есть требуемое количество временных слотов для данного канала, поступает утвердительный ответ, и канал предоставляется.
Спецификации FireWire
IEEE 1394
В конце 1995 годаIEEE принял стандарт под порядковым номером 1394. В цифровых камерах Sony интерфейс IEEE 1394 появился раньше принятия стандарта и под названием iLink.
Интерфейс первоначально позиционировался для передачи видеопотоков, но пришёлся по нраву и производителям внешних накопителей, обеспечивая превосходную пропускную способность высокоскоростных дисков.
Скорость передачи данных — 98,304, 196,608 и 393,216 Мбит/с, которые округляют до 100, 200 и 400 Мбит/с. Длина кабеля — до 4,5 м.
IEEE 1394a
В 2000 году был утверждён стандарт IEEE 1394а. Был проведён ряд усовершенствований, что повысило совместимость устройств.
Было введено время ожидания 1/3 секунды на сброс шины, пока не закончится переходный процесс установки надёжного подсоединения или отсоединения устройства.
IEEE 1394b
В 2002 году появляется стандарт IEEE 1394b с новыми скоростями: S800 — 800 Мбит/с и S1600 — 1600 Мбит/с. Соответствующие устройства обозначаются FireWire 800 или FireWire 1600, в зависимости от максимальной скорости.
Изменились используемые кабели и разъёмы. Для достижения максимальных скоростей на максимальных расстояниях предусмотрено использование волоконно-оптического кабеля: пластмассового — для длины до 50 метров, и стеклянного — для длины до 100 метров.
Несмотря на изменение разъёмов, стандарты остались совместимы, что позволяет использовать переходники.
12 декабря2007 года была представлена спецификация S3200[9] с максимальной скоростью 3,2 Гбит/с. Для обозначения данного режима используется также название «beta mode» (схема кодирования 8B10B[англ.] (англ.)). Максимальная длина кабеля может достигать 100 метров.
IEEE 1394.1
В 2004 году увидел свет стандарт IEEE 1394.1. Этот стандарт был принят для возможности построения крупномасштабных сетей и резко увеличивает количество подключаемых устройств до гигантского числа — 64 449[10].
IEEE 1394c
Появившийся в 2006 году стандарт 1394c позволяет использовать витопарный кабель категории 5e (такой же, как и для сетей Ethernet). Возможно использовать параллельно с Gigabit Ethernet, то есть использовать две логические и друг от друга не зависящие сети на одном кабеле. Максимальная заявленная длина — 100 м, Максимальная скорость соответствует S800 — 800 Мбит/с.
Разъёмы
Существует четыре (до IEEE 1394c — три) вида разъёмов для FireWire:
4-контактный (IEEE 1394a без питания) стоит на видеокамерах. Витая пара (два контакта) для передачи сигнала (информации) и вторая витая пара (др. два контакта) — для приёма.
6-контактный (IEEE 1394a). Дополнительно два провода для питания.
9-контактный (IEEE 1394b). Дополнительно два контакта для экранов витых пар (приёма и передачи информации). И ещё один контакт — резерв.
↑Митилино С."Огненная сеть" (неопр.). «Компьютерное обозрение». ko.com.ua (21 октября 2003). Дата обращения: 2 декабря 2014. Архивировано 4 марта 2016 года.
Интерфейс IEEE 1394. По материалам курса Kramer AV Academy (неопр.). Архив журнала «625», 2005, № 7. 625-net.ru; archive.org (2005). — Статья с иллюстрациями: функциональные схемы, дерево узлов, схемы арбитража, разрез кабеля, переходники. Дата обращения: 24 ноября 2014. Архивировано из оригинала 1 июня 2013 года..