Monografias.com > Computación
Descargar Imprimir Comentar Ver trabajos relacionados

Unidad aritmético lógica (ULA)




Enviado por Pablo Turmero



    Monografias.com

    1
    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.).

    Monografias.com

    2
    Circuitos combinatorios
    Su salida depende exclusivamente de sus entradas.

    Monografias.com

    3
    Compuertas básicas

    Monografias.com

    4
    Compuertas básicas

    Monografias.com

    5
    Otras compuertas
    XOR (or exclusiv0).
    EQV (equivalence).
    NAND (not AND).
    NOR (not OR).

    Monografias.com

    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

    Monografias.com

    7
    Multiplexor
    Mux 4 a 1

    Mux 8 a 1

    Monografias.com

    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.

    Monografias.com

    9
    Sumador completo

    Monografias.com

    10
    Sumador completo
    Suma = a ? b ? CarryIn
    CarryOut = (a · CarryIn) + (b · CarryIn) + (a · b)
    = (a + b) · CarryIn + (a · b)

    Monografias.com

    11
    Sumador completo
    Diagrama a bloque.

    Monografias.com

    12
    ALU de 1 bit
    Dos operaciones: AND y OR.
    Un bit para seleccionar la operación.

    Monografias.com

    13
    Agregando operaciones
    El siguiente paso es agregar la suma.
    Se agrega un sumador completo al diseño anterior.

    Monografias.com

    14
    ALU de 1 bit
    3 operaciones: AND, OR y suma.
    2 bits para seleccionar la operación.

    Monografias.com

    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.

    Monografias.com

    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.

    Monografias.com

    17
    ALU de 1 bit

    Monografias.com

    18
    ALU de 1 bit

    Monografias.com

    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.

    Monografias.com

    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.

    Monografias.com

    21
    ALU de 1 bit

    Monografias.com

    22
    ALU de 1 bit

    Monografias.com

    23
    Agregando operaciones
    Variando Ainvert y Binvert permite generar:
    8 operaciones lógicas.
    5 operaciones aritméticas.

    Monografias.com

    24
    Agregando operaciones

    Monografias.com

    25
    Agregando operaciones

    Monografias.com

    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.

    Monografias.com

    27
    ALU de 32 bits

    Monografias.com

    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.

    Monografias.com

    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.

    (Gp:) 31
    (Gp:) 30
    (Gp:) 1
    (Gp:) 0
    (Gp:) 0
    (Gp:) 0
    (Gp:) …
    (Gp:) …
    (Gp:) 0
    (Gp:) $y < $z
    (Gp:) $x

    Monografias.com

    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.

    Monografias.com

    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.

    Monografias.com

    32
    ALU para los bits 0 al 30

    Monografias.com

    33
    ALU para el bit 31

    Monografias.com

    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.

    Monografias.com

    35
    ALU de 32 bits

    Monografias.com

    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.

    Monografias.com

    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.

    Monografias.com

    38
    ALU para MIPS

    Monografias.com

    39
    Diagrama y tabla de la ALU

    Monografias.com

    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.

    Monografias.com

    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!

    Monografias.com

    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.

    Monografias.com

    43
    Detectando overflow

    Monografias.com

    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.

    Monografias.com

    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).

    Monografias.com

    46
    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.

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter