Вы находитесь на странице: 1из 19

1

Умножение двоичных чисел


Умножение двоичных чисел в системах ВТ осуществляется с использованием
 средств АЛУ процессора (алгоритмическое умножение);
 специализированных устройств, выполняющих операцию умножения (обеспечивает
ускорение операции умножения).

1. Умножение двоичных чисел с фиксированной запятой в прямых кодах


Постановка задачи и терминология.
Решаемая задача:
S  A B
Две подзадачи:
1. Определение знака результата
ЗнB ЗнA ЗнS  ЗнA  ЗнB  ЗнA XOR ЗнB
0 0 0
0 1 1
1 0 1
1 1 0
Элементарная задача. Знак результата определяется как логическая функция сложение по
модулю 2 знаков сомножителей.

2. Вычисление модуля результата


|S| = |A|·|B|.
|S| = (an-1+ an-2 +...+ a1+a0)·(bn-1+ bn-2 +...+ b1+b0). Раскрытие скобок дает сумму поразрядных
произведений. Поразрядное произведение определяется как логическая функция &.

ai bj ai·bj=ai&bj
0 0 0
0 1 0
1 0 0
1 1 1
Т.е. для поразрядных произведений ai·bj=ai&bj. Сумма всех поразрядных произведений это
результат умножения. Суммирование поразрядных произведений должно осуществляться с
учетом их весов. Разрядность полного произведения определяется как сумма разрядностей
сомножителей (в нашем случае 2n).
an-1·b0 an-2·b0 a1·b0 a0·b0
+an-1·b1 an-2·b1 a1·b1 a0·b1 Сумма
+. . . . . . частичных
+an-1·bn-2 an-2·bn-2 a1·bn-2 a0·bn-2 произведений
+an-1·bn-1 an-2·bn-1 a1·bn-1 a0·bn-1
Для выполнения суммирования поразрядных произведений реализуются
специализированные сумматоры - матричные умножители (будут рассмотрены ниже).
Частичные произведения могут быть вычислены как:
 A, если b j  1
A  bj  
0, если b j  0
Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020
2

А задача их суммирования решена последовательным суммированием взвешенных


(используется операция сдвига) частичных произведений на двоичном сумматоре (АЛУ).
Алгоритмические способы умножения подразумевают различные последовательности
суммирования и различные способы взаимного взвешивания частичных произведений.

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


3

Пример умножения двоичных чисел без знака с ФЗ

A = 1310 = 11012, B = 510 = 01012, Разрядность операндов n = 4.


Первый способ – «школьное» умножение младшими разрядами вперёд: частичные
произведения формируются путём последовательного умножения множимого A на разряды
множителя B, начиная с младших;
получаемые частичные 1 1 0 1 произведения
сдвигаются влево и х 0 1 0 1 складываются.
1 1 0 1
+ 0 0 0 0
+ 1 1 0 1 Сумма
+ 0 0 0 0 частичных
1 0 0 0 0 0 1 произведений

Второй способ – умножение старшими разрядами вперёд: частичные произведения


формируются путём последовательного умножения множимого A на разряды множителя B,
начиная со старших; получаемые частичные произведения сдвигаются вправо и складываются.

1 1 0 1
х 0 1 0 1
0 0 0 0 Сумма
+ 1 1 0 1 частичных
+ 0 0 0 0 произведений
+ 1 1 0 1
1 0 0 0 0 0 1

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


4

Алгоритмическое умножение в прямых кодах на двоичном сумматоре


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

Как суммировать
Что сдвигать младшими старшими
разрядами вперёд разрядами вперёд
множимое (A) мр (м) ср (м)
сумму (S) мр(Σ) ср(Σ)

Анализируя различные способы умножения рассмотрим модели с различными уровнями


детализации:
1. Математическая модель (арифметическое выражение, по которому ведется вычисление);
2. Схема алгоритма;
3. Структурная схема устройства умножения.

