Множитель Дадда
Множитель Дадда — это аппаратный двоичный умножитель, изобретенный учёным-компьютерщиком Луиджи Дадда в 1965 году. [1] Он использует набор полных и половинных сумматоров для поэтапного суммирования частичных произведений ( дерево Дадда или сокращение Дадда ), пока не останется два числа. Конструкция аналогична множителю Уоллеса , но другое дерево редукции уменьшает необходимое количество вентилей (для всех размеров операндов, кроме самых маленьких) и делает его немного быстрее (для всех размеров операндов). [2]
Множители Дадды и Уоллеса имеют одинаковые три шага для двухбитовых строк. и длины и соответственно:
- Умножьте ( логическое И ) каждый бит , по каждому биту , уступая результаты, сгруппированные по весу в столбцах
- Сокращайте количество частичных произведений поэтапно полными и половинными сумматорами, пока у нас не останется не более двух битов каждого веса.
- Сложите конечный результат обычным сумматором.
Как и в случае с множителем Уоллеса, продукты умножения на первом этапе имеют разные веса, отражающие величину исходных битовых значений при умножении. Например, произведение битов имеет вес .
В отличие от множителей Уоллеса, которые уменьшают максимально возможное количество на каждом слое, множители Дадды пытаются минимизировать количество используемых вентилей, а также задержку ввода/вывода. Из-за этого множители Дадда имеют менее затратную фазу сокращения, но конечные числа могут быть на несколько бит длиннее, что требует немного больших сумматоров.
Описание
[ редактировать ]Для достижения более оптимального конечного продукта структура процесса приведения регулируется несколько более сложными правилами, чем в множителях Уоллеса.
Прогресс редукции контролируется последовательностью максимальной высоты. , определяемый:
- , и
В результате получается такая последовательность:
Начальное значение выбирается как наибольшее значение такое, что , где и — количество битов во входных множимом и множителе. Меньшая из двух битовых длин будет максимальной высотой каждого столбца весов после первого этапа умножения. Для каждого этапа Целью сокращения является уменьшение высоты каждого столбца так, чтобы она была меньше или равна значению .
Для каждого этапа от , уменьшите каждый столбец, начиная со столбца с наименьшим весом, по этим правилам:
- Если столбец не требует сокращения, перейти в столбец
- Если добавьте два верхних элемента в полусумматор, поместив результат внизу столбца, а перенос — внизу столбца , затем перейдите к столбцу
- В противном случае добавьте три верхних элемента в полный сумматор, поместив результат внизу столбца, а перенос — внизу столбца. , перезапуск на шаге 1
Пример алгоритма
[ редактировать ]Пример на соседнем изображении иллюстрирует уменьшение множителя 8 × 8, описанное здесь.
Исходное состояние выбран как , наибольшее значение меньше 8.
Этап ,
- все они меньше или равны шести битам по высоте, поэтому никаких изменений не происходит.
- , поэтому применяется полусумматор, уменьшающий его до шести бит и добавляющий бит переноса к
- включая бит переноса из , поэтому мы применяем полный сумматор и полусумматор, чтобы уменьшить его до шести бит
- включая два бита переноса из , поэтому мы снова применяем полный сумматор и полусумматор, чтобы уменьшить его до шести бит
- включая два бита переноса из , поэтому мы применяем один полный сумматор и уменьшаем его до шести бит
- все они меньше или равны шести битам по высоте, включая биты переноса, поэтому никаких изменений не происходит.
Этап ,
- все они меньше или равны четырем битам по высоте, поэтому никаких изменений не происходит.
- , поэтому применяется полусумматор, уменьшающий его до четырех бит и добавляющий бит переноса к
- включая бит переноса из , поэтому мы применяем полный сумматор и полусумматор, чтобы уменьшить его до четырех бит
- включая предыдущие биты переноса, поэтому мы применяем два полных сумматора, чтобы уменьшить их до четырех битов.
- включая предыдущие биты переноса, поэтому мы применяем полный сумматор, чтобы уменьшить его до четырех битов.
- все они меньше или равны четырем битам по высоте, включая биты переноса, поэтому никаких изменений не происходит.
Этап ,
- все они меньше или равны трем битам по высоте, поэтому никаких изменений не происходит.
- , поэтому применяется полусумматор, уменьшающий его до трех бит и добавляющий бит переноса к
- включая предыдущие биты переноса, поэтому мы применяем один полный сумматор, чтобы уменьшить их до трех битов
- все они меньше или равны трем битам по высоте, включая биты переноса, поэтому никаких изменений не происходит.
Этап ,
- все они меньше или равны двум битам по высоте, поэтому никаких изменений не происходит.
- , поэтому применяется полусумматор, уменьшающий его до двух бит и добавляющий бит переноса к
- включая предыдущие биты переноса, поэтому мы применяем один полный сумматор, чтобы уменьшить их до двух битов.
- включая бит переноса из , поэтому никаких изменений не происходит
Добавление
На выходе последнего этапа остается 15 столбцов высотой два или меньше, которые можно передать в стандартный сумматор.
См. также
[ редактировать ]- Алгоритм умножения Бута
- Слитое умножение-сложение
- Дерево Уоллеса
- Алгоритм БКМ для комплексных логарифмов и экспонент
- Умножение Кочанского для модульного умножения
Ссылки
[ редактировать ]- ^ Дадда, Луиджи (май 1965 г.). «Некоторые схемы параллельных умножителей». Высокая частота . 34 (5): 349–356.
Дадда, Л. (1976). «Некоторые схемы параллельных умножителей». В Шварцландере, Эрл Э. (ред.). Развитие компьютерного дизайна: основные статьи . Книжная компания Хайден. стр. 167–180. ISBN 978-0-8104-5988-5 . OCLC 643640444 . - ^ Таунсенд, Уитни Дж.; Шварцландер-младший, Эрл Э.; Авраам, Джейкоб А. (декабрь 2003 г.). «Сравнение задержек множителей Дадды и Уоллеса» (PDF) . Усовершенствованные алгоритмы обработки сигналов SPIE, архитектуры и реализации XIII . Международное общество . дои : 10.1117/12.507012 .
Дальнейшее чтение
[ редактировать ]- Савард, Джон Дж. Г. (2018) [2006]. «Продвинутые арифметические методы» . четырехблок . Архивировано из оригинала 3 июля 2018 г. Проверено 16 июля 2018 г.