Сделай Сам Свою Работу на 5

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





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

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

 

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

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

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

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

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

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

Из анализа приведенных выше выражений, описывающих алгоритм действий в данном цикле умножения, следует, что перед началом операции умножения . Это значение сохраняется до появления первой единицы в младшем разряде множителя. При появлении там единицы производится сложение множимого с предшествующей суммой частичных произведений, если в следующем по старшинству разряде множителя содержится «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…) количество операций суммирования равно . В среднем же количество операций суммирования равно .

Метод умножения с расшифровкой пар разрядов множителя

И запоминанием переносов

Этот метод относится к аппаратно-логическим методам ускоренного выполнения операции умножения и его целесообразно использовать в ЭВМ, в состав арифметического устройства которых входит комбинационный сумматор параллельного действия и регистры сдвига. Для реализации данного метода в состав арифметического устройства вводятся дополнительный регистр и вентили для хранения сдвигов и передачи переносов.

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



Укрупненно алгоритм выполнения операции умножения с расшифровкой пар разрядов множителя и запоминанием переносов можно описать следующим образом.

В первом цикле умножения анализируется пара младших разрядов множителя и в зависимости от их значения (00; 01; 10; 11) формируется первое частичное произведение по изложенным в п. 2.6.3 правилам ускоренного умножения при одновременной расшифровке двух разрядов множителя. Очевидно, что в первом цикле переносы отсутствуют, то есть их коды равны нулю. Во втором цикле производится сдвиг множителя и первой суммы частичных произведений на два разряда вправо и анализируется следующая по старшинству пара разрядов множителя. Затем формируется второе частичное произведение, которое поразрядно складывается со сдвинутым на два разряда вправо первым частичным произведением. При этом формируются и фиксируются коды переносов.

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

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

 

Пример.

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

Данный результат умножения совпадает с полученным ранее в п. 2.6.3.

Время, необходимое для операции умножения рассмотренным методом в случае несовмещения по времени сдвига и суммирования, рассчитывается по формуле

,

а в случае совмещения сдвига и суммирования – по формуле

,

где - время поразрядного сложения по модулю два. Обычно .

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

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.