Высокие скорости стандарта IEEE 1394b

22 январь, 2003 - 00:00Леонід Бараш Технология, о которой идет речь, родилась в 1986 г. в лабораториях Apple Computer. За способность обеспечить весьма высокие по тем временам скорости передачи данных ей дали звучное имя FireWire, до сих пор являющееся ее торговой маркой. Новый интерфейс был необходим, поскольку аналоговый мир начал замещаться цифровым. Цель заключалась в том, чтобы получить недорогую легкую в использовании высокоскоростную шину для подключения к компьютеру цифровых фотокамер и видеомагнитофонов, цифровых камкордеров и музыкальных систем.

Разработку первой спецификации закончили в 1987 г. В 1995 г. она была уточнена и принята в качестве стандарта IEEE 1394 (обычно на него ссылаются как на 1394-1995). Являясь первым вариантом, он, как правило, оставлял некоторые вопросы открытыми, предоставляя тем самым свободу их реализации производителям. Это порождало ряд проблем несовместимости, что в конце концов привело к созданию следующей версии стандарта -- IEEE 1394a, принятой в 2000 г. (1394-2000). Она внесла ясность в вопросы оптимизации производительности и управления питанием, перевела ряд опциональных возможностей в обязательные, добавила три новых типа арбитража шины.

Технология FireWire получила столь широкое распространение в телевизионной и мультимедиа-индустрии, что в 2001 г. компания удостоилась почетной награды от Academy of Television Arts & Science -- статуэтки Primetime Emmy Engineering Award.

Стандарт 1394-1995 обеспечивал скорости передачи 100, 200 и 400 Mbps, тогда как цифровые видеокамеры, самые массовые устройства, где он используется, требуют всего 25 Mbps. Все было бы хорошо, если бы в видеоиндустрии не стали популярными жесткие диски, объем которых рос как на дрожжах, а стоимость снижалась. Для них необходима пропускная способность более 400 Mbps. Поэтому работа над усовершенствованием стандарта продолжалась, и вот в апреле 2002 г. был утвержден новый вариант, получивший название IEEE 1394b и предусматривающий скорость передачи данных до 1,6 Gbps (3,2 Gbps -- в будущих релизах). Однако и 1394a, и 1394b являются лишь улучшениями базового стандарта IEEE 1394. Таким образом, основное внимание мы сосредоточим именно на нем, указав в итоге проведенные модификации.


Топология

Высокие скорости стандарта IEEE 1394b
Рис. 1
Протокол 1394 предусматривает построение одноранговой (peer-to-peer) сети с дисциплиной сигнализации типа точка--точка. Узлы, подключаемые к такой шине, могут иметь несколько портов. Каждый из них действует как повторитель, ретранслируя любой пакет, полученный другими портами узла. Топология соединений бывает как последовательной (daisy-chain), так и древовидной. На рис. 1 приведен пример сети 1394, состоящей из двух сегментов, связанных мостом. Компьютер в сегменте 1 соединен с удаленным принтером с помощью повторителя, позволяющего увеличить расстояние между устройствами. На шине 1394 между любыми двумя устройствами допускается до 16 ретрансляторов. Между мостом и принтером стоит разветвитель (splitter), посредством которого к мосту подключается сегмент 1. Разветвитель обеспечивает более гибкую топологию сети, в то время как мост изолирует потоки данных внутри каждого сегмента. Шинный сегмент может содержать до 63 устройств. С помощью мостов объединяются более 1000 шинных сегментов. Весьма впечатляющая масштабируемость.


Передача данных и транзакции

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

Изохронная передача всегда является широковещательной. В этом режиме отсутствуют коррекция ошибок и повторная передача искаженных пакетов. Как компенсация подобного недостатка в данном режиме может использоваться до 80% имеющейся полосы пропускания. Распределением ресурса управляет узел, выполняющий роль менеджера изохронной передачи. Максимальная полоса пропускания, которая может быть выделена "изохронному" устройству, ограничивается только количеством других таких же устройств, уже получивших свою долю от узла-менеджера. Изохронный режим важен для мультимедиа-приложений, поскольку он освобождает от необходимости буферизации данных.

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


Структура протокола

