07 alu
-
Upload
riky-rico-d -
Category
Education
-
view
285 -
download
1
Transcript of 07 alu
ALUUnidad aritmético-lógica
PRESENTA ING. J. D. AURELIO RICO DIAZ
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.).
Arquitectura de Computadoras 3
Circuitos combinatoriosSu salida depende exclusivamente de sus
entradas.
Arquitectura de Computadoras 4
Compuertas básicas
Arquitectura de Computadoras 5
Compuertas básicasAND
A B A · B0 0 00 1 01 0 01 1 1
ORA B A + B0 0 00 1 11 0 11 1 1
NOTA Ā0 11 0
Arquitectura de Computadoras 6
Otras compuertasXOR (or exclusiv0).EQV (equivalence).NAND (not AND).NOR (not OR).
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
Arquitectura de Computadoras 8
MultiplexorMux 4 a 1
Mux 8 a 1
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.
Arquitectura de Computadoras 10
Sumador completo
Arquitectura de Computadoras 11
Sumador completoSuma = a b CarryInCarryOut = (a · CarryIn) + (b · CarryIn) + (a ·
b) = (a + b) · CarryIn + (a · b)
Arquitectura de Computadoras 12
Sumador completoDagrama a bloque.
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
Arquitectura de Computadoras 14
Agregando operacionesEl siguiente paso es agregar la suma.Se agrega un sumador completo al diseño
anterior.
Arquitectura de Computadoras 15
ALU de 1 bit3 operaciones: AND, OR y suma.2 bits para seleccionar la operación.
Operación Resultado CarryOut00 a · b X
01 a + b X
10 a b CarryIn
(a + b) · CarryIn + (a · b)
11 X X
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.
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.
Arquitectura de Computadoras 18
ALU de 1 bit
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
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.
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
Arquitectura de Computadoras 24
Agregando operacionesVariando Ainvert y Binvert permite generar:
8 operaciones lógicas.5 operaciones aritméticas.
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
Arquitectura de Computadoras 26
Agregando operacionesOperación Ainvert Binvert CarryIn Función
aritmética10 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
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
Arquitectura de Computadoras 29
ALU para los bits 0 al 30
Arquitectura de Computadoras 30
ALU para el bit 31
Arquitectura de Computadoras 31
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.
Arquitectura de Computadoras 32
ALU de 32 bits
Arquitectura de Computadoras 33
Diagrama y tabla de la ALULíneas de
controlFunción
C3 C2 C1 C0
0 0 0 0 AND0 0 0 1 OR0 0 1 0 suma0 1 1 0 resta0 1 1 1 set on less than1 1 0 0 NOR
C3 = Ainvert
C2 = Bnegate
Arquitectura de Computadoras 34
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.
Arquitectura de Computadoras 35
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!
Arquitectura de Computadoras 36
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.
Arquitectura de Computadoras 37
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
Arquitectura de Computadoras 38
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.