Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
32
Добавлен:
01.05.2014
Размер:
130.81 Кб
Скачать

Ускорение целочисленного умножения

3 4 7

ны (2n разрядов). Поскольку число итераций в операции умножения определяется количеством цифровых разрядов множителя, окончательный результат может размещаться в разрядной сетке двойного слова неверно, что и имеет место при перемнбжении целых чисел (рис. 7.23). Как видно, младший разряд произведения целых чисел, имеющий вес 2°, размещается в позиции двойного слова, соответствующей весу 21. Таким образом, для правильного расположения произведения в разрядной сетке двойного слова необходим дополнительный сдвиг вправо. Такой сдвиг можно учесть как в аппаратуре умножителя, так и программным способом.

С другой стороны, при перемножении правильных дробей дополнительный сдвиг не нужен (см. рис. 7.23). Это обстоятельство необходимо принимать во внимание при построении умножителя для чисел в форме с плавающей запятой, где участвующие в операции мантиссы представлены в нормализованном виде, то есть правильными дробями.

При умножении правильных дробей часто ограничиваются результатом, имеющим одинарную длину. В этом случае может применяться либо отбрасывание лишних разрядов, либо округление.

Ускорение целочисленного умножения

Методы ускорения умножения можно условно разделить на аппаратные и логические. Те и другие требуют дополнительных затрат оборудования, которые при использовании аппаратных методов возрастают сувеличением разрядности сомножителей. Аппаратные способы приводят к усложнению схемы умножителя, но не затрагивают схемы управления. Дополнительные затраты оборудования при реализации логических методов не зависят от разрядности операндов, но схема управления умножителя при этом утяжеляется. На практике ускорение умножения часто достигается комбинацией аппаратных и логических методов.

Логические методы ускорения умножения

Логические подходы к убыстрению умножения можно подразделить на две группы:

-методы, позволяющие уменьшить количество сложений в ходе умножения;

-методы, обеспечивающие обработку нескольких разрядов множителя за шаг.

Реализация и тех и другихтребует введения дополнительных цепей сдвига в регистры.

Рассмотрим первую группу логических методов.

Алгоритм Бута

В основе алгоритма Бута [63] лежит следующее соотношение, характерное для последовательностей двоичных цифр;

где т и k — номера крайних разрядов в группе из последовательных единиц. Например, Это означает, что при наличии в множителе групп из нескольких единиц (комбинаций вида 011,110), последовательноедобавление к СЧП

3 4 8 Глава 7. Операционные устройства вычислительных машин

множимого с нарастающим весом (от 2k до 2m) можно заменить вычитанием из СЧП множимого с весом 2* и прибавлением к СЧП множимого с весом 2и+|.

Как видно, алгоритм предполагает три операции: сдвиг, сложение и вычитание. Помимо сокращения числа сложений (вычитаний) у него есть еще одно достоинство — он в равной степени применим к числам без знака и со знаком.

Алгоритм Бута сводится к перекодированию множителя из системы (0, 1) в избыточную систему (-1,0,1), из-за чего его часто называют перекодированием Бута (Booth recoding). В записи множителя в новой системе 1 означает добавление множимогоксумме частичных произведений, -1 — вычитание множимого и О не предполагает никаких действий. Во всех случаях после очередной итерации производится сдвиг множимого влево или суммы частичных произведений вправо. Реализация алгоритма предполагает последовательный в направлении справа налево анализ пар разрядов множителя — текущего bi, и предшествующего bi(bibi-1). Для младшего разряда множителя (i - 0) считается, что предшествующий разряд равен 0, то есть имеет место пара b00. На каждом шаге i(i = 0,1,.„, п - 1) анализиру- етсятекущаякомбинацияbi(bibi-1).

Комбинация 10 означает начало цепочки последовательных единиц, и в этом случае производится вычитание множимого из СЧП.

Комбинация 01 соответствует завершению цепочки единиц, и здесь множимое прибавляется к СЧП.

Комбинация 00 свидетельствует об отсутствии цепочки единиц, а 11 — о нахождении внутри такой цепочки. В обоих случаях никакие арифметические операции не производятся.

По завершении описанных действий осуществляется сдвиг множимого влево либо суммы частичных произведений вправо, и цикл повторяется для следующей пары разрядов множителя.

Описанную процедуру рассмотрим на примерах (используется вариант со сдвигом множимого влево). В приведенных примерах операция вычитания, как это принято в реальных умножителях, выполняется путем сложения со множителем, взятым с противоположным знаком и представленным в дополнительном коде. Напомним, что для удлинения кода до нужного числа разрядов в дополнительные позиции слева заносится значение знакового разряда.

Пример 1.0110x0011-00010010 (в десятичном виде 6хЗ-18), После перекодирования Бута множитель (0,0,1,1) приобретает вид (0,1,0,-1).

Вначалесумма частичных произведений принимается равной нулю — 00000000. Полагается, что младшему разряду множителя предшествовал 0. Дальнейший процесс поясняет рис. 7.24.

Начало цепочки

Внутри цепочки

Конец цепочки Вне цепочки единиц

единиц - (-А)

единиц

единиц - (+А)

Рис. 7.24. Пример 1 умножения (6 х 3) в соответствии с алгоритмом Бута

Ускорение целочисленногоумножения 3 4 9

Пример 2. 1100x0011 = 11110100 (в десятичной записи - 4x3 --12). Процесс вычисления иллюстрирует рис. 7.25.

Рис.7.25. Пример2умножения(-4х3)всоответствиисалгоритмомБута

При наиболее благоприятном сочетании цифр множителя количество суммирований равно n/2, где п — число разрядов множителя.

Модифицированный алгоритм Бута

На практике большее распространение получила модификация алгоритма Бута, где количество операций сложения при любом сочетании единиц и нулей в множителе всегда равно п/2. В модифицированном алгоритме производится перекодировка цифр множителя из стандартной двоичной системы (0,1) в избыточную систему (-2, -1, 0, 1, 2), где каждое число представляет собой коэффициент, на который умножается множимое перед добавлением к СЧП. Одновременно анализируются три разряда множителя bi(bibi-1)(два текущих и старший разряд из предыдущей тройки) и, в зависимости от комбинации 0 и 1 в этих разрядах, выполняется прибавление или вычитание множимого, прибавление или вычитание удвоенного множимого, либо никакие действия не производятся (табл. 7.1).

Таблица7.1.ЛогикамодифицированногоалгоритмаБута

Пример вычисления произведения 011001 х 101110 = 011000111110 (в десятичном виде 25 х (-18) = -450) показан на рис. 7.26.

3 5 0 Глава 7. Операционные устройства вычислительных машин

Рис. 7.26. Пример умножения (18 х (-25)в соответствии с модифицированным алгоритмомБута

Алгоритм Лемана

Еще большее сокращение количества сложений может дать модификация, предложеннаяЛеманом [151]. Здесь, дажепри наименее благоприятном сочетании цифр множителя, количество операции сложения не превышает величины n/2, а в среднем же оно составляет я/3. Суть модификации заключается в следующем:

-если две группы нулей разделены единицей, стоящей в k-й позиции, то вместо вычитания в k-й позиции и сложения в (k +1 )-й позиции достаточно выполнить только сложение в k-й позиции;

-если две группы единиц разделены нулем, стоящим в k-й позиции, то вместо сложения в k-й позиции и вычитания в (k + 1)-й позиции достаточно выполнить только вычитание в k-й позиции.

Обработкадвух разрядов множителя за шаг

Из второй группы логических методов остановимся на умножении с обработкой за шаг двух разрядов множителя (IBM 360/370). В принципе это более эффективная версия алгоритма Бута. Анализ множителя начинается с младших разрядов. В зависимости от входящей двухразрядной комбинации предусматриваются следующие действия:

-00 — простой сдвиг на два разряда вправо суммы частичных произведений (СЧП);

-01 — к СЧП прибавляется одинарное множимое, после чего СЧП сдвигается на 2 разряда вправо;

-10 — к СЧП прибавляется удвоенное множимое, и СЧП сдвигается на 2 разряда вправо;

-11 — из СЧП вычитается одинарное множимое, и СЧП сдвигается на 2 разряда вправо. Полученный результат должен быть скорректирован на следующем шаге, что фиксируется в специальном триггере признака коррекции.

Так как в случае пары 11 из СЧП вычитается одинарное множимое вместо прибавления утроенного, для корректировки результата к СЧП перёд выполнением сдвига надо было бы прибавить учетверенное множимое. Но после сдвига на два разряда вправо СЧП уменьшается в четыре раза, так что на следующем шаге достаточно добавить одинарное множимое. Это учитывается при обработке следую-

Соседние файлы в папке Организация ЭВМ и систем