El multiplicador de Dadda es un diseño de multiplicador binario de hardware inventado por el científico informático Luigi Dadda en 1965. [1] Utiliza una selección de sumadores completos y medios para sumar los productos parciales en etapas (el árbol de Dadda o reducción de Dadda ) hasta que quedan dos números. El diseño es similar al multiplicador de Wallace , pero el árbol de reducción diferente reduce el número requerido de puertas (para todos los tamaños de operandos excepto los más pequeños) y lo hace ligeramente más rápido (para todos los tamaños de operandos). [2]
Los multiplicadores de Dadda y Wallace tienen los mismos tres pasos para cadenas de dos bits y de longitudes y respectivamente:
Multiplica ( AND lógico ) cada bit de , por cada bit de , obteniendo resultados agrupados por peso en columnas
Reducir el número de productos parciales mediante etapas de sumadores completos y medios hasta que nos queden como máximo dos bits de cada peso.
Sume el resultado final con un sumador convencional.
Al igual que con el multiplicador de Wallace, los productos de multiplicación del primer paso tienen pesos diferentes que reflejan la magnitud de los valores de bits originales en la multiplicación. Por ejemplo, el producto de bits tiene un peso .
A diferencia de los multiplicadores de Wallace, que reducen lo máximo posible en cada capa, los multiplicadores de Dadda intentan minimizar la cantidad de puertas utilizadas, así como el retardo de entrada/salida. Debido a esto, los multiplicadores de Dadda tienen una fase de reducción menos costosa, pero los números finales pueden ser unos bits más largos, por lo que se requieren sumadores ligeramente más grandes.
Descripción
Para lograr un producto final más óptimo, la estructura del proceso de reducción se rige por reglas ligeramente más complejas que en los multiplicadores de Wallace.
La progresión de la reducción está controlada por una secuencia de altura máxima , definida por:
, y
Esto produce una secuencia como la siguiente:
El valor inicial de se elige como el valor más grande tal que , donde y son el número de bits en el multiplicando y el multiplicador de entrada. La menor de las dos longitudes de bits será la altura máxima de cada columna de pesos después de la primera etapa de la multiplicación. Para cada etapa de la reducción, el objetivo del algoritmo es reducir la altura de cada columna para que sea menor o igual al valor de .
Para cada etapa desde , reduzca cada columna comenzando en la columna de menor peso, de acuerdo con estas reglas:
Si la columna no requiere reducción, pasar a la columna
Si sumamos los dos elementos superiores en un semisumador, colocamos el resultado en la parte inferior de la columna y el acarreo en la parte inferior de la columna , luego pasamos a la columna
De lo contrario, agregue los tres elementos superiores en un sumador completo, colocando el resultado en la parte inferior de la columna y el acarreo en la parte inferior de la columna , reinicie en el paso 1
Ejemplo de algoritmo
El ejemplo de la imagen adyacente ilustra la reducción de un multiplicador de 8 × 8, explicada aquí.
El estado inicial se elige como , siendo el valor más grande menor que 8.
Escenario ,
son todos menores o iguales a seis bits de altura, por lo que no se realizan cambios
, por lo que se aplica un semisumador, reduciéndolo a seis bits y agregando su bit de acarreo a
incluyendo el bit de acarreo de , por lo que aplicamos un sumador completo y un medio sumador para reducirlo a seis bits
incluyendo dos bits de acarreo de , por lo que nuevamente aplicamos un sumador completo y un medio sumador para reducirlo a seis bits
incluyendo dos bits de acarreo de , por lo que aplicamos un único sumador completo y lo reducimos a seis bits
son todos menores o iguales a seis bits en altura, incluidos los bits de acarreo, por lo que no se realizan cambios
Escenario ,
son todos menores o iguales a cuatro bits de altura, por lo que no se realizan cambios
, por lo que se aplica un semisumador, reduciéndolo a cuatro bits y agregando su bit de acarreo a
incluyendo el bit de acarreo de , por lo que aplicamos un sumador completo y un medio sumador para reducirlo a cuatro bits
incluyendo los bits de acarreo anteriores, por lo que aplicamos dos sumadores completos para reducirlos a cuatro bits
incluyendo los bits de acarreo anteriores, por lo que aplicamos un sumador completo para reducirlo a cuatro bits
son todos menores o iguales a cuatro bits en altura, incluidos los bits de acarreo, por lo que no se realizan cambios
Escenario ,
son todos menores o iguales a tres bits de altura, por lo que no se realizan cambios
, por lo que se aplica un semisumador, reduciéndolo a tres bits y agregando su bit de acarreo a
incluyendo los bits de acarreo anteriores, por lo que aplicamos un sumador completo para reducirlos a tres bits
son todos menores o iguales a tres bits en altura, incluidos los bits de acarreo, por lo que no se realizan cambios
Escenario ,
son todos menores o iguales a dos bits de altura, por lo que no se realizan cambios
, por lo que se aplica un semisumador, reduciéndolo a dos bits y agregando su bit de acarreo a
incluyendo los bits de acarreo anteriores, por lo que aplicamos un sumador completo para reducirlos a dos bits
incluido el bit de transporte de , por lo que no se realizan cambios
Suma
La salida de la última etapa deja 15 columnas de altura dos o menos que pueden pasarse a un sumador estándar.
^ Dadda, Luigi (mayo de 1965). "Algunos esquemas para multiplicadores paralelos". Alta Frecuencia . 34 (5): 349–356. Dadda, L. (1976). "Algunos esquemas para multiplicadores paralelos". En Swartzlander, Earl E. (ed.). Desarrollo del diseño de computadoras: Documentos principales . Hayden Book Company. págs. 167–180. ISBN 978-0-8104-5988-5.OCLC 643640444 .
^ Townsend, Whitney J.; Swartzlander, Jr., Earl E.; Abraham, Jacob A. (diciembre de 2003). "Una comparación de los retardos de los multiplicadores de Dadda y Wallace" (PDF) . Algoritmos, arquitecturas e implementaciones de procesamiento avanzado de señales SPIE XIII . The International Society . doi :10.1117/12.507012.
Lectura adicional
Savard, John JG (2018) [2006]. «Técnicas aritméticas avanzadas». quadibloc . Archivado desde el original el 2018-07-03 . Consultado el 2018-07-16 .