Используемые обозначения:
Rg - регистр. Простое запоминающее устройство для хранения многоразрядных данных. По
команде регистр запоминает подаваемые на его входы данные либо выполняет операцию
сдвига. На выходах регистра устанавливаются текущие хранимые данные.
н.у. – начальная установка.
clk - дискретное время (такты), в котором работает устройство.
УУ – устройство управления для управления работой элементов схемы.
∑ - управляемый двоичный сумматор (для задачи умножения выполняет операцию сложения
или операцию передачи слагаемого на выход без изменения).

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


5

1. Умножение младшими разрядами вперед со сдвигом множимого Мр(м)


1.1. Математическая модель.
В произведении AxB раскроем В побитно (естественное представление числа. Для
упрощения записи представим целое число).

Исходно имеем не сдвинутое значение А, значит можно получить младшее частичное


произведение Ab0. и прибавить его к значению (н.у. =0), накапливаемому в сумматоре. Операция
арифметического сдвига множимого А на 1 разряд влево позволяет получать следующее
частичное произведение Ab1.
1.2. Схема алгоритма умножения младшими разрядами вперед со сдвигом
множимого (рис.1).

Задаются н.у., накапливаемой сумме присваивается значение 0.


Каждый цикл алгоритма умножения предусматривает операцию
сложения на двоичном сумматоре и операцию сдвига. Операция
сложения выполняется всегда, даже если bi = 0. Всего выполняется
n циклов.
Оценка быстродействия

n циклов
tц = (t + tсдв)
tумн = n (t + tсдв)
В последнем цикле сдвиг не требуется. Он включен, чтобы все
циклы алгоритма были одинаковыми. Это упрощает УУ.

Рис.1.

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


6

1.3. Структурная схема устройства умножения (рис.2).

Разрядность операндов - n;
Разрядность сумматора ∑, RgA←, Rg∑ - 2n;
Разрядность RgB→ - n;
RgB→и RgA←- сдвигающие регистры. В RgA←
арифметический сдвиг влево, в RgB→
произвольный сдвиг вправо.

Вначале УУ задает начальные установки в


регистры (элементы памяти).
В Rg∑ записывается 0; в старшие n разрядов
RgA← загружается 0, в младшие - разряды
множимого A[n-1..0]. В регистр RgB→
загружается множитель B[n-1..0].
На каждом такте работы УУ анализирует

Рис.2.

состояние младшего разряда RgB→ и выдает на управляемый сумматор команду сложения с


содержимым RgA← (bi = 1) или команду сложения с 0 (bi = 0, пустое сложение). На RgA← и RgB→
выдается команда "сдвинуть", на Rg∑ - команда "записать". Управляющие н.у. и потактной
работой связи показаны на рис.2 пунктиром. На 1 цикл работы приходится 1 такт.
Для выполнения операции сложения используется сумматор разрядности 2n. Но "активное"
сложение (с возможностью возникновения переносов между разрядами) выполняется только в n
разрядах сумматора. Т.е. время суммирования nt∑1разр. . Время умножения определяется как
tумн = ntц = n( nt∑1разр. + tсдв) ≈ n2t∑1разр..

Пример.
Записать потактовое представление содержимого регистров умножителя четырехразрядных
чисел младшими разрядами вперед со сдвигом множимого (структура рис.2).
А = 1101; В = 0101.

№ такта RgΣ разрядность 2n RgA← разрядность RgB→


2n разрядность n
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 3 2 1 0
0 (н.у.) 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1
1 (сложение, запись, + 0 0 0 0 0 0 0 0
сдвиг) 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 х 0 1 0
0 0 0 0 1 1 0 1
2 (сложение, запись, + 0 0 0 0 1 1 0 1
сдвиг) 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 х х 0 1
0 0 0 0 1 1 0 1
3 (сложение, запись, + 0 0 0 0 1 1 0 1
сдвиг) 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 х х х 0
0 1 0 0 0 0 0 1
4 (сложение, запись, + 0 1 0 0 0 0 0 1
сдвиг) 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 х х х х
0 1 0 0 0 0 0 1
Результат: S = 01000001 (13 x 5 = 65).

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


