Está en la página 1de 47

ALU

Unidad aritmtico-lgica
Universidad de Sonora Arquitectura de Computadoras 2
Definicin
La ALU (unidad aritmtico-lgica) es el dispositivo
que se encarga de realizar:
a) Operaciones aritmticas (suma, resta, etc.).
b) Operaciones lgicas (and, or, xor, etc.).

Universidad de Sonora Arquitectura de Computadoras 3
Circuitos combinatorios
Su salida depende exclusivamente de sus entradas.

Universidad de Sonora Arquitectura de Computadoras 4
Compuertas bsicas

Universidad de Sonora Arquitectura de Computadoras 5
Compuertas bsicas
AND
A B A B
0 0 0
0 1 0
1 0 0
1 1 1
OR
A B A + B
0 0 0
0 1 1
1 0 1
1 1 1
NOT
A
0 1
1 0
Universidad de Sonora Arquitectura de Computadoras 6
Otras compuertas
XOR (or exclusiv0).
EQV (equivalence).
NAND (not AND).
NOR (not OR).
Universidad de Sonora Arquitectura de Computadoras 7
Multiplexor
El multiplexor (mux) tiene 2
n
entradas de datos, n bits
de seleccin y una salida.
Los bits de seleccin se usan para decidir cul entrada
pasa a la salida.
Mux 2 a 1
Universidad de Sonora Arquitectura de Computadoras 8
Multiplexor
Mux 4 a 1



Mux 8 a 1

Universidad de Sonora Arquitectura de Computadoras 9
Sumador completo
Sumador completo (full adder) de 1 bit:
Entradas: dos nmeros de 1 bit y un bit de carry de
entrada.
Salidas: la suma de 1 bit y un bit de carry de salida.

Universidad de Sonora Arquitectura de Computadoras 10
Sumador completo

Universidad de Sonora Arquitectura de Computadoras 11
Sumador completo
Suma = a b CarryIn
CarryOut = (a CarryIn) + (b CarryIn) + (a b)
= (a + b) CarryIn + (a b)


Universidad de Sonora Arquitectura de Computadoras 12
Sumador completo
Diagrama a bloque.
Universidad de Sonora Arquitectura de Computadoras 13
ALU de 1 bit
Dos operaciones: AND y OR.
Un bit para seleccionar la operacin.
Operacin Salida
0 a b
1 a + b
Universidad de Sonora Arquitectura de Computadoras 14
Agregando operaciones
El siguiente paso es agregar la suma.
Se agrega un sumador completo al diseo anterior.
Universidad de Sonora Arquitectura de Computadoras 15
ALU de 1 bit
3 operaciones: AND, OR y suma.
2 bits para seleccionar la operacin.
Operacin Resultado CarryOut
00 a b X
01 a + b X
10 a b
CarryIn
(a + b) CarryIn +
(a b)
11 X X
Universidad de Sonora Arquitectura de Computadoras 16
Agregando operaciones
Agregar la resta a b.
a b a + b si b est en complemento a 2.
El complemento a dos de b se encuentra sumando 1 al
complemento a uno de b.
El complemento a uno de b se encuentra negando a b.
a b = a + (b) = a + (b + 1) = a + b + 1
El 1 de la suma viene en CarryIn.

Universidad de Sonora Arquitectura de Computadoras 17
ALU de 1 bit
4 operaciones: AND, OR, suma y resta.
2 bits para seleccionar la operacin.
Un bit extra para diferenciar entre la suma y la resta.
En la resta, CarryIn es 1.

Universidad de Sonora Arquitectura de Computadoras 18
ALU de 1 bit

Universidad de Sonora Arquitectura de Computadoras 19
ALU de 1 bit
Operacin Binvert CarryIn Resultado CarryOut
00 X X a b X
01 0 X a + b X
10 0 X a b CarryIn (a + b) CarryIn +
(a b)
10 1 0 X X
10 1 1 a b a + b
11 X X X X
Universidad de Sonora Arquitectura de Computadoras 20
Agregando operaciones
Agregar la operacin NOR:
(a + b)
Ley de DeMorgan:
(a + b) = a b
La ALU ya puede calcular a b y b.
Hace falta poder calcular a.

