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

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

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

введены новые типы среды передачи для бета$режима:

пара пластиковых или стеклянных оптических волокон для расстояний до 50 или до 100 м;

кабель UTP$5 (используются 2 пары) с разъемами RJ$45 для расстояний до 100 м с трансформаторной гальванической развязкой.

Введен миниатюрный 9$контактный разъем для коротких дистанций, позволя$ ющий передавать данные со скоростью до 3,2 Гбит/с и подавать питание по шине.

Совместимость с 1394 и 1394a обеспечивается «двуязычными» уровнями PHY, способными работать с разными методами сигнализации на своих разных портах. При этом возможно построение гибридной шины, состоящей из одного или не$ скольких «облаков» узлов с бета$сигнализацией, связанных друг с другом фраг$ ментами с традиционной сигнализацией.

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

В основу IEEE 1394 положен протокол запросов$ответов архитектуры регистров управления и состояния для микрокомпьютерных шин, описанной в стандарте ISO/ IEC 13213:1994 Control and Status Register Architecture for Microcomputer Busses (CSR$архитектура). Ревизия этого стандарта предполагается в проекте P1212r. Ревизия касается возможностей бесконфликтного расширения форматов содер$ жимого памяти конфигурации, а также регистров CSR. Планируется привести спе$ цификацию CSR в соответствие с практикой ее использования.

К управлению энергопотреблением IEEE 1394 относится спецификация 1394 TA Power Spec, состоящая из трех частей:

Part 1: Cable Power Distribution — описание механизма подачи питания через кабельную шину, форматы структур данных и регистров, описывающих потреб$ ности в питании и возможности поставки питания на шину;

Part 2: Suspend/Resume — описание механизмов приостановки и возобновле$ ния работы отдельных портов и частей кабельной шины;

Part 3: Power State Management — описание четырех возможных уровней по$ требления узла и его блоков и механизмов управления сменой уровней.

Передача данных по шине IEEE 1394

Шина IEEE 1394 поддерживает два типа передач данных:

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

направленная асинхронная передача адресуется конкретному узлу, гаранти$ рованную доставку обеспечивает механизм квитирования и повторов;

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

Изохронные передачи с гарантированной пропускной способностью. Целост$ ность данных контролируется CRC$кодом, гарантии доставки нет — квитиро$ вание и повторы не применяются.

Направленные асинхронные передачи являются основой для выполнения асин хронных транзакций — логически завершенных обменов между парами узлов. Про$ токол шины позволяет узлам с помощью асинхронных транзакций обращаться к памяти (регистрам) друг друга в режиме прямого доступа (DMA). При этом они не нуждаются в памяти и процессорных ресурсах «третьих лиц»1.

Изохронные передачи представляют собой потоки пакетов данных. Эти передачи ведутся широковещательно и адресуются через номер канала, передаваемый в каж$ дом пакете. На шине может быть организовано до 64 изохронных каналов, переда$ чи всех каналов «слышат» все устройства шины, но из всех пакетов принимают только данные интересующих их каналов. По шине могут передаваться и асин хронные потоки, для которых, в отличие от изохронных, не предоставляется га$ рантированная полоса пропускания.

Асинхронные транзакции

Асинхронные транзакции на шине IEEE 1394 реализуют подмножество операций протокола запросов$ответов, соответствующего стандарту архитектуры регистров

1Для сравнения: между устройствами USB взаимодействие возможно только через память хост$ком$ пьютера и лишь под управлением его процессора.

управления и состояния CSR1 (Control and Status Register) для микропроцессор$ ных шин. Асинхронные передачи обеспечивают три типа транзакций:

чтение (Read);

запись (Write);

блокированные операции «чтение$модификация$запись» (Lock).

В каждой асинхронной транзакции участвуют два устройства: запросчик (requester) и ответчик (responder). Протокол запросов$ответов для этих типов транзакций иллюстрирует рис. 18.1. Каждая асинхронная транзакция состоит из двух субак ций (subaction) — шагов исполнения:

запрос (request) — передается тип, адрес транзакции и, возможно, данные;

ответ (response) — передается состояние выполнения (успех$неуспех) транзак$ ции и, возможно, данные.

Рис. 18.1. Протокол запросов ответов: а — чтение; б — запись; в — чтение модификация запись

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

1 ISO/IEC 13213:1994 (ANSI/IEEE 1212, редакция 1994 года).

2 В архитектурной модели CSR квитирование не предусмотрено.

Формы выполнения транзакций

Асинхронные транзакции могут выполняться в разных формах, различающихся числом субакций, необходимостью квитирования и способом получения права передачи (количеством операций арбитража). Эти формы иллюстрирует рис. 18.2. На рисунке показаны операции арбитража (arb), короткие зазоры подтверждений (ack gap), длинные зазоры субакций (subaction gap), признаки начала (Data Prefix) и конца (Data End) пакетов. Механизм арбитража и зазоры рассмотрены в гл. 19.

Расщепленные транзакции используются при обращении к медленным устройствам (рис. 18.2, а). Здесь между запросом и ответом могут вклиниваться другие тран$ закции на шине, так что перед ответом требуется арбитраж и зазор. В этой форме могут выполняться запись (Split Write), чтение (Normal Split Read) и блокирован$ ные транзакции (Normal Split Lock);

