Микросхемы интегральные Л1839ВМ1. Техническое описание: различия между версиями

Материал из Emuverse
(1.3)
(1.11)
 
(не показано 12 промежуточных версий этого же участника)
Строка 461: Строка 461:
<center>
<center>
[[Файл:1839VM1 TO Pic4.png|500px]]
[[Файл:1839VM1 TO Pic4.png|500px]]
</center>
== 1.4. Операционный блок ==
Операционный блок (ОБ) предназначен для формирования адресов команд и операндов, для выполнения арифметических и логических операций над операндами, а также для хранения адресов, операндов и результатов выполнения операций на регистрах. Операционный блок состоит из операционной части, регистровой части и схем управления.
=== Операционная часть операционного блока ===
Операционная часть операционного блока выполняет арифметические и логические операции над операндами, осуществляет временное хранение результатов операций, формирует состояния N , Z , V , С по результатам операций. Операционная часть ОБ состоит:
# Буферные регистры;
# Арифметико-логическое устройство (АЛУ);
# Регистр результата операции (РРОП);
# Схема формирования состояний (СФС);
# Дешифраторы.
Работой ОБ управляет блок синхронизации ОБ (БСОБ). Временная диаграмма работы операционной части ОБ представлена на рис. 5.
Структурная схема операционной части ОБ представлена на рис. 6.
<center>
[[Файл:1839VM1 TO Pic5.png|500px]]
</center>
<center>
[[Файл:1839VM1 TO Pic6.png|700px]]
</center>
По сигналу *SRD1&φ* (чтение 1) на шину X и Y̅ в соответствии с адресами, указанными в поле чтения ( *RFX0* - *RFX4* , *RFY0* - *RFY4* ) тела микрокоманды, читаются регистры (в одноадресной микрокоманде на шину Y̅ читается ячейка блока констант). Информация на шинах X и Y̅ защелкивается квазистатическими триггерами, стоящими на входе буферных регистров, после чего чтение регистров (блока констант) прекращается. Подброс шин X и Y̅, а следовательно и сброс защелки осуществляется сигналом *SETXY* . Одновременно с сигналами чтения регистров вырабатываются сигналы записи, по которым операнды с шин X и Y̅ записываются в буферные регистры. В соответствии с кодом операции (OCIR-OC3R) в буферные регистры записываются прямые или инверсные значения операндов. По сигналу *SALU&φ̅* (разрешение запуска АЛУ) запускается арифметико-логическое устройство, которое в зависимости от кода операции ( *RFY4* , *OC1R* - *OC3R* , *AROPWC* ) и формата микрокоманды ( *MFCOR,MFC1R* ) выполняет над операндами ту или иную операцию. Результат выполнения операции сигналом *SWTOPR&φ* записывается в регистр результата операции. РРОП кроме функции временного хранения результата выполняет функцию сдвигателя в микрокомандах сдвига. На основе полученного результата СФС формирует признаки N̄*, Z̄*, V̄*, C̄* , которые подаются на регистр состояний (РСП) и на схему образования условий ветвления.
Результат выполнения операции с РРОП через усилители подается на парафазную шину X* , Y̅* , откуда по сигналу *SWT2&φ̅* (запись 2) , в соответствии с адресом, указанным в поле записи ( *WF0* - *WF4* ) тела микрокоманды, записывается в регистр.
== 1.5. Прерывания и исключительные состояния ==
1.5.1. При работе системы в ней могут возникать особые ситуации, которые приводят к изменениям в текущем выполняемом процессе. При этом процессор выполняет два основных действия:
# сохраняет информацию о текущем процессе (в основном, это делается путем занесения в стек счетчика команд ( *program counter* - PC) и длинного слова состояния процессора (*processor status longword* - PSL ) с целью последующего возобновления данного процесса);
# передает управление от потока команд текущего процесса к определенным участкам программного обеспечения для обслуживания возникших событий.
Эти действия выполняются микропрограммно. Существует два основных типа подобных событий: прерывания ( *interrupt* ) и исключительные состояния ( *exceptions* ).
Прерывания - это асинхронные события, которые являются главными по отношению к другим (не текущим процессам) или даже по отношению к целой системе и они, соответственно, обслуживаются в контексте всей системы.
Исключительные состояния - это синхронные события, которые являются главными по отношению к текущему процессу и обычно обслуживаются в контексте текущего процесса.
Прерывания являются асинхронными событиями, поэтому для возможности обработки одновременно возникших запросов прерываний, в процессоре существует логика приоритетов. Приоритет, связанный с прерыванием, называется "уровнем приоритета прерывания" (IPL - *interrupt priority level* ). В любой момент времени будет обслуживаться прерывание с наивысшим приоритетом. IPL изменяется от 0 до 1F, то есть существует 32 уровня приоритета прерывания.
1.5.2. Для исключительных состояний (кроме особых фатальных ситуаций, влияющих на работу всей системы - им сопоставляется наивысший IPL , равный 1F) логика приоритетов не нужна, так как эти события синхронны по своей природе, и поэтому, возникают только в определенных, обусловленных набором выполняющихся команд, точках.
Существует три типа исключительных состояний:
# "ловушка" ( *trap* ) - это исключительное состояние, которое возникает в конце команды, которая ее вызвала. Поэтому PC, сохраняемый в стеке, указывает на следующую команду, которая должна была бы нормально выполняться. Любая программа может разрешить или запретить некоторые из ловушек для какой-то конкретной команды;
# "нарушение" ( *fault* ) - это исключительное состояние, которое возникает во время выполнения команды и оставляет регистры и память в таком состоянии, что при устранении условий для возникновения этой ситуации и рестарте, эта команда будет давать правильные результаты;
# "прекращение" ( *abort* ) - это исключительное состояние, также возникающее во время выполнения команды, но, в отличие от нарушений, оставляющее регистры и память в неопределенном состоянии. Поэтому команда не может быть правильно завершена (даже при условии ее рестарта).
В табл. 4 приведены возможные уровни приоритета прерываний процессора и соответствующие им аппаратные события.
'''Таблица 4.'''
Уровни приоритета прерываний
<pre>
+---------------------------------------+--------------------+
|          П р е р ы в а н и я        | Уровень приоритета |
|                                      | прерывания IPL_16  |
+---------------------------------------+--------------------+
| Контроль аппаратных средств          |                    |
| Недействительность стека ядра        |        1F          |
| Недействительность стека прерываний  |                    |
+---------------------------------------+--------------------+
| Сбой питания                          |        1E          |
+---------------------------------------+--------------------+
|                                      |        1D          |
| Ошибки процессора, памяти            |        1C          |
| или шины                          }  |        1B          |
|                                      |        1A          |
|                                      |        19          |
+---------------------------------------+--------------------+
| Таймер                                |        18          |
+---------------------------------------+--------------------+
|                                      |        17          |
|                                      |        16          |
|                                      |        15          |
| Прерывания устройств              }  |        14          |
|                                      |        13          |
|                                      |        12          |
|                                      |        11          |
|                                      |        10          |
+---------------------------------------+--------------------+
| События математического обеспечения  |                    |
+---------------------------------------+--------------------+
|                                      |        0F          |
|                                      |        0E          |
| Р е з е р в                          |        0D          |
|                                      |        0C          |
+---------------------------------------+--------------------+
|                                      |        0B          |
|                                  }  |        0A          |
| Драйверы устройств                    |        09          |
|                                      |        08          |
|                                      |                    |
+---------------------------------------+--------------------+
| Таймер процесса                      |        07          |
+---------------------------------------+--------------------+
| Очередь AST                          |        06          |
+---------------------------------------+--------------------+
| Резерв                                |        05          |
+---------------------------------------+--------------------+
| Почта ввода/вывода                    |        04          |
+---------------------------------------+--------------------+
| Планировщик процесса                  |        03          |
+---------------------------------------+--------------------+
| Передача AST                          |        02          |
+---------------------------------------+--------------------+
| Резерв                                |        01          |
+---------------------------------------+--------------------+
| Уровень пользовательского процесса    |        00          |
+---------------------------------------+--------------------+
</pre>
== 1.6. Состояние процессора ==
При обслуживании особых ситуаций состояние процессора должно быть сохранено для того, чтобы прерванный процесс мог нормально продолжиться. В основном это делается путем сохранения в стеке PC (который указывает либо на команду, которая выполнялась, либо на следующую) и *PSL* . PC и *PSL* в дальнейшем восстанавливаются по команде возврата из прерывания или исключительной ситуации ( *REI* ).
Одной из главных характеристик текущего процесса или текущего состояния процессора является длинное слово состояния процессора. Это слово состоит из *processor status word* (PSW) - слова состояния процессора (разряды <0-15> PSL ), которое доступно пользователю и слово привилегированного состояния (разряды <16-31> PSL ), которое доступно привилегированному программному обеспечению. PSL приводится на рис. 7.
<center>
[[Файл:1839VM1 TO Pic7.png|600px]]
</center>
Значения полей PSL следующие:
<pre>
Разряды        Поле        Значение
<3-0>          N,Z,V,C      Коды условий
<4>            T            Бит разрешения трассы
<5>            IV          Бит разрешения ловушки целочисленного переполнения
<6>            FU          Бит разрешения ловушки плавающего недополнения
<7>            DV          Бит разрешения ловушки десятичного переполнения
<15-8>        0            Резерв, должны быть нулями
<20-16>        IPL          Уровень приоритета прерывания
<21>          0            Резерв, должен быть нуль
<23-22>        PRM          Режим предыдущего доступа (Previous access mode )
<25-24>        CRM          Режим текущего доступа (Current access mode )
<26>          IS          Бит использования стека прерываний (Interrupt stack )
<27>          FPD          Первая часть выполнена (First part done )
<29-28>        0            Резерв, должны быть нулями
<30>          TP          Запрос трассы
<31>          CM          Признак режима совместимости
</pre>
Микропрограммная процедура обработки прерываний и исключительных состояний использует в основном поля *IS* , CRM и IPL, поэтому рассмотрим их подробнее:
1) IS . Если IS = 1, то процессор работает со стеком прерываний. При этом необходимо, чтобы CRM = 0 и IPL > 0. Если IS = 0, то процессор работает со стеком, который определен полем CRM в PSL .
2) CRM. Возможны следующие режимы доступа из текущего выполняемого процесса:
* 0 - ядро ( *kernel* )
* 1 - исполнитель ( *executive* )
* 2 - супервизор ( *supervisor* )
* 3 - пользователь ( *user* )
3) PRM. Это поле загружается из поля текущего режима при исключительных состояниях и командами СНМХ, сбрасывается прерываниями и восстанавливается командой REI.
4) IPL . Текущий приоритет процессора меняется в пределах от 0 до 1F. Процессор будет разрешать прерывания только на уровнях больших, чем текущий уровень процессора.
== 1.7. Различия между прерываниями и исключительными состояниями ==
В целом, по-своему влиянию на работу всей системы, прерывания и исключительные состояния очень похожи. Но существует ряд отличий между ними, которые можно свести к следующим:
1) Исключительное состояние (синхронное событие) возникает при выполнении текущей команды, в то время как прерывание (асинхронное событие) возникает из-за чьей-либо активности в вычислительной системе и это действие может быть независимо от текущей команды.
2) Исключительное состояние, как правило, обрабатывается в контексте процесса, в котором она возникла, в то время как прерывание обслуживается независимо от текущего выполняющегося процесса.
3) IPL процессора обычно не изменяется, когда возникает исключительное состояние. При прерывании IPL всегда повышается.
4) Подпрограммы, обслуживающие исключительные состояния, обычно работают со стеком процесса (стеком режима ядра - KSP), а подпрограммы, обслуживающие прерывания, со стеком процессора (стеком прерываний - ISP ).
5) Разрешенные исключительные состояния всегда инициируются немедленно, независимо от IPL процессора, а прерывания откладываются до тех пор, пока IPL процессора не станет ниже IPL запрашивающего прерывания.
6) Большинство исключительных состояний не может быть запрещено. Однако, если причина этого состояния возникает, когда эта ситуация запрещена, то инициация данного исключительного состояния не происходит даже после того, когда запрет отменяется. Если же возникает условие прерывания в тот момент, когда оно запрещено или IPL запроса меньше или равно IPL процессора, то данное прерывание в конечном итоге будет удовлетворено, как только возникнет подходящая ситуация, если условие прерывания еще существует.
7) При прерывании поле PRM в PSL всегда устанавливается в режим ядра, а при исключительном состоянии в него переписывается поле CRM .
8) Вследствие асинхронного характера условие прерывания всегда фиксируется аппаратно и переход на соответствующую микропрограмму обработки осуществляется с помощью аппаратных средств. Для исключительного состояния, наряду с таким способом перехода на микропрограмму обработки, возможен и чисто микропрограммный переход. Это связано с синхронностью исключительных состояний - можно заранее определить точки в микропрограммах, из которых возможен переход на микропрограмму обработки соответствующего исключительного состояния.
== 1.8. Основные параметры прерываний и исключительных состояний ==
'''Векторы'''
Переход на подпрограммы обслуживания особых ситуаций осуществляется с помощью специальных векторов, которые представляют собой длинные слова, интерпретируемые следующим образом:
1) Биты <1:0> содержат интерпретируемый код:
* 0 - обслужить событие через стек ядра. Если работа уже выполняется через стек прерываний, то обслужить событие через стек прерываний.
* 1 - обслужить событие через стек прерываний. Если это событие является исключительным состоянием, то IPL повышается до 1F;
* 2 - обслужить событие в перезаписываемой управляющей памяти. Если эта память не используется, то процессор переходит на команду останова HALT;
* 3 - процессор переходит на HALT.
2) Биты <31:2> содержат виртуальный адрес подпрограммы обслуживания - для кодов 0 и 1.
'''Системный управляющий блок (SCB).'''
Все векторы обслуживания прерываний и исключительных состояний находятся в системном управляющем блоке ( SCB - *System Control Block* ), который представляет собой две смежных страницы памяти. Физический адрес первой страницы содержится в привилегированном регистре - базе системного управляющего блока SCBB ( *SCB base* ).
Векторы устройств на *UNIBUS* находятся во второй странице, адрес которой получается добавлением к адресу, содержащемуся в SCBB, константы (200)₁₆. Разрешенными для этих устройств считаются только векторы (200-3FC)₁₆.
Основные параметры прерываний и исключительных состояний приведены в табл.5.
Таблица 5
Таблица основных параметров особых ситуаций
<pre>
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| Наименование особых  | Тип        | Уровень приори-  | Вектор | Источник  | Код  | Параметры, загру-  |
| ситуаций            | ситуации  | тета прерывания  | 16    | (а/МП)*  | 16  | жаемые в стек      |
|                      |            | IPL_16          |        |          |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 1. Машинный сбой    | Прекращение| 1F**            | 04    | Контроллер|  6?  | См.Примечание 1    | <Неразборчиво, 4 зачеркнуто, исправлено на 6 или 8>
|                      | / ловушка  |                  |        | (а)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 2. Недостоверный стек| Прекращение| 1F**            | 08    | Процессор |  2  | РНК***, PSL        | <D зачеркнуто, исправлено на 2>
| ядра                |            |                  |        | (а)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 3. Недостоверный стек| Прекращение| 1F**            | -      | Процессор |  2  | РНК, PSL и причи-  | <1 зачеркнуто, исправлено на 2>
| прерываний          |            |                  |        | (а)      |      | на останова оста-  |
|                      |            |                  |        |          |      | ются на регистрах  |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 4. Сбой питания      | Прерывание | 1E              | 0C    | Адаптер  |  D  | PC,PSL            | <5 зачеркнуто, исправлено на D>
|                      |            |                  |        | (а)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 5. Резервная/привиле-| Нарушение  | -                | 10    | Процессор | -    | РНК, PSL          |
| гированная команда  |            |                  |        | (МП)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 6. Резервная команда | Нарушение  | -                | 14    | Процессор | -    | РНК, PSL          |
| пользователя        |            |                  |        | (МП)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 7. Резервный операнд | Нарушение/ | -                | 18    | Процессор | 7    | РНК, PSL          | <E зачеркнуто, исправлено на 7>
|                      | прекращение|                  |        | (а/МП)    |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 8. Резервный метод  | Нарушение  | -                | 10C    | Процессор | -    | РНК, PSL          |
| адресации            |            |                  |        | (МП)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 9. Нарушение управле-| Нарушение  | -                | 20    | Процессор |  4  | См.Примечание 2    | <2 зачеркнуто, исправлено на 4>
| ния доступом        |            |                  |        | (а)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 10. Запрет трансляции| Нарушение  | -                | 24    | Процессор |  5  | См.Примечание 2    | <3 зачеркнуто, исправлено на 5>
|                      |            |                  |        | (а)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 11. Трассировка      | Нарушение  | -                | 28    | Процессор |  E  | РНК, PSL          | <7 зачеркнуто, исправлено на E>
|                      |            |                  |        | (а)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 12. Команда ВРТ      | Нарушение  | -                | 2C    | Процессор | -    | РНК, PSL          |
|                      |            |                  |        | (МП)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 13. Арифметические  | Ловушка    | -                | 34    | Процессор |8-A  | См.Примечание 3    | <B зачеркнуто, исправлено на A>
| ловушки              |            |                  |        | (а/МП)    |нрзб,A|                    | <неразборчиво>
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 14. Команды:  СНМК  | Ловушка    | -                | 40    | Процессор.| -    | См.Примечание 4    |
|              СНМЕ  |            |                  | 44    | (МП)      |      |                    |
|              СНМS  |            |                  | 48    |          |      |                    |
|              СНМИ  |            |                  | 4C    |          |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 15. Зависание по    | Прерывание | 1D              | 60    | Контроллер| C    | PC, PSL            |
| записи в память      |            |                  |        |          |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 16. Исправимые ошибки| Прерывание | 1A              | 54    | Контроллер| C    | PC,PSL            |
| памяти              |            |                  |        | (а)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 17. Таймер          | Прерывание | 18              | C0    | Адаптер  |  D  | PC, PSL            | <5 зачеркнуто, исправлено на D>
|                      |            |                  |        | (а)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 18. Консольный      | Прерывание | 14              | F8    | Адаптер  |  D  | PC,PSL            | <5 зачеркнуто, исправлено на D>
| терминал (приемник)  |            |                  |        | (а)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 19. Консольный      | Прерывание | 14              | FC    | Адаптер  |  D  | PC, PSL            | <5 зачеркнуто, исправлено на D>
| терминал (передатчик)|            |                  |        | (а)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 20. Программные      | Прерывание | 1...F            | 84...BC| Адаптер  | D?  | PC, PSL            |  <"-" исправлено на D?>
| прерывания          |            |                  |        | (а)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 21. Прерывания      | Прерывание | 14-17            |200-3FC | Адаптер  |      | PC, PSL            |  <5-6 зачеркнуто, исправлено на D>
| устройств            |            |                  |        | (а)      | D    |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
</pre>
'''*''' - аппаратный/микропрограммный характер соответствующего события;
'''**''' - для этих событий IPL = 1F, если 1:0 разряды вектора равны 1;
'''***''' - РНК - регистр начала команды. Он указывает на код операции команды, при выполнении которой произошло нарушение или прекращение.
П р и м е ч а н и я  к табл.5:
1. При машинном сбое в стеке сохраняются следующие параметры:
* (SP)    Параметр длины (равен 28₁₆).
* (SP)+4  Код ошибки (для ошибок памяти, например, равен 2).
* (SP)+8  Регистр виртуального адреса (РКВА).
* (SP)+C  PC во время сбоя.
* (SP)+10  Регистр данных памяти (MDR).
* (SP)+14  Сохраненный регистр режима ( SMR).
* (SP)+18  Регистр зависания по чтению-модификации-записи (RLTO).
* (SP)+1C  Регистр групповой четности буфера трансляции (TBGPR).
* (SP)+20  Регистр ошибок КЭШ-памяти (CAER).
* (SP)+24  Регистр ошибок шины (BER).
* (SP)+28  Регистр суммарных ошибок при машинном сбое (MCESR).
* (SP)+2C  PC, указывающий на код операции.
* (SP)+30  PSL.
2. При исключительных состояниях от диспетчера памяти в стеке сохраняются:
* (SP)    Регистр суммарных ошибок диспетчера памяти.
* (SP)+4  Виртуальный адрес в странице нарушения (РКВА).
* (ST)+8  РНК.
* (SP)+C  PSL.
3. При арифметических ловушках в стеке, кроме PC, также сохраняется код арифметической ловушки, который имеет следующие значения:
<pre>
    Код    Тип арифметической ловушки
      1      Целочисленное переполнение
      2      Целочисленное деление на 0
      3      Плавающее  переполнение
      4      Плавающее/десятичное деление на 0
      5      Плавающее обнуление
      6      Десятичное переполнение
      7      Диапазон приписки
