PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

https://rupor-megafon.ru караоке микрофон с динамиком.

Шина IEEE 1394 — FireWire

Основная информация

Введение

Высокопроизводительная последовательная шина (High Performance Serial Bus) IEEE 1394 — FireWire создавалась как более дешевая и удобная альтернатива параллельным шинам (SCSI) для соединения равноранговых устройств. Шина позволяет связать до 63 устройств без применения дополнительной аппаратуры (хабов). Устройства бытовой электроники — цифровые камкордеры (записывающие видеокамеры), камеры для видеоконференций, фотокамеры, приемники кабельного и спутникового телевидения, цифровые видеоплееры (CD и DVD), акустические системы, цифровые музыкальные инструменты, а также периферийные устройства компьютеров (принтеры, сканеры, устройства хранения данных) и сами компьютеры могут объединяться в единую сеть. Шина не требует управления со стороны компьютера. Шина поддерживает динамическое реконфигурирование — возможность «горячего» подключения и отключения устройств. События подключения/отключения вызывают сброс и реинициализацию: определение структуры шины (дерева), назначение физических адресов всем узлам и, если требуется, выборы мастера циклов, диспетчера изохронных ресурсов и контроллера шины. Через доли секунды после сброса все ресурсы становятся доступными для последующего использования, и каждое устройство имеет полное представление обо всех подключенных устройствах и их возможностях. Благодаря наличию линий питания, интерфейсная часть устройства может оставаться подключенной к шине даже при отключении питания функциональной части устройства.

По инициативе VESA шина позиционируется как основа «домашней сети», объединяющей всю бытовую и компьютерную технику в единый комплекс. Эта сеть является одноранговой (peer-to-peer), чем существенно отличается от USB.

Основные свойства шины FireWire перечислены далее:

  • Равноранговость. Шина позволяет любым своим абонентам обмениваться данными друг с другом. Для организации обменов не требуется хост-компьютер (и его ресурсы — память и процессор), который мог бы стать «бутылочным горлом» при интенсивных обменах.
  • Универсальность. Шина обеспечивает передачу как асинхронного, так и изохронного трафика. Это позволяет объединять в единую сеть компьютеры, их периферийные устройства (принтеры, сканеры, устройства хранения) и цифровую аудио-видеотехнику.
  • Надежность. Шина обеспечивает контроль достоверности передачи, обработку и исправление ошибок.
  • Легкость установки и использования. Для начала работы достаточно соединить устройства, соблюдая несложные топологические правила.
  • Большое число соединяемых устройств. Одна шина может объединять до 63 устройств (узлов). Возможно объединение в единую сеть нескольких шин (формально — до 1024) с помощью мостов или коммутаторов.
  • Свободная топология. Устройства могут иметь один или несколько портов. Посредством унифицированных кабелей устройства соединяются произвольным образом, исключая лишь петлевые соединения. Ограничение — между любой парой конечных узлов должно быть не более 16 промежуточных узлов.
  • Большая протяженность. Длина одного кабельного сегмента, соединяющего пару устройств, может достигать 4,5 м. Ограничение — суммарная длина кабеля в одной шине не должна превышать 72 м.
  • Полная поддержка PnP с динамическим конфигурированием:  
  1. автоматическое конфигурирование. В процессе инициализации устройства шины автоматически организуются в иерархическую структуру (дерево) и самоидентифицируются (определяют свои номера узлов и предоставляют информацию о себе);
  2. поддержка «горячего» подключения-отключения. Любое событие подключения/отключения вызывает реинициализацию шины, после которой формируются новое дерево и новая нумерация узлов. Во время реинициализации «полезный» обмен данными прерывается, но время реконфигурирования невелико — менее 400 мс в старой шине и менее 200 мкс для 1394a.
  • Сосуществование на одной шине устройств с различными скоростями обмена. Для шины определен ряд стандартных скоростей: S100, S200, S400; в IEEE 1394b (2002 год) определены новые скорости: S800, S1600 и S3200. При обменах выбирается скорость, доступная узлам, вовлеченным в передачу.
  • Высокая скорость обмена и изохронные передачи. Даже на начальном уровне S100 (около 100 Мбит/с) по шине можно передавать одновременно два канала видео вещательного качества (30 кадров в секунду) и аудиосигнал с качеством CD (стерео).
  • Питание от шины. Шина обеспечивает питание устройств постоянным током до 1,5 А с напряжением 8–40 В.
  • Малое число цепей. В шине используются две экранированные витые пары для передачи сигналов и дополнительно пара проводов для питания от шины.
  • Возможность гальванической развязки. Компоненты физического уровня, электрически связанные с коннекторами и кабелями, могут быть развязаны по постоянному току от остальных компонентов устройства. В новых вариантах среды передачи IEEE 1394b возможна полная гальваническая развязка узла от кабеля и применение оптоволоконной связи.
  • Низкая цена компонентов и кабеля (по сравнению со SCSI).


