
книги из ГПНТБ / Дроздов Е.А. Многопрограммные цифровые вычислительные машины
.pdfРассмотрим пример выполнения операции умножения при рас шифровке пар разрядов множителя. При этом имеем в виду, что поскольку множимое может передаваться в сумматор со сдвигом на один разряд влево, то в такой схеме умножения сумматор дол жен иметь два старших дополнительных разряда (а не один, как в схеме рис. 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
может отсутствовать, так как перенос из старшего знакового раз ряда в этом случае не учитывается.
Время, необходимое для выполнения операции умножения при расшифровке пар разрядов множителя и запоминании переносов в случае совмещения тактов сдвига и суммирования, рассчитывает ся по формуле
Ty= - Y |
T„e + T z, |
(8.7) |
где Тпо—.время поразрядного сложения по модулю два. |
||
При /г= 36, 7'пс= 1,5 мксек и |
Tz =3 мксек |
Ту= 30 мксек, |
Мн
Рис. 8.8. Схема выполнения операции умножения при расшифровке шести разрядов множителя
Схема выполнения операции умножения при запоминании пе реносов может быть построена и при одновременной расшифровке нескольких пар разрядов множителя. Такие схемы обычно исполь зуются при одновременной расшифровке четырех или шести раз рядов множителя. Вариант схемы выполнения операции умноже ния при одновременной расшифровке шести разрядов множителя с запоминанием переносов приведен на рис. 8 .8 . В состав схемы входят: четыре регистра, четыре сумматора, схема расшифровки групп разрядов множителя СхР и формирователи-сдвигатели.
В регистре Рг1 размещается множимое Мн, в регистре Рг2 — множитель Мт, в РгПС — поразрядные суммы и в РгП — коды переносов; регистры Рг2, РгПС и РгП имеют цепи сдвига на шесть разрядов вправо. Сумматоры См1, См2 и См3 выполнены по схе мам обычных комбинационных сумматоров с разделением цепей суммы 5 и переносов Р; они аналогичны сумматору, используе
265
мому в схеме рис. 8.7. Сумматор См4 является обычным много разрядным сумматором параллельного действия.
Формирователи-сдвигатели представляют собой группы логи ческих элементов И, формирующие три частичные произведения в соответствии с управляющими сигналами, получаемыми из СхР при расшифровке очередной тройки пар разрядов множителя. Ина че говоря, каждое формируемое частичное произведение соответ ствует одной из пар расшифровываемых разрядов; процесс фор мирования частичных произведений осуществляется так же, как и в схеме рис. 8.7. Взаимный сдвиг частичных произведений обес печивается за счет соответствующей коммутации выходов элемен тов И с входами См1. При расшифровке каждой группы разря дов множителя все три частичные произведения формируются од новременно.
Сложение вновь сформированных частичных произведений с об разованием значений поразрядной суммы 5] и кодов переносов Pi производится на сумматоре См1. Полученные значения и Рi складываются со сдвинутыми кодами переносов, полученными на предыдущем шаге умножения и находящимися в РгП, на сумма торе См2 с получением поразрядной суммы S2 и кодов перено сов Р2. Далее значения S2 и Р2 складываются со сдвинутой ито говой поразрядной суммой, полученной на предыдущем шаге умножения и находящейся в РгПС, на сумматоре См3 с получением итоговой поразрядной суммы данного шага умножения 53 и кодов переносов Я3. Значения 53 и Р3 вводятся вместо предыдущих зна чений итоговой поразрядной суммы и переносов в регистры РгПС и РгП соответственно.
Поразрядная сумма и коды переносов, полученные на послед нем шаге умножения, складываются на сумматоре См4. В резуль тате этого сложения формируется код полного произведения. Если необходимо сохранить младшие разряды произведения, то в схему вводится дополнительный шестиразрядный сумматор См, показан ный на схеме рис. 8.8 пунктиром. На этом сумматоре складыва ются младшие разряды кодов, находящихся в РгПС и РгП, до их сдвига вправо. Полученная группа младших разрядов полного произведения направляется в освобождающиеся при сдвиге мно жителя разряды регистра Рг2.
При одновременной расшифровке двух пар разрядов множи теля схема рис. 8.8 упрощается за счет исключения одного сумма тора, уменьшения состава формирователей-сдвигателей и СхР. Цепи сдвига в регистрах в этом случае выполняются для осуще ствления сдвига кодов на четыре разряда вправо.
§ 8.4. Построение и функционирование арифметических устройств машин с фиксированной запятой
Арифметические устройства универсального типа строятся в за висимости от общих принципов построения машин, принятых алго ритмов выполнения отдельных операций, системы элементов, адрес
266
I
ности машины и других факторов. Поэтому они несколько отлича ются для различных машин. Для пояснения принципов формиро вания АУ и последовательности выполнения в нем отдельных опе раций ниже рассматривается структура АУ применительно к машине с фиксированной запятой, параллельного действия, в кото рой при сложении и вычитании используется обратный код, деле ние выполняется по алгоритму без восстановления остатка, а умно жение— по алгоритму с расшифровкой пар разрядов множителя.
Структурная схема АУ для рассматриваемого случая приве дена на рис. 8.9. Па ней показаны лишь основные узлы, цепи и элементы, принимающие участие в выполнении арифметических и некоторых логических операций. Основу АУ составляют два триг герных регистра параллельного действия и накапливающий сум матор с цепями сквозного переноса; регистры и сумматор имеют по п основных цифровых разрядов. Регистр Рг1 не имеет цепей сдвига и служит для приема чисел при сложении и вычитании, а также размещения множимого при умножении и делителя при делении. Этот регистр имеет знаковый разряд, причем знаки чисел пода ются на счетный вход ТгЗн, что обеспечивает образование знака произведения и частного путем сложения по модулю два кодов знаков исходных чисел. Для изменения знака вычитаемого на счет ный вход ТгЗн из схемы управления подается сигнал, эквивалент ный коду единицы.
Сумматор рассчитан на действия с д-разрядными числами в об ратном коде. Он имеет кроме п основных цифровых разрядов три знаковых разряда и один дополнительный цифровой разряд, обес печивающий округление /г-разрядного произведения. Цепь цикли ческого переноса связывает триггер старшего знакового разряда с младшим из основных цифровых и дополнительным разрядом. Сумматор имеет цепи сдвигов: вправо на один разряд (использу ются для сдвигов кодов при операциях арифметического или логи
ческого сдвига), вправо на два |
разряда (используются при умно |
жении) и на один разряд влево |
(используются при делении и сдви |
гах). С регистром Рг 1 сумматор |
связан тремя группами вентилей: |
В2 — передает содержимое Рг1 на сумматор прямым кодом без сдвигов; В3 — передает содержимое Рг1 прямым кодом с постоян* ным сдвигом на один разряд влево; В4— передает содержимое Рг1 обратным кодом без сдвигов.
Регистр Рг2 имеет только п цифровых разрядов. Он служит для размещения множителя и цифр частного и имеет цепи сдвигов на два разряда вправо и на один разряд влево. Два его младших разряда соединены со схемой управления для передачи пар раз рядов множителя. Прием чисел на Рг2 осуществляется через вен тили В8, а выдача — через вентили В7.
Обмен числами между АУ и другими устройствами машины осуществляется через кодовые шины чисел, передающие парал лельные коды. Прием и выдача знаков чисел осуществляются, как правило, отдельно от мантисс. Так, прием мантисс чисел на Рг1 происходит через группу вентилей Bj, а прием их знаков — через
26А
вентиль BJ, управляемый по отдельной цепи. Знак произведения (частного) выдается через вентиль B2t,! а знак суммы (разности) — через вентиль В3. Выдача мантиссы суммы, разности или произ
ведения осуществляется через вентили группы В5 или В6. Вен тиль В3 служит для образования цифр частного. Кроме вентилей
групп В5 и Вб с цифровыми разрядами сумматора связана схема анализа на нуль СхАн«0», обеспечивающая выявление случаев, когда триггеры всех этих разрядов находятся в состоянии нуля. Такой анализ необходим в случае выполнения операции сравнения путем поразрядного сложения по модулю два.
Выполнение операций происходит в соответствии с указанными выше алгоритмами: сложение и вычитание выполняются при ис пользовании обратного кода, умножение производится при рас шифровке пар разрядов множителя, а деление — по алгоритму без восстановления остатка.
Сложение. К началу этой операции, как и к началу других опе раций, триггеры регистров и сумматора приводятся в состояние нуля подачей сигналов У«0». Первое число вместе со знаком вво дится в регистр Рг1 путем подачи на В[ и В' управляющих им
пульсов УИ] и УИ2 соответственно. Одновременно подается им пульс УИ4 для передачи знака числа в схему управления. Это необходимо для выработки сигнала, обеспечивающего передачу чис ла на сумматор. Если знак <■: + », то вырабатывается импульс УИ7, обеспечивающий передачу прямым кодом, если же знак «—», то вырабатываются импульсы УИб и УИд, обеспечивающие фиксацию в сумматоре модифицированного обратного кода числа, находя щегося в Рг1. После передачи первого числа на сумматор осуще ствляется сброс на нуль всех триггеров регистра Рг 1. Далее в ре гистр Рг1 и потом в сумматор вводится аналогично первому числу второе. После завершения переходных процессов в сумматоре уста навливается значение суммы. По состоянию ТгЗнЗ и ТгЗн1 в схеме управления фиксируется значение признака <р, а по состоянию ТгЗнЗ — признака со. Для выдачи суммы в кодовые шины чисел по даются импульсы УИ12 (или УИ[3) и УИ„ (обеспечивает выдачу
знака).
Вычитание. Эта операция выполняется в той же последова тельности, что и сложение. Дополнительным действием является изменение знака второго числа (вычитаемого), для чего после вво да этого числа в регистр Рг1 на счетный вход ТгЗн подается упра вляющий импульс УИ3.
Умножение. Эта операция при представлении исходных чисел прямыми кодами выполняется в следующем порядке. Сначала при действии УИ1 и УИг первое число (множимое) вместе с его зна ком принимается на регистр Рг 1. Далее одновременно вырабаты ваются УИ2 и УИ16, благодаря чему знак второго числа (множи теля) подается на счетный вход ТгЗн регистра РгI, а мантисса множителя — в регистр Рг2. Таким образом, в самом начале опе рации знак произведения фиксируется в ТгЗн регистра Рг1.
268 .
Мантисса числа
Схема управления
Рис. 8,9. Схема АУ универсального типа машины с фиксированной запятой
269