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
ab
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
ab
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
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
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