|
Рис. 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. В случае равенства разрядов приоритета у обоих каналов они работают попеременно под управлением общего УУ.
8.3. Система команд процессора ввода-вывода
Система команд, используемых для написания программ канала, включает 53 команды, которые предназначены специально для повышения эффективности ввода-вывода данных. На рис. 8.7 приведен формат типичной команды ПВВ. Команды имеют длину от 2 до 6 байт. Первые два байта присутствуют в любой команде и обычно имеют поля, показанные на рис. 8.7.

Рис. 8.7. Обобщенный формат команд сопроцессора ввода - вывода
Поле R/В/Р - регистр/бит/указатель - позволяет кодировать либо регистр, либо разряд, либо регистр-указатель в зависимости от конкретной команды, как показано в табл. 8.6.
Таблица 8.6
Код в поле | Регистр | Разряд | Регистр- |
000 | GA | 0 | GA |
001 | GB | 1 | GB |
010 | GC | 2 | GC |
011 | ВС | 3 | - |
100 | ТР | 4 | ТР |
101 | IX | 5 | - |
110 | СС | 6 | - |
111 | МС | 7 | - |
Поле WB показывает, сколько байтов смещения/данных (рис. 3.24) присутствует в команде, как показано в табл. 8.7.
Байты смещения используются для передачи управления: байт для коротких передач, в пределах от + 127 до - 128, и 2 байт - для передач в пределах 64К. Байты данных применяются в командах, оперирующих с непосредственными данными (константами).
Таблица 8.7
Код в поле WB | Интерпретация |
00 | Нет байтов смещения/данных |
01 | 1 байт смещения/данных |
10 | 2 байт смещения/данных |
11 | Только в команде TSL |
Поле АА задает режим адресации, который должен быть использован ПВВ при вычислении исполнительного адреса операнда. Всего имеется четыре режима адресации, выисление исполнительного адреса при каждом из них показано на рис. 8.9.
Поле w используется, как обычно, для указания размерности операнда, с которым оперирует команда. Код операции, в сочетании с полем w, идентифицирует команду, например, (КОП) = 111011 обозначает операцию «декремент», при w=0 - она соответствует мнемокоду DECB, а при w=1 - мнемокоду DEC.
Поле ММ показывает, какой регистр используется в качестве базового при формировании исполнительного адреса ЕА. Кодирование поля ММ показано на рис. 8.9.
Систему команд ПВВ удобно разбить на пять групп: команды пересылки данных; арифметические команды; логические команды и команды обработки отдельных разрядов; команды передачи управления; команды управления сопроцессором.

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

Рис. 8.10. Форматы операндов в команде MOV
Команда MOV пересылает байт или слово из источника в приемник: память - регистр, регистр - память, память - память (отметим, что нет пересылки типа регистр - регистр). Имеется четыре мнемокода команды: MOV - переслать слово, MOVB - переслать байт, MOVI - переслать 16-разрядную константу (данные, представленные непосредственно в команде), MOVBI - переслать 8-разрядную константу. На рис. 8.10 показано, как эти команды воздействуют на операнды, содержащиеся в регистрах: Т - разряд пересылается в операнд-приемник; R - разряд замещается операндом-источником; S - разряд является знаковым расширением старшего переданного разряда; Х - разряд игнорируется.
Следует подчеркнуть, что когда в качестве приемника назначается регистр-указатель, например MOVI GB,27F0h его разряд-этикетка TAG устанавливается в «1». Поэтому команда MOV используется для загрузки адресов, относящихся к пространству ввода - вывода.
Команда MOVP - переслать указатель - пересылает 20-разрядный физический адрес между регистром-указателем и памятью. Если источником является регистр-указатель, то его содержимое и разряд-этикетка преобразуется в указатель физического адреса.
|
Рис. 8.11. Примеры преобразования содержимого регистра-указателя в указатель адреса
На рис. 8.11,а показано размещение значения указаF3h в памяти по адресу 100h.
Если источником является память, то три байт памяти преобразуются в 20-разрядный физический адрес и значение этикетки TAG загружается в регистр-указатель и его разряд-этикетку. Эта команда обычно используется для сохранения и восстановления содержимого регистров-указателей.
Команда LPD загрузить указатель двойным словом - преобразует двойное слово указателя в 20-разрядный физический адрес и загружает его в регистр-указатель. На рис. 8.11,б показано хранение указателя в памяти по адресу 200h, которому соответствует базовый адрес 3B4Ch и смещение 65h.
Этикетка регистра-указателя всегда сбрасывается в «0», указывая на адрес в системном пространстве. Имеется разновидность команды LPDI - загрузка указаразрядной константой. Таким образом, центральный процессор может передать в ПВВ любой адрес из своего пространства памяти в форме указателя (база, смещение), длина которого составляет двойное слово. Программа канала, используя команду LPD, может загрузить этот адрес в свой регистр-указатель.
Арифметические команды. Интерпретируют все операнды как двоичные числа без знака, имеющие длину 8, 16 или 20 разрядов. Числа со знаком могут быть представлены в дополнительном коде, однако ПВВ не фиксирует переполнения в знаковый (старший) разряд. Он выполняет арифметические операции над 20-разрядными числами следующим образом. Операнды, имеющие длину 8 и 16 разрядов, дополняются расширением знака (т. е. старшего разряда) до 20 разрядов, как было описано ранее. Затем выполняется операция, и 20-разрядный результат возвращается в операнд-приемник, при этом старшие разряды усекаются так, чтобы длина результата соответствовала числу разрядов приемника. На рис. 8.12, а показано, как арифметические команды влияют на содержимое регистров, указанных в качестве операндов-источников и операндов-приемников.

