Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы схемотехники и вычислительных систем.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
3.08 Mб
Скачать

8.3.4. Кодирование поля микроопераций регистра микрокоманд

Горизонтальное кодирование

Это самое простое кодирование поля микроопераций регистра микрокоманд.

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

Пример.

Для иллюстрации всех способов кодирования поля микроопераций возьмем рассмотрим кодирование поля микроопераций для микропрограммного устройства управления операцией логического сложения/вычитания чисел в прямом коде (структурная схема операционной части устройства представлена на рис 7.1,)

Согласно графу микропрограммы (рис. 7.2) микропрограмма использует 7 микрокоманд:

Y1 = y1

занесение первого операнда с шины данных в первый регистр с дублированием знака на триггере знака/переполнения (T/v),

Y2 = y2, y6(tз)

занесение второго операнда (через мультиплексор MSB и сумматор)

Y3 = y4, y6(tз)

передача на входы сумматора первого операнда (y4), фиксация суммы на регистре второго операнда (y6(tз))

Y4 = y4, y5, y6(tз)

передача на входы сумматора первого операнда в прямом коде (y4), а второго – в дополнительном коде (y5); фиксирование суммы на регистре второго операнда по заднему фронту (y6(tз)) и переполнения в триггере переноса T&/v, т.е. вычитание без знаков второго оператора из первого с сохранением результата в регистре второго операнда и переноса в триггере переноса.

Y5 = y7,

коррекция знака результата

Y6 = y5, y6(tз), y7

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

Y7 = y3

сохранение результата на шине данных (y3)

Общее количество микроопераций для данного примера равно 7. Следовательно, поля микроопераций регистра микрокоманды (рис.8.11) и ячеек памяти микрокоманд при горизонтальном кодировании должны содержать не менее 7 разрядов.

Кодировка (прошивка) памяти микрокоманд для рассматриваемого примера представлена в табл. 12.

Таблица 12. Кодировка (прошивка) ячеек памяти ЗУ микрокоманд при горизонтальном кодировании.

Микрокоманда

Поля микроопераций

Поле адресов

Поле

задержки

у1

у2

у3

у4

у5

у6(tз)

у7

Y1

1

0

0

0

0

0

0

Y2

0

1

0

0

0

1

0

Y3

0

0

0

1

0

1

0

Y4

0

0

0

1

1

1

0

Y5

0

0

0

0

0

0

1

Y6

0

0

0

1

1

1

Y7

0

0

1

0

0

0

0

В приведенном примере только 13 из 47 бит памяти занято единицами (около 28%). Это очень неэффективное использование объема памяти. Но схема формирования сигналов управления очень проста.

Рис.8.12. Регистр микрокоманд со схемой формирования сигналов управления.

Горизонтальное кодирование.

Она может состоять из ряда элементов И для увеличения коэффициента ветвления и формирования фронтов. Функциональная схема формирования сигналов управления представлена на рис. 8.12.

Вертикальное кодирование

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

Функциональная схема формирования сигналов управления при вертикальном кодировании представлена на рис. 8.13.

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

Рис.8.13. Регистр микрокоманд со схемой формирования сигналов управления.

Вертикальное кодирование.

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

В модифицированном варианте вертикального кодирования в схеме формирования сигналов управления для всех микрокоманд, состоящих из нескольких микроопераций, используются встроенные ПЗУ микроопераций в виде схем ИЛИ.

Функциональная схема формирования сигналов управления с использованием модифицированной схемы с вертикальным кодированием поля микроопераций представлена на рис. 8.14.

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

.

Рис.8.14. Регистр микрокоманд со схемой формирования сигналов управления.

Модифицированная схема вертикального кодирования.

Горизонтально-вертикальное кодирование

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

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

Для горизонтально-вертикального кодирования все микрооперации распределяют по группам, так чтобы в каждой группе находились только совместно не используемые микрооперации. Исходный набор микроопераций для выполнения рассматриваемой арифметической операции совпадает с представленным в таблице 8.3.табл. 12.

Минимальное количество групп определяется по максимальному количеству микроопераций в микрокомандах. В рассматриваемом наборе микрокоманд максимальное количество микроопераций в микрокоманде равно 3. Это микрокоманды Y3 и Y4.

Пример распределения микроопераций по группам:

М0:{y1, y2, y3, y4, y7,};

М1:{y5,};

М2:{ y6(tз),}.

Указанное распределение можно получить следующим способом:

