Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Шины.PCI,.USB.и.FireWire

.pdf
Скачиваний:
59
Добавлен:
19.03.2016
Размер:
6 Mб
Скачать

длина сегмента стандартного кабеля не должна превышать 4,5 м;

суммарная длина кабеля не должна превышать 72 м;

топология не должна содержать петель. В первых редакциях стандарта за это отвечал только пользователь, в IEEE 1394b имеются средства автоматического исключения петель.

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

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

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

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

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

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

сеть — совокупность узлов, подключенных к одной шине или нескольким ши$ нам, соединенным мостами. Все узлы сети имеют возможность взаимодействия друг с другом;

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

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

Рис. 17.1. Модуль, узлы и блоки

модуль (module) — физическое устройство («коробка»), подключаемое к шине, и содержащее один или несколько узлов;

узел (node)—логическийобъект,имеющийуникальныйфизическийадреснашине. Узелимеетсобственноеадресноепространство,вкоторомобязательноприсутству$ ют стандартные регистры управления и состояния (CSR), а также постоянная память (ROM) со стандартным набором структур, описывающих узел;

порт (port) — внешний физический интерфейс узла, обеспечивающий соеди$ нение узлов в шину. Узел может иметь несколько портов, что обеспечивает связь множества узлов без использования каких$либо дополнительных устройств$ концентраторов;

блок (unit) — часть узла, обеспечивающая его отдельную функциональность: память, ввод/вывод, обработку данных. Блоки имеют свои регистры и/или обла$ сти памяти, отображенные на общее адресное пространство узла. Блоки функци$ онируют относительно независимо и управляются собственными драйверами.

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

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

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

передавать и принимать потоки данных по изохронным каналам (с гарантиро$ ванной полосой пропускания, но без гарантий доставки);

передавать и принимать асинхронные потоки данных (без гарантий);

1 При этом хаб сам является дополнительным устройством USB.

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

вызывать прерывания на удаленном узле (асинхронно транзакцией записи в спе$ циальный регистр узла).

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

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

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

Рис. 17.2. Формат адреса IEEE 1394

ВНИМАНИЕ

в IEEE 1394 принято соглашение об адресации Big Endian: старший бит адреса имеет номер 0; адрес указывает на старший байт адресуемой структуры; последу ющие адреса относятся к байтам по убывающему старшинству. Типовой адресуе мой едиицей является квадлет (quadlet) — 4 байтное (32 битное) число.

На рисунках старший бит квадлета (бит 0) изображается слева, по шине он пере дается первым.

Распределение адресного пространства узла изображено на рис. 17.3.

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

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

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

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

начальное пространство регистров узла (Initial Node Space) размером 2 Кбайт, используемое для общего конфигурирования и управления узлом. В него входят:

архитектурные регистры CSR (512 байт);

регистры последовательной шины (512 байт);

пространство памяти конфигурации (ROM Space), в котором отображается первый килобайт этой памяти. Если эта память имеет больший размер, то его продолжение «залезает» в начальное адресное пространство узла.

Начальное пространство регистров блоков, входящих в данный узел (Initial Units Space), размером почти 256 Мбайт. Из этого пространства область 0800h– FFFCh в IEEE 1394 отводится под нужды последовательной шины. В частно$ сти, здесь располагаются:

у узла$диспетчера шины — карта топологии Topology_Map (1000–13FCh) и карта скоростей Speed_Map (2000–2FFCh), описанные в главе 21;

у узлов, причастных к изохронному обмену, — регистры управления «штеке$ рами» изохронных передач PCR (0900–09FFh), описанные в главах 18 и 26;

Регистры FCP command frame (0B00–0CFC) и FCP responce frame (0D00– 0EFC), определенные спецификацией IEC 61883 1/FDIS.

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

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

физический уровень PHY (Physical Layer) выполняет основные функции, свя$ занные с подключением узла к шине:

подключение узла к шине (механическое и электрическое);

автоматическое конфигурирование шины и узла при инициализации;

арбитраж при передаче данных;

кодирование и декодирование сигналов состояния шины и потоков данных;

Рис. 17.4. Трехуровневая структура FireWire

предоставление сервисов канальному уровню;

связь сегментов сети в единую шину, если он имеет более одного порта IEEE 1394 (трансляцию сигналов между своими портами);

предоставление питания по кабельной шине.

Физический уровень допускает несколько вариантов физического интерфейса (см. главу 22):

кабельная шина 1394/1394a с DS$кодированием, поддерживающая скорос$ ти S100, S200 и S400 на экранированной витой паре;

