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

Шина IEEE 1394 — FireWire

Усовершенствование арбитража в IEEE 1394a

Простота механизма арбитража оборачивается бесполезным расходованием времени на зазоры. Эти расходы снижают эффективную пропускную способность шины, особенно для коротких пакетов и пакетов, передаваемых на высокой скорости. Для скорости S100 на пакетах максимального размера эффективность использования шины составляет 80%, на коротких (64 байта данных) эффективность падает до 20%. При скорости S400 на длинных пакетах эффективность снижается до 50%, а на коротких — до 10%. В IEEE 1394a введен приоритетный арбитраж и ускоренные механизмы, сокращающие издержки времени на выжидание интервалов зазоров.

Приоритетный арбитраж (в IEEE 1394a) позволяет узлу за один интервал справедливости передать более одного асинхронного запроса. Число запросов, разрешенных узлу за один интервал, определяется полем pri_req его регистра FAIRNESS_BUDGET (смещение 218h в пространстве регистров CSR, другое имя того же регистра — PRIORITY_BUDGET, формат приведен на рисунке). Значение этого поля заносит диспетчер шины исходя из числа узлов и их потребностей, которые они сообщают в поле pri_max своих регистров. Диспетчер назначает узлам значения pri_req, так чтобы их сумма не превышала 63–N, где N — число узлов на шине.

Механизмы ускорения позволяют посылать пакеты запросов и ответов «с оказией», без задержек арбитража. Ускорения позволяют узлам, находящимся дальше от корня, обогнать в арбитраже более близкие к корню узлы, находящиеся в более выгодном положении. Однако и при использовании механизмов ускорения должен соблюдаться интервал справедливости. Ускорения используются узлами с «умным» PHY, способным анализировать пакеты. Ускорения могут быть реализованы двумя способами:

  • используя ускоренный арбитраж, основанный на пакетах квитирования (ackaccelerated). Здесь возможны два варианта:
  1. узел, отвечающий пакетом квитирования на какой-либо запрос (ответ), может послать свой асинхронный пакет запроса (ответа) вслед за пакетом-квитанцией, отделяя его лишь префиксом данных. Таким образом производится соединение (конкатенация) двух пакетов;
  2. узел, желающий послать пакет запроса или ответа, дожидается прохождения пакета-квитанции и с коротким зазором (40 нс, как у изохронного арбитража) посылает запрос арбитража. При этом он опередит обычный узел, который в этом случае будет выдерживать нормальный асинхронный зазор.
  • Арбитраж «на лету» (Fly-by) позволяет узлу присоединять свой пакет запроса к пакету, транслируемому им в сторону корня и не требующему квитирования (то есть к изохронным пакетам и квитанциям). При этом нельзя присоединять пакет, передаваемый на скорости S100, к пакетам, идущим на более высокой скорости (S100 передается без сигнализации о скорости, так что устройства 1394 будут ошибочно пытаться принять этот пакет на скорости пакета-«носителя»).

Во время исполнения ускоренного арбитража корневой узел не имеет возможности захватить шину. Если он работает мастером циклов (необходимым для изохронного обмена), то он может не суметь вовремя передать пакет начала цикла. Чтобы этого не происходило, узлы с ускоренным арбитражем должны иметь регистры CYCLE_TIME и запрещать ускоренный арбитраж близко к ожидаемой границе цикла, пока не получат очередной пакет начала цикла.

 

В бета-режиме IEEE 1394b введен новый метод арбитража — BOSS (Bus Owner/Supervisor/Selector), предназначенный как для чистых B-шин, все узлы которых работают в бета-режиме, так и для гибридных шин, часть узлов которых работает с традиционной DS-сигнализацией. Метод BOSS позволяет передавать запросы на право передачи во время передачи пакетов, что обеспечивает конвейеризацию работы шины и сокращает ее простои.