Операционное устройство
Функции операционного устройства:
· арифметическая и логическая обработка данных;
· формирование признаков результата (флагов);
· хранение промежуточных результатов.
ОУ работает под воздействием сигналов управления Х9-Х0, поступающих из устройства управления (см. рис. 4.2). Совокупность сигналов Х9-Х0 называется словом управления Х9- Х0.
Основным блоком ОУ является арифметико-логическое устройство (АЛУ), выполняющее арифметические и логические операции. Выбор операции АЛУ осуществляется при помощи сигналов управления Х9-Х6. Например, комбинация сигналов Х9-Х6 = 0000 настраивает АЛУ на операцию сложения.
Операнды А и В поступают в АЛУ из блока универсальных регистров. Выбор регистров, подключаемых к АЛУ, производится в мультиплексорах MUX A и MUX B. Мультиплексор MUX A управляется сигналами Х1-Х0, а мультиплексор MUX B – сигналами Х5-Х3. Сигнал Х5 нужен для подключения к входу В АЛУ шины Внутренняя шина данных соединяет выход АЛУ с входами универсальных регистров, а также позволяет ОУ общаться с оперативной памятью. По этой шине данные поступают с выхода АЛУ в регистры или записываются в оперативную память. Подключением оперативной памяти к внутренней шине данных управляет УУ (на схеме не показано).
Подключением шины данных к блоку универсальных регистров управляет сигнал Х2. Выбор конкретного регистра осуществляют демультиплексор DMX и сигналы Х1-Х0 (они же определяют операнд А, поэтому А называется приемником, В – источником).
Регистр флагов предназначен для хранения признаков (флагов), характеризующих результат последней выполненной операции. Каждый флаг хранит один бит информации. Флаги из регистра флагов поступают в устройство управления. В данном ОУ регистр флагов содержит следующие флаги:
ZF (Zero Flag, флаг нуля) – ZF = 1, если результат равен нулю.
CF (Carry Flag, флаг переноса) – CF = 1, если имеется бит переноса.
SF (Signum Flag, знаковый флаг) – SF = 1, если старший бит равен 1.
PF (Parity Flag, флаг четности) – PF = 1, если количество битов в результате четно.
OF (Overflow Flag, флаг переполнения) – OF = 1, если результат не помещается в ячейку памяти (8-разрядный регистр).
Пример. Требуется сложить содержимое регистра АХ с константой 10 и записать результат в регистр АХ.
Соответствующая процессорная команда (на ассемблере) имеет вид: ADD AX, 10. Сформируем слово управления Х0-Х9, позволяющее выполнить данную команду.
В АЛУ должна выполняться операция сложения, следовательно, Х9-Х6 = 0000. Константа 10, входящая в состав команды, должна находиться в оперативной памяти (вместе с командой). Поэтому константа появляется на шине данных (чтением из памяти управляет УУ), значит, операнд В поступает с шины данных и Х5 = 1 (сигналы Х4-Х3 в данном случае не имеют значения). Сигналами Х1-Х0 определяется операнд А, он равен АХ, следовательно, Х1-Х0 = 00. Результат сложения должен записываться обратно в регистр АХ, поэтому нужно разрешить запись в регистры сигналом Х2 = 1.
В итоге получаем следующее слово управления Х9-Х0:
Х9 | Х8 | Х7 | Х6 | Х5 | Х4 | Х3 | Х2 | Х1 | Х0 |
Шина данных – 0000 1010.
Пример. Требуется записать в регистр АХ число 10, записать в регистр ВХ число 3, умножить АХ на ВХ, результат поместить в регистр АХ.
Соответствующие команды процессора (на ассемблере) будут такими: MOV AX, 10 ; поместить в регистр АХ константу 10
MOV BX, 3 ; поместить в регистр ВХ константу 3
MUL AX, BX ; поместить в регистр АХ произведение АХ и ВХ
Сформируем последовательность слов управления Х9-Х0, позволяющую выполнить данную команду (здесь уже одним словом управления, как в примере 1, не обойтись).
Сначала построим блок-схему алгоритма умножения АХ = Мн1∙Мн2 (рис. 4.3).
Рис.4.3 Блок-схема алгоритма умножения
СХ – регистр, предназначенный для промежуточного хранения результата. В алгоритме используется цикл с предусловием (while BX<>0 do…). Проверка условия осуществляется по флагу ZF, так как перед проверкой регистр ВХ изменяется при помощи АЛУ.
Сформируем управляющие слова Х9-Х0, соответствующие каждому действию алгоритма.
1) АХ := Мн1 (MOV AX, 10). Для записи константы Мн1 = 10 в регистр АХ нужно выставить значение константы на шине данных (константа приходит из оперативной памяти) и подключить шину к входу В (Х5 = 1). АЛУ следует настроить на операцию «Повторение В» (Х9-Х6 = 0101). Для записи результата с выхода АЛУ в регистр АХ нужны сигналы Х2
= 1, и Х1-Х0 = 00. Сигналы Х4-Х3 не имеют значения.
2) СХ := 0 (этому действию никакая команда процессора не соответствует, так как процессор самостоятельно обнуляет вспомогательный регистр СХ в рамках команды MUL). Все действия аналогичны предыдущей команде: шина данных = 0000 0000, Х9-Х6 = 0101, Х5 = 1, Х2 = 1, Х0-Х1 = 10.
3) ВХ := Мн2 (MOV ВX, 3). Аналогично команде 0: шина данных = 0000 0011, Х9-Х6 = 0101, Х5 = 1, Х2 = 1, Х1-Х0 = 01.
Условие ВХ = 0. Данное условие проверяется при помощи флага ZF. Если ZF = 1 (установлен), то результат предыдущей операции (запись в регистр ВХ) равен нулю. Переход в зависимости от условия к команде 3 или к команде 5 производится устройством управления. При рассмотрении отдельно операционного устройства переход должен осуществляться вручную.
4) СХ := СХ + АХ (часть команды MUL). В АЛУ выбирается команда сложения Х9-Х6 = 0000. Операнд В берется не с шины данных, а из регистра АХ, поэтому Х5 = 0, Х4-Х3 = 00. Операнд А – это СХ, следовательно, Х2 = 1, Х1-Х0 = 10.
5) ВХ := ВХ – 1 (часть команды MUL). АЛУ можно настроить на команду вычитания константы, но так как команды увеличения/уменьшения на единицу встречаются очень часто, обычно в АЛУ включают специальные операции, которые выполняются быстрее, чем действия с константами. Таким образом, настраиваем АЛУ на операцию декремента А: Х9-Х6 = 1101. Х5 = 0, Х4-Х3 – не имеет значения, Х2 = 1, Х1-Х0 = 01 (регистр ВХ).
После команды 4 снова осуществляется проверка условия ВХ = 0.
6) АХ := СХ (часть команды MUL). В АЛУ задается операция повторения В (Х9=Х6 = 1011. Операнд В берется из регистра СХ (Х4-Х3 = 10, Х5 = 0), а запись результата с выхода АЛУ осуществляется в регистр АХ (Х2 = 1, Х1-Х0 = 00).
В итоге имеем такую последовательность управляющих слов:
Команд а | Х9 | Х8 | Х7 | Х6 | Х5 | Х4 | Х3 | Х2 | Х1 | Х0 | Шина данных |
0000 1010 | |||||||||||
0000 0000 | |||||||||||
0000 0011 | |||||||||||
???? ???? | |||||||||||
???? ???? | |||||||||||
???? ???? |
Дата добавления: 2016-12-26; просмотров: 1080;