Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
42
Добавлен:
12.02.2015
Размер:
3.47 Mб
Скачать
  1. Схемы сложения

В этом разделе будут рассмотрены 3 схемы сложения n-битных двоичных чисел.

Каскадное сложение (ripple-carryaddition) позволяет сложить дваn- значных числа за времяcпомощью схемы размера. Время можно уменьшить до, используя сложение с предвычислением переносов (carry-lookaheadaddition), причем соответствующая схема также имеет размер. Рассматривается также схема с запоминанием переносов (carry-saveaddition), которая за времяO(1) сводит сложение 3-хn- разрядных чисел к сложениюn-разрядного и (n+1) – разрядного чисел. Схема также имеет размер.

    1. Каскадное сложение

Неотрицательное целое число aзаписывается в двоичной системе как последовательностьn– битов (,…,), причеми

(8)

При сложении по двум n– значным числам,…,) истроится (n+1) – значное число,…,), равное их сумме.

При сложении столбиком (справа налево) мы складываем в i-м разряде,и входной бит переноса(carry–inbit). Младший разряд суммы записывается вi– тый разряд ответа () , а старший становится выходным битом переноса (carry–outbit)и используется при сложении в следующем разряде.

В младший разряд ничего не переносится, поэтому . Последний перенос становится старшим разрядом суммы. Поскольку=parity(), а=majority() для каждого шага может быть использован описанный выше сумматор.

Таким образом n– разрядный каскадный сумматор состоит из последовательно соединенных простых сумматоров, так что выходсумматораявляется входом для. На входефиксировано значение 0, не зависящее от входов.

Поскольку бит переноса проходит через все сумматоры, глубина каскадного сумматора равна n(а глубина элементаравнаi+ 1). Поэтому время работы составляет.

    1. Сложение с предвычислением переносов

В каскадном сумматоре бит переноса вычисляется в момент времениi. Значенияизвестны с самого начала. В некоторых случаях они определяют бит переноса:

если то(перенос «поглощается» (kill));

если то(перенос «порождается» (generate)).

Однако если один из битов равен 1, а другой 0, тоимеет значение, а именно

Если то(перенос «распространяется» (propagate);

Каждому разряду, следовательно, соответствует один из трех типов переноса (carrystatuses):k(kill),g(generate) илиp(propagate). Тип переноса известнее заранее, что позволяет уменьшить время работы схемы сложения.

Зная тип переноса для соседних сумматоров ((i-1)- го иi-го), можно определить тип переноса для их соединения, считаявходным битом, а- выходным: зная, как изменяется бит переноса на каждом шаге, можно рассчитать, что произойдет за два шага, то есть как зависитот. Еслиi– й разряд имеет тип переносаp, то тип переноса для соединения совпадает с типом (i-1)- го разряда

Ξ

k

p

g

k

k

k

g

p

k

p

g

g

k

k

g

Рис. 9 Таблица операции Ξ

Таблицу на рис. 9 можно рассматривать как определение операции (композиции типов переноса) на множестве {k,p,g}; она будет обозначаться символом Ξ. Эта операция ассоциативна.

Операция определяет тип переноса для некоторого участка числа, если известны типы переносов отдельных разрядов. Обозначим через тип переноса вi– том разряде:

Тогда зависимость, скажем бита отопределяется композицией.

Поскольку в нулевой разряд переноса от младших разрядов не поступает, условно положим . Тогда перенос на выходеi– го разряда определяется композицией:, если композиция равнаk, и, если композиция равнаg. (Значениеpдля композиции невозможно, поскольку для этого все члены должны быть равныp, а это не так для)

Представим формальную запись.

Положим и определим,…,в виде

.

(9)

Тогда ,…,являются префиксами (prefixes) выражения.

Таким образом, вычисление битов переноса сводится к вычислению префиксов. Оставшиеся действия выполняются за время Θ(1): достаточно подать биты переноса на входы сумматоров.

Соседние файлы в папке лабораторные