2.14. Способы кодирования микрокоманд Обычно число различных микроопераций в несколько раз превышает число машинных команд. Кроме того, в составе микрокоманды требуется указывать прямой адрес следующей микрокоманды в микропрограммной памяти. Это приводит к тому, что длина микрокоманды Lмк может достигать больших размеров (до 200 бит и более). В то же время эффективно использовать все 200 бит микрокоманды невозможно. Поэтому возрастает роль выбираемого способа кодирования микрокоманд. Различают следующие основные способы:
Унитарное кодирование (по существу, это отсутствие какого-либо кодирования).
Как видно из рис. 2.8, здесь каждый бит ОпЧМК определяет выполнение только одной микрооперации (МОп)
Рис. 2.8
Соответственно, длина ОпЧМК определяется максимальным числом микроопераций: LОпЧМК = (NМОп)MAX и это является основным недостатком унитарного кодирования.
Достоинствами унитарного кодирования являются:
простота формирования управляющих сигналов;
высокая скорость формирования управляющих сигналов.
Прямое или одноуровневое кодирование команд поясняется на рис. 2.9.
Управление регистрами Управление АЛУ Управление памятью
___
ОпЧМК m1 m2 m3 ДШ 1 ДШ 2 ДШ 3
↓ … ↓ ↓ … ↓ ↓ … ↓
{Yi} {Yi} {Yi}
2 m1 2 m2 2 m3 (число
выходов ДШ)
Рис. 2.9
Весь набор микрооперации делится на группы связанные с управлением конкретными устройствами, в пределах группы микрооперации кодируются двоичным способом.
Затем двоичный код группы поступает на соответствующий дешифратор, где расшифровывается до унитарной формы. Прямое, или одноуровневое, кодирование называется так потому, что все группы являются независимыми друг от друга. Для W групп длина МК определяется соотношением
W
LMK = (Int(Log2(mi)) + 1), где Int(x) – целая часть x.
I = 1
3. Косвенное (двухуровневое) кодирование команд поясняется на рис. 2.10
Упр. регистрами Упр. АЛУ Упр. памятью Выбор режима ОпЧМК … 0 1 ДШ 1 ДШ 2 ДШ 3 ДШ 0
↓ … ↓ ↓ … ↓ ↓ … ↓
{Yi} {Yi} {Yi}
2 m1 2 m2 2 m3
Рис. 2.10
Здесь на расшифровку различных групп микроопераций влияют результаты расшифровки дополнительной управляющей группы.
4. Существует также деление на горизонтальное и вертикальное кодирование микрокоманд в зависимости от способов объединения микрооперций в группы.
При горизонтальном кодировании в одно поле объединяется все взаимноисключающие в данном такте микрооперации, тогда при использовании W групп одновременно в одном такте можно выполнить W микроопераций. По количеству бит и быстродействию этот способ находится между унитарным и одноуровневым кодированием ( LМК 64 бит). Проблема использования горизонтального кодирования – усложнение программирования, так как программист должен мыслить на уровне параллельных действий, что довольно затруднительно.
При вертикальном кодировании в одном поле кодируется группа микроопераций, допускающих параллельное выполнение, с целью минимизация длины кода микрокоманды в целом. При этом в одном такте может выполняться только небольшое число микроопераций. В общем случае любая горизонтально закодированная МК по производительности соответствует нескольким вертикальным закодированным МК. Основной недостаток вертикального кодирования – это низкая скорость расшифровки и выполнения микрокоманд.
|