Синтез микропрограммных автоматов
Микропрограммный управляющий автомат – это конечный автомат, обеспечивающий выполнение микропрограмм операционным устройством.
Микропрограмма описывает алгоритм выполнения какой либо сложной операции (арифметической, логической и т. п.) в терминах микроопераций и логических условий.
К микрооперациям относятся простейшие действия над словами информации, выполняемые элементами операционного автомата (ОА): загрузка и хранение слова, инверсия слова, сложения двух слов, инкремент, декремент, сдвиг на 1 разряд влево или вправо и т. п.
Микропрограмма часто записывается в виде ГСА (подобно ГСА в программировании). Идентификаторами в микрооперациях являются обозначения операционных элементов ОА, например: RA – регистр А, СТ – счетчик и т. д., и идентификаторы переменных. Микрооперации записываются в виде операторов присваивания с использованием идентификаторов и символов микроопераций.
Примеры микроопераций:
RС: = 0 – в регистр RС записать (загрузить) число 0.
RA: = А – в регистр RA записать (загрузить) число А.
RA: = RА – инвертировать содержимое регистра RA.
RС: = RA + RВ – в регистр RС поместить результат сложения чисел, хранящихся в регистрах RА и RВ.
RА: = L1 (RA). 0 – сдвинуть влево на 1 разряд содержимое регистра RA а в освободившийся крайний правый разряд записать 0.
СТ: = СТ + 1 – изменить состояние счетчика СТ на +1.
Все операционные элементы характеризуются разрядностью. Разряды нумеруются справа налево начиная с нуля. Например, запись: СТ[3..0] - означает, что счетчик СТ – четырехразрядный. Его разряды (начиная со старших) обозначаются так: СТ[3], СТ[2], СТ[1], СТ[0].
Микрооперации, допускающие совместное выполнение, называются совместимыми. Они могут записываться в одной и той же операторной вершине ГСА.
В микропрограмме кроме микроопераций (операторные вершины ГСА) используются логические условия (условные вершины ГСА). Логические условия, как правило, вырабатываются операционным автоматом и могут принимать значения “0” (ложно) или “1” (истинно).
Примеры логических условий:
СТ=0 – содержимое счетчика СТ равно нулю.
RA(0) – содержимое младшего разряда регистра RA: если оно равно нулю – переход по выходу «0» условной вершины ГСА, если равно «1» – переход по выходу «1» условной вершины ГСА.
Микропрограмма, записанная в терминах микроопераций и логических условий, называется содержательной или функциональной.
Рассмотрим пример выполнения операции умножения двух целых положительных 8-ми разрядных двоичных чисел: С = А * В.
Алгоритм выполнения операции умножения двух целых 8 - разрядных положительных двоичных чисел можно описать следующим образом. Имеются переменные А и В – операнды операции С = А * В и переменная С, в которую будем записывать промежуточные суммы и в которой будет, в итоге, сформирован результат и счетчик циклов СТ. Алгоритм выполнения операции :
1. С = 0, СТ = 0
2. Если В[0] = 1, то С = С + А
3. А = L1(A). 0 – сдвиг числа А влево на 1 разряд (умножение на 2).
4. В = R1(В) – сдвиг числа В вправо на 1 разряд.
5. СТ = СТ + 1
6. Если СТ = 7 – перейти к пункту 8
7. Перейти к пункту 2
8. Операция выполнена
Совершенно очевидно, что для выполнения этой операции необходим ряд операционных элементов (элементов ОА) соответствующей разрядности, выполняющих простейшие функции: хранения, суммирования, счета циклов сложения и т.п. Это следующие элементы:
RB[7..0] – 8-ми разрядный регистр множителя - числа В.
Функции регистра:
- загрузка числа: RB := В;
- сдвиг числа вправо на один разряд: RВ := R1(В).
RА[15..0] – 16-ти разрядный регистр множимого - числа А. Разрядность регистра RА в два раза больше разрядности числа А, так как в процессе выполнения операции число А должно сдвигаться влево n-1 раз.
Функции регистра:
- загрузка числа: RА := А;
- сдвиг числа влево на один разряд: RА := L1(RA).
RС[15..0] – 16-ти разрядный регистр промежуточных сумм и результата. Разрядность регистра RС в два раза больше разрядности чисел А и В, так как в процессе выполнения операции число С может иметь разрядность в два раза большую, чем у чисел А и В.
Функции регистра:
- загрузка числа: RС := С;
- обнуление регистра: RС := 0.
СТ[2..0] – 3-х разрядный двоичный счетчик для подсчета числа циклов (до семи).
Функции счетчика:
- обнуление счетчика: СТ := 0;
- счет: СТ := СТ + 1.
СМ[15..0] – 16-ти разрядный сумматор – комбинационная схема дли выполнения микрооперации: RС := RС + RА
Пример содержательной микропрограммы выполнения операции умножения двух целых 8 - разрядных двоичных чисел А и В приведен на рис. 3.1.
Каждая микрооперация в ОА инициируется микрокомандой. Микрокоманды вырабатываются управляющим автоматом (УА) в зависимости от того, какая микрооперация должна выполняться в данный момент.
По микропрограмме, записанной в форме ГСА, строится ГСА управляющего аппарата. Для этого вместо микроопераций в операторных вершинах записываются микрокоманды (Yi), а вместо логических условий – условия их коды - Xi.
В ГСА управляющего автомата используются следующие микрокоманды, инициирующие выполнение соответствующих микроопераций (Таблица 3.1):
Логические условия закодируем так (Таблица 3.2):
Таблица 3.1 Таблица 3.2
Микрокоманды | Микрооперации |
У1 | RА := А , RB := В; |
У2 | RС := С, СТ := 0; |
У3 | RС := RС + RА; |
У4 | RА := L1(RA); |
У5 | RВ := R1(В); |
У6 | СТ := СТ + 1; |
Код лог. условия | Логические условия |
Х1 | RB [0] = 0; |
Х2 | СТ = 7; |
Кроме того, в ГСА УА часто предусматривают две дополнительные вершины: одну операторную (перед вершиной “конец”) и одну условную (после вершины “начало”). В первой записывается микрокоманда завершения выполнения операции. Это микрокоманда не для операционного автомата, а для информирования о том, что операция выполнена и ОУ готово к выполнению следующей операции (в нашем примере - У7). Вторая – соответствует внешней команде “Пуск” (в нашем примере - Х3), по которой ОУ начинает выполнение операции. С учетом этого ГСА управляющего автомата для нашего примера имеет вид, приведенный на рис. 3.2.
Операционный автомат содержит ряд достаточно сложных элементов, но структура ОА достаточно проста ( рис.3.3).
На структурной схеме ОА показаны описанные выше операционные элементы, связи между ними, указана разрядность данных и элементов. У операционных элементов – слева входы, справа – выходы, снизу показаны управляющие сигналы (микрокоманды У i), инициирующие выполнение определенной микрооперации этим элементом. На вертикальных линиях (на входах и выходах элементов) указаны разряды данных, поступающих на входы элементов и снимаемых с их выходов.
Входами для ОА являются обрабатываемые данные (числа А и В) и управляющие сигналы (микрокоманды У i, формируемые управляющим автоматом). Выходы ОА – число С (результат выполнения операции умножения) и логические условия Х i (для управляющего автомата). Взаимодействие операционного и управляющего автоматов показано на рис.3.4.
Когда на вход УА поступает команда “Пуск” (Х3=1), управляющий автомат начинает (в соответствии с приведенной на рис.2 схемой алгоритма - ГСА) вырабатывать микрокоманды Уi, которые инициируют выполнение определенных микроопераций операционным автоматом. ОА при этом формирует логические условия Хi, в соответствии с которыми и ГСА управляющий автомат вырабатывает очередные микрокоманды. Поскольку выполнение микроопераций требует определенного времени, микрокоманды должны выдаваться управляющим автоматом с интервалом времени, достаточным для выполнения самой продолжительной микрооперации. Для этого в УА вводится синхронизация. Синхронный УА анализирует логические условия Хi и вырабатывает микрокоманды Уi в строго определенные моменты времени, задаваемыми частотой импульсов синхронизации (машинное или автоматное время).
Управляющий автомат может быть реализован различными способами: на жесткой логике, на программируемых матрицах, на программируемой логике.
Рассмотрим различные способы реализации УА, их особенности, достоинства и недостатки.