Universidad de Sonora Arquitectura de Computadoras 21
ALU de 1 bit
5 operaciones: AND, OR, NOR, suma y resta.
2 bits para seleccionar la operacin.
Binvert diferencia entre la suma y la resta.
En la resta, CarryIn es 1.
Ainvert y Binvert diferencian entre AND y NOR.

Universidad de Sonora Arquitectura de Computadoras 22
ALU de 1 bit

Universidad de Sonora Arquitectura de Computadoras 23
ALU de 1 bit
Operacin Ainvert Binvert CarryIn Resultado CarryOut
00 0 0 X a b X
00 1 1 X a b X
01 0 0 X a + b X
10 0 0 X a b
CarryIn
(a + b) CarryIn +
(a b)
10 0 1 0 X X
10 0 1 1 a b a + b
11 X X X X X
Universidad de Sonora Arquitectura de Computadoras 24
Agregando operaciones
Variando Ainvert y Binvert permite generar:
8 operaciones lgicas.
5 operaciones aritmticas.

Universidad de Sonora Arquitectura de Computadoras 25
Agregando operaciones
Operacin Ainvert Binvert CarryIn Resultado CarryOut
00 0 0 X a b X
00 0 1 X a b X
00 1 0 X a b X
00 1 1 X a b X
01 0 0 X a + b X
01 0 1 X a + b X
01 1 0 X a + b X
01 1 1 X a + b X
Universidad de Sonora Arquitectura de Computadoras 26
Agregando operaciones
Operacin Ainvert Binvert CarryIn Funcin
aritmtica
10 0 0 0 a + b
10 0 0 1 a + b + 1
10 0 1 1 a - b
10 1 0 1 b - a
10 1 1 1 -a - b
Universidad de Sonora Arquitectura de Computadoras 27
ALU de 32 bits
Cmo se genera una ALU de 32 bits?
Con 32 ALUs de 1 bit.
CarryOut de la ALU
i
se conecta a CarryIn de la ALU
i+1
.
En la resta CarryIn ALU
0
se conecta a 1.

Universidad de Sonora Arquitectura de Computadoras 28
ALU de 32 bits
Universidad de Sonora Arquitectura de Computadoras 29
ALU para MIPS
El diseo de la ALU est incompleto.
La mayora de las instrucciones de MIPS pueden ser
realizadas con las operaciones AND, OR, suma y resta.
Se necesita soportar la instruccin slt (set on less
than).
slt $x, $y, $z guarda 1 en $x si $y < $z y 0 en otro caso.
Universidad de Sonora Arquitectura de Computadoras 30
Soportando slt
slt $x, $y, $z pone a ceros los bits 1 a 31 de $x.
El bit 0 de $x tiene el resultado de la comparacin de
$y y $z.

31 30 1 0
0 0

0 $y < $z $x
Universidad de Sonora Arquitectura de Computadoras 31
Soportando slt
Se calcula t = $y - $z.
Si t es negativo $y < $z.
Si t es positivo o cero $y $z.
En MIPS los nmeros negativos tienen 1 en el bit 31.
El bit 31 de t tiene el resultado de la comparacin.
Universidad de Sonora Arquitectura de Computadoras 32
Soportando slt
Para hacer una ALU de 32 bits se consideran dos tipos
de ALU distintos.
Una para los bits del 0 al 30.
Parecida al diseo anterior, tiene una entrada extra
llamada Less.
Otra para el bit 31.
Adems de la entrada Less, tiene una salida Set con el
signo de la resta y un detector de overflow.

Universidad de Sonora Arquitectura de Computadoras 33
ALU para los bits 0 al 30

Universidad de Sonora Arquitectura de Computadoras 34
ALU para el bit 31

Universidad de Sonora Arquitectura de Computadoras 35
ALU de 32 bits
Se conectan las 32 ALUs.
CarryOut de la ALU
i
se conecta a CarryIn de la ALU
i+1
.
Las entradas Less de la ALU
1
a la ALU
31
se ponen a 0.
La entrada Less de la ALU
0
se conecta a la salida Set
de la ALU
31
.
En la resta CarryIn de la ALU
0
se conecta a 1.

