Протокол квитирования обеспечивает надежность обмена — ведущее устройство всегда получает информацию об отработке транзакции ЦУ. Средством повышения надежности (достоверности) является применение контроля паритета: линии AD[31:0]
С/BE[3:0]#
и в фазе адреса, и в фазе данных защищены битом паритета PAR
(количество единичных бит этих линий, включая PAR
, должно быть четным). Действительное значение PAR
появляется на шине с задержкой в один такт относительно линий AD и С/BE#
. При обнаружении ошибки ЦУ вырабатывается сигнал PERR#
(со сдвигом на такт после действительности бита паритета). В подсчете паритета при передаче данных учитываются все байты, включая и недействительные (отмеченные высоким уровнем сигнала С/ВЕх#
). Состояние бит, даже и в недействительных байтах данных, во время фазы данных должно оставаться стабильным.Каждая транзакция на шине должна быть завершена планово или прекращена, при этом шина должна перейти в состояние покоя (сигналы FRAME#
IRDY#
пассивны). Завершение транзакции выполняется либо по инициативе ведущего устройства, либо по инициативе ПУ.Ведущее устройство может завершить транзакцию одним из следующих способов.
♦ Нормальное завершение (
♦ Завершение по тайм-ауту (
GNT#
) и истекает время, указанное в его таймере Latency Timer. Это может случиться, если адресованное ЦУ оказалось непредвиденно медленным или запланирована слишком длинная транзакция. Короткие транзакции (с одной-двумя фазами данных) даже в случае снятия сигнала GNT#
и срабатывания таймера завершаются нормально.♦ Транзакция отвергается (
DEVSEL#
).Транзакция может быть прекращена по
STOP#
. Возможны три типа прекращения.♦ Повтор (
STOP#
вводится при пассивном сигнале TRDY#
до первой фазы данных. Эта ситуация возникает, когда ЦУ из-за внутренней занятости не успевает выдать первые данные в положенный срок (16 тактов). Повтор является указанием ведущему устройству на необходимость нового запуска той же транзакции.♦ Отключение (
STOP#
вводится во время или после первой фазы данных. Если сигнал STOP#
введен при активном сигнале TRDY#
очередной фазы данных, то эти данные передаются и на том транзакция завершается. Если сигнал STOP#
введен при пассивном сигнале TRDY#
, то транзакция завершается без передачи данных очередной фазы. Отключение производится, когда ЦУ неспособно своевременно выдать или принять очередную порцию данных пакета.♦ Отказ (
STOP#
вводится одновременно со снятием сигнала DEVSEL#
(в предыдущих случаях во время появление сигнала STOP#
сигнал DEVSEL#
был активен). После этого данные уже не передаются. Отказ вводится, когда ЦУ обнаруживает фатальную ошибку или иные условия, по которым оно уже никак не сможет обслужить данный запрос.Использование трех типов прекращения вовсе не обязательно для всех ЦУ, однако любое ведущее устройство должно быть готово к завершению транзакций по любой из этих причин.
6.2.3. Команды шины, адресация памяти и ввода-вывода
Работа шины контролируется несколькими таймерами, не позволяющими попусту расходовать такты шины и планировать распределение полосы пропускания.
Каждое ЦУ должно достаточно быстро отвечать на адресованную ему транзакцию.
TRDY#
относительно FRAME#
, не должна превышать 16 тактов шины. Если устройство по своей природе иногда может не успевать уложиться в этот интервал, оно должно формировать сигнал STOP#
, прекращая транзакцию. Это заставит ведущее устройство повторить транзакцию, и с большой вероятностью эта попытка окажется успешной. Если устройство медленное и часто не укладывается в 16 тактов, то оно должно откладывать транзакцию (Delayed Transaction). Кроме того, ЦУ имеет инкрементный механизм слежения за длительностью циклов (Incremental Latency Mechanism), который не позволяет интервалу между с