- •Глава 7.
- •Операционные устройства вычислительных машин
- •Структуры операционных устройств
- •Операционные устройства с жесткой структурой
- •Операционные устройства с магистральной структурой
- •Классификация операционных устройств с магистральной структурой
- •Организация узла рон магистрального операционного устройства
- •Организация операционного блока магистрального операционного устройства
- •Базис целочисленных операционных устройств
- •Сложение и вычитание
- •Целочисленное умножение
- •2N битов. Таким образом, алгоритм умножения предполагает последовательное
- •Алгоритм сдвига влево
- •Умножение чисел со знаком
- •Умножение целых чисел и правильных дробей
- •Модифицированный алгоритм Бута
- •Обработка двух разрядов множителя за шаг
- •Аппаратные методы ускорения умножения
- •Матричное умножение чисел без знака
- •1 Полусумматоры называется одноразрядное суммирующее устройство, имеющее дна входа для слагаемыx и два входа и два выхода — выход бита суммы и выход бита переноса.
- •Матричное умножение чисел в дополнительном коде
- •Алгоритм Бо-Вули
- •Алгоритм Пезариса
- •Древовидные умножители
- •Сравнительная оценка схем умножения с матричной и древообразной структурой
- •Конвейеризация параллельных умножителей
- •Рекурсивная декомпозиция операции умножения
- •Целочисленное деление
- •Деление с восстановлением остатка
- •Деление без восстановления остатка
- •Деление чисел со знаком
- •Устройство деления
- •Ускорение целочисленного деления
- •Замена деления умножением на обратную величину
- •XiD). Количество итераций определяется требуемой точностью вычисления X/d. Реализация метода для n-разрядных чисел требует 2 int(log2n) - 1 операций умножения.
- •Ускорение вычисления частичных остатков
- •Алгоритм srt
- •Деление в избыточных системах счисления
- •Операционные устройства с плавающей запятой
- •Подготовительный этап
- •Заключительный этап
- •Сложение и вычитание
- •Умножение
- •Деление
- •Реализация логических операций
- •Контрольные вопросы
Умножение целых чисел и правильных дробей
Рассмотренные алгоритмы относились к представлению чисел с фиксированной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 — число разрядов множителя.