7

2. Умножение старшими разрядами вперед со сдвигом суммы Ср(Σ)


2.1. Математическая модель.
В произведении AxB раскроем В побитно (естественное представление числа. Для
упрощения записи представим целое число). Представим результат в скобочной форме

Вычисления начинаются с внутренней вложенной скобки, т.е. с добавлением к


накапливаемой сумме старшего частичного произведения Abn-1. Сдвигается накапливаемая сумма
и к ней прибавляется следующее частичное произведение.
2.2. Схема алгоритма умножения старшими разрядами вперед со сдвигом
суммы (рис.3).

Задаются н.у., накапливаемой сумме присваивается значение 0.


Каждый цикл алгоритма умножения предусматривает операцию
арифметического сдвига и сложения на двоичном
сумматоре. Операция сложения выполняется всегда, даже
если bi = 0. Всего выполняется n циклов.
Оценка быстродействия

n циклов
tц = (t + tсдв)
tумн = n (t + tсдв)
На первом цикле сдвиг не требуется. Он включен, чтобы все
циклы алгоритма были одинаковыми. Это упрощает УУ.

Рис.3.

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


8

2.3. Структурная схема устройства умножения (рис.4).

Разрядность операндов - n;
Разрядность сумматора ∑, Rg∑← - 2n;
Разрядность RgA и RgB← - n;
RgB← и Rg∑← - сдвигающие регистры. В Rg∑←
арифметический сдвиг влево, в RgB←
произвольный сдвиг влево.

Вначале УУ задает начальные установки в


регистры (элементы памяти).
В Rg∑← записывается 0; в RgA - разряды
множимого A[n-1..0]. В регистр RgB← загружается
множитель B[n-1..0].
В этой структуре регистр Rg∑← должен сдвинуть
записанную в него сумму, а затем записать сумму,
полученную в сумматоре (выполнить и запись и
сдвиг за 1 такт можно только используя
Рис.4. структурный сдвиг).
Один цикл алгоритма реализуется за 2 такта. На нечетном такте работы УУ выдает команду
"сдвинуть", на Rg∑. На четном такте работы УУ анализирует состояние старшего разряда RgB← и
выдает на управляемый сумматор команду сложения с содержимым RgA (bi = 1) или команду
сложения с 0 (bi = 0, пустое сложение). На RgB← выдается команда "сдвинуть", на Rg∑ - команда
"записать". Управляющие н.у. и потактной работой связи показаны на рис.4 пунктиром. На 1 цикл
работы приходится 2 такта.
Для выполнения операции сложения используется сумматор разрядности 2n. Из-за того, что
A[n-1..0] (старшие разряды дополняются нулями) подается на младшие разряды сумматора могут
возникать переносы от самых младших разрядов сумматора к старшим разрядам. Т.е. время
суммирования 2nt∑1разр. . Время умножения определяется как
tумн = ntц = 2n( 2nt∑1разр. + tсдв) ≈ 4n2t∑1разр..
На 1 цикл требуется 2 такта. Длительность тактов одинакова и определяется временем
сложения и записи в Rg∑.

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


9

Пример.
Записать потактовое представление содержимого регистров умножителя четырехразрядных
чисел старшими разрядами вперед со сдвигом суммы (структура рис.4).
А = 1101; В = 0101.
Анализируемый разряд
№ такта RgΣ← разрядность 2n RgA RgB←
разрядность n разрядность n
7 6 5 4 3 2 1 0 3 2 1 0 3 2 1 0
0 (н.у.) 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1
1 (сдвиг в RgΣ←) 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1
2 (сложение, запись, + 0 0 0 0 0 0 0 0
сдвиг) 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 х
0 0 0 0 0 0 0 0
3 ( сдвиг) 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 х
4 (сложение, запись, + 0 0 0 0 0 0 0 0
сдвиг) 0 0 0 0 1 1 0 1 1 1 0 1 0 1 х х
0 0 0 0 1 1 0 1
5 (сдвиг в RgΣ←) 0 0 0 1 1 0 1 0 1 1 0 1 0 1 х х
6 (сложение, запись, + 0 0 0 1 1 0 1 0
сдвиг) 0 0 0 0 0 0 0 0 1 1 0 1 1 х х х
0 0 0 1 1 0 1 0
7 ( сдвиг) 0 0 1 1 0 1 0 0 1 1 0 0 1 х х х
8 (сложение, запись, + 0 0 1 1 0 1 0 0
сдвиг) 0 0 0 0 1 1 0 1 1 1 0 1 х х х х
0 1 0 0 0 0 0 1
Результат: S = 01000001 (13 x 5 = 65).

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


