Кодирование Микроопераций.
Различают 3 способа кодирования:
1) Унарное кодирование (горизонтальное)
С каждым битом микрокоманды сопоставляется определенная микрооперация. Если данная микрооперация присутствует в микрокоманде, то бит устанавливается в 1, если отсутствует – в 0.
Достоинства: 1) простота кодирования; 2) при однофазном тактировании блок формирования управляющих сигналов может отсутствовать, а содержимое микрокоманды могут являтся управляющими сигналами. При многофазном тактировании БФУС будет представлять набор логических схем «И». Недостаток – неэффективное использование микропрограммной памяти из-за чрезвычайно большой длины операционной части микрокоманды.
2) Неизбыточное кодирование (вертикальное). Каждой микрокоманде ставится в соответствие двоичный код n=[log2(M)], где M – количество используемых микрокоманд. В этом случае усложнится блок формирования управляющих сигналов. На вход ставится дешифратор. Каждый вход дешифратора будет соответствовать микрокоманде. Каждый шифратор содержит столько выходов, сколько микроопераций реализуется в данной микрокоманде. Если используется многофазное тактирование, то каждый выходной сигнал должен привязываться к ti как в предыдущем номере для каждого дешифратора.
Чем больше микроопераций в одной микрокоманде тем количество микрокоманд меньше, длина микрокоманд сокращается, усложняется БФУС. Но для каждой микрокоманды может быть лишь одна микрооперация, тогда длина микрокоманд увеличивается, но БФУС упрощается. Микрокоманды содержащие только одну микрооперацию назывались раньше миникомандами.
3) Смешанное кодирование микроопераций (кодирование с полевой структурой). Все множество V микроопераций разбивается на К подмножеств. V->V1,V2,…,Vk. В каждое такое подмножество входят несовместимые микрооперации (не могут одновременно встретиться в микрокоманде). Различают: 1) аппаратную несовместимость (например, когда в один регистр нужно записать число и сдвинуть его содержимое); 2) алгоритмическая несовместимость (могут быть выполнены совместно, но в разработанных алгоритмах они никогда вместе не встречаются). Несовместимые микрооперации выделяются в отдельное поле Fi, где каждой микрооперации ставится в соответствие свой код. В этом случае нужно предусмотреть значение кода при котором в данном поле отсутствуют все микрооперации (пустой микроприказ). Если некоторое поле Vi содержит n микроопераций, то длина поля Ln=[log2(n+2)]. Возникает задача оптимального кодирования.
Разбиение на поля микроопераций при смешанном кодировании.
Задача оптимального кодирования заключается в том, чтобы все множество микроопераций разбить на минимальное количество полей с максимальным числом микроопераций в каждом поле.
Рассмотрим метод исключения совместимых микроопераций предложенный Волковыским В.Л. на примере по шагам.
1) Пусть V={y1,y2,..,y10} – набор микроопераций.
2) Для этого набора микроопераций составляем матрицу совместимости S:
3) Составляем множество совместимых микроопераций. Z1={2}, Z2={1,4,9,10}, Z3={0}, Z4={2,5,6,9}, Z5={4,6}, Z6={4,5,8,10}, Z7={8,9}, Z8={6,7}, Z9={2,4,7,10}, Z10={2,6,9}.
4) Полагая, что y1=V={1,2,3,4,5,6,7,8,9,10} нужно выделить несовместимые микрооперации. Начинаем с Z1 (в данном случае просто идем по списку): выделяем 2. Рассматриваем Z3, Z4 : выделяем 5, 6, 9; Z7 : выделяем 8; Z10. Отсюда получаем поле несовместимых микроопераций: V1={1,3,4,7,10} n1=3 разряда. y2={2,5,6,8,9} -> V2={2,5,8} n2=2 разряда. y3={6,9} -> V3={6,9} n3=2 разряда.
5) Составляем структуру операционной части микрокоманды:
6) Кодирование полей для V1
пустая операция | |||
y1 | |||
y3 | |||
y4 | |||
y7 | |||
y10 |
Аналогично кодируются поля для V2 и V3.
Дата добавления: 2017-04-20; просмотров: 1468;