Формируются три множества микроопераций (по максимальному числу микроопераций в командах): М0, М1 и М2.

По списку микроопераций (табл.8.3. 12) по очереди выбираются микрооперации. Первая микрооперация операция у1 помещается в первое множество М0.

Все последующие микрооперации проверяются на предмет их использования (по списку микрокоманд табл.8.3 12) с уже распределенными (по множествам) микрооперациями. Вторая микрооперация у2 с микрооперацией у1 совместно в одной команде не используется, следовательно она тоже помещается во множество М0.

По той же причине микрооперации у3 и у4 помещаются в то же множество.

Но микрооперация у5 используется совместно с микрооперацией у5 у4 в микрокоманде Y4 .По этой причине микрооперация у5 помещается в М1.

Микрооперация y6(tз) совместно используется с микрооперациями у5 и у4 в микрокоманде Y6 . По этой причине она помещается в новое множество М2.

Кодировка поля микрокоманд и схема формирования сигналов управления для случая горизонтально-вертикального кодирования представлены на рис 8.14. 8.15

Рис.8.15. Регистр микрокоманд со схемой формирования сигналов управления.

Горизонтально-вертикальное кодирование.

В общем случае, распределение микроопераций по множествам неоднозначно. В зависимости от порядка рассмотрения микроопераций можно получать различные распределения, причем с неоднозначными коэффициентами сжатия. С учетом этого после распределения микроопераций по множествам следует произвести коррекцию для получения минимальной разрядности кодов. Минимальные разрядности кодов микрокоманд получаются, если удается большинство микроопераций поместить в одно из множеств, причем их количества в каждом из множеств будет равно значениям 2n – 1, где n-натуральное число.

Кодировка поля микрокоманд и схема формирования сигналов управления для случая горизонтально-вертикального кодирования представлены на рис 8.14. 8.15.

Вертикально-горизонтальное кодирование

Идея вертикально-горизонтального кодирования заключается в объединении микроопераций в виде множеств совместно используемых микроопераций, при этом в каждом множестве применяется горизонтальное кодирование микроопераций, а для кодирования самих множеств – вертикальное. Наиболее эффективному кодированию соответствует такое разбиение, которое формирует наибольшее количество по возможности равномощных множеств. Чисто вертикальное кодирование является предельным случаем вертикально горизонтального кодирования, когда каждая микрокоманда содержит по одной микрооперации.

Поле микрокоманд при вертикально-горизонтальном кодировании содержит две части. В первой части используется горизонтальное кодирование микроопераций в пределах одного множества, во второй части – номер используемого множества.

Процедура вертикально-горизонтального кодирования.

При вертикально-горизонтальном кодировании выбираются микрооперации только одного множество. При этом предпочтительно использование равномощных множеств. Следовательно, мощность множеств V должна соответствовать микрокоманде с наибольшим числом микроопераций. Это нижний предел мощности выбираемых множеств. При выборе размерности множеств следует исходить из того, что минимальная размерность поля кода операции регистра соответствует минимуму функции:

F= V]log2 k[, где:

V – количество микроопераций в отдельных множествах (количество разрядов в поле микроопераций),

k – количество множеств.

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

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

Граф смежности для примера алгебраического сложения/вычитания чисел в прямом коде представлен на рис. 8.16(а).

Рис.8.16. Граф смежности микроопераций( а) полный, б) модифицированный)

Выбранный здесь пример крайне неудачен для использования вертикально-горизонтального кодирования поля микроопераций, так как почти все микрооперации сосредотачиваются в одном множестве. В подобных вариантах возможна модификация графа за счет выделения микроопераций, связывающих в одно множество другие микрооперации. В примере на рис. 8.16.(б). представлен модифицированный граф связности. Из полного графа удалены две микрооперации y5 и y6(tз).

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

Кодировка поля микрокоманд и схема формирования сигналов управления для случая вертикально-горизонтального кодирования представлены на рис 8.17.

Рис.8.17. Регистр микрокоманд со схемой формирования сигналов управления.

Вертикально горизонтальное кодирование.

На рис. 8.17 поле А отведено под кодирования двух "выделенных" микроопераций y5 и y6(tз) (М выд.) с использованием горизонтального кодирования.

Двухразрядное поле В используется для горизонтального кодирования микроопераций во множествах М1, М2 и М3.

Двухразрядное поле С используется для указания номера множества микроопераций Мi (i = 1, 2, 3). используемого в микрокоманде (кодируется вертикально).