</pre>
4. При выполнении команд смены режима в стек, кроме PC, PSL загружается операнд команды ( *code* ) с расширенным знаком.
Вся аппаратура, связанная с обработкой прерываний и исключительных состояний, располагается в контроллере памяти, адаптере магистрали и в процессоре.
Контроллер фиксирует аппаратные ошибки, связанные с работой памяти и сообщает об этом процессору с помощью сигналов *INRC* (прерывание контроллера) и MCH (машинный сбой). Адаптер фиксирует все остальные прерывания, проводит разбор приоритетов между ними и сообщает процессору о наличии запроса прерывания сигналом *INRA* (прерывание адаптера). Кроме этого в адаптере находится часть внутренних регистров системы, которые связаны с обработкой прерываний.
В процессоре находится, собственно блок прерываний (БПР), который наряду с прерываниями контроллера и адаптера, обрабатывает все аппаратные исключительные состояния, проводит окончательный разбор приоритетов и формирует код особой ситуации, с помощью которого осуществляется формирование начального адреса соответствующей микропрограммы обработки.
== 1.9. Блок прерываний БПР ==
1.9.1. На рис.8 приведена структурная схема БПР процессора. Ниже перечислены основные блоки, входы и выходы БПР.
<center>
[[Файл:1839VM1 TO Pic8.png|400px]]
</center>
1) БСБПР - блок синхронизации БПР.
2) БРП  - блок разбора приоритетов.
3) ДШРИП - дешифратор сброса источника прерываний и исключительных состояний.
4) РИП  - регистр источников прерываний и исключительных состояний.
5) Входы:
* КК    - признак конца команды;
* PA    - выход элемента ИЛИ, на входах которого собраны все нарушения и прекращения;
* 1T    - выход элемента ИЛИ, на входах которого собраны все прерывания и ловушки;
* 5CN  - запрос недостоверного стека ядра;
* SINN - запрос недостоверного стека прерываний;
* НУД  - запрос нарушения управления доступом;
* ЗТ    - запрос запрета трансляции;
* MCH  - запрос машинного сбоя;
* REZ  - запрос резервного операнда;
* INRA  - запрос адаптера;
* HALT  - запрос останова;
* T    - запрос трассировки;
* FUZ  - запрос ловушки плавающего недополнения;
* DVV  - запрос ловушки десятичного переполнения;
* IVV  - запрос ловушки целочисленного переполнения;
* FVV  - запрос ловушки плавающего переполнения;
* INRC  - запрос прерывания контроллера;
* РИП  - сигнал сброса источника прерывания.
6) Выходы:
* RA        - сигнал запроса сбоя;
* IRQ      - сигнал запроса прерывания;
* ЗРПП      - сигнал записи регистра признака прерывания и исключительного состояния (РПП);
* ЗРИП      - сигнал записи РИП;
* РПП(0-3)  - код прерываний и исключительных состояний;
* 5РИП      - сигнал сброса конкретного источника (в соответствии с кодом).
1.9.2. Алгоритм работы БПР
При поступлении в БПР сигналов прерываний - ловушек или сигналов нарушений-прекращений запускается БСБПР - по сигналу IT или PA соответственно. PA может возникать в любой момент выполнения команды, IT возникает лишь после окончания команды, перед выполнением следующей команды. БСБПР вырабатывает сигналы RA или IRQ , которые поступают на ПЛМ ДШК, ЗРИП, по которому производится запись в РИП всех имеющихся к этому времени запросов. В БРП, в соответствии с самым высокоприоритетным запросом, формируется код, который поступает на входы РПП (находящегося в блоке управления ПЗУ) и на входы ДШ КИП для последующего сброса источника запроса по сигналу РИП
Запись в РПП производится сигналом ЗРПП, также выработанным БСБПА.
Содержимое РПП затем используется микрокомандой перехода по регистру для выхода на конкретные микропрограммы обработки прерываний и исключительных состояний.
В табл. 5 в графе "Код₁₆" приведены шестнадцатеричные коды аппаратных особых ситуаций.
Приоритетность между прерываниями и ловушками в БПР принята следующая (в порядке убывания приоритетов):
# Арифметические ловушки.
# Прерывания контроллера.
# Прерывания адаптера.
#  Ловушка трассы.
На рис. 9 приведена временная диаграмма работы БПР.
<center>
[[Файл:1839VM1 TO Pic9.png|500px]]
</center>
1.9.3. Алгоритм обработки прерываний и исключительных состояний
Микропрограммная процедура обработки ситуаций сводится, в основном, к двум действиям:
1) сохранению текущего состояния (PC(РНК), *PSL* , параметры (если нужно));
2) формированию нового состояния (загрузка PC начальным адресом программы обработки особой ситуации, формирование нового *PSL* ).
Более подробно эти два действия, и другие описаны в алгоритме обработки прерываний и исключительных состояний на рис.10.
<center>
[[Файл:1839VM1 TO Pic10.png|600px]]
</center>
== 1.10. Временные диаграммы процессора, идентификаторы обменов ==
1.10.1. Ко всем временным диаграммам относится следующее:
1) Если на вход тестирования *TEST* подан низкий уровень, то новый обмен по микрокомандной магистрали не начнется, пока ответный сигнал *MSDS* от накопителя микрокоманд не закончится. По магистрали AD(0-31) не начнется новый обмен, пока не закончатся ответные сигналы *SAS* и *SDS* от предыдущего обмена. Если на входе *TEST* высокий уровень, то новые обмены по магистралям начинаются независимо от окончания ответных сигналов. При этом окончание сигналов *SAS* и *SDS* должно происходить асинхронно с минимальным временем задержки по окончании сигналов *MAS* и *MDS* . Представленные ниже временные диаграммы справедливы для высокого уровня на входе *TEST*.
2) Интерфейсные сигналы при магистрали AD(0-31): *MAS* , *PGB* , *PCRQ* , *MDS* , *SEL* , *DMAK* вырабатываются выходами с тремя состояниями. На эти выходы необходимо ставить резисторы 2,7 кОм к шине источника питания + Ucc. После окончания сигналов в процедурах обменов на этих выходах осуществляется "подброс в "1" на время 0,5 T*CLC* , причем на выходах *MAS*, *PCRQ* , *DMAK* в отрицательной фазе CLC, а на выходах *PGB* , *MDS* и *SEL* - в положительной. Также в состояние активного высокого уровня эти выходы приводятся от низкого уровня на входе *SR* при начальном пуске ЦПР, причем для активного высокого уровня на выходе *MAS* необходимо наличие высокого уровня на входе *ACTR*.
3) Выходы AD(0-31) также имеют три состояния. В третьем состоянии выходы AD(0-31) находятся при приеме команд или данных, от низкого уровня на входе *SR* , в процедуре "Запись с перехватом" и при предоставлении прямого доступа к памяти.
В состояние активного высокого уровня выходы AD(0-31) приводятся между обменами по окончании сигнала *MDS* .
Временная диаграмма процедуры "Чтение микрокоманды" представлена на рис. 11. Минимальный цикл приема микрокоманды составляет 2 T*CLC* . [зачёркнуто: Ответный сигнал *MSDS* от накопителя микрокоманд может быть также статическим низким уровнем - в отличие от представленного на рис. 11.]
<center>
[[Файл:1839VM1 TO Pic11.png|500px]]
</center>
На временной диаграмме представлен дополнительно внутренний сигнал ЦПР *WBMC* - запись в буфер микрокоманд.
Временная диаграмма процедуры "Адресное чтение" представлена на рис. *12*. Минимальный цикл адресного чтения 3T*CLC*. Низкий уровень сигнала *SAS* принимается в отрицательной фазе *CLC* , затем выдается сигнал *MDS* низкого уровня и открывается внутренняя магистраль MD(0-31) для приема данных. В целях обеспечения быстродействия на частоте 10 МГц низкий уровень сигнала *SAS* необходимо подавать в течение первых 25 нс отрицательной фазы *CLC* . Низкий уровень сигнала *SDS* принимается также в отрицательной фазе *CLC* , и в следующей положительной фазе *CLC* заканчивается сигнал *MDS* . Для обеспечения быстродействия необходимо выполнить такие же требования, как и для сигнала *SAS* .
<center>
[[Файл:1839VM1 TO Pic12.png|500px]]
</center>
Временная диаграмма "Безадресное чтение команды" представлена на рис. *13* . Минимальный цикл процедуры 2 T*CLC* . Прием сигнала *SDS* происходит также, как и при адресном чтении и требования для обеспечения быстродействия те же.
<center>
[[Файл:1839VM1 TO Pic13.png|500px]]
</center>
Временная диаграмма процедуры "Запись" представлена на рис. *14* . Минимальный цикл процедуры - 4T*CLC* . Прием сигналов *SAS* и *SDS* и требования по обеспечению быстродействия как и при адресном чтении.
<center>
[[Файл:1839VM1 TO Pic14.png|500px]]
</center>
Временная диаграмма процедуры "Чтение-модификация-запись" представлена на рис. *15* . Минимальный цикл процедуры - 7 T*CLC* . Прием сигналов *SAS* и *SDS* и требования по обеспечению быстродействия такие как и при адресном чтении.
<center>
[[Файл:1839VM1 TO Pic15.png|500px]]
</center>
Временная диаграмма процедуры передачи адреса при пересечении данными границы страницы представлена на рис. *16* . Сигнал *PGB* при первом появлении сопровождает адрес перед границей страницы, при втором появлении сопровождает адрес начала новой страницы. Между двумя адресами (рис. *16* ) возможно выполнение обменов, например, "Чтение PTE", если пуст "Буфер трансляции", или "Безадресное чтение команды". Для обеспечения быстродействия на частоте 10 МГц требования к сигналам *SAS* и *SDS* такие же, как и при адресном чтении.
<center>
[[Файл:1839VM1 TO Pic16.png|500px]]
</center>
Временная диаграмма отказа от записи в процедуре "Чтение-модификация-запись PTE" представлена на рис. *17*. Отказ от записи *PTE* происходит, когда страница уже модифицировалась (бит модификации М <26> регистра PTE установлен в "1").
<center>
[[Файл:1839VM1 TO Pic17.png|500px]]
</center>
Временные диаграммы процедур чтения и записи внутренних регистров *IPR* , размещенных в процессоре ( *POBR* , *POLR* , *P1BR* , *P1LR* , *SBR*, *SLR*, *MAPEN* , *TBIA* , *TBIS* , *ACCS* ) представлены на рис. *18,19*. Внешние сигналы *SAS* , *SDS* не требуются, вместо них в процессоре вырабатываются внутренние сигналы такого же назначения.
<center>
[[Файл:1839VM1 TO Pic18.png|500px]]
</center>
<center>
[[Файл:1839VM1 TO Pic19.png|500px]]
</center>
Временная диаграмма чтения внешнего регистра начальных условий представлена на рис. *20* . Для чтения этого регистра предназначен выход *SEL* . Сигнал *SEL* возникает при чтении системной памяти (A31, A30 = "1") и при A23 = "1". На временной диаграмме сигнал *SEL* аналогичен сигналу *MDS* .
<center>
[[Файл:1839VM1 TO Pic20.png|500px]]
</center>
Временная диаграмма сигналов сопровождения процедуры захвата магистрали при прямом доступе к памяти представлена на рис. *21*.
<center>
[[Файл:1839VM1 TO Pic21.png|500px]]
</center>
Сигнал *DMR* магистрали *Q-BUS* преобразуется микросхемой адаптера магистрали КЛ839ВВ1 в сигнал *DMRQ* , поступающий на процессор. При отсутствии обменов процессор принимает сигнал *DMRQ* в низкой фазе *CLC* и через период *CLC* выдает сигнал разрешения прямого доступа к памяти *DMAK* , который микросхема АМ преобразует в сигнал *DMGO* магистрали *Q-BUS*. Окончание сигнала *DMAK* происходит в той же фазе низкого уровня CLC в какой принимается окончание сигнала *DMRQ* . На временной диаграмме также представлен перевод выходов магистрали AD(0-31) в третье состояние и выход из третьего состояния. При наличии обмена сигнал *DMAK* появится только по его окончании.
Временные диаграммы адресного чтения и адресной записи с перехватом сопроцессором обменов с памятью представлены на рис. *22, 23* . Обмен с перехватом происходит при A31 = "0", A30 = "1". О том, что микросхема сопроцессора начинает обмен с памятью, свидетельствует сигнал *ACTR* . Приняв асинхронно этот сигнал, процессор переводит выход *MAS* в третье состояние, предоставляя возможность сопроцессору выставить активный низкий уровень *MAS*спрц и далее сопроцессор читает данные из памяти или записывает данные в память также, как выполняет эти процедуры процессор. При записи с перехватом выходы AD(0-31) процессора переводятся в третье состояние по окончании адреса в низкой фазе· *CLC* и выходят из третьего состояния (подброс в "1") по окончании низкого уровня на шине *MDS* .
<center>
'''Рис. 22 отсутствует'''
</center>
<center>
[[Файл:1839VM1 TO Pic23.png|500px]]
</center>
Временная диаграмма процедуры "Чтение-модификация-запись с перехватом" представлена на рис. *24*.
<center>
[[Файл:1839VM1 TO Pic24.png|500px]]
</center>
Временная диаграмма процедуры "Двойное адресное чтение" представлено на рис. *25*.
<center>
[[Файл:1839VM1 TO Pic25.png|500px]]
</center>
Временная диаграмма процедуры "Двойная запись" представлена на рис. *26*.
<center>
[[Файл:1839VM1 TO Pic26.png|500px]]
</center>
Двойное чтение и запись выполняются при обменах с четверными словами.
На рис. *27-30* представлены временные диаграммы различных обменов с внешними и внутренними сигналами процессора.
<center>
[[Файл:1839VM1 TO Pic27.png|500px]]
</center>
<center>
[[Файл:1839VM1 TO Pic28.png|500px]]
</center>
<center>
[[Файл:1839VM1 TO Pic29.png|500px]]
</center>
<center>
[[Файл:1839VM1 TO Pic30.png|500px]]
</center>
К внутренним сигналам процессора относятся:
* WBMC  - запись в буфер микрокоманд;
* WMCE  - запись в регистр микрокоманд;
* NRFW  - сигнал записи поля чтения;
* SRDI  - сигнал чтения источника;
* SWT2  - сигнал записи в приемник;
* WTWA  - запись в регистр виртуального адреса;
* WTPA  - запись в регистр физического адреса;
* ADRE  - сигнал разрешения выдачи адреса в системную магистраль AD(0-31);
* DTIE  - сигнал приема команд и данных на внутреннюю магистраль MD(0-31);
* WCE  - сигнал записи в буферные регистры команд;
* WTBDR - сигнал записи в буферные регистры данных;
* DTOE  - сигнал выдачи данных в системную магистраль AD(0-31) при записи;
* DATL  - сигнал выдачи данных с выходного буферного регистра данных во внутреннюю магистраль MD(0-31).
1.10.2. Идентификаторы обменов
Старший байт физического адреса содержит идентификаторы обменов. В таблицах, приведенных ниже, даны логические значения кодов и электрические уровни на магистрали AD .
<pre>
+----+----+----+----+----+----+----+----+
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
+----+----+----+----+----+----+----+----+
|        |        |                  |
| Направ- | Формат  |    Код обмена    |
| ление  | данных  |                  |
| обмена  |        |                  |
+---------+---------+-------------------+
</pre>
1.10.2.1. Направление обмена
<pre>
+------------+---------+------------+---------+-------------------------------+
| 31 разряд            | 30 разряд            | Направление обмена            |
+------------+---------+------------+---------+                              |
| логические | уровень | логические | уровень |                              |
| значения  |        | значения  |        |                              |
+------------+---------+------------+---------+-------------------------------+
| 0          | высокий | 0          | высокий | Основная память, регист-      |
|            |        |            |        | ры внешних устройств          |
+------------+---------+------------+---------+-------------------------------+
| 0          | высокий | 1          | низкий  | Основная память, с            |
|            |        |            |        | перехватом магистрали        |
|            |        |            |        | сопроцессором                |
+------------+---------+------------+---------+-------------------------------+
| 1          | низкий  | 0          | высокий | Внутренние регистры          |
+------------+---------+------------+---------+-------------------------------+
| 1          | низкий  | 1          | низкий  | Системная память              |
+------------+---------+------------+---------+-------------------------------+
</pre>
1.10.2.2. Формат данных
<pre>
+------------+---------+------------+---------+------------------+
| 29 разряд            | 28 разряд            | Формат данных    |
+------------+---------+------------+---------+                  |
| логические | уровень | логические | уровень |                  |
| значения  |        | значения  |        |                  |
+------------+---------+------------+---------+------------------+
| 0          | высокий | 0          | высокий | Двойное слово    |
+------------+---------+------------+---------+------------------+
| 0          | высокий | 1          | низкий  | Слово            |
+------------+---------+------------+---------+------------------+
| 1          | низкий  | 0          | высокий | Четверное слово  |
+------------+---------+------------+---------+------------------+
| 1          | низкий  | 1          | низкий  | Байт            |
+------------+---------+------------+---------+------------------+
</pre>
1.10.2.3. Код обмена
<pre>
+------+--------+------+--------+------+--------+------+--------+-----------+
| 27 разряд    | 26 разряд    | 25 разряд    | 24 разряд    | Обмен    |
+------+--------+------+--------+------+--------+------+--------+          |
| лог. | уровень| лог. | уровень| лог. | уровень| лог. | уровень|          |
| знач |        | знач |        | знач |        | знач |        |          |
+------+--------+------+--------+------+--------+------+--------+-----------+
| 0    | высокий| X    | X      | 0    | высокий| 1    | низкий | Чтение    |
|      |        |      |        |      |        |      |        | данных    |
+------+--------+------+--------+------+--------+------+--------+-----------+
| 1    | низкий | X    | X      | 0    | высокий| 1    | низкий | Чтение    |
|      |        |      |        |      |        |      |        | команд    |
+------+--------+------+--------+------+--------+------+--------+-----------+
| 0    | высокий| X    | X      | 1    | низкий | 0    | высокий| Запись    |
+------+--------+------+--------+------+--------+------+--------+-----------+
| 0    | высокий| X    | X      | 1    | низкий | 1    | низкий | Чтение-  |
|      |        |      |        |      |        |      |        | модифика- |
|      |        |      |        |      |        |      |        | ция -    |
|      |        |      |        |      |        |      |        | запись    |
+------+--------+------+--------+------+--------+------+--------+-----------+
</pre>
где X - безразличное значение, остальные комбинации 24-27 разрядов - резервные.
== 1.11. Функциональные и электрические схемы входных и выходных каскадов ==
Функциональные схемы входных и выходных каскадов представлены на рис. 31-39.
<center>
[[Файл:1839VM1 TO Pic31.png|400px]] [[Файл:1839VM1 TO Pic32.png|400px]]
</center>
<center>
[[Файл:1839VM1 TO Pic33.png|400px]] [[Файл:1839VM1 TO Pic34.png|400px]]
</center>
<center>
[[Файл:1839VM1 TO Pic35.png|400px]] [[Файл:1839VM1 TO Pic36.png|400px]]
</center>
<center>
[[Файл:1839VM1 TO Pic37.png|400px]] [[Файл:1839VM1 TO Pic38.png|400px]]
</center>
<center>
[[Файл:1839VM1 TO Pic39.png|500px]]
</center>
На всех рисунках численное значение около логических элементов обозначает ширину транзисторов элементов в мкм: сверху р-типа, снизу п-типа.
Внутренние тактовые сигналы синхронизации φ , φ̄ соответствуют следующим фазам входного сигнала CLCI: φ соответствует CLCI; φ̄ - CLCI̅.
Электрические схемы входов и входов/выходов представлены на рис. 40,41.
<center>
[[Файл:1839VM1 TO Pic40.png|400px]] [[Файл:1839VM1 TO Pic41.png|400px]]
</center>
</center>


Строка 491: Строка 1184:
|  0  |  0  | Одноадресная  ОБ                            |    MA      |
|  0  |  0  | Одноадресная  ОБ                            |    MA      |
+-----+------+----------------------------------------------+-------------+
+-----+------+----------------------------------------------+-------------+
|  0  |  I   | Двухадресная  ОБ                            |    MB      |
|  0  |  1   | Двухадресная  ОБ                            |    MB      |
+-----+------+----------------------------------------------+-------------+
+-----+------+----------------------------------------------+-------------+
|  I  |  0  | Трехадресная  ОБ                            |    MC      |
|  I  |  0  | Трехадресная  ОБ                            |    MC      |
Строка 1043: Строка 1736:
+----------+-----------+------------------------+---------------+          |
+----------+-----------+------------------------+---------------+          |
| БО      | 1F        | Буферный регистр      | ч на X,ȳ /    |          |
| БО      | 1F        | Буферный регистр      | ч на X,ȳ /    |          |
|          |          | данных                 | з с X*,ȳ*; МД |          |
|          |          | данных (БРД)          | з с X*,ȳ*; МД |          |
+----------+-----------+------------------------+---------------+-----------+
+----------+-----------+------------------------+---------------+-----------+
</pre>
</pre>

Текущая версия от 18:05, 16 апреля 2026

Данный материал защищён авторскими правами!

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

1.1. Общие характеристики

1.1.1. ЦПР предназначен для выполнения в составе ЭВМ операций по чтению и обработке команд, вычислению и преобразованию адреса операндов, чтению из памяти, временному хранению на внутренних регистрах и записи операндов, а также для выполнения ариôметических и логических операций над этими операндами.

ЦПР изготавливается по КМОП технологии с двойной металлизацией. Размер кристалла – 9,5x9,95 мм. Напряжение питания микросхем +5В. Частота тактового сигнала синхронизации до 10 МГц.

В качестве накопителя микрокоманд используется внешнее ПЗУ. Для обеспечения максимального быстродействия это ПЗУ должно иметь время чтения не более 60 нс при цикле обращения 200 нс.

     Основные характеристики ЦПР следующие:

Разрядность операнда, бит                         – 8,16,32,64;
Разрядность виртуального адреса, бит              – 32;
Разрядность физического адреса, бит               – 24;
Разрядность адреса микрокоманды, бит              – 14;
Разрядность слова микрокоманды, бит               – 32;
Объем накопителя микрокоманд, К двойных слов      – 16;
Количество регистров общего назначения            – 16;
Время цикла выполнения микрокоманды
(микроцикла), нс                                  – 200;
Минимальное количество микроциклов, необходимое
для выполнения команды                            – 1;
Быстродействие (операции типа "сложение" в
формате "регистр-регистр"), млн. оп/с             – до 5.

Условное графическое обозначение ЦПР представлено на рис.1. Назначение выводов представлено в табл.1.

Таблица 1

+---------------+-----------+------------+-------------------------------------------------------------+
| Номер         | Обозна-   | Тип вывода | Наименование                                                |
| вывода        | чение     |            |                                                             |
+---------------+-----------+------------+-------------------------------------------------------------+
| H3            | OV        |            | Общий вывод                                                 |
| J2            | OV        |            | Общий вывод                                                 |
| M7            | OV        |            | Общий вывод                                                 |
| H12           | OV        |            | Общий вывод                                                 |
| G12           | OV        |            | Общий вывод                                                 |
| B8            | OV        |            | Общий вывод                                                 |
| H2            | U         |            | Вывод питания от источника напряжения                       |
| G13           | U         |            | Вывод питания от источника напряжения                       |
| C8            | U         |            | Вывод питания от источника напряжения                       |
| C7            | U         |            | Вывод питания от источника напряжения                       |
| G3            | U         |            | Вывод питания от исто иника напряжения                      |
| P7            | MC0       | Вход       | Нулевой разряд микрокоманды                                 |
| N7            | MC1       | Вход       | Первый разряд микрокоманды                                  |
| P8            | MC2       | Вход       | Второй разряд микрокоманды                                  |
| N8            | MC3       | Вход       | Третий разряд микрокоманды                                  |
| P9            | MC4       | Вход       | Четвертый разряд микрокоманды                               |
+---------------+-----------+------------+-------------------------------------------------------------+
| N9            | MC5       | Вход       | Пятый разряд микрокоманды                                   |
| P10           | MC6       | Вход       | Шестой разряд микрокоманды                                  |
| M9            | MC7       | Вход       | Седьмой разряд микрокоманды                                 |
| P11           | MC8       | Вход       | Восьмой разряд микрокоманды                                 |
| P12           | MC9       | Вход       | Девятый разряд микрокоманды                                 |
| P13           | MC10      | Вход       | Десятый разряд микрокоманды                                 |
| N10           | MC11      | Вход       | Одиннадцатый разряд микрокоманды                            |
| M11           | MC12      | Вход       | Двенадцатый разряд микрокоманды                             |
| M10           | MC13      | Вход       | Тринадцатый разряд микрокоманды                             |
| P14           | MC14      | Вход       | Четырнадцатый разряд микрокоманды                           |
| N11           | MC15      | Вход       | Пятнадцатый разряд микрокоманды                             |
| M12           | MC16      | Вход       | Шестнадцатый разряд микрокоманды                            |
| N12           | MC17      | Вход       | Семнадцатый разряд микрокоманды                             |
| N13           | MC18      | Вход       | Вос мнадцатый разряд микрокоманды                           |
| N14           | MC19      | Вход       | Девятнадцатый разряд микрокоманды                           |
| L12           | MC20      | Вход       | Двадцатый разряд микрокоманды                               |
| L14           | MC21      | Вход       | Двадцать первый разряд микрокоманды                         |
+---------------+-----------+------------+-------------------------------------------------------------+
| M13           | MC22      | Вход       | Двадцать второй разряд микрокоманды                         |
| K14           | MC23      | Вход       | Двадцать третий разряд микрокоманды                         |
| L13           | MC24      | Вход       | Двадцать четвертый разряд м крокоманды                      |
| J12           | MC25      | Вход       | Двадцать пятый разряд микрокоманды                          |
| K13           | MC26      | Вход       | Двадцать шестой разряд микрокоманды                         |
| J14           | MC27      | Вход       | Двадцать седьмой разряд микрокоманды                        |
| J13           | MC28      | Вход       | Двадцать восьмой разряд микрокоманды                        |
| H14           | MC29      | Вход       | Двадцать девятый разряд микрокоманды                        |
| H13           | MC30      | Вход       | Тридцатый разряд микрокоманды                               |
| G14           | MC31      | Вход       | Тридцать первый разряд микрокоманды                         |
| A10           | SAS       | Вход       | Сигнал подтверждения приема адреса подчиненным устройством  |
| B12           | SDS       | Вход       | Сигнал обработки данных подчиненным устройством             |
| C11           | DMRQ      | Вход       | Сигнал запроса на прямой доступ к памяти                    |
| B{0|9}        | ACTR      | Вход       | Сигнал захвата магистрали акселератором                     |
| P3            | INRA      | Вход       | Сигнал "Прерывание от адаптера магистрали"                  |
| P5            | INRC      | Вход       | Сигнал "Прерывание от контроллера памяти"                   |
| M6            | MCH       | Вход       | Сигнал "Машинный сбой"                                      |
+---------------+-----------+------------+-------------------------------------------------------------+
| P6            | HALT      | Вход       | Сигнал "Переход в пультовый режим"                          |
| M5            | MSDS      | Вход       | Сигнал сопровождения микрокоманды                           |
| P4            | ACRA      | Вход       | Сигнал готовности акселератора                              |
| F13           | ACN       | Вход       | Признак "Результат отрицателен" от акселератора             |
| E14           | ACZ       | Вход       | Признак "Результат равен нулю" от акселератора              |
| E13           | ACV       | Вход       | Признак "Переполнение" от акселератора                      |
| F12           | ACC       | Вход-выход | Признак "Расширение" от акселератора                        |
| C12           | TEST      | Вход       | Признак тестирования                                        |
| H1            | SR        | Вход       | Сигнал установки в исходное состояние                       |
| N6            | CLC1      | Вход       | Сигнал тактовой частоты                                     |
| G2            | AD0       | Вход-выход | Нулевой разряд адреса-данных 32-разрядной шины              |
| G1            | AD1       | Вход-выход | Первый разряд адреса-данных 32-разрядной шины               |
| F2            | AD2       | Вход-выход | Второй разряд адреса-данных 32-разрядной шины               |
| F1            | AD3       | Вход-выход | Третий разряд адреса-данных 32-разрядной шины               |
| E2            | AD4       | Вход-выход | Четвертый разряд адреса-данных 32-разрядной шины            |
| F3            | AD5       | Вход-выход | Пятый разряд адреса-данных 32-разрядной шины                |
| D2            | AD6       | Вход-выход | Шестой разряд адреса-данных 32-разрядной шины               |
+---------------+-----------+------------+-------------------------------------------------------------+
| E1            | AD7       | Вход-выход | Седьмой разряд адреса-данных 32-разрядной шины              |
| C2            | AD8       | Вход-выход | Восьмой разряд адреса-данных 32-разрядной шины              |
| D3            | AD9       | Вход-выход | Девятый разряд адреса-данных 32-разрядной шины              |
| A1            | AD10      | Вход-выход | Десятый разряд адреса-данных 32-разрядной шины              |
| B2            | AD11      | Вход-выход | Одиннадцатый разряд адреса-данных 32-разрядной шины         |
| B3            | AD12      | Вход-выход | Двенадцатый разряд адреса-данных 32-разрядной шины          |
| B4            | AD13      | Вход-выход | Тринадцатый разряд адреса-данных 32-разрядной шины          |
| C5            | AD14      | Вход-выход | Четырнадцатый разряд адреса-данных 32-разрядной шины        |
| C4            | AD15      | Вход-выход | Пятнадцатый разряд адреса-данных 32-разрядной шины          |
| B5            | AD16      | Вход-выход | Шестнадцатый разряд адреса-данных 32-разрядной шины         |
| A2            | AD17      | Вход-выход | Семнадцатый разряд адреса-данных 32-разрядной шины          |
| A3            | AD18      | Вход-выход | Восемнадцатый разряд адреса-данных 32-разрядной шины        |
| C6            | AD19      | Вход-выход | Девятнадцатый разряд адреса-данных 32-разрядной шины        |
| A5            | AD20      | Вход-выход | Двадцатый разряд адреса-данных 32-разрядной шины            |
| B6            | AD21      | Вход-выход | Двадцать первый разряд адреса-данных 32-разрядной шины      |
| A6            | AD22      | Вход-выход | Двадцать второй разряд адреса-данных 32-разрядной шины      |
| B7            | AD23      | Вход-выход | Двадцать третий разряд адреса-данных 32-разрядной шин[обрыв]|
+---------------+-----------+------------+-------------------------------------------------------------+
| B13           | AD24      | Вход-выход | Двадцать четвертый разряд адреса-данных 32-разрядной шины   |
| D12           | AD25      | Вход-выход | Двадцать пятый разряд адреса-данных 32-разрядной шины       |
| D13           | AD26      | Вход-выход | Двадцать шестой разряд адреса-данных 32-разрядной шины      |
| C13           | AD27      | Вход-выход | Двадцать седьмой разряд адреса-данных 32-разрядной шины     |
| C14           | AD28      | Вход-выход | Двадцать восьмой разряд адреса-данных 32-разрядной шины     |
| E12           | AD29      | Вход-выход | Двадцать девятый разряд адреса-данных 32-разрядной шины     |
| D14           | AD30      | Вход-в ход | Тридцатый разряд адреса-данных 32-разрядной шины            |
| B14           | AD31      | Вход-выход | Тридцать первый разряд адреса-данных 32-разрядной шины      |
| J1            | AM0       | Выход      | Нулевой разряд адреса микрокоманды                          |
| K2            | AM1       | Выход      | Первый разряд адреса микрокоманды                           |
| J3            | AM2       | Выход      | Второй разряд адреса микрокоманды                           |
| L2            | AM3       | Выход      | Третий разряд адреса микрокоманды                           |
| K1            | AM4       | Выход      | Четвертый разряд адреса микрокоманды                        |
| M2            | AM5       | Выход      | Пятый разряд адреса микрокоманды                            |
| M1            | AM6       | Выход      | Шестой разряд адреса микрокоманды                           |
| L3            | AM7       | Выход      | Седьмой разряд адреса микрокоманды                          |
| K3            | AM8       | Выход      | Восьмой разряд адреса микрокоманды                          |
+---------------+-----------+------------+-------------------------------------------------------------+
| P1            | AM9       | Выход      | Девятый разряд адреса микрокоманды                          |
| N2            | AM10      | Выход      | Десятый разряд адреса микрокоманды                          |
| N3            | AM11      | Выход      | Одиннадцатый разряд адреса микрокоманды                     |
| M3            | AM12      | Выход      | Двенадцатый разряд адреса микрокоманды                      |
| N4            | AM13      | Выход      | Тринадцатый разряд адреса микрокоманды                      |
| A8            | MAS       | Выход      | Сигнал сопровождения адреса от главного устройства          |
| A9            | MDS       | Выход      | Сигнал сопровождения данных от главного устройства          |
| B10           | PCRQ      | Выход      | Сигнал запроса команды по счетчику команд                   |
| C9            | PGB       | Выход      | Сигнал "Граница страницы памяти"                            |
| A11           | DMAK      | Выход      | Сигнал предоставления прямого доступа к памяти              |
| A13           | SEL       | Выход      | Сигнал чтения регистра внешних условий                      |
| P2            | MMAS      | Выход      | Сигнал сопровождения адреса для накопителя микрокоманд      |
| M4            | ACR       | Выход      | Сигнал сброса акселератора                                  |
| B11           | SP        | Выход      | Резервный                                                   |
| L1            | -         |            | Не используется                                             |
| N5            | U         |            | Вывод питания от источника напряжения                       |
| N1            | OV        |            | Общий вывод                                                 |
+---------------+-----------+------------+-------------------------------------------------------------+
| M8            | -         |            | Не используется                                             |
| M14           | -         |            | Не используется                                             |
| K12           | -         |            | Не используется                                             |
| F14           | -         |            | Не используется                                             |
| A14           | -         |            | Не используется                                             |
| A12           | -         |            | Не используется                                             |
| C10           | U         |            | Вывод питания от источника напряжения                       |
| A4            | -         |            | Не используется                                             |
| A7            | U         |            | Вывод питания от источника напряжения                       |
| B1            | -         |            | Не используется                                             |
| C3            | OV        |            | Общий вывод                                                 |
| C1            | -         |            | Не используется                                             |
| E3            | -         |            | Не используется                                             |
| D1            | -         |            | Не используется                                             |
+---------------+-----------+------------+-------------------------------------------------------------+

Таблица 2

+-------------------------------+-----------+--------+--------+-----------+
| Наименование параметра,       | Буквенное |   Норма         | Темпера-  |
| единица измерения,            | обозначе- +--------+--------+ тура,     |
| режим измерения               | ние       | не     | не     | °C        |
|                               |           | менее  | более  |           |
+-------------------------------+-----------+--------+--------+-----------+
| Выходное напряжение низкого   |           |        | 0,45   | 25+10     |
| уровня, В                     | U_OL      | -      +--------+-----------+
| при I_OL = 2,5 мА             |           |        | 0,5    | -60       |
|                               |           |        |        | 85        |
+-------------------------------+-----------+--------+--------+-----------+
| Выходное напряжение высокого  |           | 4,05   |        | 25+10     |
| уровня, В                     | U_OH      +--------+ -      +-----------+
| при IоН = - 0,2 мА            |           | 4,0    |        | -60       |
|                               |           |        |        | 85        |
+-------------------------------+-----------+--------+--------+-----------+
| Ток потребления, мА           |           |        | 8,0    | 25+10     |
|                               | I_CC      | -      +--------+-----------+
|                               |           |        | 10,0   | -60       |
|                               |           |        |        | 85        |
+-------------------------------+-----------+--------+--------+-----------+
| Ток потребления динамический, |           |        | 170    | 25+10     |
| мА                            | I_CCO     | -      +--------+-----------+
|                               |           |        | 200    | -60       |
|                               |           |        |        | 85        |
+-------------------------------+-----------+--------+--------+-----------+
| Ток утечки на входе, мкА      |           |        | 3,0    | 25+10     |
|                               | I_LI      |        +--------+-----------+
|                               |           |        | 10,0   | -60       |
|                               |           |        |        | 85        |
+-------------------------------+-----------+--------+--------+-----------+
| Ток утечки на выходе, мкА     |           |        | 10,0   | 25+10     |
|                               | I_LO      |        +--------+-----------+
|                               |           |        | 50,0   | -60       |
|                               |           |        |        | 85        |
+-------------------------------+-----------+--------+--------+-----------+
| Частота следования импульсов  |           |        |        | 25+10     |
| тактовых сигналов, МГц        | f_C       |        | 10,0   | -60       |
|                               |           |        |        | 85        |
+-------------------------------+-----------+--------+--------+-----------+
| Входная емкость, пФ           | C_I       | -      | 12,0   | 25+10     |
+-------------------------------+-----------+--------+--------+-----------+
| Выходная емкость, пФ          | C_O       | -      | 12,0   | 25+10     |
+-------------------------------+-----------+--------+--------+-----------+
| Емкость входа/выхода, пФ      | C_I/O     | -      | 14,0   | 25+10     |
+-------------------------------+-----------+--------+--------+-----------+
| Время выполнения операции     |           |        |        | 25+10     |
| "сложение" при регистровом    | t_ADD     | -      | 200    | -60       |
| методе адресации, нс          |           |        |        | 85        |
+-------------------------------+-----------+--------+--------+-----------+

Таблица 3