кросс шина (backplane serial bus, BPSB) с DS$кодированием, поддерживаю$ щая скорости S50 и S100 при связи узлов в пределах шасси;

кабельная шина 1394b с кодированием 8B10B (так называемый бета$режим), поддерживающая скорости от S100 до S1600 и разные варианты кабелей: экранированная витая пара, неэкранированная (UTP$5), пластиковое и стек$ лянное многомодовое оптоволокно.

канальный уровень LINK (Link Layer) из данных физического уровня форми$ рует пакеты и выполняет обратные преобразования. При этом он формирует (при передаче) и проверяет (при приеме) формат пакета и контрольные поля

(CRC$коды). Он обеспечивает асинхронный обмен узлов дейтаграммами (па$ кетами запросов, ответов и пакетами квитирования), а также передачу и прием изохронных потоков. Канальный уровень отвечает за адресацию — выявление и прием пакетов, предназначенных данному узлу:

широковещательных;

по адресу узла (для асинхронных транзакций);

по номеру канала (для изохронных и асинхронных потоков);

уровень транзакций (Transaction Layer) предоставляет приложениям сервисы для асинхронных обменов с регистрам и памятью любых узлов сети, состоящей из множества шин, объединенных мостами. Операции обменов включают чте ние, запись, блокированные операции (чтение$модификация$запись). Операци$ ей записи в специальный регистр узла можно вызвать прерывание для данного узла, при этом биты данного регистра будут нести информацию о соответству$ ющих условиях прерывания. Уровень транзакций реализует протокол запросов$ ответов, соответствующий стандарту ISO/IEC 13213:1994 (ANSI/IEEE 1212, редакция 1994 года) архитектуры регистров управления и состояния CSR (Con$ trol and Status Register) для микрокомпьютерных шин. Это облегчает связь шины 1394 со стандартными параллельными шинами. На уровне транзакций выпол$ няется часть действий по обработке ошибок и организации повторов передач (канальный уровень только сообщает об обнаруженных ошибках).

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

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

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

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

сигналов между своими портами. Уровень PHY достаточно автономен, все «обще$ ственнополезные» функции узла он может выполнять и при отключенных выше$ стоящих уровнях. Физический уровень может быть (но не обязательно) гальва$ нически развязан с канальным уровнем. В бета$режиме (1394b) гальваническая развязка (более эффективная) возможна на уровне кабельного интерфейса. Галь$ ваническая развязка необходима для предотвращения возникновения паразитных контуров общего провода, которые могут появиться через провода защитного за$ земления блоков питания.

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

Конфигурирование шины

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

сброс (Bus Reset) — приведение всех узлов в исходное (несконфигурированное) состояние;

идентификация дерева — построение иерархической структуры шины;

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

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

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

ковременно прерывает выполнение изохронных передач, но сразу по завершении самоидентификации узлов (переходу в состояние Arbitration) узлы, имевшие изо$ хронные ресурсы до сброса, могут начинать изохронные передачи.

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

Идентификация дерева

Изначально (по включению питания или сбросу) шина (совокупность соединен$ ных узлов) имеет плоскую (неоформленную) структуру (рис. 17.5, а). В ходе ини$ циализации первым делом автоматически (взаимодействием только уровней PHY) выполняется идентификация дерева (tree identification), в результате чего шина обретает форму перевернутого дерева (рис. 17.5, б). В этом дереве имеется:

корень (root), являющийся «верховным арбитром». Корень выбирается автома$ тически в зависимости от топологии шины; при необходимости стать корнем программно можно заставить любой узел (см. главу 20);

листья (leaf) — конечные узлы, подключенные к шине только одним портом;

ветки (branch) — узлы, подключенные несколькими портами и находящиеся в иерархии между корнем и листьями.

Рис. 17.5. Топология шины: а — после сброса; б — после идентификации дерева

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

«родительский», или p$порт (parent port), направлен в сторону корня (вверх);

«дочерний», или c$порт (child port), направлен в сторону листьев (вниз).

Родительским может быть только один из портов узла. Если на шине присутству$ ют только два узла, то одно из них (определяемое случайным образом) станет кор$ нем с c$портом, другое — листом с p$портом. В процессе идентификации дерева участвуют только те порты, к которым подключены другие узлы (физический уро$ вень способен определить состояние подключения).

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

Самоидентификация узлов

