
Книги / Книга Проектирование ВПОВС (часть 2)
.pdfТаким образом,
Тумн = n
|
гр |
|
+ m
|
сум |
|
,
где n – число последовательных умножений, m – число уровней пирамидального суммирования. В нашем случае n = 1, а m = 2 для схемы умножения 4х4 и m=3 для схемы умножения 8х8. Таким образом,
Т=N |
|
гр + m |
сум |
+Т |
|
||||
|
|
|
сум |
выбирается исходя из требований задачи.
В нашем примере число операционных блоков может быть выбрано по максимуму, т.е. равной 4, которые одновременно формируют 4 слова.
Следующим шагом является суммирование полученных произведений.
3.4.5. “Длинные” вычисления на матричной схеме умножения
Рассмотренные схемы умножения ориентированы на выполнение операции умножения с фиксированными форматами. Однако они могут реализовать и операцию умножения с переменной длинной слова. При этом умножение может осуществляться по любой схеме, например, все группы множимого на текущую группу множителя и суммированием получаемых групп в соответствии с их весами (последовательная схема операции умножения полей). Однако данный метод, как было показано ранее, не эффективен по критерию времени выполнения операции. Большим быстродей-
ствием обладает схема умножения на матрице умножителей (см. рис.3.11).
Схема такого умножителя показана на рис. 3.19.
Организация умножения начинается со старших групп множителя на все группы множимого, обеспечивающего необходимую погрешность умножения.
Это позволяет формировать старшие разряды произведения сразу, не дожидаясь окончания операции умножения. Однако данный способ умножения не эффективен, так как он позволяет получить только одну группу результата.
Следующая группа может быть получена только после окончания предыдущего умножения и начала умножения на следующую группу.
161

Db (n-3) Db (n-2) Db (n-1) Db n
...
...
...
...
Da (n-3) |
|
Da (n-2) |
|
Da (n-1) |
|
Da n |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
... |
|
|
... |
|
|
... |
... |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
Da 5 |
|
|
Da 6 |
|
|
Da 7 |
|
Da 8 |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Da 1 |
|
|
Da 2 |
|
|
Da 3 |
|
Da 4 |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Db 8 |
|
|
Db 4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Db 7 |
|
|
Db 3 |
|
|
Матрица перемножения групп |
||||||||||||||
|
|
|||||||||||||||||||
|
|
|
|
|||||||||||||||||
|
|
|||||||||||||||||||
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|||||||||||||||
Db 6 |
|
|
Db 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Db 5 |
|
|
Db 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сумматор - корректор |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сумматор |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сдвигатель на n разрядов |
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Старшая часть |
|
|
|
|
|
Младшая часть |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
Регистр |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
Рис.3.19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
162 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Для устранения этого недостатка построим следующую схему умножения. Разобьём множитель на ряд подможителей, начиная со старших разрядов. Число групп в подможителях выбирается в соответствии с размерностью матрицы умножения. Стандартный размер матрицы умножителей, как указывалось выше, четыре на четыре группы по восемь бит каждая. Далее организуется необходимая последовательность действий при умножении полей на одном матричном умножителе. Множимое и множитель разбиваются на блоки по четыре группы каждый. Умножение начинается со старших групп (старшие группы – группы с меньшим номером).
Результат содержит восемь групп, 4 старшие и 4 младшие группы,
которые получаются на выходе сумматора-корректора.
При умножении следующих групп множимого и множителя полученные три старшие группы в дальнейшем не изменяются. Поэтому эти группы помещаются в левую часть регистра и в дальнейшем не изменяются. Остальные младшие группы сохраняются в левой (младшей) части регистра, так как при следующих суммированиях возможна коррекция младших групп результата.
На втором шаге выполняется два умножения. Получаемые произведения суммируются на сумматоре с предыдущим остатком без сдвига. Старшие группы, как и в предыдущем случае, отделяются и они добавляется к предыдущему результату. Полученный результат вновь сдвигается на соответствующее число разрядов. Аналогично выполняются последующие этапы.
Так как после каждого этапа образуются массивы групп, которые не изменяются при выполнении следующих операций умножения, то они могут быть использованы в следующих операциях, не дожидаясь получения полного результата, т.е. допускается организация конвейерных вычислений.
Время выполнения операции умножения складывается из перемножения групп, начиная со старших групп (рис. 3.20).
163

