Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВЫЧИСЛИТЕЛЬНЫЕ МАШИНЫ, СИСТЕМЫ И СЕТИ.doc
Скачиваний:
32
Добавлен:
06.11.2018
Размер:
2.94 Mб
Скачать

8.2. Программная модель процессора ввода-вывода

Как известно, к программной модели любого процессора относят те узлы, которые доступны для использования из программы. В первую очередь такими узлами являются регистры.

Регистры канала. На рис. 8.3 представлены программно доступные регистры канала и указано их стандартное назначение. Использование каждого из этих регистров при выполнении каналом программы или пересылок в режиме ПДП указано в табл. 8.1.

Регистры GA, GB и GC могут использоваться программой в качестве регистров общего назначения или регистров базы. При организации ПДП до начала пересылки регистр GA (GB) должен быть загружен адресом источника или приемника данных. Регистры GA и GB функционально взаимозаменяемы. Если при ПДП регистр GA указывает на источник, то регистр GB указывает на приемник и наоборот. Регистр GC при ПДП применяется в том случае, когда пересылаемая информация должна быть перекодирована. Для этого регистр GC до начала пересылки должен быть загружен начальным адресом таблицы перекодировки.

Рис. 8.3. Регистры канала процессора ввода-вывода

Указатель задания ТР играет ту же роль, что и указатель команд IP в центральном процессоре. Первоначально указатель задания ТР загружается при начальной инициализации ПВВ. Далее, во время выполнения программы, значение ТР автоматически изменяется для указания на следующую команду, которая должна быть выполнена. Указатель задания является полностью программно доступным, однако, использовать его, например, в качестве РОН или регистра базы не рекомендуется, поскольку это нарушит требуемую последовательность выполнения команд.

Указатель параметров РР загружается начальным адресом блока параметров, прежде чем начнет работу программа канала. Это происходит во время инициализации процессора. Программа канала не может изменять содержимое этого регистра, однако его применяют в качестве базового регистра для доступа к данным, содержащимся в блоке параметров. В режиме ПДП регистр РР не используется.

Индексный регистр IX может быть использован в качестве РОН при работе программы канала. Кроме того, его удобно использовать как индексный регистр для адресации операндов, расположенных в памяти. Регистр IX может быть, при желании, автоматически инкрементирован в конце выполнения каждой команды, что является удобным средством пошаговой обработки массивов (или строк). При ПДП индексный регистр не используется.

Таблица 8.1

Регистр

Использование регистра

В программе канала

При пересылке с ПДП

GA

РОН либо базовый регистр

Указатель источника/приемника

GB

РОН либо базовый регистр

Указатель приемник/источник

GC

РОН либо базовый регистр

Указатель таблицы перекодировки

ТР

Указатель задания

Указывает причину окончания

РР

Базовый

Не используется

IX

РОН с автоинкрементом

Не используется

ВС

РОН

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

МС

РОН

Регистр сравнения с маскированием

СС

Не используется

Задает вид обработки

Счетчик байтов ВС во время работы программы канала используется как РОН. В режиме ПДП его применяют как счетчик числа переданных байтов данных. Для этого до начала пересылки в регистр ВС необходимо загрузить количество байтов, которое необходимо переслать. Во время выполнения пересылки содержимое регистра ВС декрементируется при пересылке каждого байта независимо от того, было указано на остановку при передачи определенного количества байтов или нет. Когда содержимое регистра ВС станет равным нулю, пересылка прекращается только в том случае, если было дано указание на остановку по нулевому отсчету. Если такого указания не было, то следующим значением регистра ВС будет значение 0FFFFh и декрементирование продолжится.

Рис. 8.4. Пример выполнения операции сравнения с маскированием

Регистр маскирования/сравнения МС может быть использован как РОН. Кроме того, этот регистр может быть использован программой канала или во время пересылок с прямым доступом к памяти для выполнения сравнений с одновременным маскированием однобайтовых величин. Для такого использования регистра МС программа канала загружает число, с которым будет производиться сравнение, в младший байт регистра, а маску - в старший байт. Значение «0» в маске исключает соответствующий разряд загруженного числа и он не влияет на результат сравнения (рис. 8.4).

Регистр СС служит для управления каналом. Перед началом работы программа канала загружает этот регистр необходимыми значениями в соответствии с управляющими полями, представленными на рис. 8.5. Все указанные поля, за исключением разряда 8 (поле С), служат для управления каналом при пересылках с ПДП. Поле С - разряд непрерывности, относится к выполнению программы. Если этот разряд сброшен в нуль (С=0), то программа канала выполняется с нормальным приоритетом, если он установлен в единицу, то приоритет программы поднимается до уровня приоритета пересылок с прямым доступом к памяти.

Рис. 8.5. Структура регистра управления каналом