+-------------------------------+-------------+-------------+--------------+
| Наименование параметра,       | Буквенное   |           Норма            |
| единица измерения             | обозначение +-------------+--------------+
|                               |             | не менее    | не более     |
+-------------------------------+-------------+-------------+--------------+
| Напряжение питания, В         | U_CC        | 4,5         | 5,5          |
+-------------------------------+-------------+-------------+--------------+
| Входное напряжение высокого   |             |             |              |
| уровня, В                     | U_IH        | (0,85·U_CC)*| U_CC**       |
+-------------------------------+-------------+-------------+--------------+
| Входное напряжение низкого    |             |             |              |
| уровня, В                     | U_IL        | 0           | 0,8*         |
+-------------------------------+-------------+-------------+--------------+
| Напряжение на любом входе , В | U_I         | 0           | Ucc**        |
+-------------------------------+-------------+-------------+--------------+
| Выходной ток низкого уровня,  |             |             |              |
| мА                            | I_OL        | -           | 2,5          |
+-------------------------------+-------------+-------------+--------------+
| Выходной ток высокого уровня, |             |             |              |
| мА                            | I_OH        | -           | 0,2          |
+-------------------------------+-------------+-------------+--------------+
| Емкость нагрузки, пФ          | C_L         | -           | 100          |
+-------------------------------+-------------+-------------+--------------+
| Время фронта нарастания и     |             |             |              |
| спада входных сигналов, нс    | t_LH, t_HL  | -           | 0,1·T_CLCI   |
+-------------------------------+-------------+-------------+--------------+

* - с учетом всех видов помех

** - но не более конкретного значения напряжения питания, приложенного к микросхеме

1.1.2. Электрические параметры, условия эксплуатации

1.1.2.1. Напряжение питания микросхем Л1839ВМ1 +5В±10%.

1.1.2.2. Электрические параметры приведены в табл.2.

1.1.2.3. Предельно допустимые режимы эксплуатации приведены в табл.3.

1.1.2.4. Внешние воздействующие факторы:

Синусоидальная вибрация:
     диапазон частот, Гц ......................... от 1 до 5000
     амплитуда ускорения, м.с⁻² ( g ) ........... 400(40)
Механический удар:
     одиночного действия:
          пиковое ударное ускорение, м.с⁻² ( g ) .... 15000(1500)
          длительность действия ударного ускорения,мс от 0,1 до 2,0
     многократного действия:
          пиковое ударное ускорение, м.с⁻² ( g ) .... 1500(150)
          длительность действия ударного ускорения,мс от 1 до 5
Линейное ускорение, м.с⁻² ( g ) .................. 5000(500)
Акустический шум:
     диапазон частот, Гц ......................... 50-10000
     уровень звукового давления (относительно
2·10⁻⁵ Па), дБ ................................... 170
Атмосферное пониженное давление:
     рабочее, Па (мм рт.ст.) ..................... 1,3·10⁻⁴(10⁻⁶)
     предельное, Па (мм рт.ст.) .................. 1,3·10⁻⁴(10⁻⁶)
Атмосферное повышенное рабочее давление, ата ...... 3
Повышенная температура среды:
     рабочая, °С .................................. 85
     предельная, °С ............................... 125
Пониженная температура среды:
     рабочая, °С .................................. минус 60
     предельная, °С ............................... минус 60
Смена температур:
     от пониженной предельной температуры среды, °С   минус 60
     до повышенной предельной температуры среды, °С   125
Повышенная относительная влажность при 35°С, % ..... 98
Атмосферные конденсированные осадки (роса, иней)
Соляной (м{о|о}рской) туман
Плесневые грибы
Контрольные среды (среды заполнения):
     объемная доля компонентов контрольной среды, %:
          гелиево-воздушная ........................ 90
          аргоно-воздушная ......................... 90
          аргоно-азотная ........................... 90

1.1.2.5. Минимальная наработка микросхем 100000 часов, а в облегченном режиме при Ucc = 5В ± 3% – 120000 часов.

1.1.2.6. Интенсивность отказов в течение наработки не более 1.10⁻⁶ 1/ч.

1.1.2.7. Гамма-процентный срок сохраняемости – 25 лет.

1.1.3. Архитектура ЦПР позволяет работать с широким диапазоном типов данных, с эффективным набором способов адресации и с большим пространством виртуальных адресов (4 Гбайт).

Система команд микропроцессора совместима с системой команд ЭВМ семейства VAX-11.

Инструкции, обрабатываемые ЦПР, могут быть сгруппированы на основании их функций по следующим классам:

1) арифметические и логические, для обработки целых чисел, чисел с плавающей запятой, упакованных десятичных строк символов и инструкций для работы с переменными битовыми полями;

2) управление путями выполнения программы;

3) обработка данных специального вида:

  • инструкции манипуляции очередью;
  • инструкции обработки адресов;
  • программируемые пользователем инструкции загрузки и сохранения универсальных регистров;

4) для быстрого выполнения особых функций операционной системы, позволяющие: загружать и сохранять переменные контексты, найти операционной системе выполняемый процесс с наивысшим приоритетом;

5) предназначенные специально для языка высокого уровня.

ЦПР оперирует со следующими типами данных:

  • Целое: байт (8 бит), слово (16 бит), длинное слово (32 бита), четверное слово (64 бита).
  • Плавающая запятая: 4 байта (F-формат), 8 байтов (D-формат), 8 байтов (G-формат).
  • Упакованное десятичное: строка байтов (до 31 десятичной цифры, по две цифры в байте).
  • Строка символов: строка байтов, интерпретируемая как коды символов (до 64 Кбайт). Числовая строка является строкой символьных кодов для десятичных чисел (до 31 цифры).
  • Биты и поля битов: длина поля переменна от 0 до 32 бит (определяется пользователем).

Так как ЦПР полностью реализует архитектуру центральной части ЭВМ VAX-II/750, включая эмуляцию системы команд, то на его основе могут создаваться вычислительные средства, совместимые по математическому обеспечению на уровне операционных систем с ЭВМ ряда VAX.

1.1.4. Микросхемы ЦПР ЛП839ВМ1 соответствуют техническим условиям АЕЯР.431200.005-01 ТУ.

1.1.5. В микропроцессоре реализован конвейерный метод обработки команд на макро- и микро-программном уровнях. Осуществляется опережающий прием команд в количестве трех 32-разрядных слов команды. В пределах страницы (512 байт) прием команд безадресной с циклом 200 нс. Совмещение операций при выполнении команд регистр-регистр показано на рис.2.

Здесь цифрами (1-4) обозначены номера последовательно выполняемых команд, а буквами - операции:

  • А - прием команды;
  • Б - дешифрация команды;
  • В - выборка микрокоманды;
  • Г - исполнение операции.

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

Преобразование виртуального адреса в физический в блоке диспетчера памяти выполняется полностью аппаратно, параллельно с другими операциями процессора. Прием и модификация описателей страниц (PTE) автоматически вставляется в общий поток обменов по внешней магистрали. В ДП имеется ассоциативный буфер PTE на 16 ячеек. Как показали исследования фирмы DEC, такого объема буфера достаточно для эффективного выполнения типовых программ.

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

1.2. Структурная схема и общие принципы функционирования

ЦПР состоит из следующих функциональных блоков (рис.3):

  • дешифратор команд (ДШК);
  • блок приема и формирования микрокоманд (БПМК);
  • операционный блок (ОБ);
  • интерфейсный блок (ИБ);
  • диспетчер памяти (ДП);
  • блок анализа приоритетов прерываний (БПР).

Блоки ДШК, ОБ и ДП связаны с внутренней 32-разрядной магистралью процессора, по которой они могут обмениваться ин - формацией как между собой, так и с внешней магистралью. Внутренняя магистраль связана с внешней элементами входа-выхода, которые управляются интерфейсным блоком (ИБ). По этой магистрали передаются адреса, данные и команды.

Передача различного типа информации мультиплексирована по времени. Для приема микрокоманд в микропроцессоре имеются раздельные каналы выдачи адреса микрокоманды (14 разрядов) и приема микрокоманды (32 разряда). Этими каналами управляет БПМК.

Начальный пуск микропроцессора выполняется микропрограммно. По переходу сигнала на выводе SR из низкого в высокий уровень в ДШК вырабатывается первый адрес микропрограммы начального пуска и процессор переходит к выполнению этой микропрограммы.

Прием первой команды выполняется всегда в процедуре "адресное чтение". Физический адрес этой команды запоминается контроллером памяти в счетчике физического адреса команды. Дальнейший прием команд идет по этому счетчику, который автоматически инкрементируется на четыре после чтения каждой команды. Переход адреса команды на новую страницу отслеживается в процессоре и при каждом таком переходе прием команды выполняется в процедуре адресного чтения с проверкой доступности страницы в диспетчере памяти.

При выполнении команд, если количество операндов не больше четырех, сначала выполняется адресация всех операндов и прием их на буфер данных. Операнды могут находиться в памяти по адресам данных, в регистрах общего назначения (РОН) процессора или в теле команды. Данные из памяти всегда принимаются в буферный регистр данных (БРД). В формате "регистр-регистр" и "регистр-память" данные из РОН не пересылаются в БРД, действия над ними выполняются непосредственно в РОН. Во всех остальных случаях данные пересылаются в БРД. Если операнд находится в теле команды, то при дешифрации он выделяется из команды на специальный регистр и затем пересылается в БРД. Если количество операндов больше четырех, то выполняется прием четырех операндов, затем процесс адресации прерывается для освобождения БРД, после чего прием продолжается. Максимальное количество операндов - 6.

При выполнении косвенной адресации адрес из памяти принимается не в БРД, а в специальный регистр косвенной адресации (РКА), из которого он затем пересылается в регистр виртуального адреса (РВА). Это сделано потому, что принятый адрес нужно сразу же после приема использовать для продолжения адресации, а из БРД данные доступны по чтению только последовательно в порядке их приема, поскольку БРД организован по принципу стека.

Команды принимаются на буфер команд, который также организован как стек из трех 32-разрядных ячеек. Команды принимаются в буфер без выравнивания по началу слова, т.е. команда может начинаться с любого из четырех байт принимаемого 32-разрядного слова. За один цикл ДШК анализирует от 1 до 4 байт слова команды. Для начала обработки команды в буфере должны быть загружены две ячейки, поскольку анализируемые байты могут находиться в первой и второй ячейках, третья нужна для опережающего приема команды.

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

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

1.3. Дешифрация команд

1.3.1. Функции дешифратора команд

1) формирование начального адреса микропрограммы содержательной обработки команды;

2) формирование начального адреса микропрограммы адресации очередного операнда команды;

3) управление по выделению из области программы смещений адресации и констант;

4) управление мультиплексором буфера команд для загрузки полей кода операции и кода моды адресации очередного операнда.

1.3.2. Типы команд по дешифрации

1) команды "без операндов"

  • (HALT;NOP;REI;BPT;RET;LDPCTX;SVPCTX;XFC;RSB);

2) простые команды - команды с количеством операндов от 1 до 3;

3) длинные команды - команды с количеством операндов больше трех;

4) команды перехода по смещению и без операндов

  • (BRB;BRW;BEQL...);

5) команды перехода по смещению и с операндами

  • (ACBB,SOBGEQ...).

На рис. 4 показан общий алгоритм дешифрации команд.

На рис. 4 приняты следующие обозначения:

  • ПУ - передача управления;
  • ЗпКОП - загрузить регистр - "поле КОП" на входе ПЛМ-ДШК;
  • RUN - поле кода режима на входе ПЛМ;
  • ПР - прерывание;
  • НПР - нет прерываний;
  • F2 - признак кода команды из пространства расширения;
  • БО - команды без операндов;
  • ПК - простые команды;
  • ДК - длинные команды;
  • КПО - команды перехода с операндами;
  • КПС - команды перехода по смещению (байт или слово);
  • РР - расположение операндов - все на регистрах;
  • П - расположение операндов - хотя бы один в памяти;
  • СО - счетчик операндов;
  • КО - количество операндов;
  • STA - старт адресации.


1.4. Операционный блок

Операционный блок (ОБ) предназначен для формирования адресов команд и операндов, для выполнения арифметических и логических операций над операндами, а также для хранения адресов, операндов и результатов выполнения операций на регистрах. Операционный блок состоит из операционной части, регистровой части и схем управления.

Операционная часть операционного блока

Операционная часть операционного блока выполняет арифметические и логические операции над операндами, осуществляет временное хранение результатов операций, формирует состояния N , Z , V , С по результатам операций. Операционная часть ОБ состоит:

  1. Буферные регистры;
  2. Арифметико-логическое устройство (АЛУ);
  3. Регистр результата операции (РРОП);
  4. Схема формирования состояний (СФС);
  5. Дешифраторы.

Работой ОБ управляет блок синхронизации ОБ (БСОБ). Временная диаграмма работы операционной части ОБ представлена на рис. 5.

Структурная схема операционной части ОБ представлена на рис. 6.

По сигналу *SRD1&φ* (чтение 1) на шину X и Y̅ в соответствии с адресами, указанными в поле чтения ( *RFX0* - *RFX4* , *RFY0* - *RFY4* ) тела микрокоманды, читаются регистры (в одноадресной микрокоманде на шину Y̅ читается ячейка блока констант). Информация на шинах X и Y̅ защелкивается квазистатическими триггерами, стоящими на входе буферных регистров, после чего чтение регистров (блока констант) прекращается. Подброс шин X и Y̅, а следовательно и сброс защелки осуществляется сигналом *SETXY* . Одновременно с сигналами чтения регистров вырабатываются сигналы записи, по которым операнды с шин X и Y̅ записываются в буферные регистры. В соответствии с кодом операции (OCIR-OC3R) в буферные регистры записываются прямые или инверсные значения операндов. По сигналу *SALU&φ̅* (разрешение запуска АЛУ) запускается арифметико-логическое устройство, которое в зависимости от кода операции ( *RFY4* , *OC1R* - *OC3R* , *AROPWC* ) и формата микрокоманды ( *MFCOR,MFC1R* ) выполняет над операндами ту или иную операцию. Результат выполнения операции сигналом *SWTOPR&φ* записывается в регистр результата операции. РРОП кроме функции временного хранения результата выполняет функцию сдвигателя в микрокомандах сдвига. На основе полученного результата СФС формирует признаки N̄*, Z̄*, V̄*, C̄* , которые подаются на регистр состояний (РСП) и на схему образования условий ветвления.

Результат выполнения операции с РРОП через усилители подается на парафазную шину X* , Y̅* , откуда по сигналу *SWT2&φ̅* (запись 2) , в соответствии с адресом, указанным в поле записи ( *WF0* - *WF4* ) тела микрокоманды, записывается в регистр.

1.5. Прерывания и исключительные состояния

1.5.1. При работе системы в ней могут возникать особые ситуации, которые приводят к изменениям в текущем выполняемом процессе. При этом процессор выполняет два основных действия:

  1. сохраняет информацию о текущем процессе (в основном, это делается путем занесения в стек счетчика команд ( *program counter* - PC) и длинного слова состояния процессора (*processor status longword* - PSL ) с целью последующего возобновления данного процесса);
  2. передает управление от потока команд текущего процесса к определенным участкам программного обеспечения для обслуживания возникших событий.

Эти действия выполняются микропрограммно. Существует два основных типа подобных событий: прерывания ( *interrupt* ) и исключительные состояния ( *exceptions* ).

Прерывания - это асинхронные события, которые являются главными по отношению к другим (не текущим процессам) или даже по отношению к целой системе и они, соответственно, обслуживаются в контексте всей системы.

Исключительные состояния - это синхронные события, которые являются главными по отношению к текущему процессу и обычно обслуживаются в контексте текущего процесса.

Прерывания являются асинхронными событиями, поэтому для возможности обработки одновременно возникших запросов прерываний, в процессоре существует логика приоритетов. Приоритет, связанный с прерыванием, называется "уровнем приоритета прерывания" (IPL - *interrupt priority level* ). В любой момент времени будет обслуживаться прерывание с наивысшим приоритетом. IPL изменяется от 0 до 1F, то есть существует 32 уровня приоритета прерывания.

1.5.2. Для исключительных состояний (кроме особых фатальных ситуаций, влияющих на работу всей системы - им сопоставляется наивысший IPL , равный 1F) логика приоритетов не нужна, так как эти события синхронны по своей природе, и поэтому, возникают только в определенных, обусловленных набором выполняющихся команд, точках.

Существует три типа исключительных состояний:

  1. "ловушка" ( *trap* ) - это исключительное состояние, которое возникает в конце команды, которая ее вызвала. Поэтому PC, сохраняемый в стеке, указывает на следующую команду, которая должна была бы нормально выполняться. Любая программа может разрешить или запретить некоторые из ловушек для какой-то конкретной команды;
  2. "нарушение" ( *fault* ) - это исключительное состояние, которое возникает во время выполнения команды и оставляет регистры и память в таком состоянии, что при устранении условий для возникновения этой ситуации и рестарте, эта команда будет давать правильные результаты;
  3. "прекращение" ( *abort* ) - это исключительное состояние, также возникающее во время выполнения команды, но, в отличие от нарушений, оставляющее регистры и память в неопределенном состоянии. Поэтому команда не может быть правильно завершена (даже при условии ее рестарта).

В табл. 4 приведены возможные уровни приоритета прерываний процессора и соответствующие им аппаратные события.

Таблица 4.

Уровни приоритета прерываний

+---------------------------------------+--------------------+
|           П р е р ы в а н и я         | Уровень приоритета |
|                                       | прерывания IPL_16  |
+---------------------------------------+--------------------+
| Контроль аппаратных средств           |                    |
| Недействительность стека ядра         |        1F          |
| Недействительность стека прерываний   |                    |
+---------------------------------------+--------------------+
| Сбой питания                          |        1E          |
+---------------------------------------+--------------------+
|                                       |        1D          |
| Ошибки процессора, памяти             |        1C          |
| или шины                          }   |        1B          |
|                                       |        1A          |
|                                       |        19          |
+---------------------------------------+--------------------+
| Таймер                                |        18          |
+---------------------------------------+--------------------+
|                                       |        17          |
|                                       |        16          |
|                                       |        15          |
| Прерывания устройств              }   |        14          |
|                                       |        13          |
|                                       |        12          |
|                                       |        11          |
|                                       |        10          |
+---------------------------------------+--------------------+
| События математического обеспечения   |                    |
+---------------------------------------+--------------------+
|                                       |        0F          |
|                                       |        0E          |
| Р е з е р в                           |        0D          |
|                                       |        0C          |
+---------------------------------------+--------------------+
|                                       |        0B          |
|                                   }   |        0A          |
| Драйверы устройств                    |        09          |
|                                       |        08          |
|                                       |                    |
+---------------------------------------+--------------------+
| Таймер процесса                       |        07          |
+---------------------------------------+--------------------+
| Очередь AST                           |        06          |
+---------------------------------------+--------------------+
| Резерв                                |        05          |
+---------------------------------------+--------------------+
| Почта ввода/вывода                    |        04          |
+---------------------------------------+--------------------+
| Планировщик процесса                  |        03          |
+---------------------------------------+--------------------+
| Передача AST                          |        02          |
+---------------------------------------+--------------------+
| Резерв                                |        01          |
+---------------------------------------+--------------------+
| Уровень пользовательского процесса    |        00          |
+---------------------------------------+--------------------+


1.6. Состояние процессора

При обслуживании особых ситуаций состояние процессора должно быть сохранено для того, чтобы прерванный процесс мог нормально продолжиться. В основном это делается путем сохранения в стеке PC (который указывает либо на команду, которая выполнялась, либо на следующую) и *PSL* . PC и *PSL* в дальнейшем восстанавливаются по команде возврата из прерывания или исключительной ситуации ( *REI* ).

Одной из главных характеристик текущего процесса или текущего состояния процессора является длинное слово состояния процессора. Это слово состоит из *processor status word* (PSW) - слова состояния процессора (разряды <0-15> PSL ), которое доступно пользователю и слово привилегированного состояния (разряды <16-31> PSL ), которое доступно привилегированному программному обеспечению. PSL приводится на рис. 7.

Значения полей PSL следующие:

Разряды        Поле         Значение

<3-0>          N,Z,V,C      Коды условий
<4>            T            Бит разрешения трассы
<5>            IV           Бит разрешения ловушки целочисленного переполнения
<6>            FU           Бит разрешения ловушки плавающего недополнения
<7>            DV           Бит разрешения ловушки десятичного переполнения
<15-8>         0            Резерв, должны быть нулями
<20-16>        IPL          Уровень приоритета прерывания
<21>           0            Резерв, должен быть нуль
<23-22>        PRM          Режим предыдущего доступа (Previous access mode )
<25-24>        CRM          Режим текущего доступа (Current access mode )
<26>           IS           Бит использования стека прерываний (Interrupt stack )
<27>           FPD          Первая часть выполнена (First part done )
<29-28>        0            Резерв, должны быть нулями
<30>           TP           Запрос трассы
<31>           CM           Признак режима совместимости

Микропрограммная процедура обработки прерываний и исключительных состояний использует в основном поля *IS* , CRM и IPL, поэтому рассмотрим их подробнее:

1) IS . Если IS = 1, то процессор работает со стеком прерываний. При этом необходимо, чтобы CRM = 0 и IPL > 0. Если IS = 0, то процессор работает со стеком, который определен полем CRM в PSL .

2) CRM. Возможны следующие режимы доступа из текущего выполняемого процесса:

  • 0 - ядро ( *kernel* )
  • 1 - исполнитель ( *executive* )
  • 2 - супервизор ( *supervisor* )
  • 3 - пользователь ( *user* )

3) PRM. Это поле загружается из поля текущего режима при исключительных состояниях и командами СНМХ, сбрасывается прерываниями и восстанавливается командой REI.

4) IPL . Текущий приоритет процессора меняется в пределах от 0 до 1F. Процессор будет разрешать прерывания только на уровнях больших, чем текущий уровень процессора.

1.7. Различия между прерываниями и исключительными состояниями

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

1) Исключительное состояние (синхронное событие) возникает при выполнении текущей команды, в то время как прерывание (асинхронное событие) возникает из-за чьей-либо активности в вычислительной системе и это действие может быть независимо от текущей команды.

2) Исключительное состояние, как правило, обрабатывается в контексте процесса, в котором она возникла, в то время как прерывание обслуживается независимо от текущего выполняющегося процесса.

3) IPL процессора обычно не изменяется, когда возникает исключительное состояние. При прерывании IPL всегда повышается.

4) Подпрограммы, обслуживающие исключительные состояния, обычно работают со стеком процесса (стеком режима ядра - KSP), а подпрограммы, обслуживающие прерывания, со стеком процессора (стеком прерываний - ISP ).

5) Разрешенные исключительные состояния всегда инициируются немедленно, независимо от IPL процессора, а прерывания откладываются до тех пор, пока IPL процессора не станет ниже IPL запрашивающего прерывания.

6) Большинство исключительных состояний не может быть запрещено. Однако, если причина этого состояния возникает, когда эта ситуация запрещена, то инициация данного исключительного состояния не происходит даже после того, когда запрет отменяется. Если же возникает условие прерывания в тот момент, когда оно запрещено или IPL запроса меньше или равно IPL процессора, то данное прерывание в конечном итоге будет удовлетворено, как только возникнет подходящая ситуация, если условие прерывания еще существует.

7) При прерывании поле PRM в PSL всегда устанавливается в режим ядра, а при исключительном состоянии в него переписывается поле CRM .

8) Вследствие асинхронного характера условие прерывания всегда фиксируется аппаратно и переход на соответствующую микропрограмму обработки осуществляется с помощью аппаратных средств. Для исключительного состояния, наряду с таким способом перехода на микропрограмму обработки, возможен и чисто микропрограммный переход. Это связано с синхронностью исключительных состояний - можно заранее определить точки в микропрограммах, из которых возможен переход на микропрограмму обработки соответствующего исключительного состояния.

1.8. Основные параметры прерываний и исключительных состояний

Векторы

Переход на подпрограммы обслуживания особых ситуаций осуществляется с помощью специальных векторов, которые представляют собой длинные слова, интерпретируемые следующим образом:

1) Биты <1:0> содержат интерпретируемый код:

  • 0 - обслужить событие через стек ядра. Если работа уже выполняется через стек прерываний, то обслужить событие через стек прерываний.
  • 1 - обслужить событие через стек прерываний. Если это событие является исключительным состоянием, то IPL повышается до 1F;
  • 2 - обслужить событие в перезаписываемой управляющей памяти. Если эта память не используется, то процессор переходит на команду останова HALT;
  • 3 - процессор переходит на HALT.

2) Биты <31:2> содержат виртуальный адрес подпрограммы обслуживания - для кодов 0 и 1.

Системный управляющий блок (SCB).

Все векторы обслуживания прерываний и исключительных состояний находятся в системном управляющем блоке ( SCB - *System Control Block* ), который представляет собой две смежных страницы памяти. Физический адрес первой страницы содержится в привилегированном регистре - базе системного управляющего блока SCBB ( *SCB base* ).

Векторы устройств на *UNIBUS* находятся во второй странице, адрес которой получается добавлением к адресу, содержащемуся в SCBB, константы (200)₁₆. Разрешенными для этих устройств считаются только векторы (200-3FC)₁₆.

Основные параметры прерываний и исключительных состояний приведены в табл.5.

Таблица 5

Таблица основных параметров особых ситуаций

+----------------------+------------+------------------+--------+-----------+------+--------------------+
| Наименование особых  | Тип        | Уровень приори-  | Вектор | Источник  | Код  | Параметры, загру-  |
| ситуаций             | ситуации   | тета прерывания  | 16     | (а/МП)*   | 16   | жаемые в стек      |
|                      |            | IPL_16           |        |           |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 1. Машинный сбой     | Прекращение| 1F**             | 04     | Контроллер|  6?  | См.Примечание 1    | <Неразборчиво, 4 зачеркнуто, исправлено на 6 или 8>
|                      | / ловушка  |                  |        | (а)       |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 2. Недостоверный стек| Прекращение| 1F**             | 08     | Процессор |  2   | РНК***, PSL        | <D зачеркнуто, исправлено на 2>
| ядра                 |            |                  |        | (а)       |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 3. Недостоверный стек| Прекращение| 1F**             | -      | Процессор |  2   | РНК, PSL и причи-  | <1 зачеркнуто, исправлено на 2>
| прерываний           |            |                  |        | (а)       |      | на останова оста-  |
|                      |            |                  |        |           |      | ются на регистрах  |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 4. Сбой питания      | Прерывание | 1E               | 0C     | Адаптер   |  D   | PC,PSL             | <5 зачеркнуто, исправлено на D>
|                      |            |                  |        | (а)       |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 5. Резервная/привиле-| Нарушение  | -                | 10     | Процессор | -    | РНК, PSL           |
| гированная команда   |            |                  |        | (МП)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 6. Резервная команда | Нарушение  | -                | 14     | Процессор | -    | РНК, PSL           |
| пользователя         |            |                  |        | (МП)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 7. Резервный операнд | Нарушение/ | -                | 18     | Процессор | 7    | РНК, PSL           | <E зачеркнуто, исправлено на 7>
|                      | прекращение|                  |        | (а/МП)    |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 8. Резервный метод   | Нарушение  | -                | 10C    | Процессор | -    | РНК, PSL           |
| адресации            |            |                  |        | (МП)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 9. Нарушение управле-| Нарушение  | -                | 20     | Процессор |  4   | См.Примечание 2    | <2 зачеркнуто, исправлено на 4>
| ния доступом         |            |                  |        | (а)       |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 10. Запрет трансляции| Нарушение  | -                | 24     | Процессор |  5   | См.Примечание 2    | <3 зачеркнуто, исправлено на 5>
|                      |            |                  |        | (а)       |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 11. Трассировка      | Нарушение  | -                | 28     | Процессор |  E   | РНК, PSL           | <7 зачеркнуто, исправлено на E>
|                      |            |                  |        | (а)       |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 12. Команда ВРТ      | Нарушение  | -                | 2C     | Процессор | -    | РНК, PSL           |
|                      |            |                  |        | (МП)      |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 13. Арифметические   | Ловушка    | -                | 34     | Процессор |8-A   | См.Примечание 3    | <B зачеркнуто, исправлено на A>
| ловушки              |            |                  |        | (а/МП)    |нрзб,A|                    | <неразборчиво>
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 14. Команды:  СНМК   | Ловушка    | -                | 40     | Процессор.| -    | См.Примечание 4    |
|               СНМЕ   |            |                  | 44     | (МП)      |      |                    |
|               СНМS   |            |                  | 48     |           |      |                    |
|               СНМИ   |            |                  | 4C     |           |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 15. Зависание по     | Прерывание | 1D               | 60     | Контроллер| C    | PC, PSL            |
| записи в память      |            |                  |        |           |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 16. Исправимые ошибки| Прерывание | 1A               | 54     | Контроллер| C    | PC,PSL             |
| памяти               |            |                  |        | (а)       |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 17. Таймер           | Прерывание | 18               | C0     | Адаптер   |  D   | PC, PSL            | <5 зачеркнуто, исправлено на D>
|                      |            |                  |        | (а)       |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 18. Консольный       | Прерывание | 14               | F8     | Адаптер   |  D   | PC,PSL             | <5 зачеркнуто, исправлено на D>
| терминал (приемник)  |            |                  |        | (а)       |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 19. Консольный       | Прерывание | 14               | FC     | Адаптер   |  D   | PC, PSL            | <5 зачеркнуто, исправлено на D>
| терминал (передатчик)|            |                  |        | (а)       |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 20. Программные      | Прерывание | 1...F            | 84...BC| Адаптер   | D?   | PC, PSL            |  <"-" исправлено на D?>
| прерывания           |            |                  |        | (а)       |      |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+
| 21. Прерывания       | Прерывание | 14-17            |200-3FC | Адаптер   |      | PC, PSL            |  <5-6 зачеркнуто, исправлено на D>
| устройств            |            |                  |        | (а)       | D    |                    |
+----------------------+------------+------------------+--------+-----------+------+--------------------+

* - аппаратный/микропрограммный характер соответствующего события;

** - для этих событий IPL = 1F, если 1:0 разряды вектора равны 1;