После идентификации дерева выполняется самоидентификация узлов (Self Iden$ tification), в результате которой все узлы шины получают уникальные адреса — физические идентификаторы (phy_ID). В процессе самоидентификации с помощью арбитража каждый узел последовательно получает право на передачу широкове$ щательного пакета самоидентификации. В этом пакете содержится идентифика$ тор узла, число его портов, их состояние и назначение, скоростные возможности устройства и некоторые другие параметры. Устройство назначает себе идентифи$ катор само, исходя из числа ранее «услышанных» им пакетов самоидентификации от других устройств. Первое устройство, которому предоставили право на переда$ чу, получает phy_ID = 0; последним самоидентифицируется корень — у него бу$ дет максимальное значение phy_ID (не превышающее 62). После посылки пакета самоидентификации узел обменивается со своим партнером$«родителем» сигна$ лами, идентифицирующими максимальную скорость работы. Это позволяет не$ посредственным партнерам попарно согласовать свои скоростные возможности.

По информации, собранной из всех пакетов самоидентификации, любой узел мо$ жет построить карту топологии сети (topology map), а на ее основе и карту дости жимых скоростей обмена (speed map) между любой парой узлов. Эти карты дол$ жен строить и публиковать узел$диспетчер (менеджер) шины, предоставляя доступ к ним любым узлам. Кроме того, информация пакетов самоидентификации исполь$ зуется для управления питанием от шины и оптимизации трафика.

Спецификации IEEE 1394

Стандарт для высокопроизводительной последовательной шины (High Performance Serial Bus), получивший официальное название IEEE 1394, был принят в 1995 году. Стандарт основан на шине FireWire, используемой фирмой Apple Computer еще с 1986 года в качестве дешевой альтернативы SCSI в своих компьютерах. Назва$ ние FireWire («огненный провод») теперь применяется и к реализациям IEEE 1394, оно сосуществует с кратким обозначением: «1394». Другое название того же ин$ терфейса — iLink, а иногда и Digital Link — используется фирмой Sony примени$ тельно к устройствам бытовой электроники. MultiMedia Connection — имя, исполь$ зуемое в логотипе 1394 High Performance Serial Bus Trade Association (1394TA).

К устройствам с интерфейсом IEEE 1394 относится большое количество специ$ фикаций, описывающих не только собственно интерфейс последовательной шины,

но и использование этой шины для транспортировки прикладных данных разного назначения, наборы команд и форматы данных. Основной источник информации по технологии, стандартам и продуктам — сайт ассоциации High Performance Serial Bus Trade Association (http://www.1394ta.org). Спецификация IEEE 1394 офици$ ально доступна через http://www.ieee.org (платно). Вопросы лицензирования и ин$ теллектуальной собственности — на сайте http://www.1394la.com.

Документ IEEE 1394 1995 Standard for a High Performance Serial Bus определяет архитектуру шины, основанную на трехуровневой модели, и протоколы, обеспе$ чивающие автоматическое конфигурирование, арбитраж и передачу изохронного и асинхронного трафика. В стандарте определены три возможные скорости пере$ дачи сигналов по кабелям: 98,304, 196,608 и 393,216 Мбит/с, которые округляют до 100, 200 и 400 Мбит/с и обозначаются как S100, S200 и S400 соответственно. Стандартизованы кабель и 6$контактный разъем, позволяющий передавать сигна$ лы и питание.

В дополнении IEEE 1394a 2000 IEEE Standard for a High Performance Serial bus (Supplement) введен ряд усовершенствований:

приняты меры для сокращения потерь времени при подключении устройств;

введены механизмы ускоренного арбитража;

разрешена конкатенация (соединение) пакетов, передаваемых на разных ско$ ростях;

расширены средства управления энергопотреблением и введена возможность приостановки и запрета портов;

введена возможность общения с регистрами PHY удаленного узла;

введен миниатюрный 4$контактный разъем (без питающих линий);

утвержден стандартный интерфейс PHY$LINK и возможная схема гальваниче$ ской развязки в этом интерфейсе;

уточнены исходные спецификации ради обеспечения более высокого уровня совместимости реализаций стандарта.

Новых скоростей в этом стандарте не появилось; изменения вводились с учетом обеспечения обратной совместимости с устройствами, отвечающими исходному стандарту.

Дополнения IEEE 1394b (2002 год) в основном касаются повышения скорости и даль$ ности передачи:

введены скорости S800, S1600 и архитектурная поддержка S3200;

введен новый (для 1394) метод сигнализации и соответствующий бета$режим работы портов. Для передачи используется пара встречных однонаправленных линий и кодирование 8B/10B, широко используемое в современных коммуни$ кационных технологиях;

введен новый метод арбитража (BOSS), повышающий эффективность исполь$ зования пропускной способности шины за счет исключения простоев шины (зазоров арбитража);