10

3. Умножение старшими разрядами вперед со сдвигом множимого Ср(м)


3.1. Математическая модель.
В произведении AxB раскроем В побитно (естественное представление числа. Для
упрощения записи представим целое число). Вынесем за скобки 2n и далее вычислим значение в
скобках.

Исходно имеем не сдвинутое значение А, значит выполнив однократный сдвиг вправо


множимого можно получить старшее частичное произведение Abn-1. и прибавить его к значению
(н.у. =0), накапливаемому в сумматоре. Следующая операция арифметического сдвига множимого
А на 1 разряд вправо позволяет получать следующее частичное произведение Abn-2. Умножение на
константу 2n игнорируется (достигается просто соответствующим обозначением разрядов
произведения).
3.2. Схема алгоритма умножения старшими разрядами вперед со сдвигом
множимого (рис.5).

Задаются н.у., накапливаемой сумме присваивается значение 0.


Выполняется предварительный сдвиг А на 1 разряд вправо (в
алгоритме нет необходимости, но в структурной схеме увидим, что
это позволяет выполнить 1 цикл алгоритма за 1 такт). Каждый цикл
алгоритма умножения предусматривает операцию сложения на
двоичном сумматоре и операцию сдвига. Операция сложения
выполняется всегда, даже если bi = 0. Всего выполняется n циклов.
Оценка быстродействия

n циклов
tц = (t + tсдв)
tумн = n (t + tсдв)

Рис.5.

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


11

3.3. Структурная схема устройства умножения (рис.6).

Разрядность операндов - n;
Разрядность сумматора ∑, Rg∑, RgA→ - 2n;
Разрядность RgB← - n;
RgB← и RgA→ - сдвигающие регистры. В RgA→
арифметический сдвиг вправо, в RgB←
произвольный сдвиг влево.

Вначале УУ задает начальные установки в


регистры (элементы памяти).
В Rg∑← записывается 0; в младшие n разрядов
RgA→ загружается 0, в старшие - разряды
множимого 0,A[n-1..0] (сдвинутое на 1 разряд
множимое) .
В регистр RgB← загружается множитель B[n-
1..0].

Рис.6.
На каждом такте работы УУ анализирует состояние старшего разряда RgB← и выдает на
управляемый сумматор команду сложения с содержимым RgA→ (bi = 1) или команду сложения с 0
(bi = 0, пустое сложение). На RgA→ и RgB→ выдается команда "сдвинуть", на Rg∑ - команда
"записать". Управляющие н.у. и потактной работой связи показаны на рис.6 пунктиром. На 1 цикл
работы приходится 1 такт.
Для выполнения операции сложения используется сумматор разрядности 2n. Но "активное"
сложение (с возможностью возникновения переносов между разрядами) выполняется только в n
разрядах сумматора. Т.е. время суммирования nt∑1разр. . Время умножения определяется как
tумн = ntц = n( nt∑1разр. + tсдв) ≈ n2t∑1разр..

Для выполнения операции сложения используется сумматор разрядности 2n. После n-1
сдвигов A[n-1..0] (старшие разряды при сдвиге заполняются нулями) располагается в младших
разрядах сумматора и могут возникать переносы от самых младших разрядов сумматора к
старшим разрядам. Т.е. время суммирования 2nt∑1разр. . Время умножения определяется как
tумн = ntц = n( 2nt∑1разр. + tсдв) ≈ 2n2t∑1разр..
На 1 цикл требуется 1 такт. Длительность такта определяется временем сложения и записи
в Rg∑.

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


