Está en la página 1de 23

Multiplicación

Martín Vázquez
Curso 2016

Multiplicación
Notación dot

Multiplicación decimal (base 10) Multiplicación binaria (base 2)

● ● ● ● a ● ● ● ● a
x ● ● ● ● b x ● ● ● ● b
● ● ● ● b0 .a.100 ● ● ● ● b0.a.20
● ● ● ● b1 .a.101 ● ● ● ● b1.a.21
● ● ● ● b2 .a.102 ● ● ● ● b2.a.22
● ● ● ● b3 .a.103 ● ● ● ● b3.a.23
● ● ● ● ● ● ● ● p ● ● ● ● ● ● ● ● p

Multiplicación 2

1
Multiplicación
Independientemente de la base (2, 10, u otra), es un
algoritmo clásico de desplazamiento y suma (shift and add)

Para base 2 y multiplicador de m bits:


m −1
p = ∑ a.b j .2 j
j =0

Multiplicar un número por la base elevada a un exponente, es


desplazarlo a la izquierda (shift left) tantos lugares como
indica el exponente y completar con 0’s
1310.104 = 13000010; 1012.23 = 1010002

Multiplicación 3

Multiplicación binaria

Ejemplo

Para multiplicando a = 10102, y multiplicador b = 11012

p = a.b3.23 + a.b2.22 + a.b1.21 + a.b0

p = 10100002 + 1010002 + 00000 + 1010 =


100000102 (13010)

Multiplicación 4

2
Multiplicación binaria

Dos estrategias principales para abordar la


implementación hardware de los algoritmos de
multiplicación shift and add
Desplazamiento a la izquierda (shift left)
Desplazamiento a la derecha (shift right)

En cada paso se suma el operando multiplicando, al


resultado parcial desplazado (a izquierda o derecha)

Multiplicación 5

Multiplicación binaria
Algoritmo shift left
Sea p = a.b, con b de 4 bits, entonces
p = a.b3.23 + a.b2.22 + a.b1.21 + a.b0
p = ( ( (a.b3).2 + a.b2 ).2 + a.b1 ).2 + a.b0 (Expansión de Hörner)

Multiplicación 6

3
Multiplicación binaria
Algoritmo shift left
Sea p = a.b, con b de 4 bits, entonces
p = a.b3.23 + a.b2.22 + a.b1.21 + a.b0
p = ( ( (a.b3).2 + a.b2 ).2 + a.b1 ).2 + a.b0 (Expansión de Hörner)
p(1) p(1) = p (0).2 + a.b3
p(2) p(2) = p (1).2 + a.b2
p(3) p(3) = p (2).2 + a.b1
p(4) p(4) = p (3).2 + a.b0

El algoritmo consta de 5 pasos, p(0) se inicializa en 0

Multiplicación 7

Multiplicación binaria
Algoritmo shift left
Generalizando p = a.b, con a de n bits y b de m bits

Si a es el multiplicando y b en es multiplicador. El algoritmo


comprende m+1 pasos

Cada paso computa


p(j+1) = p (j).2 + a.bm-1-j, con j en [0, m-1]

En cada iteración se desplazan a la izquierda p(j) y b

Multiplicación 8

4
Multiplicación binaria
Algoritmo shift left
Determinar p = a.b, con a = 10102 y b=11102

Multiplicación 9

Multiplicación binaria
Algoritmo shift left
Determinar p = a.b, con a = 10102 y b=11102

1010
x 1110
0000 p(0).2
1010 a.b3
1010 p(1)

Multiplicación 10

5
Multiplicación binaria
Algoritmo shift left
Determinar p = a.b, con a = 10102 y b=11102

1010 1010
x 1110 x 1110
0000 p(0).2 10100 p(1).2
1010 a.b3 1010 a.b2
1010 p(1) 11110 p(2)

Multiplicación 11

Multiplicación binaria
Algoritmo shift left
Determinar p = a.b, con a = 10102 y b=11102

