Оригинал материала: https://3dnews.ru./121284

IEEE 1394

Стр.1 - Часть первая

Важность взаимодействия между различными компонентами и устройствами в компьютерной технике сложно переоценить. Без такого взаимодействия просто не было бы самой компьютерной техники. Но, с самого начала развития компьютеров каждый производитель решал (а кое-где и продолжает решать) эти проблемы по-своему. Как грибы после дождя росло количество всевозможных шин и разъёмов, по которым перегонялись данные, как внутри компьютера, так и снаружи. Но, если такое разнообразие решений внутри железной коробки шло (и идёт) во благо, стимулируя технический прогресс, то с периферией всё происходит наоборот. Море разных шин и разъёмов, которыми периферия может подключаться к компьютерам не выгодно никому - ни производителям самих компьютеров, ни производителям периферии. Стало ясно, что нужны универсальные шины. И они появились. К сожалению, общий беспорядок(когда каждый тянул одеяло на себя), не миновал и эту область. Поэтому, в середине девяностых годов, взглянув на заднюю стенку компьютера, можно было увидеть кучу разнообразных разъёмов: COM, LPT, VGA, PS/2 и некоторые другие. Каждый из этих разъёмов имел свои недостатки, требовал от разработчиков отдельной реализации и требовал свою долю отнюдь не безграничных компьютерных ресурсов. Необходимость действительно универсального разъёма назрела, и разработчики с энтузиазмом принялись за работу. Так, например, небезызвестная фирма Intel с середины девяностых годов начала агрессивно проталкивать на рынок своё детище - USB (Universal Serial Bus). По сравнению с существовавшими на то время разъёмами, USB стал подлинным прорывом, обеспечивая казалось бы, всё, о чём можно было мечтать. Но это только казалось :-) В тени шумихи вокруг USB тогда мало кто заметил рождение ещё одного формата, использующего последовательную шину (Serial Bus), который умел не меньше (а то и больше), чем его широко разрекламированный конкурент. Это IEEE 1394.

С чего всё начиналось

