Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Книги / Книга Проектирование ВПОВС (часть 2)

.pdf
Скачиваний:
84
Добавлен:
01.06.2015
Размер:
4.62 Mб
Скачать

вторая группа множимого, формируется второе частичное произведение,

первая группа которого заносится в А1, вторая – В1, а в В2 – младшая группа предыдущего произведения, хранимого в В1. Производится сложение по правилу, описанному выше, и формируется следующие две группы частного произведения.

 

 

P

110

 

P

111

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 такт

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

+

P

120

 

P

121

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 такт

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

 

 

 

+

P

130

P

131

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 такт

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

1n0

P

1n1

n такт + ...

 

...

 

...

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.3

Умножение завершается, когда найдено произведение всех групп множимого на группу множителя. Данный алгоритм относится к последовательным методам формирования частных произведений.

Одновременно с формированием частных произведений определяется частичное произведение. Для этих целей в умножитель добавлены регистры для хранения частичного произведения, состоящего из регистров Рг.1 – Рг.(n + 1) и

сумматоров (

2,

3

,

4

,

5

и т.д.

n

). Они необходимы для коррекции

дополнительных разрядов полученных групп, вызванных возможными переносами при суммировании младших групп. Число сумматоров определяя-

ется максимальным пробегом переноса при накопительном суммировании частных произведений, но не превышают n + 1.

При наличии одной схемы умножения группы на группу получение полного множества частичных произведений осуществляется последовательно,

начиная со старших групп. В рассматриваемом алгоритме последовательно определяются все n-частных произведений. Для получения полного произведения необходимо выполнить накопительное суммирование всех

131

частных произведений. После получения первого полного частичного произведения оно переносится во второй регистр сумматора с соответствующим сдвигом на группу. Далее процесс продолжается по выше описанной схеме для получения второго частичного произведения, после получения которого оно складывается с текущим произведением. Далее происходит сдвиг результата на группу. Старшая уходящая группа является текущей группой результата. Процесс умножения завершается после получения

(n + 1) результата.

Последовательность обхода для получения частных произведений может осуществляться несколькими способами, в зависимости от поставленных требований. Например, последовательный метод, рассмотренный выше, когда необходимо получить полное произведение для дальнейших операций. Метод не эффективен, так как требует достаточно большого числа умножений и суммирований (n2), где n – число групп.

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

(умножения нескольких старших групп множимого на все группы множителя),

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

8 разряда. Необходимо получить поле результата длиной 8 групп. Используем,

как и ранее, последовательный метод формирования частных произведений. На рис. 3.4 приведена матрица частичных произведений, получаемых при умножении полей размерностью 8 групп каждая. Умножение и суммирования продолжается до тех пор, пока не будут получены все 16 групп. Однако умножение может завершиться досрочно, если необходимо получить достоверный результат с длиной, равной длине исходных полей. В данном случае достаточно ограничится 11-12 группами, и округлить результат.

132

Время, необходимое для получения произведения, складывается из времени формирования частного произведения, времени получения частичного произведения и времени формирования полного произведения.

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

Разрядом числа в этом случае выступает группа. Результатом умножения группы множителя на все группы множителя является массив частных произведений (рис. 3.4).

133

134

1.1.0

1.1.1

1.2.1

1.3.1

1.4.1

1.5.1

1.6.1

1.7.1

1.8.1

 

 

 

 

 

 

 

 

1.2.0

1.3.0

1.4.0

1.5.0

1.6..0

1.7.0

1.8.0

 

 

 

 

 

 

 

 

 

2.1.0

2.1.1

2.2.1

2.3.1

2.4.1

2.5.1

2.6.1

2.7.1

2.8.1

 

 

 

 

 

 

 

 

2.2.0

2.3.0

2.4.0

2.5.0

2.6.0

2.7.0

2.8.0

 

 

 

 

 

 

 

 

 

3.1.0

3.1.1

3.2.1

3.3.1

3.4.1

3.5.1

3.6.1

3.7.1

3.8.1

 

 

 

 

 

 

 

 

3.2.0

3.3.0

3.4.0

3.5.0

3.6.0

3.7.0

3.8.0

 

 

 

 

 

 

 

 

 

4.1.0

4.1.1

4.2.1

4.3.1

4.4.1

4.5.1

4.6.1

4.7.1

