Микросхемы интегральные Л1839ВМ1. Техническое описание: различия между версиями
Panther (обсуждение | вклад) |
Panther (обсуждение | вклад) м (→1.12. Система микрокоманд: fmt) |
||
| Строка 4: | Строка 4: | ||
В микропроцессорной системе "Электроника 32" имеется несколько форматов микрокоманд. | В микропроцессорной системе "Электроника 32" имеется несколько форматов микрокоманд. | ||
=== Микрокоманды МА, МВ, МС === | |||
Форматы МА, МВ, МС это содержательные микрокоманды операционного блока (ОБ), остальные форматы микрокоманд не воспринимаются ОБ и служат для управления выборкой микрокоманд из ПЗУ-микрокода, а также для управления ПЛМ-дешифратора команд (ПЛМ ДШК). | Форматы МА, МВ, МС это содержательные микрокоманды операционного блока (ОБ), остальные форматы микрокоманд не воспринимаются ОБ и служат для управления выборкой микрокоманд из ПЗУ-микрокода, а также для управления ПЛМ-дешифратора команд (ПЛМ ДШК). | ||
| Строка 15: | Строка 17: | ||
Расшифруем значение полей содержательных микрокоманд. | Расшифруем значение полей содержательных микрокоманд. | ||
=== ФМК === | ==== ФМК ==== | ||
Поле "ФМК" - формат микрокоманды | Поле "ФМК" - формат микрокоманды | ||
| Строка 33: | Строка 35: | ||
</pre> | </pre> | ||
=== ФД === | ==== ФД ==== | ||
Поле "ФД" - формат данных | Поле "ФД" - формат данных | ||
| Строка 55: | Строка 57: | ||
</pre> | </pre> | ||
=== КОП2 === | ==== КОП2 ==== | ||
Поле "КОП2" - коды операций двухадресных и трехадресных микрокоманд | Поле "КОП2" - коды операций двухадресных и трехадресных микрокоманд | ||
| Строка 93: | Строка 95: | ||
Z - операнд в поле Z (МК 11-7 ). | Z - операнд в поле Z (МК 11-7 ). | ||
=== КОП1 === | ==== КОП1 ==== | ||
Поле "КОП1" - коды операций одноадресных микрокоманд | Поле "КОП1" - коды операций одноадресных микрокоманд | ||
| Строка 141: | Строка 143: | ||
Здесь Х - операнд по адресу в поле Х (МК 19-15), М - модификатор, или константа, по адресу в поле АМ (МК 23-20), (т.е. в одноадресной микроинструкции константа читается по полю "Y"). | Здесь Х - операнд по адресу в поле Х (МК 19-15), М - модификатор, или константа, по адресу в поле АМ (МК 23-20), (т.е. в одноадресной микроинструкции константа читается по полю "Y"). | ||
=== ПС === | ==== ПС ==== | ||
Поле "ПС" - прием состояния | Поле "ПС" - прием состояния | ||
| Строка 163: | Строка 165: | ||
</pre> | </pre> | ||
=== ВА === | ==== ВА ==== | ||
Поле "ВА" - запись в регистр виртуального адреса (РВА) | Поле "ВА" - запись в регистр виртуального адреса (РВА) | ||
| Строка 177: | Строка 179: | ||
Однако, при любых микрооперациях сдвигов, арифметических либо циклических, выдвигаемый разряд заносится в "С" РСП. Кроме того, необходимо учесть, что при арифметическом сдвиге влево, если поле ВА:=0 , то данная микрооперация трансформируется в циклический левый сдвиг. | Однако, при любых микрооперациях сдвигов, арифметических либо циклических, выдвигаемый разряд заносится в "С" РСП. Кроме того, необходимо учесть, что при арифметическом сдвиге влево, если поле ВА:=0 , то данная микрооперация трансформируется в циклический левый сдвиг. | ||
=== НО === | ==== НО ==== | ||
Поле "НО" - направление обмена | Поле "НО" - направление обмена | ||
| Строка 199: | Строка 201: | ||
</pre> | </pre> | ||
=== ФО === | ==== ФО ==== | ||
Поле "ФО" - формата обмена | Поле "ФО" - формата обмена | ||
| Строка 229: | Строка 231: | ||
Накопленный признак "V" (флаг переполнения) сбрасывается по концу команды (КК). В противном случае (если поле "ФО" (МК ⟨9,8⟩ ) : ≠ ⟨I,0⟩ ) блокируется установка " V " при сдвигах. | Накопленный признак "V" (флаг переполнения) сбрасывается по концу команды (КК). В противном случае (если поле "ФО" (МК ⟨9,8⟩ ) : ≠ ⟨I,0⟩ ) блокируется установка " V " при сдвигах. | ||
=== КОБ === | ==== КОБ ==== | ||
Рассмотрим теперь поле кода обмена ("КОБ") в формате микрокоманды. Для осуществления двойных обменов (обмены 64-разрядными данными) необходимо использовать формат обмена ("ФО") ЧСО (МК ⟨9,8⟩ : = ⟨I,0⟩ ). | Рассмотрим теперь поле кода обмена ("КОБ") в формате микрокоманды. Для осуществления двойных обменов (обмены 64-разрядными данными) необходимо использовать формат обмена ("ФО") ЧСО (МК ⟨9,8⟩ : = ⟨I,0⟩ ). | ||
| Строка 265: | Строка 267: | ||
ЧМЗ трансформируется в чтение 64-разрядных данных, а адрес записи аппаратно помещается в регистр-аккумулятор процессора R(17) и для завершения процедуры ЧМЗ необходимо проинициировать запись по адресу, находящемуся : R(17), т.е. тип обмена ЧМЗ 64-разрядными данными фактически не является неделимой операцией. | ЧМЗ трансформируется в чтение 64-разрядных данных, а адрес записи аппаратно помещается в регистр-аккумулятор процессора R(17) и для завершения процедуры ЧМЗ необходимо проинициировать запись по адресу, находящемуся : R(17), т.е. тип обмена ЧМЗ 64-разрядными данными фактически не является неделимой операцией. | ||
=== Прочие поля === | ==== Прочие поля ==== | ||
Разряд (МК0) служит для останова выборки микрокоманд из ПЗУ микрокода (S-бит). Если в микрокоманде МК0:=1, то после выборки этой микрокоманды выборка микрокоманд из ПЗУ приостанавливается до следующей записи в регистр адреса ПЗУ, т.е. если установлен S-бит и заполнены хотя бы две ячейки буфера команд (готовность буфера команд), то блок синхронизации дешифратора команд (БС ПЛМ ДШК) запускает новый цикл ПЛМ. | Разряд (МК0) служит для останова выборки микрокоманд из ПЗУ микрокода (S-бит). Если в микрокоманде МК0:=1, то после выборки этой микрокоманды выборка микрокоманд из ПЗУ приостанавливается до следующей записи в регистр адреса ПЗУ, т.е. если установлен S-бит и заполнены хотя бы две ячейки буфера команд (готовность буфера команд), то блок синхронизации дешифратора команд (БС ПЛМ ДШК) запускает новый цикл ПЛМ. | ||
Версия от 14:59, 9 апреля 2026
| Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. |
1.12. Система микрокоманд
В микропроцессорной системе "Электроника 32" имеется несколько форматов микрокоманд.
Микрокоманды МА, МВ, МС
Форматы МА, МВ, МС это содержательные микрокоманды операционного блока (ОБ), остальные форматы микрокоманд не воспринимаются ОБ и служат для управления выборкой микрокоманд из ПЗУ-микрокода, а также для управления ПЛМ-дешифратора команд (ПЛМ ДШК).
Форматы микрокоманд операционного блока МА, МВ, МС приведены на рис. 42.
Расшифруем значение полей содержательных микрокоманд.
ФМК
Поле "ФМК" - формат микрокоманды
+-------+----+----------------------------------------------+-------------+ | Разряды МК | Наименование формата микрокоманды | Обобщенное | +-----+------+ | обозначение | | 31 | 30 | | | +-----+------+----------------------------------------------+-------------+ | 0 | 0 | Одноадресная ОБ | MA | +-----+------+----------------------------------------------+-------------+ | 0 | I | Двухадресная ОБ | MB | +-----+------+----------------------------------------------+-------------+ | I | 0 | Трехадресная ОБ | MC | +-----+------+----------------------------------------------+-------------+
ФД
Поле "ФД" - формат данных
+-------+----+-------------------------------------------------------+ | Разряды МК | Формат данных в ОБ | +-----+------+ | | 29 | 28 | | +-----+------+-------------------------------------------------------+ | 0 | 0 | Двойное слово (ДС) - 32 разряда | +-----+------+-------------------------------------------------------+ | 0 | 1 | Слово (СЛ) - I6 разрядов (возможно изменение | | | | только мл.части РСП) | +-----+------+-------------------------------------------------------+ | 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 | I | Слово обмена (СЛО) | +----+-------+------------------------------------------+ | I | I | Байт обмена (БО) | +----+-------+------------------------------------------+ | I | 0 | Четверное слово обмена (ЧСО) | +----+-------+------------------------------------------+
I) Если в микрокоманде поле "ФО" (МК ⟨9,8⟩) : = ⟨I,0⟩ , то за одну такую микрокоманду можно осуществить сложение/вычитание с переносом (БИТ "С" РСП), используя выходной признак CARRY⟨===⟩ МК⟨9,8⟩:=⟨I,0⟩ (см. синтаксические таблицы микроассемблера). Сложение/вычитание с переносом блокируется, если в данной микрокоманде инициирован обмен.
2) Если в микрокоманде поле "ФО" (МК ⟨9,8⟩ ):= ⟨I,0⟩ , то при использовании микроопераций сдвигов влево (АЛ, ЦЛ) в специальном флажке запоминается признак " V " - переполнение. Логика установления данного флажка такова: если любой из выдвигаемых (на место знакового) разрядов не совпадает со знаковым разрядом, то V:=I, иначе V:=0.
По флагу записи состояния соответствующим образом (в соответствии с данным флажком) устанавливается бит "V" в РСП.
Накопленный признак "V" (флаг переполнения) сбрасывается по концу команды (КК). В противном случае (если поле "ФО" (МК ⟨9,8⟩ ) : ≠ ⟨I,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*, ȳ* | цессора | +----------+-----------+ | | | | АКØ | 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.
Системное ОЗУ и системные регистры доступны микропрограммно.