1010 1010 1010


x 1110 x 1110 x 1110
0000 p(0).2 10100 p(1).2 111100 p(2).2
1010 a.b3 1010 a.b2 1010 a.b1
1010 p(1) 11110 p(2) 1000110 p(3)

Multiplicación 12

6
Multiplicación binaria
Algoritmo shift left
Determinar p = a.b, con a = 10102 y b=11102

1010 1010 1010 1010


x 1110 x 1110 x 1110 x 1110
0000 p(0).2 10100 p(1).2 111100 p(2).2 10001100 p(3).2
1010 a.b3 1010 a.b2 1010 a.b1 0000 a.b0
1010 p(1) 11110 p(2) 1000110 p(3) 10001100 p(4)

p = p(4) = 100011002 (14010)

Se requieren sumadores de 8 bits.


Multiplicación 13

Multiplicación binaria
Implementación de multiplicador binario
Tamaño del resultado n −1 m −1
a = ∑ a j .2 j b = ∑ b j .2 j
j =0 j =0

Multiplicación 14

7
Multiplicación binaria
Implementación de multiplicador binario
Tamaño del resultado n −1 m −1
a = ∑ a j .2 j b = ∑ b j .2 j
j =0 j =0

p = a.b = (an-1.bm-1).2m+n-2 + (an-1.bm-2+an-2.bm-1).2m-n-3 + … + (a0.b1+a1.b0).21 + a0.b0

Multiplicación 15

Multiplicación binaria
Implementación de multiplicador binario
Tamaño del resultado n −1 m −1
a = ∑ a j .2 j b = ∑ b j .2 j
j =0 j =0

p = a.b = (an-1.bm-1).2m+n-2 + (an-1.bm-2+an-2.bm-1).2m-n-3 + … + (a0.b1+a1.b0).21 + a0.b0

carry carry

Si la suma en el peso m+n-2 genera acarreo, entonces se produce un dígito


en el peso m+n-1 (2m+n-1)

El tamaño del resultado, p, es de m+n bits

Multiplicación 16

8
Multiplicación binaria
Implementación de multiplicador binario shift left
Versión Secuencial (serie)

MULT se implementa con n


compuertas and en paralelo
necesita una unidad de control
sencilla
m ciclos de latencia
sumador de n+m bits

Multiplicación 17

Multiplicación binaria
Algoritmo shift right
Sea p = a.b, con b de 4 bits, entonces
p = (a.b3.23 + a.b2.22 + a.b1.21 + a.b0).2-3.23
p = ( ( ( (a.b0).2-1 + a.b1 ).2-1 + a.b2).2-1 + a.b3 ).23

Multiplicación 18

9
Multiplicación binaria
Algoritmo shift right
Sea p = a.b, con b de 4 bits, entonces
p = (a.b3.23 + a.b2.22 + a.b1.21 + a.b0).2-3.23
p = ( ( ( (a.b0).2-1 + a.b1 ).2-1 + a.b2).2-1 + a.b3 ).23
p(1) p(1) = p (0).2-1 + a.b0.23
p(2) p(2) = p (1).2-1 + a.b1.23
p(3) p(3) = p (2).2-1 + a.b2.23
p(4) p(4) = p (3).2-1 + a.b3.23

El algoritmo consta de 5 pasos, p(0) se inicializa en 0

Multiplicación 19

Multiplicación binaria
Algoritmo shift right
Generalizando p = a.b, con a de n bits y b de m bits

Si a es el multiplicando y b en es multiplicador. El algoritmo


comprende m+1 pasos

Cada paso computa


p(j+1) = p (j).2-1 + a.bj.2m-1 con j en [0, m-1]

En cada iteración se desplazan a la derecha p(j) y b

Multiplicación 20

10
Multiplicación binaria
Algoritmo shift right
Análisis de la suma involucrada en en cálculo de p(j+1) = p(j).2-1+ a.bj.2m-1

