При проверке идущей в данный момент операции вновь выставить GK=1, чтобы сохранить связь между звеньями маршрута. Изменить первоначальный адрес, установив разряды AD <07:00> =03 и оставив прежнее содержимое в разрядах <31:08>.
При проверке правильности маршрута выбрать адрес в сегменте назначения и изменить его способом, указанным в п. 1.
Использовать модифицированный адрес с кодом режима MS = 3 при выполнении широкой операции записи в область CSR, которая должна проследовать тем же маршрутом, что и первоначальная операция (если только на нем не возникло состояние ошибки; обусловленное некоторой временной причиной).
В цикле записи данных широкой операции установить AD<15> — 1. Хотя все устройства, подключенные к сегментам,, образующим маршрут, зафиксируют эту широкую операцию, только соединенные СС отреагируют ва CSR4(zO<15>. и будут переведены в режим'отслеживания маршрута.Снять строб адреса AS (оставив в то же время GK= 1) и вновь выставить первоначальный или выбранный адрес с AS (и). Первый на маршруте СС не пропускает операцию, поскольку он находится в режиме отслеживания. Вместо этого он выдает SS = 2 совместно с АК, как будто им была обнаружен на ошибка.
Теперь мастер может выполнить вторичные циклы адреса и данных и считать таким образом содержимое регистров CSR первого СС, действуя как при обычном восстановлении после ошибки. Это позволит установить адреса обеих сторон СС и определить тем самым его расположение внутри системы.
Мастер снимает AS, в результате чего СС возвращается в нормальный режим. Затем он вновь выставляет первоначальный адрес и повторяет действия пп. 5 и 6. Так он действует до тех пор, пока все СС вдоль маршрута не будут идентифицированы. Об окончании маршрута сигнализирует SS=0, если достигнуто устройство, к которому адресовалась операция. В противном случае маршрут заканчивается на СС, который вновь выдает первоначальную ошибку.
1.8. SS = 4 при передаче адреса «зарезервированный
к о д»
1.9. SS = 5 при передаче адреса «зарезервированный
код»
.10. SS = 6 при передаче адреса «зарезервированный код»
Не должны происходить ответы зарезервированного СС. Если же они происходят, то значит имеется ошибка в аппаратном обеспечении или нарушение спецификации ФАСТБАС в конструкции, в этом случае следует послать хозяину сообщение о прерывании по ошибке.
.ll. SS = 7 при передаче адреса «несуществующий ІА» (принят)
Связь была установлена и внутренний адрес был принят (для хранения во внутренней памяти или использования каким-то другим способом), однако его значение выходит за пределы области допустимых адресов данного слуги. Если операцию необходимо успешно довести до конца, следует исправить это значение при выполнении вторичного адресного цикла. Этот отклик нужен, если NTA-регистр загружен неверным адресом во время первичного адресного цикла.
. Превышение лимита времени при передаче данных
Присоединенный слуга всегда отвечает на DS(t) выставлением DK(t). Если в ходе цикла данных превышен лимит времени, то указанный ответ мастер не видит в выделенный промежуток времени. В нормально работающих системах контроль по превышению лимита времени необходим, чтобы при возникновении отказов аппаратуры не происходило зависание системы. Однако при проведении проверок системы данную функцию часто блокируют, чтобы было проще локализовать источники неисправностей.
Существуют четыре причины превышения лимита времени:
Время, выделенное мастером на ожидание конца начатого цикла данных, оказалось недостаточным. Вероятно, данные не были подготовлены для отсылки, а слуга не сообщил об этом путем выдачи кода SS == 1 (занят) или подав сигнал ожидания WT.
В результате сбоя пропал сигнал подтверждения приема данных DK.
Слуга неисправен и поэтому не подал DK(t).
Нарушена связка AS/AK.
Мастер может послать в процессор-хозяин прерывание по ошибке, как и в случае рассмотренного выше превышения лимита времени в адресном цикле.J.3. Ответы на запросы статуса слуги
J.3.1. SS = O—исправная работа
Слуга не осведомлен ни о каких проблемах, в то время как мастер может обнаружить ошибку по четности в считанных данных, возникшую в процессе передачи информации.
J.3.2. SS = 1 — занят
Данный ответ посылается слугой, который просит мастера попытаться выполнить последнюю операцию повторно. SS=1 следует использовать только в случаях, когда имеется достаточно высокая вероятность успешной попытки в следующем или в нескольких следующих циклах. Мастер может либо повторить цикл несколько раз в рамках той же операции, либо закончить операцию и предпринять новую попытку позднее.
J.3.3. SS = 2 — конец блока
Такой ответ означает, что в процессе передачи блока или принудительной передачи блока достигнут либо конец данных, либо конец области памяти слуги. При этом операция должна быть закончена или, перед тем как ’ее продолжить, во вторичном адресном цикле должна быть выдана новая адресная информация.
J.3.4. SS=3 — определяется пользователем
Данный ответ может интерпретироваться по-разному в зависимости от типа слуги. Если мастер не ожидает такого ответа или не знает, как с ним поступить, он моЖет послать прерывание по ошибке в процессор-хозяин.
J.3.5. SS=4 — зарезервирован
J.3.6. SS = 5 — зарезервирован
Указанные ответы выдаваться не должны, и если мастер получит любой из них, он должен послать в процессор-хозяин прерывание по ошибке.
J.3.7. SS = 6— ошибочные данные (забракованы)
Слуга обнаруживает некоторую ошибку, связанную с данными или текущим внутренним адресом IА, и отказывается принимать или выдавать данные в выполняемом цикле. Если это цикл записи, мастер должен в первую очередь предположить, что ошибка имела место при передаче, и попытаться выполнить цикл повторно. Если ошибка сохраняется, для выявления ее причины необходимо проверить содержимое регистров статуса слуги. - Ошибки такого типа могут также вызываться неисправностями .оборудования, подключенного к слуге.
J.3.8. SS = 7— ошибочные данные (приняты)
Этот тип ошибки повторяет случай SS=6 с той разницей, что слуга данные принимает или выдает данные, заведомо содержащие ошибки. Выбор кодов SS = 6 или SS = 7 зависит от особенностей конкретного слуги, режима его работы, а также от того, к какой именно части слуги адресуются. Если нужно работать в режиме, при котором ошибки передачи только подсчитываются, а по завершении блоков выставляются флажки, следует задавать SS = 7.
Этот ответ требуется, если регистр адреса . следующей передачи NTA нагружается недостоверным адресом во время вторичной адресации.
Поскольку решение о том, заслуживает ли ошибка исправления или нет, должно приниматься не слугой, а мастером с учетом особенностей конкретных данных и других обстоятельств, слуги в качестве индикации ошибки при передачах в области данных должны обычно выдавать SS=7. По усмотрению мастера он может вторично адресоваться к слуге и повторить передачу, или не делать этого. Только в тех случаях, когда принятие ошибочных данных может вызвать нарушения или повреждения, исправить которые путем выполнения повторной передачи невозможно, слуги должны выдавать SS=6.
J.4. Реакция хозяина на сообщения об ошибках
Когда хозяин, т. е. процессор, ответственный за инициализацию системы, получает информацию о наличии ошибки, он должен установить адреса мас- 242тера и слуги, связанных с этой ситуацией. Прерывание по ошибке, выдаваемое мастером, должно содержать эту информацию в виде сообщения об ошибке, имеющего стандартный формат.
Если указанное сообщение посылается через последовательную диагностическую сеть, аналогичная информация должна быть заключена в соответствующем пакете сетевых сообщений.
Хозяин имеет доступ к информации по инициализации системы, и прежде всего он должен удостовериться, что мастер и слуга вместе с расположенными между ними СС были правильно инициализированы. Ошибки, обнаруженные в ходе такой проверки, могут дать полезные сведения, помогающие локализовать неисправность.
Хозяин должен также уведомить оператора о наличии ошибки и вывести диагностическую информацию. После этого оператор может приступить к диагностическим процедурам с использованием средств самоконтроля, предусмотренных в устройствах, или внешних измерительных приборов, исходя из особенностей конкретной системы.
J.3. Ошибки при обмене данными со стеками ПВПВ и портами ввода/вывода
J.5.I. Введение
Как правило, стеки ПВПВ и порты ввода/вывода не позволяют повторно передавать данные в них или из них. Другими словами, раз уж данные были переданы, исправить их нельзя. В случае записи в ПВПВ это обусловлено тем, что доступ к данным внутри ПВПВ невозможен.
Аналогичной особенностью обладают некоторые порты ввода/вывода, что связано с возникновением побочных эффектов. Так при считывании данных в' соответствующем порте иногда сбрасывается флажок «данные готовы». Запись данных в порт может вызывать различные побочные явления, которые зависят от условий применения и могут варьироваться от совершенно безвредных до серьезных (например, изменение уставок источника питания) и катастрофических.
Сходные проблемы возникают и при выполнении операций чтения с уничтожением информации, таких, как «считать и стереть» (Read-and-Clear).
В системе ФАСТБАС предусмотрены дополнительные проверки по четности, выполняемые с целью контроля целостности данных в процессе пересылок. Однако в некоторых приложениях простой регистрации ошибок недостаточно, и необходимо иметь механизм, позволяющий их исправить.
В магистрали ФАСТБАС исправление ошибок осуществляется только за счет повторных передач данных. Ввиду этого в системах, которые требуют полного отсутствия ошибок при выполнении операций пересылки, нельзя применять устройства, не допускающие повторные передачи данных.
Подобные устройства могут оснащаться дополнительными буферными регистрами, в которых данные могли бы храниться до тех пор, пока их пересылка не будет осуществлена без ошибок. При повторных передачах каждый раз производится обращение к этим буферам, пока данные не будут признаны правильными.
Должна быть тщательно проверена реализация механизмов устранения ошибок, чтобы мастер всегда мог по своему усмотрению либо игнорировать ошибку, либо корректировать ее с помощью методов, указанных в пп. J.5.2 и J.5.3.
J.5.2. Ошибки при операциях чтения
При выполнении считывания только мастер может определить, что произошла ошибка. Следовательно, чтобы можно было получить правильные данные в операциях чтения с уничтожением, слуга должен быть снабжен буферным регистром, в котором бы хранилась копия последних считанных данных. Мастер должен иметь возможность повторно адресоваться к слуге для доступа к такому регистру. Для единообразия с операцией записи (см. ниже) рекомендуется, чтобы аналогичным образом выполнялись операции с ПВПВ- и защищенными портами ввода/вывода.
Только передачи блоков или принудительные передачи блоков (MSb=l) заставляют слугу, получившего соответствующий адрес, обращаться в ПВПВ. Выполнение одиночных передач данных сводится к считыванию из буфера. В цикле передачи блока или принудительной передачи блока из ПВПВ считывается. по одному слову, которое отсылается мастеру, а его копия запоминается в буферном регистре на случай возникновения ошибки. Если мастер обнаруживает ошибку по четности или ошибку с кодом SS=7, он может либо продолжить операцию (подсчитывая или вообще игнорируя ошибки), либо приостановить передачу блбка или принудительную передачу, выполнить единичный цикл чтения, чтобы повторно считать данные, а затем возобновить обычным порядком передачу блока или принудительную передачу блока.
При выполнении описанных действий магистраль должна оставаться закрепленной за действующим мастером, чтобы не позволить другому мастеру произвести операцию чтения с тем Же слугой, нарушив содержимое буферного регистра. То же самое относится к входным портам с побочными эффектами. И для них операции считывания блока или принудительного считывания (как правило, одного слова) должны осуществлять доступ к данным, запоминать их копию и, возможно, вызывать побочные эффекты. В единичных циклах чтения производится только обращение к буферу, не сопровождаемое побочными эффектами.
Защитный буфер, предназначенный для выполнения операций типа «считать и стереть», должен действовать иначе, поскольку подобные функции обычно реализуются на адресуемых регистрах, причем при выполнении передач блоков или принудительных передач предусматривается автоматическое наращивание адреса регистра. В этом случае каждая операция чтения (отдельного слова или блока) вызывает считывание данных из регистра, запоминание копии в буфере и очистку регистра. Затем то же самое происходит со следующим регистром и т. д., если выполняется передача блока или принудительная передача. В единичном цикле считывания, следующим за передачей блока, принудительной передачей или единичным циклом чтения в рамках одной операции, производится? только обращение к буферу. Если единичный цикл считывания выполняется вслед за адресным циклом или вторичным адресным циклом, производится обращение к указанному регистру, его очистка ч обычное запоминание копии содержимого.
J.5.3. Ошибки при операциях записи
При операциях записи контроль ошибок осуществляет слуга. Если обнаруживается ошибка, он уведомляет об этом мастера через линии статуса слуги (SS). Данные, содержащие ошибку, могут помещаться в защитный буфер слуги для диагностических целей. Слуга может либо вернуть SS = 6 и больше ничего не делать, либо вернуть SS = 7, сохранить данные по адресу, указанному его регистром адреса следующей передачи NTA, а может прирастить регистр NTA, если цикл заключается в блочной или принудительной передаче блока.