Дерево Уоллеса
Эта статья нуждается в дополнительных цитатах для проверки . ( декабрь 2009 г. ) |

Множитель Уоллеса — это аппаратная реализация двоичного умножителя , цифровой схемы, которая умножает два целых числа. Он использует набор полных и половинных сумматоров ( дерево Уоллеса или сокращение Уоллеса ) для поэтапного суммирования частичных произведений, пока не останется два числа. Множители Уоллеса максимально сокращают на каждом уровне, тогда как множители Дадды пытаются минимизировать необходимое количество вентилей, откладывая сокращение на верхние уровни. [ 1 ]
Множители Уоллеса были изобретены австралийским ученым-компьютерщиком Крисом Уоллесом в 1964 году. [ 2 ]
Дерево Уоллеса состоит из трех ступеней:
- Умножьте каждый бит одного из аргументов на каждый бит другого.
- Уменьшите количество частичных произведений до двух, используя слои полных и половинных сумматоров .
- Сгруппируйте провода в два числа и сложите их обычным сумматором. [ 3 ]
По сравнению с простым добавлением частичных произведений с помощью обычных сумматоров преимуществом дерева Уоллеса является его более высокая скорость. Он имеет редукционные слои, но каждый слой имеет только задержка распространения. Простое добавление частичных продуктов потребовало бы время. Поскольку изготовление частичных продуктов и последнее дополнение , общее умножение , не намного медленнее, чем сложение. С точки зрения теории сложности алгоритм дерева Уоллеса помещает умножение в класс NC. 1 . Недостатком дерева Уоллеса по сравнению с простым сложением частичных произведений является гораздо большее количество элементов.
Эти вычисления учитывают только задержки на воротах и не учитывают задержки по проводу, которые также могут быть очень существенными.
Дерево Уоллеса также может быть представлено деревом сумматоров 3/2 или 4/2.
Иногда его комбинируют с кодировкой Booth . [ 4 ] [ 5 ]
Подробное объяснение
[ редактировать ]Дерево Уоллеса — это вариант длинного умножения . Первый шаг — умножить каждую цифру (каждый бит) одного фактора на каждую цифру другого. Каждый из этих частичных продуктов имеет вес, равный произведению его факторов. Конечный продукт рассчитывается по взвешенной сумме всех этих частичных продуктов.
Первый шаг, как было сказано выше, состоит в умножении каждого бита одного числа на каждый бит другого, что выполняется как простой логический элемент И, в результате чего получается биты; частичное произведение битов к имеет вес
На втором этапе полученные биты сводятся к двум числам; это осуществляется следующим образом: Если есть три или более проводов одинакового веса, добавьте следующий слой:
- Возьмите любые три провода с одинаковыми весами и введите их в полный сумматор . Результатом будет выходной провод одинакового веса и выходной провод с более высоким весом для каждых трех входных проводов.
- Если остались два провода одинаковой массы, введите их в полусумматор .
- Если остался только один провод, подключите его к следующему слою.
На третьем и последнем этапе два полученных числа подаются в сумматор, в результате чего получается конечный продукт.
Пример
[ редактировать ], умножение к :
- Сначала мы умножаем каждый бит на каждый бит:
- вес 1 –
- вес 2 – ,
- вес 4 – , ,
- вес 8 – , , ,
- вес 16 – , ,
- вес 32 – ,
- вес 64 –
- Слой уменьшения 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.
- Провода на выходе восстановительного слоя 1:
- вес 1 – 1
- вес 2 – 1
- вес 4 – 2
- вес 8 – 3
- вес 16 – 2
- вес 32 – 2
- вес 64 – 2
- Слой уменьшения 2:
- Добавьте полный сумматор для веса 8 и половинные суммы для весов 4, 16, 32, 64.
- Выходы:
- вес 1 – 1
- вес 2 – 1
- вес 4 – 1
- вес 8 – 2
- вес 16 – 2
- вес 32 – 2
- вес 64 – 2
- вес 128 – 1
- Сгруппируйте провода в пару целых чисел и сумматор для их сложения.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Таунсенд, Уитни Дж.; Шварцландер, Эрл Э.; Авраам, Джейкоб А. (2003). Люк, Франклин Т. (ред.). «Сравнение задержек множителей Дадды и Уоллеса» . Расширенные алгоритмы обработки сигналов, архитектуры и реализации XIII . 5205 : 552–560. Бибкод : 2003SPIE.5205..552T . дои : 10.1117/12.507012 . ISSN 0277-786X . S2CID 121437680 .
- ^ Уоллес, Кристофер Стюарт (февраль 1964 г.). «Предложение по быстрому множителю». Транзакции IEEE на электронных компьютерах . ЕС-13 (1): 14–17. дои : 10.1109/PGEC.1964.263830 . S2CID 34688264 .
- ^ Босали, Мунир; Доан, Майкл (2010). «Множители дерева Уоллеса в прямоугольном стиле» (PDF) . Архивировано из оригинала (PDF) 15 февраля 2010 г.
- ^ "Введение" . 8x8 Множитель дерева Уоллеса в кодировке Бута . Университет Тафтса. 2007. Архивировано из оригинала 17 июня 2010 г.
- ^ Уимс-младший, Чарльз К. (2001) [1995]. «Обсуждение CmpSci 535 7: Представления чисел» . Амхерст: Массачусетский университет. Архивировано из оригинала 6 февраля 2011 г.
Дальнейшее чтение
[ редактировать ]- Савард, Джон Дж. Г. (2018) [2006]. «Продвинутые арифметические методы» . четырехблок . Архивировано из оригинала 3 июля 2018 г. Проверено 16 июля 2018 г.