19
1 Арифметические и логические основы вычислительной техники. ВШИССТ СПбПУ 2020 Умножение двоичных чисел Умножение двоичных чисел в системах ВТ осуществляется с использованием средств АЛУ процессора (алгоритмическое умножение); специализированных устройств, выполняющих операцию умножения (обеспечивает ускорение операции умножения). 1. Умножение двоичных чисел с фиксированной запятой в прямых кодах Постановка задачи и терминология. Решаемая задача: B A S Две подзадачи: 1. Определение знака результата Элементарная задача. Знак результата определяется как логическая функция сложение по модулю 2 знаков сомножителей. 2. Вычисление модуля результата |S| = |A|·|B|. |S| = (a n-1 + a n-2 +...+ a 1 +a 0 )·(b n-1 + b n-2 +...+ b 1 +b 0 ). Раскрытие скобок дает сумму поразрядных произведений. Поразрядное произведение определяется как логическая функция &. Т.е. для поразрядных произведений a i ·b j =a i &b j . Сумма всех поразрядных произведений это результат умножения. Суммирование поразрядных произведений должно осуществляться с учетом их весов. Разрядность полного произведения определяется как сумма разрядностей сомножителей (в нашем случае 2n). a n-1 ·b 0 a n-2 ·b 0 a 1 ·b 0 a 0 ·b 0 +a n-1 ·b 1 a n-2 ·b 1 a 1 ·b 1 a 0 ·b 1 +. . . . . . +a n-1 ·b n-2 a n-2 ·b n-2 a 1 ·b n-2 a 0 ·b n-2 +a n-1 ·b n-1 a n-2 ·b n-1 a 1 ·b n-1 a 0 ·b n-1 Для выполнения суммирования поразрядных произведений реализуются специализированные сумматоры - матричные умножители (будут рассмотрены ниже). Частичные произведения могут быть вычислены как: 0 , 0 1 , j j j b если b если A b A ЗнB ЗнA ЗнB XOR ЗнA ЗнB ЗнA ЗнS 0 0 0 0 1 1 1 0 1 1 1 0 i a j b a i ·b j =a i &b j 0 0 0 0 1 0 1 0 0 1 1 1 Сумма частичных произведений

Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

1

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

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

Умножение двоичных чисел в системах ВТ осуществляется с использованием

средств АЛУ процессора (алгоритмическое умножение);

специализированных устройств, выполняющих операцию умножения (обеспечивает

ускорение операции умножения).

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

Решаемая задача:

BAS Две подзадачи:

1. Определение знака результата

Элементарная задача. Знак результата определяется как логическая функция сложение по

модулю 2 знаков сомножителей.

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

|S| = |A|·|B|.

|S| = (an-1+ an-2 +...+ a1+a0)·(bn-1+ bn-2 +...+ b1+b0). Раскрытие скобок дает сумму поразрядных

произведений. Поразрядное произведение определяется как логическая функция &.

Т.е. для поразрядных произведений 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

Для выполнения суммирования поразрядных произведений реализуются

специализированные сумматоры - матричные умножители (будут рассмотрены ниже).

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

0,0

1,

j

j

j bесли

bеслиAbA

ЗнB ЗнA ЗнBXORЗнAЗнBЗнAЗнS

0 0 0

0 1 1

1 0 1

1 1 0

ia jb ai·bj=ai&bj

0 0 0

0 1 0

1 0 0

1 1 1

Сумма

частичных

произведений

Page 2: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

2

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

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

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

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

суммирования и различные способы взаимного взвешивания частичных произведений.

Page 3: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

3

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

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

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

Первый способ – «школьное» умножение младшими разрядами вперёд: частичные

произведения формируются путём последовательного умножения множимого A на разряды

множителя B, начиная с младших;

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

сдвигаются влево и складываются.

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

формируются путём последовательного умножения множимого 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

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

Сумма

частичных

произведений

Сумма

частичных

произведений

Page 4: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

4

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

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

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

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

разрядности операндов и от реализуемого алгоритма.

Что сдвигать

Как суммировать

младшими

разрядами вперёд

старшими

разрядами вперёд

множимое (A) мр (м) ср (м)

сумму (S) мр(Σ) ср(Σ)

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

детализации:

1. Математическая модель (арифметическое выражение, по которому ведется вычисление);

2. Схема алгоритма;