*** - РНК - регистр начала команды. Он указывает на код операции команды, при выполнении которой произошло нарушение или прекращение.

П р и м е ч а н и я к табл.5:

1. При машинном сбое в стеке сохраняются следующие параметры:

  • (SP) Параметр длины (равен 28₁₆).
  • (SP)+4 Код ошибки (для ошибок памяти, например, равен 2).
  • (SP)+8 Регистр виртуального адреса (РКВА).
  • (SP)+C PC во время сбоя.
  • (SP)+10 Регистр данных памяти (MDR).
  • (SP)+14 Сохраненный регистр режима ( SMR).
  • (SP)+18 Регистр зависания по чтению-модификации-записи (RLTO).
  • (SP)+1C Регистр групповой четности буфера трансляции (TBGPR).
  • (SP)+20 Регистр ошибок КЭШ-памяти (CAER).
  • (SP)+24 Регистр ошибок шины (BER).
  • (SP)+28 Регистр суммарных ошибок при машинном сбое (MCESR).
  • (SP)+2C PC, указывающий на код операции.
  • (SP)+30 PSL.

2. При исключительных состояниях от диспетчера памяти в стеке сохраняются:

  • (SP) Регистр суммарных ошибок диспетчера памяти.
  • (SP)+4 Виртуальный адрес в странице нарушения (РКВА).
  • (ST)+8 РНК.
  • (SP)+C PSL.

3. При арифметических ловушках в стеке, кроме PC, также сохраняется код арифметической ловушки, который имеет следующие значения:

     Код     Тип арифметической ловушки

      1       Целочисленное переполнение
      2       Целочисленное деление на 0
      3       Плавающее  переполнение
      4       Плавающее/десятичное деление на 0
      5       Плавающее обнуление
      6       Десятичное переполнение
      7       Диапазон приписки

4. При выполнении команд смены режима в стек, кроме PC, PSL загружается операнд команды ( *code* ) с расширенным знаком.

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

Контроллер фиксирует аппаратные ошибки, связанные с работой памяти и сообщает об этом процессору с помощью сигналов *INRC* (прерывание контроллера) и MCH (машинный сбой). Адаптер фиксирует все остальные прерывания, проводит разбор приоритетов между ними и сообщает процессору о наличии запроса прерывания сигналом *INRA* (прерывание адаптера). Кроме этого в адаптере находится часть внутренних регистров системы, которые связаны с обработкой прерываний.

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

1.9. Блок прерываний БПР

1.9.1. На рис.8 приведена структурная схема БПР процессора. Ниже перечислены основные блоки, входы и выходы БПР.

1) БСБПР - блок синхронизации БПР.

2) БРП - блок разбора приоритетов.

3) ДШРИП - дешифратор сброса источника прерываний и исключительных состояний.

4) РИП - регистр источников прерываний и исключительных состояний.

5) Входы:

  • КК - признак конца команды;
  • PA - выход элемента ИЛИ, на входах которого собраны все нарушения и прекращения;
  • 1T - выход элемента ИЛИ, на входах которого собраны все прерывания и ловушки;
  • 5CN - запрос недостоверного стека ядра;
  • SINN - запрос недостоверного стека прерываний;
  • НУД - запрос нарушения управления доступом;
  • ЗТ - запрос запрета трансляции;
  • MCH - запрос машинного сбоя;
  • REZ - запрос резервного операнда;
  • INRA - запрос адаптера;
  • HALT - запрос останова;
  • T - запрос трассировки;
  • FUZ - запрос ловушки плавающего недополнения;
  • DVV - запрос ловушки десятичного переполнения;
  • IVV - запрос ловушки целочисленного переполнения;
  • FVV - запрос ловушки плавающего переполнения;
  • INRC - запрос прерывания контроллера;
  • РИП - сигнал сброса источника прерывания.

6) Выходы:

  • RA - сигнал запроса сбоя;
  • IRQ - сигнал запроса прерывания;
  • ЗРПП - сигнал записи регистра признака прерывания и исключительного состояния (РПП);
  • ЗРИП - сигнал записи РИП;
  • РПП(0-3) - код прерываний и исключительных состояний;
  • 5РИП - сигнал сброса конкретного источника (в соответствии с кодом).

1.9.2. Алгоритм работы БПР

При поступлении в БПР сигналов прерываний - ловушек или сигналов нарушений-прекращений запускается БСБПР - по сигналу IT или PA соответственно. PA может возникать в любой момент выполнения команды, IT возникает лишь после окончания команды, перед выполнением следующей команды. БСБПР вырабатывает сигналы RA или IRQ , которые поступают на ПЛМ ДШК, ЗРИП, по которому производится запись в РИП всех имеющихся к этому времени запросов. В БРП, в соответствии с самым высокоприоритетным запросом, формируется код, который поступает на входы РПП (находящегося в блоке управления ПЗУ) и на входы ДШ КИП для последующего сброса источника запроса по сигналу РИП

Запись в РПП производится сигналом ЗРПП, также выработанным БСБПА.

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

В табл. 5 в графе "Код₁₆" приведены шестнадцатеричные коды аппаратных особых ситуаций.

Приоритетность между прерываниями и ловушками в БПР принята следующая (в порядке убывания приоритетов):

  1. Арифметические ловушки.
  2. Прерывания контроллера.
  3. Прерывания адаптера.
  4. Ловушка трассы.

На рис. 9 приведена временная диаграмма работы БПР.

1.9.3. Алгоритм обработки прерываний и исключительных состояний

Микропрограммная процедура обработки ситуаций сводится, в основном, к двум действиям:

1) сохранению текущего состояния (PC(РНК), *PSL* , параметры (если нужно));

2) формированию нового состояния (загрузка PC начальным адресом программы обработки особой ситуации, формирование нового *PSL* ).

Более подробно эти два действия, и другие описаны в алгоритме обработки прерываний и исключительных состояний на рис.10.


1.10. Временные диаграммы процессора, идентификаторы обменов

1.10.1. Ко всем временным диаграммам относится следующее:

1) Если на вход тестирования *TEST* подан низкий уровень, то новый обмен по микрокомандной магистрали не начнется, пока ответный сигнал *MSDS* от накопителя микрокоманд не закончится. По магистрали AD(0-31) не начнется новый обмен, пока не закончатся ответные сигналы *SAS* и *SDS* от предыдущего обмена. Если на входе *TEST* высокий уровень, то новые обмены по магистралям начинаются независимо от окончания ответных сигналов. При этом окончание сигналов *SAS* и *SDS* должно происходить асинхронно с минимальным временем задержки по окончании сигналов *MAS* и *MDS* . Представленные ниже временные диаграммы справедливы для высокого уровня на входе *TEST*.

2) Интерфейсные сигналы при магистрали AD(0-31): *MAS* , *PGB* , *PCRQ* , *MDS* , *SEL* , *DMAK* вырабатываются выходами с тремя состояниями. На эти выходы необходимо ставить резисторы 2,7 кОм к шине источника питания + Ucc. После окончания сигналов в процедурах обменов на этих выходах осуществляется "подброс в "1" на время 0,5 T*CLC* , причем на выходах *MAS*, *PCRQ* , *DMAK* в отрицательной фазе CLC, а на выходах *PGB* , *MDS* и *SEL* - в положительной. Также в состояние активного высокого уровня эти выходы приводятся от низкого уровня на входе *SR* при начальном пуске ЦПР, причем для активного высокого уровня на выходе *MAS* необходимо наличие высокого уровня на входе *ACTR*.

3) Выходы AD(0-31) также имеют три состояния. В третьем состоянии выходы AD(0-31) находятся при приеме команд или данных, от низкого уровня на входе *SR* , в процедуре "Запись с перехватом" и при предоставлении прямого доступа к памяти.

В состояние активного высокого уровня выходы AD(0-31) приводятся между обменами по окончании сигнала *MDS* .

Временная диаграмма процедуры "Чтение микрокоманды" представлена на рис. 11. Минимальный цикл приема микрокоманды составляет 2 T*CLC* . [зачёркнуто: Ответный сигнал *MSDS* от накопителя микрокоманд может быть также статическим низким уровнем - в отличие от представленного на рис. 11.]

На временной диаграмме представлен дополнительно внутренний сигнал ЦПР *WBMC* - запись в буфер микрокоманд.

Временная диаграмма процедуры "Адресное чтение" представлена на рис. *12*. Минимальный цикл адресного чтения 3T*CLC*. Низкий уровень сигнала *SAS* принимается в отрицательной фазе *CLC* , затем выдается сигнал *MDS* низкого уровня и открывается внутренняя магистраль MD(0-31) для приема данных. В целях обеспечения быстродействия на частоте 10 МГц низкий уровень сигнала *SAS* необходимо подавать в течение первых 25 нс отрицательной фазы *CLC* . Низкий уровень сигнала *SDS* принимается также в отрицательной фазе *CLC* , и в следующей положительной фазе *CLC* заканчивается сигнал *MDS* . Для обеспечения быстродействия необходимо выполнить такие же требования, как и для сигнала *SAS* .


Временная диаграмма "Безадресное чтение команды" представлена на рис. *13* . Минимальный цикл процедуры 2 T*CLC* . Прием сигнала *SDS* происходит также, как и при адресном чтении и требования для обеспечения быстродействия те же.


Временная диаграмма процедуры "Запись" представлена на рис. *14* . Минимальный цикл процедуры - 4T*CLC* . Прием сигналов *SAS* и *SDS* и требования по обеспечению быстродействия как и при адресном чтении.


Временная диаграмма процедуры "Чтение-модификация-запись" представлена на рис. *15* . Минимальный цикл процедуры - 7 T*CLC* . Прием сигналов *SAS* и *SDS* и требования по обеспечению быстродействия такие как и при адресном чтении.


Временная диаграмма процедуры передачи адреса при пересечении данными границы страницы представлена на рис. *16* . Сигнал *PGB* при первом появлении сопровождает адрес перед границей страницы, при втором появлении сопровождает адрес начала новой страницы. Между двумя адресами (рис. *16* ) возможно выполнение обменов, например, "Чтение PTE", если пуст "Буфер трансляции", или "Безадресное чтение команды". Для обеспечения быстродействия на частоте 10 МГц требования к сигналам *SAS* и *SDS* такие же, как и при адресном чтении.

Временная диаграмма отказа от записи в процедуре "Чтение-модификация-запись PTE" представлена на рис. *17*. Отказ от записи *PTE* происходит, когда страница уже модифицировалась (бит модификации М <26> регистра PTE установлен в "1").

Временные диаграммы процедур чтения и записи внутренних регистров *IPR* , размещенных в процессоре ( *POBR* , *POLR* , *P1BR* , *P1LR* , *SBR*, *SLR*, *MAPEN* , *TBIA* , *TBIS* , *ACCS* ) представлены на рис. *18,19*. Внешние сигналы *SAS* , *SDS* не требуются, вместо них в процессоре вырабатываются внутренние сигналы такого же назначения.

Временная диаграмма чтения внешнего регистра начальных условий представлена на рис. *20* . Для чтения этого регистра предназначен выход *SEL* . Сигнал *SEL* возникает при чтении системной памяти (A31, A30 = "1") и при A23 = "1". На временной диаграмме сигнал *SEL* аналогичен сигналу *MDS* .

Временная диаграмма сигналов сопровождения процедуры захвата магистрали при прямом доступе к памяти представлена на рис. *21*.


Сигнал *DMR* магистрали *Q-BUS* преобразуется микросхемой адаптера магистрали КЛ839ВВ1 в сигнал *DMRQ* , поступающий на процессор. При отсутствии обменов процессор принимает сигнал *DMRQ* в низкой фазе *CLC* и через период *CLC* выдает сигнал разрешения прямого доступа к памяти *DMAK* , который микросхема АМ преобразует в сигнал *DMGO* магистрали *Q-BUS*. Окончание сигнала *DMAK* происходит в той же фазе низкого уровня CLC в какой принимается окончание сигнала *DMRQ* . На временной диаграмме также представлен перевод выходов магистрали AD(0-31) в третье состояние и выход из третьего состояния. При наличии обмена сигнал *DMAK* появится только по его окончании.

Временные диаграммы адресного чтения и адресной записи с перехватом сопроцессором обменов с памятью представлены на рис. *22, 23* . Обмен с перехватом происходит при A31 = "0", A30 = "1". О том, что микросхема сопроцессора начинает обмен с памятью, свидетельствует сигнал *ACTR* . Приняв асинхронно этот сигнал, процессор переводит выход *MAS* в третье состояние, предоставляя возможность сопроцессору выставить активный низкий уровень *MAS*спрц и далее сопроцессор читает данные из памяти или записывает данные в память также, как выполняет эти процедуры процессор. При записи с перехватом выходы AD(0-31) процессора переводятся в третье состояние по окончании адреса в низкой фазе· *CLC* и выходят из третьего состояния (подброс в "1") по окончании низкого уровня на шине *MDS* .

Рис. 22 отсутствует


Временная диаграмма процедуры "Чтение-модификация-запись с перехватом" представлена на рис. *24*.

Временная диаграмма процедуры "Двойное адресное чтение" представлено на рис. *25*.


Временная диаграмма процедуры "Двойная запись" представлена на рис. *26*.


Двойное чтение и запись выполняются при обменах с четверными словами.

На рис. *27-30* представлены временные диаграммы различных обменов с внешними и внутренними сигналами процессора.

К внутренним сигналам процессора относятся:

  • WBMC - запись в буфер микрокоманд;
  • WMCE - запись в регистр микрокоманд;
  • NRFW - сигнал записи поля чтения;
  • SRDI - сигнал чтения источника;
  • SWT2 - сигнал записи в приемник;
  • WTWA - запись в регистр виртуального адреса;
  • WTPA - запись в регистр физического адреса;
  • ADRE - сигнал разрешения выдачи адреса в системную магистраль AD(0-31);
  • DTIE - сигнал приема команд и данных на внутреннюю магистраль MD(0-31);
  • WCE - сигнал записи в буферные регистры команд;
  • WTBDR - сигнал записи в буферные регистры данных;
  • DTOE - сигнал выдачи данных в системную магистраль AD(0-31) при записи;
  • DATL - сигнал выдачи данных с выходного буферного регистра данных во внутреннюю магистраль MD(0-31).

1.10.2. Идентификаторы обменов

Старший байт физического адреса содержит идентификаторы обменов. В таблицах, приведенных ниже, даны логические значения кодов и электрические уровни на магистрали AD .

+----+----+----+----+----+----+----+----+
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
+----+----+----+----+----+----+----+----+
|         |         |                   |
| Направ- | Формат  |    Код обмена     |
| ление   | данных  |                   |
| обмена  |         |                   |
+---------+---------+-------------------+

1.10.2.1. Направление обмена

+------------+---------+------------+---------+-------------------------------+
| 31 разряд            | 30 разряд            | Направление обмена            |
+------------+---------+------------+---------+                               |
| логические | уровень | логические | уровень |                               |
| значения   |         | значения   |         |                               |
+------------+---------+------------+---------+-------------------------------+
| 0          | высокий | 0          | высокий | Основная память, регист-      |
|            |         |            |         | ры внешних устройств          |
+------------+---------+------------+---------+-------------------------------+
| 0          | высокий | 1          | низкий  | Основная память, с            |
|            |         |            |         | перехватом магистрали         |
|            |         |            |         | сопроцессором                 |
+------------+---------+------------+---------+-------------------------------+
| 1          | низкий  | 0          | высокий | Внутренние регистры           |
+------------+---------+------------+---------+-------------------------------+
| 1          | низкий  | 1          | низкий  | Системная память              |
+------------+---------+------------+---------+-------------------------------+

1.10.2.2. Формат данных

+------------+---------+------------+---------+------------------+
| 29 разряд            | 28 разряд            | Формат данных    |
+------------+---------+------------+---------+                  |
| логические | уровень | логические | уровень |                  |
| значения   |         | значения   |         |                  |
+------------+---------+------------+---------+------------------+
| 0          | высокий | 0          | высокий | Двойное слово    |
+------------+---------+------------+---------+------------------+
| 0          | высокий | 1          | низкий  | Слово            |
+------------+---------+------------+---------+------------------+
| 1          | низкий  | 0          | высокий | Четверное слово  |
+------------+---------+------------+---------+------------------+
| 1          | низкий  | 1          | низкий  | Байт             |
+------------+---------+------------+---------+------------------+

1.10.2.3. Код обмена

+------+--------+------+--------+------+--------+------+--------+-----------+
| 27 разряд     | 26 разряд     | 25 разряд     | 24 разряд     | Обмен     |
+------+--------+------+--------+------+--------+------+--------+           |
| лог. | уровень| лог. | уровень| лог. | уровень| лог. | уровень|           |
| знач |        | знач |        | знач |        | знач |        |           |
+------+--------+------+--------+------+--------+------+--------+-----------+
| 0    | высокий| X    | X      | 0    | высокий| 1    | низкий | Чтение    |
|      |        |      |        |      |        |      |        | данных    |
+------+--------+------+--------+------+--------+------+--------+-----------+
| 1    | низкий | X    | X      | 0    | высокий| 1    | низкий | Чтение    |
|      |        |      |        |      |        |      |        | команд    |
+------+--------+------+--------+------+--------+------+--------+-----------+
| 0    | высокий| X    | X      | 1    | низкий | 0    | высокий| Запись    |
+------+--------+------+--------+------+--------+------+--------+-----------+
| 0    | высокий| X    | X      | 1    | низкий | 1    | низкий | Чтение-   |
|      |        |      |        |      |        |      |        | модифика- |
|      |        |      |        |      |        |      |        | ция -     |
|      |        |      |        |      |        |      |        | запись    |
+------+--------+------+--------+------+--------+------+--------+-----------+

где X - безразличное значение, остальные комбинации 24-27 разрядов - резервные.

1.11. Функциональные и электрические схемы входных и выходных каскадов

Функциональные схемы входных и выходных каскадов представлены на рис. 31-39.

На всех рисунках численное значение около логических элементов обозначает ширину транзисторов элементов в мкм: сверху р-типа, снизу п-типа.

Внутренние тактовые сигналы синхронизации φ , φ̄ соответствуют следующим фазам входного сигнала CLCI: φ соответствует CLCI; φ̄ - CLCI̅.

Электрические схемы входов и входов/выходов представлены на рис. 40,41.

1.12. Система микрокоманд

В микропроцессорной системе "Электроника 32" имеется несколько форматов микрокоманд.

Микрокоманды МА, МВ, МС

Форматы МА, МВ, МС это содержательные микрокоманды операционного блока (ОБ), остальные форматы микрокоманд не воспринимаются ОБ и служат для управления выборкой микрокоманд из ПЗУ-микрокода, а также для управления ПЛМ-дешифратора команд (ПЛМ ДШК).

Форматы микрокоманд операционного блока МА, МВ, МС приведены на рис. 42.

Расшифруем значение полей содержательных микрокоманд.

ФМК

Поле "ФМК" - формат микрокоманды

+-------+----+----------------------------------------------+-------------+
| Разряды МК | Наименование формата микрокоманды            | Обобщенное  |
+-----+------+                                              | обозначение |
| 31  |  30  |                                              |             |
+-----+------+----------------------------------------------+-------------+
|  0  |  0   | Одноадресная  ОБ                             |     MA      |
+-----+------+----------------------------------------------+-------------+
|  0  |  1   | Двухадресная  ОБ                             |     MB      |
+-----+------+----------------------------------------------+-------------+
|  I  |  0   | Трехадресная  ОБ                             |     MC      |
+-----+------+----------------------------------------------+-------------+

ФД

Поле "ФД" - формат данных

+-------+----+-------------------------------------------------------+
| Разряды МК | Формат данных в ОБ                                    |
+-----+------+                                                       |
| 29  |  28  |                                                       |
+-----+------+-------------------------------------------------------+
|  0  |  0   | Двойное слово (ДС) - 32 разряда                       |
+-----+------+-------------------------------------------------------+
|  0  |  1   | Слово (СЛ) - 16 разрядов (возможно изменение          |
|     |      | только мл.части РСП)                                  |
+-----+------+-------------------------------------------------------+
|  1  |  1   | Байт  (БТ) - 8 разрядов                               |
+-----+------+-------------------------------------------------------+
|  1  |  0   | Резервный код "ФД" , признак подсветки приема         |
|     |      | в регистр косвенной адресации (РКА)                   |
+-----+------+-------------------------------------------------------+

КОП2

Поле "КОП2" - коды операций двухадресных и трехадресных микрокоманд

+----+----+----+------------------+------------------+----------------------+
|   КОП2       |                  |                  |                      |
+ Разряды  МК  +  Обозначение     |  Обозначение     |  Операция            |
| 27 | 26 | 25 |                  |                  |                      |
+----+----+----+------------------+------------------+----------------------+
|  0 |  0 |  0 |   Y → X          |   X → Z          | Пересылка            |
+----+----+----+------------------+------------------+----------------------+
|  0 |  0 |  1 |   X+Y → X        |   X+Y → Z        | Сложение             |
+----+----+----+------------------+------------------+----------------------+
|  0 |  1 |  0 |   X-Y → X        |   X-Y → Z        | Вычитание            |
+----+----+----+------------------+------------------+----------------------+
|  0 |  1 |  1 |   Y-X → X        |   Y-X → Z        | Обр.вычитание        |
+----+----+----+------------------+------------------+----------------------+
|  1 |  0 |  0 |   X⊕Y → X       |   X⊕Y → Z        | MOD2                 |
+----+----+----+------------------+------------------+----------------------+
|  1 |  0 |  I |   X ∨ Y → X      |   X ∨ Y → Z      | Дизъюнкция           |
+----+----+----+------------------+------------------+----------------------+
|  1 |  1 |  0 |   X & Ȳ → X      |   X & Ȳ → Z      | Конъюнкция с         |
|    |    |    |                  |                  | отрицанием           |
+----+----+----+------------------+------------------+----------------------+
|  1 |  1 |  1 |   X & Y → X      |   X & Y → Z      | Конъюнкция           |
+----+----+----+------------------+------------------+----------------------+

Здесь: Для двухадресных микрокоманд:

      Х - операнд в поле Х (МК 19-15),
      Y - операнд в поле У (МК 24-20),

Для трехадресных микрокоманд:

  Х - операнд в поле Х (МК 19-15),
  Y - операнд в поле У (МК 24-20),
  Z - операнд в поле Z (МК 11-7 ).

КОП1

Поле "КОП1" - коды операций одноадресных микрокоманд

+----+----+----+----+------------------+------------------------------------+
|      КОП1         |                  |                                    |
+    Разряды МК     +   Обозначение    |         О п е р а ц и я            |
| 27 | 26 | 25 | 24 |                  |                                    |
+----+----+----+----+------------------+------------------------------------+
|  O |  O |  O |  O |   M → X          | Пересылка                          |
+----+----+----+----+------------------+------------------------------------+
|  O |  O |  O |  1 |                  | Резерв                             |
+----+----+----+----+------------------+------------------------------------+
|  O |  O |  1 |  O |   X + M → X      | Сложение                           |
+----+----+----+----+------------------+------------------------------------+
|  O |  O |  1 |  1 |   X → X          | Пересылка                          |
+----+----+----+----+------------------+------------------------------------+
|  O |  1 |  O |  O |   X - M → X      | Вычитание                          |
+----+----+----+----+------------------+------------------------------------+
|  O |  1 |  O |  1 |                  | Резерв                             |
+----+----+----+----+------------------+------------------------------------+
|  O |  1 |  1 |  O |   M - X → X      | Обратное вычитание                 |
+----+----+----+----+------------------+------------------------------------+
|  O |  1 |  1 |  1 |   X → X̄          | Инверсия                           |
+----+----+----+----+------------------+------------------------------------+
|  1 |  O |  O |  O |   X⊕M → X        | MOD2                               |
+----+----+----+----+------------------+------------------------------------+
|  1 |  O |  O |  1 |   АЛ(Х)          | Арифметический сдвиг               |
|    |    |    |    |                  | влево                              |
+----+----+----+----+------------------+------------------------------------+
|  1 |  O |  1 |  O |   X ∨ M → X      | Дизъюнкция                         |
+----+----+----+----+------------------+------------------------------------+
|  1 |  O |  1 |  1 |   ЦЛ(Х)          | Циклический сдвиг влево            |
+----+----+----+----+------------------+------------------------------------+
|  1 |  1 |  O |  O |   X & M̄ → X      | Конъюнкция с отрицанием            |
+----+----+----+----+------------------+------------------------------------+
|  1 |  1 |  O |  1 |   АП(Х)          | Арифметический сдвиг               |
|    |    |    |    |                  | вправо                             |
+----+----+----+----+------------------+------------------------------------+
|  1 |  1 |  1 |  O |   X & M → X      | Конъюнкция                         |
+----+----+----+----+------------------+------------------------------------+
|  1 |  1 |  1 |  1 |   ЦП(Х)          | Циклический сдвиг вправо           |
+----+----+----+----+------------------+------------------------------------+

Здесь Х - операнд по адресу в поле Х (МК 19-15), М - модификатор, или константа, по адресу в поле АМ (МК 23-20), (т.е. в одноадресной микроинструкции константа читается по полю "Y").

ПС

Поле "ПС" - прием состояния

+-------+----+------------------------------------------+
|      ПС    |                                          |
+------------+          Прием  состояния                |
| разряды МК |                                          |
+----+--+----+                                          |
| 14 |  13   |                                          |
+----+-------+------------------------------------------+
|  O |  O    | Запись признаков  N, Z, V, C        (ЗС) |
+----+-------+------------------------------------------+
|  1 |  O    | Запись  N, Z, V  ; Сохранение  C    (МС) |
+----+-------+------------------------------------------+
|  O |  1    | Запись  N, Z ,обнуление  V, C       (НV) |
+----+-------+------------------------------------------+
|  1 |  1    | Нет записи состояния                (НЗС)|
+----+-------+------------------------------------------+

ВА

Поле "ВА" - запись в регистр виртуального адреса (РВА)

  • ВА (МК 12) = 0 - адрес в фазе чтения
  • ВА (МК 12) = I - адрес в фазе записи.

Если поле ВА (МК 12):=0 в одноадресных микроинструкциях циклических сдвигов, то сдвиг осуществляется минуя разряд "С" в регистре состояния процессора (РСП) (см. рис. 43).

Однако, при любых микрооперациях сдвигов, арифметических либо циклических, выдвигаемый разряд заносится в "С" РСП. Кроме того, необходимо учесть, что при арифметическом сдвиге влево, если поле ВА:=0 , то данная микрооперация трансформируется в циклический левый сдвиг.

НО

Поле "НО" - направление обмена

+-------+----+------------------------------------------+
|     НО     |                                          |
+------------+            Тип  обмена                   |
| Разряды МК |                                          |
+----+--+----+                                          |
| 11 |  10   |                                          |
+----+-------+------------------------------------------+
|  0 |  0    | Обмен с основной памятью (ПМ)            |
+----+-------+------------------------------------------+
|  0 |  1    | Обмен с памятью с перехватом в БРА (ПП)  |
+----+-------+------------------------------------------+
|  1 |  0    | Обмен с системными регистрами (СР)       |
+----+-------+------------------------------------------+
|  1 |  1    | Обмен с системной памятью (СП)           |
+----+-------+------------------------------------------+

ФО

Поле "ФО" - формата обмена

+-------+----+------------------------------------------+
|      ФО    |                                          |
+------------+         Тип формата  обмена              |
| Разряды МК |                                          |
+----+-------+                                          |
|  9 |  8    |                                          |
+----+-------+------------------------------------------+
|  0 |  0    | Длинное слово обмена        (ДСО)        |
+----+-------+------------------------------------------+
|  0 |  1    | Слово обмена                (СЛО)        |
+----+-------+------------------------------------------+
|  1 |  1    | Байт обмена                 (БО)         |
+----+-------+------------------------------------------+
|  1 |  0    | Четверное слово обмена      (ЧСО)        |
+----+-------+------------------------------------------+

I) Если в микрокоманде поле "ФО" (МК ⟨9,8⟩) : = ⟨1,0⟩ , то за одну такую микрокоманду можно осуществить сложение/вычитание с переносом (БИТ "С" РСП), используя выходной признак CARRY⟨===⟩ МК⟨9,8⟩:=⟨1,0⟩ (см. синтаксические таблицы микроассемблера). Сложение/вычитание с переносом блокируется, если в данной микрокоманде инициирован обмен.

2) Если в микрокоманде поле "ФО" (МК ⟨9,8⟩ ):= ⟨1,0⟩ , то при использовании микроопераций сдвигов влево (АЛ, ЦЛ) в специальном флажке запоминается признак "V" - переполнение. Логика установления данного флажка такова: если любой из выдвигаемых (на место знакового) разрядов не совпадает со знаковым разрядом, то V:=1, иначе V:=0.

По флагу записи состояния соответствующим образом (в соответствии с данным флажком) устанавливается бит "V" в РСП.

Накопленный признак "V" (флаг переполнения) сбрасывается по концу команды (КК). В противном случае (если поле "ФО" (МК ⟨9,8⟩ ) :≠ ⟨1,0⟩ ) блокируется установка "V" при сдвигах.

КОБ

Рассмотрим теперь поле кода обмена ("КОБ") в формате микрокоманды. Для осуществления двойных обменов (обмены 64-разрядными данными) необходимо использовать формат обмена ("ФО") ЧСО (МК ⟨9,8⟩ : = ⟨I,0⟩ ).