Высокие скорости стандарта IEEE 1394b
Рис. 2
Спецификация 1394 определяет три нижних уровня модели ISO: физический (Physical Layer), канальный (Link Layer) и уровень транзакций (Transaction Layer), а также уровень управления последовательной шиной -- Serial Bus Management, который взаимодействует с тремя предыдущими (рис. 2).


Физический уровень

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

Высокие скорости стандарта IEEE 1394b
Рис. 3
Высокие скорости стандарта IEEE 1394b
Рис. 4
Среда передачи определяется как трехпарный экранированный кабель (рис. 3). Две витые пары используются для передачи информации, а третья -- для подачи питания на шину. Базовый кабель ограничивает длину канала 4,5 м, хотя более толстый кабель позволяет увеличить дистанцию.

Витые пары, называемые без претензий на оригинальность TPA (Twisted Pair A) и TPB (Twisted Pair B), являются двунаправленными каналами, которые могут находиться в трех состояниях. TPA предназначены для передачи строба и приема данных, тогда как TPB -- для передачи строба и передачи данных. Механизм сигнализации использует кодирование информации с помощью строба (рис. 4), являющегося скорее хитроумным способом более легкого выделения тактового сигнала по сравнению с обычным механизмом синхроимпульс/данные. При этом способе кодирования сигналы данных и строба собираются по схеме XOR.

Физический уровень играет основную роль в конфигурации шины и выполнении ее арбитража. Конфигурация шины заключается в превращении относительно плоской физической топологии в структуру логического дерева с центральным устройством сети в качестве корневого узла. Всякий раз при изменении количества узлов шина сбрасывается и реконфигурируется.

Процедура конфигурации состоит из сброса и инициализации шины, идентификации дерева и самоидентификации. Сигнал сброса подается узлом, устанавливающим линии TPA и TPB в состояние логической единицы. Он распространяется по всем портам, которые этот узел поддерживает. Сброс очищает всю информацию о топологии, имеющуюся в узле.

Высокие скорости стандарта IEEE 1394b
Рис. 5
С помощью процесса идентификации дерева определяется топология шины. Поясним его алгоритм на примере сети, приведенной на рис. 5. После сброса все узлы-листья (устройства только с одним подключенным портом) устанавливают свои пары данных и строба в сигнальное состояние Parent_Notify. В нашем примере цифровая камера будет сигнализировать электронной приставке, принтер -- цифровой видеокамере, а DVD-RAM -- компьютеру. Узел-ветка после получения сигнала Parent_Notify на один из своих портов маркирует этот порт как содержащий дочерний узел и приводит его пары данных и строба в состояние Child_Notify. Определив это состояние, узлы-листья маркируют порт как родительский и снимают сигнализацию, подтверждая свое положение дочерних устройств. После того как узлы-листья идентифицировали себя, цифровая видеокамера все еще имеет два порта (1 и 3), не получивших сигнал Parent_Notify, тогда как узлы-ветки -- электронная приставка и ПК -- имеют только по одному порту с подключенными устройствами, которые не получили этот сигнал. Поэтому они выставляют сигнал Parent_Notify на эти порты. В итоге цифровая видеокамера становится корневым узлом дерева.

После определения топологии дерева начинается фаза самоидентификации. Она состоит в присвоении физического идентификатора (ID) каждому узлу на шине, позволяющего всем узлам на шине определить существующую топологию. Фаза самоидентификации начинается с корневого узла, посылающего арбитражный сигнал своему порту с наименьшим номером. В нашем примере цифровая видеокамера (корневой узел) направляет сигнал электронной приставке (порт 1). Так как та является узлом-веткой, она перешлет этот сигнал на свой порт с наименьшим номером, к которому подсоединен дочерний узел (цифровая камера). Поскольку цифровая камера -- листок в нашем графе, она присваивает себе ID = 0 и передает свой ID-пакет "вверх". ID-пакет достигает корневого узла, передающего его по всем портам с более высокими номерами. Таким образом, этот пакет получают все остальные устройства и увеличивают свои ID на единицу. Корневой узел будет последовательно повторять процедуру рассылки арбитражного сигнала до тех пор, пока все узлы не присвоят себе соответствующие идентификационные номера. В итоге корневой узел получает наивысший ID.

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