3. Структурная схема устройства умножения.

Используемые обозначения:

Rg - регистр. Простое запоминающее устройство для хранения многоразрядных данных. По

команде регистр запоминает подаваемые на его входы данные либо выполняет операцию

сдвига. На выходах регистра устанавливаются текущие хранимые данные.

н.у. – начальная установка.

clk - дискретное время (такты), в котором работает устройство.

УУ – устройство управления для управления работой элементов схемы.

∑ - управляемый двоичный сумматор (для задачи умножения выполняет операцию сложения

или операцию передачи слагаемого на выход без изменения).

Page 5: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

5

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

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

В произведении AxB раскроем В побитно (естественное представление числа. Для

упрощения записи представим целое число).

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

произведение Ab0. и прибавить его к значению (н.у. =0), накапливаемому в сумматоре. Операция

арифметического сдвига множимого А на 1 разряд влево позволяет получать следующее

частичное произведение Ab1.

1.2. Схема алгоритма умножения младшими разрядами вперед со сдвигом множимого (рис.1).

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

Каждый цикл алгоритма умножения предусматривает операцию

сложения на двоичном сумматоре и операцию сдвига. Операция

сложения выполняется всегда, даже если bi = 0. Всего выполняется

n циклов.

Оценка быстродействия

n циклов

tц = (t + tсдв)

tумн = n (t + tсдв)

В последнем цикле сдвиг не требуется. Он включен, чтобы все

циклы алгоритма были одинаковыми. Это упрощает УУ.

Рис.1.

Page 6: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

6

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

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← разрядность

2n

RgB→

разрядность 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

0

1

1

0

1

1

0

0

0

0

1

1

0 0

0

1

1

0

1 0 х

0

1

0

2 (сложение, запись,

сдвиг)

0

0

0

0

0

0

0

0

0

0

0

0

1

0

1

1

0

1

0

0

0

1

0

1

0 0

1

1

0

1

0 0 х

х

0

1

3 (сложение, запись,

сдвиг)

0

0

0

0

0

1

0

1

0

0

1

0

1

0

0

1

1

0

0

0

0

1

0

1

0 1

1

0

1

0

0 0 х

х

х

0

4 (сложение, запись,

сдвиг)

0

0

0

1

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

0

1

1 1

0

1

0

0

0 0 х

х

х

х

Результат: S = 01000001 (13 x 5 = 65).

+

+

+

+

Page 7: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

7

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

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

2 .1. Математическая модель.

