You are on page 1of 47

ALU

Unidad aritmtico-lgica

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

Circuitos combinatorios
Su salida depende exclusivamente de sus

entradas.

Universidad de Sonora

Arquitectura de Computadoras

Compuertas bsicas

Universidad de Sonora

Arquitectura de Computadoras

Compuertas bsicas
AND

OR

AB

A+B

NOT

Universidad de Sonora

0
Arquitectura de Computadoras

Otras compuertas
XOR (or exclusiv0).
EQV (equivalence).
NAND (not AND).
NOR (not OR).

Universidad de Sonora

Arquitectura de Computadoras

Multiplexor
El multiplexor (mux) tiene 2n 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

Multiplexor
Mux 4 a 1

Mux 8 a 1

Universidad de Sonora

Arquitectura de Computadoras

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

Sumador completo

Universidad de Sonora

Arquitectura de Computadoras

10

Sumador completo
Suma = a b CarryIn
CarryOut = (a CarryIn) + (b CarryIn) + (a

b)
= (a + b) CarryIn + (a b)

Universidad de Sonora

Arquitectura de Computadoras

11

Sumador completo
Diagrama a bloque.

Universidad de Sonora

Arquitectura de Computadoras

12

ALU de 1 bit
Dos operaciones: AND y OR.
Un bit para seleccionar la operacin.

Universidad de Sonora

Operacin

Salida

ab

a+b

Arquitectura de Computadoras

13

Agregando operaciones
El siguiente paso es agregar la suma.
Se agrega un sumador completo al diseo

anterior.

Universidad de Sonora

Arquitectura de Computadoras

14

ALU de 1 bit
3 operaciones: AND, OR y suma.
2 bits para seleccionar la operacin.
Operacin Resultado
00

ab

01

a+b

10

ab
CarryIn
X

(a + b) CarryIn +
(a b)

11
Universidad de Sonora

CarryOut

Arquitectura de Computadoras

X
15

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

16

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

17

ALU de 1 bit

Universidad de Sonora

Arquitectura de Computadoras

18

ALU de 1 bit
Operacin Binvert CarryIn

Resultado

CarryOut

00

ab

01

a+b

10

10

10

ab

a + b

11

Universidad de Sonora

a b CarryIn (a + b) CarryIn +
(a b)

Arquitectura de Computadoras

19

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

20

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

21

ALU de 1 bit

Universidad de Sonora

Arquitectura de Computadoras

22

ALU de 1 bit
Operacin Ainvert

Binvert

CarryIn

Resultado

CarryOut

00

ab

00

a b

01

a+b

10

(a + b) CarryIn +
(a b)

10

ab
CarryIn
X

10

ab

a + b

11

Universidad de Sonora

Arquitectura de Computadoras

23

Agregando operaciones
Variando Ainvert y Binvert permite generar:
8 operaciones lgicas.
5 operaciones aritmticas.

Universidad de Sonora

Arquitectura de Computadoras

24

Agregando operaciones
Operacin

Ainvert

Binvert

CarryIn

Resultado

CarryOut

00

ab

00

a b

00

a b

00

a b

01

a+b

01

a + b

01

a + b

01

a + b

Universidad de Sonora

Arquitectura de Computadoras

25

Agregando operaciones
Operacin

Ainvert

Binvert

CarryIn

Funcin
aritmtica

10

a+b

10

a+b+1

10

a-b

10

b-a

10

-a - b

Universidad de Sonora

Arquitectura de Computadoras

26

ALU de 32 bits
Cmo se genera una ALU de 32 bits?
Con 32 ALUs de 1 bit.
CarryOut de la ALUi se conecta a CarryIn de la

ALUi+1.
En la resta CarryIn ALU0 se conecta a 1.

Universidad de Sonora

Arquitectura de Computadoras

27

ALU de 32 bits

Universidad de Sonora

Arquitectura de Computadoras

28

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

29

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.
$x

31

30

Universidad de Sonora

Arquitectura de Computadoras

0
1

$y < $z
0

30

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

31

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

32

ALU para los bits 0 al 30

Universidad de Sonora

Arquitectura de Computadoras

33

ALU para el bit 31

Universidad de Sonora

Arquitectura de Computadoras

34

ALU de 32 bits
Se conectan las 32 ALUs.
CarryOut de la ALUi se conecta a CarryIn de la

ALUi+1.
Las entradas Less de la ALU1 a la ALU31 se

ponen a 0.
La entrada Less de la ALU0 se conecta a la
salida Set de la ALU31.
En la resta CarryIn de la ALU0 se conecta a 1.

Universidad de Sonora

Arquitectura de Computadoras

35

ALU de 32 bits

Universidad de Sonora

Arquitectura de Computadoras

36

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

37

ALU para MIPS


Se agrega una salida Zero que detecte

cuando todos los bits de resultado sean cero.


Zero = (Result31 + Result30 + + Result1 +

Result0)

Se combinan la entradas Binvert y CarryIn de

la ALU0 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

38

ALU para MIPS

Universidad de Sonora

Arquitectura de Computadoras

39

Diagrama y tabla de la
ALU
Lneas de
control

Funcin

C3 C2 C1 C0
0

AND

OR

suma

resta

set on less than

NOR

C3 = Ainvert
Universidad de Sonora

C2 = Bnegate

Arquitectura de Computadoras

40

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

41

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

42

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

43

Detectando overflow
Operacin

Resultado indicando
overflow

A+B

<0

A+B

<0

<0

AB

<0

<0

AB

<0

Universidad de Sonora

Arquitectura de Computadoras

44

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

45

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

46

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.

Universidad de Sonora

Arquitectura de Computadoras

47