540 likes | 1.14k Views
ALU. Unidad aritmético-lógica. Definición. La ALU (unidad aritmético-lógica) es el dispositivo que se encarga de realizar: Operaciones aritméticas (suma, resta, etc.). Operaciones lógicas (and, or, xor, etc.). Circuitos combinatorios. Su salida depende exclusivamente de sus entradas.
E N D
ALU Unidad aritmético-lógica
Definición • La ALU (unidad aritmético-lógica) es el dispositivo que se encarga de realizar: • Operaciones aritméticas (suma, resta, etc.). • Operaciones lógicas (and, or, xor, etc.). Arquitectura de Computadoras
Circuitos combinatorios • Su salida depende exclusivamente de sus entradas. Arquitectura de Computadoras
Compuertas básicas Arquitectura de Computadoras
Compuertas básicas 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 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 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 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. Arquitectura de Computadoras
Sumador completo Arquitectura de Computadoras
Sumador completo • Suma = a b CarryIn • CarryOut = (a · CarryIn) + (b · CarryIn) + (a · b) = (a + b) · CarryIn + (a · b) Arquitectura de Computadoras
Sumador completo • Diagrama a bloque. Arquitectura de Computadoras
ALU de 1 bit • Dos operaciones: AND y OR. • Un bit para seleccionar la operación. Arquitectura de Computadoras
Agregando operaciones • El siguiente paso es agregar la suma. • Se agrega un sumador completo al diseño anterior. Arquitectura de Computadoras
ALU de 1 bit • 3 operaciones: AND, OR y suma. • 2 bits para seleccionar la operación. Arquitectura de Computadoras
Agregando operaciones • Agregar la resta a – b. • a – ba + 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. Arquitectura de Computadoras
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. Arquitectura de Computadoras
ALU de 1 bit Arquitectura de Computadoras
ALU de 1 bit Arquitectura de Computadoras
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. Arquitectura de Computadoras
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. Arquitectura de Computadoras
ALU de 1 bit Arquitectura de Computadoras
ALU de 1 bit Arquitectura de Computadoras
Agregando operaciones • Variando Ainvert y Binvert permite generar: • 8 operaciones lógicas. • 5 operaciones aritméticas. Arquitectura de Computadoras
Agregando operaciones Arquitectura de Computadoras
Agregando operaciones Arquitectura de Computadoras
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. Arquitectura de Computadoras
ALU de 32 bits Arquitectura de Computadoras
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. Arquitectura de Computadoras
$x 0 0 … 0 $y < $z 30 … 1 0 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. Arquitectura de Computadoras
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. Arquitectura de Computadoras
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. Arquitectura de Computadoras
ALU para los bits 0 al 30 Arquitectura de Computadoras
ALU para el bit 31 Arquitectura de Computadoras
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. Arquitectura de Computadoras
ALU de 32 bits Arquitectura de Computadoras
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
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. Arquitectura de Computadoras
ALU para MIPS Arquitectura de Computadoras
Diagrama y tabla de la ALU Arquitectura de Computadoras
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. Arquitectura de Computadoras
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
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
Detectando overflow Arquitectura de Computadoras
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. Arquitectura de Computadoras
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
Overflow en MIPS • En MIPS hay dos clases de instrucciones aritméticas: • La suma (add), suma inmediata (addi) y resta (sub), reconocen el overflow. • La suma sin signo (addu), suma inmediata sin signo (addiu) y resta sin signo (subu), ignoran el overflow. Arquitectura de Computadoras