Система команд процессора ввода-вывода


Система команд, используемых для написания программ канала, включает 53 команды, которые предназначены специально для повышения эффективности ввода-вывода данных. На рис. 8.7 приведен формат типичной команды ПВВ. Команды имеют длину от 2 до 6 байт. Первые два байта присутствуют в любой команде и обычно имеют поля, показанные на рис. 8.7.

Рис. 8.7. Обобщенный формат команд сопроцессора ввода - вывода

 

Поле R/В/Р - регистр/бит/указатель - позволяет кодировать либо регистр, либо разряд, либо регистр-указатель в зависимости от конкретной команды, как показано в табл. 8.6.

Таблица 8.6

Код в поле R/B/P Регистр Разряд Регистр- указатель
GA GA
GB GB
GC GC
ВС -
ТР ТР
IX -
СС -
МС 7 -

 

Поле WB показывает, сколько байтов смещения/данных (рис. 3.24) присутствует в команде, как показано в табл. 8.7.

Байты смещения используются для передачи управления: байт для коротких передач, в пределах от + 127 до - 128, и 2 байт - для передач в пределах 64К. Байты данных применяются в командах, оперирующих с непосредственными данными (константами).

 

Таблица 8.7

 

Код в поле WB Интерпретация
Нет байтов смещения/данных
1 байт смещения/данных
2 байт смещения/данных
Только в команде 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,а показано размещение значения указателя 265F3h в памяти по адресу 100h.

Если источником является память, то три байт памяти преобразуются в 20-разрядный физический адрес и значение этикетки TAG загружается в регистр-указатель и его разряд-этикетку. Эта команда обычно используется для сохранения и восстановления содержимого регистров-указателей.

Команда LPD загрузить указатель двойным словом - преобразует двойное слово указателя в 20-разрядный физический адрес и загружает его в регистр-указатель. На рис. 8.11,б показано хранение указателя в памяти по адресу 200h, которому соответствует базовый адрес 3B4Ch и смещение 65h.

Этикетка регистра-указателя всегда сбрасывается в «0», указывая на адрес в системном пространстве. Имеется разновидность команды LPDI - загрузка указателя 32-разрядной константой. Таким образом, центральный процессор может передать в ПВВ любой адрес из своего пространства памяти в форме указателя (база, смещение), длина которого составляет двойное слово. Программа канала, используя команду 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-разрядного регистра-приемника остаются неопределенными. Отметим также, что если регистр является приемником при операциях над байтами, то значения разрядов 8 - 15 заполняются значением старшего седьмого разряда результата.

Команда 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. Ниже приведены все команды передачи управления:

 

JMP/LJMP label - безусловный переход

CALL/LCALL addr ret, label - вызов подпрограммы
JZ/LJZ src, 1аbе1 - переход по нулю слова

JZB/LJZB src, label - переход по нулю байта

JNZ/LJNZ src, label - переход по не нулю слова

JNZB/LJNZB src, label - переход по не нулю байта

JMCE/LJMCE src, label - переход по равно при сравнении

JMCNE/LJMCNE src, label - переход по не равно при сравнении

JBT/LJBT src, bit, label - переход по равенству разряда «1»
JNBT/LJNBT src, bit,1аbе1 - переход по равенству разряда «0»

 

Команда JMP (LJMP) вызывает безусловный переход по указанному адресу.

Команда САLL (LCALL) служит для перехода на подпрограмму с одновременным сохранением текущего значения регистра TP по указанному в команде адресу сохранения. Для возврата из подпрограммы в ней может быть использована команда MOVP TP,addr, возвращающая в регистр TP сохраненное ранее значение. Следует отметить, что средства разработки программ в ПВВ менее гибкие, чем в центральном процессоре. Основное отличие состоит в том, что ПВВ не имеет встроенного стекового механизма. Программы ПВВ могут реализовать стек, используя базовый регистр в качестве указателя стека. С другой стороны, поскольку работа программы канала не подвержена прерываниям, для большинства программ канала стек не требуется.

Команды условных переходов вызывают передачу управления по указанному в них адресу, если для операнда источника выполняется указанное условие, в противном случае выполняется следующая команда. В качестве источника может использоваться как память, так и регистр. Если операндом-источником является регистр, то опрашиваются только 16 младших разрядов, а старшие 4 разряда игнорируются. Для опроса младшего байта регистра следует обнулить разряды с 8-ro по 15-й, а затем использовать команду, предназначенную для слов. Отметим, что команды JMCE/LJMCE и JMCNE/LJMCNE требуют предварительной загрузки регистра МС сравниваемым числом и маской (см. рис. 8.4).

Команды управления процессором ввод-вывода.Позволяют программам каналов управлять ПВВ с помощью сигналов LOCK, SINTRl, SINTR2, задавать требуемую ширину шин и активизировать пересылки с ПДП.

Команда TSL addr, data, label - опрос и установка с монополизацией, используется для организации доступа к общей базе данных в многопроцессорных системах. Значение addr указывает адрес ячейки памяти, выполняющей функции семафора, значение data соответствует константе, запрещающей доступ к общей базе данных, а значение label указывает адрес перехода в случае, когда доступ запрещен. Операции, выполняемые по команде TSL, проиллюстрированы на рис. 8.13.

Если значение label совпадает с адресом команды TSL, то она выполняется циклически до тех пор, пока содержимое ячейки памяти с адресом addr не станет равным нулю. Таким образом, программа канала будет ожидать разрешения доступа к общей базе данных.

Команда WID - установка ширины логической шины, изменяет состояние нулевого и первого разрядов в слове-состоянии программы PSW. Она задает ширину логических шин для пересылки с ПДП. Формат команды следующий: WID - ширина шины источника, ширина шины приемника, где операнды могут указывать как 8, так и 16 разрядов. Единственное ограничение состоит в том, что логическая ширина шины не может превосходить ее физическую ширину. После подачи сигнала RESET ширина логических шин не определена, вследствие этого перед первой пересылкой должна быть выполнена команда WID. После этого логическая ширина шин остается неизменной вплоть до выполнения следующей команды WID или до очередной подачи сигнала RESET на ПВВ.

 

 

Рис. 8.13. Операции выполняемые по команде TSL

 

Команда XFER - вхождение в режим пересылки с ПДП после выполнения следующей (за XFER) команды. Эта команда не имеет операндов и служит для подготовки канала к операциям пересылки с ПДП. При синхронизованной пересылке команда, следующая за XFER, может подготовить синхронизующее устройство, например послать команду пускили последний из серии параметров. За командой XFER может следовать любая команда, включая WID, кроме команды, изменяющей содержимое регистров GA, GB или GC.

Команда SINTR устанавливает разряд обработки прерываний в слове-состояния программы PSW и активизирует сигнал SINTR соответствующего канала, если разряд обработки прерываний в PSW был установлен. Если разряд управления прерываниями был сброшен (прерывания от этого канала были запрещены), то разряд обработки прерываний устанавливается в «1», а сигнал SINTR не активизируется. Программа канала может использовать эту команду для запроса прерываний у ЦП.

Команда HLT завершает программу канала. По этой команде канал сбрасывает флаг занятости и переходит в пассивное состояние.

Команда NOP соответствует пустой операции и выполняется в течение четырех тактов.

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

Сочетание скорости контроллера ПДП, набора команд, ориентированного на ввод-вывод, а также гибкости организации шин делает ПВВ универсальной системой ввода-вывода.

 



Дата добавления: 2018-11-26; просмотров: 855;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.023 сек.