Вопрос 37: Способы кодирования команд
Обычно число различных микроопераций как минимум на порядок превышает число машинных операций. Кроме того, в составе микрокоманды требуется указывать прямой адрес следующей микрокоманды в микропрограммной памяти. Это приводит к тому, что длина микрокоманды может достигать больших размеров (200 бит и более).
Эффективно использоваться микрокоманда длиной 200 бит не может.
Для решения этой проблемы применяют различные способы кодирования микрокоманд.
1. Унитарное кодирование (по существу это отсутствие какого-либо кодирования)

LОПЧМК = (NМОП)MAX опчмк – операционная часть микрокоманды моп – микрооперация
Достоинства:
- Простота формирования управляющих сигналов.
- Высокая скорость формирования сигналов.
2. Прямое или одноуровневое кодирование команд

Весь набор микроопераций делится на группы, связанные с управлением конкретными устройствами, а в пределах группы микрооперации кодируются в двоичной форме. Затем эти двоичные коды поступают на входы ДШi, где расшифровываются и затем используются для формирования управляющих сигналов. Прямое или одноуровневоекодирование называется так потому, что все группы являются независимы друг от друга. LMK = (Log2(mi) + 1) нужно взять целую часть Log и прибавить к ней единицу.
3. Косвенное (двухуровневое) кодирование команд
Частным случаем косвенного кодирования является резидентное кодирование. (пример использования 32-битной системы на 16-битной)
Существуют еще горизонтальное и вертикальное кодирование. Принципы деления полей.
Горизонтальное кодирование – в одно поле объединяется все взаимно исключаемые (в данном такте) микрооперации, тогда при W полей, одновременно в одном такте можно выполнить W операции. По количеству бит и быстродействию этот способ между унитарным и одноуровневым кодированием.

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

Основной недостаток это низкая скорость расшифровки и выполнение команды.