4.8.1

 

 

 

 

 

 

 

 

4.2.0

4.3.0

4.4.0

4.5.0

4.6.0

4.7.0

4.8.0

 

 

 

 

 

 

 

 

 

5.1.0

5.1.1

5.2.1

5.3.1

5.4.1

5.5.1

5.6.1

5.7.1

5.8.1

 

 

 

 

 

 

 

 

5.2.0

5.3.0

5.4.0

5.5.0

5.6.0

5.7.0

5.8.0

 

 

 

 

 

 

 

 

 

6.1.0

6.1.1

6.2.1

6.3.1

6.4.1

6.5.1

6.6.1

6.7.1

6.8.1

 

 

 

 

 

 

 

 

6.2.0

6.3.0

6.4.0

6.5.0

6.6.0

6.7.0

6.8.0

 

 

 

 

 

 

 

 

 

7.1.0

7.1.1

7.2.1

7.3.1

7.4.1

7.5.1

7.6.1

7.7.1

7.8.1

 

 

 

 

 

 

 

 

7.2.0

7.3.0

7.4.0

7.5.0

7.6.0

7.7.0

7.8.0

 

 

 

 

 

 

 

 

 

8.1.0

8.1.1

8.2.1

8.3.1

8.4.1

8.5.1

8.6.1

8.7.1

8.8.1

 

 

 

 

 

 

 

 

8.2.0

8.3.0

8.4.0

8.5.0

8.6.0

8.7.0

8.8.0

 

Рис. 3.4

134

Далее формируются все частичные произведения, которые приведены на

рис. 3.5.

C10

C11

C12

 

C20

C21

 

 

C30

1.1.01.1.1

1.2.0

2.1.0

C13

C14

C15

C16

C17

C18

C19

 

 

 

 

 

C22

C23

C24

C25

C26

C27

C28

C29

 

 

 

 

C31

C32

C33

C34

C35

C36

C37

C38

C39

 

 

 

C40

C41

C42

C43

C44

C45

C46

C47

C48

C49

 

 

 

C50

C51

C52

C53

C54

C55

C56

C57

C58

C59

 

 

 

C60

C61

C62

C63

C64

C65

C66

C67

C68

C69

 

 

 

C70

C71

C72

C73

C74

C75

C76

C77

C78

 

 

 

 

C80

C81

C82

C83

C84

C85

C86

C87

а

1.2.1

1.3.1

1.4.1

1.5.1

1.6.1

1.7.1

1.8.1

 

1.3.0

1.4.0

1.5.0

1.6..0

1.7.0

1.8.0

 

 

2.1.1

2.2.1

2.3.1

2.4.1

2.5.1

2.6.1

2.7.1

2.8.1

2.2.0

2.3.0

2.4.0

2.5.0

2.6.0

2.7.0

2.8.0

 

3.1.0

3.1.1

3.2.1

3.3.1

3.4.1

3.5.1

3.6.1

3.7.1

 

3.2.0

3.3.0

3.4.0

3.5.0

3.6.0

3.7.0

3.8.0

 

4.1.0

4.1.1

4.2.1

4.3.1

4.4.1

4.5.1

4.6.1

 

 

4.2.0

4.3.0

4.4.0

4.5.0

4.6.0

4.7.0

 

 

5.1.0

5.1.1

5.2.1

5.3.1

5.4.1

5.5.1

 

 

 

5.2.0

5.3.0

5.4.0

5.5.0

5.6.0

 

 

 

6.1.0

6.1.1

6.2.1

6.3.1

6.4.1

 

 

 

 

.

6.3.0

6.4.0

.

 

 

 

 

6.2 0

 

 

 

 

7.1.0

7.1.1

 

 

C79

 

C88

C89

3.8.1

4.7.1

. . .

.

б

Рис. 3.5

.

Как видно из диаграммы, произведение увеличивается на одну старшую группу, которая является, по сути, целым числом. Это следствие появления избыточных переносов в старших группах. Для получения полного произведения все частичные произведения необходимо просуммировать. Эта

135

операция осуществляется одновременно с формированием текущего произведения множимого на группу множимого следующим образом.

Однако если не требуется получение произведение с полным числом разрядов, то число умножений можно существенно уменьшить. На рис. 3.5,б

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

Определим время формирования частичного произведения. Учитывая,

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