Universidad de Sonora Arquitectura de Computadoras 36
ALU de 32 bits

Universidad de Sonora Arquitectura de Computadoras 37
ALU para MIPS
Falta soportar los brincos condicionales.
beq $x, $y, L brinca a L si $x = $y.
bne $x, $y, L brinca a L si $x $y.
Se calcula t = $x - $y.
Si t es cero, $x = $y.
Si t no es cero, $x $y.
Universidad de Sonora Arquitectura de Computadoras 38
ALU para MIPS
Se agrega una salida Zero que detecte cuando todos
los bits de resultado sean cero.
Zero = (Result
31
+ Result
30
+ + Result
1
+ Result
0
)
Se combinan la entradas Binvert y CarryIn de la ALU
0

con el nombre Bnegate.
Binvert = CarryIn = 1 cuando hay que restar.
Binvert = CarryIn = 0 en la suma y operaciones lgicas.
Universidad de Sonora Arquitectura de Computadoras 39
ALU para MIPS

Universidad de Sonora Arquitectura de Computadoras 40
Diagrama y tabla de la ALU
Lneas de
control
Funcin
C
3
C
2
C
1
C
0
0 0 0 0 AND
0 0 0 1 OR
0 0 1 0 suma
0 1 1 0 resta
0 1 1 1 set on less than
1 1 0 0 NOR
C
3
= Ainvert
C
2
= Bnegate
Universidad de Sonora Arquitectura de Computadoras 41
Overflow
El overflow ocurre cuando el resultado de una
operacin no se puede representar en el hardware.
Con 4 bits, el rango de enteros con signo, usando
complemento a dos para los negativos, es de -8 a +7.
La suma 5 + 6 genera overflow.
La resta -5 6 genera overflow.

Universidad de Sonora Arquitectura de Computadoras 42
Overflow
Sumando 5 + 6 con 4 bits:
0101 (+5)
+ 0110 (+6)
-------------
1011 (-5) error!
Restando -5 6 con 4 bits:
1011 (-5)
+ 1010 (-6)
------------
0101 (+5) error!
Universidad de Sonora Arquitectura de Computadoras 43
Detectando overflow
El overflow ocurre en la suma cuando:
Al sumar dos positivos el resultado es negativo.
Al sumar dos negativos el resultado es positivo.
El overflow ocurre en la resta cuando:
Al restar un negativo de un positivo el resultado es
negativo.
Al restar un positivo de un negativo el resultado es
positivo.
Universidad de Sonora Arquitectura de Computadoras 44
Detectando overflow
Operacin A B Resultado indicando
overflow
A + B 0 0 < 0
A + B < 0 < 0 0
A B 0 < 0 < 0
A B < 0 0 0
Universidad de Sonora Arquitectura de Computadoras 45
Detectando overflow
Mtodo obvio: revisar los signos de los operandos y
del resultado.
Si los operandos son positivos, revisar que el resultado
sea positivo.
Los dems casos se hacen igual.
Mtodo no (tan) obvio: si el carry de entrada es
distinto al carry de salida en el bit mas significativo, se
gener overflow.
La demostracin se queda de tarea.
Universidad de Sonora Arquitectura de Computadoras 46
Overflow en MIPS
Las operaciones con enteros con signo deben
reconocer el overflow.
Con 4 bits, el rango es de -8 a +7.
5 + 6 genera overflow.
Las operaciones con enteros sin signo ignoran el
overflow.
Con 4 bits, el rango es de 0 a 15.
5 + 6 = 11.
14 + 7 = 5 (se ignora el ltimo carry).
Universidad de Sonora Arquitectura de Computadoras 47
Overflow en MIPS
En MIPS hay dos clases de instrucciones aritmticas:
1. La suma (add), suma inmediata (addi) y resta (sub),
reconocen el overflow.
2. La suma sin signo (addu), suma inmediata sin signo
(addiu) y resta sin signo (subu), ignoran el overflow.

También podría gustarte