link700 link701 link702 link703 link704 link705 link706 link707 link708 link709 link710 link711 link712 link713 link714 link715 link716 link717 link718 link719 link720 link721 link722 link723 link724 link725 link726 link727 link728 link729 link730 link731 link732 link733 link734 link735 link736 link737 link738 link739 link740 link741 link742 link743 link744 link745 link746 link747 link748 link749 link750 link751 link752 link753 link754 link755 link756 link757 link758 link759 link760 link761 link762 link763 link764 link765 link766 link767 link768 link769 link770 link771 link772 link773 link774 link775 link776 link777 link778 link779 link780 link781 link782 link783 link784 link785 link786 link787 link788 link789 link790 link791 link792 link793 link794 link795 link796 link797 link798 link799 link800 link801 link802 link803 link804 link805 link806 link807 link808 link809 link810 link811 link812 link813 link814 link815 link816 link817 link818 link819 link820 link821 link822 link823 link824 link825 link826 link827 link828 link829 link830 link831 link832 link833 link834 link835 link836 link837 link838 link839

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

Шина IEEE 1394 — FireWire

Шина IEEE 1394 — FireWire

Диспетчер шины. Управление питанием

Диспетчер шины

Диспетчер шины (Bus Manager) обеспечивает полное управление шиной. Им может стать любой узел, способный (и обязанный после избрания диспетчером) выполнять следующие функции:

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

Диспетчер шины может находиться в любом месте шины. Он выбирается из узловкандидатов на роль диспетчера изохронных ресурсов. Из этих кандидатов диспетчером шины может стать узел, способный выполнять блокированные транзакции compare_swap с регистром Bus_Manager_ID уже избранного диспетчера изохронных ресурсов. После самоидентификации каждый узел, претендующий на роль диспетчера шины, пытается с помощью транзакции compare_swap записать свой идентификатор в регистр Bus_Manager_ID. В качестве аргумента (arg_value) этой транзакции передается значение 3Fh, а в качестве значения (data_value) — идентификатор. Значение, полученное в ответ, несет информацию о назначенном диспетчере шины: 3Fh — диспетчером стал данный узел, другое значение — идентификатор узла, успевшего стать диспетчером ранее. Если из-за ошибки передачи транзакция не удалась, узел должен ее автоматически повторить. При этом он может получить в ответе свой PHY_ID — это означает, что он стал диспетчером еще в предыдущей попытке, но не получил подтверждения.

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

Управление питанием

У каждого узла при подключении к шине должен быть включен физический уровень (PHY) и контроллер шины, обеспечивающие инициализацию, самоидентификацию и трансляцию сигналов между портами. Остальные компоненты (LINK и прикладная часть) могут быть отключены, об активности (включении) верхних уровней (LINK и уровень транзакций) узел сообщает битом L в пакете самоидентификации. Отношение узла к линиям питания может быть различным, и о нем он сообщает в своем пакете самоидентификации в поле pwr.

Диспетчер шины во время самоидентификации собирает информацию от всех узлов шины об их отношении к питанию (из поля pwr). Он подсчитывает баланс питания (сумма запрашиваемых мощностей не должна превышать сумму подаваемых мощностей). Если баланс не сходится — питания для всех узлов недостаточно, то сервис управления питанием посылает управляющему приложению индикацию события SB_EVENT с указанием на недостаток питания. Дальнейшие действия зависят от приложения: или пользователю предлагается выбрать часть устройств, которые включать, или не включается ни одно устройство (с уведомлеуровнем сервис SB_CONTROL посылает пакет Link_On — директиву на включение питания. Если питанием управляет диспетчер изохронных ресурсов (за неимением диспетчера шины), то он лишь посылает пакеты Link_On всем узлам с неактивным LINK-уровнем, не заботясь о бюджете мощности. нием пользователя). Если питания достаточно, то всем узлам с неактивным LINKуровнем сервис SB_CONTROL посылает пакет Link_On — директиву на включение питания. Если питанием управляет диспетчер изохронных ресурсов (за неимением диспетчера шины), то он лишь посылает пакеты Link_On всем узлам с неактивным LINK-уровнем, не заботясь о бюджете мощности.

Кабели и коннекторы бета-режима 1394b

В IEEEE 1394b для бета-режима введены новые варианты среды передачи (см. таблицу): и соответствующие типы разъемов (см. рисунок).

