AB
CB
К интерфейсу ПУ
![]()
![]()
![]()
![]()

с DB от проц с DB от проц
|
|
|
|
![]()
![]()
![]()
![]()

![]()

|
![]()

|
![]()


(ССП)
Z OV
![]() |


INTA
![]() | ||
![]() | ||
|
OE
![]() |
![]() |
|
|
|
OE OE OE
![]()
![]()
![]()
+ R
![]()
![]()
![]()
![]()
![]()
![]()
_
![]()

![]()
![]()

AB
|
От ПУ байт сост.
От УУ байт сост.
![]()
Z на УУ
DB
Алгоритм завершения работы (распознавание последней команды) Сопроцессора ввода/вывода.
У сопроцессора ввода/вывода нет прямой команды завершения работы. Конечно можно было бы предусмотреть этот случай в системе команд, но можно остановиться на подручных средствах.
В структуре УСК присутствуют указатель цепочки данных (ЦД) и указатель цепочки операций (ЦО). При ЦД=0 операция после использования данного
УСК оканчивается, при ЦД=1 она продолжается с новым массивом данных, указанным в следующем УСК. При ЦО=0 программа канала для заданного ПУ
заканчивается на текущем УСК; при ЦД=0 и ЦО=1 после выполнения действий по текущему УСК, выбирается следующее по порядку УСК и выполняется новая операция ввода/вывода с тем же ПУ. В случае же, когда в УСК ЦД=0 и ЦО=0, УСК после выполнения последних действий заканчивает работу канала.
Пример: В ОП должны быть приняты из некоторых 500 байт с носителя, первые 10 и последние 20.
Надо выполнить следующую последовательность УСК:
Адрес УСК | Приказ | Указатель | Адрес данных | Счетчик данных | ||||
цд | цо | уб | пи | пр | ||||
N N+8 N+16 | Прочитать Прочитать Прочитать | 1 1 0 | 0 0 0 | 0 0 1 | 0 1 0 | 0 1 0 | А 0 А+10 | 10 470 20 |
Первое УСК выполняет ввод первых 10 байт в ячейки с адресом то А до А+9. Второе УСК обеспечивает пропуск следующих 470 байт. Третье УСК выполняет ввод в ОП оставшихся 20 байт и заканчивает программу канала (ЦД=0 ЦО=0). Автоматически (по окончании цепочки) каналом формируется прерывание, сигнализирующее процессору, что затребованная операция ввода/вывода выполнена полностью.
Алгоритм реакции на ошибки в памяти Сопроцессора ввода/вывода.
1. Когда сопрцессору нужно записать или прочитать данные из памяти, он запрашивает цикл обращения к памяти.
2. Если память свободна, то сопроцессор начинает с ней работу.
3. Допустим сопроцессор запросил 100 байт, а получил 95 байт, и нет никакого способа получить недостоющие 5 байт.
4. Cопроцессор формирует флажок неправильной длины в ССК.
5. Записывает Слово Состояния Канала в память, чтобы оно было доступно СУВВ (Супервизор ввода/вывода).
6. Формирует сигнал запроса на прерывание и записывает в Регистр Кода Условия (часть ССП), что СУВВ нужно просмотреть ССК для получения более подробной информации.
7. По данному прерыванию в действие вступает Супервизор Ввода/Вывода, анализирует ССК с целью определения вида ошибки.
8. Если произошла ошибка, допускающая восстановление работоспособности, то запускается требуемая подпрограмма обработки ошибок.
9. Если ошибка не была исправлена, то она сообщает это СУВВ и передает ему управление. В этом случае СУВВ действует точно так же, как если бы ошибка не допускала восстановления работоспособности.
10. Если ошибка не допускает восстановления работоспособности, обращение к какой-либо подпрограмме не имеет смысла.
11. Система или пользователь должны выбрать одно из четырех:
· Вызвать завершение программы;
· Воспринять плохие данные;
· Повторить процедуру, которая вызвала ошибку;
· Пропустить эти данные и перейти к следующим;
12. Если ошибка была устранена, то сопрцессору необходимо повторить выполняемую им операцию, которая привела к ошибке.
Алгоритм работы разрабатываемого блока.
(По заданию: алгоритм запуска СПВВ в работу).
1) Подготовительный этап:
1.1) Процессор микропрограммно устанавливает значения команды В/В
и номер переферийного устройства в регистрах КВВ и НПУ соответственно
1.2) Устанавливается сигнал 'Начать' который аналогичен сигналу
прерывания для УУ канала
1.3) УУ канала анализирует текущее состояние и содержимое Рг. КВВ и НПУ
и устанавливает необходимые флаги в слове состояния процессора ССП.
На этом подготовительный этап работы заканчивается
2) При получении команды 'Начать в/в' и отсутствия выполнения другой
команды УУ переходит к выполнению канальной программы, для этого оно:
2.1) Транслирует Рг. НПУ в Рг. НПУУ и обеспечивает взаимодействие с
требуемым ПУ.
2.2) Выставляет на внутреннюю шину ABUS адрес адресного слова канала - константу.
2.3) Производит чтение из ОП адресной части адресного слова канала в блок АУСК ( адреса управляющего слова канала ).
2.4) Далее производится выборка УСК ( управляющего слова канала)
в Рг. ПУСК ( предварительного управляющего слова канала ) и занесение
адреса УСК в Рг. ССК.
2.5) Загрузка УСК из Рг. ПУСК в Рг. КОУ ( кода операции и управляющих
флагов) и блоки Сч. Д ( счетчика данных ) и ТАД ( текущего адреса данных).
2.6а) На основе анализа команды производится управление блоком АУСК
в соответствии с которым производится наращивание адреса или замена
его на адресную часть УСК ( при переходах в канальной программе ).
2.6б) Выполняются прочие действия по передачи данных с ПУ; анализу Сч. Б
( счетчика байт ); обмена с ОП данными посредством Рг. Д ( регистра данных ) и
блоком интерфейса с ОП;предварительного чтения УСК из ОП по условиям
готовности адреса УСК и Сч. Б = 0 или Сч. Д = 0; управление блоками
Сч. Д и ТАД на основе флага НП; и прочее
2.7) Окончание выполнения канальной программы производится при
1. Сбоях ПУ и канала
2. Предано менее указанного количества байт и снят флаг УБ
3. Выполнена последняя команда в канальной программе
4. Канал получил команду 'Остановить в/в'
При этом генерируется запрос на прерывание от канала.
Запрос на прерывание вызывает также окончание выполнения команды с установленным флагом ПР.
2.8) После выполнения канальной программы УУ переходит в состояние
ожидания сигнала 'Начать' т. е. допустимо выполнение пустого цикла.