История IEEE 1394, теперь известного также как FireWire и как i-Link, началась ещё в 1986 году, когда члены Microcomputer Standards Committee (Комитет по Стандартам Микрокомпьютеров) захотели объединить существовавшие в то время различные варианты последовательной шины (Serial Bus). Новый проект был призван объединить существовавшие на то время наработки: IEEE 1014 VME, IEEE 1296 Multibus II, и IEEE 896 FutureBus+®. Задачей разработчиков стало создание универсального I/O (Input/Output) внешнего интерфейса, пригодного как для работы с мультимедиа, так и для работы с накопителями данных (Mass Storage Device), не говоря уже о более простых вещах - вроде принтеров, сканеров, и тому подобного. Результатом труда разработчиков стал окончательно утверждённый 12 декабря 1995 года 10 мегабайтный документ под названием 1394-1995.pdf, который описывал IEEE 1394. В названии стандарта нет никакого тайного смысла - просто это был 1394 по счёту стандарт, выпущенный комитетом. Интерфейс, который описывался в этом документе был воистину революционным. Он обеспечивал просто невероятные по тем временам скорости и удобство. Ведущую роль в разработке стандата сыграла, была Apple, которая дала ему имя FireWire, поэтому нет ничего удивительного в том, что она сразу же сделал ставку на использование этого стандарта в своих компьютерах (как обычно, Apple пошёл своим путём, и, пока пользователи PC заглядывали в рот Intel с недавно появившемся USB, сделал ставку на FireWire. Хотя и USB не был забыт. Настоящей лебединой песней для IEEE 1394 стало появление любительских DV камер. Ещё при их разработке стало ясно, что, кроме IEEE 1394 в качестве внешнего интерфейса для них ничего не подходит. Поэтому, Digital VCR Conference (DVC) приняла решение использовать IEEE 1394 как стандартный интерфейс для цифровых камер. Первой ласточкой стала Sony c DCR-VX1000 и DCR-VX700 цифровыми камерами, которые впервые имели IEEE 1394 выход. Но, вскоре за Sony подтянулись и другие производители. И сегодня IEEE 1394 практически монополизировал этот быстро развивающийся рынок. Сегодня любая, произведённая сегодня DV камера в обязательном порядке оснащается IEEE 1394 интерфейсом.

Свою лепту в развитие IEEE 1394 внесла и Texas Instruments, организовавшая массовое производство действительно дешёвых микросхем для реализации IEEE 1394 интерфейса, что сыграло огромную роль в бурном росте количества IEEE 1394 контролёров в персональных компьютерах.

Несмотря на такой успех нового стандарта (он оказался востребованным ещё до выхода окончательной спецификации), разработчики не стояли на месте. Уже в 2000 году вышла 1394a-2000 версия протокола, сразу же с энтузиазмом воспринятая производителями. А сегодня разрабатывается P1394b.

Что же такого хорошего в IEEE 1394?

Как уже говорилось, разработчики опирались на выпущенные ранее стандарты, и в IEEE 1394 вошло всё лучшее, что существовало на тот момент. Из главных особенностей IEEE 1394 можно отметить:

  • Последовательная шина вместо параллельного интерфейса позволила использовать кабеля малого диаметра и разъёмы малого размера.
  • Поддержка горячего подключения и отключения всего чего угодно.
  • Питание внешних устройств через IEEE 1394 кабель.
  • Высокая скорость
  • Возможность строить сети из различных устройств и самой различной конфигурации.
  • Простота конфигурации и широта возможностей. Через IEEE 1394 может работать самое различное оборудование, причём пользователю не придётся мучаться вопросом, как это всё правильно подключить.
  • Поддержка асинхронной и синхронной передачи данных.
На последнем пункте необходимо остановиться поподробнее.

Асинхронная передача. Asybnchronous, от греческого Asyn - другой и Chronous - время. Это означает, что данные обязательно будут доставлены в целости и сохранности, пусть и не всегда в срок. Получение каждого пакета проверяется и подтверждается, если пакет не дошёл, передача будет повторена заново.

Синхронная передача. Isochronous, от греческого Iso - тот же, такой же и Chronous - время. Это означает, что скорость и непрерывность потока важнее, чем сохранность данных. Если пакет пришёл с ошибкой, или не пришёл вообще, это даже не проверяется, не говоря уже о том, чтобы переслать пакет заново. Этот тип передачи отлично подходит для мультимедийных приложений, где потеря какой-либо части информации менее критична, чем большая задержка.

Как это всё работает?

IEEE 1394 делится на несколько уровней. Выглядит это так:


Внизу находится физический уровень (Physical Layer). Аппаратная составляющая, которая отвечает за перевод сигналов, полученных по кабелям в понятную компьютеру форму (и наоборот - за перевод данных в электрические сигналы, идущие по кабелям). Эта же часть отвечает за управление физическим каналом, т.е. определяет, должно устройство занимать канал прямо сейчас, или должно подождать. Кроме того, этот же уровень обеспечивает интерфейс для кабелей и разъёмов и отвечает за следующие процессы:

Интерфейс среды (Media Interface) - отвечает за состояние сигнала, передаваемого по кабелям.

Арбитраж (Arbitration) - различные IEEE 1394 устройства, включенные в сеть разбираются между собой, кто и в каком порядке может действовать.

Кодирование/Декодирование (Encode/Decode) - перевод данных в электрические сигналы, которые могут передаваться по кабелям и обратно.

Уровнем выше расположен уровень канала (Link Layer). Сюда доставляются уже готовые пакеты данных. Именно этот уровень отвечает за пересылку данных вверх и вниз, тут происходят следующие процессы:

Приёмник пакетов (Packet Receiver) - организует и отвечает за приём пакетов данных.

Передатчик пакетов (Packet Transmitter) - организует и отвечает за передачу пакетов данных.

Контроль циклов (Cycle Control) - пакеты передаются не поодиночке, а циклами. Здесь и осуществляется контроль над этими циклами.

Эти два уровня реализованы в "железе", т.е. выполняются аппаратно. Они полностью отвечают за формирование сигнала из данных, формирование данных из сигнала, и приём/передачу в нужное время и в нужное место. Поэтому, только этих двух уровней и хватает при синхронной передаче, когда никакого контроля над тем что передаётся и получается не требуется. При асинхронной передаче это не так, и там в действие вступает:

Сетевой уровень (Transaction Layer). На этом уровне происходит проверка полученных данных. Если всё нормально (ни один пакет не потерялся или не повредился), данные отправляются потребителю. Если обнаружена ошибка - возвращаемся на физический уровень и повторяем всё сначала, пока данные не будут получены без ошибок.

Все уровни (в том числе и первые два) контролируются firmware, и этот процесс называется менеджмент последовательной шины (Serial Bus management).

Такие процессы происходят в каждом IEEE 1394 устройстве, и два любых устройства образовывают между собой соединение типа точка-точка (point-to-point). Но, кроме этого, IEEE 1394 позволяет объединять множество таких устройств и соединений в одну логическую сеть. Для этого физический уровень (physical layer) позволяет иметь больше одного физического интерфейса на одном устройстве.

Рассмотрим подробнее, как разные устройства в одной логической сети разбираются, кто, когда, и что должен делать.

Инициализация сети происходит в несколько этапов:

Сброс (reset) - происходит каждый раз, когда требуется. Причиной для сброса может стать, например, физическое изменение конфигурации сети (подключили новое устройство или отключили старое). Со сброса шины и начинается процесс инициализации сети. Конфигурация, сформировавшаяся при этом, остаётся действительной и неизменной до следующего сброса шины.

Идентификация дерева (Tree identification) - подключенные устройства выясняют, какие из них родительские, а какие дочерние, и формируют логическое дерево. Определяется корневое устройство для всего дерева.

Примечание: Первое, что определяет устройство после включения, это сколько подключенных портов оно имеет. Один (leaf) или несколько (branch). Затем определяется родительские (parent) и дочерние (child) устройства (какое к какому подключено). На основе этих данных строится дерево и определяется корневое устройство.


Самоидентификация (Self identification) - каждое из устройств получает свой собственный ID узла внутри дерева, и выясняет на каких скоростях могут работать его непосредственные соседи. Топология полностью определена. Для адресации используются принципы, описанные в IEEE 1212. Это означает 64 битную прямую адресацию (48 бит на узел, остальные 16 используются дли идентификации шины), что позволяет организовать иерархическую адресацию для 63 узлов на 1023 шинах. Единственное ограничение - между двумя устройствами, которые хотят общаться между собой, должно быть не более 16 "хопов" (сегментов).

Инициализация сети завершена, в действие вступает нормальный арбитраж - рабочий режим работы сети. Устройства обмениваются данными, а корневое устройство следит за тем, чтобы они друг другу не мешали. Происходит это так:

Устройство, которое хочет начать передачу, вначале посылает запрос своему родительскому устройству. Родительское устройство, получив запрос, запрещает передачу всем остальным дочерним (в один момент обрабатывается только один запрос) и, в свою очередь, передаёт запрос дальше, своему родительскому устройству, где всё повторяется. В итоге запрос доходит до корневого устройства, которое, в свою очередь, разрешает передачу тому устройству, чей запрос пришёл первым. Всем остальным передача запрещается. Таким образом, если два устройства одновременно пошлют запрос на передачу данных, то ответ будет зависеть от того, чей запрос первым достигнет корневого устройства. Оно выигрывает арбитраж и получает право начать передачу. Проигравшее устройство. не получив разрешения на передачу, вынуждено ждать, пока выигравшее не освободит шину.


Всё это происходит на физическом уровне (physical layer). После того, как разрешение на передачу данных получено и требуется начать передачу данных, в дело вступает уровень канала (link layer). Как уже говорилось, именно он формирует пакеты и определяет - когда и сколько пакетов должно отсылаться. Передача данных начинается с запроса готовности к приему устройства, для которого предназначены данные, и, получив подтверждение готовности, начинает передачу. Данные идут пакетами, между которыми есть промежутки (gap). Типичный пакет данных 256 байт, или 2048 бит, из которых 160 бит приходится на заголовок. Таким образом, общая эффективность (сколько в пакете действительно данных, а не служебной информации) весьма высока и чем больше пакет, тем выше эффективность). В заголовок входит информация об отправителе, получателе и CRC. После пакета идёт небольшой промежуток, длиной меньше 0.75 msec ( acknowledge gap), после чего получатель должен выслать 8-ми битовый блок данных, подтверждающий, что пакет получен в целости и сохранности (ack packet). Потом следует более длинный промежуток, длинной больше 1 msec, разделяющий пакеты (subaction gap). И так далее - пакет, acknowledge gap, подтверждающий байт (ack), subaction gap.