12

Пример.
Записать потактовое представление содержимого регистров умножителя четырехразрядных
чисел старшими разрядами вперед со сдвигом множимого (структура рис.6).
А = 1101; В = 0101.

№ такта RgΣ разрядность 2n RgA→ разрядность RgB←


2n разрядность n
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 3 2 1 0
0 (н.у.) 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1
1 (сложение, запись, + 0 0 0 0 0 0 0 0
сдвиг) 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 х
0 0 0 0 0 0 0 0
2 (сложение, запись, + 0 0 0 0 0 0 0 0
сдвиг) 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 1 х х
0 0 1 1 0 1 0 0
3 (сложение, запись, + 0 0 1 1 0 1 0 0
сдвиг) 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 х х х
0 0 1 1 0 1 0 0
4 (сложение, запись, + 0 0 1 1 0 1 0 0
сдвиг) 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 х х х х
0 1 0 0 0 0 0 1
Результат: S = 01000001 (13 x 5 = 65).

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


13

4. Умножение младшими разрядами вперед со сдвигом суммы Мр(Σ)


4.1. Математическая модель.
В произведении AxB раскроем В побитно (естественное представление числа. Для
упрощения записи представим целое число). Вынесем за скобки 2n и далее вычислим значение в
скобках.

Вычисления начинаются с внутренней вложенной скобки, т.е. с добавлением к


накапливаемой сумме младшего частичного произведения Ab0. Сдвигается накапливаемая сумма и
к ней прибавляется следующее частичное произведение.
4.2. Схема алгоритма умножения старшими разрядами вперед со сдвигом
суммы (рис.7).

Задаются н.у., накапливаемой сумме присваивается значение 0.


Каждый цикл алгоритма умножения предусматривает операцию
сложения на двоичном сумматоре и операцию сдвига. Операция
сложения выполняется всегда, даже если bi = 0. Всего выполняется
n циклов.
Оценка быстродействия

n циклов
tц = (t + tсдв)
tумн = n (t + tсдв)

Рис.7

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


14

4.3. Структурная схема устройства умножения (рис.8).

Разрядность операндов - n;
Разрядность сумматора ∑, RgA и RgB - n;
Разрядность RgB→ - n+1 (на сумматоре складываются
n разрядные числа); старший разряд не выводится,
после сдвига в нем 0.
RgB→ и Rg∑→ - сдвигающие регистры. В Rg∑→
арифметический сдвиг вправо, в RgB→
неарифметический сдвиг вправо. В структуре
устройства использована возможность записывать
младшие разряды произведения в освобождающиеся
при сдвиге разряды RgB→.
Вначале УУ задает начальные установки в регистры
(элементы памяти).
В Rg∑→ записывается 0; в RgA - разряды множимого
A[n-1..0]. В регистр RgB→ загружается множитель B[n-
1..0].
Рис.8.
В этой структуре регистр Rg∑→ должен записать сумму, а затем сдвинуть записанную
сумму (выполнить и запись и сдвиг за 1 такт можно только используя структурный сдвиг. Такую
структуру рассмотрим ниже). Один цикл алгоритма реализуется за 2 такта. На нечетном такте
работы УУ анализирует состояние младшего разряда RgB→ и выдает на управляемый сумматор
команду сложения с содержимым RgA (bi = 1) или команду сложения с 0 (bi = 0, пустое сложение),
на Rg∑→ выдается команда "записать". Управляющие н.у. и потактной работой связи показаны на
рис.8 пунктиром. На 1 цикл работы приходится 2 такта. На нечетном такте работы УУ выдает
команду "сдвинуть" в Rg∑→ и RgB→. После сдвига в старшем n разряде записан 0 (временное
переполнение исчезло).
Для выполнения операции сложения используется сумматор разрядности n. Время
суммирования nt∑1разр. . Время умножения определяется как
tумн = ntц = 2n( nt∑1разр. + tсдв) ≈ 2n2t∑1разр..
На 1 цикл требуется 2 такта. Длительность тактов одинакова и определяется временем
сложения и записи в Rg∑→.

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


