Метод ускоренного умножения Лемана

Метод Лемана рассмотрим в предположении, что умножение выполняется, начиная с младших разрядов множителя.

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

 

где - номер разряда множителя;

- цифра -го разряда множителя;

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

- знак арифметического действия.

Очевидно, что при .

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

Из анализа приведенных выше выражений, описывающих алгоритм действий в данном цикле умножения, следует, что перед началом операции умножения . Это значение сохраняется до появления первой единицы в младшем разряде множителя. При появлении там единицы производится сложение множимого с предшествующей суммой частичных произведений, если в следующем по старшинству разряде множителя содержится «0», или производится вычитание множимого из предшествующей суммы частичных произведений, если в следующем по старшинству разряде множителя содержится «1», то есть .

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

Рассмотрим на конкретном примере последовательность действий в сумматоре и регистре множителя при умножении по методу Лемана.

Пусть множимое , а множитель .

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

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

 

 

 

Содержимое Содержимое

регистра сумматора [CM]

 

100011 10 исходное состояние 00 00000000 0

010001 11 сдвиг вправо и [CM] 00 00000000 0

(-) + 11 01001011 1

11 01001011 1

 

001000 11 сдвиг вправо и [CM] 11 10100101 1

000100 01 сдвиг вправо и [CM] 11 11010010 1

000010 00 сдвиг вправо и [CM] 11 11101001 0

(+) + 00 10110100 0

1 00 10011101 0

00 10011101 1

000001 00 сдвиг вправо и [CM] 00 01001110 1

000000 10 сдвиг вправо и [CM] 00 00100111 0

000000 01 сдвиг вправо и [CM] 00 00010011 1

(+) + 00 10110100 0

произведение 00 11000111 1

округление 00 11001000 0

 

 

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

Анализ показывает, что при умножении по методу Лемана даже при наиболее неблагоприятном сочетании цифр разрядного множителя (101010…) количество операций суммирования равно . В среднем же количество операций суммирования равно .