Поле "КОБ" - кода обмена

+-------+----+------------------------------------------+
|    КОБ     |                                          |
+------------+           Тип  обмена                    |
| Разряды МК |                                          |
+----+--+----+                                          |
|  7 | 6 | 5 |                                          |
+----+---+---+------------------------------------------+
|  0 | 0 | 0 | Нет обмена (НОБ)                         |
+----+---+---+------------------------------------------+
|  0 | 0 | 1 | Чтение данных (ЧД)                       |
+----+---+---+------------------------------------------+
|  0 | 1 | 0 | Запись данных (ЗД)                       |
+----+---+---+------------------------------------------+
|  0 | 1 | 1 | Чтение-модификация-запись (ЧЗ)           |
+----+---+---+------------------------------------------+
|  1 | 0 | 0 | Запись в регистр-аккумулятор R(17) (WDAK)|
+----+---+---+------------------------------------------+
|  1 | 0 | 1 | Чтение команды (ЧК)                      |
+----+---+---+------------------------------------------+
|  1 | 1 | 0 | Резерв                                   |
+----+---+---+------------------------------------------+
|  1 | 1 | 1 | Запись смещения в БРД (ЗпЧТ)             |
+----+---+---+------------------------------------------+

Процедура чтение-модификация-запись (ЧМЗ) для работы с 64-разрядными данными имеет свои особенности, а именно:

ЧМЗ трансформируется в чтение 64-разрядных данных, а адрес записи аппаратно помещается в регистр-аккумулятор процессора R(17) и для завершения процедуры ЧМЗ необходимо проинициировать запись по адресу, находящемуся : R(17), т.е. тип обмена ЧМЗ 64-разрядными данными фактически не является неделимой операцией.

Прочие поля

Разряд (МК0) служит для останова выборки микрокоманд из ПЗУ микрокода (S-бит). Если в микрокоманде МК0:=1, то после выборки этой микрокоманды выборка микрокоманд из ПЗУ приостанавливается до следующей записи в регистр адреса ПЗУ, т.е. если установлен S-бит и заполнены хотя бы две ячейки буфера команд (готовность буфера команд), то блок синхронизации дешифратора команд (БС ПЛМ ДШК) запускает новый цикл ПЛМ.

Разряд (МК 4) - признак приема данных - ПД; используется при чтении с буферного регистра данных (БРД). ПД:=1 в случае использования в переменных полях ПХ, ПУ микрокоманды номера регистра - 1F (БРД). (ПД:=1 - признак продвижения БРД).

Разряды (МК 1-3) управляют выдачей переменных полей микрокоманды. Если признак равен 1, то соответствующее поле микрокоманды выдается не из буфера ПЗУ, а из соответствующего регистра переменного поля, который загружается при дешифрации команды.

Признаки:

  • ПХ:=1 — заменить переменное поле Х;
  • ПУ:=1 — то же — У;
  • ПZ:=1 — то же — Z;
  • ПО:=1 — то же — обмена от ПЛМ.

Микрокоманды безусловного ветвления

Рассмотрим формат микрокоманды безусловного ветвления и ветвления по коду прерывания (см. рис. 44 )

Расшифруем значение полей данного формата.

Поле "ФМК" - формат микрокоманды

+-----------------------------------+-----------------------------+-------------+
|     Разряды МК                    | Наименование формата        | Обобщенное  |
+--------+----------+---------+-----+ микрокоманды                | обозначение |
| Поле "ФМК"   |     Нули     | "Пр"|                             |             |
+----+----+----+----+----+----+-----+                             |             |
| 31 | 30 | 29 | 28 | 27 | 26 | 25  |                             |             |
+----+----+----+----+----+----+-----+-----------------------------+-------------+
|  1 |  1 |  1 |  0 |  0 |  0 |  0  | Безусловное ветвление       |     БП      |
|    |    |    |    |    |    |     |                             |             |
+----+----+----+----+----+----+-----+-----------------------------+-------------+
|  1 |  1 |  1 |  0 |  0 |  0 |  1  | Ветвление по коду           |   УПР_КП    |
|    |    |    |    |    |    |     | прерывания                  |             |
+----+----+----+----+----+----+-----+-----------------------------+-------------+

Микрокоманды данного формата в ДБ не передаются (Сигнал ЗпМК - не вырабатывается). Назначение этих микрокоманд - безусловный переход по микроадресу, указанному в разрядах 15-2 микрокоманды. Если разряд модификации микроадреса MADR - установлен (МК 16:=1), то адрес микроперехода формируется следующим образом:

разряды 5-0 адреса заменяются разрядами 5-0 из регистра ОБ с адресом 18, а разряды 13-6 - непосредственно из тела микрокоманды. Далее регистр адреса ПЗУ микрокода (РА) загружается адресом перехода.

Далее, если разряд RETURN установлен (МК 17:=0) , то одновременно с загрузкой регистра адреса ПЗУ микрокода в регистре возврата запоминается адрес микрокоманды, следующей за микрокомандой безусловного перехода. Это предусматривает использование механизма микроподпрограмм с единичным уровнем вложенности. Возврат из микропрограммы осуществляется микроинструкцией типа RTS , которая будет описана ниже. Если же МК 17:=1, то в регистр возврата записи не происходит.

Тот факт, что разряд МК 25:=1 указывает на то, что в качестве индикатора младшей части микроадреса используется четырохразрядный код из регистра - кода прерываний (РКП). Четвертый и пятый разряды адреса микрокоманды - нули. Разряды 13-6 - из тела микрокоманды, т.е. в этом случае осуществляется переход по регистру кода прерываний (УПР_КП).

Микрокоманды условного ветвления

Рассмотрим формат микрокоманды перехода по условиям (см. рис. 45). Поле "ФМК": МК ⟨31, 30, 29⟩ : = ⟨1, 1, 0⟩

При выборке микрокоманды перехода по условию в ОБ не выполняются никаких содержательных операций. Происходит только анализ признаков N, Z, V, C, вырабатываемых в ОБ, и анализ некоторых флагов состояния и выработка сигнала ветвления (BR). Сигнал BR вырабатывается схемой образования условия ветвления и затем поступает на блок управления приемом и обработкой микрокоманд (БПМК), где и формируется сигнал СВМС, который настраивает мультиплексор регистра адреса пуска ПЗУ - микрокода на определенное направление. После выдачи микрокоманды условного перехода она тормозится до появления сигнала готовности ОБ. Если при появлении сигнала готовности ОБ сигнал BR переходит в низкий уровень, то следующая микрокоманда выбирается по адресу, указанному в поле микрокоманды (МК 15-2) и далее из адресов, следующих за этим адресом по порядку. Если сигнал BR при появлении сигнала готовности ОБ остается на высоком уровне, то следующая микрокоманда выбирается по адресу, следующему за микрокомандой ветвления.

Приведем расшифровку разрядов в данном формате микрокоманды:

  • "УВ" (МК 28):=1/0 - условие ветвления по признакам и флагам;
  • "N" (МК 27):=1 - ветвление по признаку отрицательного результата;
  • "Z" (МК 26):=1 - ветвление по признаку нулевого результата;
  • "V" (МК 25):=1 - ветвление по признаку переполнения;
  • "C" (МК 24):=1 - ветвление по признаку переноса.

Т.е. коды условий (N,Z,V,C) задаются в поле признаков (МК 27-24) установкой в 1 соответствующего разряда. Если единицами заданы сразу несколько признаков, то они объединяются по схеме "ИЛИ" при анализе, если разряд УВ:=1 (если разряд УВ:=0, то результирующее условие ветвления формируется по конъюнкции).

  • "FP" (МК 23):=1 - ветвление по универсальному флагу перехода в микропрограмме (Установка/сбhос флага перехода реализуется микропрограммно при помощи микрокоманды "SRF", которая будет описана ниже);
  • "FPD" (МК 22):=1 - ветвление по флагу разрешения прерывания в "длинных" командах (First Part Done );
  • "PRB" (МК 21):=1 - ветвление по флагу PRB для команды PROBEX (флаг PRB взводится аппаратурой диспетчера памяти процессора, если запрещена процедура преобразования адреса);
  • "RST" (МК 20):=1 - ветвление по флагу рестарта;
  • "RD" (МК 19):=1 - ветвление по признаку "регистр-приемник" (Признак "RD" взводится ПЛМ_ДШК при дешифрации команды и используется также для модификации адреса микропрограммы содержательной обработки);
  • "RETURN" (МК 17):=1 - нет записи в регистр возврата;
    (МК 17):=0 - запись в регистр возврата (Подробнее см. описание формата микрокоманды безусловного ветвления);
  • "ЖС" (МК 16):=1 - признак "ждать состояния" кодов условий N,Z,V,C.

Т.е. поле "ЖС" (МК 16) задает режим анализа. Если ЖС:=0, то анализируются те признаки, которые хранятся в РСП в момент приема микрокоманды ветвления. Если ЖС:=1, то анализируются признаки, выработанные в предыдущей микрокоманде, независимо от того, записываются они в РСП или нет (признаки берутся из схемы формирования состояния). В микрокомандах условного ветвления нет возможности модификации младшей части микроадреса в отличии от микроинструкций безусловного перехода и некоторых других, которые будут описаны ниже.

Прочие микрокоманды

Рассмотрим остальные форматы микрокоманд (см. рис. 46 ).

ЗСЧ, ПСЧ

Для организации управления циклами в микропрограмме служат микрокоманды форматов ЗСЧ (загрузка микропрограммного счечика) и ПСЧ (ветвление по счетчику). Микропрограммный счетчик находится в блоке управления ПЗУ микрокода. Этот счетчик загружается микрокомандой формата ЗСЧ (см. рис. 46). После выборки микрокоманды этого формата в счетчик загружается константа, содержащаяся в разрядах 9-2 микрокоманды. Если разряд модификации константы установлен, т.е. МСС (МК 16):=1 , то разряды 5-0 константы заменяются разрядами 5-0 регистра R(18) ОБ. Разряды 7-6 константы берутся непосредственно из микрокоманды.

При выборке микрокоманды ветвления по счетчику (ПСЧ) анализируется состояние счетчика. После анализа состояния счетчика его содержимое декрементируется н_ единицу. Если содержимое счетчика не равно нулю при анализе, то происходит ветвление по адресу, указанному в разрядах 15-2 микрокоманды. При этом, если разряд модификации адреса микроперехода установлен, т.е. MADR (МК 16):=1, то разряды 5-0 микроадреса перехода заменяются разрядами 5-0 регистра R(I8) ОБ. Разряды микроадреса 13-6 берутся непосредственно из микрокоманды. Если содержимое счетчика равно нулю при анализе, то выбирается следующая микрокоманда.

NOP

При выборке микрокоманды NOP (см. рис. 46 ) не производится никаких содержательных операций (пустой заполнитель в микропрограмме).

ACC

Микрокоманды формата АСС (см. рис. 46 ) - микрокоманды, выполняющие аппаратным ускорителем команд расширенной арифметики и плавающей точки (формат АСС будет раскрыт в другом источнике - отчет по НИР "Электроника 32 С"). После выборки микрокоманд этого формата в блоке управления приемом и обработкой микрокоманд вырабатывается сигнал торможения приема микрокоманды (блокируется сигнал WMCE). Это торможение сбрасывается внешним сигналом готовности ускорителя (АССЕ).

RTS

После выборки микрокоманды формата RTS (см. рис. 46 ) - возврат из микроподпрограммы, в регистр адреса ПЗУ - микрокода загружается содержимое регистра возврата (РВ), т.е. адрес микрокоманды, следующей за последней выполняемой микрокомандой безусловного/условного ветвления.

ЧКА

После выборки микрокоманды формата ЧКА (см.рис. 46 ) по адресу, указанному в разрядах I5-2 микрокоманды читается 32-разрядная адресная константа и помещается в регистре констант ПЗУ (RC), который доступен микропрограммно по адресу, указанному по полю чтения константы (поле "Y" в одноадресном формате). Если разряд модификации адреса константы установлен, т.е. MADR (МК 16):=1, то адрес константы формируется следующим образом:

  • разряды 5-0 адреса заменяются разрядами 5-0 регистра 18 ОБ;
  • разряды 13-6 берутся непосредственно из микрокоманды.

ЧЛК

После выборки микрокоманды формата ЧЛК (см. рис. 46) в регистр констант ⟨RC⟩(в разряды 23-0) загружается содержимое микрокоманды из разрядов 25-2. Разряды 31-24 ⟨RC⟩ загружаются нулями, если признак СБ:=0 (МК 1), и единицами, если СБ:=1.

Регистр констант доступен микропрограммно по адресу, указанному по полю чтения константы. Для чтения литеральных и адресных констант используется адрес ⟨6⟩ в блоке констант (БК).

SRF

Микрокоманды формата SRF (см. рис. 46) используются для установки/сброса некоторых функциональных флагов:

+--------------------+-----------+----------------------------------------+
| Наименование флага | Состояние |             Назначение                 |
| (вых. признак)     |           |                                        |
+--------------------+-----------+----------------------------------------+
|                    |           | Устанавливает торможение по            |
|       WTMM         | МК 25:=1  | приему микрокоманды (блоки-            |
|                    |           | рует WMCE) до конца работы             |
|                    |           | диспетчера памяти                      |
+--------------------+-----------+----------------------------------------+
|       SFП1         | МК 21:=1  | Установка универсального               |
|                    |           | флага перехода                         |
+--------------------+-----------+----------------------------------------+
|       RFП1         | МК 20:=1  | Сброс универсального флага             |
|                    |           | перехода                               |
+--------------------+-----------+----------------------------------------+
|       ИНК          | МК 1:=1   | Инкремент номера регистра              |
+--------------------+-----------+----------------------------------------+
|       ДЕК          | МК 5:=1   | Декремент номера регистра              |
+--------------------+-----------+----------------------------------------+
|                    |           | Сброс конвейера приема ко-             |
|       ОСТ          | МК 4:=1   | манд, буфера команд, оста-             |
|                    |           | нов ДШК                                |
+--------------------+-----------+----------------------------------------+
|                    |           | Устанавливает торможение по            |
|                    |           | приему микрокоманды (блоки-            |
|      ЖДЗРА         | МК 2:=1   | рует WMCE)  до конца вы -              |
|                    |           | полнения микрокоманды за -             |
|                    |           | грузки регистра адреса                 |
|                    |           | (R(18)ОБ).                             |
+--------------------+-----------+----------------------------------------+

При использовании микроинструкций ветвления и некоторых других допускающих модификацию младшей части микроадреса (УП, ЧКА, БП, ПСЧ), а также микроинструкций, допускающих модификацию младшей части константы, загружаемой в микропрограммный счетчик, необходимо загрузить регистр-модификатор адреса ОБ, который имеет адрес записи (1·100X)₂, т.е. 18₁₆ или 19₁₆. Флажок торможения ЖДЗРА сбрасывается по факту записи в R(19)ОБ, т.е. по окончании выполнения данной микроинструкции ОБ.

Поясним алгоритм установки/адреса такого типа торможения по приему микрокоманды следующей временной диаграммой (см. рис. 47).

Кроме того регистр-модификатор R(18)ОБ может быть использован в качестве обычного аккумулятора; нулевой разряд R(18)ОБ можно прочитать по адресу 0F₁₆ в блоке констант, но на месте второго разряда:

FLAG

В отличие от формата SRF, формат микрокоманд FLAG (см. рис. 46) служит для установки некоторых функциональных флагов, привязанных к циклу операционного блока (ОБ):

+--------------------+-----------+----------------------------------------+
| Наименование флага | Состояние |             Назначение                 |
| (вых.признаки)     |           |                                        |
+--------------------+-----------+----------------------------------------+
|      INTMS         | МК 23:=1  | Подсветка микропрограммы               |
|                    |           | обработки прерываний                   |
+--------------------+-----------+----------------------------------------+
|      RCPU          | МК 22:=1  | Микропрограммный сброс                 |
|                    |           | процессора                             |
+--------------------+-----------+----------------------------------------+
|      SIVV          | МК 21:=1  | Блокировка целочисленного              |
|                    |           | переполнения (сброс по "КК")           |
+--------------------+-----------+----------------------------------------+
|      CCFPU         | МК 20:=1  | Принять состояние от аппа-             |
|                    |           | ратного ускорителя команд              |
|                    |           | расширенной арифметики и               |
|                    |           | плавающей точки                        |
+--------------------+-----------+----------------------------------------+
|      PROB          | МК 19:=1  | Флаг для команды PROBE                 |
+--------------------+-----------+----------------------------------------+
|      SIU           | МК 17:=1  | Микропрограммный опрос бло-            |
|                    |           | ка прерываний (БПР)                    |
+--------------------+-----------+----------------------------------------+
|      TOU           | МК 16:=1  | Торможение операционного               |
|                    |           | блока (ОБ) до конца работы             |
|                    |           | диспетчера памяти (ДП)                 |
+--------------------+-----------+----------------------------------------+
|      COPWT         | МК 15:=1  | Перепись  копий РСП и СК               |
+--------------------+-----------+----------------------------------------+

INTMS - устанавливает два аппаратных флага:

  • INVRD - чтение вектора прерываний по физическому адресу. Флаг INVRD - сбрасывается первой одноадресной микроинструкцией.
  • SKF - признак использования стека ядра/прерываний. Флаг SKF - сбрасывается по концу команды (КК).

Микропрограммный сброс процессора по флагу RCPU осуществляется по следующей схеме:

По факту установки флага PROB обеспечивается холостой цикл диспетчера памяти для пробирования адреса. Если адрес недоступен, то аппаратура диспетчера памяти взводит флажок PRB, по которому производится ветвление.

По факту установки флага COPWT (и по "КК") обеспечивается аппаратная перепись копий РСП и СК:

REST

При выборке микрокоманды REST (см. рис. 46) происходит восстановление РОНа из стека-рестарта и декрементируется счетчик рестарта (Запись с стек рестарта происходит аппаратно в фазе адресации операндов, при использовании одноадресной микроинструкции, микроопераций инкремент/декремент, употребления по полю чтения-Х микрокоманды 4-х разрядного номера регистра общего назначения).

Алгоритм восстановления регистров-указателей операндов из стека рестарта приведен на рис. 48. (глубина стека рестарта равна 6, в соответствии с максимальным количеством операндов в команде).

1.13. Описание ресурсов микропрограммного уровня процессора

К ресурсам микропрограммиста будем относить такие регистры операционного блока (ОБ), как регистры общего назначения (РОНк), регистр-указатель стекового кадра, регистр-указатель аргумента, регистр-указатель стека, регистры-аккумуляторы, регистры виртуального адреса, счетчик команд, слово состояния процессора, буферный регистр данных и т.д., а также некоторые внутренние регистры процессора. Все регистры, используемые в проекте "Электроника 32", сведены в табл. 6.

Микропрограммно доступен также блок констант операционного блока (БК). Константы ОБ приведены в табл. 7.

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

Для программиста этот адрес обеспечивает адресацию линейной матрицы объемом в 4 294 967 296 байтов. Виртуальное адресное пространство разделено на страницы по 512 байтов каждая. Страница является объектом перемещения и защиты. Виртуальное адресное пространство показано на рис. 49 . Виртуальная память разделена на 2 части. Первая половина, занимающая младшую часть адресов, предназначена для распределения процессов и для каждого процесса, выполняемого в комплексе, она своя. Вторая половина виртуальной памяти, занимающая старшую часть адресов, предназначена для размещения системы, и эта область разделяется всеми процессами.

Область процессов в свою очередь делится на две равные части: программную область (P0-регион) и управляющую область (P1-регион).

Регистры процессора

Таблица 6. Регистры процессора

+----------+-----------+------------------------+---------------+-----------+
| Мнемоника| Адрес(16) |      Назначение        |    Доступ     |   Сфера   |
+----------+-----------+------------------------+---------------+-----------+
| R0-RB    | 00-0B     | Регистры общего        | ч на X,ȳ /    |           |
|          |           | назначения (РОН)       | з с X*, ȳ*    |           |
+----------+-----------+------------------------+---------------+           |
| AP       | 0C        | Указатель аргумента    |               |           |
+----------+-----------+------------------------+               |           |
| FP       | 0D        | Указатель кадра        |               |           |
+----------+-----------+------------------------+               |           |
| SP       | 0E        | Указатель стека        |               |           |
+----------+-----------+------------------------+               |           |
| PC       | 0F        | Счетчик команд         |               |           |
+----------+-----------+------------------------+---------------+           |
| АК6      | 10        |                        |               |           |
+----------+-----------+                        |               |           |
| АК4      | 11        |                        |               |           |
+----------+-----------+                        |               |           |
| АК3      | 12        |                        |               |           |
+----------+-----------+                        | ч на X, ȳ /   | ОБ про-   |
| АК5      | 13        | Регистры-аккумуляторы  | з с X*, ȳ*    | цессора   |
+----------+-----------+                        |               |           |
| АК0      | 14        |                        |               |           |
+----------+-----------+                        |               |           |
| АК1      | 15        |                        |               |           |
+----------+-----------+                        |               |           |
| АК2      | 16        |                        |               |           |
+----------+-----------+                        |               |           |
| АК7      | 18        |                        |               |           |
|          | (адрес    |                        |               |           |
|          | записи    |                        |               |           |
|          | 11ØØX₂)   |                        |               |           |
+----------+-----------+                        +---------------+           |
| АК8      | 17        |                        | ч на X, ȳ /   |           |
|          |           |                        | з с X*,ȳ*,X   |           |
+----------+-----------+------------------------+---------------+           |
| РКА      | 1D        | Регистр косвенной      | ч на X/з с    |           |
|          | (адрес    | адресации              | МД            |           |
|          | чтения)   |                        |               |           |
+----------+-----------+------------------------+---------------+           |
| РКВА     | 19        | Регистр копия вирту-   | ч на ȳ /      |           |
|          | (адрес    | ального адреса         | з с РВА       |           |
|          | чтения)   |                        |               |           |
+----------+-----------+------------------------+---------------+-----------+
| РВА      | 1A(адрес  | Регистр виртуального   | ч на X,ȳ /    |           |
|          | чтения)   | адреса                 | з с X,ȳ*,РВАК |           |
+----------+-----------+------------------------+---------------+           |
| РВАК     | 1B(адрес  | Регистр виртуально-    | ч на ȳ /      |           |
|          | чтения)   | го адреса команды      | з с X*, ȳ*    |           |
|          | 0F(адрес  |                        |               |           |
|          | записи)   |                        |               |           |
+----------+-----------+------------------------+---------------+           |
| РНК      | 1C(адрес  | Регистр начала ко -    | ч на ȳ /      |           |
|          | чтения)   | манды                  | з с  СК       |           |
+----------+-----------+------------------------+---------------+           |
| КРСП     | 1D(адрес  | Копия регистра со-     | ч на ȳ /      |           |
|          | чтения)   | стояния процессора     | з с  РСП      |           |
+----------+-----------+------------------------+---------------+ ОБ про-   |
| PSL      | 1E        | Слово состояния про-   | ч на X,ȳ /    | цессора   |
|          |           | цессора                | з с X*,ȳ*     |           |
+----------+-----------+------------------------+---------------+           |
| БО       | 1F        | Буферный регистр       | ч на X,ȳ /    |           |
|          |           | данных (БРД)           | з с X*,ȳ*; МД |           |
+----------+-----------+------------------------+---------------+-----------+

Внутренние регистры процессора

