www.chms.ru - вывоз мусора в Балашихе 

Динамо-машины  Обратные коды 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 [ 101 ] 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189

обращения кода, ts - время суммирования); если полагать, что эти операции равновероятны, то среднее время

выполнения сложения-вычитания равно + те. В по

следовательном устройстве сложение или вычитание в дополнительных кодах в любом случае можно выполнить за время одного периода числа. Нетрудно проверить, что приведенный алгоритм сложения-вычитания без каких-либо изменений пригоден и в тех случаях, когда дополнительный код строится по второму варианту (см. 1.4.2).

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

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

3.1.4. Об использовании добавочных сумматоров. До

сих пор, рассматривая методы выполнения алгебраического сложения-вычитания, мы рассчитывали на тот примерно объем оборудования арифметических цепей, который показан на рис. 3-1. Между тем иногда незначительное увеличение общего объема оборудования может очень существенно повлиять на скорость выполнения операции.

Предположим, например, что в схему последовательного устройства рис. 3-1, б (стр. 294) введен дополнительно еще один полусумматор с линией задержки на 1 такт. Включение добавочного полусумматора в схему показано сокращенно (без вспомогательных элементов) на рис. 3-3. Как мы сейчас увидим, также незначительное усовершен-

*) Последнее не означает, что можно не заботиться о скорости выполнения элементарного суммирования: элементарное суммирование приходится многократно производить в процессе выполнения умножения и деления.



ствование позволит вдвое сократить максимальное время выполнения сложения-вычитания в прямых кодах; фактически оно уравнивает длительность сложения-вычитания в прямых кодах с длительностью сложения-вычитания в дополнительных кодах.

Выполнение сложения-вычитания в схеме рис. 3-3 идет в общем по основному алгоритму (стр. 291). Отклонение состоит в том, что при вычитании одновременно с выполнением основного суммирования (п. (в)) на добавочный полусумматор подается обратный код получающегося результата. Добавочный полусумматор складывает его с единицей младшего разряда, т. е. вычисляет дополнительный код от результата суммирования. Результат суммирования

* Регистршиния задержки) В

Регистр(ття задержии) С


Вт (от схемы

Рис. 3-3. Построение арифметических цепей для выполнения сложения-вычитания (последовательный вариант) с включением дополнительного полусумматора. (Вспомогательные элементы и большинство связей со схемой управления не показаны - ср. с рис. 3-1, б на стр. 294.)

передается по-прежнему в регистр В (с выхода основного сумматора), а дополнение от него одновременно записывается в регистр С (с выхода добавочного полусумматора). Таким образом, попутно с выполнением п. (в) мы на всякий случай выполняем также пп. (г) и (д). К концу суммирования выясняется, действительно ли нужно было выполнять пп. (г) и (д). Если это так (если в последнем такте суммирования на выходе основного сумматора не получился



сигнал переноса Ej), то окончательный результат операции прочтем из регистра С. Если в последнем такте суммирования на выходе переноса основного сумматора получили

= 1, то окончательный результат операции нужно прочесть из регистра В. Таким образом, сложение или вычитание в прямых кодах в устройстве рис. 3-3 выполняется всегда в течение одного периода числа.

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

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

8.2. Сложение и вычитание с плавающей запятой

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

В соответствии с 1.5.2 при представлении чисел с плавающей запятой имеем

Р = 2 laquo;Б,

где Ь и с - целые числа (они называются порядками), а В и С удовлетворяют условию

1 gt;С gt;V2;

.величины В а С называются мантиссами чисел и у. Выполнение последних неравенств указывает на то, что числа нормализованы; иногда допускается наряду с нормализованными числами запись нуля в ненормализованной форме-с мантиссой, равной нулю. Если применяются только нормализованные числа, то старший разряд мантиссы



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 [ 101 ] 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189