ALU Unidad aritmético-lógica. Universidad de SonoraArquitectura de Computadoras2 Definición La...
-
Upload
rufino-sarmiento -
Category
Documents
-
view
114 -
download
2
Transcript of ALU Unidad aritmético-lógica. Universidad de SonoraArquitectura de Computadoras2 Definición La...
ALUUnidad aritmético-lógica
Universidad de Sonora Arquitectura de Computadoras 2
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 3
Circuitos combinatoriosSu salida depende exclusivamente de sus
entradas.
Universidad de Sonora Arquitectura de Computadoras 4
Compuertas básicas
Universidad de Sonora Arquitectura de Computadoras 5
Compuertas básicasAND
A B A · B
0 0 0
0 1 0
1 0 0
1 1 1
OR
A B A + B
0 0 0
0 1 1
1 0 1
1 1 1
NOT
A Ā
0 1
1 0
Universidad de Sonora Arquitectura de Computadoras 6
Otras compuertasXOR (or exclusiv0).EQV (equivalence).NAND (not AND).NOR (not OR).
Universidad de Sonora Arquitectura de Computadoras 7
MultiplexorEl 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 8
MultiplexorMux 4 a 1
Mux 8 a 1
Universidad de Sonora Arquitectura de Computadoras 9
Sumador completoSumador 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 10
Sumador completo
Universidad de Sonora Arquitectura de Computadoras 11
Sumador completoSuma = a b CarryInCarryOut = (a · CarryIn) + (b · CarryIn) + (a ·
b) = (a + b) · CarryIn + (a · b)
Universidad de Sonora Arquitectura de Computadoras 12
Sumador completoDiagrama a bloque.
Universidad de Sonora Arquitectura de Computadoras 13
ALU de 1 bitDos 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 14
Agregando operacionesEl siguiente paso es agregar la suma.Se agrega un sumador completo al diseño
anterior.
Universidad de Sonora Arquitectura de Computadoras 15
ALU de 1 bit3 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 a b CarryIn
(a + b) · CarryIn + (a · b)
11 X X
Universidad de Sonora Arquitectura de Computadoras 16
Agregando operacionesAgregar 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 + 1El 1 de la suma viene en CarryIn.
Universidad de Sonora Arquitectura de Computadoras 17
ALU de 1 bit4 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 18
ALU de 1 bit
Universidad de Sonora Arquitectura de Computadoras 19
ALU de 1 bitOperación Binvert CarryIn Resultado CarryOut
00 X 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 a b a + ¬b
11 X X X X
Universidad de Sonora Arquitectura de Computadoras 20
Agregando operacionesAgregar la operación NOR:
¬(a + b)Ley de DeMorgan:
¬(a + b) = ¬a · ¬bLa ALU ya puede calcular a · b y ¬b.Hace falta poder calcular ¬a.
Universidad de Sonora Arquitectura de Computadoras 21
ALU de 1 bit5 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 22
ALU de 1 bit
Universidad de Sonora Arquitectura de Computadoras 23
ALU de 1 bitOperació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 24
Agregando operacionesVariando Ainvert y Binvert permite generar:
8 operaciones lógicas.5 operaciones aritméticas.
Universidad de Sonora Arquitectura de Computadoras 25
Agregando operacionesOperació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 26
Agregando operacionesOperació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 27
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 28
ALU de 32 bits
Universidad de Sonora Arquitectura de Computadoras 29
ALU para MIPSEl 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 30
Soportando sltslt $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.
31 30 1 0
0 0 …
…
0 $y < $z$x
Universidad de Sonora Arquitectura de Computadoras 31
Soportando sltSe 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 32
Soportando sltPara 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 33
ALU para los bits 0 al 30
Universidad de Sonora Arquitectura de Computadoras 34
ALU para el bit 31
Universidad de Sonora Arquitectura de Computadoras 35
ALU de 32 bitsSe 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 36
ALU de 32 bits
Universidad de Sonora Arquitectura de Computadoras 37
ALU para MIPSFalta 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 38
ALU para MIPSSe 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 39
ALU para MIPS
Universidad de Sonora Arquitectura de Computadoras 40
Diagrama y tabla de la ALULíneas de
controlFunció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 NORC3 = Ainvert
C2 = Bnegate
Universidad de Sonora Arquitectura de Computadoras 41
OverflowEl 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 42
OverflowSumando 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 43
Detectando overflowEl 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 44
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 45
Detectando overflowMé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 46
Overflow en MIPSLas 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 47
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.