Таблица. Варианты среды передачи для бета-режима IEEE 1394b

Среда Дальность S100 S200 S400 S800 S1600
UTP-5 100 м - - - - -
POF 50 м + - - - -
HPCF 100 м + - - - -
MMF 100 м - + + + +
STP 4,5 м - + + + +
  • UTP-5 (Unshielded Twisted Pair Cat 5) — неэкранированная витая пара категории 5 со стандартными коннекторами RJ-45, длина сегмента до 100 м. Параметры линии должны соответствовать стандарту на структурированные кабельные системы TIA-568 (или ISO 11801). Используются две пары проводов: контакты 1, 2 для TPB+ и TPB–; 7, 8 для TPA+ и TPA–. Порт должен поддерживать возможность перекрестного соединения: по умолчанию (No_Crossover) он передает сигнал по TPB и принимает по TPA. По управляющему запросу Crossover порт меняет назначение пар TPA и TPB. Питание через кабель UTP-5 не предусматривается. Кабель UTP подключается через разделительные трансформаторы, обеспечивающие гальваническую развязку, выдерживающую один из следующих тестов (на выбор):
       ---1500 В переменного тока 50–60 Гц в течение 1 мин;
       ---2250 В постоянного тока в течение 1 мин;
       ---последовательность из десяти импульсов чередующейся полярности амплитудой 2400 В с временами фронта и спада 1,2/50 мс;
  • POF и HPCF — оптоволоконные варианты с разъемами PN (дуплексные, диаметр стержня 2,5 мм, шаг 10,16 мм). Передатчики — светодиоды с длиной волны 650 нм.:
       ---POF (Plastic Optical Fiber) — пара пластиковых волокон диаметром 1000 мкм со ступенчатым индексом преломления. Это самый дешевый вариант оптической связи на малых расстояниях;
       ---HPCF (Hard Polymer Clad Fiber) — пара твердых полимерных волокон диаметром 225 мкм с градиентным индексом преломления;
  • MMF (Multi Mode Fiber) — пара многомодовых стеклянных волокон 50/125 мкм, Параметры линии должны соответствовать стандарту на структурированные кабельные системы TIA-568 (или ISO 11801). Разъемы — малогабаритные дуплексные LC. Передатчики — коротковолновые лазерные диоды с длиной волны 830–860 нм, выходная мощность не менее –10 дБм. Чувствительность приемников не хуже –16,5 дБм.;
  • STP (Shielded Twisted Pair) — экранированные витые пары с более высокими характеристиками передачи, чем в прежних версиях IEEE 1394. Кабели для бетарежимов вплоть до S1600, обеспечивающие длину сегмента до 4,5 м, должны иметь витые пары калибра 25AWG; они имеют на оболочке маркировку «1394b 2PR/25AWG 2C/22AWG». Более тонкие пары (30AWG) обеспечивают длину до 2 м, они маркируются «1394b 2PR/30AWG 2C/26AWG». Для питания у них используются провода калибров 22AWG и 26AWG (больший номер калибра соответствует более тонким проводам).

Микросхемы PHY 1394b поддерживают любую среду передачи; соответствующие преобразования сигналов осуществляются в элементах PMD: RC-цепях для STP, трансформаторах для UTP и оптических трансиверах для POF, HPCF и MMF.

Порт с электрическим интерфейсом в бета-режиме (для STP или UTP) несложно преобразовать в оптический. Для этого требуется оптический трансивер, поддерживающий требуемую скорость передачи, и несложные схемы преобразования уровней сигналов. При использовании трансиверов с низковольтным псевдоЭСЛ интерфейсом (LV PECL) эти схемы содержат всего 8 резисторов, задающих смещение уровней сигналов трансиверов, и 4 разделительных конденсатора.

Запросы LINK к PHY в 1394b

Запрос от LINK к PHY посылается в последовательном виде по линии LReq. Обобщенный формат запроса приведен на рисунке, по сравнению с запросами традиционного интерфейса он усложнен. Запрос начинается с единичного старт-бита (LReq0 = 1) и завершается нулевым стоп-битом. За старт-битом следует код типа запроса (биты RT[0:3], см. таблицу), за которым следуют поля, необходимые для данного типа запроса:

  • бит RFMT (Request Format) определяет формат запроса: 0 — явно не задан, 1 — B-формат;
  • поле RS[0:3] (Request Speed) определяет скорость: 0000 — S100, 0010 — S200, 0100 — S400, 0110 — S800 (остальные значения зарезервированы);
  • поле RA[0:3] содержит адрес регистра PHY;
  • поле RD[0:7] (Request Data) содержит записываемые данные.