множимого (частное произведение) равно 4

 

, а суммирование двух частных

 

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

3p

, где

p

– число разрядов группы. Для определения общего

 

 

времени суммирования построим схему протекания процесса (табл. 3.1) Время суммирования не зависит от размерности сумматора и равно 3р . Таким

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

множителя на группы множимого равно T =

(3 р 4)

, где

4

– время

 

 

 

формирования произведения группы на группу,

– время суммирования

групп, а р – разрядность группы. Общее время формирования полного произведения равно

T =

((3р 4)r

3р)(r 1)

.

 

 

Здесь второе слагаемое определяет время суммирования двух частичных произведений. Как видим, метод последовательного умножения и суммирования при больших значениях р и r, как в первом так и во втором случае, занимает достаточно много времени.

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

136

УМНОЖЕНИЕ 4

 

УМНОЖЕНИЕ 4

 

СУММИРОВАНИЕ

3p

 

УМНОЖЕНИЕ 4

 

СУММИРОВАНИЕ

3p

УМНОЖЕНИЕ 4 СУММИРОВАНИЕ 3p

Таблица 3.1

A

B

P

P

1

1

110

111

A B

P

 

P

 

 

 

 

 

C

 

 

1

 

 

 

2

 

120

 

121

 

 

 

 

 

 

 

 

P110

+

 

sign2

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

 

 

P

 

 

P

 

 

 

 

 

 

 

 

РЕЗУЛЬТАТ R= С11 С121

 

 

 

 

111 +

 

120 121

С

 

 

sign С

 

2

P

С

 

 

 

 

 

 

 

 

 

 

 

11

 

 

 

 

 

 

121

 

 

 

 

 

 

 

 

11

 

 

С

 

 

 

 

sign P

 

2

P

 

С

 

 

 

 

 

 

 

 

 

 

 

 

121

 

 

 

 

 

130

 

 

 

 

 

 

 

12

 

 

 

P

 

 

P

 

 

С131

РЕЗУЛЬТАТ R= С11 С12 С131

 

 

121

 

 

130

 

C

 

 

C ...

 

C

 

 

 

 

 

 

 

 

P

 

 

11

 

 

 

12

+

 

1(r 1)

 

 

 

+

1(r 1)1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sign2

р

P

P

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1r 0

1r1

 

C

 

 

 

C ... C

1)

 

 

 

 

 

C

C

1)

11

 

 

12

 

 

 

1(r

 

 

 

 

 

1r

1(r

Здесь r – число групп поля данных.

В этом случае схема умножения модифицируется следующим образом

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

Для этого вводится блок хранения поля предыдущего результата,

представляющий собой оперативную память (ОП). Считывания поля текущего произведения из памяти производится по группам, начиная со старших групп.

В соответствии с рис. 3.5 первой группой считывается группа С10, которая складывается с нулём. Затем сумма, полученная на выходе сумматора 3 ,

записывается в регистр Рг12, а сумматора 2 20) – в регистр Рг11. Далее

суммируются значения регистров Рг1120) и Рг2111), а также Рг1210) с нулём и возможным переносом из предыдущей группы (оба дополнительных разряда равны нулю). И так далее до последней группы.

137

Da 1

Da 2

...

Da n

 

 

Сдвиг

 

Dbi

Схема перемножения групп

Старшая

часть

(Sign A1)

Рг A1

 

Рг A2

0

2

 

Младшая

 

часть

 

C

Рг В1

i

 

Рг В2

1

Pi,j

Рг (n+1)

...

Рг 13

Рг 12

Sign

Рг 11

 

 

 

 

 

 

 

 

 

0

 

0

0

 

Pг 21

ОП

 

 

 

 

 

 

 

 

 

 

n

 

5

4

 

3

 

 

...

 

 

 

 

 

Рис. 3.6

Для примера рассмотрим получение произведений двух полей с n = 2

(число групп), р = 4 (число бит в группе). Пусть все группы положительны и максимальны по значению, как в множимом, так и в множителе:

DA=0.1111 0.1111; DB=0.1111 0.1111.

Формирование произведения на устройстве умножения (рис. 3.6)

протекает следующим образом:

Умножение на DB1:

1-й шаг.DA1 = 0.1111 DB1 = 0.1111.

