Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Multiplicadores PDF
Multiplicadores PDF
ESTRUCTURA Y TECNOLOGÍA DE
COMPUTADORES
Programa
Bibliografía.
1. Multiplicación binaria en coma fija.
2. Multiplicación por una constante.
3. Multiplicación por suma - desplazamiento.
4. Multiplicación por grupos solapados.
5. Circuitos para multiplicación rápida.
6. División binaria en coma fija.
7. División por una constante.
8. División con restauración.
9. Instrucciones para multiplicación y división en ensamblador.
2
Circuitos para multiplicación y división de números en coma fija
Bibliografía
 D.A. PATTERSON, J.L. HENNESSY. Estructura y Diseño de Computadores.
Reverté, 2000.
 DORMIDO, S. CANTO M.A., MIRA J., DELGADO A.E. Estructura y Tecnología
de Computadores. 2ª edición. Sanz y Torres, 2000.
 PARHAMI, B. Computer Arithmetic. Oxford University Press, 2000.
 P. DE MIGUEL. Fundamentos de los Computadores. 7ª edición. Paraninfo,
1999.
 W. STALLINGS. Organización y Arquitectura de Computadores. 5ª edición,
Prentice Hall, 2000.
 Terminología de la multiplicación:
Mxm=P
•M: multiplicando.
•m: multiplicador.
•P: producto o resultado.
4
Circuitos para multiplicación y división de números en coma fija
64 + 8 = 72
M
× m M3 M2 M1 M0 multiplicando
R × m2 m1 m0 multiplicador
M3·m0 M2 ·m0 M1 ·m0 M0 ·m0
Productos
M3·m1 M2 ·m1 M1 ·m1 M0 ·m1 parciales
M3·m2 M2 ·m2 M1 ·m2 M0 ·m2
R6 R5 R4 R3 R2 R1 R0 resultado
5
0001000000110110 M*m
 El producto de dos números binarios de n bits produce un resultado que puede
tener hasta 2n bits de ancho. 6
Circuitos para multiplicación y división de números en coma fija
1. Se realiza el producto del multiplicando por el bit 0 del multiplicador, con lo cual
obtendremos productos parciales que pueden valer lo mismo que el multiplicando
desplazado (cuando el bit del multiplicador sea 1) o bien 0 (cuando dicho bit sea nulo).
10
Circuitos para multiplicación y división de números en coma fija
Multiplicand
Shift left
64 bits
Product
Control test
Write
64 bits
11
Contador ← Contador+1
Multiplier
64-bit ALU Shift right
32 bits
¿ Contador = n ?
Product
Control test
Write
Sí 64 bits
Fin
 Por tanto, se ideó un algoritmo similar al anterior, pero sin duplicar el tamaño
del multiplicador, y utilizando un sumador de n bits.
 Puesto que las sumas son de n bits, el registro Producto estará dividido en dos
mitades (Productoizq: mitad izquierda; Productoder: mitad derecha; P: registro
completo).
•En cada iteración se suma sólo sobre la mitad izquierda.
•Los desplazamientos se realizan sobre el registro completo.
Shift right
Product Control test
Write
64 bits
15
1
¿Bit 0 del
Multiplicador = 0?
2. Iniciar el registro Multiplicador
Productoizq ← Productoizq + 0
Multiplicando
3. Producto ← 0
32 bits
Contador ← Contador+1
Multiplier
32-bit ALU Shift right
¿ Contador = n ? 32 bits
Sí Shift right
Product Control test
Write
Fin 64 bits
18
Circuitos para multiplicación y división de números en coma fija
32 bits
No
Desplazamiento del registro Producto a la derecha Multiplicand
32 bits
Contador ← Contador+1
32-bit ALU
¿ Contador = n ?
INICIO Cuenta
Desplaza
Carga
BitZ0 A3
A2
A1
A0
L
Multiplicando
B3
B2
Sumador de 4 bits B1
B0
Clr
D Clr L L
CE c Producto Multiplicador
Reloj S S
Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0 22
Circuitos para multiplicación y división de números en coma fija
Algoritmo de Booth
 El algoritmo de Booth presentado funciona para operandos en complemento a
2 (para binario puro habría que realizar una pequeña adaptación).
Algoritmo de Booth
 En definitiva, el algoritmo de Booth se basa en recodificar el multiplicador y
convertirlo en una secuencia de dígitos con valores 1, 0 y –1 (codificación de dígitos
con signo).
1 cuando comienza cadena de bits a 1 (implica hacer una suma).
-1 cuando termina cadena de bits a 1 (implica hacer una resta).
0 en otro caso.
Algoritmo de Booth
 Ejemplo: multiplicar M=10100110C2=-9010 por m=00011001C2=2510