Для того, чтобы одно устройство, начав передавать данные, не заняло весь канал, не оставив соседям никаких шансов начать передачу, пока оно не закончит, введено понятие fairness interval. В течении одного fairness interval каждое устройство в шине получает одну возможность передать свои данные. После того как разрешение получено (арбитраж выигран), и порция данных передана, устройство должно ждать конца fairness interval и начала следующего цикла, прежде чем оно вновь получит возможность передать следующую порцию данных. Заканчивается fairness interval так называемым reset gap, который длиннее subaction gap, и вызывает сброс всей шины.

Для синхронной передачи используется несколько другая методика. Данные передаются "выстрелами", длина каждого 125 мsec. Таких выстрелов производится столько, сколько позволяет канал. Даже на одинарной (98.304 Mbit/sec) скорости за один такой цикл передаётся до 1000 байт. Чем выше скорость, тем больше данных успевает пройти. При этом, при синхроной передаче абсолютно не важно, получило принимающее устройство данные или нет. Пакеты просто идут один за другим, разделённые subaction gap, никаких ack packet никто не ждёт. Для того, чтобы принимающее устройство смогло разобраться, где синхронные, а где асинхронные данные, subaction gap при синхронной передаче короче. Это позволяет комбинировать в одном сеансе синхронные данные с асинхронными. Однако, в синхроном режиме одному устройству никогда не позволят захватить весь доступный канал. На синхроные данные может приходится не более 85% доступного канала, причём одно устройство не может занять больше 65%.

