algoritmo de multiplicación de cabina, ¿por qué funciona?

3

Acabo de enterarme de algoritmo de multiplicación de Booth , y por lo que entiendo si el multiplicador es menos significativo (MLB) es igual al bit significativo anterior en ese multiplicador (MPLB), entonces realizamos el cambio a la derecha. Si MLB > MPLB, entonces el 'acumulador' obtiene un nuevo valor al restar el multiplicando del acumulador y realizar el cambio a la derecha. De lo contrario, agregamos el multiplicando y el acumulador y realizamos el cambio a la derecha.

Lo que me molesta es por qué funciona este método? ¿Alguien puede importarme explicármelo?
Además, ¿cómo maneja el algoritmo la multipicación firmada? ¿Es el mismo paso excepto que se interpretó de manera diferente al final?

Por favor, ilumíname.

    
pregunta Stupid

2 respuestas

5

El algoritmo de Booth funciona porque 99 * N = 100 * N - N, pero este último es más fácil de calcular (por lo tanto, utiliza menos recursos cerebrales).

En binario, la multiplicación por potencias de dos son simplemente cambios, y en hardware, los cambios pueden ser esencialmente libres (el enrutamiento no requiere puertas), aunque los cambios variables requieren multiplexores o ciclos de reloj múltiples.

Así, en lugar de multiplicar n * 7 como (n * 4) + (n * 2) + (n * 1) que requiere 2 adiciones, Booth Recoding nos permite implementarlo como (n * 8) - (n * 1) que requiere una resta.

El resto de la descripción es solo una formalización y generalización de esta idea.

    
respondido por el Brian Drummond
0

Los multiplicadores de cabina requieren menos recursos lógicos porque operan en más de un bit a la vez. La idea es dividir la entrada en pequeños conjuntos de bits (en el caso más simple, 2 bits) y luego realizar una operación un poco más creativa. En general, un multiplicador solo usa las puertas Y para realizar la multiplicación real, luego usa un árbol sumador para combinar los resultados. Un Multipler Booth calcula múltiples bits al mismo tiempo, reduciendo la complejidad del árbol sumador. Un bit le da K * 0 y K * 1, que se pueden calcular con una puerta AND. Dos bits son K * 0, K * 1, K * 2 y K * 3. Obtienes K * 2 gratis (cambio de bit). K * 3 puede estar formado por K + K * 2, pero esto requiere un sumador adicional. Sin embargo, K * 3 = K * 4 - K * 1. Esto solo requiere la construcción de un árbol sumador firmado, que básicamente solo requiere extender los bits de signo.

Esta técnica se puede extender por más de 2 bits a la vez. Tres bits (radix 8) requieren K * 0, K * 1, K * 2, K * 3, K * 4, K * 5, K * 6 y K * 7. Esto se reduce a K * 0, K * 1, K * 2, K * 3, K * 4, K * 8-K * 3, K * 8-K * 2 y K * 8-K * 1. Sin embargo, esto ahora requiere un sumador adicional para calcular previamente K * 3 = K * 2 + K * 1.

En realidad, tengo un script de Python corriendo en algún lugar para generar un multiplicador de Booth firmado por radix-8 en Verilog. Si lo ejecuta para un multiplicador de 64x64, genera alrededor de 2300 líneas de Verilog, que es casi todas las sumas completas.

Editar: No importa, los multiplicadores codificados en cabina son bastante diferentes del algoritmo de multiplicación de cabina. Lo anterior se refiere a cómo funciona un multiplicador codificado Booth para la implementación en lógica digital. Curiosamente, no he encontrado un artículo de wikipedia sobre el tema. La codificación de la cabina redirige a la página del algoritmo, pero la página no tiene ninguna referencia a la codificación de la cabina, aunque la codificación de la cabina probablemente se derive del algoritmo de alguna manera. Muy extraño.

De todos modos, la página a la que te vincula contiene una descripción de cómo funciona matemáticamente el algoritmo. Cualquier cadena continua de bits de conjunto puede reemplazarse por una suma y una resta, sin importar cuánto tiempo la cadena. La adición se realiza en un extremo de la cadena de bits, y la resta se realiza en el otro. La decisión se toma no mirando el LSB, sino mirando dos LSB. Si son iguales (00 u 11), no se realiza ninguna operación. Si son diferentes (10 o 01), entonces se realiza una operación de suma, ya sea con uno de los multiplicandos o su complemento de dos, lo que resulta en una resta. Otra forma de pensarlo es que en lugar de solo agregar uno, sumas dos y restas uno. Las dos causas agregadas entonces se llevan a cabo en todas las posiciones de bit de conjunto adyacentes hasta que se alcanza un bit borrado. En cuanto a la multiplicación firmada, el algoritmo ya está configurado para realizar una multiplicación firmada. El ejemplo en la página 3 * -4 = -12, no se requieren pasos adicionales. Sin embargo, con una implementación VLSI de un multiplicador firmado y codificado en cabina, debe tener cuidado con la extensión de signo para que todo funcione correctamente.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas