ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 24.12.2021

Просмотров: 157

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

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

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

1

. Таким образом, для правильного расположения произведения в

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

С другой стороны, при перемножении правильных дробей дополнительный

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

участвующие в операции мантиссы представлены в нормализованном виде, то есть

правильными дробями.

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

ющим одинарную длину. В этом случае может применяться либо отбрасывание

лишних разрядов, либо округление.

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

Методы ускорения умножения можно условно разделить на аппаратные и логи-

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

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

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

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

группы:

-

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

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

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

гистры.

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

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

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

где

 т

 и

 k —

 номера крайних разрядов в группе из последовательных единиц. На-

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


background image

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

множимого с нарастающим весом (от 2

k

 до 2

m

) можно заменить вычитанием из СЧП

множимого с весом 2* и прибавлением к СЧП множимого с весом 2

и+|

.

Как видно, алгоритм предполагает три операции: сдвиг, сложение и вычитание.

Помимо сокращения числа сложений (вычитаний) у него есть еще одно достоин-

ство — он в равной степени применим к числам без знака и со знаком.

Алгоритм Бута сводится к перекодированию множителя из системы (0, 1)

в избыточную систему (-1,0,1), из-за чего его часто называют перекодированием

Бута (Booth recoding). В записи множителя в новой системе 1 означает добавле-

ние множимого к сумме частичных произведений, -1 — вычитание множимого и О
не предполагает никаких действий. Во всех случаях после очередной итерации про-

изводится сдвиг множимого влево или суммы частичных произведений вправо.
Реализация алгоритма предполагает последовательный в направлении справа нале-
во анализ пар разрядов множителя — текущего b

i

, и предшествующего

 b

i

(b

i

b

i-1

).

Для младшего разряда множителя (i - 0) считается, что предшествующий разряд
равен 0, то есть имеет место пара b

0

0. На каждом шаге i

(i =

 0,1,.„,

 п

 - 1) анализиру-

ется текущая комбинация

 b

i

(b

i

b

i-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) в соответствии с алгоритмом Бута


background image

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

  3 4 9

Пример

 2.

 1

100x0011 = 11110100 (в десятичной записи  - 4 x 3 --12).

Процесс вычисления иллюстрирует рис. 7.25.

Рис.

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

При наиболее благоприятном сочетании цифр множителя количество сумми-

рований равно n/2, где

 п —

 число разрядов множителя.

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

На практике большее распространение получила модификация алгоритма Бута,
где количество операций сложения при любом сочетании единиц и нулей в множи-
теле всегда равно

 п/2.

 В модифицированном алгоритме производится перекоди-

ровка цифр множителя из стандартной двоичной системы (0,1) в избыточную си-

стему (-2, -1, 0, 1, 2), где каждое число представляет собой коэффициент, на

который умножается множимое перед добавлением к СЧП. Одновременно анали-

зируются три разряда множителя

 b

i

(b

i

b

i-1

)(два текущих и старший разряд из пре-

дыдущей тройки) и, в зависимости от комбинации 0 и 1 в этих разрядах, выпол-

няется прибавление или вычитание множимого, прибавление или вычитание

удвоенного множимого, либо никакие действия не производятся (табл. 7.1).

Таблица 7.1

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

Пример вычисления произведения 011001 х 101110 = 011000111110 (в деся-

тичном виде 25 х (-18) = -450) показан на рис. 7.26.


background image

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 из СЧП вычитается одинарное множимое вместо при-

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