Как всё это выглядит?

IEEE 1394 позволяет передавать данные на скорости 98.304 Mbit/sec. Кроме этого, возможна передача в 2-x (196.608 Mbit/sec) и 4-x (393.216 Mbit/sec) режимах.

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

Для работы на таких высоких скоростях потребовались соответствующие кабели. Кабель для IEEE 1394 весьма сложная система, и спаять его самостоятельно (что возможно для USB) вряд ли возможно. Данные передаются по двум витым парам, каждая из которых отдельно экранирована. Для пущей надёжности, дополнительно экранируется и весь кабель. Кроме двух сигнальных пар, в кабеле предусмотрены две питающие жилы, которые могут обеспечить любое внешнее устройство током силой до 1.5 А и напряжением до 40 V. В разрезе кабель выглядит так:


Выбору разъёма, к которому должны подключаться IEEE 1394 устройства, было уделено самое пристальное внимание, ведь от разъёма в немалой степени зависит то, насколько удобно будет пользоваться новым интерфейсом. Разъём должен быть небольшим, но в то же время прочным, должен обеспечивать надёжное соединение, но в то же время легко соединяться-отсоединяться даже вслепую. Всем требованиям удовлетворил разъём, используемый в Nintendo GameBoy.


Как видно из фотографии, все контакты выведены в середину разъёма, а снаружи защищены толстым ободком из твёрдой пластмассы. Надёжность этой схемы доказана многими GameBoy, беспощадно растерзанными детьми разных возрастов.

