Дерево Уоллеса


Из Википедии, бесплатной энциклопедии
  (Перенаправлено с множителя Уоллеса )
Перейти к навигации Перейти к поиску
4-х слойная редукция Уоллеса матрицы частичных произведений 8x8 с использованием 14 полусумматоров (две точки) и 38 полных сумматоров (три точки). Точки в каждом столбце - биты одинакового веса.

Уоллес мультипликатор является аппаратной реализацией двоичного умножителя , цифровая схема , которая умножает два целых числа. Он использует набор полных и половинных сумматоров ( дерево Уоллеса или редукция Уоллеса ) для поэтапного суммирования частичных произведений, пока не останется два числа. Множители Уоллеса уменьшают максимально возможное количество на каждом слое, тогда как множители Дадда стараются минимизировать необходимое количество ворот, откладывая сокращение до верхних уровней. [1]

Множители Уоллеса были изобретены австралийским компьютерным ученым Крисом Уоллесом в 1964 году [2].

Дерево Уоллеса состоит из трех ступеней:

  1. Умножьте каждый бит одного аргумента на каждый бит другого.
  2. Уменьшите количество частичных продуктов до двух с помощью слоев полных и половинных сумматоров .
  3. Сгруппируйте провода по два числа и сложите их обычным сумматором. [3]

По сравнению с наивным добавлением частичных продуктов с помощью обычных сумматоров, преимуществом дерева Уоллеса является его более высокая скорость. У него есть понижающие слои, но каждый слой имеет только задержку распространения. Наивное добавление частичных продуктов потребует времени. Поскольку создание частичных произведений есть и окончательное сложение , общее умножение не намного медленнее, чем сложение. С точки зрения теории сложности алгоритм дерева Уоллеса помещает умножение в класс NC 1 . Обратной стороной дерева Уоллеса по сравнению с наивным добавлением частичных продуктов является гораздо большее количество ворот.

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

Дерево Уоллеса также может быть представлено деревом сумматоров 3/2 или 4/2.

Иногда его комбинируют с кодировкой Бута . [4] [5]

Детальное объяснение

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

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

На втором этапе полученные биты сокращаются до двух чисел; это выполняется следующим образом: пока есть три или более проводов с одинаковым весом, добавьте следующий слой: -

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

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

Пример

, умножение на :

  1. Сначала мы умножаем каждый бит на каждый бит:
    • вес 1 -
    • вес 2 - ,
    • вес 4 - , ,
    • вес 8 - , , ,
    • вес 16 - , ,
    • вес 32 - ,
    • вес 64 -
  2. Редукционный слой 1:
    • Пропустить единственный провод веса-1, на выходе: 1 провод веса-1
    • Добавьте полусумматор для веса 2, выходы: 1 вес-2 провод, 1 вес-4 провод
    • Добавьте полный сумматор для веса 4, выходы: 1 провод веса-4, 1 провод веса-8
    • Добавьте полный сумматор для веса 8 и пропустите оставшийся провод, выходы: 2 провода веса 8, 1 провод веса 16
    • Добавьте полный сумматор для веса 16, выходы: 1 провод веса-16, 1 провод веса-32
    • Добавьте полусумматор для веса 32, выходы: 1 провод веса-32, 1 провод веса-64
    • Пропустить единственный провод веса-64, на выходе: 1 провод веса-64
  3. Провода на выходе редукционного слоя 1:
    • вес 1-1
    • вес 2-1
    • вес 4-2
    • вес 8 - 3
    • вес 16-2
    • вес 32-2
    • вес 64-2
  4. Редукционный слой 2:
    • Добавьте полный сумматор для веса 8 и половинный сумматор для веса 4, 16, 32, 64
  5. Выходы:
    • вес 1-1
    • вес 2-1
    • вес 4-1
    • вес 8-2
    • вес 16-2
    • вес 32-2
    • вес 64-2
    • вес 128 - 1
  6. Сгруппируйте провода в пару целых чисел и сумматор, чтобы сложить их.

Смотрите также

использованная литература

  1. ^ Таунсенд, Уитни Дж .; Swartzlander, Earl E .; Авраам, Джейкоб А. (2003). «Сравнение задержек множителей Дадды и Уоллеса» . Расширенные алгоритмы обработки сигналов, архитектуры и реализации XIII . 5205 : 552–560 . DOI : 10.1117 / 12.507012 . ISSN  0277-786X .
  2. ^ Уоллес, Кристофер Стюарт (февраль 1964). «Предложение по быстрому множителю». Транзакции IEEE на электронных компьютерах . ИС-13 (1): 14–17.
  3. ^ Бохсали, Мунир; Доан, Майкл (2010). «Прямоугольные мультипликаторы дерева Уоллеса» (PDF) . Архивировано из оригинального (PDF) 15 февраля 2010 года.
  4. ^ «Введение» . 8x8 Booth Закодированный множитель дерева Уоллеса . Университет Тафтса. 2007. Архивировано 17 июня 2010 года.
  5. ^ Weems младший, Чарльз С. (2001) [1995]. «Обсуждение 7 CmpSci 535: Числовые представления» . Амхерст: Массачусетский университет. Архивировано из оригинала на 2011-02-06.

дальнейшее чтение

  • Савард, Джон Дж. Г. (2018) [2006]. «Продвинутые арифметические методы» . квадиблок . Архивировано 3 июля 2018 года . Проверено 16 июля 2018 .

внешние ссылки

  • Общая реализация множителя дерева Уоллеса на VHDL .
Источник « https://en.wikipedia.org/w/index.php?title=Wallace_tree&oldid=1028380222 »