Рис. 18.2. Формы асинхронных транзакций: а — расщепленная; б — соединенная расщепленная; в — объединенная

Соединенные расщепленные транзакции используются при обращении к быстрым устройствам (рис. 18.2, б). Здесь пакет ответа передается сразу за пакетом квитирова$ ния (отделяясь только префиксом данных), так что дополнительный арбитраж (и за$ зор) не требуется. В этой форме могут выполняться запись (Concatenated Split Write), чтение (Concatenated Read) и блокированные транзакции (Concatenated Lock);

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

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

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

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

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

Таблица 18.1. Типы блокированных транзакций

Расширен

Имя

Назначение

ный код

 

 

транзакции

 

 

 

 

 

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

резерв

Резерв

 

 

 

Пакеты асинхронных транзакций

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

64$битный адрес назначения (см. рис. 17.2, состоящий из полей destination_ID (10$битный номер шины и 6$битный номер узла) и destination_Offset (48$битный адрес в пространстве целевого узла);

метка транзакции tl (Transaction Label, 6 бит), с помощью которой запросчик определяет, к какому его запросу относится полученный ответ. Если метка ис$ пользуется, то ответчик помещает в пакет ответа метку, полученную запросчи$ ком (аналогично тегам на PCI$X);

код повтора rt (Retry Code, 2 бита), по которому определяется, является ли данный пакет первой попыткой транзакции; для повторной попытки значение поля задается в зависимости от кода квитирования, полученного от целево$ го устройства: rt = 00 — первая попытка, rt = 01 — Retry_x, rt = 10 —

Retry_A, rt = 11 — Retry_B;

поле типа транзакции (субакции) tcode (4 бита), определяющий назначение пакета и его формат в соответствии с табл. 18.2;

поле приоритета pri (Priority, 4 бита, используется только для кросс$шины), в кабельных сетях не используется;

поле rcode (4 бита) содержит код результата выполнения операции (табл. 18.3);

поле data_length (16 бит) содержит длину блока (в байтах);

поле расширенного кода транзакции extended_tcode (16 бит) уточняет выпол$ няемую операцию (используется не для всех операций);

проверочный код header_CRC контролирует целостность заголовка.

Блок данных data_block, следующий за заголовком, и его проверочный код data_CRC присутствуют в пакетах с tcode = 1, 7, 9, A. Блок содержит целое

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

Рис. 18.3. Пакеты транзакций записи: а — запрос записи квадлета;

б — запрос записи блока; в — ответ

Рис. 18.4. Пакеты транзакций чтения: а — запрос чтения квадлета; б — запрос чтения блока; в — ответ чтения квадлета; г — ответ чтения блока

Рис. 18.5. Пакет запроса блокированных транзакций

Таблица 18.2. Типы пакетов асинхронных транзакций

tcode

Транзакция (субакция)

0Запрос записи квадлета данных (Write Request)

1Запрос записи блока данных (Write Request)

2Ответ записи (Write Response)

3, C, D, F Резерв

4Запрос чтения квадлета данных (Read Request)

5Запрос чтения блока данных (Read Request)

6Ответ чтения квадлета данных (Read Response)

7Ответ чтения блока данных (Read Response)

8Начало цикла (Cycle Start)

9Запрос блокированной транзакции (Lock Request)

AПакет асинхронного потока (Asynchronous Streaming Packet)

BОтвет блокированной транзакции (Lock Response)

EНе стандартизован

Допустимый размер блока данных, передаваемых в одном пакете, зависит от ско$ рости (табл. 18.4).

Таблица 18.3. Коды результата выполнения

rcode Результат

0resp_comlete, успешное выполнение запроса

1–3 резерв

4resp_conflict_error, отвечающий агент обнаружил конфликт ресурсов (запрос можно повторить позже)

5resp_data_error, аппаратная ошибка, данные недоступны

6resp_type_error, недопустимое значение полей в пакете запроса

7

resp_address_error, указанные адрес недоступен

 

8…Fh

резерв

 

 

 

Таблица 18.4. Допустимый размер блока данных пакета

 

 

 

 

Скорость

Максимальный размер

Максимальный размер для

 

для асинхронных передач, байт

изохронных передач, байт

 

 

 

S100

512

1024

S200

1024

2048

S400

2048

4096

S800

4096

8192

S1600

4096

16 384

S3200

4096

32 768

 

 

 

Пакет квитирования имеет длину всего 1 байт (рис. 18.6), в нем содержится 4$битный код квитирования ack_code (табл. 18.5), достоверность которого прове$ ряется по его двоичному дополнению ack_parity.

Рис. 18.6. Пакет квитирования

Таблица 18.5. Коды квитирования

ack_code Имя

Значение

0

Резерв

Резерв

1ack_complete Пакет успешно принят. Если это квитанция пакета запроса,

то пакет ответа не предполагается

2

ack_pending

Пакет запроса успешно принят, пакет ответа будет послан

 

 

(для пакетов ответа не используется)

3

Резерв

Резерв

4

ack_busy_x

Пакет не принят из за занятости узла (возможен успех

 

 

при повторной попытке)

продолжение