Multiplicador original 0 0 0 1 1 0 0 1
Multiplicador recodificado 0 0 1 0 -1 0 1 -1
1111011100110110 M*m
26
Circuitos para multiplicación y división de números en coma fija
Algoritmo de Booth
 Podría emplearse la circuitería del algoritmo de suma-desplazamiento con
algunas pequeñas modificaciones (se parte de la versión 3):
•Utilizar un sumador-restador.
•Despreciar el bit de acarreo superior, ya que se manejan datos en complemento a 2.
•Realizar desplazamientos aritméticos (extendiendo el signo).
•Añadir un bit que se concatenará a la derecha del registro Producto, iniciado con un 0
y que se modificará cada vez que se haga un desplazamiento sobre Producto (la
ventana de bits analizada en cada iteración está formada por el bit menos significativo
del registro Producto y el bit añadido a su derecha).
Multiplicand
32 bits
32-bit ALU
Inicio 32 bits
32-bit ALU
No
Desplazar Producto # p-1 a la derecha
 Operaciones de la fase de inicio:
Contador ← Contador+1 1. Iniciar el registro Multiplicando
2. Iniciar el registro Producto (mitad
¿ Contador = 0 ?
izquierda a 0, mitad derecha con el
multiplicador, bit p-1 a 0)
Sí
3. Contador ← 0
Fin
 Aclaraciones:
•p0: bit menos significativo del registro Producto. Ejercicio: dibujar el diagrama
•p-1: bit añadido a la derecha del registro Producto. de estados del controlador del
•Producto # p-1: registro Producto concatenado con el bit p-1. circuito. 28
Circuitos para multiplicación y división de números en coma fija
Algoritmo de Booth
 Ejemplo: n=4, multiplicar M=1010C2= -610 por m=0011C2=310
El multiplicando cambiado de signo es –M=0110C2
Iteración Paso Multiplicando Producto
0 Valores iniciales 1010 0000 0011 0
1 Productoizq ← Productoizq - Multiplicando “ 0110 0011 0
Desplazar Producto a la derecha “ 0011 0001 1
2 Ninguna operación “ “
Desplazar Producto a la derecha “ 0001 1000 1
3 Productoizq ← Productoizq + Multiplicando “ 1011 1000 1
Desplazar Producto a la derecha “ 1101 1100 0
4 Ninguna operación “ “
Desplazar Producto a la derecha “ 1110 1110
 Para sumar los productos parciales más rápido se puede recurrir por ejemplo a:
•Las matrices de sumadores.
•Los sumadores en árbol.
0 14 - 1 0 0 0 1 1 1 0 cociente
0 1 1 0 0
-100 0
0 1 0 0 0
- 10 0 0
0 0 0 0 0
- 0 0 0 0
0 0 0 0 resto
33
 Se incluirá una tercera versión del algoritmo aún más optimizada acompañada
del correspondiente circuito.
 Será un proceso iterativo de n+1 ciclos, en cada uno de los cuales se realizarán
las siguientes operaciones:
36
Circuitos para multiplicación y división de números en coma fija
Divisor
Sh ift right
64 bits
R em ainder Control
W rite test
64 bits
37
4. Contador ← 0
Desplazar Divisor 1 bit
hacia la derecha Divisor
Sh ift right
64 bits
Contador← Contador+1
Q uotie nt
¿Contador=n+1? 64-bit ALU Sh ift left
32 bits
Sí
R em ainder Control
Fin W rite test
64 bits
32 bits
Contador← Contador+1
Quotient
32-bit ALU Shift left
32 bits
¿Contador=n?
Sí Shift left Control
Remainder
Write test
Desplazar Restoizq 1 bit 64 bits
hacia la derecha
Fin
43
 Por tanto, se incorporó una mejora al circuito, de forma que el registro Cociente
desaparece.
32 bits
Contador← Contador+1
32-bit ALU
¿Contador=n?
Sí
Shift right
Remainder Control
Desplazar Restoizq 1 bit Shift left
test
hacia la derecha Write
64 bits
Fin
47
48
Circuitos para multiplicación y división de números en coma fija
 MC68000:
•Multiplicación (muls, mulu): operandos de 16 bits, resultado de 32 bits.
•División (divs, divu): dividendo de 32 bits, divisor de 16 bits, cociente de 16
bits, resto de 16 bits.
49