Пример микропрограммы
Напишем простейшую команду в виде микрокоманд.
Команда: сложить регистр А с регистром В и записать в регистр С. Одновременно с извлечением микрокоманды, в первой половине такта произойдет считывание регистров А и В. Для выполнения сложения необходимо записать считанные данные в буферные регистры АЛУ, для чего должны быть установлены управляющие сигналы «Запись в регистр А» и «Запись в регистр В». Поскольку к середине такта микрокоманда уже будет извлечена, и управляющие сигналы поступят на входы триггеров, формирующих управляющие импульсы, по отрицательному перепаду тактового сигнала будет сформирован положительный перепад управляющих импульсов, данные запишутся в буферные регистры и поступят на входы АЛУ. На входах АЛУ к этому моменту должен быть установлен код функции арифметического сложения – 00001. Чтобы в процессе сложения не учитывался перенос, который мог возникнуть при выполнении предыдущей команды, должен быть установлен сигнал «Сброс регистра состояния», который в первой половине такта, сразу после извлечения микрокоманды положительным перепадом очистит регистр состояния. После этого, через время задержки срабатывания АЛУ, на его выходе появится результат сложения двух аргументов. Для того, чтобы этот результат был записан в регистровый файл, должен быть установлен сигнал записи в регистровый файл, который сформирует импульс записи на входах регистрового файла в конце такта. После этого можно приступить к извлечению следующей команды и увеличению счетчика команд. Для этого должны быть установлены сигналы «Чтение команды по шине» и «Запрос шины». Указывать адрес следующей микрокоманды нет необходимости, поскольку при получении следующей команды из памяти она автоматически будет записана в регистр команд, а регистр адреса микрокоманды будет принудительно установлен в начальное значение.
По рисункам видно, как организована передача данных между узлами процессора в первой и второй половине такта при выполнении однотактной команды. Синим цветом обозначены узлы – источники данных, красным – приемники данных. Зеленым цветом показано, как формируются при этом адреса регистров в регистровом файле.