
- •Глава 7.
- •Операционные устройства вычислительных машин
- •Структуры операционных устройств
- •Операционные устройства с жесткой структурой
- •Операционные устройства с магистральной структурой
- •Классификация операционных устройств с магистральной структурой
- •Организация узла рон магистрального операционного устройства
- •Организация операционного блока магистрального операционного устройства
- •Базис целочисленных операционных устройств
- •Сложение и вычитание
- •Целочисленное умножение
- •2N битов. Таким образом, алгоритм умножения предполагает последовательное
- •Алгоритм сдвига влево
- •Умножение чисел со знаком
- •Умножение целых чисел и правильных дробей
- •Модифицированный алгоритм Бута
- •Обработка двух разрядов множителя за шаг
- •Аппаратные методы ускорения умножения
- •Матричное умножение чисел без знака
- •1 Полусумматоры называется одноразрядное суммирующее устройство, имеющее дна входа для слагаемыx и два входа и два выхода — выход бита суммы и выход бита переноса.
- •Матричное умножение чисел в дополнительном коде
- •Алгоритм Бо-Вули
- •Алгоритм Пезариса
- •Древовидные умножители
- •Сравнительная оценка схем умножения с матричной и древообразной структурой
- •Конвейеризация параллельных умножителей
- •Рекурсивная декомпозиция операции умножения
- •Целочисленное деление
- •Деление с восстановлением остатка
- •Деление без восстановления остатка
- •Деление чисел со знаком
- •Устройство деления
- •Ускорение целочисленного деления
- •Замена деления умножением на обратную величину
- •XiD). Количество итераций определяется требуемой точностью вычисления X/d. Реализация метода для n-разрядных чисел требует 2 int(log2n) - 1 операций умножения.
- •Ускорение вычисления частичных остатков
- •Алгоритм srt
- •Деление в избыточных системах счисления
- •Операционные устройства с плавающей запятой
- •Подготовительный этап
- •Заключительный этап
- •Сложение и вычитание
- •Умножение
- •Деление
- •Реализация логических операций
- •Контрольные вопросы
Алгоритм сдвига влево
Процедура традиционного умножения со сдвигом влево включает в себя следую-
щие шаги:
1. Исходное значение суммы частичных произведений принимается равным нулю.
2. Анализируется очередная цифра множителя (анализ начинается со старшей
цифры). Если она равна единице, то к СЧП прибавляется множимое, в против-
ном случае (цифра равна нулю) прибавление не производится.
3. Выполняется сдвиг суммы частичных произведений влево на одни разряд.
4. Пункты 2 и 3 последовательно повторяются для всех цифровых разрядов мно-
жителя.
На рис. 7.17 приведен пример умножения со сдвигом влево (10 х 11).
Описанная процедура может быть реализована с помощью схемы, показанной на рис. 7.18.
К преимуществу алгоритма сдвига влево следует отнести то, что он позволяет
совмещать во времени операции сложения и сдвига. Однако, по сравнению с алго-
ритмом сдвига вправо, он имеет и ряд недостатков. В первую очередь, СЧП и множитель не могут совместно использовать один и тот же регистр. Для реализации алгоритма требуется 2n-разрядный сумматор. Кроме того, схема со сдвигом влево неудобна при выполнении умножения над числами с разными знаками.
Тем не менее окончательный выбор между алгоритмами сдвига вправо или влево
не однозначен. Так, если в результате умножения требуется результат только одинарной длины, то вариант со сдвигом влево может оказаться в аппаратурном плане выгоднее, поскольку не принуждает вводить дополнительные цепи сдвига. Конечный выбор определяется соотношением затрат оборудования на реализацию
цепей сдвига и дополнительных разрядов сумматора.
Рис. 7.17. Пример умножения со сдвигом суммы частичных произведений влево
Рис, 7.18. Схема устройства умножения по алгоритму левого сдвига
Умножение чисел со знаком
Несколько сложнее обстоит дело с умножением чисел со знаком, когда n-разрядные сомножители содержат знак (в старшем разряде слова) ия-1 значащую цифру. В дальнейшем условимся отделять знаковый разряд точкой, не забывая, однако, что знаковый разряд участвует в операции наряду с цифровыми разрядами.
Наиболее очевидная мысль — получить абсолютные значения операндов и перемножить их как числа без знака. Справедливость такого решения видна из примера, приведенного на рис. 7.19, где показан процесс умножения чисел +13 и +10.
Во всех ВМ общепринято представлять числа со знаком в форме с фиксированной запятой в дополнительном коде. Положительные числа в этом представлении не отличаются от записи в прямом коде, а отрицательные записываются в виде
2n -х, где x — фактическое значение числа. В двоичной системе запись отрица-
Рис. 7.19. Умножение чисел при положительных сомножителях
тельного числа в дополнительном коде сводится к инвертированию всех цифровых разрядов числа, представленного в прямом коде, и прибавлению единицы к младшему разряду получившегося после инвертирования обратного кода. По этой
причине более предпочтительны варианты, не требующие преобразования сомножителей и обеспечивающие вычисления непосредственно в дополнительном коде.
Задержимся па особенностях операции умножения при различных сочетаниях знаков сомножителей. Первая из них проявляется при выполнении операции ариф-
метического сдвига вправо для суммы частичных произведений — освободившиеся
при сдвиге цифровые позиции должны заполняться не нулем, а значением знакового разряда сдвигаемого числа. Здесь, однако, следует учитывать, что это правило заполнения освободившихся цифровых разрядов начинает действовать лишь с момента, когда среди анализируемых разрядов множителя появляется первая единица.
Множимое произвольного знака,
множитель положительный
Пример для положительных сомножителей (А > О, В > 0) уже был рассмотрен.
В случае отрицательного множимого процедура умножения протекает аналогично, с учетом сделанного замечания об арифметическом сдвиге СЧП, что подтверждает пример, приведенный на рис. 7.20.
Поскольку результат умножения отрицательный, он получается в дополнительном коде.
Множимое произвольного знака,
множитель отрицательный
Так как множитель отрицателен, он записывается в дополнительном коде:
[В]д = 2n – |В|, и в цифровых разрядах кода будет представлено число 2n-1-|В|.
При типовом умножении (как и случае В > 0) получим Р = А х (2n-1 - |В|)=
= -|В|х A+ A х 2n-1. Псевдопроизведение Р больше истинного произведения P на
рис. 7.20. Умножение чисел при отрицательном множимом и положительном множителе
величину А х 2n-1, что и необходимо учитывать при формировании окончательного
результата. Для этого перед последним сдвигом из полученного псевдопроизведения необходимо вычесть избыточный член. На рис. 7.21 и 7.22 приведены примеры умножения положительного и отрицательного множимого на отрицательный множитель, в которых видна упомянутая коррекция результата.
Рис. 7.21. Умножение чисел при положительном множимом и отрицательном множителе
Рассмотренные процедуры умножения чисел со знаком в принципе могут быть
Реализованы с помощью ранее рассмотренного устройства (см. рис. 7.16). На практике для перемножения чисел со знаком применяют иные алгоритмы. Наиболее
распространенным из них является, алгоритм Бута, имеющий дополнительное
преимущество, — он ускоряет процесс умножения по сравнению с рассмотренным
Ранее. Этот алгоритм будет рассмотрен ниже.
Рис. 7.22. Умножение чисел при отрицательном множимом и отрицательном множителе