В целом ОУ выполняет операции, определяемые командами, и формирует эффективные адреса.
УУ вырабатывает управляющие сигналы, поступающие во все блоки вычислительной машины. В составе УУ можно выделить следующие функциональные блоки:
1) регистр команд – запоминающий регистр, в котором хранится код команды: код операции и адреса операндов (расположен в интерфейсной части процессора);
2) дешифратор операций – логический блок, который в соответствии с поступающим из регистра команд кодом операции выбирает один из множества имеющихся у него выходов;
3) постоянное запоминающее устройство (ПЗУ) микропрограмм хранит управляющие импульсы для выполнения в блоках вычислительной машины процедур обработки информации; импульс по выбранному дешифратором операций проводу считывает из ПЗУ микропрограмм необходимую последовательность управляющих сигналов;
4) узел формирования адреса (располагается в ШИ) – устройство для вычисления полного адреса ячейки памяти (регистра) по реквизитам, поступающим из микропроцессорной памяти или регистра команд;
|
|
5) кодовые шины данных, адреса и инструкций – часть внутренней интерфейсной шины процессора.
Таким образом, УУ формирует управляющие сигналы для выполнения процессором своих функций, рассмотренных в предыдущем вопросе.
АЛУ предназначено для выполнения арифметических и логических операций преобразования информации. Функционально в простейшем варианте АЛУ состоит из следующих компонент:
1) сумматор выполняет процедуру сложения двоичных кодов, имеет разрядность двойного машинного слова (32 бита);
2) регистры – быстродействующие ячейки памяти различной длины: регистр 1 имеет разрядность 32 бита, регистр 2 - 16 бит; при сложении в регистр 1 помещается первое слагаемое, а потом результат, в регистр 2 – второе слагаемое;
3) схема управления принимает по кодовым шинам инструкций управляющие сигналы от УУ и преобразует в сигналы для управления работой регистров и сумматора.
АЛУ выполняет арифметические операции только над двоичными числами с фиксированной точкой. Для обработки чисел с плавающей точкой привлекается математический сопроцессор или специально составленные программы.
Более подробные сведения об устройстве и функционировании УУ и АЛУ можно найти в /2, 4, 5/.
Регистры ОУ – часть микропроцессорной памяти. Рассмотрим регистры на примере базового процессора Intel 8086, который содержит всего 14 двухбайтовых регистра. В современных процессорах их гораздо больше и большей разрядности. Однако в качестве базовой модели, в частности для языка Ассемблера, используется 14-регистровая память процессора.
|
|
В состав ОУ входят следующие регистры:
1) регистры общего назначения (РОН) или универсальные: AX - (AH, AL), BX - (BH, BL), CX - (CH, CL), DX - (DH, DL) могут использоваться для временного хранения любых данных, при этом можно работать с каждым регистром целиком, а можно отдельно, с каждой его половиной; но каждый из РОН может использоваться и как специальный при выполнении некоторых конкретных команд;
2) регистры смещений: SP, BP, SI, DI являются неделимыми и предназначены для хранения относительных адресов ячеек памяти внутри сегментов (смещений относительно начала сегментов);
2.1) SP (Stack Pointer) – смещение вершины стека;
2.2) BP (Base Pointer) – смещение начального адреса поля памяти, непосредственно отведённого под стек;
2.3) SI (Source Index), DI (Destination Index) предназначены для хранения адресов индекса источника и приёмника данных при операциях над строками и им подобных.
Слово состояния процессора (PSW – Processor State Word) или регистр флагов – имеет размер 2 байта и содержит одноразрядные признаки или флаги. Всего в регистре 9 флагов: 6 из них условные или статусные, отражают результаты операций, выполненных ОУ, 3 других – управляющие, определяют режим исполнения программы.
1) Статусные флаги.
1.1) CF (Carry Flag) – флаг переноса. Устанавливается в 1, если при выполнении арифметических и некоторых операций сдвига возникает «перенос» из старшего разряда.
1.2) PF (Parity Flag) – флаг чётности. Проверяет младшие 8 битов результатов над данными. Чётное число единиц приводит к установке этого флага в 1, нечётное – в 0.
1.3) AF (Auxiliary Carry Flag) – флаг логического переноса в двоично-десятичной арифметике. Устанавливается в 1, если арифметическая операция приводит к переносу или займу четвёртого справа бита однобайтового операнда. Используется при арифметических операциях над двоично-десятичными кодами и кодами ASCII.
1.4) ZF (Zero Flag) – флаг нуля. Устанавливается в 1, если результат операции равен 0, в противном случае ZF обнуляется.
1.5) SF (Sign Flag) – флаг знака. Устанавливается в 1, если результат арифметической операции является отрицательным, в 0, если результат положительный.
1.6) OF (Overflow Flag) – флаг переполнения. Устанавливается в единицу при арифметическом переполнении, когда результат выходит за пределы разрядной сетки.
2) Управляющие флаги.
2.1) TF (Trap Flag) – флаг трассировки. Единичное состояние этого флага переводит процессор в режим пошагового выполнения программы.
2.2) IF (Interrupt Flag) – флаг прерываний. При нулевом состоянии этого флага прерывания запрещены, при единичном – разрешены (о механизме прерываний речь пойдёт в следующей лекции).
2.3) DF (Direction Flag) – флаг направления. Используется в строковых операциях для задания направления обработки данных; при единичном состояния строки обрабатываются «справа налево», при нулевом – «слева направо».
Расположение флагов в регистре PSW показано на рисунке 4.2. Свободные биты отведены для использования в будущем.
OF | DF | IF | TF | SF | ZF | AF | PF | CF |
Рисунок 4.2 – Схема расположения флагов в регистре PSW