Протокол предусматривает временной цикл с периодом 125 мкс. Он задается тактовым генератором корневого узла. Чтобы начать цикл, задающий генератор рассылает в широковещательном режиме пакет начала цикла, используемый всеми остальными устройствами на шине для синхронизации. Сразу же после получения этого пакета устройства, которые хотят начать широковещательную изохронную передачу, могут включиться в арбитражный процесс. Они сигнализируют своему родительскому узлу о том, что им необходимо получить доступ к шине. Тот передает запрос дальше, и в конце концов он достигает корневого узла. Доступ получает ближайшее к нему запросившее устройство.

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


Канальный уровень

Он служит интерфейсом между уровнями -- физическим и транзакций -- и отвечает, в частности, за вычисление, формирование и проверку CRC для пакетов. Вдобавок, поскольку изохронный режим передачи не использует уровень транзакций, канальный уровень непосредственно отвечает за прием и передачу изохронных данных. Он также проверяет информацию в заголовке пакетов и определяет тип транзакции, которая выполняется. Эта информация затем передается уровню транзакций. Реализация типичного канального уровня включает интерфейс с физическим уровнем, механизмы проверки и генерации CRC, передачу и прием пакетов в режиме FIFO, регистры прерываний и по крайней мере один канал DMA.


Уровень транзакций

Этот уровень используется в асинхронном режиме передачи. Протокол 1394 предусматривает механизм запроса/ответа с подтверждением, обычно генерируемым в каждой фазе. Существуют следующие типы транзакций:
  • простое чтение (четыре байта);
  • простая запись (четыре байта);
  • чтение с переменной длиной;
  • запись с переменной длиной;
  • блокировка транзакций.
Асинхронные пакеты имеют заголовок стандартного формата и опциональный блок данных. Сборку и разборку пакетов выполняет контроллер канального уровня. Транзакции могут расщепляться, сцепляться (конкатенироваться) и объединяться.

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

Чтобы не утяжелять изложение, мы опустим некоторые детали протокола 1394 и перейдем к его последней модификации ...


...IEEE 1394b

Этот протокол является одним из самых быстрых для соединения периферийных устройств с компьютером и между собой. Он обещает обеспечить единый интерфейс для всех аудио- и видеоустройств, включая TV, проигрыватели компакт-дисков, видеокамеры, DVD, камкордеры и ряд других. Стандарт предусматривает скорости передачи данных от 100 Mbps до 1,6 Gbps в зависимости от передающей среды (см. таблицу).

Сегодняшняя реализация предусматривает скорость передачи данных 800 Mbps (FireWire 800), достигнутую благодаря двум основным усовершенствованиям. Первым является новая более эффективная схема арбитража для всех устройств, подключенных к шине. В предыдущей версии стандарта арбитраж осуществлялся после каждой транзакции. Поэтому, чтобы послать очередную порцию данных, устройство должно было выиграть арбитражный процесс, что приводило к существенным временным задержкам. В новом протоколе арбитраж для следующей транзакции выполняется во время передачи пакета. Таким образом, устройство, выигравшее арбитраж, готово к отправке данных, как только завершится текущая транзакция. Однако основной вклад в повышение пропускной способности внесло использование схемы кодирования 8B10B, применяемой в технологиях Gigabit Ethernet и Fibre Channel. Объединенная работа новых схем арбитража и кодирования в контексте стандарта называется beta mode (бета-режимом).

Стандарт IEEE 1394b обеспечивает совместимость с предыдущими релизами с помощью двух режимов передачи: чистый бета-режим (1394b) и совместимый с традиционными устройствами (1394-1995 и 1394a). В результате в стандарте появился новый порт -- bilingual (двуязычный), физически расположенный на оборудовании конечного пользователя, и, следовательно, -- новые коннекторы. Двуязычный коннектор подсоединяется к такому же порту и "говорит" либо в соответствии со схемой сигнализации 1394a, либо -- 1394b. Бета-коннектор подключается только к бета-порту и использует сигнализацию 1394b.

Новая технология FireWire 800 обещает ускорить развитие высокопроизводительных периферийных устройств. Она является хорошим выбором для построения домашних сетей, объединяющих электронную цифровую аппаратуру с компьютером. Ей найдется место и в индустриальных приложениях.

Среда передачи Дистанция, м Скорость, Mbps
Пластиковое оптоволокно 50 200
Многомодовое оптоволокно 100 1600
Стандартный кабель 1394 4,5 1600
UTP Cat 5 100 100