Организация и топология шины

Стандарт IEEE 1394 описывает шину с последовательным интерфейсом, по которой информация передается пакетами. Источник пакетов должен получить право передачи пакета, используя механизм арбитража, в котором задействуются все устройства, подключенные к шине. Арбитраж предоставляет узлам право доступа в соответствии с запрошенным типом передачи. Для асинхронных транзакций арбитраж обеспечивает справедливое распределение полосы пропускания, для изохронных передач — гарантированную (предварительно согласованную) полосу пропускания для каждого канала. Коллизии (столкновения пакетов от нескольких устройств) в исправной шине отсутствуют.

Все устройства соединяются друг с другом кабелями на основе любой топологии (древовидной, цепочечной, звездообразной). Каждое устройство (узел сети) обычно имеет несколько равноправных соединительных разъемов, представляющих его порты. Некоторые устройства имеют только один разъем, что ограничивает возможные варианты их месторасположения. В современной редакции стандарт допускает до 16 портов (разъемов) на одном устройстве, чаще встречаются 1–4-портовые устройства. Многопортовые узлы позволяют соединять множество узлов IEEE 1394 без использования вспомогательного оборудования (хабов). Внутри многопортового узла имеется повторитель, транслирующий пакеты и управляющие сигналы между портами.

Устройства на шине могут передавать данные на разных скоростях. Базовой скоростью, поддерживаемой любым устройством, является S100. На этой общедоступной скорости передаются все служебные пакеты, в том числе и пакеты самоидентификации. Если устройство поддерживает высокую скорость (например, S400), то оно обязано поддерживать и все более низкие скорости вплоть до базовой. Пакеты транзакций могут передаваться на любой скорости, доступной узлам, связанным кабельным сегментом. При этом перед посылкой пакета на скорости, отличной от базовой (S100), передающий узел посылает сигнал выбранной скорости. Пакет, приходящий на один порт устройства на высокой скорости, узел не будет транслировать на порт, для которого установлена более низкая скорость. Таким образом, скорость, на которой возможно прохождение пакета между произвольной парой узлов, зависит от скоростных возможностей этих узлов и промежуточных узлов, лежащих на пути между ними. Отсутствие ответа на пакет, посланный на высокой скорости, служит поводом для повторной попытки посылки на более низкой скорости. Заранее узнать доступную скорость можно по карте скоростей — двухмерной матрице, в которой для каждой пары узлов шины указывается максимальная возможная скорость передачи. Эта карта доступна только при наличии диспетчера шины.

Кабельная шина допускает большую свободу выбора топологии физических соединений при соблюдении следующих ограничений:

  • на шине может быть не более 63 узлов;
  • между любой парой узлов может быть не более 16 кабельных сегментов (в 1394a допускается до 24 сегментов);
  • длина сегмента стандартного кабеля не должна превышать 4,5 м;
  • суммарная длина кабеля не должна превышать 72 м;
  • топология не должна содержать петель. В первых редакциях стандарта за это отвечал только пользователь, в IEEE 1394b имеются средства автоматического исключения петель.

В IEEE 1394b введены новые варианты среды передачи, допускающие большую длину сегментов при соединении узлов друг с другом. Здесь используется иная сигнализация, не совместимая с традиционной сигнализацией IEEE 1394 и IEEE 1394a. Однако в 1394b есть и «двуязычные» узлы, способные частью своих портов работать со старыми узлами 1394/1394a, а другой — с узлами 1394b. С помощью таких узлов можно строить смешанные сети и преодолевать вышеуказанные ограничения по расстоянию.

При любой физической топологии логическая топология для передачи данных остается шинной — пакеты распространяются от источника ко всем узлам шины. Логическая топология для арбитража — древовидная иерархическая, «верховный арбитр» — корневой узел.

В IEEE 1394 кроме кабельной сети определены и спецификации использования последовательной шины в качестве кросс-шины (Backplane Environment) для объединения узлов в пределах одного устройства. Здесь используется несколько иной физический уровень (PHY) — всегда однопортовый, с некоторыми отличиями в регистрах. Конфигурация шины при этом фиксирована, механизм автоконфигурирования упрощен, физические идентификаторы узлов назначаются программно (записью в регистр PHY). При идентификации скорости формально указывается S100, но реально это соответствует скоростям S50 или S25.

Архитектура сети