Но даже такой продвинутый и удобный разъём не всех удовлетворил. В самом деле, зачем нам тянуть за собой две питающих жилы там, где подключенное устройство имеет собственное питание. Действительно незачем, решили разработчики и на свет появился новый, четырёхконтактный разъём. Этот новый разъём хоть и не обеспечивал такого надёжного соединения как традиционный шестиконтактный, зато позволял сэкономить место, что немаловажно на портативных устройствах. Кроме этого, кабель без двух дополнительных жил, ответственных за питание, можно сделать ещё тоньше и дешевле. Особо "по вкусу" четырёхконтактные разъёмы пришлись производителям компактных DV камер, и именно их можно увидеть на большинстве таких камер.


Производители материнских плат включают в свои последние решения поддержку обоих разъёмов:



брекет из комплекта материнской платы Asus P4B-533-E

Как это всё развивалось, и что мы имеем сегодня

Ничего идеального в мире нет, и IEEE 1394 не получился идеальным. Поэтому, выпустив первую версию стандарта в 1995 году, команда разработчиков не стала почивать на лаврах, а продолжила работу над следующими версиями стандарта. Так, уже в 2000 году вышла 1394а версия стандарта.

Стр.2 - Стандарты 1394а, 1394b

1394а

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

Connection Hysteresis (debouncing). Как уже было описано выше, каждый раз при подключении или отключении нового устройства происходит сброс шины. Проблема в том, что, при подключении нового устройства, устойчивая электрическая связь образовывается не сразу, что приводило к целому циклу сбросов шины, пока всё не успокоится, и будет установлено устойчивое соединение. Для решения этой проблемы в 1394а появился time-out (время ожидания 1/3 секунды - пока не будет установлено устойчивое соединение или произойдет потеря контакта) на подключение/отключение нового устройства, что гарантирует только один сброс шины при каждом подключении/отключении.

Arbitrated (Short) Bus Reset. В IEEE 1394 устройство, которое передаёт данные, не может обнаружить сигнал на сброс пока не закончит передавать текущий пакет. Поэтому сброс шины должен длиться дольше, чем максимальное время передачи одного пакета. Однако, если сброс шины происходит сразу после того, как одно из устройств выигрывает арбитраж, то в этом нет никакой необходимости (всё равно никто другой не начнёт передачу), и сброс шины можно произвести гораздо быстрее. Это позволило уменьшить время, затрачиваемое на сброс шины, с 300 миллисекунд до 100 в худшем случае, и с 165 до 5 миллисекунд в обычном случае.

Transmission Delay Calculation (PHY Pinging). В первой версии стандарта такой простой команды как ping вообще не было предусмотрено. Любое устройство должно было ответить не больше, чем через 144 наносекунды, в противном случае считалось, что оно недоступно. Именно это ограничение и определило максимальную длину кабеля в IEEE 1394 в 4.5 метра. Введение такой простой команды (одно устройство отсылает пакеты, другое отвечает, а время отклика замеряется) позволяет соседним устройствам точно знать, когда следует ждать ответа. Это дало возможность преодолеть ограничение в обязательные 144 наносекунды и использовать кабели большей длины.

Multi-Speed Packet Concatenation. Одной из причин, почему IEEE 1394 устройства разных производителей, выпущенные в соответствии с первой версией протокола, могли быть не совместимы друг с другом, это чёрная дыра в спецификации, связанная с сериями из нескольких пакетов. Сигнал, определяющий скорость, требовался только для первого пакета, но в серии могли присутствовать пакеты, передаваемые с другой скоростью. Для решения этого бага разные производители шли на ухищрения, что и приводило к несовместимости. В 1394а версии спецификации предусмотрен стандартный механизм решения этой проблемы - сигнал скорости добавляется в каждый пакет, передаваемый на скорости, отличной от предыдущего.

