Шина IEEE 1394 — FireWire

Сброс шины (Bus Reset)

Сброс шины приводит к ряду эффектов:

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

Сброс шины может быть вызван любым устройством. Сброс распространяется всеми узлами беспрепятственно, поскольку его сигнал по праву доминирования единиц превалирует над всеми другими сигналами. После сигнала сброса, длительность которого Treset = 167 мкс (или 1,4 мкс — короткий сброс, см. ниже), узлы выдерживают паузу Twait = 0,16 мкс, после чего начинается процесс идентификации дерева.

Сигнал сброса вырабатывается по ряду причин:

  • сброс при включении питания PHY (состояние питания LINK не важно);
  • сброс при подключении узла к порту и его отключении (обнаруживается узлом по изменению напряжения смещения);
  • сброс по тайм-ауту арбитража, предотвращающий «зависание» шины. Он вырабатывается узлом при длительном нахождении шины в одном состоянии по истечении MAX_ARB_STATE_TIME = 200–400 мкс. Контроль длительности не распространяется на состояния покоя (bus idle), старта идентификации дерева и состояния, контролируемые своими счетчиками тайм-аутов;
  • программно-инициируемый сброс, выполняемый по запросу приложения на каком-либо узле.

В случае изменения топологии сброс вырабатывается по крайней мере два раза подряд. Первый раз его сигнализирует узел-новичок, подключаемый к шине. Второй раз сброс подаст узел, к которому он подключился, поскольку он обнаружит изменение состояния порта. Два сброса подряд — это сигнал к установке стандартного зазора арбитража (gap_cnt=63); новое оптимальное значение зазора должно определяться по новой топологии.

При подключении/отключении устройств в разъемах возникает дребезг контактов — серия замыканий и размыканий, которая может длиться десятки и сотни миллисекунд. В 1394 это порождает так называемый шторм сбросов, что парализует работу шины на длительное время (сотни миллисекунд). В 1394a эту проблему решили введением защиты от дребезга: узел посылает сброс по обнаружении смены состояний не сразу, а через 330–350 мс (когда дребезг закончится).

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

Из-за особенностей интерфейса PHY–LINK сигнал сброса должен быть весьма длительным, чтобы уведомление о нем получили LINK-уровни всех узлов. Сигнал сброса приходит в любой момент времени. В узле, ведущем передачу пакета, интерфейсом PHY–LINK владеет LINK. Таким образом, PHY не имеет возможности сигнализировать LINK’у о сбросе, пока передача пакета не будет завершена. Из-за этого длительность сигнала сброса должна быть больше длительности максимального пакета, поэтому принято Treset = 166,7 мкс. Поскольку во время сброса трафик по шине передаваться не может, такой длинный сброс приводит к потерям изохронных данных (может быть потерян целый 125-микросекундный цикл шины). В 1394a эту проблему решили, введя новый вариант сброса — короткий сброс (Short Bus Reset) длительностью 1,3–1,4 мкс. Короткий сброс узел может подать, только выиграв арбитраж (Arbitrated Bus Reset), — это гарантия того, что ни один узел в это время не передает пакет. Однако применение короткого сброса имеет свою специфику:

  • если обнаруживается отключение на p-порте, то арбитраж попросту невозможен (корень уже недоступен);
  • если при попытке арбитража срабатывает тайм-аут, сброс должен быть длинным;
  • одиночный узел при подключении должен задержать подачу сброса на 1 с, чтобы дать возможность другому узлу подать короткий сброс (по обнаружении подключения). Если сброс не приходит, то узел генерирует обычный сброс, если приходит — генерировать дополнительный сброс уже не надо.

Три различных варианта сброса шины по факту подключения узла приведены на рисунке. Из диаграммы видно, как усовершенствование механизма сброса позволяет сократить время простоя шины с сотен миллисекунд (1394) до 167 мкс (1394a) и даже до 1,56 мкс (короткий сброс в 1394a).

Яндекс.Метрика