ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.12.2021
Просмотров: 159
Скачиваний: 3
3 4 2 Глава 7. Операционные устройства вычислительных машин
«-разрядного сумматора подается либо множимое, либо 0. На второй вход посту-
пает содержимое
п
старших разрядов РЧП. Новое частичное произведение из сум-
матора пересылается в старшие разряды РЧП. Далее содержимое РЧП сдвигается
на один разряд вправо, причем в освободившийся старший разряд регистра зано-
сится значение переноса из старшего разряда сумматора. Поскольку мультиплек-
сор управляется младшим разрядом РМт, то содержимое этого регистра также сдви-
гается на один разряд вправо. Описанная последовательность повторяется
п
раз.
Более экономичным в плане аппаратуры является иное решение, когда вместо двух
регистров — n-разрядного РМт и 2м-разрядного РЧП — используется один комби-
нированный 2л-разрядный регистр (показан на рис 7.16 справа). Множитель пер-
воначально заносится в младшие
п
разрядов этого регистра, а старшие разряды
обнуляются. По мере сдвигов вправо младшие, уже проанализированные разряды
множителя выталкиваются из регистра, освобождая место для очередной цифры
СЧП. Обычно такой регистр строится из двух n-разрядных регистров, объединен-
ных цепями сдвига. Дополнительно отметим, что если очередная цифра множите-
ля равна 1, то для вычисления суммы ЧП требуются операции сложения и сдвига,
а при нулевой цифре множителя в принципе можно обойтись без сложения, огра-
ничившись только сдвигом. Это, естественно, требует некоторого видоизменения
схемы.
Алгоритм сдвига влево
Процедура традиционного умножения со сдвигом влево включает в себя следую-
щие шаги:
1. Исходное значение суммы частичных произведений принимается равным нулю.
2. Анализируется очередная цифра множителя (анализ начинается со старшей
цифры). Если она равна единице, то к СЧП прибавляется множимое, в против-
ном случае (цифра равна нулю) прибавление не производится.
3. Выполняется сдвиг суммы частичных произведений влево на один разряд.
4. Пункты 2 и 3 последовательно повторяются для всех цифровых разрядов мно-
жителя.
На рис. 7.17 приведен пример умножения со сдвигом влево(10х 11).
Описанная процедура может быть реализована с помощью схемы, показанной
на рис. 7.18.
К преимуществу алгоритма сдвига влево следует отнести то, что он позволяет
совмещать во времени операции сложения и сдвига. Однако, по сравнению с алго-
ритмом сдвига вправо, он имеет и ряд недостатков. В первую очередь, СЧП и мно-
житель не могут совместно использовать один и тот же регистр. Для реализации
алгоритма требуется 2х-разрядный сумматор. Кроме того, схема со сдвигом влево
неудобна при выполнении умножения над числами с разными знаками.
Тем не менее окончательный выбор между алгоритмами сдвига вправо или влево
не однозначен. Так, если в результате умножения требуется результат только оди-
нарной длины, то вариант со сдвигом влево может оказаться в аппаратурном пла-
не выгоднее, поскольку не принуждает вводить дополнительные цепи сдвига. Ко-
нечный выбор определяется соотношением затрат оборудования на реализацию
цепей сдвига и дополнительных разрядов сумматора.
Целочисленное умножение 3 4 3
Рис. 7.17. Пример умножения со сдвигом суммы частичных произведений влево
Рис. 7.18. Схема устройства умножения по алгоритму левого сдвига
Умножение чисел со знаком
Несколько сложнее обстоит дело с умножением чисел со знаком, когда n-разряд-
ные сомножители содержат знак (в старшем разряде слова) и
п-
1 значащую циф-
ру. В дальнейшем условимся отделять знаковый разряд точкой, не забывая, одна-
ко, что знаковый разряд участвует в операции наряду с цифровыми разрядами.
Наиболее очевидная мысль — получить абсолютные значения операндов и пе-
ремножить их как числа без знака. Справедливость такого решения видна из при-
мера, приведенного на рис. 7.19, где показан процесс умножения чисел +13 и +10.
Во всех ВМ общепринято представлять числа со знаком в форме с фиксирован-
ной запятой в дополнительном коде. Положительные числа в этом представлении
не отличаются от записи в прямом коде, а отрицательные записываются в виде
2
n
-х,
где
х —
фактическое значение числа. В двоичной системе запись отрица-
3 4 4 Глава 7, Операционные устройства вычислительных машин
Рис. 7.19. Умножение чисел при положительных сомножителях
тельного числа в дополнительном коде сводится к инвертированию всех цифро-
вых разрядов числа, представленного в прямом коде, и прибавлению единицы
к младшему разряду получившегося после инвертирования обратного кода. По этой
причине более предпочтительны варианты, не требующие преобразования сомно-
жителей и обеспечивающие вычисления непосредственно в дополнительном коде.
Задержимся на особенностях операции умножения при различных сочетаниях
знаков сомножителей. Первая из них проявляется при выполнении операции ариф-
метического сдвига вправо для суммы частичных произведений — освободившиеся
при сдвиге цифровые позиции должны заполняться не нулем, а значением знако-
вого разряда сдвигаемого числа. Здесь, однако, следует учитывать, что это прави-
ло заполнения освободившихся цифровых разрядов начинает действовать лишь
с момента, когда среди анализируемых разрядов множителя появляется первая еди-
ница.
Множимое произвольного знака,
множитель положительный
Пример для положительных сомножителей (Л >= О,
В >=
0) уже был рассмотрен.
Б случае отрицательного множимого процедура умножения протекает аналогич-
но, с учетом сделанного замечания об арифметическом сдвиге СЧП, что подтверж-
дает пример, приведенный на рис. 7.20.
Поскольку результат умножения отрицательный, он получается в дополнитель-
ном коде.
Множимое произвольного знака,
множитель отрицательный
Так как множитель отрицателен, он записывается в дополнительном коде:
[В]
л
-
2
n
- | В | , и в цифровых разрядах кода будет представлено число 2
n-1
-|В|.
При типовом умножении (как в случае
В >
0) получим
Р
=
А
(2
n-1
- |
В|
|) -
=
-|В| *А
+
А *2
n-1
.
Псевдопроизведение
Р
больше истинного произведения
Р
на
Целочисленное умножение 3 4 5
Рис. 7.20, Умножение чисел при отрицательном множимом и положительном множителе
величину
А
х 2
n-1
, что и необходимо учитывать при формировании окончательного
результата. Для этого перед последним сдвигом из полученного псевдопроизведе-
ния необходимо вычесть избыточный член. На рис. 7.21 и 7.22 приведены приме-
ры умножения положительного и отрицательного множимого на отрицательный
множитель, в которых видна упомянутая коррекция результата
Рис. 7.21. Умножение чисел при положительном множимом и отрицательном множителе
Рассмотренные процедуры умножения чисел со знаком в принципе могут быть
реализованы с помощью ранее рассмотренного устройства (см. рис. 7,16). На прак-
тике для перемножения чисел со знаком применяют иные алгоритмы. Наиболее
распространенным из них является алгоритм Бута, имеющий дополнительное
преимущество, — он ускоряет процесс умножения по сравнению с рассмотренным
ранее. Этот алгоритм будет рассмотрен ниже.