Ejemplo, sumar dos operandos de 8 bits, x e y, donde y termina


siempre con cuatro 0’s, es decir y = y’.24
x7 x6 x5 x4 x3 x2 x1 x0
+
y’3 y’2 y’1 y’0 0 0 0 0

Multiplicación 21

Multiplicación binaria
Algoritmo shift right
Análisis de la suma involucrada en en cálculo de p(j+1) = p(j) + a.bj.2m-1

Ejemplo, sumar dos operandos de 8 bits, x e y, donde y termina


siempre con cuatro 0’s, es decir y = y’.24

x7 x6 x5 x4 x3 x2 x1 x0
+
y’3 y’2 y’1 y’0 0 0 0 0
x3 x2 x1 x0
Solo se necesita un sumador de 4 bits en lugar de uno de 8 bits.

Multiplicación 22

11
Multiplicación binaria
Algoritmo shift right
Análisis de la suma involucrada en en cálculo de p(j+1) = p(j) + a.bj.2m-1

Ejemplo, sumar dos operandos de 8 bits, x e y, donde y termina


siempre con cuatro 0’s, es decir y = y’.24

x7 x6 x5 x4 x3 x2 x1 x0
+
y’3 y’2 y’1 y’0 0 0 0 0
x3 x2 x1 x0
Solo se necesita un sumador de 4 bits en lugar de uno de 8 bits.

Para el caso de la suma en algoritmo shift right, se requiere un


sumador de n bits en lugar de un sumador de n+m bits como en el
caso de shift left.
Multiplicación 23

Multiplicación binaria
Algoritmo shift right
Determinar p = a.b, con a = 10102 y b=11112

Multiplicación 24

12
Multiplicación binaria
Algoritmo shift right
Determinar p = a.b, con a = 10102 y b=11112

1010
x 1111
0000 p(0).2-1
1010 a.b0
0 1010 p(1)

Multiplicación 25

Multiplicación binaria
Algoritmo shift right
Determinar p = a.b, con a = 10102 y b=11112

1010 1010
x 1111 x 1111
0000 p(0).2-1 01010 p(1).2-1
1010 a.b0 1010 a.b1
0 1010 p(1) 0 11110 p(2)

Multiplicación 26

13
Multiplicación binaria
Algoritmo shift right
Determinar p = a.b, con a = 10102 y b=11112

1010 1010 1010


x 1111 x 1111 x 1111
0000 p(0).2-1 01010 p(1).2-1 011110 p(2).2-1
1010 a.b0 1010 a.b1 1010 a.b2
0 1010 p(1) 0 11110 p(2)
1 000110 p(3)

Multiplicación 27

Multiplicación binaria
Algoritmo shift right
Determinar p = a.b, con a = 10102 y b=11112

1010 1010 1010 1010


x 1111 x 1111 x 1111 x 1111
0000 p(0).2-1 01010 p(1).2-1 011110 p(2).2-1 1000110 p(3).2-1
1010 a.b0 1010 a.b1 1010 a.b2 1010 a.b3
0 1010 p(1) 0 11110 p(2)
1 000110 p(3)
1 0010110 p(4)

p = p(4) = 100101102 (15010)

Se requiere sumador de 4 bits


Multiplicación 28

14
Multiplicación binaria
Implementación de multiplicador binario shift right
Versión Secuencial (serie)

MULT se implementa con n


compuertas and en paralelo
necesita una unidad de control
sencilla
m ciclos de latencia
sumador de n bits

Multiplicación 29

Multiplicación binaria
Implementación de multiplicador binario shift right
Versión Secuencial (serie)

MULT se implementa con n


compuertas and en paralelo
necesita una unidad de control
sencilla
m ciclos de latencia
sumador de n bits

Comparado a shift left


Menor ocupación de área
Menor tiempo de ciclo
Multiplicación 30

15
Multiplicación binaria
Implementación de multiplicador binario shift left
Versión Secuencial (serie)