|
1 группа 1.1 |
|
|
|
2 группа 1.2 |
|
|
|
3 группа 1.3 |
|
|
|
4 группа 1.4 |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.1 |
1.2 |
1.3 |
1.4 |
1.5 |
1.6 |
1.7 |
1.8 |
1.9 |
1.10 |
1.11 |
1.12 |
1.13 |
1.14 |
1.15 |
1.16 ... |
1.n |
||||
|
1 группа 2.1 |
|
|
|
2 группа 2.2 |
|
|
|
3 группа 2.3 |
|
|
|
4 группа 2.4 |
|
|
|
||||
2.1 |
2.2 |
2.3 |
2.4 |
2.5 |
2.6 |
2.7 |
2.8 |
2.9 |
2.10 |
2.11 |
2.12 |
2.13 |
2.14 |
2.15 |
2.16 ... |
2.n |
1.Гр 1.1 * Гр 2.1
Гр 1.2 * Гр 2.1
2.Гр 1.1 * Гр 2.2
Гр 1.1 * Гр 2.3
3.Гр 2.1 * Гр 1.3 Гр 1.2 * Гр 2.2
Гр 1.1 * Гр 2.4
4.Гр 2.1 * Гр 1.4 Гр 2.2 * Гр 1.3 Гр 1.2 * Гр 2.3
Гр 1.2 * Гр 2.4
5.Гр 1.3* Гр 2.3 Гр1.4* Гр 2.2
6.Гр 1.3* Гр 2.4 Гр1.4* Гр 2.3
7.
Гр1.4* Гр 2.4
Рис.3.20
В данном примере длина слова 128 бит (16 групп по 8 бит каждая группа). Если разрядность больше, то возрастает и число этапов, и время умножения. Однако на рис. 3.20 видно, что после двух умножений (этапы 1 и 2)
полученные старшие две группы результата в дальнейшем не изменяются и могут быть использованы в следующих операциях. Аналогично после обработки групп,
полученных в третьем и четвёртом этапах, и т.д., что и позволяет организовать конвейерный режим вычислений.
164
3.5. Высокоскоростные операционные устройства с переменной
разрядностью в знакоразрядных системах счисления
Одним из путей повышения производительности является конвейеризация вычислений. Однако необходимость ожидания заполнения конвейера при обратных связях и большое число соединительных шин при параллельных вычислениях серьезно сдерживает широкое внедрение конвейерных вычислителей. Переход на последовательные вычислители снижает все указанные недостатки, хотя и увеличивает время заполнения конвейера и время реакции системы. Чтобы уменьшить негативные последствия введения последовательной обработки, все вычисления ведут,
начиная со старших разрядов. В этом случае вычисления и другие действия можно начинать сразу после получения первого разряда. Однако обычные позиционные системы счисления не позволяют реализовать операции со старших разрядов из-за пробега переноса, возникающего в младшем разряде и в худшем случае достигающего самого старшего. Выполнение операций со старших разрядов допускают знакоразрядные системы, которые будут рассмотрены ниже.
3.5.1. Представления чисел в знакоразрядных системах
Указанные системы счисления содержат в разряде и цифру, и знак,
присвоенный цифре. Строятся они по следующему правилу. Все множество цифр разбивается на две приблизительно равные части. Младшая часть сохраняется без изменения со знаком "+". Цифры старшей части суть – дополнения их до основания системы счисления со знаком минус. Например,
для системы счисления с основанием r имеем A = {0, 1, ...,r – 1}.
В знакоразрядной системе
SA = {–]r/2[, –(r/2–1), ..., –1, 0, 1, 2, ...,]r/2–1[},
где знак ][ – целое меньшее.
При r = 5 получаем A = {0, 1, 2, 3, 4}, SA = {–2, –1, 0, 1, 2}.
При r = 6 получаем A = {0, 1, 2, 3, 4, 5},
165

SA = {–3, –2, –1, 0, 1, 2} .
При r = 7 получаем A = {0, 1, 2, 3, 4, 5, 6 }, SA = {–3, –2, –1, 0, 1, 2, 3}.
Для r = 2 A = {0, 1}, SA = {–1, 1}.
Отсутствие нуля ведет к некоторым проблемам. В частности, нельзя в
конечной форме представить нуль (–1 1 –1 1 ... –1 1) и, следовательно, нельзя
по виду числа сказать: четное оно или нечетное, в связи с чем используют двоичную знакоразрядную систему с нулем.
При r = 2 SA = {–1, 0, 1}. Так как цифр здесь больше чем основание r, то такая система носит название “избыточной”. Остановимся более подробно на знакоразрядных избыточных системах счисления, так как избыточность позволяет строить арифметические сумматоры с ограниченным пробегом переноса. В данной работе основное внимание уделяется двоичной
знакоразрядной системе счисления (ДИЗСС).
3.5.2. Преобразование двоичных чисел в избыточную систему счисления,
начиная с младших разрядов
Преобразование двоичных чисел логично вести, начиная со старших или младших разрядов. Вначале рассмотрим преобразования, начиная с младших
разрядов. |
|
|
Введем обозначения +1 = 1, – 1 = |
1 |
и, кроме того, введем |
дополнительный разряд, где будем записывать предыдущее состояние разрядов чисел: 1 – говорит о том, что данному разряду предшествовал массив единиц, 0
– говорит о том, что текущему разряду предшествовал массив нулей.
Преобразование ведется анализируя два разряда числа: текущий (i) и
следующий старший (i+1). При этом могут встретиться восемь комбинаций,
которые приведены в левой части табл. 3.2.
166

№ |
Исходные |
|
||
|
разряды |
|
|
|
|
|
|
|
|
|
i + 1 |
|
i |
Всп. i |
1 |
0 |
|
0 |
0 |
2 |
0 |
|
1 |
0 |
3 |
1 |
|
0 |
0 |
4 |
1 |
|
1 |
0 |
5 |
0 |
|
0 |
1 |
6 |
0 |
|
1 |
1 |
7 |
1 |
|
0 |
1 |
8 |
1 |
|
1 |
1 |
|
|
|
|
|
Таблица. 3.2
Преобразованные разряды
|
i |
Всп. i+1 |
||
0 |
0 |
|||
1 |
0 |
|||
0 |
0 |
|||
|
|
|
1 |
|
1 |
|
|||
1 |
0 |
|||
0 |
1 |
|||
1 |
|
1 |
||
0 |
1 |
|||
|
|
|
|
Рассмотрим все случаи (значения текущего преобразованного разряда и соответственно вспомогательного даны в табл. 3.2).
1.Был массив нулей и он продолжается.
2.Был массив нулей, встретилась единица и далее массив нулей.
3.Был массив нулей и он еще не закончен, но близок к завершению.
4.Массив нулей завершился и начался массив единиц.
Рассмотрим этот случай более подробно. Пусть массив состоит из 4-х единиц. Тогда 1 1 1 1 = 1 0 0 0 0 – 0 0 0 0 1 = 24 – 20 = 1 0 0 0 1 .
5.Был массив единиц и он закончился.
6.Был массив единиц и он еще продолжается.
7.Был массив единиц, он закончился, начался новый массив единиц, т.е. имеем два массива единиц, разделенных нулем. Последовательность действий рассмотрим на примере. Вначале преобразуется младший массив
11 1 0 1 1 1 → 0 1 1 1 1 0 0 1.
Затем преобразуется старший массив
0 1 1 1 1 0 0 1→ 1 0 0 0 1 0 0 1 .
167

Таким образом, при преобразовании на месте нуля, разделяющего два массива, ставится минус единица.
8. Был массив единиц и он продолжается.
В качестве примера преобразуем, используя табл. 3.2, заданные числа.
Пример 3.6.
Перевести число, заданное в дополнительном коде, в двоично-
избыточную систему счисления (ДЗСС).
|
x14 x13 x12 x11 x10 x9 x8 |
x7 x6 |
x5 x4 |
x3 x2 |
x1 x0 |
|||
x = 0. 0 1 1 0 1 1 0 0 1 1 1 0 1 0 1 |
||||||||
b |
b14 b13 b12 b11 b10 b9 b8 |
b7 b6 |
b5 |
b4 |
b3 b2 |
b1 b0 |
||
x |
x14 x13 x12 x11 x10 |
x9 x8 |
x7 x6 |
x5 |
x4 |
x3 x2 |
x1 x0 |
|
xДОП 0 1 1 0 1 |
1 0 |
0 1 |
1 |
1 |
0 |
1 |
0 1 |
y = 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
xДЗСС
1. Определяем значения нулевого разряда y0.
Строим строку входных значений для табл. 3.2. Начальное значение b0
в дополнительном коде всегда равно 0.
x |
x |
0 |
b |
0 |
|
1 |
|
|
|
||
1 |
0 |
0 |
Итак, в табл. 2.3 находим соответствующую строку. Откуда |
||
|
|
|
|
|
получаем новое значение b1 = 0 и значение разряда числа y0 = 1.
2. |
Определяем значение следующего разряда. И далее аналогично. |
||||
|
x2 |
x1 |
b1 |
|
|
|
1 |
0 |
0 |
x1 = 0, |
b2 = 0. |
|
|
|
b2 |
|
|
3. |
0 |
1 |
0 |
x2 = 1, |
b3 = 0. |
|
|
|
|
|
|
|
|
|
|
168 |
|


x = – 0. 1 0 1 0 1 1 0 1 0 0 1 0 0 1.
Затем преобразуется в избыточный знакоразрядный код модуль числа и для полученного окончательного результата ему присваивается знак минус.
Для этого в знакоразрядном коде знаки у единицы меняются на противоположные.
1. Преобразование по второму типу:
1 |
1 |
|
1 |
|
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
||||
| x | = |
0. |
1 |
0 |
|
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. |
0 |
1 |
|
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
Здесь скобками отмечены анализируемые разряды, а значения вспомогательного бита указаны над скобками. Далее меняем знаки у единиц на
противоположные, окончательно получаем:
xДЗСС = |
|
. 0 1 0 1 0 1 0 1 0 0 1 0 0 1. |
1 |
2. Преобразование по первому типу, т. е. без преобразования
дополнительного кода числа в прямой.
При преобразовании дополнительного кода предполагается, что знаковый разряд продолжается влево до бесконечности, т. е. 1, 0… = … 11111.0. Поэтому знак может быть представлен как 0…0 1.0. Таким образом,
преобразованное число будет иметь вид
xДЗСС = 1. 0 1 0 1 0 1 0 1 0 0 1 0 0 1.
Нетрудно убедиться, что оно совпадет с предыдущим результатом. Здесь имеет место переполнение и для получения окончательного результата число
масштабируется (сдвигается влево на один разряд).
yДЗСС =1/2 xДЗСС = .1 0 1 0 1 0 1 0 1 0 0 1 0 0.
Для синтеза схемы преобразователя построим таблицу истинности и
получим логические функции для переменных |
x , |
x , |
b |
, используя карты |
|
i |
i |
i |
|
Карно. |
|
|
|
|
170