ALU - Unidad aritmético-lógica
Download
Report
Transcript ALU - Unidad aritmético-lógica
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
Universidad de Sonora
A
Ā
0
1
1
0
Arquitectura de Computadoras
5
Otras compuertas
XOR (or exclusiv0).
EQV (equivalence).
NAND (not AND).
NOR (not OR).
Universidad de Sonora
Arquitectura de Computadoras
6
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
7
Multiplexor
Mux 4 a 1
Mux 8 a 1
Universidad de Sonora
Arquitectura de Computadoras
8
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
9
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 operación.
Universidad de Sonora
Arquitectura de Computadoras
Operación
Salida
0
a·b
1
a+b
13
Agregando operaciones
El siguiente paso es agregar la suma.
Se agrega un sumador completo al diseño anterior.
Universidad de Sonora
Arquitectura de Computadoras
14
ALU de 1 bit
3 operaciones: AND, OR y suma.
2 bits para seleccionar la operación.
Operación Resultado
Universidad de Sonora
CarryOut
00
a·b
X
01
a+b
X
10
ab
CarryIn
(a + b) · CarryIn +
(a · b)
11
X
X
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 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
17
ALU de 1 bit
Universidad de Sonora
Arquitectura de Computadoras
18
ALU de 1 bit
Operación Binvert CarryIn
Resultado
CarryOut
00
X
X
a·b
X
01
0
X
a+b
X
10
0
X
10
1
0
X
X
10
1
1
ab
a + ¬b
11
X
X
X
X
Universidad de Sonora
a b CarryIn (a + b) · CarryIn +
(a · b)
Arquitectura de Computadoras
19
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
20
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
21
ALU de 1 bit
Universidad de Sonora
Arquitectura de Computadoras
22
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
CarryIn
(a + b) · 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
23
Agregando operaciones
Variando Ainvert y Binvert permite generar:
8 operaciones lógicas.
5 operaciones aritméticas.
Universidad de Sonora
Arquitectura de Computadoras
24
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
25
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
26
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
27
ALU de 32 bits
Universidad de Sonora
Arquitectura de Computadoras
28
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
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 comparación de
$y y $z.
$x
Universidad de Sonora
0
0
…
31
30
…
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 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
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 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
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 lógicas.
Universidad de Sonora
Arquitectura de Computadoras
38
ALU para MIPS
Universidad de Sonora
Arquitectura de Computadoras
39
Diagrama y tabla de la ALU
Líneas de
control
Función
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
40
Overflow
El overflow ocurre cuando el resultado de una
operación 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
Operación
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
44
Detectando overflow
Método obvio: revisar los signos de los operandos y del
resultado.
Si los operandos son positivos, revisar que el resultado
sea positivo.
Los demás casos se hacen igual.
Método no (tan) obvio: si el carry de entrada es
distinto al carry de salida en el bit mas significativo, se
generó overflow.
La demostración 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 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
47