Полная версия

Главная arrow Информатика

  • Увеличить шрифт
  • Уменьшить шрифт


<<   СОДЕРЖАНИЕ ПОСМОТРЕТЬ ОРИГИНАЛ   >>

Асинхронный протокол

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

В асинхронном протоколе начало очередного события на шине определяется не тактовым импульсом, а предшествующим событием и следует непосредственно за этим событием. Каждая совокупность сигналов, помещаемых на шину, сопровождается соответствующим синхронизирующим сигналом, называемым стробом. Синхросигналы, формируемые ведомым, часто называют квитирующими сигналами (handshakes) или подтверждениями сообщения (acknowledges).

Сначала ведущее устройство выставляет на шину адрес и управляющие сигналы и выжидает время перекоса сигналов, после чего выдает строб адреса, подтверждающий достоверность информации. Ведомые следят за адресной шиной, чтобы определить, должны ли они реагировать. Ведомый, распознавший на адресной шине свой адрес, отвечает информацией состояния, сопровождаемой сигналом подтверждения адреса. Когда ведущий обнаруживает подтверждение адреса, он знает, что соединение установлено, и готов к анализу информации состояния. Присутствие адреса на ША далее не требуется, поскольку у ведомого уже имеется копия полного адреса либо нужной его части.

Далее ведущий меняет управляющую информацию, выжидает время перекоса и выдает строб данных. Если это происходит в транзакции записи, то ведущий одновременно с управляющей информацией выставляет на шину записываемые данные. В рассматриваемом случае управляющая информация извещает ведомое устройство, что это чтение. Когда ведомый подготовит затребованные данные, он выдает их на шину совместно с новой информацией о состоянии и формирует сигнал подтверждения данных. Когда ведущий видит сигнал подтверждения данных, он читает данные с шины и снимает строб данных, чтобы показать, что действия с данными завершены. В нашем примере ведущий снимает также и строб адреса. В более сложных вариантах транзакций строб адреса может оставаться на шине для поддержания соединения в течение нескольких циклов данных. Обнаружив исчезновение строба данных, ведомый снимает с шины данные и информацию состояния, а также сигнал подтверждения данных, переводя шину в свободное состояние.

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

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

Квитирование в асинхронных системах не всегда реализуется в полном объеме. Иногда транзакция на шине не может быть завершена стандартным образом, например, если ведущий из-за программных ошибок обращается к несуществующей ячейке памяти. В этом случае ведомое устройство не отвечает соответствующим подтверждающим сигналом. Чтобы предотвратить бесконечное ожидание в шинах, используется тайм-аут, то есть задается время, спустя которое при отсутствии отклика транзакция принудительно прекращается.

Тайм-ауты цикла данных, обычно означающие отказ оборудования, достаточно редки, поэтому время тайм-аута может быть весьма большим. С другой стороны, тайм-ауты по адресу возникают часто. Происходит это, например, когда программа инициализирует систему и проверяет, какие из устройств присутствуют на шине; при этом вполне реальна выдача на шину адреса несуществующего устройства. В спецификациях шин предписываются очень малые значения тайм-аута по адресу, из-за чего устройства декодирования адреса в ведомых устройствах должны быть весьма быстрыми, чтобы уложиться в отведенное время. Шины ввода/вывода обычно реализуются как асинхронные.

 
<<   СОДЕРЖАНИЕ ПОСМОТРЕТЬ ОРИГИНАЛ   >>