Матричный и конвейерный зеркально-симметричный сумматор

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

Рассмотрим матричный многоразрядный троичный зеркально-симметричный сумматор (Рис.1).

Матричный троичный зеркально-симметричный сумматор
Рисунок 1. Матричный троичный зеркально-симметричный сумматор.

Каждая ячейка матричного сумматора на Рис. 1 является троичным зеркально-симметричным одноразрядным полным сумматором, имеющий 4 входа и 2 выхода. Матричный сумматор на Рис. 1 состоит из 21 одноразрядных троичных сумматоров, расположенных в форме матрицы 7 ´ 3. Каждый троичный одноразрядный сумматор имеет обозначение , где число 4 означает, что сумматор имеет 4 троичных входа, нижний индекс i означает номер разряда в троичном зеркально-симметричном представлении, и верхний индекс k означает номер строки матричного сумматора на Рис. 1.

Входы одноразрядных сумматоров

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

Выходы промежуточной суммы одноразрядных сумматоров

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

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

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

A = 0 1 1 1, 1 1 0 and B = 0 1 1 1, 1 1 0.

Сложение состоит из двух этапов. Аппаратно каждый из этапов реализуется с помощью одной строки одноразрядных сумматоров на Рис.1 и состоит из двух шагов.

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

Следовательно, первый шаг состоит в формирование промежуточных сумм и переносов на выходах одноразрядных сумматоров первой строки с четными нижними индексами (2, 0, -2).

На втором шаге одноразрядные сумматоры с нечетными нижними индексами (3, 1, -1, -3) вступают в действие. C учетом переносов, поступивших от соседних одноразрядных сумматоров той же самой строки, они формируются промежуточные суммы и переносы, поступающие на соответствующие входы одноразрядных сумматоров нижней строки, то есть

Первый этап закончен. Мы можем видеть, что формирование некоторых промежуточных сумм и переносов, поступивших на входы сумматоров нижнего ряда, является результатом первого этапа. Эти промежуточные суммы и переносы содержат в себе полную информацию относительно суммируемых чисел.

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

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

Конвейерный зеркально-симметричный сумматор. Существует два пути для расширения функциональных возможностей матричного зеркально-симметричного сумматора на Рис. 1. Если мы установим троичные регистры памяти между соседними строками одноразрядных сумматоров, тогда вышерассмотренный матричный сумматор превращается в конвейерный зеркально-симметричный сумматор. Фактически кодовая информация от одноразрядных сумматоров предшествующей строки запоминается в троичных регистрах памяти, и сумматоры предшествующей строки становятся готовыми для дальнейшей обработки. Тогда сумматоры нижней строки начинают обрабатывать информацию, поступившую на их входы с предыдущей строки, и одновременно верхняя строка одноразрядных сумматоров начинает обрабатывать новую кодовую информацию. Это означает, что, начиная с данного момента, мы будем получать суммы чисел A1 + B1, A2 + B2, ..., An + Bn , поступающие на вход сумматора последовательно через интервал времени 2Dt, где Dt - время задержки одноразрядного сумматора.

Конвейерный зеркально-симметричный умножитель. Другая возможность расширения функциональных возможностей конвейерных сумматора состоит в следующем. Мы можем видеть из Рис. 1, что каждый одноразрядный сумматор нижних строк, кроме первой, имеет "свободный" вход. Мы можем использовать эти входы как новые троичные многоразрядные входы конвейерного сумматора. Используя эти многоразрядные входы, мы можем превратить конвейерный сумматор в конвейерный умножитель. В этом случае умножение двух зеркально-симметричных чисел A(1) ´ B(1) выполняется следующим образом. Первая строка одноразрядных сумматоров суммирует первые два частичные произведения . Промежуточный результат суммирования поступает на вторую строку одноразрядных сумматоров. Если теперь мы пошлем на "свободный" многоразрядный вход второй строки третье частичное произведение , мы получим сумму на выходах второй строки. Начиная с этого момента, первый ряд сумматоров начинает суммировать первые два частичных произведения следующей пары умножаемых чисел A(2) ´ B(2). "Свободный" мнонгоразрядный вход третьей строки сумматоров используется для получения следующего частичного произведения первой пары умножаемых чисел A(1) ´ B(1) и т.д. Мы можем видеть, что конвейерный сумматор на Рис. 1 позволяет осуществлять умножение многих зеркально-симметричных чисел в конвейерном режиме. При этом скорость конвейерного умножения определяется временем 2Dt, где Dt - время задержки одноразрядного сумматора. Итак, мы рассмотрели весьма необычное зеркально-симметричное арифметическое устройство, позволяющее выполнять в конвейерном режиме три важные арифметические операции: сложение, вычитание и умножение зеркально-симметричных чисел. Но если целые числа являются входной информацией зеркально-симметричного сумматора, в этом случае выходные данные сумматора всегда должны быть представлены в зеркально-симметричной форме. Это означает, что зеркально-симметричные числа позволяют контролировать все арифметические процессы в таком необычном сумматоре-умножителе.

Мы можем реализовать конвейерный зеркально-симметричный сумматор только в том случае, если мы будем использовать в нем троичные регистры памяти. Но что означает "троичный регистр"? Мы дадим ответ на этот вопрос на следующей странице нашего Музея. Следуйте за нами!