AB

 

CB

К интерфейсу ПУ

с DB от проц с DB от проц

 

Регистр КВВ

 

Регистр НАП

 

Сч Б

 

Регистр СИ

 
W/R

 

Память подканалов

Регистр АУСК

Счетчик Данных

Регистр ТАД

Регистр СИ

Счетчик Байтов

Регистр КОУ

 

УУ

 
В РКУ

(ССП)

Z OV

 

INTA

 

Регистр КОУ

 
C

 

OE

 

Блок счетчика данных

 

Блок текущего адреса данных

 

Блок АУСК

 
C C C

 

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) После выполнения канальной программы УУ переходит в состояние

ожидания сигнала 'Начать' т. е. допустимо выполнение пустого цикла.