
Арифметико-логическое устройство предназначено для выполнения арифметических и логических операций над данными различного формата. В зависимости от характера выполняемых операций и формата данных различают следующие типы операций в АЛУ:
арифметические операции над целыми числами с ФТ (операции целочисленной арифметики);
арифметические операции над числами с ПТ;
арифметические операции над двоично-десятичными числами (операции десятичной арифметики);
логические операции.
В зависимости от набора операций и особенностей реализации алгоритмов их выполнения организация АЛУ может быть различной.
По характеру использования аппаратных средств различают многофункциональные и блочные АЛУ. В многофункциональных АЛУ все операции выполняются с использованием в основном одних и тех же аппаратных средств, которые настраиваются на заданный тип операции. Блочные АЛУ включают в себя отдельные блоки для операций различного типа. Эти блоки могут работать параллельно, что повышает быстродействие АЛУ, однако требует больших затрат на оборудование.
Арифметико-логическое устройство можно рассматривать как композицию двух основных частей: операционного блока (ОБ) и блока управления (рис. 4.1).
Операционный блок выполняет преобразование данных, определяемое кодом операции. Блок управления организует работу операционного блока, формируя необходимые управляющие сигналы. На ОБ поступают операнды, а на его выходе формируется результат операции. В ходе выполнения операции ОБ выдает признаки (условия), характеризующие промежуточные и окончательные результаты. К таким признакам относятся, например, знаки операндов, равенство результата нулю, значение цифры множителя при умножении, знак остатка при делении и т. д. В зависимости от кода операции и значений признаков БУ выдает последовательность управляющих сигналов. После окончания операции он выдает сигнал готовности к выполнению следующей операции.
Операционный блок состоит из регистров и комбинационных схем. В зависимости от организации связей между регистрами и комбинационными схемами различают АЛУ с жесткой и магистральной структурами. В АЛУ с «жесткой» структурой комбинационные схемы закреплены за определенными регистрами (рис. 4.2). Между регистрами и комбинационными схемами существуют постоянные связи. Каждый регистр с закрепленными комбинационными схемами выполняет определенные микрооперации.
В состав ОБ АЛУ входят три регистра с закрепленными логическими схемами:
регистр первого слагаемого РСл1 со схемой ПРСл1;
регистр второго слагаемого РСл2 со схемой ПРСл2;
регистр суммы РСм со схемой комбинационного сумматора См.
Логическая схема ПРСл1 обеспечивает передачу результата из РСм в регистр РСл1:
в прямом коде РСл1:= РСм (по сигналу П2РСл1);
со сдвигом влево на один разряд РСл1:= РСм(л*0)(по сигналу Z^Cm);
со сдвигом вправо на два разряда РСл1:= R2(s*s*PCm) (по сигналу R2VCm).
При сдвиге влево в освободившийся младший регистра РСл1 заносится «0». При сдвиге вправо в старшие разряды регистра заносится сигнал с левого входа сдвигателя, а содержимое младших разрядов регистра сумматора выдается на правый выход сдвигателя.
Логическая схема ПРСл2 обеспечивает передачу второго слагаемого на левый вход сумматора:
в прямом коде ЛСм:= РСл2 (по сигналу 5[РСл2);
в инверсном коде ЛСм:= РСл2 (по сигналу ^-.РОгё);
со сдвигом влево на один разряд ЛСм:= Z,!(PQt2*0) (по сигналу Х,РСл2).
Комбинационный сумматор выполняет суммирование (арифметическое или по модулю 2) операндов, поступивших на его входы (левый ЛСм и правый ПСм). Результат суммирования заносится в регистр сумматора РСм: РСм:=ЛСм + ПСм (по сигналу П2РСм) или РСм:=ЛСм 0 ПСм (по сигналу П2Ж2РСм).
В АЛУ с магистральной структурой (рис. 4.3) все регистры объединены в блок регистров общего назначения (РОН), а все комбинационные схемы составляют ОБ АЛУ. Обмен данными между регистрами и ОБ выполняется по магистралям, к которым может быть подключен любой из регистров или ОБ.
Выходы каждого из регистров через мультиплексоры А и В могут быть подключены к входам А и В ОБ по магистралям А и В. Выбор подключаемых регистров производится по адресам а и Ь, которые поступают из устройства управления на адресные входы мультиплексоров. Операционный блок настраивается на выполнение заданной операции одним из сигналов управления Yt (/ = 1,
т), который поступает из устройства управления. Результат операции по магистрали С поступает на демультиплексор DMXvi записывается в регистр блока РОН по адресу с.
В зависимости от числа магистралей различают трех-, двух- и одномагистральные АЛУ. Структура трехмагистрального АЛУ (рис. 4.4, а) позволяет выполнить за один такт чтение операндов из РОН, их суммирование в ОБ и запись суммы в РОН (рис. 4.4, б). Однако три магистрали занимают значительную часть кристалла микропроцессора.
Двухмагистральное АЛУ (рис. 4.5, а) содержит буферный регистр (БР) и требует для сложения двух машинных тактов. В первом такте по магистрали В из РОН в БР считывается операнд В. Во втором такте операнд А по той же магистрали считывается из РОН, операнды А и В суммируются в ОБ и результат С по магистрали А записывается в РОН (рис. 4.5, б).
Одномагистральное АЛУ использует два буферных регистра (рис. 4.6, а). В таком АЛУ сложение выполняется за три такта. В первом такте осуществляется чтение операнда А из РОН в БРЬ во втором — операнда В из РОН в БР2, а в третьем суммируются операнды; результат записывается в один из регистров блока РОН (рис. 4.6, б).
Структура ОБ зависит от набора выполняемых операций и типа АЛУ (рис. 4.7). Основу ОБ составляет многофункциональньгй сумматор, который может выполнять микрооперации сложения (с учебтом входящего переноса Сш), сложение по модулю 2 {Ml), логическое умножение И, а также логическое сложение ИЛИ:
Сл: См:= СмЛ + СмП + C1N;
Ml: См:= СмЛ в СмП;
И: См:= СмЛ л СмП;
ИЛИ: См:= СмЛ v СмП.
Формирователи
Д,ФК]: СмЛ:= 0; ДФК2: СмП:= 0; ВХА: СмЛ:= А; ВХВ: СмП:= В; Вх-А: СмЛ:= -А; Вх ->В: СмП:= -,В.
Сдвигатель позволяет выдавать результат из сумматора без сдвига, а также со сдвигом вправо или влево на один разряд: Пх: С:= См;
Rx: С:= Ri(SL * См); SR:= См(и); Lx: С:= Lx(Cm * SL:= См(0).
При сдвиге вправо на старший разряд магистрали С выдается сигнал с левого входа сдвигателя (SL) и на правый выход сдвига-теля выдается содержимое младшего разряда сумматора. При сдвиге влево на младший разряд магистрали С выдается сигнал с правого входа сдвигателя (SR) и на левый выход сдвигателя содержимое старшего разряда сумматора.
Формирователь признаков результата (флагов) определяет значения признаков, которые используются для выполнения условных переходов. Такими признаками могут быть равенство результата нулю, знак результата, переполнение разрядной сетки и т.д.
Сложение и вычитание чисел с фиксированной точкой. Набор арифметических операций составляют операции сложения, вычитания, умножения и деления. Операция сложения является базовой, так как она входит в состав операций умножения и деления, а вычитание вообще выполняется как сложение с учетом знаков операндов (при использовании машинных кодов).
Сложение целых двоичцых чисел с ФТ производится в следующем порядке:
1. Операнды представляются в обратном или дополнительном коде. Обычно используют ДК.
-
Сложение операндов производится поразрядно, начиная с младшего разряда.
-
В каждом разряде выполняются сложение двух цифр слагаемых и перенос из младшего разряда в соответствии с правилами двоичной арифметики.
-
Знаковые разряды участвуют в сложении наряду с цифровыми разрядами. Знак результата получается автоматически.
-
При сложении чисел в ДК перенос из знакового разряда отбрасывается. (При сложении чисел в ОК перенос из знакового разряда прибавляется к младшему разряду суммы.)
-
Если слагаемые представлены в ДК, то результат сложения получается также в ДК.
-
При сложении чисел с одинаковыми знаками возможно переполнение разрядной сетки.
При сложении чисел с одинаковыми знаками возможно получение результата, значение которого больше величины 2"-1, где п — разрядность слагаемых. При этом результат не укладывается в отведенных для него разрядах, поэтому такая ситуация называется переполнением разрядной сетки.
Одним из признаков переполнения является отличие знака суммы от знака слагаемых. Иногда при сложении используется модифицированный дополнительный код (МДК), в котором для знака числа отводится два разряда. В этом случае признаком переполнения являются различные значения знаковых разрядов суммы. Если переполнение не возникает, то значения знаковых разрядов совпадают. Рассмотрим примеры сложения чисел в МДК.
При вычитании возможно переполнение, если числа имеют разные знаки.
Признаком переполнения в данном случае являются различные значения знаковых разрядов разности.