Кодирование наборов микроопераций
Выходные сигналы уi (микрокоманды), вырабатываемые управляющим автоматом, сгруппированы в операторных вершинах ГСА в виде наборов, инициирующих выполнение операционным автоматом (ОА) совместимых микроопераций. Совместимые микрооперации – это такие, которые могут быть выполнены ОА одновременно.
Пусть автомат должен генерировать n различных наборов микрокоманд из множества У = {у1, у2 …у k }; обозначим i-ый набор как:
Уi = {уi1, уi2 …уi j }.
Составим матрицу М N*K, где N – количество различных наборов микрокоманд, а К – количество различных микрокоманд уi, вырабатываемых автоматом. Элемент матрицы mi j = 1, если микрокоманда у j входит в набор У i , а если не входит, то m i j = 0. Если строки матрицы М (а значит и наборы Уi) не пересекаются, то в операционной части двоичного слова можно обойтись одним полем, в которое записывается номер набора Уi. Этот номер будет подаваться на один дешифратор DCу, на выходе которого будут сформированы микрокоманды уi.
В нашем примере все микрокоманды уi можно представить в виде следующих наборов:
У0 = {у7}; У1 = {у1, у2 }; У2 = {у3}; У3 = {у4, у5}; У4 = {у6};
Матрицу М представим в виде таблицы:
у1 | у2 | у3 | у4 | у5 | у6 | у7 | |
У0 | |||||||
У1 | |||||||
У2 | |||||||
У3 | |||||||
У4 |
Из матрицы видно, что пересечение строк для всех пар Уi и Уj (при i ¹ j) пусто. Закодируем наборы Уi следующим произвольным образом:
К(У0) = 000; К(У1) = 001; К(У2) = 010; К(У3) = 011; К(У4) = 100,
и изменим формат микрокоманды:
№ | К(Уi) | хm | ах=0 | ах=1 |
Количество разрядов двоичного слова при этом уменьшится до 11, а значит и уменьшится емкость необходимой памяти ЗУ до 55 бит. Пронумеруем разряды двоичного слова с 1 по 11 (как показано в таблице); номера разрядов будут соответствовать номерам выходов ЗУ на функциональной схеме автомата (рис.28).
К(Уi) | хm | ах=0 | ах=1 |
Схема на рис.28 незначительно отличается от схемы на рис.27 по своему функционированию. Отличие – один дешифратор микрокоманд Уi , назначение которого описано выше.
Если наборы микрокоманд в матрице М пересекаются, то описанный в последнем примере подход к их формированию невозможен. Поэтому можно поступить следующим образом.
1. Если общее количество микрокоманд Уi невелико, то в операционной части двоичного слова можно выделить по одному разряду на каждую микрокоманду. В этом случае отпадает необходимость в дешифраторе DCу, так как в соответствующие разряды операционной части двоичного слова записываются значения (0 или 1) для всех Уi . Таким образом сигналы Уi берутся непосредственно с соответствующих выходов ЗУ. Если использовать такой подход для нашего примера, то разрядность двоичного слова увеличится до 15 бит, емкость ЗУ – до 75 бит, но из схемы автомата исчезнет дешифратор Dcу. Формат двоичного слова приведен ниже.
у1 | у2 | у3 | у4 | у5 | у6 | у7 | хm | ах=0 | ах=1 | |||||
2. Если общее количество микрокоманд Уi достаточно велико и использование приема, описанного в п1, приведет к значительному увеличению длины операционной части двоичного слова, то можно поступить следующим образом: закодировать пересекающиеся наборы микрокоманд минимальным образом (например, как в предыдущих примерах), в операционной части двоичного слова записать коды этих наборов, а в схеме автомата вместо DСу использовать дополнительное ЗУ. Разрядность адреса этого ЗУ равна разрядности кодов наборов микрокоманд, разрядность слов, записанных в ЗУ, равна количеству Уi в автомате. Каждый разряд слова в этом ЗУ соответствует определенному Уi и в него записывается «0» или «1» в зависимости от значения соответствующего Уi в данном наборе микрокоманд. Например, если использовать данный прием для предыдущего примера, то дополнительное ЗУ должно иметь разрядность адреса равное 3, разрядность слов – 5. Вид такого ЗУ приведен на рис.29.
Если использовать кодирование наборов микрокоманд такое же, как в предыдущих примерах, то таблица программирования этого ЗУ будет иметь вид:
у7 | у1,у2 | у3 | у4,у5 | у6 |
А\бит | |||||
Дата добавления: 2015-08-11; просмотров: 750;