Хотя программа канала может использовать регистр СС в качестве РОН, такое использование не рекомендуется, поскольку оно может повлиять на состояние разряда непрерывности и изменить приоритет программы канала. Поэтому использование регистра СС программой обычно ограничивается загрузкой управляющих значений при подготовке пересылок с ПДП, а также установкой и сбросом разряда непрерывности.

Назначение полей регистра СС.

Поле функции F определяет источник и приемник данных при ПДП как память или устройства ввода-вывода (порты) в соответствии с табл. 8.2. Во время выполнения пересылки канал декрементирует регистры указателей адресов источника (приемника), относящиеся к памяти, для того, чтобы данные помещались в последовательные ячейки. Указатели, относящиеся к устройствам ввода-вывода, остаются без изменения во время ПДП.

Таблица 8.2

Поле F

Функция

Поле SYN

Синхронизация

00

Порт – Порт

00

Асинхронно

01

Память – Порт

01

От источника

10

Порт – Память

10

От приемника

11

Память - Память

11

Не используется

Разряд перекодировки ТL управляет перекодировкой данных. Если значение TL=1, то каждый передаваемый байт перекодируется с помощью таблицы, начальный адрес которой указан в регистре GC. Значение TL=0 соответствует пересылке без перекодировки. Важно отметить, что перекодировка определена только для пересылок байтов, т. е. логическая ширина шины приемника должна составлять 8 разрядов.

Поле синхронизации SYN указывает, что синхронизируется пересылка в соответствии с табл. 8.2. Асинхронные пересылки обычно используются при пересылках память - память. Синхронизация от источника выбирается обычно в тех случаях, когда источником является ВУ, а приемником - память. Внешнее устройство начинает очередной цикл пересылки, подавая сигнал на вход РЩ канала. Тогда канал выполняет один цикл пересылки и вновь ожидает сигнал DRQ. Синхронизация от приемника чаще всего осуществляется тогда, когда источником является память, а приемником - ВУ. Как и в предыдущем случае, ВУ управляет частотой пересылок с помощью сигнала DRQ, подавая его, когда оно готово к получению очередного байта или слова.

Разряд S определяет, какой из регистров GA или GB содержит адрес источника данных при ПДП. Значение S=O соответствует случаю, когда GA указывает на источник; S=1, когда GB указывает на источник.

Разряд L управляет выдачей сигнала LOCK (блокировка шин) во время ПДП. При L=0 сигнал LOCK не выдается, при L=1 устанавливается активный сигнал LOCK=0. Если пересылка синхронизируется от источника, то сигнал LOCK находится в активном состоянии с момента получения первого запроса ПДП (сигнал DRQ) и до тех пор, пока канал не приступит к выполнению программы завершения пересылок. Если пересылка синхронизируется от приемника, то сигнал LOCK будет находиться в активном состоянии от момента первого считывания (который предшествует первому запросу ПДП) и до тех пор, пока канал не перейдет к выполнению завершающей программы.

Разряд непрерывности С не используется при пересылках. Как отмечалось выше, установка этого разряда в «1» повышает приоритет программы канала до уровня ПДП.

Разряд остановки по передаче одного символа TS используется для указания каналу на выполнение всего одного цикла пересылки. Когда значение TS=1, то после пересылки одного байта (или слова) сразу возобновляется программа канала, причем все другие условия окончания, которые задаются следующими тремя полями (ТХ, ТВС и ТМС), в этом случае игнорируются.

Таблица 8.3

Поле TX

Окончание по EXT

Поле TBC

Окончание по BC = 0

00

Нет

00

Нет

01

Со смещением 0

01

Со смещением 0

10

Со смещением 4

10

Со смещением 4

11

Со смещением 8

11

Со смещением 8

Три младших поля регистра управления ТХ, ТВС и ТМС указывают каналу условие окончания пересылки: ТХ - по внешнему сигналу, ТВС - по счетчику байтов и ТМС - по сравнению с маскированием. Эти условия могут быть указаны по отдельности или в любых комбинациях. Внешнее окончание позволяет устройству ввода - вывода (обычно тому, которое синхронизирует пересылку) прекратить пересылку, подавая сигнал на вход ЕХТ (внешняя остановка) канала. Если выбрано окончание по счетчику байтов, то канал остановится, когда ВС=0.

Если указано окончание по сравнению с маскированием, то канал остановится, обнаружив байт, равный или не равный (возможны два варианта) младшему байту регистра МС, на который наложена маска, содержащаяся в старшем байте. Байт, останавливающий пересылку, тоже пересылается.

После окончания пересылки с ПДП канал прибавляет величину, называемую смещением окончания, к содержимому указателя заданий ТР и возобновляет выполнение программы канала с этой точки. Смещение окончания может принимать значения 0, 4 или 8. Окончание однократной пересылки (по TS = 1) всегда приводит к смещению окончания, равному нулю. Кодирование полей управления окончанием приведено в табл. 8.3 - 8.4.

