1. При проверке идущей в данный момент операции вновь выставить GK=1, чтобы сохранить связь между звеньями маршрута. Изменить первоначальный адрес, установив разряды AD <07:00> =03 и оставив прежнее содержимое в разрядах <31:08>.

  2. При проверке правильности маршрута выбрать адрес в сегменте назна­чения и изменить его способом, указанным в п. 1.

  3. Использовать модифицированный адрес с кодом режима MS = 3 при выполнении широкой операции записи в область CSR, которая должна прос­ледовать тем же маршрутом, что и первоначальная операция (если только на нем не возникло состояние ошибки; обусловленное некоторой временной при­чиной).

  4. В цикле записи данных широкой операции установить AD<15> — 1. Хотя все устройства, подключенные к сегментам,, образующим маршрут, за­фиксируют эту широкую операцию, только соединенные СС отреагируют ва CSR4(zO<15>. и будут переведены в режим'отслеживания маршрута.Снять строб адреса AS (оставив в то же время GK= 1) и вновь выс­тавить первоначальный или выбранный адрес с AS (и). Первый на маршруте СС не пропускает операцию, поскольку он находится в режиме отслеживания. Вместо этого он выдает SS = 2 совместно с АК, как будто им была обнаружен на ошибка.

  5. Теперь мастер может выполнить вторичные циклы адреса и данных и считать таким образом содержимое регистров CSR первого СС, действуя как при обычном восстановлении после ошибки. Это позволит установить адреса обеих сторон СС и определить тем самым его расположение внутри системы.

  6. Мастер снимает AS, в результате чего СС возвращается в нормальный режим. Затем он вновь выставляет первоначальный адрес и повторяет дейст­вия пп. 5 и 6. Так он действует до тех пор, пока все СС вдоль маршрута не будут идентифицированы. Об окончании маршрута сигнализирует SS=0, если достигнуто устройство, к которому адресовалась операция. В противном слу­чае маршрут заканчивается на СС, который вновь выдает первоначальную ошибку.

  7. 1.8. SS = 4 при передаче адреса «зарезервированный

к о д»

  1. 1.9. SS = 5 при передаче адреса «зарезервированный

код»

  1. .10. SS = 6 при передаче адреса «зарезервированный код»

Не должны происходить ответы зарезервированного СС. Если же они происходят, то значит имеется ошибка в аппаратном обеспечении или нару­шение спецификации ФАСТБАС в конструкции, в этом случае следует послать хозяину сообщение о прерывании по ошибке.

  1. .ll. SS = 7 при передаче адреса «несуществующий ІА» (принят)

Связь была установлена и внутренний адрес был принят (для хранения во внутренней памяти или использования каким-то другим способом), однако его значение выходит за пределы области допустимых адресов данного слуги. Если операцию необходимо успешно довести до конца, следует исправить это значение при выполнении вторичного адресного цикла. Этот отклик нужен, если NTA-регистр загружен неверным адресом во время первичного адресного цикла.

  1. . Превышение лимита времени при передаче данных

Присоединенный слуга всегда отвечает на DS(t) выставлением DK(t). Если в ходе цикла данных превышен лимит времени, то указанный ответ мастер не видит в выделенный промежуток времени. В нормально работающих системах контроль по превышению лимита времени необходим, чтобы при воз­никновении отказов аппаратуры не происходило зависание системы. Однако при проведении проверок системы данную функцию часто блокируют, чтобы было проще локализовать источники неисправностей.

Существуют четыре причины превышения лимита времени:

  1. Время, выделенное мастером на ожидание конца начатого цикла данных, оказалось недостаточным. Вероятно, данные не были подготовлены для отсыл­ки, а слуга не сообщил об этом путем выдачи кода SS == 1 (занят) или подав сигнал ожидания WT.

  2. В результате сбоя пропал сигнал подтверждения приема данных DK.

  3. Слуга неисправен и поэтому не подал DK(t).

  4. Нарушена связка 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, если цикл заключается в блочной или принудительной передаче блока.