1.1. Умножение РгА1 = 1.1110 РгВ11 = 0.0001, РгВ21 = 0.0000.

138

1.2.

+1 РгА2= 0.0000 0.0000 0.0001

-1 РгА1= 0.1110 РгB21= 0.0000 1.1110

1.3. Рг11 = 0.0001 РгА2 = 1.1110. 2-й шаг. DA2 = 0.1111 DB1 = 0.1111.

Умножение РгА1 = 1.1110 РгВ12 = 0.0001 РгВ22 = 0.0001.

+1

 

-1

 

 

РгА2= 0.1110

РгА1=

0.1110

РгB1=

0.0000

0.0000

РгB2=

0.0001

РгB2=

0.0001

1.1111

 

1.1111

 

 

Рг12 = 0.0001 Рг11 = 1.1111 РгА2 = 1.1111 РгB2 = 0.0001.

3-й шаг.

+1

 

-1

РгА2= 0.1111

РгА1=

0.0000

0.0000

РгB2=

0.0001

0.0000

 

-1.0001

РгB1=

0.0000

РгB2=

0.0000

Рг13 = 0.0001 Рг12 = 1.1111 Рг11 = 0.0000

РгА2 = 1.0001.

4. Пустой шаг (выталкивание значения из РгА2).

 

Рг14 = 0.0001 Рг13 = 1.1111 Рг12 = 0.0000

Рг11 = 1.0001.

Умножение на DB2:

 

 

 

 

1-й шаг. DA1 = 0.1111 DB2 = 0.1111.

 

 

1.1. Умножение РгА1 = 1.1110 РгВ11 = 0.0001, РгВ21 = 0.0000.

+1

 

1

 

 

РгА2= 0.0000

РгА1=

0.1110

РгB1=

0.0001

0.0000

РгB2=

0.0000

 

 

0.0001

РгА2=

1.1110

РгB2=

0.0000

Рг11= 0.0000

 

 

 

 

Рг21= 0.0001

 

 

 

 

Рг12= 0.0001

 

 

 

 

Рг12=0.0001 Рг11=0.0001 РгА2=1.1110 РгВ21=0.0001.

1.3.Рг11= 0.0001 Рг21= 1.1111 Рг12= 0.0000

Рг13=0.0001 Рг12=0.0000 Рг11=0.0001 РгА2=1.1110 РгВ21=0.0001.

139

2-й шаг. DA2 = 0.1111 DB2 = 0.1111.

2.1. Умножение РгА1 = 1.1110 РгВ12 = 0.0001, РгВ21 = 0.0001.

+1

-1

 

2.2. РгА2= 1.1110

РгА1= 0.1110

РгB1 = 0.0001

0.0000

РгB2= 0.0001

РгB2= 0.0001

1.1111

РгА2= 1.1111

 

Рг12= 0.0001

Рг11= 1.1111

 

0.0000

Рг21= 0.0001

 

 

 

Рг13= 0.0001

Рг12= 0.0000

 

3-й шаг. РгА1 = 0.0000 РгВ13 = 0.0000, РгВ23 = 0.0001.

+1

 

-1

РгА2= 1.1111

РгА1=

0.0000

0.0000

РгB2=

0.0001

0.0000

 

1.0001

РгB1=

0.0000

РгB2=

0.0000

Рг15 = 0.0001 Рг14 = 1.1111 Рг13 = 0.0000 Рг12 = 1.0001 Рг12 = 1.0001.

Рг15 = 0.0001 Рг14 = 0.0000 1.1111 1.0001 1.0001.

Просматривая, начиная со старших групп, находим первую после старшей значащую группу. Если в первой не нулевой группе дополнительный разряд группы содержит минус единицу, то она вычитается из всех предшествующих групп, дополнительные разряды игнорируются. Если же в дополнительном разряде данной группы нуль, то имеет место ошибка.

Окончательный результат имеет вид Пр.=0.0000, 0.1111 0.1111 1.1100 1.0001 1.0001.

Для сравнения, освободимся от отрицательных единиц в дополнительных разрядах. В результате получим

Пр.=0.0000, 0.1111 0.1110 0.0000 0.0001.

Сравним его с произведением, полученным прямым умножением и суммированием.

Пр = 0.1111 0.0000 0.1110 0.0000 0.0001.

Как видим, результаты совпадают.

140