Port Disable (Per Port Software Disconnect). Возможность отключать IEEE 1394 порт программно - отключенный порт перестаёт реагировать на какой-либо трафик, и не мешает остальным устройствам. Это может оказаться весьма удобным, особенно в компьютерном окружении. Кроме того, для работы в компьютерной среде, в 1394а появились функции управления питанием (устройство может быть переведено в спячку и выведено из неё через IEEE 1394 интерфейс).

Повышение эффективности

Как уже писалось, главным инструментом в контроле над шиной и передачей в IEEE 1394 является промежуток в передаче (gap), отделяющий друг от друга каждый пакет. Gap сбрасывает шину, позволяет определить тип передаваемых данных (асинхронные, синхронные), но он же является и источником проблем с эффективностью. Первая версия спецификации обеспечивала великолепную эффективность с пакетами большого размера. Но стоило уменьшать размер пакета или увеличь скорость шины, как количество пакетов на один и тот же объём данных (или на один и тот же промежуток времени) возрастало, а длина gap оставалась прежней. Таким образом, чем больше количество передаваемых пакетов, тем больше времени шина просто простаивает в молчании, и тем меньше времени остаётся на передачу непосредственно данных. С этим надо было что то делать, что и потребовало изменений в протоколе на логическом уровне.

Ack acceleration. Как известно, любой пакет в IEEE 1394 должен отделяться от другого промежутком называемым subaction gap. Одна из причин, почему нужен этот промежуток - это убедиться, что пакет, подтверждающий получение данных не затеряется. Однако, если пакет, подтверждающий получение имеется, то следующий пакет таким же (ack packet) быть не может (подтверждение уже получено, второй раз подтверждать не надо), и надобности в subaction gap нет. В 1394а предусмотрено обнаружение ack packet, и как только такой пакет обнаружен, после него передача не останавливается на subaction gap, а продолжается дальше.

Flt-by arbitration. Так называется возможность "прицепить" на лету какой-либо пакет к уже передающемуся. Это позволяет сэкономить время и канал, ведь для прикреплённого пакета не требуется дополнительный арбитраж. Но, нам же надо не просто прицепить пакет, надо, чтобы он обязательно дошёл до адресата. Для этой цели подходят пакеты, полученные через дочерний порт, которые должны "размножиться" по пути к корневому устройству. Это ограничивает применение fly-by arbitration всего двумя случаями. Во первых, если пакет полученный на дочерний слот - это acknowledge packet, то к нему на лету может быть прикреплён любой асинхронный пакет. Либо, если на дочерний порт получен синхронный пакет, то к нему может быть прикреплён любой другой синхронный пакет.

Arbitration Improvements (Fairness Optimization). Как уже говорилось, fairness interval это отрезок, во время которого одно устройство может выиграть шину только один раз. Даже если всё остальное время шина никому не нужна, оно вынуждено ждать начала следующего цикла, чтобы продолжить передачу. А потом ещё выжидать reset gap, самые длинные промежутки, предусмотренные стандартом. Поэтому, в версии 1394а протокола появилась возможность одному устройству запрашивать (и получать) право на передачу несколько раз (до 63) в течении одного fairness interval.

Что дальше? 1394b

В настоящее время полным ходом идут работы над 1394b версией стандарта, которая должна стать большим шагом вперёд в его развитии. Изменения коснутся всего, в том числе физической составляющей (кабелей и разъёмов).

