Файл: Дроздов Е.А. Многопрограммные цифровые вычислительные машины.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.04.2024
Просмотров: 324
Скачиваний: 0
Рассмотрим пример выполнения операции умножения при рас шифровке пар разрядов множителя. При этом имеем в виду, что поскольку множимое может передаваться в сумматор со сдвигом на один разряд влево, то в такой схеме умножения сумматор дол жен иметь два старших дополнительных разряда (а не один, как в схеме рис. 8.3); в качестве этих разрядов могут использоваться знаковые разряды сумматора, рассчитанного на сложение, напри мер, в модифицированном обратном коде. Кроме того, помним, что для округления результата используется один младший дополни тельный разряд, а при сдвигах вправо отрицательных чисел в их старшие разряды заносятся единицы (при представлении чисел в обратных или дополнительных кодах); для упрощения организации сдвигов в реальные схемы вводят третий знаковый разряд, в ко тором всегда сохраняется истинное значение знака.
Пусть множимое АГ=0,111101, а множитель 7=0,100011. Пара младших разрядов множителя есть 11, поэтому на первом шаге умножения множимое посылается в сумматор обратным кодом (практически модифицированным обратным кодом); с учетом еди ницы переноса из младшей пары вторая пара разрядов множителя принимает значение 01; старшая пара есть 10. Ниже приводится последовательность действий в сумматоре.
Исходное состояние: |
|
1 |
0 |
0 0 |
0 0 0 0 0 0 |
0 |
||
- * ( П ) : |
+ 1 1 1 1 |
0 0 0 0 1 0 1 |
||||||
|
|
|
1 |
1 1 |
0 0 0 0 1 0 |
1 |
||
Сдвиг вправо на два разряла: |
|
1 |
1 |
1 1 |
110 0 |
0 0 |
1 |
|
+ *(01): |
+ |
1 |
0 |
0 0 |
1 1 1 1 0 1 |
0 |
||
|
|
|
0 |
0 0 |
10 |
1 1 1 0 |
0 |
|
Сдвиг вправо на два разряда: |
|
I |
0 |
0 0 |
0 0 |
1 0 |
11 |
1 |
+ 2 * (10): |
+ |
1 |
0 |
0 1 |
1 1 1 0 |
10 |
0 |
|
|
|
|
0 |
1 0 |
0 0 0 1 0 1 |
1 |
||
Сдвиг вправо на два разряда : |
|
|
0 |
0 0 |
1 0 0 0 0 1 |
0 |
||
Округление : |
|
|
0 |
0 0 |
1 0 0 0 0 1 |
0 |
Результат выполнения |
операции |
Z = X Y = 0 ,100001; такое |
же произведение получается |
и при |
умножении по обычной |
схеме.
На практике нашел применение еще один аппаратно-логиче ский метод ускорения выполнения операции умножения, назван ный методом умножения с расшифровкой пар разрядов множителя и запоминанием переносов. Этот метод целесообразно применять при использовании в составе АУ комбинационного сумматора па раллельного действия в сочетании с регистрами, например, схемы, аналогичной приведенной на рис. 8.2. Для его реализации в состав
260
АУ достаточно ввести дополнительный регистр для хранения и сдвигов переносов.
Идея использования принципа запоминания переносов при вы полнении сложений в ходе реализации операции умножения заклю чается в следующем. На каждом шаге выполнения операции умно жения производится не полное сложение, а сложение в каждом разряде по модулю два и образование поразрядных переносов, значения которых фиксируются в отдельном регистре. Таким об разом, в процессе умножения образуются не полные суммы частичных произведений, а поразрядные суммы частичных произве дений и значения соответствующих переносов, коды которых со ставляют как бы третье слагаемое на очередном шаге умножения. Поразрядное сложение по модулю два всегда выполняется за вре мя, меньшее времени, необходимого для образования полной сум мы, так как из последнего исключается время распространения пе реносов. Это и позволяет существенно уменьшить общее время, необходимое для выполнения операции умножения.
Необходимо отметить, что при выполнении операции умноже ния по схеме с запоминанием переносов требуется проводить на заключительном этапе полное сложение последней поразрядной суммы частичных произведений с кодами переносов, полученными при последнем поразрядном сложении. Это следует учитывать при определении времени, необходимого для выполнения операции умножения.
Алгоритм выполнения операции умножения при запоминании переносов рассмотрим сначала для случая расшифровки одиноч ных разрядов множителя, т. е. применительно к обычной (первой) схеме выполнения операции умножения. На первом шаге умноже ния образуется и фиксируется первое частичное произведение; да лее оно сдвигается на один разряд вправо; естественно, что на первом шаге коды переносов равны нулю. На втором шаге обра зуется второе частичное произведение, которое поразрядно скла дывается с первым при образовании и фиксации кодов переносов; полученная поразрядная сумма и коды переносов сдвигаются вправо на один разряд. На третьем шаге образуется третье ча стичное произведение, которое поразрядно складывается с пораз рядной суммой первых двух частичных произведений и кодами пе реносов при образовании и фиксации очередных кодов переносов и т. д. На заключительном, (/г+1)-м шаге, производится полное сложение последней поразрядной суммы частичных произведений с кодами переносов, полученными на п-м шаге. Результат дейст
вия на заключительном шаге (этапе) — полное произведение, |
ко |
|||||
торое может округляться до значения |
п |
старших разрядов |
по |
|||
обычным правилам. |
чисел |
А=0,110111 и |
Y= |
|||
Рассмотрим |
пример перемножения |
|||||
= 0,101111 |
по |
алгоритму с запоминанием |
переносов. В левой |
ко |
||
лонке цифр |
будем указывать значения |
сумм, |
а в правой — значе |
ния переносов. Как и ранее, вертикальными линиями будем отде лять дополнительные разряды от основных.
261
|
|
Суммы |
|
Переносы |
Исходное состояние: |
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 |
110 1 1 1 |
0 |
|
|
0 |
0 0 0 0 0 0 |
0 |
|
Сдвиг |
' |
|
|
У2 — 1 : ® ' |
|
0 |
110 |
1 1 1 |
0 |
0 |
0 0 0 0 0 0 |
0 |
|
0 |
0 1 1 0 |
11 |
1 |
0 |
0 0 0 0 0 0 |
0 |
|
0 |
110 |
1 1 1 |
0 |
|
|
|
|
0 |
0 0 0 0 0 0 |
0 |
|
|
|
Сдвиг: |
|
( |
0 |
1 0 1 1 0 0 |
1 |
0 |
1 0 0 1 1 0 |
0 |
|||||
|
0 |
0 1 0 |
1 1 0 |
0- |
0 |
0 1 0 0 |
11 |
0 |
|||||
Уз = 1 : |
© |
| |
0 |
110 |
1 1 1 |
0 |
|
|
|
|
|
||
|
|
1 |
0 |
0 1 0 |
0 |
11 |
0 |
|
|
|
|
|
|
Сдвиг: |
|
|
0 |
110 0 |
1 0 |
0 |
0 |
10 1 1 1 0 |
0 |
||||
|
|
0 |
0 1 1 0 |
0 |
1 |
0 |
0 |
0 1 0 1 1 1 |
0 |
||||
У* = 1 : |
® |
|
0 |
110 1 1 1 |
0 |
|
|
|
|
|
|||
|
|
|
0 |
0 1 0 |
1 1 1 |
0 |
|
|
|
|
|
||
Сдвиг: |
|
|
0 |
1 1 1 0 |
0 |
1 |
0 |
0 |
10 1 1 1 0 |
0 |
|||
|
|
0 |
0 1 1 1 0 |
0 |
1 |
0 |
0 1 0 1 1 1 |
0 |
|||||
Уз = 0 : ® |
|
0 |
0 0 0 0 0 0 |
0 |
|
|
|
|
|
||||
|
|
|
0 |
0 10 |
1 1 1 |
0 |
|
|
|
|
|
||
Сдвиг: |
|
|
0 |
0 0 1 0 1 1 |
1 |
0 |
10 |
1 0 |
0 0 |
0 |
|||
|
|
0 |
0 0 0 1 0 1 |
1 |
0 |
0 1 0 1 0 0 |
0 |
||||||
У6 = 1: |
© |
■ |
0 |
110 1 1 1 |
0 |
|
|
|
|
|
|||
|
|
|
0 |
0 1 0 |
1 0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
0 |
10 0 1 1 0 |
1 |
0 |
10 1 0 |
1 0 |
0 |
||||
Сдвиг: |
|
|
0 |
0 1 0 |
0 11 |
0 |
0 |
0 1 0 1 0 1 |
0 |
||||
|
|
( |
0 |
0 1 0 |
0 |
11 |
0 |
|
|
|
|
|
|
Полное сложение: |
-f |
< |
0 |
0 1 0 |
1 0 |
1 |
0 |
|
|
|
|
|
|
|
|
|
0 |
10 1 0 |
0 0 |
0 |
|
|
|
|
|
||
Z = X Y =0,101000 |
|
|
|
|
|
|
|
|
|
|
|
|
|
262
Схема выполнения операции умножения по рассмотренному алгоритму приведена на рис. 8.7. Она отличается от схемы рис. 8.3 тем, что в ней используется комбинационный сумматор См в соче тании с регистром суммы РгСм и дополнительный регистр перено сов РгП. Комбинационный сумматор построен так, что части ОС-3, предназначенные для образования значений суммы и переносов, полностью автономны (например, так, как это сделано в схеме рис. 8.2). Это позволяет производить как поразрядное сложение кодов с образованием переносов, так и полное сложение кодов. Значения' разрядов поразрядных сумм S,- фиксируются в РгСм, а коды переносов Р* — в РгП. Регистр переносов имеет цепи пере-
Ввод множителя Y
От УУ
В УУ
ЗнакК.
Знак Y
Рис. 8.7. Схема выполнения операции умножения с запоминанием переносов
дачи кодов на сумматор и в регистр Рг1. На схеме рис. 8.7 пока зана только одна группа вентилей В для образования частичных произведений и передачи последней группы переносов с Рг1 в сум матор на заключительном шаге выполнения операции умножения. В практические схемы могут включаться и другие группы вен тилей, что зависит от принимаемых конкретных принципов по строения узлов АУ.
Выполнение операции умножения при расшифровке пар разря дов множителя с запоминанием переносов производится по схеме, близкой к схеме рис. 8.7. Необходимо только обеспечить сдвиг ко дов в РгСм, РгП и Рг2 сразу на два разряда вправо и ввести до полнительно две группы вентилей: одну для передачи множимощ на сумматор с постоянным сдвигом влево на один разряд (при расшифровке пары 10), а вторую — для передачи множимого на сумматор обратным или дополнительным кодом (при расшифров ке пары 11),
263
Общие принципы выполнения операции умножения при рас шифровке пар разрядов множителя и запоминании переносов с ис пользованием модифицированного дополнительного кода поясня ются на примере перемножения чисел ^ = 0,111101 и У = 0 ,100011. Запись действий, проводимых в процессе умножения, выполним по аналогии с примерами, приведенными выше. При этом следует иметь в виду, что использование дополнительного кода предпочти тельнее, так как циклический перенос при обратном коде на по следнем шаге умножения может вызвать дополнительную ошибку, равную половине значения единицы младшего из сохраняемых разрядов произведения (из-за потери при сдвигах того младшего разряда, в который должен был осуществляться циклический пе ренос при выполнении на каждом шаге полных сложений).
Суммы |
Перекосы |
Z = X Y = 0,100001.
Рассмотренный пример показывает необходимость использова ния в схеме умножения сумматора и регистра переносов с допол нительными старшими разрядами; младший дополнительный раз ряд в регистре переносов при применении дополнительных кодов
264