MULT se implementa con n


compuertas and en paralelo
necesita una unidad de control
sencilla
m ciclos de latencia
sumador de n+m bits

Multiplicación 31

Multiplicación sin signo


(repaso clase anterior)

Multiplicador shift right secuencial (serial) de números naturales

Multiplicación 32

16
Multiplicación con signo
(complemento a la base)

Se considera el signo del multiplicando en la acumulación de los


productos parciales
utiliza sumador/restador
consideración de overflow en el desplazamiento

Se interpreta el bit más significativo del multiplicador con peso


negativo
si el multiplicador es negativo, suma el opuesto del multiplicando en
última iteración

Multiplicación 33

Multiplicación con signo


(complemento a la base)

Ejemplo 1:

Determinar p = a.b, con


a y b representaciones en complemento a la base
tamaño de a 5 bits, entonces a está en [-16,15]
tamaño de b 4 bits, entonces b está en [-8, 7]
tamaño del resultado, p, 9 bits, entonces está en [-256,255]

Multiplicación 34

17
Multiplicación con signo
(complemento a la base)

Ejemplo 1:
Determinar p = a.b, a = -1210 (101002) y b = 710 (01112)

10100
x 0111
(0) -1
00000 p .2
10100 a.b 0
10100 p(1)
no hay overflow y
resultado negativo,

conserva signo
1

Multiplicación 35

Multiplicación con signo


(complemento a la base)

Ejemplo 1:
Determinar p = a.b, a = -1210 (101002) y b = 710 (01112)

10100 10100
x 0111 x 0111
(0) -1
00000 p .2 110100 p(1).2-1
10100 a.b0 10100 a.b1
10100 p(1) 011100 p(2)
no hay overflow y hay overflow y resultado
resultado negativo, positivo,

conserva signo invierte signo


1 1

Multiplicación 36

18
Multiplicación con signo
(complemento a la base)

Ejemplo 1:
Determinar p = a.b, a = -1210 (101002) y b = 710 (01112)

10100 10100 10100


x 0111 x 0111 x 0111
(0) -1
00000 p .2 110100 p(1).2-1 (2) -1
1011100 p .2
10100 a.b 0 10100 a.b1 10100 a.b 2
10100 p(1) 011100 p(2) 0101100 p(3)
no hay overflow y hay overflow y resultado hay overflow y resultado
resultado negativo, positivo, positivo,

conserva signo invierte signo invierte signo


1 1 1

Multiplicación 37

Multiplicación con signo


(complemento a la base)

Ejemplo 1:
Determinar p = a.b, a = -1210 (101002) y b = 710 (01112)

10100 10100 10100 10100


x 0111 x 0111 x 0111 x 0111
(0) -1
00000 p .2 110100 p(1).2-1 (2) -1
1011100 p .2
(3) -1
10101100 p .2
10100 a.b0 10100 a.b1 10100 a.b2 00000 a.b3
10100 p(1) 011100 p(2) 0101100 p(3) 10101100 p(4)
no hay overflow y hay overflow y resultado hay overflow y resultado no hay overflow y
resultado negativo, positivo, positivo, resultado negativo,

conserva signo invierte signo invierte signo conserva signo


1 1 1 1
p = p(4) = 1101011002 (-8410)
Se requiere sumador/restador de 5 bits
Multiplicación 38

19
Multiplicación con signo
(complemento a la base)

Ejemplo 2:
Determinar p = a.b, a = 1210 (011002) y b = -510 (10112)

01100
x 1011
00000 p(0).2-1
01100 a.b0
01100 p(1)
no hay overflow y
resultado positivo,

conserva signo
0

Multiplicación 39

Multiplicación con signo


(complemento a la base)

Ejemplo 2:
Determinar p = a.b, a = 1210 (011002) y b = -510 (10112)