Таблица 8.4

Поле TМС

Окончание по маскированному сравнению

Поле TМC

Окончание по маскированному сравнению

000

Нет

100

Нет

011

По совпадению, смещение 0

101

По несовпадению, смещение 0

010

По совпадению, смещение 4

110

По несовпадению, смещение 4

011

По совпадению, смещение 8

111

По несовпадению, смещение 8

Поскольку допускается совместное использование различных условий окончания, то возможно, что два или даже три условия окончания будут выполнены одновременно. В таком случае каналом будет автоматически выбрано окончание по условию, имеющему наибольшую величину смещения.

Кроме перечисленных выше регистров в каждом канале имеется регистр, который содержит слово-состояние программы PSW (рис. 8.6, а). Программа канала не имеет доступа к PSW.

Слово-состояние программы хранит состояние канала с тем, чтобы его работа могла быть приостановлена и позже возобновлена. Когда ЦП выдает команду приостановить работу канала, канал сохраняет содержимое PSW, указатель задания ТР и разряд-этикетку TAG указателя задания в первых четырех байтах блока параметров канала, как показано на рис. 8.6, б. Получив в дальнейшем команду возобновить работу канала, канал восстанавливает содержимое регистра PSW, регистра ТР и разряда-этикетки TAG из блока параметров и возобновляет свою работу.

Рис. 8.6. Структура слова-состояния PSW (а) и размещения информации в памяти по команде приостановить работу канала (б)

Разряды-этикетки TAG (см. рис. 8.3) связаны с каждым из четырех регистров GA, GB, GC и ТР. Напомним, что все пространство адресов удобно рассматривать как совокупность системного пространства (1М байт) и пространства ввода-вывода (64К байт). Поскольку регистры GA, GB, GC и ТР могут использоваться в качестве указателей и базовых регистров, то связанный с каждым из них разряд-этикетка TAG определяет, указывает ли регистр на адрес в системном пространстве (TAG=O) или в пространстве ввода-вывода (TAG=1). Общее УУ устанавливает или сбрасывает этикетку регистра ТР в зависимости от того, в каком пространстве записана программа канала. Программа канала изменяет состояния разрядов-этикеток регистров GA, GB, GC, используя различные команды загрузки регистров (подробно они описаны ниже). Команда загрузка указателя сбрасывает разряд-этикетку, а команда пересылка устанавливает разряд-этикетку. Когда разряд-этикетка указывает на системное пространство, то используются все 20 разрядов ША, что позволяет прямо адресоваться к 1М байт памяти. Если разряд-этикетка указывает на пространство ввода-вывода, то состояние четырех старших разрядов ША не определено, а 16 младших разрядов обеспечивают доступ к любому адресу в пределах 64К байт.

Таблица 8.5

Действия канала

Приоритет

Пересылка с ПДП

1 (высший)

Программа завершения пересылки с ПДП

1

Программа канала (непрерывная)

1

Программа ответа на запрос готовности

2

Программа канала

3

Пассивное состояние

4

Для организации совместной работы каналов ПВВ имеет встроенный механизм приоритетов. Этот механизм учитывает, что некоторые виды работ (например, прямой доступ к памяти) более важны, чем другие. Каждый вид действий, выполняемых каналом, имеет приоритет, отражающий его относительную важность (табл. 8.5). После окончания каждого внутреннего цикла работы сопроцессора общее УУ позволяет либо одному, либо другому каналу выполнять очередной внутренний цикл в соответствии с этими приоритетами. Когда пересылка с ПДП заканчивается, канал выполняет короткую внутреннюю программу завершения пересылки с ПДП. Она изменяет содержимое регистра ТР так, чтобы программа канала (пользователя) возобновила работу с команды, указанной при запуске пересылки с ПДП. Аналогично, при подтверждении запроса готовности канал выполняет внутреннюю программу, которая формирует ответ на запрос. Обе эти программы состоят из стандартных команд ПВВ, которые считываются из внутреннего ПЗУ.

Напомним, что программа канала может работать с приоритетом 3 или с приоритетом 1. Приоритет программы канала задается разрядом непрерывности С в регистре управления каналом СС. Если разряд С=0, то программа работает с нормальным приоритетом 3, а если С=1, то программа называется непрерывной и работает с тем же приоритетом, что и пересылка с ПДП. Таким образом, разряд непрерывности позволяет поднять приоритет тех программ (или отдельных частей программы) канала, которые критичны по времени выполнения.

Общее УУ позволяет работать каналу с более высоким приоритетом, а в тех случаях, когда приоритеты одинаковы, оно сравнивает разряды приоритета в слове-состояния программы PSW. Если значения этих разрядов не равны, то работает канал с P= l. В случае равенства разрядов приоритета у обоих каналов они работают попеременно под управлением общего УУ.