Рис. 8.12. Форматы операндов в арифметических (а) и логических (б)
командах
Команда ADD суммирует операнды источника и приемника: память+ регистр=память, регистр+память=регистр. Существуют четыре мнемокода команды сложить: ADD - сложение слов, ADDB - сложение байтов, ADDI - сложение с 16-разрядной константой, ADDBI - сложение с 8-разрядной константой.
Команда INC увеличивает на «1» содержимое указанного в ней регистра или слова памяти. Команда INCB увеличивает на «1» байт памяти.
Команда DEC уменьшает на «1» содержимое указанного в ней регистра или слова памяти. Команда DECB уменьшает на «1» байт памяти.
Логические команды и команды обработки разрядов. Первые реализуют булевские операции И, ИЛИ, НЕ и позволяют установить в «1» или сбросить в «0» произвольный разряд в байте, расположенном в регистре или памяти. Как показано на рис. 8.12, б, в результате выполнения логических операций четыре старших разряда 20-разрядного регистра-приемника остаются неопределенными. Отметим также, что если регистр является приемником при операциях над байтами, то значения разрядов заполняются значением старшего седьмого разряда результата.
Команда AND выполняет поразрядное логическое умножение операндов источника и приемника, размещая результат на место приемника. Имеются следующие команды логического умножения: AND - логическое И для слов; ANDB - логическое И для байтов; ANDI - логическое И с 16-разрядной константой; ANDBI - логическое И с 8-разрядной константой.
Команда OR выполняет поразрядное логическое сложение операндов источника и приемника, размещая результат на место операнда приемника. Имеется четыре типа команды логического сложения: OR - логическое ИЛИ для слов; ORB - логическое ИЛИ для байтов; ОК1 - логическое ИЛИ с 16-разрядной константой; ORBI - логическое ИЛИ с 8-разрядной константой.
Команда NOT инвертирует все разряды в операнде. В командах может быть указан либо один, либо два операнда. Если указан единственный операнд, то инвертированный результат размещается на месте этого операнда в памяти или регистре. Если указаны два операнда, то инвертируемые разряды источника пересылаются на место приемника (который должен быть регистром), а источник сохраняет первоначальное значение. Для байтов и слов имеются отдельные мнемокоды: NOT - логическое НЕ слова; NOTB - логическое НЕ байта. Напомним, что команда NOT в сочетании со следующей за ней командой INC позволяет получить двоичный дополнительный код отрицательного числа.
Команды установки разрядов SETB и сброса CLR имеют формат вида: SETB-приемник, номер разряда и CLR-приемник, номер разряда. Номер разряда от 0 до 7, указанный в этих командах, устанавливается в «1> или «0» соответственно.
Команды передачи управления. Служат для изменения значения указателя задания TP путем прибавления к его содержимому смещения со знаком. Величина смещения содержится в команде передачи управления и ее длина может равняться 8 или 16 разрядам. Так 8-разрядное смещение обеспечивает передачу управления в пределах от -128 до + 127 байт, а 16-разрядное - в пределах от - 32768 до +32767 байт. Команда с 8-разрядным смещением называется короткой, а команда с 16-разрядным смещением называется длинной командой перехода и ее мнемокод начинается с буквы L. Ниже приведены все команды передачи управления:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |




