Vous êtes sur la page 1sur 15

1 1

13. Construccin de una unidad


aritmtica y lgica (numeros enteros)
scar David Robles Snchez
ngel Serrano Snchez de Len
Luis Rincn Crcoles
Estructura y Tecnologa de Computadores (ITIG)
2
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
Programa
1. Introduccin.
2. Construccin de una ALU bsica.
3. Multiplicacin bsica y su circuitera.
4. Divisin bsica y su circuitera.
5. Bibliografa.
Conceptos bsicos: Unidad aritmtico-lgica, operaciones lgicas, sumador,
restador, indicador de resultado, algoritmos de multiplicacin de enteros sin
signo, algoritmos de divisin de enteros sin signo (divisin por restauracin).
2 2
3
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
1. Introduccin
Una unidad aritmtica y lgica (UAL) es un circuito combinacional que
realiza las operaciones aritmticas y lgicas bsicas en el computador.
Operaciones aritmticas bsicas: suma, resta, multiplicacin, divisin.
Operaciones lgicas bsicas: NOT, AND, OR, NAND, NOR.
En ingls: ALU (arithmetic and logic unit).
En algunos sitios: unidad aritmtico-lgica.
A L U
operando1 operando2
operacin
indicador de resultado
resultado
4
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
2. Construccin de una ALU bsica
La implementacin de circuitos para operaciones lgicas es muy sencilla: basta
simplemente con una batera de puertas lgicas y un multiplexor accionado por
las correspondientes seales de seleccin.
Ejemplo: unidad lgica de 1 bit con las funciones AND y OR:
Operacin: seal de seleccin de 1 bit.
2.1. Operaciones lgicas
b
0
1
Result
Operation
a
Operacin
MUX
3 3
5
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
2.2. Sumador completo
Sumador completo (tema 6):
3 entradas (a, b y AcarreoE).
2 salidas (Suma y AcarreoS).
1+1+1=11 1 1 1 1 1
1+1+1=10 0 1 0 1 1
1+0+1=10 0 1 1 0 1
1+0+0=01 1 0 0 0 1
0+1+1=10 0 1 1 1 0
0+1+0=01 1 0 0 1 0
0+0+1=01 1 0 1 0 0
0+0+0=00 0 0 0 0 0
Suma AcarreoS AcarreoE b a
Operacin
Salidas Entradas
Suma
AcarreoE
AcarreoS
a
b
AcarreoE b a
oE abAcarre AcarreoE b a AcarreoE b a AcarreoE b a Suma
=
= + + + =
ab aAcarreoE bAcarreoE AcarreoS + + =
6
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
Aadimos el sumador completo a nuestra ALU, haciendo ms grande el
multiplexor:
b
0
2
Operacin
a
1
AcarreoE
AcarreoS
Resultado
4 4
7
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
2.3. Restador
Resta en complemento a 2: suma del negado ms 1.
1 b a 1) b ( a (-b) a b - a + + = + + = + =
Resta: AcarreoE = InvertirB = 1
8
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
2.4. Operacin slt (activar si menor que)
slt $rd, $rs, $rt
0
3
Resultado
Operacin
a
1
AcarreoE
0
1
InvertirB
b 2
Menor
Comparacin
Desbordamiento
Deteccin del
Desbordamiento
Bits 0 - 30 Bit 31
$rd = 00000001
16
si $rs < $rt
$rd = 00000000
16
si $rs $rt
5 5
9
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
Resta: AcarreoE = InvertirB = 1
Suma: AcarreoE = InvertirB = 0
Ambas se pueden combinar en una
nica seal NegarB.
Comparacin
a31
0
Resultado0
AcarreoE
a0
Resultado1
a1
0
Resultado2
a2
0
Operacin
b31
b0
b1
b2
Resultado31
Desbordamiento
InvertirB
AcarreoE
AcarreoE
ALU0
Menor
AcarreoS
AcarreoE
ALU1
Menor
AcarreoS
AcarreoE
ALU2
Menor
AcarreoS
AcarreoE
ALU31
Menor
10
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
Comparacin
a31
0
Resultado0
a0
Resultado1
a1
0
Resultado2
a2
0
Operacin
b31
b0
b1
b2
Resultado31
Desbordamiento
InvertirB
Cero
AcarreoE
ALU31
Menor
AcarreoE
ALU0
Menor
AcarreoS
AcarreoE
ALU1
Menor
AcarreoS
AcarreoE
ALU2
Menor
AcarreoS
2.5. Indicador de resultado: Detector de ceros
6 6
11
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
set on less than 111
resta 110
suma 010
or 001
and 000
Funcin Lineas de control de la ALU
ALU Resultado
Cero
Desbordamiento
a
b
Operacin ALU
AcarreoS
NegarB Seales de control del MUX
2.6. Resumen de la ALU hasta ahora
12
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
3. Multiplicacin bsica y su circuitera
0010
0011
0010
0010
0000
+ 0000
0000110
Multiplicando
Multiplicador
Producto
Vamos a estudiar tres algoritmos de multiplicacin para enteros sin signo.
7 7
13
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
Primera versin del algoritmo y su circuiteria
1 registro y desplazador hacia la izquierda de
64 bits (multiplicando).
1 registro desplazador hacia la derecha de 32
bits (multiplicador).
1 registro de 64 bits (producto).
ALU para datos de 64 bits.
Circuitera de control.
14
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
4
3
2
1
0000 0110 0010 0000 0000 3: Despl. Mcador. dcha.
0000 0110 0010 0000 0000 2: Despl. Mcando. izda.
0000 0110 0001 0000 0000 1: Ninguna operacin
0000 0110 0001 0000 0000 3: Despl. Mcador. dcha.
0000 0110 0001 0000 0000 2: Despl. Mcando. izda.
0000 0110 0000 1000 0000 1: Ninguna operacin
0000 0110 0000 1000 0000 3: Despl. Mcador. dcha.
0000 0110 0000 1000 0001 2: Despl. Mcando. izda.
0000 0110 0000 0100 0001 1a: Prd. = Prd. + Mcando.
0000 0010 0000 0100 0001 3: Despl. Mcador. dcha.
0000 0010 0000 0100 0011 2: Despl. Mcando. izda.
0000 0010 0000 0010 0011 1a: Prd. = Prd. + Mcando.
0000 0000 0000 0010 0011 Valores iniciales 0
Producto Multiplicando Multiplicador Operacin Iteracin
Resultado
0010 0011 = ?
8 8
15
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
Segunda versin del algoritmo y su circuitera
La mitad de los bits del multiplicando en el algoritmo anterior son 0.
La ALU de 64 bits es un despilfarro.
Al desplazar, se introducen ceros por la derecha del multiplicando, que ya
no afectarn a los bits menos significativos del producto.
Por tanto: multiplicando fijo y desplazamiento del producto a la derecha.
16
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
1 registro de 32 bits (multiplicando).
1 registro desplazador hacia la derecha de 32
bits (multiplicador).
1 registro desplazador hacia la derecha de 64
bits (producto).
ALU para datos de 32 bits.
Circuitera de control.
9 9
17
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
4
3
2
1
0000 0110 0010 0000 3: Despl. Mcador. dcha.
0000 0110 0010 0000 2: Despl. Prd. dcha.
0000 1100 0010 0000 1: Ninguna operacin
0000 1100 0010 0000 3: Despl. Mcador. dcha.
0000 1100 0010 0000 2: Despl. Prd. dcha.
0001 1000 0010 0000 1: Ninguna operacin
0001 1000 0010 0000 3: Despl. Mcador. dcha.
0001 1000 0010 0001 2: Despl. Prd. dcha.
0011 0000 0010 0001 1a: Prd. = Prd. + Mcando.
0001 0000 0010 0001 3: Despl. Mcador. dcha.
0001 0000 0010 0011 2: Despl. Prd. dcha.
0010 0000 0010 0011 1a: Prd. = Prd. + Mcando.
0000 0000 0010 0011 Valores iniciales 0
Producto Multiplicando Multiplicador Operacin Iteracin
Resultado
0010 0011 = ?
18
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
El registro producto tiene espacio desaprovechado, en el que encaja el
multiplicador:
A medida que dicho espacio desaparece, los bits del multiplicador tambin.
El registro multiplicador se pone en la mitad derecha del registro producto.
Versin final del algoritmo y su circuitera
10 10
19
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
1 registro de 32 bits (multiplicando).
1 registro desplazador hacia la derecha de 64
bits (producto).
ALU para datos de 32 bits.
Circuitera de control.
20
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
0000 0110 0010 2: Despl. Prd. dcha.
0000 1100 0010 1: Ninguna operacin 4
0000 1100 0010 2: Despl. Prd. dcha.
0001 1000 0010 1: Ninguna operacin 3
0001 1000 0010 2: Despl. Prd. dcha.
0011 0001 0010 1a: Prd. = Prd. + Mcando. 2
0001 0001 0010 2: Despl. Prd. dcha.
0010 0011 0010 1a: Prd. = Prd. + Mcando. 1
0000 0011 0010 Valores iniciales 0
Producto Multiplicando Operacin Iteracin
Resultado
0010 0011 = ?
11 11
21
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
111 10
-10 11
011
-10
01
Divisor
Cociente
Dividendo
Resto
No existe un bloque combinacional divisor.
Hacer un circuito que resuelva la operacin rpido es ms
complicado que en la multiplicacin.
Secuencia de sumas, restas, comparaciones y
desplazamientos.
La divisin ofrece la posibilidad de dividir por 0.
Vamos a estudiar tres algoritmos de divisin por
restauracin para enteros sin signo.
4. Divisin bsica y su circuitera
22
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
1 registro desplazador hacia la derecha de 64
bits (divisor).
1 registro desplazador hacia la izquierda de 32
bits (cociente).
ALU para datos de 64 bits.
1 registro de 64 bits (resto).
Circuitera de control.
Primera versin del algoritmo y su circuiteria
12 12
23
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
0000 0001 0000 0001 0011
3: Despl. Div. dcha.
0000 0001 0000 0010 0011
2a: Rst.0 Despl. Coc., Coc
0
=1
5
0000 0001 0000 0010 0001
1: Rst. = Rst. Div.
0000 0011 0000 0010 0001
3: Despl. Div. dcha.
0000 0011 0000 0100 0001
2a: Rst.0 Despl. Coc., Coc
0
=1
4
0000 0011 0000 0100 0000
1: Rst. = Rst. Div.
0000 0111 0000 0100 0000
3: Despl. Div. dcha.
0000 0111 0000 1000 0000
2b: Rst.<0 Rst.=Rst.+Div., Despl. Coc., Coc
0
=0
3
1111 1111 0000 1000 0000
1: Rst. = Rst. Div.
0000 0111 0000 1000 0000
3: Despl. Div. dcha.
0000 0111 0001 0000 0000
2b: Rst.<0 Rst.=Rst.+Div., Despl. Coc., Coc
0
=0
2
1111 0111 0001 0000 0000
1: Rst. = Rst. Div.
0000 0111 0001 0000 0000
3: Despl. Div. dcha.
0000 0111 0010 0000 0000
2b: Rst.<0 Rst.=Rst.+Div., Despl. Coc., Coc
0
=0
1
1110 1011 0010 0000 0000
1: Rst. = Rst. Div.
0000 0111 0010 0000 0000
Valores iniciales
0
Resto Divisor Cociente Operacin Iteracin
0111 0010 = ?
Resto Cociente
24
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
Segunda versin del algoritmo y su circuitera
Como mucho, slo la mitad del divisor contiene informacin til.
Se pueden reducir el registro Divisor y la ALU a la mitad.
Desplazar el resto a la izquierda consigue el mismo efecto (alineacin)
que desplazar el divisor a la derecha.
Se simplifica as la circuitera necesaria.
13 13
25
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
1 registro de 32 bits (divisor).
1 registro desplazador hacia la izquierda de 32 bits (cociente).
ALU para datos de 32 bits.
1 registro desplazador hacia la izquierda de 64 bits (resto).
Circuitera de control.
26
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
De forma anloga a la multiplicacin, se puede introducir el registo
Cociente en el de Resto.
Resto se inicializa con el dividendo en su mitad derecha y el cociente en
su izquierda.
Esta mejora hace que el resto sufra un desplazamiento a la izquierda de
ms, lo que requiere una rectificacin final.
Versin final del algoritmo y su circuitera
14 14
27
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
1 registro de 32 bits (divisor).
1 registro desplazador derecha-izquierda
de 64 bits (resto).
ALU para datos de 32 bits.
Circuitera de control.
28
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
0001 0011 0010 Despl. 1 bit a la dcha. la mitad izda. del Rst. 5
0010 0011 0010 3a: Rst.0 Despl. Rst. izda., Rst
0
=1
0001 0001 0010 2: Rst. = Rst. Div. 4
0011 0001 0010 3a: Rst.0 Despl. Rst. izda., Rst
0
=1
0001 1000 0010 2: Rst. = Rst. Div. 3
0011 1000 0010 3b: Rst.<0 Rst.=Rst.+Div., despl. Rst. izda.,
Rst
0
=0
1111 1100 0010 2: Rst. = Rst. Div. 2
0001 1100 0010 3b: Rst.<0 Rst.=Rst.+Div., despl. Rst. izda.,
Rst
0
=0
1110 1110 0010 2: Rst. = Rst. Div. 1
0000 1110 0010 Despl. Rst. izda.
0000 0111 0010 Valores iniciales 0
Resto Divisor Operacin Iteracin
0111 0010 = ?
Resto Cociente
15 15
29
Tema 13. Construccin de una unidad aritmtica y lgica (nmeros enteros)
5. Bibliografa
D.A. PATTERSON, J.L HENNESSY. Computer Organization and Design.
Morgan Kaufmann, 2005.
D. A. PATTERSON, J. L. HENNESSY. Estructura y diseo de computadores.
Revert, 2000.
DORMIDO, S. CANTO M.A., MIRA J., DELGADO A.E. Estructura y Tecnologa
de Computadores. 2 edicin. Sanz y Torres, 2000.
D. A. PATTERSON, J. L., HENNESSY. Computer Organization and Design.
Morgan Kaufmann, 2005.
J.M. ANGULO, J.GARCA. Sistemas Digitales y Tecnologa de Computadores.
Paraninfo, 2002.
P. DE MIGUEL. Fundamentos de los Computadores. 7 edicin. Paraninfo,
1999.
W. STALLINGS. Organizacin y Arquitectura de Computadores. 5 edicin,
Prentice Hall, 2000.

Vous aimerez peut-être aussi