В произведении AxB раскроем В побитно (естественное представление числа. Для

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

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

накапливаемой сумме старшего частичного произведения Abn-1. Сдвигается накапливаемая сумма

и к ней прибавляется следующее частичное произведение.

2.2. Схема алгоритма умножения старшими разрядами вперед со сдвигом суммы (рис.3).

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

Каждый цикл алгоритма умножения предусматривает операцию

арифметического сдвига и сложения на двоичном

сумматоре. Операция сложения выполняется всегда, даже

если bi = 0. Всего выполняется n циклов.

Оценка быстродействия

n циклов

tц = (t + tсдв)

tумн = n (t + tсдв)

На первом цикле сдвиг не требуется. Он включен, чтобы все

циклы алгоритма были одинаковыми. Это упрощает УУ.

Рис.3.

Page 8: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

8

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

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∑.

Page 9: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

9

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

Пример. Записать потактовое представление содержимого регистров умножителя четырехразрядных

чисел старшими разрядами вперед со сдвигом суммы (структура рис.4).

А = 1101; В = 0101.

Анализируемый разряд

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

разрядность n

RgB←

разрядность 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

0

0

0

0

0

0

0

0

1

1

0 1 1

0

1

х

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

0

1

1

0

1

1

0

0

0

0

1

1

1

1

0 1 0

1

х

х

5 (сдвиг в RgΣ←) 0 0 0 1 1 0 1 0 1 1 0 1 0 1 х х

6 (сложение, запись,

сдвиг)

0

0

0

0

0

0

0

0

0

1

0

1

1

0

1

0

0

0

1

0

1

0

0

0

1

1

0 1 1

х

х

х

7 ( сдвиг) 0 0 1 1 0 1 0 0 1 1 0 0 1 х х х

8 (сложение, запись,

сдвиг)

0

0

0

0

0

1

1

0

0

1

0

0

0

1

0

1

1

0

0

0

0

0

1

1

1

1

0 1 х

х

х

х

Результат: S = 01000001 (13 x 5 = 65).

+

+

+

+

Page 10: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

10

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

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.

Page 11: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

11

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

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∑.

Page 12: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

12

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

Пример. Записать потактовое представление содержимого регистров умножителя четырехразрядных

чисел старшими разрядами вперед со сдвигом множимого (структура рис.6).

А = 1101; В = 0101.

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

2n

RgB←

разрядность 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

0

0

0

0

0

0

0 0

1

1

0

1

0 0 1

0

1

х

2 (сложение, запись,

сдвиг)

0

0

0

0

0

0

0

1

1

0

1

1

0

0

0

0

1

1

0

0

0

0

0

0

0 0

0

1

1

0

1 0 0

1

х

х

3 (сложение, запись,

сдвиг)

0

0

0

0

0

0

1

0

1

1

0

1

0

0

0

1

0

1

0

0

0

0

0

0

0 0

0

0

1

1

0 1 1

х

х

х

4 (сложение, запись,

сдвиг)

0

0

0

0

0

1

1

0

0

1

0

0

0

1

0

1

1

0

0

0

0

0

1

1

0 0

0

0

0

1

1 0 х

х

х

х

Результат: S = 01000001 (13 x 5 = 65).

+

+

+

+

Page 13: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

13

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

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

В произведении AxB раскроем В побитно (естественное представление числа. Для

упрощения записи представим целое число). Вынесем за скобки 2n и далее вычислим значение в

скобках.

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

накапливаемой сумме младшего частичного произведения Ab0. Сдвигается накапливаемая сумма и

к ней прибавляется следующее частичное произведение.

4.2. Схема алгоритма умножения старшими разрядами вперед со сдвигом суммы (рис.7).

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

Каждый цикл алгоритма умножения предусматривает операцию

сложения на двоичном сумматоре и операцию сдвига. Операция

сложения выполняется всегда, даже если bi = 0. Всего выполняется

n циклов.

Оценка быстродействия

n циклов

tц = (t + tсдв)

tумн = n (t + tсдв)

Рис.7

Page 14: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

14

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

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∑→.

Page 15: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

15

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

Пример. Записать потактовое представление содержимого регистров умножителя четырехразрядных

чисел младшими разрядами вперед со сдвигом суммы (структура рис.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

1

1

0

1

1

0

0

0

0

1

1

0 1 0 1

2 (сдвиг в RgΣ→ и RgB→) 0 0 1 1 0 1 0 1 0

3 (сложение, запись 0

0

0

0

0

0

1

0

1

1

0

1

0

0

0

1 0 1 0

4 (сдвиг в RgΣ→ и RgB→) 0 0 0 1 1 0 1 0 1

5 (сложение, запись) 0

0

1

0

1

0

0

1

0

1

0

0

1

1

0

0 1 0 1

6 (сдвиг в RgΣ→ и RgB→) 0 1 0 0 0 0 0 1 0

7 (сложение, запись) 0

0

0

1

0

1

0

0

0

0

0

0

0

0

0

0 0 1 0

8 (сдвиг в RgΣ→ и RgB→) 0 0 1 0 0 0 0 0 1

Результат: S = 01000001 (13 x 5 = 65).

+

+

+

+

Page 16: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

16

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

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Σ

сдвиг в RgB→)

0

0

0

0

1

0

0

1

1

0

0

1

0

1

0

1

0

1

0

2 (сложение, запись в RgΣ

сдвиг в RgB→)

0

0

0

0

0

0

1

0

0

1

0

1

0

0

1

0

1

0

1

3 (сложение, запись в RgΣ

сдвиг в RgB→)

0

0

0

0

1

1

0

1

0

1

0

0

1

1

0

0

0

1

0

4 (сложение, запись в RgΣ

сдвиг в RgB→)

0

0

0

1

0

0

0

0

1

0

0

0

0

0

0

0

0

0

1

+

+

Page 17: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

17

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

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

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

структуры Разряды 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разр. Нет

Page 18: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

18

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

Приложение. «Перевод» из 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

Page 19: Ag6 Ag% Ag$ XOR Ag%kspt.icc.spbstu.ru/media/files/2020/course/comp_eng/5.pdf · Раскрытие скобок дает сумму поразрядных произведений

19

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

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.