15

Пример.
Записать потактовое представление содержимого регистров умножителя четырехразрядных
чисел младшими разрядами вперед со сдвигом суммы (структура рис.8).
А = 1101; В = 0101.
Состояние RgA в процессе умножения не изменяется. В таблице не показываем.
Анализируемый разряд
№ такта RgΣ→ разрядность n+1 RgB→ разрядность
n
4 3 2 1 0 3 2 1 0
0 (н.у.) 0 0 0 0 0 0 1 0 1
1 (сложение, запись) +
0 0 0 0 0 0 1 0 1
0 1 1 0 1
0 1 1 0 1
2 (сдвиг в RgΣ→ и RgB→) 0 0 1 1 0 1 0 1 0
3 (сложение, запись + 0 0 1 1 0 1 0 1 0
0 0 0 0 0
0 0 1 1 0
4 (сдвиг в RgΣ→ и RgB→) 0 0 0 1 1 0 1 0 1
5 (сложение, запись) +
0 0 0 1 1 0 1 0 1
0 1 1 0 1
1 0 0 0 0
6 (сдвиг в RgΣ→ и RgB→) 0 1 0 0 0 0 0 1 0
7 (сложение, запись) +
0 1 0 0 0 0 0 1 0
0 0 0 0 0
0 1 0 0 0
8 (сдвиг в RgΣ→ и RgB→) 0 0 1 0 0 0 0 0 1
Результат: S = 01000001 (13 x 5 = 65).

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


16

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


разрядами вперед со сдвигом суммы.
Рассмотренные выше структурные схемы обладают универсальностью. Они состоят из
однотипных операционных узлов со стандартными связями и отличаются разрядностью и
устройствами управления. Специализация структуры устройства умножения позволяет повысить
быстродействие и сократить аппаратурные затраты (основные критериальные характеристики).
Структурная схема рис.8 может быть модифицирована за счет использования структурного сдвига
при записи в RgΣ и выполнении, таким образом, одного цикла алгоритма за 1 такт. Время
умножения определится как
tумн = ntц = n( nt∑1разр. + tсдв) ≈ n2t∑1разр..
Структурная схема устройства умножения со структурным сдвигом приведена на рис.9.
В этой структуре запись n старших разрядов суммы в
RgΣ и сдвиг в RgB→ выполняются одновременно.
При сдвиге в RgB→ в освобождающийся разряд
записывается младший разряд суммы.

Рис.9.

Пример.
Записать потактовое представление содержимого регистров модифицированного
умножителя четырехразрядных чисел младшими разрядами вперед со сдвигом суммы (структура
рис.9).
А = 1101; В = 0101.
Состояние RgA в процессе умножения не изменяется. В таблице не показываем.
Анализируемый разряд
№ такта RgΣ→ разрядность n+1 RgB→ разрядность
n
4 3 2 1 0 3 2 1 0
0 (н.у.) 0 0 0 0 0 0 1 0 1
1 (сложение, запись в RgΣ + 0 0 0 0 0
сдвиг в RgB→) 0 1 1 0 1
0 0 1 1 0 1 0 1 0
2 (сложение, запись в RgΣ + 0 0 1 1 0
сдвиг в RgB→) 0 0 0 0 0
0 0 0 1 1 0 1 0 1
3 (сложение, запись в RgΣ 0 0 0 1 1
сдвиг в RgB→) 0 1 1 0 1
0 1 0 0 0 0 0 1 0
4 (сложение, запись в RgΣ 0 1 0 0 0
сдвиг в RgB→) 0 0 0 0 0
0 0 1 0 0 0 0 0 1

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


17

Сравнительный анализ алгоритмических способов умножения.

Алгоритм Аппаратурные затраты Быстродействие Универсальность


Разряды Rg Разряды ∑ структуры
1. Умножение младшими разрядами 5n 2n tумн ≈ n2t∑1разр.. Да
вперед со сдвигом множимого Мр(м)
2. Умножение старшими разрядами 4n 2n tумн ≈ 4n2t∑1разр.. Да
вперед со сдвигом суммы Ср(Σ)
3. Умножение старшими разрядами 5n 2n tумн ≈ 2n2t∑1разр.. Да
вперед со сдвигом множимого Ср(м)
4. Умножение младшими разрядами 3n n tумн ≈ 2n2t∑1разр.. Да
вперед со сдвигом суммы Мр(Σ)
4.М. Модифицированная структура 3n n tумн ≈ n2t∑1разр. Нет
устройства умножения младшими
разрядами вперед со сдвигом суммы
Мр(Σ).

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020


18

Приложение.
«Перевод» из Hennessy, Patterson: Computer Architecture: A Quantitative Approach, 5th Edition.
Appendix J: Computer Arithmetic by David Goldberg

Вычислительная арифметика зачастую рассматривается как узкоспециализированная часть


разработки процессора, что не умаляет ее важности. Например, проблема важности этого вопроса
встала перед компанией Intel в 1994 году, когда в процессоре Pentium была обнаружена ошибка в
алгоритме деления. Проблема с арифметикой с плавающей запятой вызвала шквал негативных
публикаций и встала компании Intel в кругленькую сумму: 300 млн. долларов для покрытия
стоимости замены неисправных микросхем.
<…> Несмотря на то, что для выполнения арифметических вычислений в процессорах
существует огромное разнообразие различных алгоритмов, все они представляют собой вариации
нескольких базовых алгоритмов. <…>
<…> Самый простой умножитель вычисляет результат умножения двух беззнаковых чисел, по
одному разряду результата за шаг. Значения, которые требуется умножить, хранятся в регистрах A
и В, а регистр результата S исходно равен нулю. Каждый шаг умножения включает две фазы:
(i) Если очередной разряд множителя равен 1, то к сумме прибавляется множимое. В
противном случае – прибавляется ноль.
(ii) Выполняется сдвиг регистров.

<…>
При создании системы команд процессора возникает несколько вопросов.
<…>
Должен ли результат умножения двух n-разрядных чисел сохраняться в 2n-разрядном
регистре, или умножение должно возвращать только младшие n разрядов, сигнализируя о
переполнении в случае, если результат не помещается в эти n разрядов? В пользу второго варианта
то, что буквально во всех процедурных языках программирования умножение целочисленных
переменных имеет целочисленный результат того же типа. Следовательно, компилятор не будет
генерировать код, который использует результат с двойной точностью. В пользу первого варианта
то, что он может быть использован ассемблером для ускорения умножения чисел повышенной
точностью (ускорение до 3 раз).
Еще один вопрос связан с тем, что большинство процессоров стремятся выполнять каждую
операцию за один цикл. Поэтому непрактично выполнять умножение или деление за то же время,
что выполняется сложение или регистровая передача. Есть три подхода к решению этого вопроса.
Первый – ввести одноцикловую операцию для одного шага умножения. The second approach is to
do integer multiplication in the floating-point unit and have it be part of the floating-point instruction set.
(This is what DLX does.) The third approach is to have an autonomous unit in the CPU do the
multiplication. In this case, the result either can be guaranteed to be delivered in a fixed number of
cycles—and the compiler charged with waiting the proper amount of time—or there can be an interlock.
The same comments apply to division as well. As examples, the original SPARC had a multiply-step
instruction but no divide-step instruction, while the MIPS R3000 has an autonomous unit that does
multiplication and division (newer versions of the SPARC architecture added an integer multiply
Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020
19

instruction). The designers of the HP Precision Architecture did an especially thorough job of analyzing
the frequency of the operands for multiplication and division, and they based their multiply and divide
steps accordingly.

Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020

Вам также может понравиться