ALU
Unidad aritmético-lógica
Definición
La ALU (unidad aritmético-lógica) es el dispositivo
que se encarga de realizar:
a) Operaciones aritméticas (suma, resta, etc.).
b) Operaciones lógicas (and, or, xor, etc.).
Universidad de Sonora Arquitectura de Computadoras 2
Circuitos combinatorios
Su salida depende exclusivamente de sus entradas.
Universidad de Sonora Arquitectura de Computadoras 3
Compuertas básicas
Universidad de Sonora Arquitectura de Computadoras 4
Compuertas básicas
AND OR
A B A·B A B A+B
0 0 0 0 0 0
0 1 0 0 1 1
1 0 0 1 0 1
1 1 1 1 1 1
NOT
A Ā
0 1
1 0
Universidad de Sonora Arquitectura de Computadoras 5
Otras compuertas
XOR (or exclusiv0).
EQV (equivalence).
NAND (not AND).
NOR (not OR).
Universidad de Sonora Arquitectura de Computadoras 6
Otras compuertas
XOR EQV
A B A XOR B A B A EQV B
0 0 0 0 0 1
0 1 1 0 1 0
1 0 1 1 0 0
1 1 0 1 1 1
Universidad de Sonora Arquitectura de Computadoras 7
Otras compuertas
NAND NOR
A B A NAND B A B A NOR B
0 0 1 0 0 1
0 1 0 0 1 1
1 0 0 1 0 1
1 1 0 1 1 0
Universidad de Sonora Arquitectura de Computadoras 8
Multiplexor
El multiplexor (mux) tiene 2n entradas de datos, n bits
de selección y una salida.
Los bits de selección se usan para decidir cuál entrada
pasa a la salida.
Mux 2 a 1
Universidad de Sonora Arquitectura de Computadoras 9
Multiplexor
Mux 4 a 1
Mux 8 a 1
Universidad de Sonora Arquitectura de Computadoras 10
Sumador completo
Sumador completo (full adder) de 1 bit:
Entradas: dos números 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 11
Sumador completo
Universidad de Sonora Arquitectura de Computadoras 12
Sumador completo
Suma = a b CarryIn
CarryOut = (a · CarryIn) + (b · CarryIn) + (a · b)
= (a + b) · CarryIn + (a · b)
Universidad de Sonora Arquitectura de Computadoras 13
Sumador completo
Diagrama a bloque.
Universidad de Sonora Arquitectura de Computadoras 14
ALU de 1 bit
Dos operaciones: AND y OR.
Un bit para seleccionar la operación.
Operación Salida
0 a·b
1 a+b
Universidad de Sonora Arquitectura de Computadoras 15
Agregando operaciones
El siguiente paso es agregar la suma.
Se agrega un sumador completo al diseño anterior.
Universidad de Sonora Arquitectura de Computadoras 16
ALU de 1 bit
3 operaciones: AND, OR y suma.
2 bits para seleccionar la operación.
Operación Resultado CarryOut
00 a·b X
01 a+b X
10 ab (a + b) · CarryIn +
CarryIn (a · b)
11 X X
Universidad de Sonora Arquitectura de Computadoras 17
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 18
ALU de 1 bit
4 operaciones: AND, OR, suma y resta.
2 bits para seleccionar la operación.
Un bit extra para diferenciar entre la suma y la resta.
En la resta, CarryIn es 1.
Universidad de Sonora Arquitectura de Computadoras 19
ALU de 1 bit
Universidad de Sonora Arquitectura de Computadoras 20
ALU de 1 bit
Operación Binvert CarryIn Resultado CarryOut
00 0 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 ab a + ¬b
11 X X X X
Universidad de Sonora Arquitectura de Computadoras 21
Agregando operaciones
Agregar la operación 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 22
ALU de 1 bit
5 operaciones: AND, OR, NOR, suma y resta.
2 bits para seleccionar la operación.
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 23
ALU de 1 bit
Universidad de Sonora Arquitectura de Computadoras 24
ALU de 1 bit
Operación 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 ab (a + b) · CarryIn +
CarryIn (a · b)
10 0 1 0 X X
10 0 1 1 ab a + ¬b
11 X X X X X
Universidad de Sonora Arquitectura de Computadoras 25
Agregando operaciones
Variando Ainvert y Binvert permite generar:
8 operaciones lógicas.
5 operaciones aritméticas.
Universidad de Sonora Arquitectura de Computadoras 26
Agregando operaciones
Operación 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 27
Agregando operaciones
Operación Ainvert Binvert CarryIn Función
aritmética
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 28
ALU de 32 bits
¿Cómo 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 29
ALU de 32 bits
Universidad de Sonora Arquitectura de Computadoras 30
ALU para MIPS
El diseño de la ALU está incompleto.
La mayoría de las instrucciones de MIPS pueden ser
realizadas con las operaciones AND, OR, suma y resta.
Se necesita soportar la instrucción 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 31
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 comparación de
$y y $z.
$x 0 0 … 0 $y < $z
31 30 … 1 0
Universidad de Sonora Arquitectura de Computadoras 32
Soportando slt
Se calcula t = $y - $z.
Si t es negativo $y < $z.
Si t es positivo o cero $y $z.
En MIPS los números negativos tienen 1 en el bit 31.
El bit 31 de t tiene el resultado de la comparación.
Universidad de Sonora Arquitectura de Computadoras 33
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 diseño anterior, tiene una entrada extra
llamada Less.
Otra para el bit 31.
Además 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 34
ALU para los bits 0 al 30
Universidad de Sonora Arquitectura de Computadoras 35
ALU para el bit 31
Universidad de Sonora Arquitectura de Computadoras 36
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 37
ALU de 32 bits
Universidad de Sonora Arquitectura de Computadoras 38
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 39
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 lógicas.
Universidad de Sonora Arquitectura de Computadoras 40
ALU para MIPS
Universidad de Sonora Arquitectura de Computadoras 41
Diagrama y tabla de la ALU
Líneas de Función
control
C3 C2 C1 C0
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
C3 = Ainvert
C2 = Bnegate
Universidad de Sonora Arquitectura de Computadoras 42
Overflow en MIPS
El overflow se presenta cuando el resultado de una
operación no se puede representar con 32 bits.
En MIPS hay dos clases de instrucciones aritméticas:
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 43