+----------+-----------+------------------------+---------------+-----------+
| Мнемоника| Адрес (16)|      Назначение        |    Доступ     |   Сфера   |
+----------+-----------+------------------------+---------------+-----------+
| KSP      | 00        | Указатель стека ре-    | ч/з           |           |
|          |           | режима ядра            |               | -         |
+----------+-----------+------------------------+---------------+           |
| ESP      | 01        | Указатель стека ре-    | ч/з           | Адаптер   |
|          |           | жима исполнения        |               | Q-BUS     |
+----------+-----------+------------------------+---------------+           |
| SSP      | 02        | Указатель стека ре-    | ч/з           |           |
|          |           | жима супервизора       |               |           |
+----------+-----------+------------------------+---------------+           |
| USP      | 03        | Указатель стека ре-    | ч/з           |           |
|          |           | жима пользователя      |               |           |
+----------+-----------+------------------------+---------------+           |
| ISP      | 04        | Указатель стека пре-   | ч/з           | (область  |
|          |           | рываний                |               | сист.рег. |
+----------+-----------+------------------------+---------------+-----------+
|          | 05...07   | Резерв                 | ч/з           |           |
+----------+-----------+------------------------+---------------+-----------+
| P0BR     | 08        | Регистр базн Р0        | ч/з           |           |
+----------+-----------+------------------------+---------------+-----------+
| P0LR     | 09        | Регистр длины Р0       | ч/з           | Диспетчер |
+----------+-----------+------------------------+---------------+ памяти    |
| P1BR     | 0A        | Регистр базы P1        | ч/з           | процессо- |
+----------+-----------+------------------------+---------------+ ра        |
| P1LR     | 0B        | Регистры длины P1      | ч/з           |           |
+----------+-----------+------------------------+---------------+           |
| SBR      | 0C        | Регистр базы системы   | ч/з           |           |
+----------+-----------+------------------------+---------------+           |
| SLR      | 0D        | Регистр длины системы  | ч/з           |           |
+----------+-----------+------------------------+---------------+-----------+
|          | 0E...0F   | Резерв                 | ч/з           |           |
+----------+-----------+------------------------+---------------+-----------+
| PCBB     | 10        | Регистр базы блока     | ч/з           | Адаптер   |
|          |           | управления процесса    |               | Q-BUS     |
+----------+-----------+------------------------+---------------+-----------+
| SCBB     | 11        | Регистр базы блока     | ч/з           | Адаптер   |
|          |           | управления системы     |               | Q-BUS     |
|          |           |                        |               | (обл.си-  |
|          |           |                        |               | ст.рег.)  |
+----------+-----------+------------------------+---------------+-----------+
| IPL      | 12        | Уровень приоритета пре-| ч/з           | Процессор |
|          |           | рывания                |               | (разряды  |
|          |           |                        |               | 20+I6 PSL)|
+----------+-----------+------------------------+---------------+-----------+
| ASTR     | 13        | Уровень AST            | ч/з           |           |
+----------+-----------+------------------------+---------------+ Адаптер   |
| SIRR     | 14        | Регистр запроса на про-| з             | Q-BUS     |
|          |           | граммное прерывание    |               | (обл.си-  |
+----------+-----------+------------------------+---------------+ ст.рег.)  |
| SISR     | 15        | Регистр программного   | ч/з           |           |
|          |           | прерывания             |               |           |
+----------+-----------+------------------------+---------------+-----------+
|          | 16        | Резерв                 |               |           |
+----------+-----------+------------------------+---------------+-----------+
| MCSR     | 17        | Регистр состояния сбоя | ч             | Контрол-  |
|          |           | машины                 |               | лер па -  |
|          |           |                        |               | мяти      |
+----------+-----------+------------------------+---------------+-----------+
| ICCS     | 18        | Регистр состояния      | ч/з           |           |
|          |           | таймера                |               |           |
+----------+-----------+------------------------+---------------+           |
| NICR     | 19        | Регистр счета сле-     | з             | Адаптер   |
|          |           | дующего интервала      |               | Q-BUS     |
+----------+-----------+------------------------+---------------+           |
| ICR      | 1A        | Регистр-счетчик        | ч             | (обл.сист.|
|          |           | интервалов             |               | рег.)     |
+----------+-----------+------------------------+---------------+           |
| TODR     | 1B        | Регистр времени        | ч/з           |           |
|          |           | дня                    |               |           |
+----------+-----------+------------------------+---------------+-----------+
|          | 1C...1F   | Резерв                 |               |           |
+----------+-----------+------------------------+---------------+-----------+
| RXCS     | 20        | Регистр состояния      | ч/з           |           |
|          |           | консольного при -      |               |           |
|          |           | емника                 |               |           |
+----------+-----------+------------------------+---------------+           |
| RXDB     | 21        | Регистр данных кон-    | ч             |           |
|          |           | сольного приемника     |               |           |
+----------+-----------+------------------------+---------------+           |
| TXCS     | 22        | Регистр состояния      | ч/з           |           |
|          |           | консольного пере -     |               |           |
|          |           | датчика                |               |           |
+----------+-----------+------------------------+---------------+           |
| TXDB     | 23        | Регистр данных кон-    | з             |           |
|          |           | сольного передатчика   |               |           |
+----------+-----------+------------------------+---------------+-----------+
| TBDR     | 24        | Отключение групп бу-   | ч/з           |           |
|          |           | фера трансляции(при    |               |           |
|          |           | обращении читаются     |               |           |
|          |           | нули)                  |               |           |
+----------+-----------+------------------------+---------------+           |
| CADR     | 25        | Регистр отключения     | ч/з           | Контроллер|
|          |           | КЭШ-памяти             |               | памяти    |
+----------+-----------+------------------------+---------------+           |
| MCESR    | 26        | Регистр ошибок при     | ч/з           |           |
|          |           | машинном сбое          |               |           |
+----------+-----------+------------------------+---------------+           |
| CAER     | 27        | Регистр ошибок КЭШ-    | ч/з           |           |
|          |           | памяти                 |               |           |
+----------+-----------+------------------------+---------------+-----------+
| ACCS     | 28        | Регистр состояния      | ч             | БИС со -  |
|          |           | ускорителя команд      |               | процес -  |
|          |           | П.З.                   |               | сора      |
+----------+-----------+------------------------+---------------+-----------+
|          | 29...36   | Резерв                 |               |           |
+----------+-----------+------------------------+---------------+-----------+
| IORESET  | 37        | Регистр сброса         | з             | Адаптер   |
|          |           | UNIBUS                 |               | Q-BUS     |
+----------+-----------+------------------------+---------------+-----------+
| MME      | 38        | Регистр включения      | ч/з           | Диспетчер |
| (MAPEN)  |           | диспетчера памяти      |               | памяти про-|
|          |           |                        |               | цессора   |
+----------+-----------+------------------------+---------------+-----------+
| TBIA     | 39        | Регистр обнуления      | з             | Диспетчер |
|          |           | всего буфера тран-     |               | памяти    |
|          |           | сляции                 |               | процессора|
+----------+-----------+------------------------+---------------+-----------+
| TBIS     | 3A        | Регистр обнуления      | з             | Диспетчер |
|          |           | записи в буфере        |               | памяти    |
|          |           | трансляции             |               | процессора|
+----------+-----------+------------------------+---------------+-----------+
|          | 3B...3C   | Резерв                 |               |           |
+----------+-----------+------------------------+---------------+-----------+
| PMI      | 3D        | Регистр включения      | ч/з           | Адаптер   |
|          |           | исполнительного        |               | Q-BUS     |
|          |           | монитора               |               |           |
+----------+-----------+------------------------+---------------+-----------+
| SID      | 3E        | Регистр идентифика-    | ч/з           | Процессор |
|          |           | ции системы            |               |           |
+----------+-----------+------------------------+---------------+-----------+
|          |           | Резерв                 |               |           |
+----------+-----------+------------------------+---------------+-----------+

Константы ОБ

Таблица 7. Константы ОБ

+------------+---------------+-----------------------------------------------+
| Адрес (16) | Значение (16) |                  Назначение                   |
+------------+---------------+-----------------------------------------------+
|    00      |   00000004    | Инкремент                                     |
+------------+---------------+-----------------------------------------------+
|    01      |   00000002    | Инкремент                                     |
+------------+---------------+-----------------------------------------------+
|    02      |   00000008    | Инкремент                                     |
+------------+---------------+-----------------------------------------------+
|    03      |   00000001    | Инкремент                                     |
+------------+---------------+-----------------------------------------------+
|    04      |   00000000    | Обнуление                                     |
+------------+---------------+-----------------------------------------------+
|    05      |       -       | РСМ                                           |
+------------+---------------+-----------------------------------------------+
|    06      |       -       | Литера ПЗУ, адресные                          |
|            |               | константы                                     |
+------------+---------------+-----------------------------------------------+
|    07      |   00000066    | Константа перевода в код                      |
|            |               | с избытком 6                                  |
+------------+---------------+-----------------------------------------------+
|    08      |   0000000*    | [1:0] = РСП (CRM), [2] - IS                   |
|            |               | (Чтение СRM из РСП)                           |
+------------+---------------+-----------------------------------------------+
|    09      |   00C00000    | Маски  CRM  в РСП                             |
+------------+---------------+-----------------------------------------------+
|    0A      |   FFFFFFFF    |                                               |
+------------+---------------+-----------------------------------------------+
|    0B      |   00IF0000    | Маски  IPL  в РСП                             |
+------------+---------------+-----------------------------------------------+
|    0C      |   04000000    | Маски  IS   в РСП                             |
+------------+---------------+-----------------------------------------------+
|    0D      |   0000000*    | [2:0] = MPL                                   |
+------------+---------------+-----------------------------------------------+
|    0E      |   000000**    | Десятичная коррекция                          |
|            |               | [7:0] = { AA,A0                               |
|            |               |         { 0A,00                               |
+------------+---------------+-----------------------------------------------+
|    0F      |   0000000*    | второй разряд = нулевой                       |
|            |               | разряд R18 выбор стека                        |
|            |               | при прерываниях                               |
+------------+---------------+-----------------------------------------------+

Адресное пространство

Системное ОЗУ

Для организации системного ОЗУ (СОЗУ), некоторых внутренних системных регистров, хранения карты адресов Q-BUS БИС адаптера магистралей обеспечивает управление (чтение, запись) четырех микросхем статического ЗУ с организацией 2Кх8.

Системное ОЗУ и системные регистры доступны микропрограммно.

1.14. Система команд

В данном разделе очень кратко будут описаны те инструкции, которые используются в любом программном обеспечении при всех применениях вычислительной системы "Электроника 32". Главная цель архитектуры вычислительной системы - обеспечить набор команд, который симметричен по отношению к типам данных. Например, существуют команды сложения (ADD) для семи типов данных (байт, слово, длинное слово, F , D , G и H -floating), причем каждая команда имеет варианты для двух и трех операндов. Симметричными командами являются также команды пересылки, преобразования тестирования и вычислений (в микропроцессорной системе "Электроника 32" команды работы со I28-разрядными данными, такими как H-floating и Octal integer, выполняются эмуляцией на программном уровне).

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

Команды арифметических вычислений включают в себя сложение, вычитание, умножение и деление. Логические команды работают с тремя типами данных (байт, слово, длинное слово) и включают в себя: установку и сброс битов, логическое сложение MOD 2. Команды арифметических и логических вычислений доступны как в двух, так и в трехоперандной формах для каждого допустимого типа данных. Трехоперандная форма принимает первые два операнда и сохраняет результат по адресу третьего операнда.

Для задач целочисленного программирования имеется команда записи в стек длинного слова.

Для каждого типа целочисленных данных существуют операции инкремента и декремента.

Существуют специальные команды сложения, вычитания, умножения и деления с многократной точностью.

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

В систему команд входят также команды обработки чисел в формате с плавающей запятой. Команды с плавающей запятой работают с данными четырех типов (F, D , G и H-формат). Для всех четырех типов данных с плавающей запятой имеются стандартные арифметические операции сложения, вычитания, умножения и деления (ADD, SUB, MUL, DIV). Кроме того имеются две составные операции EMOD и POLY, также применимые ко всем четырем типам данных с плавающей запятой. EMOD вырабатывает произведение двух операндов, а затем разделяет результат на целую и дробную части. POLY подсчитывает значение полинома по заданной степени, аргументу и указателю таблицы коэффициентов.

Имеется полный набор команд преобразования из целочисленного типа данных во все форматы с плавающей запятой, и наоборот. Также имеется набор команд преобразования из одного типа данных с плавающей запятой в другой, за исключением преобразований из формата D в формат G и наоборот.

Для всех типов данных с плавающей запятой существует класс команд пересылок (MOV, MNEG), очистки (CLR), сравнения (СМР) и тестирования (TST). И, наконец, существует класс команд АСВ (сложение, сравнение и переход).

В процессоре имеется широкий набор команд ветвлений и переходов (команды управления). Довольно часто требуется передача управления, основанная на значении переменной, для поддержки таких конструкций в языках высокого уровня как "GOTO" в языке FORTRAN и "CASE" в языке PASCAL . Вследствии этого система команд включает в себя команду CASE , позволяющую эффективно реализовать эти структуры управления. Команда CASE не только производит передачу управления, но также управляет инициализацией и контролем границ для переменной типа INDEX. Цепь команды CASE состоит в передаче управления одной из n ячеек на основании значения целочисленного операнда-селектора.

Существует также ряд важных команд, предназначенных для работы со специфическими типами данных, такими как поле бит переменной длины, символьная строка, строка десятичных цифр, строка упакованных десятичных цифр, очередь (типы данных приведены на рис. 50).

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

Это привилегированные команды и особые (специальные) команды, которые не попадают под какую-либо классификацию. Некоторые из этих инструкций предназначены для работы со специализированной частью архитектуры вычислительной системы (например: диспетчеризация памяти, прерывания и исключительные ситуации, диспетчеризация процессов, внутренние регистры процессора).

Для наглядности представления системы команд, на основании изложенного выше, разделим набор инструкций на 13 основных разделов:

  1. Команды для работы с целыми числами и логические команды.
  2. Команды для работы со стеками и адресами памяти.
  3. Команды управления.
  4. Команды для работы с переменными битовыми полями.
  5. Команды вызова процедур и подпрограмм.
  6. Привилегированные команды.
  7. Специальные команды.
  8. Команды работы с очередями.
  9. Команды плавающей арифметики.
  10. Команды обработки строк символов.
  11. Команды десятичной строки цифр.
  12. Команды контроля циклической избыточности.
  13. Команды редактирования.

Ниже будет приведено краткое описание инструкций (см. табл. 8).

Внутри каждого раздела близкие по свойствам инструкции объединены в группы и вместе описываются. Описание групп инструкций состоит из следующих пунктов: название группы; код команды; формат каждой инструкции в группе.

В табл.8 приводится мнемоника команды, определяются название и тип каждого спецификатора операнда инструкции и порядок, в котором они появляются в инструкции.

Таблица 8

СИСТЕМА КОМАНД

1. Команды для работы с целыми числами и логические команды

+-----+-----------+-------------------------------+----------------------------------+
| Код | Мнемоника |            Формат             |           Назначение             |
+-----+-----------+-------------------------------+----------------------------------+
|  58 | ADAWI     | КОП add.rw,sum.mw             | Сложение выровненных             |
|     |           |                               | слоев с блокировкой па-          |
|     |           |                               | мяти                             |
+-----+-----------+-------------------------------+----------------------------------+
|  80 | ADDB2     | КОП add.rx,sum.mx             | Сложение байтов двух -           |
|     |           |                               | операндное                       |
+-----+-----------+-------------------------------+----------------------------------+
|  A0 | ADDW2     | -"-                           | Сложение слов двухопе-           |
|     |           |                               | рандное                          |
+-----+-----------+-------------------------------+----------------------------------+
|  C0 | ADDL2     | -"-                           | Сложение двойных слов            |
|     |           |                               | двухоперандное                   |
+-----+-----------+-------------------------------+----------------------------------+
|  81 | ADDB3     | КОП add1.rx,add2.rx,          | Сложение байтов трех -           |
|     |           | sum.mx                        | операндное                       |
+-----+-----------+-------------------------------+----------------------------------+
|  A1 | ADDW3     | -"-                           | Сложение слов трехопе-           |
|     |           |                               | рандное                          |
+-----+-----------+-------------------------------+----------------------------------+
|  C1 | ADDL3     | -"-                           | Сложение двойных слов            |
|     |           |                               | трехоперандное                   |
+-----+-----------+-------------------------------+----------------------------------+
|  D8 | ADWC      | КОП add.rl,sum.ml             | Сложение с переносом             |
+-----+-----------+-------------------------------+----------------------------------+
|  78 | ASHL      | КОП cnt.rb,src.rx,            | Арифметический сдвиг             |
|     |           | dst.wx                        | двойного слова                   |
+-----+-----------+-------------------------------+----------------------------------+
|  79 | ASHQ      | -"-                           | Арифметический сдвиг             |
|     |           |                               | квадрослова                      |
+-----+-----------+-------------------------------+----------------------------------+
|  8A | BICB2     | КОП mask.rx,dst.mx            | Очистка разрядов байта           |
|     |           |                               | двухоперандная                   |
+-----+-----------+-------------------------------+----------------------------------+
|  AA | BICW2     | -"-                           | Очистка разрядов слова           |
|     |           |                               | двухоперандная                   |
+-----+-----------+-------------------------------+----------------------------------+
|  CA | BICL2     | -"-                           | Очистка разрядов двой -          |
|     |           |                               | ного слова двухоперанд-          |
|     |           |                               | ная                              |
+-----+-----------+-------------------------------+----------------------------------+
|  8B | BICB3     | КОП mask.rx,                  | Очистка разрядов байта           |
|     |           | src.rx,dst.mx                 | трехоперандная                   |
+-----+-----------+-------------------------------+----------------------------------+
|  AB | BICW3     | -"-                           | Очистка разрядов слова           |
|     |           |                               | трехоперандная                   |
+-----+-----------+-------------------------------+----------------------------------+
|  CB | BICL3     | -"-                           | Очистка разрядов двойно-         |
|     |           |                               | го слова трехоперандная          |
+-----+-----------+-------------------------------+----------------------------------+
|  88 | BISB2     | КОП mask.rx,                  | Установка разрядов байта         |
|     |           | dst.mx                        | двухоперандная                   |
+-----+-----------+-------------------------------+----------------------------------+
|  A8 | BISW2     | -"-                           | Установка разрядов слова         |
|     |           |                               | двухоперандная                   |
+-----+-----------+-------------------------------+----------------------------------+
|  C8 | BISL2     | -"-                           | Установка разрядов двойно-       |
|     |           |                               | го слова двухоперандная          |
+-----+-----------+-------------------------------+----------------------------------+
|  89 | BISB3     | КОП mask.rx,src.rx,           | Установка разрядов байта         |
|     |           | dst.mx                        | трехоперандная                   |
+-----+-----------+-------------------------------+----------------------------------+
|  A9 | BISW3     | -"-                           | Установка разрядов слова         |
|     |           |                               | трехоперандная                   |
+-----+-----------+-------------------------------+----------------------------------+
|  C9 | BISL3     | -"-                           | Установка разрядов двой -        |
|     |           |                               | ного слова трехоперандная        |
+-----+-----------+-------------------------------+----------------------------------+
|  93 | BITB      | КОП mask.rx,src.rx            | Проверка разрядов байта          |
+-----+-----------+-------------------------------+----------------------------------+
|  B3 | BITW      | -"-                           | Проверка разрядов слова          |
+-----+-----------+-------------------------------+----------------------------------+
|  D3 | BITL      | -"-                           | Проверка разрядов двойно-        |
|     |           |                               | го слова                         |
+-----+-----------+-------------------------------+----------------------------------+
|  94 | CLRB      | КОП dst.wx                    | Очистка байта                    |
+-----+-----------+-------------------------------+----------------------------------+
|  B4 | CLRW      | -"-                           | Очистка слова                    |
+-----+-----------+-------------------------------+----------------------------------+
|  D4 | CLRL      | -"-                           | Очистка двойного слова           |
+-----+-----------+-------------------------------+----------------------------------+
|  7C | CLRQ      | -"-                           | Очистка квадрослова              |
+-----+-----------+-------------------------------+----------------------------------+
|  91 | CMPB      | КОП src1.rx,src2.rx           | Сравнение байтов                 |
+-----+-----------+-------------------------------+----------------------------------+
|  B1 | CMPW      | -"-                           | Сравнение слов                   |
+-----+-----------+-------------------------------+----------------------------------+
|  D1 | CMPL      | -"-                           | Сравнение двойных слов           |
+-----+-----------+-------------------------------+----------------------------------+
|  99 | CVTBW     | КОП src.rx,dst.my             | Преобразование байта в           |
|     |           |                               | слово                            |
+-----+-----------+-------------------------------+----------------------------------+
|  98 | CVTBL     | -"-                           | Преобразование байта в           |
|     |           |                               | двойное слово                    |
+-----+-----------+-------------------------------+----------------------------------+
|  33 | CVTWB     | -"-                           | Преобразование слова в           |
|     |           |                               | байт                             |
+-----+-----------+-------------------------------+----------------------------------+
|  32 | CVTWL     | -"-                           | Преобразование слова в           |
|     |           |                               | двойное слово                    |
+-----+-----------+-------------------------------+----------------------------------+
|  F6 | CVTLB     | -"-                           | Преобразование двойно-           |
|     |           |                               | го слова в байт                  |
+-----+-----------+-------------------------------+----------------------------------+
|  F7 | CVTLW     | -"-                           | Преобразование двойно-           |
|     |           |                               | го слова в слово                 |
+-----+-----------+-------------------------------+----------------------------------+
|  97 | DECB      | КОП dif.mx                    | Декремент на один байт           |
+-----+-----------+-------------------------------+----------------------------------+
|  B7 | DECW      | -"-                           | Декремент на одно слово          |
+-----+-----------+-------------------------------+----------------------------------+
|  D7 | DECL      | -"-                           | Декремент на одно двой-          |
|     |           |                               | ное слово                        |
+-----+-----------+-------------------------------+----------------------------------+
|  86 | DIVB2     | КОП divr.rx,quo.mx            | Деление байтов двухопе-          |
|     |           |                               | рандное                          |
+-----+-----------+-------------------------------+----------------------------------+
|  A6 | DIVW2     | -"-                           | Деление слов двухопе -           |
|     |           |                               | рандное                          |
+-----+-----------+-------------------------------+----------------------------------+
|  C6 | DIVL2     | -"-                           | Деление двойных слов             |
|     |           |                               | двухоперандное                   |
+-----+-----------+-------------------------------+----------------------------------+
|  87 | DIVB3     | КОП divr.rx,divd.rx,          | Деление байтов трехопе-          |
|     |           | quo.wx                        | рандное                          |
+-----+-----------+-------------------------------+----------------------------------+
|  A7 | DIVW3     | -"-                           | Деление слов трехопе -           |
|     |           |                               | рандное                          |
+-----+-----------+-------------------------------+----------------------------------+
|  C7 | DIVL3     | -"-                           | Деление двойных слов             |
|     |           |                               | трехоперандное                   |
+-----+-----------+-------------------------------+----------------------------------+
|  7B | EDIV      | КОП divr.rl,divd.rq,          | Расширенное деление              |
|     |           | quo.wl,rem.wl                 |                                  |
+-----+-----------+-------------------------------+----------------------------------+
|  7A | EMUL      | КОП mulr.rl,muld.rl,          | Расширенное умножение            |
|     |           | add.rl,prod.wq                |                                  |
+-----+-----------+-------------------------------+----------------------------------+
|  96 | INCB      | КОП sum.mx                    | Инкремент на один байт           |
+-----+-----------+-------------------------------+----------------------------------+
|  B6 | INCW      | -"-                           | Инкремент на одно слово          |
+-----+-----------+-------------------------------+----------------------------------+
|  D6 | INCL      | -"-                           | Инкремент на одно двой-          |
|     |           |                               | ное слово                        |
+-----+-----------+-------------------------------+----------------------------------+
|  92 | MCOMB     | КОП src.rx,dst.wx             | Пересылка байта с инвер-         |
|     |           |                               | сией                             |
+-----+-----------+-------------------------------+----------------------------------+
|  B2 | MCOMW     | -"-                           | Пересылка слова с инвер-         |
|     |           |                               | сией                             |
+-----+-----------+-------------------------------+----------------------------------+
|  D2 | MCOML     | -"-                           | Пересылка двойного слова         |
|     |           |                               | с инверсией                      |
+-----+-----------+-------------------------------+----------------------------------+
|  8E | MNEGB     | -"-                           | Пересылка байта с ариф -         |
|     |           |                               | метическим отрицанием            |
+-----+-----------+-------------------------------+----------------------------------+
|  AE | MNEGW     | -"-                           | Пересылка слова с ариф -         |
|     |           |                               | метическим отрицанием            |
+-----+-----------+-------------------------------+----------------------------------+
|  CE | MNEGL     | -"-                           | Пересылка двойного слова         |
|     |           |                               | с арифметическим отрица-         |
|     |           |                               | нием                             |
+-----+-----------+-------------------------------+----------------------------------+
|  90 | MOVB      | -"-                           | Пересылка байта                  |
+-----+-----------+-------------------------------+----------------------------------+
|  B0 | MOVW      | -"-                           | Пересылка слова                  |
+-----+-----------+-------------------------------+----------------------------------+
|  D0 | MOVL      | -"-                           | Пересылка двойного слова         |
+-----+-----------+-------------------------------+----------------------------------+
|  7D | MOVQ      | -"-                           | Пересылка квадрослова            |
+-----+-----------+-------------------------------+----------------------------------+
|  9B | MOVZBW    | КОП src.rx,dst.wy             | Пересылка байта с допол-         |
|     |           |                               | нением ведущими нулями           |
|     |           |                               | до слова                         |
+-----+-----------+-------------------------------+----------------------------------+
|  9A | MOVZBL    | -"-                           | Пересылка байта с допол-         |
|     |           |                               | нением ведущими нулями           |
|     |           |                               | до двойного слова                |
+-----+-----------+-------------------------------+----------------------------------+
|  BC | MOVZWL    | -"-                           | Пересылка слова с допол-         |
|     |           |                               | нением ведущими нулями           |
|     |           |                               | до двойного слова                |
+-----+-----------+-------------------------------+----------------------------------+
|  84 | MULB2     | КОП mulr.rx,prod.mx           | Умножение байтов двух-           |
|     |           |                               | операндное                       |
+-----+-----------+-------------------------------+----------------------------------+
|  A4 | MULW2     | -"-                           | Умножение слов двухопе-          |
|     |           |                               | рандное                          |
+-----+-----------+-------------------------------+----------------------------------+
|  C4 | MULL2     | -"-                           | Умножение двойных слов           |
|     |           |                               | двухоперандное                   |
+-----+-----------+-------------------------------+----------------------------------+
|  85 | MULB3     | КОП mulr.rx,muld.rx,          | Умножение байтов трех-           |
|     |           | prod.wx                       | операндное                       |
+-----+-----------+-------------------------------+----------------------------------+
|  A5 | MULW3     | -"-                           | Умножение слов трехопе-          |
|     |           |                               | рандное                          |
+-----+-----------+-------------------------------+----------------------------------+
|  C5 | MULL3     | -"-                           | Умножение двойных слов           |
|     |           |                               | трехоперандное                   |
+-----+-----------+-------------------------------+----------------------------------+
|  DD | PUSHL     | КОП src.rl,{-(SP).wl}         | Занесение двойного сло-          |
|     |           |                               | ва в стек                        |
+-----+-----------+-------------------------------+----------------------------------+
|  9C | ROTL      | КОП cnt.rb,src.rl,dst.wl      | Циклический сдвиг двой-          |
|     |           |                               | ного слова                       |
+-----+-----------+-------------------------------+----------------------------------+
|  D9 | SBWC      | КОП sub.rl,dif.ml             | Вычитание с переносом            |
+-----+-----------+-------------------------------+----------------------------------+
|  82 | SUBB2     | КОП sub.rx,dif.mx             | Вычитание байтов двух -          |
|     |           |                               | операндное                       |
+-----+-----------+-------------------------------+----------------------------------+
|  A2 | SUBW2     | -"-                           | Вычитание слов двухопе-          |
|     |           |                               | рандное                          |
+-----+-----------+-------------------------------+----------------------------------+
|  C2 | SUBL2     | -"-                           | Вычитание двойных слов           |
|     |           |                               | двухоперандное                   |
+-----+-----------+-------------------------------+----------------------------------+
|  83 | SUBB3     | КОП sub.rx,min.rx,            | Вычитание байтов трех-           |
|     |           | dif.wx                        | операндное                       |
+-----+-----------+-------------------------------+----------------------------------+
|  A3 | SUBW3     | -"-                           | Вычитание слов трехопе-          |
|     |           |                               | рандное                          |
+-----+-----------+-------------------------------+----------------------------------+
|  C3 | SUBL3     | КОП sub.rx,min.rx,            | Вычитание двойных слов           |
|     |           | dif.wx                        | трехоперандное                   |
+-----+-----------+-------------------------------+----------------------------------+
|  95 | TSTB      | КОП src.rx                    | Проверка разрядов байта          |
+-----+-----------+-------------------------------+----------------------------------+
|  B5 | TSTW      | -"-                           | Проверка разрядов слова          |
+-----+-----------+-------------------------------+----------------------------------+
|  D5 | TSTL      | -"-                           | Проверка разрядов двойно-        |
|     |           |                               | го слова                         |
+-----+-----------+-------------------------------+----------------------------------+
|  8C | XORB2     | КОП mask.rx,dst.mx            | Сложение байтов по MOD2          |
|     |           |                               | двухоперандное                   |
+-----+-----------+-------------------------------+----------------------------------+
|  AC | XORW2     | -"-                           | Сложение слов по MOD2            |
|     |           |                               | двухоперандное                   |
+-----+-----------+-------------------------------+----------------------------------+
|  CC | XORL2     | -"-                           | Сложение двойных слов по         |
|     |           |                               | MOD2 двухоперандное              |
+-----+-----------+-------------------------------+----------------------------------+
|  8D | XORB3     | КОП mask.rx,src.rx,           | Сложение байтов по MOD2          |
|     |           | dst.wx                        | трехоперандное                   |
+-----+-----------+-------------------------------+----------------------------------+
|  AD | XORW3     | -"-                           | Сложение слов по MOD2            |
|     |           |                               | трехоперандное                   |
+-----+-----------+-------------------------------+----------------------------------+
|  CD | XORL3     | -"-                           | Сложение двойных слов по         |
|     |           |                               | MOD2 трехоперандное              |
+-----+-----------+-------------------------------+----------------------------------+

2. Команды работы со стеками и адресами памяти

+------+-----------+-------------------------------+----------------------------------+
|  9E  | MOVAB     | КОП src.ax,dst.wl             | Пересылка адреса байта           |
+------+-----------+-------------------------------+----------------------------------+
|  3E  | MOVAW     | -"-                           | Пересылка адреса слова           |
+------+-----------+-------------------------------+----------------------------------+
|  DE  | MOVAL,    | -"-                           | Пересылка адреса двойного        |
|      | MOVAF     |                               | слова /или слова формата         |
|      |           |                               | F/                               |
+------+-----------+-------------------------------+----------------------------------+
|  7E  | MOVAQ,    | КОП src.ax,dst.wl             | Пересылка адреса четвер-         |
|      | MOVAD,    |                               | ного слова /или слов             |
|      | MOVAG     |                               | форматов D, G  /                 |
+------+-----------+-------------------------------+----------------------------------+
| 7FFD | MOVAO,    | -"-                           | Пересылка адреса восьмер-        |
|      | MOVAH     |                               | ного слова /или слова            |
|      |           |                               | формата H/                       |
+------+-----------+-------------------------------+----------------------------------+
|  BF  | PUSHAB    | КОП src.ax,{-(SP).wl}         | Пересылка адреса байта           |
|      |           |                               | в стек                           |
+------+-----------+-------------------------------+----------------------------------+
|  3F  | PUSHAW    | -"-                           | Пересылка адреса слова           |
|      |           |                               | в стек                           |
+------+-----------+-------------------------------+----------------------------------+
|  DF  | PUSHAL,   | -"-                           | Пересылка адреса двой-           |
|      | PUSHAF    |                               | ного слова /или слова            |
|      |           |                               | формата F / в стек               |
+------+-----------+-------------------------------+----------------------------------+
|  7F  | PUSHAQ,   | -"-                           | Пересылка адреса чет -           |
|      | PUSHAD,   |                               | верного слова /или слов          |
|      | PUSHAG    |                               | форматов D ; G / в               |
|      |           |                               | стек                             |
+------+-----------+-------------------------------+----------------------------------+
| 7FFD | PUSHAO,   | -"-                           | Пересылка адреса вось-           |
|      | PUSHAH    |                               | мерного слова/или сло-           |
|      |           |                               | ва формата H/ в стек             |
+------+-----------+-------------------------------+----------------------------------+

3. Команды управления

+------+-----------+-------------------------------+----------------------------------+
| Код  | Мнемоника |            Формат             |           Назначение             |
+------+-----------+-------------------------------+----------------------------------+
|  9D  | ACBB      | КОП limit.rx,add.rx,          | Сложение байтов со               |
|      |           | index.mx,displ.bw             | сравнением и переход             |
+------+-----------+-------------------------------+----------------------------------+
|  3D  | ACBW      | -"-                           | Сложение слов со                 |
|      |           |                               | сравнением и переход             |
+------+-----------+-------------------------------+----------------------------------+
|  F1  | ACBL      | КОП limit.rx,add.rx,          | Сложение двойных слов со         |
|      |           | index.mx,displ.bw             | сравнением и переход             |
+------+-----------+-------------------------------+----------------------------------+
|  4F  | ACBF      | -"-                           | Сложение слов формата F          |
|      |           |                               | со сравнением и переход          |
+------+-----------+-------------------------------+----------------------------------+
|  6F  | ACBD      | -"-                           | Сложение слов формата D          |
|      |           |                               | со сравнением и переход          |
+------+-----------+-------------------------------+----------------------------------+
| 4FFD | ACBG      | -"-                           | Сложение слов формата G          |
|      |           |                               | со сравнением и переход          |
+------+-----------+-------------------------------+----------------------------------+
| 6FFD | ACBH      | -"-                           | Сложение слов формата H          |
|      |           |                               | со сравнением и переход          |
+------+-----------+-------------------------------+----------------------------------+
|  F3  | AOBLEQ    | КОП limit.rx,index.ml,        | Прибавить единицу и пере-        |
|      |           | displ.bb                      | ход, если меньше или             |
|      |           |                               | равно                            |
+------+-----------+-------------------------------+----------------------------------+
|  F2  | AOBLSS    | -"-                           | Прибавить единицу и пере-        |
|      |           |                               | ход, если меньше                 |
+------+-----------+-------------------------------+----------------------------------+
|  19  | BLSS      | КОП displ.bb                  | Переход, если  N = I             |
+------+-----------+-------------------------------+----------------------------------+
|  15  | BLEQ      | -"-                           | Переход, если {NORZ}=1           |
+------+-----------+-------------------------------+----------------------------------+
|  13  | BEQL,BEQLU| -"-                           | Переход, если  Z = I             |
+------+-----------+-------------------------------+----------------------------------+
|  12  | BNEQ,BNEQU| -"-                           | Переход, если  Z = 0             |
+------+-----------+-------------------------------+----------------------------------+
|  I8  | BGEQ      | -"-                           | Переход, если  N = 0             |
+------+-----------+-------------------------------+----------------------------------+
|  14  | BGTR      | -"-                           | Переход, если {NORZ} = 0         |
+------+-----------+-------------------------------+----------------------------------+
|  1F  | BLSSU,BCS | -"-                           | Переход, если  C = I             |
+------+-----------+-------------------------------+----------------------------------+
|  1B  | BLEQU     | -"-                           | Переход, если {COR Z}= I         |
+------+-----------+-------------------------------+----------------------------------+
|  1E  | BGEQU,BCC | -"-                           | Переход, если  C = 0             |
+------+-----------+-------------------------------+----------------------------------+
|  1A  | BGTRU     | -"-                           | Переход, если {CORZ} = 0         |
+------+-----------+-------------------------------+----------------------------------+
|  1D  | BVS       | -"-                           | Переход, если  V = I             |
+------+-----------+-------------------------------+----------------------------------+
|  1C  | BVC       | -"-                           | Переход, если  V = 0             |
+------+-----------+-------------------------------+----------------------------------+
|  E0  | BBS       | КОП pos.rl,base.vb,           | Ветвление по биту /указан-       |
|      |           | disp l.bb,{field.rv}          | ный разряд равен I/              |
+------+-----------+-------------------------------+----------------------------------+
|  E1  | BBC       | -"-                           | Ветвление по биту /указан-       |
|      |           |                               | ный разряд равен 0/              |
+------+-----------+-------------------------------+----------------------------------+
|  E2  | BBSS      | -"-                           | Ветвление по установлен-         |
|      |           |                               | ному биту и установить /без      |
|      |           |                               | блокировки памяти/               |
+------+-----------+-------------------------------+----------------------------------+
|  E4  | BBSC      | -"-                           | Ветвление по установлен-         |
|      |           |                               | ному биту и очистить /без        |
|      |           |                               | блокировки памяти/               |
+------+-----------+-------------------------------+----------------------------------+
|  E5  | BBCC      | -"-                           | Ветвление по очищенному          |
|      |           |                               | биту и очистить /без бло -       |
|      |           |                               | кировки памяти/                  |
+------+-----------+-------------------------------+----------------------------------+
|  E3  | BBCS      | -"-                           | Ветвление по очищенному          |
|      |           |                               | биту и установить /без           |
|      |           |                               | блокировки памяти/               |
+------+-----------+-------------------------------+----------------------------------+
|  E6  | BBSSI     | -"-                           | Ветвление по установлен-         |
|      |           |                               | ному биту и установить с         |
|      |           |                               | блокировкой памяти               |
+------+-----------+-------------------------------+----------------------------------+
|  E7  | BBCCI     | -"-                           | Ветвление по сброшенному         |
|      |           |                               | биту и очистить с блоки -        |
|      |           |                               | ровкой памяти                    |
+------+-----------+-------------------------------+----------------------------------+
|  E8  | BLBS      | КОП src.rl,displ.bb           | Ветвление, если установлен       |
|      |           |                               | младший бит                      |
+------+-----------+-------------------------------+----------------------------------+
|  E9  | BLBC      | -"-                           | Ветвление, если сброшен          |
|      |           |                               | младший бит                      |
+------+-----------+-------------------------------+----------------------------------+
|  II  | BRB       | КОП displ.bx                  | Безусловный переход с бай-       |
|      |           |                               | товым смещением                  |
+------+-----------+-------------------------------+----------------------------------+
|  3I  | BRW       | -"-                           | Безусловный переход со сме-      |
|      |           |                               | щением в одно слово              |
+------+-----------+-------------------------------+----------------------------------+
|  I0  | BSBB      | КОП displ.bx,{-(SP).wl}       | Переход к подпрограмме с         |
|      |           |                               | байтовым смещением               |
+------+-----------+-------------------------------+----------------------------------+
|  30  | BSBW      | -"-                           | Переход к подпрограмме со        |
|      |           |                               | смещением в одно слово           |
+------+-----------+-------------------------------+----------------------------------+
|  8F  | CASEB     | КОП selector.rx,base.rx,      | Многофункциональный пере-        |
|      |           | limit.rx,displ.bw-list        | ход с байтовым смещением         |
+------+-----------+-------------------------------+----------------------------------+
|  AF  | CASEW     | -"-                           | Многофункциональный пере-        |
|      |           |                               | ход со смещением в одно          |
|      |           |                               | слово                            |
+------+-----------+-------------------------------+----------------------------------+
|  CF  | CASEL     | -"-                           | Многофункциональный пере-        |
|      |           |                               | ход со смещением в одно          |
|      |           |                               | двойное слово                    |
+------+-----------+-------------------------------+----------------------------------+
|  I7  | JMP       | КОП dst.ab                    | Абсолютный безусловный           |
|      |           |                               | переход                          |
+------+-----------+-------------------------------+----------------------------------+
|  I6  | JSB       | КОП dst.ab,{-(SP).wl}         | Абсолютный переход к под-        |
|      |           |                               | программе                        |
+------+-----------+-------------------------------+----------------------------------+
|  05  | RSB       | КОП {(SP)+.rl}                | Возврат из подпрограммы          |
+------+-----------+-------------------------------+----------------------------------+
|  F4  | SOBGEQ    | КОП index.ml,displ.bb         | Вычесть единицу и переход,       |
|      |           |                               | если больше или равно            |
+------+-----------+-------------------------------+----------------------------------+
|  F5  | SOBGTR    | -"-                           | Вычесть единицу и переход,       |
|      |           |                               | если больше                      |
+------+-----------+-------------------------------+----------------------------------+

4. Команды для работы с переменными битовыми полями

+------+-----------+-------------------------------+----------------------------------+
| Код  | Мнемоника |            Формат             |           Назначение             |
+------+-----------+-------------------------------+----------------------------------+
|  EC  | CMPV      | КОП pos.rl,size.rb,base.vb,   | Сравнение полей                  |
|      |           | {field.rv},src.rl             |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  ED  | CMPZV     | -"-                           | Сравнение полей с рас-           |
|      |           |                               | ширением ведущими нулями         |
+------+-----------+-------------------------------+----------------------------------+
|  EE  | EXTV      | КОП pos.rl,size.rb,           | Выделить поле                    |
|      |           | base.vb,{field.rv},dst.wl     |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  EF  | EXTZV  -  | -"-                           | Выделить поле, расши -           |
|      |           |                               | ренное ведущими нулями           |
+------+-----------+-------------------------------+----------------------------------+
|  EA  | FFS       | КОП startpos.rl,              | Поиск первого установ-           |
|      |           | size.rb,base.vb,              | ленного разряда                  |
|      |           | {field.rv},findpos.wl         |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  EB  | FFC       | -"-                           | Поиск первого сброшен-           |
|      |           |                               | ного разряда                     |
+------+-----------+-------------------------------+----------------------------------+
|  F0  | INSV      | КОП src.rl,pos.rl,            | Вставка поля                     |
|      |           | size.rb,base.vb,              |                                  |
|      |           | {field.wv}                    |                                  |
+------+-----------+-------------------------------+----------------------------------+

5. Команды вызова процедур и подпрограмм

+------+-----------+-------------------------------+----------------------------------+
| Код  | Мнемоника |            Формат             |           Назначение             |
+------+-----------+-------------------------------+----------------------------------+
|  FA  | CALLG     | КОП arglist.ab,               | Вызов процедуры с                |
|      |           | dst.ab,{-(SP).w*}             | произвольным списком             |
|      |           |                               | аргументов                       |
+------+-----------+-------------------------------+----------------------------------+
|  FB  | CALLS     | КОП numg.rg.rl,               | Вызов процедуры со               |
|      |           | dst.ab,{-(SP).w*}             | списком аргументов в             |
|      |           |                               | стеке                            |
+------+-----------+-------------------------------+----------------------------------+
|  04  | RET       | КОП {(SP)+.r*}                | Возврат из процедуры             |
+------+-----------+-------------------------------+----------------------------------+

6. Привилегированные команды

+------+-----------+-------------------------------+----------------------------------+
| Код  | Мнемоника |            Формат             |           Назначение             |
+------+-----------+-------------------------------+----------------------------------+
|  0C  | PROBER    | КОП mode.rb,len.rw,           | Проверка доступности по          |
|      |           | base.ab                       | чтению                           |
+------+-----------+-------------------------------+----------------------------------+
|  0D  | PROBEW    | -"-                           | Проверка доступности по          |
|      |           |                               | записи                           |
+------+-----------+-------------------------------+----------------------------------+
|  BC  | CHMK      | КОП param.rw,{-(ySP).w*},     | Смена режима на режим            |
|      |           | где: y=MINU(x,PSL <текущий    | ядра                             |
|      |           | реж.>)                        |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  BD  | CHME      | -"-                           | Смена режима на режим            |
|      |           |                               | исполнения                       |
+------+-----------+-------------------------------+----------------------------------+
|  BE  | CHMS      | -"-                           | Смена режима на режим            |
|      |           |                               | супервизора                      |
+------+-----------+-------------------------------+----------------------------------+
|  BF  | CHMU      | -"-                           | Смена режима на режим            |
|      |           |                               | пользователя                     |
+------+-----------+-------------------------------+----------------------------------+
|  02  | REI       | КОП {(SP)+.r*}                | Возврат из исключитель-          |
|      |           |                               | ной ситуации или пре -           |
|      |           |                               | рывания                          |
+------+-----------+-------------------------------+----------------------------------+
|  06  | LDPCTX    | КОП {PCB.r*,-(кSP).w*},       | Загрузка контекста               |
|      |           | где PCB - регистр             | процесса                         |
|      |           | управления процес-            |                                  |
|      |           | сором                         |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  07  | SVPCTX    | КОП {(SP)+.r*,PCB.w*}         | Сохранение контекста             |
|      |           |                               | процесса                         |
+------+-----------+-------------------------------+----------------------------------+
|  DA  | MTPR      | КОП src.rl,procreg.rl         | Пересылка в процессор-           |
|      |           |                               | ный регистр                      |
+------+-----------+-------------------------------+----------------------------------+
|  DB  | MFPR      | КОП procreg.rl,dst.wl         | Пересылка из процессор-          |
|      |           |                               | ного регистра                    |
+------+-----------+-------------------------------+----------------------------------+

7. Специальные команды

+------+-----------+-------------------------------+----------------------------------+
| Код  | Мнемоника |            Формат             |           Назначение             |
+------+-----------+-------------------------------+----------------------------------+
|  B9  | BICPSW    | КОП mask.rw                   | Сброс разрядов в слове           |
|      |           |                               | состояния процессора             |
+------+-----------+-------------------------------+----------------------------------+
|  B8  | BISPSW    | -"-                           | Установка разрядов в             |
|      |           |                               | слове состояния процес-          |
|      |           |                               | сора                             |
+------+-----------+-------------------------------+----------------------------------+
|  03  | BRT       | КОП {-(кSP).w*}               | Ошибка ветвления                 |
+------+-----------+-------------------------------+----------------------------------+
|  00  | HALT      | -"-                           | Останов                          |
+------+-----------+-------------------------------+----------------------------------+
|  0A  | INDEX     | КОП subscript.rl,low.rl,      | Вычисление индекса               |
|      |           | high.rl,size.rl,indexin.rl,   |                                  |
|      |           | indexout.wl                   |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  DC  | MOVPSL    | КОП dst.wl                    | Пересылка из длинного            |
|      |           |                               | слова состояния процес-          |
|      |           |                               | сора                             |
+------+-----------+-------------------------------+----------------------------------+
|  01  | NOP       | КОП                           | Пустой оператор                  |
+------+-----------+-------------------------------+----------------------------------+
|  BB  | PUSHR     | КОП mask.rw,{-(SP).w*}        | Пересылка содержимого            |
|      |           |                               | регистров в стек                 |
+------+-----------+-------------------------------+----------------------------------+
|  BA  | POPR      | КОП mask.rw,{(SP)+.r*}        | Удаление содержимого             |
|      |           |                               | регистров из стека               |
+------+-----------+-------------------------------+----------------------------------+
|  FC  | XFC       | КОП                           | Расширенный вызов                |
|      |           |                               | функции                          |
+------+-----------+-------------------------------+----------------------------------+
| FEFF | BUGW      | КОП message.bx                | Проверить слово на на-           |
|      |           |                               | личие ошибок                     |
+------+-----------+-------------------------------+----------------------------------+
| FDFF | BUGL      | -"-                           | Проверить двойное сло-           |
|      |           |                               | во на наличие ошибок             |
+------+-----------+-------------------------------+----------------------------------+

8. Команды работы с очередями

+------+-----------+-------------------------------+----------------------------------+
| Код  | Мнемоника |            Формат             |           Назначение             |
+------+-----------+-------------------------------+----------------------------------+
|  5C  | INSQHI    | КОП entry.ab,header.aq        | Занесение элемента в             |
|      |           |                               | "голову" очереди с               |
|      |           |                               | блокировкой памяти               |
+------+-----------+-------------------------------+----------------------------------+
|  5D  | INSQTI    | КОП entry.ab,header.aq        | Занесение элемента в             |
|      |           |                               | "хвост" очереди с бло-           |
|      |           |                               | кировкой памяти                  |
+------+-----------+-------------------------------+----------------------------------+
|  0E  | INSQUE    | КОП entry.ab,pred.ab          | Занесение элемента в             |
|      |           |                               | очередь                          |
+------+-----------+-------------------------------+----------------------------------+
|  5E  | REMQHI    | КОП header.aq,addr.wl         | Удаление элемента из             |
|      |           |                               | "головы" очереди с бло-          |
|      |           |                               | кировкой памяти                  |
+------+-----------+-------------------------------+----------------------------------+
|  5F  | REMQTI    | -"-                           | Удаление элемента из             |
|      |           |                               | "хвоста" очереди с бло-          |
|      |           |                               | кировкой памяти                  |
+------+-----------+-------------------------------+----------------------------------+
|  0F  | REMQUE    | КОП entry.ab,addr.wl          | Удаление элемента из             |
|      |           |                               | очереди                          |
+------+-----------+-------------------------------+----------------------------------+

9. Команды плавающей арифметики

+------+-----------+-------------------------------+----------------------------------+
| Код  | Мнемоника |            Формат             |           Назначение             |
+------+-----------+-------------------------------+----------------------------------+
|  40  | ADDF2     | КОП addr.rx,sum.mx            | Сложение двухоперанд-            |
|      |           |                               | ное в формате F                  |
+------+-----------+-------------------------------+----------------------------------+
|  60  | ADDD2     | -"-                           | Сложение двухоперанд-            |
|      |           |                               | ное в формате D                  |
+------+-----------+-------------------------------+----------------------------------+
| 40FD | ADDG2     | -"-                           | Сложение двухоперанд-            |
|      |           |                               | ное в формате G                  |
+------+-----------+-------------------------------+----------------------------------+
| 60FD | ADDH2     | -"-                           | Сложение двухоперанд-            |
|      |           |                               | ное в формате H                  |
+------+-----------+-------------------------------+----------------------------------+
|  4I  | ADDF3     | КОП add1.rx,add2.rx,          | Сложение трехоперанд-            |
|      |           | sum.wx                        | ное в формате F                  |
+------+-----------+-------------------------------+----------------------------------+
|  6I  | ADDD3     | -"-                           | Сложение трехоперанд-            |
|      |           |                               | ное в формате D                  |
+------+-----------+-------------------------------+----------------------------------+
| 4IFD | ADDG3     | КОП add1.rx,add2.rx,          | Сложение трехоперандное          |
|      |           | sum.wx                        | в формате G                      |
+------+-----------+-------------------------------+----------------------------------+
| 6IFD | ADDH3     | -"-                           | Сложение трехоперандное          |
|      |           |                               | в формате H                      |
+------+-----------+-------------------------------+----------------------------------+
|  D4  | CLRL,CLRF | КОП dst.wx                    | Очистка двойного слова           |
|      |           |                               | /или слова формата F/            |
+------+-----------+-------------------------------+----------------------------------+
|  7C  | CLRQ,CLRD,| -"-                           | Очистка четверного слова         |
|      | CLRG      |                               | /или слов форматов D ,G/         |
+------+-----------+-------------------------------+----------------------------------+
| 7CFD | CLRO,CLRH | -"-                           | Очистка октослова /или           |
|      |           |                               | слова формата H/                 |
+------+-----------+-------------------------------+----------------------------------+
|  5I  | CMPF      | КОП src1.rx,src2.rx           | Сравнение слов формата F         |
+------+-----------+-------------------------------+----------------------------------+
|  7I  | CMPD      | -"-                           | Сравнение слов формата D         |
+------+-----------+-------------------------------+----------------------------------+
| 5IFD | CMPG      | -"-                           | Сравнение слов формата G         |
+------+-----------+-------------------------------+----------------------------------+
| 7IFD | CMPH      | -"-                           | Сравнение слов формата H         |
+------+-----------+-------------------------------+----------------------------------+
|  4B  | CVTRFL    | КОП src.rx,dst.wl             | Преобразование слова             |
|      |           |                               | формата F в двойное сло-         |
|      |           |                               | во с округлением                 |
+------+-----------+-------------------------------+----------------------------------+
|  6B  | CVTRDL    | -"-                           | Преобразование слова             |
|      |           |                               | формата D  в двойное             |
|      |           |                               | слово с округлением              |
+------+-----------+-------------------------------+----------------------------------+
| 4BFD | CVTRGL    | -"-                           | Преобразование слова             |
|      |           |                               | формата G  в двойное             |
|      |           |                               | слово с округлением              |
+------+-----------+-------------------------------+----------------------------------+
| 6BFD | CVTRHL    | -"-                           | Преобразование слова             |
|      |           |                               | формата H в двойное              |
|      |           |                               | слово с округлением              |
+------+-----------+-------------------------------+----------------------------------+
|  48  | CVTFB     | КОП src.rx,dst.wy             | Преобразование слова             |
|      |           |                               | формата F в байт                 |
+------+-----------+-------------------------------+----------------------------------+
|  56  | CVTFD     | КОП src.rx,dst.wy             | Преобразование слова фор-        |
|      |           |                               | мата F в слово формата D         |
+------+-----------+-------------------------------+----------------------------------+
| 99FD | CVTFG     | -"-                           | Преобразование слова фор-        |
|      |           |                               | мата F в слово формата G         |
+------+-----------+-------------------------------+----------------------------------+
| 98FD | CVTFH     | -"-                           | Преобразование слова фор-        |
|      |           |                               | мата F в слово формата H         |
+------+-----------+-------------------------------+----------------------------------+
|  4A  | CVTFL     | -"-                           | Преобразование слова фор-        |
|      |           |                               | мата F в двойное слово           |
+------+-----------+-------------------------------+----------------------------------+
|  49  | CVTFW     | -"-                           | Преобразование слова фор-        |
|      |           |                               | мата F в слово                   |
+------+-----------+-------------------------------+----------------------------------+
| 48FD | CVTGB     | -"-                           | Преобразование слова фор-        |
|      |           |                               | мата G  в байт                   |
+------+-----------+-------------------------------+----------------------------------+
| 33FD | CVTGF     | -"-                           | Преобразование слова фор-        |
|      |           |                               | мата G  в слово формата F        |
+------+-----------+-------------------------------+----------------------------------+
| 56FD | CVTGH     | -"-                           | Преобразование слова фор-        |
|      |           |                               | мата G  в слово формата H        |
+------+-----------+-------------------------------+----------------------------------+
| 4AFD | CVTGL     | -"-                           | Преобразование слова фор-        |
|      |           |                               | мата G  в двойное слово          |
+------+-----------+-------------------------------+----------------------------------+
| 49FD | CVTGW     | -"-                           | Преобразование слова фор-        |
|      |           |                               | мата G  в слово                  |
+------+-----------+-------------------------------+----------------------------------+
| 68FD | CVTHB     | -"-                           | Преобразование слова фор-        |
|      |           |                               | мата H в байт                    |
+------+-----------+-------------------------------+----------------------------------+
| F7FD | CVTHD     | -"-                           | Преобразование слова фор-        |
|      |           |                               | мата H в слово формата D         |
+------+-----------+-------------------------------+----------------------------------+
| 56FD | CVTHF     | -"-                           | Преобразование слова фор-        |
|      |           |                               | мата H в слово формата F         |
+------+-----------+-------------------------------+----------------------------------+
| 76FD | CVTHG     | -"-                           | Преобразование слова фор-        |
|      |           |                               | мата H в слово формата G         |
+------+-----------+-------------------------------+----------------------------------+
| 6AFD | CVTHL     | -"-                           | Преобразование слова фор-        |
|      |           |                               | мата H в двойное слово           |
+------+-----------+-------------------------------+----------------------------------+
| 69FD | CVTHW     | -"-                           | Преобразование слова фор-        |
|      |           |                               | мата H в слово                   |
+------+-----------+-------------------------------+----------------------------------+
|  68  | CVTDB     | КОП src.rx,dst.wy             | Преобразование слова форма-      |
|      |           |                               | та D  в байт                     |
+------+-----------+-------------------------------+----------------------------------+
|  76  | CVTDF     | -"-                           | Преобразование слова форма-      |
|      |           |                               | та D  в слово формата F          |
+------+-----------+-------------------------------+----------------------------------+
| 32FD | CVTDH     | -"-                           | Преобразование слова форма-      |
|      |           |                               | та D  в слово формата H          |
+------+-----------+-------------------------------+----------------------------------+
|  6A  | CVTDL     | -"-                           | Преобразование слова форма-      |
|      |           |                               | та D  в двойное слово            |
+------+-----------+-------------------------------+----------------------------------+
|  69  | CVTDW     | -"-                           | Преобразование слова форма-      |
|      |           |                               | та D  в слово                    |
+------+-----------+-------------------------------+----------------------------------+
|  6C  | CVTBD     | -"-                           | Преобразование байта в сло-      |
|      |           |                               | во формата D                     |
+------+-----------+-------------------------------+----------------------------------+
|  4C  | CVTBF     | -"-                           | Преобразование байта в сло-      |
|      |           |                               | во формата F                     |
+------+-----------+-------------------------------+----------------------------------+
| 4CFD | CVTBG     | -"-                           | Преобразование байта в           |
|      |           |                               | слово формата G                  |
+------+-----------+-------------------------------+----------------------------------+
| 6CFD | CVTBH     | -"-                           | Преобразование байта в           |
|      |           |                               | слово формата H                  |
+------+-----------+-------------------------------+----------------------------------+
|  6D  | CVTWD     | -"-                           | Преобразование слова в           |
|      |           |                               | слово формата D                  |
+------+-----------+-------------------------------+----------------------------------+
|  4D  | CVTWF     | -"-                           | Преобразование слова в           |
|      |           |                               | слово формата F                  |
+------+-----------+-------------------------------+----------------------------------+
| 4DFD | CVTWG     | -"-                           | Преобразование слова в           |
|      |           |                               | слово формата G                  |
+------+-----------+-------------------------------+----------------------------------+
| 6DFD | CVTWH     | -"-                           | Преобразование слова в           |
|      |           |                               | слово формата H                  |
+------+-----------+-------------------------------+----------------------------------+
|  6E  | CVTLD     | -"-                           | Преобразование двойного          |
|      |           |                               | слова в слово формата D          |
+------+-----------+-------------------------------+----------------------------------+
|  4E  | CVTLF     | -"-                           | Преобразование двойного          |
|      |           |                               | слова в слово формата F          |
+------+-----------+-------------------------------+----------------------------------+
| 4EFD | CVTLG     | -"-                           | Преобразование двойного          |
|      |           |                               | слова в слово формата G          |
+------+-----------+-------------------------------+----------------------------------+
| 6EFD | CVTLH     | КОП rc.rx,dst.wy              | Преобразование двойного          |
|      |           |                               | слова в слово формата H          |
+------+-----------+-------------------------------+----------------------------------+
|  46  | DIVF2     | КОП divr.rx,quo.mx            | Деление двухоперандное           |
|      |           |                               | в формате F                      |
+------+-----------+-------------------------------+----------------------------------+
|  66  | DIVD2     | -"-                           | Деление двухоперандное           |
|      |           |                               | в формате D                      |
+------+-----------+-------------------------------+----------------------------------+
| 46FD | DIVG2     | -"-                           | Деление двухоперандное           |
|      |           |                               | в формате G                      |
+------+-----------+-------------------------------+----------------------------------+
| 66FD | DIVH2     | -"-                           | Деление двухоперандное           |
|      |           |                               | в формате H                      |
+------+-----------+-------------------------------+----------------------------------+
|  47  | DIVF3     | КОП divr.rx,divd.rx,          | Деление трехоперандное           |
|      |           | quo.wx                        | в формате F                      |
+------+-----------+-------------------------------+----------------------------------+
|  67  | DIVD3     | -"-                           | Деление трехоперандное           |
|      |           |                               | в формате D                      |
+------+-----------+-------------------------------+----------------------------------+
| 47FD | DIVG3     | -"-                           | Деление трехоперандное           |
|      |           |                               | в формате G                      |
+------+-----------+-------------------------------+----------------------------------+
| 67FD | DIVH3     | -"-                           | Деление трехоперандное           |
|      |           |                               | в формате H                      |
+------+-----------+-------------------------------+----------------------------------+
|  54  | EMODF     | КОП mulr.rx,mulrx.rb,         | Расширенное умножение            |
|      |           | muld.rx,int.wl,fract.wx       | в формате F с выделе-            |
|      |           |                               | нием целой части                 |
+------+-----------+-------------------------------+----------------------------------+
|  74  | EMODD     | -"-                           | Расширенное умножение            |
|      |           |                               | в формате D  с вы-               |
|      |           |                               | делением целой части             |
+------+-----------+-------------------------------+----------------------------------+
| 54FD | EMODG     | КОП mulr.rx,mulrx.rw,         | Расширенное умножение            |
|      |           | muld.rx,int.wl,fract.wx       | в формате G с выделе-            |
|      |           |                               | нием целой части                 |
+------+-----------+-------------------------------+----------------------------------+
| 74FD | EMODH     | -"-                           | Расширенное умножение            |
|      |           |                               | в формате H с выделе-            |
|      |           |                               | нием целой части                 |
+------+-----------+-------------------------------+----------------------------------+
|  52  | MNEGF     | КОП src.rx,dst.wx             | Пересылка с арифметическим       |
|      |           |                               | отрицанием в формате F           |
+------+-----------+-------------------------------+----------------------------------+
|  72  | MNEGD     | -"-                           | Пересылка с арифметическим       |
|      |           |                               | отрицанием в формате D           |
+------+-----------+-------------------------------+----------------------------------+
| 52FD | MNEGG     | -"-                           | Пересылка с арифметическим       |
|      |           |                               | отрицанием в формате G           |
+------+-----------+-------------------------------+----------------------------------+
| 72FD | MNEGH     | -"-                           | Пересылка с арифметическим       |
|      |           |                               | отрицанием в формате H           |
+------+-----------+-------------------------------+----------------------------------+
|  50  | MOVF      | -"-                           | Пересылка слов формата F         |
+------+-----------+-------------------------------+----------------------------------+
|  70  | MOVD      | -"-                           | Пересылка слов формата D         |
+------+-----------+-------------------------------+----------------------------------+
| 50FD | MOVG      | -"-                           | Пересылка слов формата G         |
+------+-----------+-------------------------------+----------------------------------+
| 70FD | MOVH      | -"-                           | Пересылка слов формата H         |
+------+-----------+-------------------------------+----------------------------------+
|  44  | MULF2     | КОП mulr.rx,                  | Умножение двухоперандное         |
|      |           | prod.mx                       | в формате F                      |
+------+-----------+-------------------------------+----------------------------------+
|  64  | MULD2     | -"-                           | Умножение двухоперандное         |
|      |           |                               | в формате D                      |
+------+-----------+-------------------------------+----------------------------------+
| 44FD | MULG2     | -"-                           | Умножение двухоперандное         |
|      |           |                               | в формате G                      |
+------+-----------+-------------------------------+----------------------------------+
| 64FD | MULH2     | -"-                           | Умножение двухоперандное         |
|      |           |                               | в формате H                      |
+------+-----------+-------------------------------+----------------------------------+
|  45  | MULF3     | КОП mulr.rx,                  | Умножение трехоперандное         |
|      |           | muld.rx,prod.wx               | в формате F                      |
+------+-----------+-------------------------------+----------------------------------+
|  65  | MULD3     | -"-                           | Умножение трехоперандное         |
|      |           |                               | в формате D                      |
+------+-----------+-------------------------------+----------------------------------+
| 45FD | MULG3     | -"-                           | Умножение трехоперандное         |
|      |           |                               | в формате G                      |
+------+-----------+-------------------------------+----------------------------------+
| 65FD | MULH3     | -"-                           | Умножение трехоперандное         |
|      |           |                               | в формате H                      |
+------+-----------+-------------------------------+----------------------------------+
|  55  | POLYF     | КОП arg.rf,degree.rw,         | Вычисление значения поли-        |
|      |           | tbladdr.ab,{R0-3.wl}          | нома в формате F                 |
+------+-----------+-------------------------------+----------------------------------+
|  75  | POLYD     | КОП arg.rd,degree.rw,         | Вычисление значения поли-        |
|      |           | tbladdr.ab,{R0-5.wl}          | нома в формате D                 |
+------+-----------+-------------------------------+----------------------------------+
| 55FD | POLYG     | КОП arg.rg,degree.rw,         | Вычисление значения поли-        |
|      |           | tbladdr.db,{R0-5.wl}          | нома в формате G                 |
+------+-----------+-------------------------------+----------------------------------+
| 75FD | POLYH     | КОП adg.rh,degree.rw,         | Вычисление значения поли-        |
|      |           | tbladdr.ab,                   | нома в формате H                 |
|      |           | {R0-5.wl,-16(SP):-1(SP).wb}   |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  42  | SUBF2     | КОП sub.rx,dif.mx             | Вычитание двухоперандное         |
|      |           |                               | в формате F                      |
+------+-----------+-------------------------------+----------------------------------+
|  62  | SUBD2     | -"-                           | Вычитание двухоперандное         |
|      |           |                               | в формате D                      |
+------+-----------+-------------------------------+----------------------------------+
| 42FD | SUBG2     | -"-                           | Вычитание двухоперандное         |
|      |           |                               | в формате G                      |
+------+-----------+-------------------------------+----------------------------------+
| 62FD | SUBH2     | -"-                           | Вычитание двухоперандное         |
|      |           |                               | в формате H                      |
+------+-----------+-------------------------------+----------------------------------+
|  43  | SUBF3     | КОП sub.rx,min.rx,dif.wx      | Вычитание трехоперандное         |
|      |           |                               | в формате F                      |
+------+-----------+-------------------------------+----------------------------------+
|  63  | SUBD3     | -"-                           | Вычитание трехоперандное         |
|      |           |                               | в формате D                      |
+------+-----------+-------------------------------+----------------------------------+
| 43FD | SUBG3     | -"-                           | Вычитание трехоперандное         |
|      |           |                               | в формате G                      |
+------+-----------+-------------------------------+----------------------------------+
| 63FD | SUBH3     | -"-                           | Вычитание трехоперандное         |
|      |           |                               | в формате H                      |
+------+-----------+-------------------------------+----------------------------------+
|  53  | TSTF      | КОП src.rx                    | Тестирование в формате F         |
+------+-----------+-------------------------------+----------------------------------+
|  73  | TSTD      | -"-                           | Тестирование в формате D         |
+------+-----------+-------------------------------+----------------------------------+
| 53FD | TSTG      | -"-                           | Тестирование в формате G         |
+------+-----------+-------------------------------+----------------------------------+
| 73FD | TSTH      | КОП src.rx                    | Тестирование в форма-            |
|      |           |                               | те H                             |
+------+-----------+-------------------------------+----------------------------------+

10. Команды обработки строк символов

+------+-----------+-------------------------------+----------------------------------+
| Код  | Мнемоника |            Формат             |           Назначение             |
+------+-----------+-------------------------------+----------------------------------+
|  29  | CMPC3     | КОП len.rw,src1addr.ab,       | Трехоперандное сим -             |
|      |           | src2addr.ab,{R0-3.wl}         | вольное сравнение                |
+------+-----------+-------------------------------+----------------------------------+
|  2D  | CMPC5     | КОП src1len.rw,src1addr.ab,   | Пятиоперандное сим -             |
|      |           | fill.rb,src2len.rw,           | вольное сравнение                |
|      |           | src2addr.ab,{R0-3.wl}         |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  3A  | LOCC      | КОП char.rb,len.rw,addr.ab,   | Поиск символа                    |
|      |           | {R0-1.wl}                     |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  39  | MATCHC    | КОП len1.rw,addr1.ab,len2.rw, | Поиск подстроки                  |
|      |           | addr2.ab,{R0-3.wl}            |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  28  | MOVC3     | КОП len.rw,srcaddr.ab,        | Трехоперандная пере-             |
|      |           | dstaddr.ab,{R0-5.wl}          | сылка символов                   |
+------+-----------+-------------------------------+----------------------------------+
|  2C  | MOVC5     | КОП srclen.rw,srcaddr.ab,     | Пятиоперандная пере-             |
|      |           | fill.rb,dstlen.rw,dstaddr.ab  | сылка символов                   |
+------+-----------+-------------------------------+----------------------------------+
|  2E  | MOVTC     | КОП srclen.rw,srcaddr.ab,     | Пересылка символов с             |
|      |           | fill.rb,tbladdr.ab,dstlen.rw, | трансляцией                      |
|      |           | dstaddr.ab,{R0-5.wl}          |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  2F  | MOVTUC    | КОП srclen.rw,srcaddr.ab,     | Пересылка символов с             |
|      |           | esc.rb,tbladdr.ab,            | трансляцией и выходом            |
|      |           | dstlen.rw,dstaddr.ab,         | по указанному символу            |
|      |           | {R0-5.ml}                     |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  2A  | SCANC     | КОП len.rw,addr.ab,           | Сканирование символов            |
|      |           | tbladdr.ab,mask.rb,{R0-3.wl}  |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  3B  | SKPC      | КОП char.rb,len.rw,addr.ab,   | Пропуск символов                 |
|      |           | {R0-1.wl}                     |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  2B  | SPANC     | КОП len.rw,addr.ab,           | Поиск символа                    |
|      |           | tbladdr.ab,mask.rb,           |                                  |
|      |           | {R0-3.wl}                     |                                  |
+------+-----------+-------------------------------+----------------------------------+

11. Команды десятичной строки цифр

+------+-----------+-------------------------------+----------------------------------+
| Код  | Мнемоника |            Формат             |           Назначение             |
+------+-----------+-------------------------------+----------------------------------+
|  20  | ADDP4     | КОП addlen.rw,addaddr.ab,     | Четырехоперандное сло-           |
|      |           | sumlen.rw,sumaddr.ab,         | жение в упакованном              |
|      |           | {R0-3.wl}                     | формате                          |
+------+-----------+-------------------------------+----------------------------------+
|  21  | ADDP6     | КОП add1len.rw,add1addr.ab,   | Шестиоперандное сложе-           |
|      |           | add2len.rw,add2addr.ab,       | ние в упакованном фор-           |
|      |           | sumlen.rw,sumaddr.ab,         | мате                             |
|      |           | {R0-5.wl}                     |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  F8  | ASHP      | КОП cnt.rb,srclen.rw,         | Арифметический сдвиг и           |
|      |           | srcaddr.ab,round.rb,dstlen.rw,| округление в упакован -          |
|      |           | dstaddr.ab,{R0-3.wl}          | ном формате                      |
+------+-----------+-------------------------------+----------------------------------+
|  35  | CMPP3     | КОП len.rw,src1addr.ab,       | Трехоперандное сравне -          |
|      |           | src2addr.ab,{R0-3.wl}         | ние в упакованном фор -          |
|      |           |                               | мате                             |
+------+-----------+-------------------------------+----------------------------------+
|  37  | CMPP4     | КОП src1len.rw,src1addr.ab,   | Четырехоперандное срав-          |
|      |           | src2len.rw,src2addr.ab,       | нение в упакованном фор-         |
|      |           | {R0-3.wl}                     | мате                             |
+------+-----------+-------------------------------+----------------------------------+
|  F9  | CVTLP     | КОП src.rl,dstlen.rw,         | Преобразование двойно-           |
|      |           | dstaddr.ab,{R0-3.wl}          | го слова в упакованный           |
|      |           |                               | формат                           |
+------+-----------+-------------------------------+----------------------------------+
|  36  | CVTPL     | КОП srclen.rw,srcaddr.ab,     | Преобразование упакован-         |
|      |           | {R0-3.wl},dst.wl              | ного формата в двойное           |
|      |           |                               | слово                            |
+------+-----------+-------------------------------+----------------------------------+
|  08  | CVTPS     | КОП srclen.rw,srcaddr.ab,     | Преобразование упако -           |
|      |           | dstlen.rw,dstaddr.ab,         | ванного формата в чис-           |
|      |           | {R0-3.wl}                     | ловой с выделенным ве-           |
|      |           |                               | дущим знаком                     |
+------+-----------+-------------------------------+----------------------------------+
|  24  | CVTPT     | КОП srclen.rw,srcaddr.ab,     | Преобразование из упа-           |
|      |           | tbladdr.ab,dstlen.rw,         | кованного формата в              |
|      |           | dstaddr.ab,{R0-3.wl}          | усеченный числовой               |
+------+-----------+-------------------------------+----------------------------------+
|  09  | CVTSP     | КОП srclen.rw,srcaddr.ab,     | Преобразование из чис-           |
|      |           | dstlen.rw,dstaddr.ab,         | лового формата с выде-           |
|      |           | {R0-3.wl}                     | ленным ведущим знаком            |
|      |           |                               | в упакованный                    |
+------+-----------+-------------------------------+----------------------------------+
|  26  | CVTTP     | КОП srclen.rw,srcaddr.ab,     | Преобразование из усе-           |
|      |           | tbladdr.ab,dstlen.rw,         | ченного числового фор-           |
|      |           | dstaddr.ab,{R0-3.wl}          | мата в упакованный               |
+------+-----------+-------------------------------+----------------------------------+
|  27  | DIVP      | КОП divrlen.rw,divraddr.ab,   | Деление в упакованном            |
|      |           | divdln.rw,divdaddr.ab,        | формате                          |
|      |           | quolen.rw,quoaddr.ab,         |                                  |
|      |           | {R0-5.wl,-16(SP):-1(SP).wb}   |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  34  | MOVP      | КОП len.rw,srcaddr.ab,        | Пересылка в упакован-            |
|      |           | dstaddr.ab,{R0-3.wl}          | ном формате                      |
+------+-----------+-------------------------------+----------------------------------+
|  25  | MULP      | КОП mulrlen.rw,mulraddr.ab,   | Умножение в упакован-            |
|      |           | muldlen.rw,muldaddr.ab,       | ном формате                      |
|      |           | prodlen.rw,prodaddr.ab,       |                                  |
|      |           | {R0-5.wl}                     |                                  |
+------+-----------+-------------------------------+----------------------------------+
|  22  | SUBP4     | КОП sublen.rw,subaddr.ab,     | Четырехоперандное                |
|      |           | diflen.rw,difaddr.ab,         | вычитание в упакован-            |
|      |           | {R0-3.wl}                     | ном формате                      |
+------+-----------+-------------------------------+----------------------------------+
|  23  | SUBP6     | КОП sublen.rw,subaddr.ab,     | Шестиоперандное                  |
|      |           | minlen.rw,minaddr.ab,         | вычитание в упакован-            |
|      |           | diflen.rw,difaddr.ab,         | ном формате                      |
|      |           | {R0-5.wl}                     |                                  |
+------+-----------+-------------------------------+----------------------------------+

12. Контроль циклической избыточности

+------+-----------+-------------------------------+----------------------------------+
| Код  | Мнемоника |            Формат             |           Назначение             |
+------+-----------+-------------------------------+----------------------------------+
|  0B  | CRC       | КОП tbl.ab,inicrc.rl,         | Вычисление циклического          |
|      |           | strlen.rw,stream.ab           | полинома для проверки            |
+------+-----------+-------------------------------+----------------------------------+

13. Редактирование

+------+-----------+-------------------------------+----------------------------------+
| Код  | Мнемоника |            Формат             |           Назначение             |
+------+-----------+-------------------------------+----------------------------------+
|  38  | EDITPC    | КОП srclen.rw,                | Редактирование упако-            |
|      |           | srcaddr.ab,pattern.ab,        | ванной строки в символь-         |
|      |           | dstaddr.ab                    | ную                              |
+------+-----------+-------------------------------+----------------------------------+

Формат команды

В вычислительной системе "Электроника 32" используется формат команды переменной длины. Длина формата может быть от одного байта и выше в зависимости от типа команды. Обобщенная схема формата команды приведена на рис. 51.

Общая схема формата команды

+-------------------------------+
| Код операции (1 или 2 байта)  |
+-------------------------------+
| Спецификатор операнда 1       |
+-------------------------------+
| Спецификатор операнда 2       |
+-------------------------------+
|              .                |
|              .                |
|              .                |
+-------------------------------+
| Спецификатор операнда N       |
+-------------------------------+

Рис. 51.

Каждая команда состоит из кода операции и следующих за ним от 0 до 6 спецификаторов операндов, количество и тип которых зависят от кода операции. Код операции точно определяет как требуемая операция будет выполняться. Под код операции может отводиться один или два байта, в зависимости от содержимого байта с адресом "А". Два байта будут использоваться под код операции при условии, что значение числа, содержащегося в этом байте, находится в диапазоне от FC(16) до FF(16). Формат кода операции приведен на рис. 52.

Каждый из спецификаторов операнда имеет одинаковый формат, т.е. метод адресации плюс дополнительная информация. Эта дополнительная информация содержит до двух переменных: указателя регистра и адрес; указатель регистра и данные; указатель регистра и смещение. Использование операнда определяется косвенно из кода операции и называется типом операнда.

Спецификатор операнда описывается следующим образом:

⟨Название⟩ ,   ⟨тип доступа⟩   ⟨тип данных⟩
                 \___________/
                 тип операнда

где

⟨Название⟩ - определяет операнд в контексте инструкции.

⟨Тип доступа⟩ - спецификатора операнда обозначается одной буквой:

  • a - вычисляется эффективный адрес операнда. Адрес формируется в двойном слове, которое является фактическим операндом инструкции. Контекст вычисления адреса является типом данных, т.е. величиной, используемой для автоинкрементации, автодекрементации и индексации;
  • b - нет ссылок на операнд. Спецификатор операнда представляет собой смещение перехода. Размер смещения переходаопределяется типом данных;
  • m - операнд считывается, может быть модифицирован и записывается. Если операнд фактически не модифицируется, то он может и не записываться обратно. Несмотря на это, операнды с таким типом доступа всегда проверяются на возможность как чтения, так и записи;
  • r - операнд только читается;
  • v - вычисляется эффективный адрес операнда (доступ "поле"). Если эффективный адрес формируется в памяти, то он сохраняется в двойном слове, которое является фактическим операндом инструкции. Если эффективным адресом является регистр Rn, то операндом является R[n] или R[n+1]'R[n];
  • w - операнд доступен только по записи.


⟨Тип данных⟩ - обозначают следующим образом:

  • b - байт
  • d - плавающее слово типа D
  • f - плавающее слово типа F
  • g - плавающее слово типа G
  • h - плавающее слово типа H
  • l - двойное слово
  • o - восьмерное слово
  • q - четверное слово
  • w - слово
  • x - {первый тип данных определяется инструкцией}
  • y - {второй тип данных определяется инструкцией}


Адресация операндов

Методы адресации совместно с шестнадцатью регистрами общего назначения обеспечивают удобный метод работы с данными, так как они точно определяют, каким образом конкретные регистры используются с целью доступа, обработки и хранения данных и команд в памяти. Регистры общего назначения могут быть использованы командой любым из следующих способов:

  • как аккумуляторы;
  • как указатели (содержимое регистра - адрес операнда, а не сам операнд);
  • как индексные регистры.

Адресация может быть разделена на две категории: основные методы адресации и адресация по условному переходу. Табл. 9 дает краткое описание методов адресации через регистры общего назначения и через программный счетчик. В табл. 9 приняты следующие обозначения:

  • D - смещение;
  • I - любой метод адресации, допускающий индексирование;
  • – - логически невозможно;
  • РМА - ошибка по резервной моде адресации;
  • АС - адресация через счетчик команд;
  • НП - непредсказуемый результат;
  • НЧ - непредсказуемый результат для Q(0)слова, D(G,H) форматов, а также для поля бит переменной длины, если "позиция" плюс "размер" больше 32;
  • НВ - непредсказуемый результат для Q-слова и формата H;
  • НИР - непредсказуемый результат для индексного регистра, такого как базовый регистр;
  • ДА - всегда действительный метод адресации;
  • Ч - доступ по чтению;
  • З - доступ по записи;
  • М - доступ по чтению-модификации-записи;
  • А - доступ по адресу;
  • БА - доступ по базовому адресу поля бит переменной длины.

Таблица 9

Краткий обзор методов адресации

+--------------------------------------------------------------------------------+
|                         Общая регистровая адресация                            |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+
| Мода | Название метода| Ассемблер |          Доступ           | Использование  |
| (16) | адресации      |           +-----+-----+-----+-----+---+-----+----+-----+
|      |                |           |  Ч  |  М  |  З  |  А  | БА|  PC | SP | ИНД |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+
|  1   |       2        |     3     |  4  |  5  |  6  |  7  | 8 |  9  | 1O |  11 |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+
| 0-3  | Литеральный    | S↑Literal | ДА  | РМА | РМА | РМА |РМА|  -  | -  | РМА |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+
|  4   | Индексный      | I [Rx]    | ДА  | ДА  | ДА  | ДА  | ДА| РМА | ДА | РМА |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+
|  5   | Регистровый    | Rn        | ДА  | ДА  | ДА  | РМА | ДА| НП  | НЧ | РМА |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+
|  6   | Косвенно-      | (Rn)      | ДА  | ДА  | ДА  | ДА  | ДА| НП  | ДА | ДА  |
|      | -регистровый   |           |     |     |     |     |   |     |    |     |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+
|  7   | Автодекремент- | -(Rn)     | ДА  | ДА  | ДА  | ДА  | ДА| НП  | ДА | НИР |
|      | ный            |           |     |     |     |     |   |     |    |     |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+
|  8   | Автоинкремент- | (Rn)+     | ДА  | ДА  | ДА  | ДА  | ДА| АС  | ДА | НИР |
|      | ный            |           |     |     |     |     |   |     |    |     |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+
|  9   | Косвенно-авто- | @(Rn)+    | ДА  | ДА  | ДА  | ДА  | ДА| АС  | ДА | НИР |
|      | инкрементный   |           |     |     |     |     |   |     |    |     |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+
|  A   | С байтовым сме-| B↑D(Rn)   | ДА  | ДА  | ДА  | ДА  | ДА| АС  | ДА | ДА  |
|      | щением         |           |     |     |     |     |   |     |    |     |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+
|  B   | Косвенный с бай| @↑BD(Rn)  | ДА  | ДА  | ДА  | ДА  | ДА| АС  | ДА | ДА  |
|      | товым смещением|           |     |     |     |     |   |     |    |     |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+
|  C   | Со словным сме-| W↑D(Rn)   | ДА  | ДА  | ДА  | ДА  | ДА| АС  | ДА | ДА  |
|      | щением         |           |     |     |     |     |   |     |    |     |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+
|  D   | Косвенный со   | @↑D(Rn)   | ДА  | ДА  | ДА  | ДА  | ДА| АС  | ДА | ДА  |
|      | словным смеще -|           |     |     |     |     |   |     |    |     |
|      | нием           |           |     |     |     |     |   |     |    |     |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+
|  E   | С двухсловным  | L↑D(Rn)   | ДА  | ДА  | ДА  | ДА  | ДА| АС  | ДА | ДА  |
|      | смещением      |           |     |     |     |     |   |     |    |     |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+
|  F   | Косвенный с    | @L↑D(Rn)  | ДА  | ДА  | ДА  | ДА  | ДА| АС  | ДА | ДА  |
|      | двухсловным    |           |     |     |     |     |   |     |    |     |
|      | смещением      |           |     |     |     |     |   |     |    |     |
+------+----------------+-----------+-----+-----+-----+-----+---+-----+----+-----+


+------------------------------------------------------------------------------+
|                         Адресация через программный счетчик                  |
+------+----------------+-----------+-----+-----+-----+-----+----+----+----+---+
| Мо-  | Название мето- | ААссемблер|          Доступ            |  Использо-  |
| да   | да адресации   |           +-----+-----+-----+-----+----+  вание      |
| (16) |                |           |  Ч  |  М  |  З  |  А  | БА | PC | SP |ИНД|
+------+----------------+-----------+-----+-----+-----+-----+----+----+----+---+
|  8   | Непосредствен- | I↑# Const | ДА  | НП  | НП  | ДА  | ДА |  - |  - | ДА|
|      | ный            |           |     |     |     |     |    |    |    |   |
+------+----------------+-----------+-----+-----+-----+-----+----+----+----+---+
|  9   | Абсолютный     | @#adress  | ДА  | ДА  | ДА  | ДА  | ДА |  - |  - | ДА|
+------+----------------+-----------+-----+-----+-----+-----+----+----+----+---+
|  A   | Относительный  | B↑adress  | ДА  | ДА  | ДА  | ДА  | ДА |  - |  - | ДА|
|      | байтовый       |           |     |     |     |     |    |    |    |   |
+------+----------------+-----------+-----+-----+-----+-----+----+----+----+---+
|  B   | Косвенно-отно- | @B↑adress | ДА  | ДА  | ДА  | ДА  | ДА |  - |  - | ДА|
|      | сительный бай- |           |     |     |     |     |    |    |    |   |
|      | товый          |           |     |     |     |     |    |    |  - |   |
+------+----------------+-----------+-----+-----+-----+-----+----+----+----+---+
|  C   | Относительный  | W↑adress  | ДА  | ДА  | ДА  | ДА  | ДА |  - |  - | ДА|
|      | словный        |           |     |     |     |     |    |    |    |   |
+------+----------------+-----------+-----+-----+-----+-----+----+----+----+---+
|  D   | Косвенно-отно- | @↑adress  | ДА  | ДА  | ДА  | ДА  | ДА |  - |  - | ДА|
|      | сительный      |           |     |     |     |     |    |    |    |   |
|      | словный        |           |     |     |     |     |    |    |    |   |
+------+----------------+-----------+-----+-----+-----+-----+----+----+----+---+
|  E   | Относительный  | L↑adress  | ДА  | ДА  | ДА  | ДА  | ДА |  - |  - | ДА|
|      | двухсловный    |           |     |     |     |     |    |    |    |   |
+------+----------------+-----------+-----+-----+-----+-----+----+----+----+---+
|  F   | Косвенно-отно- | @L↑adress | ДА  | ДА  | ДА  | ДА  | ДА |  - |  - | ДА|
|      | сительный      |           |     |     |     |     |    |    |    |   |
|      | двухсловный    |           |     |     |     |     |    |    |    |   |
+------+----------------+-----------+-----+-----+-----+-----+----+----+----+---+

Время выполнения типовых команд (Timing)

Времена выполнения команд (групп команд) микропроцессором ЛI839ВМI определены в микроциклах (1 микроцикл равен двум периодам тактовой частоты 2T_CLC), при условии идеальной памяти, пренебрегая временем на сбои конвейера адресных/безадресных подкачек команд, не учитывая внутренних торможений, обусловленных особенностями конвейера команд (это торможение по занятости регистра смещения - ТСМ, торможение по занятости буфера обмена данных и торможения приема микрокоманды). Данная процедура определения времени выполнения групп команд проводится для случая регистровых мод адресации для всех операндов команды. В случае, если применение регистровой моды адресации недопустимо, не имеет смысла, либо не является показательным в плане оценки времени выполнения, приводится время выполнения (в микроциклах) только содержательной микрообработки, исключая этап микропрограммной адресации операндов, а также время аппаратной дешифрации команд, что обычно скрыто конвейером выполнения команд. Процедура TIMING - чисто качественная оценка времен выполнения типовых команд.

Сокращения, применяемые ниже по тексту:

  • Р - регистр;
  • П - память;
  • РР - формат регистр-регистр;
  • ПП - формат память-память;
  • РП - формат регистр-память.

1. Команда ADAWI

  • Случай РР - один микроцикл, особого смысла не имеет, так как в этом случае ADAWI эквивалентно простому сложению ADDW, поскольку не реализуется блокировка памяти.
  • Случай ПП - восемь микроциклов.*

2. Группа команд ADDB2, ADDW2, ADDL2, ADDB3, ADDW3, ADDL3, SUBB2, SUBW2, SUBL2, SUBB3, SUBW3, SUBL3

РР - один микроцикл.*

3. Группа команд ADWC, SBWC

РР - один микроцикл.*

4. Команда ASHL

Случаи регистр-приемник и приемник-память почти эквивалентны. Даже в случае регистровых мод адресации выполняется адресация операндов.

Параметр сдвига равен I: ~20 микроциклов.*

При параметре сдвига, равном n (до 2⁸ сдвигов):

  • T = 20 + 3(n - 1) микроциклов.

5. Команда ASHQ

Случаи регистр-приемник и приемник-память почти эквивалентны. Даже в случае регистровых мод адресации выполняется адресация операндов.

Параметр сдвига равен 1: 28 микроциклов.*

При параметре сдвига, равном n (до 2⁸ сдвигов):

  • T = 28 + 4(n - 1) микроциклов.

6. Группа команд BICB2, BICW2, BICL2, BICB3, BICW3, BICL3, BISB2, BISW2, BISL2, BISB3, BISW3, BISL3

РР, РРР - один микроцикл.*

7. Группа команд BITB, BITW , BITL

РР - один микроцикл.*

8. Группа команд CLRB, CLRW , CLRL

Р - один микроцикл.*

9. Команда CLRQ

Память-приемник: два микроцикла.*

Регистр-приемник: три микроцикла.*

10. Группа команд CMPB, CMPW , CMPL

РР - max пять микроциклов.*

11. Группа команд CVTBW, CVTBL , CVTWL

РР, РП - max девять микроциклов.*

Случаи регистр-приемник и память-приемник почти эквивалентны.

12. Группа команд CVTLB, CVTLW , CVTWB

РР, РП - max I3 микроциклов.*

Случаи регистр-приемник и память-приемник почти эквивалентны.

13. Группа команд DECB, DECW , DECL , INCB, INCW , INCL

Р, П - один микроцикл.*

14. Группа команд MCOMB, MCOMW , MCOML, MNEGB, MNEGW , MNEGL

РР - три микроцикла.*

15. Группа команд MOVB, MOVW, MOWL

РР - один микроцикл.*

16. Команда MOVQ

  • Случаи РП, РР - почти эквивалентны;
  • - max восемь микроциклов.*

17. Группа команд MOVZBL , MOVZBW , MOVZWL

РР - шесть микроциклов.*

18. Команда PUSHL

Р - четыре микроцикла.

19. Команда PUSHR

Упрятывание в стек всех регистров (РОНов), т.е. все разряды операнда mask⟨0...I4⟩ установлены в единицу: 65 микроциклов.*

20. Команда POPR

Восстановление из стека всех регистров (РОНов), т.е. все разряды операнда mask⟨0...I4⟩ установлены в единицу: 65 микроциклов.*

21. Команда ROTL

Случаи регистр-приемник и память-приемник почти эквивалентны. Даже в случае регистровых мод адресации выполняется микропрограммно этап адресации операндов.

Параметр сдвига равен 1: I8 микроциклов.*

При параметре сдвига, равном n (до 2⁸ сдвига):

  • T = 18 + 3(n - 1) микроциклов.

22. Группа команд TSTB, TSTW , TSTL

Р, П - один микроцикл.*

23. Группа команд XORB2, XORW2, XORL2, XORB3, XORW3, XORL3

РР, РРР - один микроцикл.*

24. Группа команд MOVAB, MOVAW, MOVAL , MOVAF, MOVAQ, MOVAD,MOVAG

Независимо от моды адресации операнда - источника выполняется микропрограммная адресация операндов (адресный тип доступа).

РР, ПП - один микроцикл.*

25. Группа команд PUSHAB, PUSHAW , PUSHAL , PUSHAF, PUSHAQ, PUSHAD , PUSHAG

Независимо от моды адресации операнда-источника выполняется микропрограммная адресация операндов (адресный тип доступа).

  • - четыре микроцикла.*

26. Группа команд CALLS, CALLG

Случай сохранения всех РОНов в кадре вызова процедуры:

  • ~115 микроциклов.*

27. Команда RET

Случай загрузки всех РОНов из кадра вызова процедуры:

  • ~126 микроциклов.*

28. Группа команд BICPSW, BISPSW

Независимо от моды адресации операнда ⟨mask⟩ выполняется микропрограммная адресация операндов:

  • ~ пять микроциклов.*

29. Команда INDEX

Независимо от моды адресации операндов выполняется микропрограммная адресация операндов:

  • ~225 микроциклов (случай микропрограммной реализации операции умножения при отсутствии сопроцессора);
  • ~45 микроциклов (случай реализации операции умножения на сопроцессоре).

30. Группа команд MOVPSL, NOP

Один микроцикл.

31. Команды работы с очередями

От 80 до I20 микроциклов.

32. Команды обработки строк символов

Min 30 микроциклов.

33. Команды для работы с переменными битовыми полями

От 80 до I00 микроциклов.

34. Команды ветвлений (Branches):

Простые: AOBLEQ, AOBLSS , BLSS , BLEQ, BEQL, BEQLU , BNEQ, BHEQU , BGEQ, BGTR, BLSSU , BCS , BLEQU , BGEQU , BCC, BGTRU, BVS, BVC, BLBS , BLBC, BRB, BRW, BSBB, BSBW, JMP, SOBGEQ, SOBGTR

  • - от пяти до восьми микроциклов.

Сложные: ACBB, ACBW , ACBL , ACBF, ACBD , ACBG, ACBH, BBS, BBC, BBSS , BBSC, BBCC, BBCS , BBSSI, BBCCI, CASEB, CASEW , CASEL, JSB

  • - от 10 до 60 микроциклов.

35. Время реакции на прерывания

Время реакции на прерывания - это время от момента восприятия центральным процессором запроса на прерывание до начала выполнения первой команды соответствующей программы обработки прерываний. На тактовой частоте I0 МГц это время составляет I0-I2 мкс. Наибольшее значение (для случая машинного сбоя) составляет I6 мкс. В основном, это связано с большим числом параметров (I2), сохраняемых в стеке (и соответственно, таким же числом обменов записей в ОЗУ) для данного типа прерываний.

Примечание:

"*" - только содержательная микрообработка, без учета адресации операндов.