Архитектура IEEE 1394 позволяет организовывать сети, состоящие из одной или нескольких (до 1023) шин, причем не только последовательных. К шинам IEEE 1394 подключаются физические устройства, которые должны иметь по крайней мере один порт. Физическое устройство может иметь сложную внутреннюю структуру, что иллюстрирует см. рисунок. К топологии сети относятся следующие понятия:

  • сеть — совокупность узлов, подключенных к одной шине или нескольким шинам, соединенным мостами. Все узлы сети имеют возможность взаимодействия друг с другом;
  • шина — совокупность узлов, связанных друг с другом кабельными сегментами. Все узлы шины используют ее общую (разделяемую) среду передачи, получая право на передачу путем арбитража. Подключение-отключение узлов вызывает реконфигурацию данной шины, в ходе которой узлы получают новые номера (физические адреса);
  • модуль (module) — физическое устройство («коробка»), подключаемое к шине, и содержащее один или несколько узлов;
  • узел (node) — логический объект, имеющий уникальный физический адрес на шине. Узел имеет собственное адресное пространство, в котором обязательно присутствуют стандартные регистры управления и состояния (CSR), а также постоянная память (ROM) со стандартным набором структур, описывающих узел;
  • порт (port) — внешний физический интерфейс узла, обеспечивающий соединение узлов в шину. Узел может иметь несколько портов, что обеспечивает связь множества узлов без использования каких-либо дополнительных устройствконцентраторов;
  • блок (unit) — часть узла, обеспечивающая его отдельную функциональность: память, ввод/вывод, обработку данных. Блоки имеют свои регистры и/или области памяти, отображенные на общее адресное пространство узла. Блоки функционируют относительно независимо и управляются собственными драйверами.

 

 

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

Шина IEEE 1394 позволяет любому узлу взаимодействовать с другими различными путями:

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

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



Адресное пространство сети и узла

Каждому узлу выделяется адресное пространство размером 256 Терабайт, которое является частью адресного пространства одной шины. Шин в системе может быть множество; все связанные шины объединяются в общее адресное пространство размером 16 Экзабайт (264 байт). Объединение шин осуществляется мостами; объединяться могут любые шины, отвечающие архитектуре CSR (как последовательные, так и параллельные). Формат адреса для IEEE 1394 приведен на рисунке ниже.


ВНИМАНИЕ!
в IEEE 1394 принято соглашение об адресации Big Endian: старший бит адреса имеет номер 0; адрес указывает на старший байт адресуемой структуры; последующие адреса относятся к байтам по убывающему старшинству. Типовой адресуемой едиицей является квадлет (quadlet) — 4-байтное (32-битное) число.
На рисунках старший бит квадлета (бит 0) изображается слева, по шине он передается первым.


Распределение адресного пространства узла изображено на следующем рисунке. Начальное пространство памяти (Initial Memory Space), занимающее большую часть пространства узла, используется для основного взаимодействия между устройствами, связанными шиной.

Приватное пространство (Private Space) размером 256 Мбайт используется для локальных нужд узла.

Пространство регистров (Register Space) имеет размер 256 Мбайт. Разрядность всех регистров — 32 бит. В дальнейшем описании в скобках указаны относительные адреса регистров; полный адрес (внутри узла) получается сложением относительного адреса и FFFF F000 0000h. Пространство регистров делится на две части:

  • начальное пространство регистров узла (Initial Node Space) размером 2 Кбайт, используемое для общего конфигурирования и управления узлом. В него входят:
  1. архитектурные регистры CSR (512 байт);
  2. регистры последовательной шины (512 байт);
  3. пространство памяти конфигурации (ROM Space), в котором отображается первый килобайт этой памяти. Если эта память имеет больший размер, то его продолжение «залезает» в начальное адресное пространство узла.
  • Начальное пространство регистров блоков, входящих в данный узел (Initial Units Space), размером почти 256 Мбайт. Из этого пространства область 0800h–FFFCh в IEEE 1394 отводится под нужды последовательной шины. В частности, здесь располагаются:
  1. у узла-диспетчера шины — карта топологии Topology_Map (1000–13FCh) и карта скоростей Speed_Map (2000–2FFCh);
  2. у узлов, причастных к изохронному обмену, — регистры управления «штекерами» изохронных передач PCR (0900–09FFh);
  3. Регистры FCP command frame (0B00–0CFC) и FCP responce frame (0D00–0EFC), определенные спецификацией IEC 61883-1/FDIS.

