Устройство управления вводом — выводом управляет действиями канала во время ПДП- пересылки. При выполнении синхронной пересылки оно ожидает поступления сигнала синхронизации на входе DRQ, прежде чем выполнить очередной цикл чтения — записи. Когда ПДП- пересылка должна заканчиваться по внешнему сигналу, устройство следит за его появлением на входе EXT. Между циклами чтения и записи (пока данные находятся в СПВБ) канал может производить подсчёт числа переданных данных, перекодировать их и сравнить с заданным кодом. Основываясь на результатах этих действий, УУ вводом — выводом может прекратить ПДП- пересылку.
В процессе выполнения программы по команде SINTR устройство генерирует запрос прерывания в ЦП. Часто запрос используется для того, чтобы сообщить ЦП о завершении программы канала.
Регистры канала используются СПВБ как при ПДП- пересылках, так и при выполнении программы. Все регистры канала (рис. 6), за исключением TAG, непосредственно принимают участие в указанных процессах. Использование каждого регистра описано в табл. 4.
Таблица 4
Регистр | Использование | |
в программе | при ПДП-пересылке | |
GA | Обоего назначения | Указатель источника |
или базовый | или приемника | |
GB | То же | Указатель приемника |
или источника | ||
GC | >> | Указатель таблицы |
перекодировки | ||
TP | Указатель команд | Указатель причины |
окончания | ||
РР | Базовый | Не используется |
IX | Общего назначения | То же |
или индексный | ||
ВС | Общего назначения | Счетчик байтов |
МС | Общего назначения | Участвует в маски- |
или маскированного | рованном сравнении | |
сравнения | ||
СС | Ограниченного | Определяет условия |
использования | пересылки |
Регистр общего назначения GA служит в большинстве команд в качестве операнда. В качестве базового он используется для указания адреса операнда, находящегося в памяти. Перед началом ПДП- пересылок программа канала загружает в GA адрес источника или приемника данных.
Регистр общего назначения GB функционально взаимозаменяем с регистром GA. Если GA загружен адресом источника ПДП- пересылки, то GB должен быть загружен адресом приёмника, и наоборот.
Регистр общего назначения GC используется программой канала как операнд или базовый регистр. Используется при выполнении ПДП - пересылок, когда осуществляется перекодировка данных. В этом случае, перед началом пересылки, программа канала загружает в GC начальный адрес таблицы перекодировки. В процессе пересылки его содержимое не изменяется.
Указатель команд ТР загружается начальным адресом программы в процессе инициализации канала общим УУ на выполнение задания. Во время выполнения программы (задания от ЦП) ТР играет роль счетчика команд. Так как ВМ89 не содержит указателя стека и не может выполнять стековых операций, возврат из программы осуществляется путём загрузки в TP адреса возврата, который запоминается в памяти по команде CALL. Указатель задания является полностью программно-доступным (в отличие от регистра IP в ВМ86) и может использоваться программой как регистр общего назначения или базовый.
|
Однако делать это не рекомендуется, так как программа становится трудной для понимания.
Указатель блока параметров РР загружается общим УУ начальным адресом блока параметров в процессе инициализации канала на выполнение задания. В подготовленном сообщении расположение блока параметров в памяти определяет центральный процессор (см. табл. 4). Программа канала не может изменить содержимое регистра PP. Его удобно использовать как базовый для пересылки данных в блок параметров. Для ПДП- пересылок регистр РР не используется.
Индексный регистр IX используется программой канала как регистр общего назначения. Он может также использоваться в качестве индексного регистра для адресации операндов, находящихся в памяти. В качестве разновидности индексной адресации, с помощью IX можно задать индексную адресацию с автоинкрементном, которая очень удобна при обработке массивов данных. Для ПДП - пересылок регистр IX не используется.
Счетчик байтов ВС в программе канала служит регистром общего назначения. При ПДП- пересылке подсчитывает число пересланных байтов путём декрементирования значения, загруженного перед ее началом. Если пересылка должна заканчиваться по заданному числу пересланных байтов, то УУ вводом — выводом закончит её, когда содержимое ВС станет равным нулю.
Регистр маскированного сравнения МС в программе канала может использоваться как регистр общего назначения или для маскированного сравнения. При ПДП- пересылке используется для маскированного сравнения. Маскированное сравнение позволяет сравнить выделенные разряды байта (операнда команды или пересылаемого байта) с заданным заранее значением. Для этого в старший байт МС загружается маска, выделяющая интересующие разряды, а в младший—сравниваемое значение (рис. 7). В программе, при выполнении команды условного перехода по маскированному сравнению (либо при ПДП- пересылке), определенный в ней операнд (либо пересылаемый байт) сравнивается с замаскированным значением.
Регистр управления каналом СС используется в основном при ПДП- пересылках. Он служит для определения условий пересылки и указывает способ её окончания. Структура и обозначение управляющих полей СС представлены на рис. 8. Пять старших полей определяют условие ПДП- пересылки:
F (пересылка) определяет, откуда и куда пересылаются данные;
TR (перекодировка) — следует ли пересылаемые данные перекодировать;
SYN (синхронизация) — способ синхронизации пересылки;
S (источник) — в каком регистре (GA или GB) находится адрес источника;
L (монополизация) — следует ли активизировать сигнал во время пересылки.
Четыре младших поля задают способ окончания пересылки:
TS указывает, что пересылка состоит в передаче только одного данного;
ТХ—что пересылка должна заканчиваться по внешнему сигналу (ЕХТ);
ТВС — по нулю в счетчике байтов (ВС);
TMC — по результатам маскированного сравнения.
Управляющее поле | Код поля | Условие ПДП-пересылки |
F (функция | 00 | Из порта ввода в порт вывода |
пересылки) | 01 | Из памяти в порт вывода |
10 | Из порта ввода в память | |
11 | Из памяти в память | |
TR (перекодировка) | 0 | Нет перекодировки |
1 | Есть перекодировка | |
SYN (синхронизация) | 00 | Пересылка асинхронная |
01 | Синхронизация от источника ка | |
10 | Синхронизация от приемника | |
11 | Зарезервированный код | |
S (источник) | 0 | Адрес источника в регистре GA |
1 | Адрес источника в регистре 0В | |
L(монополизация) | 0 | Сигнал LOCK не активен |
1 | Сигнал LOCK активен | |
С (приоритет | 0 | Обычный приоритет программы |
программы) | 1 | Повышенный приоритет программы |
TS ( одиночная | 0 | Пересылка не одиночная |
пересылка) | 1 | Пересылка одного данного |
ТХ (окончание по | 00 | Не внешнее окончание |
внешнему сигналу) | 01 | По сигналу ЕХТ со смещением 0 |
10 | По сигналу ЕХТ со смещением 4 | |
11 | По сигналу ЕХТ со смещением 8 | |
ТВС (окончание по | 00 | Окончание не по нулю в счетчике |
нулю в счетчике) | 01 | Окончание по (ВС)=0 со смещением 0 |
10 | Окончание по (ВС)=0 со смещением 4 | |
11 | Окончание по (ВС)=0 со смещением 8 | |
ТМС ( окончание по | 000 | Не по результатам маскированного |
результатам маски- | сравнения | |
рованного сравне- | 001 | По совпадению со смещением 0 |
ния) | 010 | По совпадению со смещением 4 |
oil | По совпадению со смещением 8 | |
100 | Не по результатам маскированного | |
сравнения | ||
101 | По несовпадению со ещением 0 | |
110 | По несовпадению со смещением 4 | |
III | По несовпадению со смещением 8 |
Кодирование полей ТХ, ТВС и ТМС позволяет выбрать смещение 0, 4 или 8 по окончанию ПДП-пересылки. Выбранное значение добавляется к содержимому счетчика команд ТР и определяет три различных точки программы, в которые передается управление после окончания пересылки (рис.9). Окончание по одиночной пересылке TS == 1 всегда приводит к нулевому смещению.