link980 link981 link982 link983 link984 link985 link986 link987 link988 link989 link990 link991 link992 link993 link994 link995 link996 link997 link998 link999 link1000 link1001 link1002 link1003 link1004 link1005 link1006 link1007 link1008 link1009 link1010 link1011 link1012 link1013 link1014 link1015 link1016 link1017 link1018 link1019 link1020 link1021 link1022 link1023 link1024 link1025 link1026 link1027 link1028 link1029 link1030 link1031 link1032 link1033 link1034 link1035 link1036 link1037 link1038 link1039 link1040 link1041 link1042 link1043 link1044 link1045 link1046 link1047 link1048 link1049 link1050 link1051 link1052 link1053 link1054 link1055 link1056 link1057 link1058 link1059 link1060 link1061 link1062 link1063 link1064 link1065 link1066 link1067 link1068 link1069 link1070 link1071 link1072 link1073 link1074 link1075 link1076 link1077 link1078 link1079 link1080 link1081 link1082 link1083 link1084 link1085 link1086 link1087 link1088 link1089 link1090 link1091 link1092 link1093 link1094 link1095 link1096 link1097 link1098 link1099 link1100 link1101 link1102 link1103 link1104 link1105 link1106 link1107 link1108 link1109 link1110 link1111 link1112 link1113 link1114 link1115 link1116 link1117

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

Шина IEEE 1394 — FireWire

Управление энергопотреблением

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

  • появилась возможность приостановки и возобновления работы узлов (suspend и resume);
  • появилась возможность управлять уровнем потребления узлов и блоков;
  • расширились возможности расчета баланса мощности с учетом батарейного питания и уровней питания узлов и блоков.

Эти новые возможности потребовали введения дополнительных регистров CSR и элементов в памяти конфигурации.

В дополнении IEEE 1394b введено новое энергосберегающее состояние порта и узла — Standby, в котором PHY не обеспечивает взаимодействия своего узла с шиной.

Приостановка и возобновление (Suspend и Resume)

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

Приостановка по команде Suspend

Команда Suspend приводит к разделению шины на два фрагмента (домена): активный и приостановленный. Инициатор этой приостановки всегда остается в активном домене.

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

Получив сигнал приостановки RX_SUSPEND на одном из своих портов, целевой узел (которому посылали команду) прекращает подачу смещения (TpBias) на этот порт. На все свои остальные порты этот узел посылает сигнал TX_SUSPEND, инициируя приостановку и их партнеров. Таким образом, приостановка распространится на все порты и узлы шины, которые связаны с инициатором приостановки через приостанавливаемый порт.

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

Приостановка по команде запрета порта

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

Получив пакет с командой запрета порта (Disable Port), узел посылает во все порты, кроме запрещенного, пакет подтверждения, а за ним — короткий сигнал сброса. На запрещенный порт узел посылает сигнал TX_DISABLE_NOTIFY. Его партнер, приняв сигнал RX_DISABLE_NOTIFY, посылает на остальные порты префикс данных, а за ним — короткий сброс. Этот порт переводится в приостановленное состояние (снятием смещения, на что ответом будет снятие смещения и у запрещенного порта).

Возобновление нормальной работы

Возобновление работы порта может инициироваться несколькими способами:

  • по приему пакета RESUME, который может быть послан широковещательно (или направленно) от узла, находящегося в активном домене шины. Этот пакет воспринимается и отрабатывается узлами активного домена, у которых имеются приостановленные порты. Все эти порты переводятся в активное состояние;
  • по приему командного пакета с командой Resume Port, с указанием ранее приостановленного или запрещенного порта. Адресованный узел подает на указанный порт смещение, что приведет к возобновлению работы всего приостановленного домена (или возобновит работу запрещенного порта);
  • по событию, обнаруженному портом. Возобновление могут вызывать события смены состояния подключения, смены уровня смещения, перевод в запрещенное состояние и отказ порта. Каждое из этих событий вызывает пробуждение, если для него установлен соответствующий бит в поле разрешения прерываний.