01100 01100
x 1011 x 1011
00000 p(0).2-1 (1) -1
001100 p .2
01100 a.b0 01100 a.b1
01100 p(1) 100100 p(2)
no hay overflow y hay overflow y resultado
resultado positivo, negativo,

conserva signo invierte signo


0 0

Multiplicación 40

20
Multiplicación con signo
(complemento a la base)

Ejemplo 2:
Determinar p = a.b, a = 1210 (011002) y b = -510 (10112)

01100 01100 01100


x 1011 x 1011 x 1011
00000 p(0).2-1 (1) -1
001100 p .2
(2) -1
0100100 p .2
01100 a.b0 01100 a.b 1 00000 a.b 2

01100 p(1) 100100 p(2) 0100100 p(3)


no hay overflow y hay overflow y resultado no hay overflow y
resultado positivo, negativo, resultado positivo,

conserva signo invierte signo conserva signo


0 0 0

Multiplicación 41

Multiplicación con signo


(complemento a la base)

Ejemplo 2:
Determinar p = a.b, a = 1210 (011002) y b = -510 (10112)

01100 01100 01100 01100


x 1011 x 1011 x 1011 x 1011
00000 p(0).2-1 (1) -1
001100 p .2
(2) -1
0100100 p .2
(3) -1
00100100 p .2
01100 a.b0 01100 a.b1 00000 a.b2 10100 -a.b3
01100 p(1) 100100 p(2) 0100100 p(3) 11000100 p(4)
no hay overflow y hay overflow y resultado no hay overflow y no hay overflow y
resultado positivo, negativo, resultado positivo, resultado negativo,

conserva signo invierte signo conserva signo conserva signo


0 0 0 1
p = p(4) = 1110001002 (-6010)
Se requiere sumador/restador de 5 bits
Multiplicación 42

21
Multiplicación con signo
(complemento a la base)

Ejemplo 3:
Determinar p = a.b, a = -1210 (101002) y b = -510 (10112)

10100 10100 10100 10100


x 1011 x 1011 x 1011 x 1011
00000 p(0).2-1 (1) -1
110100 p .2
(2) -1
1011100 p .2
(3) -1
11011100 p .2
10100 a.b0 10100 a.b 1 00000 a.b 2 01100 -a.b 3

10100 p(1) 011100 p(2) 1011100 p(3) 00111100 p(4)


no hay overflow y hay overflow y resultado no hay overflow y no hay overflow y
resultado negativo, positivo, resultado negativo, resultado positivo,

conserva signo invierte signo conserva signo conserva signo


1 1 1 0
p = p(4) = 0001111002 (6010)
Se requiere sumador/restador de 5 bits
Multiplicación 43

Multiplicación con signo


(complemento a la base)

Ejemplo 4:
Determinar p = a.b, a = 1210 (011002) y b = 710 (01112)

01100 01100 01100 01100


x 0111 x 0111 x 0111 x 0111
(0) -1
00000 p .2 001100 p(1).2-1 (2) -1
0100100 p .2
(3) -1
01010100 p .2
01100 a.b0 01100 a.b1 01100 a.b2 00000 a.b3
01100 p(1) 100100 p(2) 1010100 p(3) 01010100 p(4)
no hay overflow y hay overflow y resultado hay overflow y resultado no hay overflow y
resultado positivo, negativo, negativo, resultado positivo,

conserva signo invierte signo invierte signo conserva signo


0 0 0 0
p = p(4) = 0010101002 (8410)
Se requiere sumador/restador de 5 bits
Multiplicación 44

22
Multiplicación con signo
(complemento a la base)
Implementación de multiplicador binario con signo shift right
Versión Secuencial (serie)
shr
a b
n

MULT MULT se implementa con n


n
compuertas and en paralelo
n
necesita una unidad de control
ADD/SUB
A’/S
sencilla
ovf A’/S

n m ciclos de latencia
sign

sumador/restador n bits
p shr

n+m-1 m-1 m-2 0

Multiplicación 45

23

También podría gustarte