Устройство управления
Структура устройства управления
Функции устройства управления:
· автоматическое выполнение программ;
· взаимодействие всех узлов ВМ.
Устройство управления работает под воздействием сигналов управления Y9-Y0, поступающих из микропрограммного автомата.
Рассмотрим основные блоки УУ.
Счетчик команд (IP, Instruction Pointer – указатель команды) – это регистр, в котором хранится и изменяется адрес очередной команды программы. Перед началом вычислений в СК заносится адрес ячейки основной памяти, где хранится команда, которая должна быть выполнена первой. В процессе выполнения программы в счетчике формируется адрес следующей команды путем увеличения содержимого СК на длину выполняемой команды:
СК := СК + длина текущей команды.
Для изменения порядка вычислений (перехода в другую точку программы) достаточно занести в СК адрес точки перехода.
Регистр команды (IR, Instruction Register). Счетчик команд определяет лишь местоположение команды в памяти, но не содержит информации о том, что это за команда.
Чтобы приступить к выполнению команды, ее необходимо извлечь из памяти и разместить в регистре команды (РК). Этот этап называется выборка команды.
Только с момента загрузки команды в РК она становится «видимой» для процессора. В РК команда хранится в течение всего времени ее выполнения.
Любая команда содержит два поля: поле кода операции и поле адресной части. Поэтому регистр команды иногда рассматривают как совокупность двух регистров – регистра кода операции (РКоп) и регистра адреса (РА), в которых хранятся соответствующие составляющие команды.
Если команда занимает несколько последовательных ячеек, то код операции всегда находится в том слове команды, которое извлекается из памяти первым. Это позволяет по коду операции определить, требуются ли считывание из памяти и загрузка в РК остальных слов команды. Собственно выполнение команды начинается только после занесения в РК ее полного кода.
Указатель стека(SP, Stack Pointer) – регистр, где хранится дрес вершины стека.
Стек – область памяти, организованная по принципу «Последним вошел, первым вышел» (LIFO, Last In First Out). Аналог стека – детская пирамидка.
Для работы со стеком предусмотрены две операции – push (запись данных в стек) и pop (чтение данных из стека).
Рис.4.5 Принцип действия стеков памяти
В реальных вычислительных машинах стек реализуется в виде участка основной памяти, обычно расположенного в области наибольших адресов.
Стек используется для запоминания и восстановления содержимого регистров процессора при обработке подпрограмм и прерываний (см. параграф 4.5).
Регистр адреса памяти (MAR – Memory Address Register) предназначен для хранения адреса ячейки основной памяти вплоть до завершения операции (чтение или запись) с этой ячейкой.
В регистр данных памяти (MDR – Memory Data Register) при чтении заносится содержимое ячейки ОЗУ, а при записи помещается информация, которую нужно сохранить в ячейке ОЗУ. Момент считывания или записи в ячейку определяется сигналами CS и WE.
Наличие MAR и MDR позволяет компенсировать различия в быстродействии процессора и основной памяти.
Микропрограммный автомат (МПА) – центральный узел устройства управления. МПА формирует последовательность сигналов управления (X, Y и Z), в соответствии с которыми производятся все действия, необходимые для выборки из памяти и выполнения команд. Исходной информацией для МПА служат: код операции, флаги, а также внешние запросы на прерывание текущей программы.
Таким образом, с учетом представленных схем ОУ и УУ модель вычислительного устройства (рис. 4.1) можно представить следующим образом:
Цикл команды
Программа в ЭВМ реализуется центральным процессором путем последовательного исполнения команд этой программы. Действия, требуемые для выборки (извлечения из ОЗУ) и выполнения команды, называют циклом команды. В общем случае цикл команды включает в себя несколько этапов:
1. Выборка команды из памяти и декодирование ее кода операции.
Процессор извлекает команду из памяти, используя адрес, хранящийся в счетчике команд. Команда помещается в регистр команды. Ее поле кода операции декодируется в МПА. Расшифровав команду, МПА выдает последовательность сигналов управления Х, Y, Z, требуемую для данной команды.
2. Формирование адресов операндов.
Вычисляются адреса операндов, требуемых для данной команды.
3. Выборка операндов из памяти.
Процессор считывает операнды из памяти по адресам, вычисленным в предыдущем пункте.
4. Выполнение операции.
Операционное устройство процессора производит необходимые действия с операндами (арифметические или логические операции).
5. Запись результата.
Полученный результат записывается в память или регистр процессора.
6. Формирование адреса следующей команды.
Счетчик команд увеличивается на длину текущей команды.
Микропрограммный автомат
Управляющее слово, состоящее из сигналов Z12-Z0, Y9-Y0, X9-X0, CS и WE, называется микрокомандой. Последовательность микрокоманд образует микропрограмму. Для каждой команды процессора (MOV, ADD, MUL и т. д.) имеется своя микропрограмма, которая хранится в памяти микропрограмм МПА.
Рис. 4.7. Микропрограммный автомат
Существует несколько способов реализации МПА. Рассмотрим наиболее часто применяемый способ (рис. 4.7).
Код операции выполняемой команды процессора поступает из регистра команд в преобразователь кода операции. В преобразователе находится таблица соответствия кода операции и начального адреса микропрограммы для этой операции. На основании кода операции выбирается начальный адрес микропрограммы, соответствующей выполняемой команде. Адрес заносится в регистр адреса микрокоманды.
Из памяти микропрограмм выбирается первая микрокоманда микропрограммы, состоящая из сигналов Z12-Z0, Y9-Y0 , X9-X0, CS и WE.
Сигналы Х9-Х0 управляют операционным устройством. Сигналы Y9-Y0 подаются на устройство управления (см. рис. 4.4). Сигналы CS и WE осуществляют разрешение чтения/записи ОЗУ. С помощью сигналов Z12-Z0 выполняется текущая микропрограмма.
· Z0=0 – переход по адресу из преобразователя кода операций, Z0=1 – переход по адресу в микрокоманде (по флагу).
· Z1=0 – переход по сброшенному флагу, Z1=1 – переход по установленному флагу.
· Z4-Z2 – определяет флаг (000 – ZF, 001 – CF, 010 – SF, 011 – PF, 100 – OF, 101 – безусловный переход).
· Z12-Z5 – адрес перехода в памяти микропрограмм (при Z0 = 1).
Пример. Написать микропрограмму реализации процессорной команды ADD AX, const. (Сложить содержимое регистра АХ с константой и записать результат в регистр АХ.)
Задача решается путем реализации цикла команды.
1) Выборка и декодирование команды.
Сигналы для МПА Z12-Z0 должны быть следующими:
· Z0=0, так как нужно осуществить переход по коду операции к нужной микропрограмме;
· Z12-Z1 – не имеют значения.
Сигналы для устройства управления Y9-Y0:
· Y1-Y0 = 01 (счетчик команд выдает сигналы);
· Y2 – не имеет значения (стек не участвует в операции);
· Y4-Y3 = 00 (запись в регистр адреса памяти из счетчика команд);
· Y7-Y5 = 001 (запись из входного регистра данных памяти в регистр кода операции;
· Y9-Y8 = 10 (в память ничего не записываем).
Сигналы для операционного устройства Х9-Х0 = 0…0 (нет действий). Сигналы для памяти: CS = 1, WE = 0 (чтение из памяти).
Пусть код команды ADD AX, const равен 1. Тогда в строке 1 преобразователя кода операции следует записать адрес микропрограммы сложения, например, 10102.
Итак, после выполнения первой микрокоманды процессор извлечет из памяти код команды ADD Ax, const, равный единице и перейдет к микропрограмме по адресу 10102.
2) Формирование адреса операнда. Требуется извлечь константу из памяти по следующему адресу. Для этого увеличиваем счетчик команд на единицу.
Сигналы Y9-Y0 = 0..0, X9-X0 = 0..0, CS, WE = 0.
Переход (безусловный) к следующей микрокоманде осуществляется с помощью сигналов:
· Z0 = 1;
· Z1 – не имеет значения;
· Z4-Z2 = 101 (безусловный переход);
· Z12-Z5 = 0Вh (адрес равен 11).
3) Выборка операнда, исполнение команды и запись результата. Сигналы для устройства управления (извлекаем из памяти константу):
· Y1-Y0 = 01 (счетчик команд выдает сигналы);
· Y2 – не имеет значения (стек не участвует в операции);
· Y4-Y3 = 00 (запись в регистр адреса памяти из счетчика команд);
· Y7-Y5 = 011 (константа из входного регистра данных памяти отправляется на внутреннюю шину данных);
· Y9-Y8 = 10 (в память ничего не записываем). Сигналы для памяти: CS = 1, WE = 0 (чтение из памяти).
Сигналы для операционного устройства (см. пример 1): Х9-Х0 = 0000100100.
Сигналы для МПА (переход к следующей команде): Z4-Z0 = 10101, Z12-Z5 = 0Ch.
4) Формирование адреса следующей команды.
Счетчик команд следует увеличить на единицу и перейти к этапу выборки новой команды (следующий цикл).
Сигналы Y9-Y0 = 0..0, X9-X0 = 0..0, CS, WE = 0.
Сигналы для МПА:
· Z0 = 1;
· Z1 – не имеет значения;
· Z4-Z2 = 101 (безусловный переход);
Z12-Z5 = 00 (адрес равен 0)
Дата добавления: 2016-12-26; просмотров: 1386;