В ответ на запросы передачи PHY, выиграв арбитраж, предоставляет LINK’у право на передачу пакета. По запросу записи в регистр PHY выполняется соответствующая операция, никакого ответа не предусматривается. В ответ на запрос чтения регистра PHY данные (и адрес) будут переданы по линии Pint.

Таблица. Запросы LINK к PHY

Код запроса RT[0:3] Назначение Требуемые поля
0000 Резерв  
0001 PH_IMMED_REQ, немедленный запрос передачи (для посылки пакета квитирования) RF, RS
0010 PH_NEXT_EVEN, запрос очередной передачи асинхронного пакета в четной фазе интервала справедливости RF, RS
0011 PH_NEXT_ODD, запрос очередной передачи асинхронного пакета в нечетной фазе интервала справедливости RF, RS
0100 PH_CURRENT, запрос очередной передачи асинхронного пакета в текущей фазе интервала справедливости RF, RS
0101 Резерв  
0110 PH_ISOCH_REQ_EVEN, запрос передачи изохронного пакета в четном периоде RF, RS
0111 PH_ISOCH_REQ_ODD, запрос передачи изохронного пакета в нечетном периоде RF, RS
1000 PH_CYC_START_REQ, запрос передачи пакета начала цикла RF, RS
1001 Резерв  
1010 PH_REG_READ, запрос чтения регистра PHY RA
1011 PH_REG_WRITE, запрос записи в регистр PHY RA, RD
1100 PH_ISOCH_PHASE_EVEN, сообщение от LINK’а (не мастера циклов) о приеме пакета начала цикла с четной фазой, обеспечивает синхронизацию LINK’а и PHY, если последний изза ошибки не принял маркер Cycle Start  
1101 PH_ISOCH_PHASE_ODD, то же для нечетной фазы  
1110 PH_CYCLE_START_DUE, сообщение от LINK’а (не мастера циклов) о приеме уведомления о начале цикла  
1111 Резерв  

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

Каждому узлу выделяется адресное пространство размером 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.

Типы транзакций

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

Транзакции чтения в пакете запроса несут полный адрес назначения, длину запрашиваемого блока и идентификатор источника. Запрашиваемая длина определяется кодом типа транзакции (чтение квадлета или блока), а для чтения блока — полем длины. Пакет ответа чтения несет код результата выполнения и собственно данные чтения.

Блокированные транзакции чтения-модификации-записи в пакете запроса кроме адреса назначения несут значения аргумента и данных транзакции. Эти значения могут быть как 32, так и 64-битными (одинаковой длины), аргумент может и отсутствовать. Расширенный код транзакции задает тип выполняемой операции (таблица) и, соответственно, наличие или отсутствие аргумента. Поле длины определяет разрядность аргумента и данных и может принимать значение 4 (только 4-байтные данные), 8 (аргумент и данные по 4 байта или только данные размером 8 байт) или 16 (аргумент и данные по 8 байт). Пакет ответа по формату аналогичен ответу на чтение блока, где в поле данных возвращаются старые данные (считанные перед модификацией). Длина блока данных ответа может составлять 4 или 8 байт.

Расширенный код транзакции Имя Назначение
0000h Резерв Резерв
0001h mask_swap Биты целевой ячейки, которым соответствуют единичные значения в arg_value, заменяются на биты из data_value
0002h compare_swap Содержимое целевой ячейки заменяется на data_value, если ее прежнее значение совпадает с arg_value
0003h fetch_add Содержимое целевой ячейки складывается с data_value; числа рассматриваются как целые, целевой адрес указывает на самый старший байт числа (big endian)
0004h litle_add То же, но целевой адрес указывает на самый младший байт числа (litle endian)
0005h bounded_add Если содержимое целевой ячейки не равно arg_value, то она заменяется на сумму прежнего и data_value; иначе целевая ячейка не изменяется
0006h wrap_add Если содержимое целевой ячейки не равно arg_value, то она заменяется на сумму прежнего и data_value; иначе она заменяется на data_value
0007h vendor Назначение определяется разработчиком
0008-FFFFh Резерв Резерв