Архитектура узла

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

  • физический уровень — PHY (Physical Layer) выполняет основные функции, связанные с подключением узла к шине:
  1. подключение узла к шине (механическое и электрическое);
  2. автоматическое конфигурирование шины и узла при инициализации;
  3. арбитраж при передаче данных;
  4. кодирование и декодирование сигналов состояния шины и потоков данных;
  5. предоставление сервисов канальному уровню;
  6. связь сегментов сети в единую шину, если он имеет более одного порта IEEE 1394 (трансляцию сигналов между своими портами);
  7. предоставление питания по кабельной шине.

  • Физический уровень допускает несколько вариантов физического интерфейса:
  1. кабельная шина 1394/1394a с DS-кодированием, поддерживающая скорости S100, S200 и S400 на экранированной витой паре;
  2. кросс-шина (backplane serial bus, BPSB) с DS-кодированием, поддерживающая скорости S50 и S100 при связи узлов в пределах шасси;
  3. кабельная шина 1394b с кодированием 8B10B (так называемый бета-режим), поддерживающая скорости от S100 до S1600 и разные варианты кабелей: экранированная витая пара, неэкранированная (UTP-5), пластиковое и стеклянное многомодовое оптоволокно.
  • канальный уровень LINK (Link Layer) из данных физического уровня формирует пакеты и выполняет обратные преобразования. При этом он формирует (при передаче) и проверяет (при приеме) формат пакета и контрольные поля (CRC-коды). Он обеспечивает асинхронный обмен узлов дейтаграммами (пакетами запросов, ответов и пакетами квитирования), а также передачу и прием изохронных потоков. Канальный уровень отвечает за адресацию — выявление и прием пакетов, предназначенных данному узлу:
  1. широковещательных;
  2. по адресу узла (для асинхронных транзакций);
  3. по номеру канала (для изохронных и асинхронных потоков);
  • уровень транзакций (Transaction Layer) предоставляет приложениям сервисы для асинхронных обменов с регистрам и памятью любых узлов сети, состоящей из множества шин, объединенных мостами. Операции обменов включают чтение, запись, блокированные операции (чтение-модификация-запись). Операцией записи в специальный регистр узла можно вызвать прерывание для данного узла, при этом биты данного регистра будут нести информацию о соответствующих условиях прерывания. Уровень транзакций реализует протокол запросовответов, соответствующий стандарту ISO/IEC 13213:1994 (ANSI/IEEE 1212, редакция 1994 года) архитектуры регистров управления и состояния CSR (Control and Status Register) для микрокомпьютерных шин. Это облегчает связь шины 1394 со стандартными параллельными шинами. На уровне транзакций выполняется часть действий по обработке ошибок и организации повторов передач (канальный уровень только сообщает об обнаруженных ошибках).

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

Управление шиной (Bus management) затрагивает все вышеперечисленные уровни. Шина может иметь различные степени управляемости: полностью управляемая, частично управляемая (с диспетчером изохронных ресурсов, необходимым, если есть узлы с изохронным обменом) и даже неуправляемая шина.

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

Интерфейс IEEE 1394 реализуется аппаратно-программными средствами устройства. Аппаратная часть FireWire обычно состоит из двух специализированных микросхем — трансивера физического уровня (PHY Transceiver) и моста связи с микропроцессорной шиной (LINK Chip). Интерфейс между ними описан стандартом IEEE 1394. Микросхема LINK выполняет все функции канального уровня и часть функций уровня транзакций; остальная часть уровня транзакций выполняется программно. Микросхема PHY выполняет сигнальное кодирование-декодирование данных, распознавание адресов, функции арбитража, а также трансляцию сигналов между своими портами. Уровень PHY достаточно автономен, все «общественнополезные» функции узла он может выполнять и при отключенных вышестоящих уровнях. Физический уровень может быть (но не обязательно) гальванически развязан с канальным уровнем. В бета-режиме (1394b) гальваническая развязка (более эффективная) возможна на уровне кабельного интерфейса. Гальваническая развязка необходима для предотвращения возникновения паразитных контуров общего провода, которые могут появиться через провода защитного заземления блоков питания.

Физический и канальный уровни могут различаться в плане поддерживаемых скоростей передачи. Если многопортовый PHY поддерживает более высокие скорости, чем LINK, то он способен транслировать высокоскоростные пакеты между своими портами. Однако скорость, на которой сам узел может общаться с остальными узлами шины, определяется самым слабым звеном в данной паре PHY-LINK. В этом случае она будет ограничиваться возможностями LINK-уровня; эти возможности могут зависеть от организации узла. Для компьютера, подключаемого к 1394, поддерживаемая скорость LINK зависит от производительности шины, которой подключен адаптер, и производительности его контролера памяти. Физический уровень для различных устройств практически одинаков, различия касаются поддерживаемых скоростей передачи, а в 1394b — и используемой среды передачи (разновидностей медных и оптических кабелей). Канальный уровень существенно зависит от прикладной части устройства — микропроцессора, на котором базируется устройство, и интерфейса подключения канального уровня.