Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура средств ВТ / Литература / Цилькер / Организация ЭВМ и систем / Глава 7. Операционные устройства вычислительных машин.doc
Скачиваний:
452
Добавлен:
01.06.2015
Размер:
1.96 Mб
Скачать

Умножение целых чисел и правильных дробей

Рассмотренные алгоритмы относились к представлению чисел с фиксированной1

запятой, то есть, как это принято в большинстве ВМ, к целым числам, При пере-

множении чисел со знаком необходимо принимать во внимание, что произведение

двух «-разрядных чисел со знаком (знак и 77-1 значащий разряд) может иметь 2(«-1)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В основе алгоритма Бута [63] лежит следующее соотношение, характерное для

последовательностей двоичных цифр:

где m и k — номера крайних разрядов в группе из последовательных единиц. На-пример, 011110 = 25- 21. Это означает, что при наличии в множителе групп из нескольких единиц (комбинаций вида 011,110), последовательное добавление к СЧП множимого с нарастающим весом (от2k до 2m) можно заменить вычитанием из СЧП множимого с весом 2k и прибавлением к СЧП множимого с весом 2m+1.

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

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

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

Комбинация 10 означает начало цепочки последовательных единиц, и в этом

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

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

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

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

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

принято в реальных умножителях, выполняется путем сложения со множителем,

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

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

позиции слева заносится значение знакового разряда.

Пример 1.0110x0011 = 00010010 (в десятичном виде 6x3 = 18). После переко-

дирования Бута множитель (0, 0,1, 1) приобретает вид (0, 1, 0, -1).

Вначале суммачастичных произведений принимается равной нулю — 00000001).

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

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

рований равно n/2, где n — число разрядов множителя.