
Книги / Книга Проектирование ВПОВС (часть 2)
.pdf
вторая группа множимого, формируется второе частичное произведение,
первая группа которого заносится в А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 |
– время |
|
|
|
|
|||
формирования произведения группы на группу, |
3р |
– время суммирования |
групп, а р – разрядность группы. Общее время формирования полного произведения равно
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. Далее
суммируются значения регистров Рг11(С20) и Рг21(С11), а также Рг12(С10) с нулём и возможным переносом из предыдущей группы (оба дополнительных разряда равны нулю). И так далее до последней группы.
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