Главное, что обещают в 1394b, это появление новых скоростей, в 800 и 1600 мегабит в секунду (возможно, и 3200 мбит/сек), и увеличение максимальной длины кабеля до 50, 70 и даже до 100 метров. Изменились разъёмы, которые могут использоваться, и кабели. В 1394b могут применяться даже простые UTP кабели 5 категории, но только на скоростях до 100 мбит/сек. Для достижения максимальных скоростей на максимальных расстояниях предусмотрено использование оптики (fiber optics), пластмассовой - для длины до 50 метров, и стеклянной - для длин до 100 метров. Архитектура 1394b устройства выглядит так:


Разъёмы

Для обеспечения обратной совместимости, в 1394b устройствах возможно использование старых разъёмов, но "чистое" 1394b устройство будет использовать свой, новый разъём, который не похож ни на один из используемых ранее. Означает ли это, что не будет никакой возможности подключить устройство со старым интерфейсом к новому? Не думаю. Подобные опасения уже высказывались с появлением четырёхконтактных фишек для IEEE 1395. Тем не менее, ничего подобного не произошло, появились 4 на 6 IEEE 1394 кабеля, которые полностью решали проблему. Логически и электрически 1394b устройства должны быть обратно совместимыми с своими предшественниками, поэтому никаких проблем в кабеле новый разъём/старый разъём я не вижу. Тем не менее, разъёмы изменились. Фотографий новых разъёмов у меня нет, поэтому придётся ограничится их чертежами, взятыми из драфта спецификации.


Кроме этого, 1394b будет full-duplex стандартом (в отличии от теперешнего 1394), поэтому в нём будет использоваться новый метод арбитража. В отличии от 1394 и 1394а, где главным арбитром во всех спорах из за шины было корневое устройство в дереве, в 1394b такие права может получить то устройство, которому они наиболее нужны. Новый метод арбитража называется BOSS (Bus Owner/Supervisor/Selector). Конечно же, наряду с этим, поддерживаются и методы арбитража из 1394 и 1394а. Рассмотрим новый метод подробнее.

Знакомьтесь, Bus Owner/Supervisor/Selector. Или просто BOSS

Этот метод арбитража может работать только в 1394b среде. То есть, если в сети есть хоть одно старое устройство, для арбитража будет применяться старый метод. Принципиальная схема BOSS метода выглядит так:


Принцип работы прост до безобразия: устройство, которому требуется переслать данные, постоянно шлёт запросы. В результате, когда предыдущий BOSS заканчивает передачу, то ждущее и шлющее запросы устройство оказывается последним, пославшим запрос (все остальные либо уже закончили либо ещё не начали передачу), и получает права BOSS. Что означает, что пока передаёт данные - оно контролирует шину. Как только передача закончена, то устройство остаётся BOSS до тех пор, пока кто-то ещё не пошлёт запрос на передачу. Как только запрос послан - пославшее его устройство немедленно становится BOSS. Эта схема может работать только благодаря full-duplex природе 1394b, ибо, в противном случае, постоянно гуляющие по сети запросы помешали бы передаваемым данным.

Заключение

IEEE 1394 один из наиболее динамично развивающихся стандартов в индустрии. Это просто удобный транспорт, который можно использовать для всего чего угодно. Причём, он относится к одному из тех редких случаев, когда технология, изначально разрабатывавшаяся для компьютеров, вышла за рамки своего прародителя и широко (действительно широко) используется в смежных, не имеющих прямого отношения к компьютерной технике, областях. В этом легко убедиться, достаточно взглянуть на любую цифровую видеокамеру. Конечно, IEEE 1394 не идеален, и не стоит прочить ему роль убийцы всего и вся, от USB до Ethernet. Думаю, это не под силу даже версии 1394b, которая обещает быть гораздо универсальное теперешней. Но свою нишу на рынке IEEE 1394 занял прочно, и не похоже, что хоть что-то из существующего сегодня способно его с этой ниши выбить. Сумеет ли 1394b занять новую нишу и будут ли оправданы все те изменения, которые в него вводят (например, другие разъёмы)? Поживём - увидим.



Оригинал материала: https://3dnews.ru./121284