Você está na página 1de 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.).

Arquitectura de Computadoras

Circuitos combinatorios
Su salida depende exclusivamente de sus entradas.

Arquitectura de Computadoras

Compuertas bsicas

Arquitectura de Computadoras

Compuertas bsicas
AND

OR

AB

A+B

NOT
A

Arquitectura de Computadoras

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

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

Arquitectura de Computadoras

Multiplexor
Mux 4 a 1

Mux 8 a 1

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.

Arquitectura de Computadoras

Sumador completo

Arquitectura de Computadoras

10

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

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

Arquitectura de Computadoras

11

Sumador completo
Diagrama a bloque.

Arquitectura de Computadoras

12

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

Arquitectura de Computadoras

Operacin

Salida

ab

a+b
13

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

Arquitectura de Computadoras

14

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

CarryOut

00

ab

01

a+b

10

ab
CarryIn

(a + b) CarryIn +
(a b)

11

Arquitectura de Computadoras

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.

Arquitectura de Computadoras

17

ALU de 1 bit

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

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.

Arquitectura de Computadoras

21

ALU de 1 bit

Arquitectura de Computadoras

22

ALU de 1 bit
Operacin Ainvert

Binvert

CarryIn

Resultado

CarryOut

00

ab

00

a b

01

a+b

10

ab
CarryIn

(a + b) CarryIn +
(a b)

10

10

ab

a + b

11

Arquitectura de Computadoras

23

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

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

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

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.

Arquitectura de Computadoras

27

ALU de 32 bits

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.

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

Arquitectura de Computadoras

$y < $z

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.

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.

Arquitectura de Computadoras

32

ALU para los bits 0 al 30

Arquitectura de Computadoras

33

ALU para el bit 31

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

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.

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.

Arquitectura de Computadoras

38

ALU para MIPS

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

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!
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.

Arquitectura de Computadoras

43

Detectando overflow
Operacin

Resultado indicando
overflow

A+B

<0

A+B

<0

<0

AB

<0

<0

AB

<0

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.

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).

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.

Arquitectura de Computadoras

47

Você também pode gostar