07 alu

38
ALU Unidad aritmético-lógica PRESENTA ING. J. D. AURELIO RICO DIAZ

Transcript of 07 alu

Page 1: 07 alu

ALUUnidad aritmético-lógica

PRESENTA ING. J. D. AURELIO RICO DIAZ

Page 2: 07 alu

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

Page 3: 07 alu

Arquitectura de Computadoras 3

Circuitos combinatoriosSu salida depende exclusivamente de sus

entradas.

Page 4: 07 alu

Arquitectura de Computadoras 4

Compuertas básicas

Page 5: 07 alu

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

Page 6: 07 alu

Arquitectura de Computadoras 6

Otras compuertasXOR (or exclusiv0).EQV (equivalence).NAND (not AND).NOR (not OR).

Page 7: 07 alu

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

Page 8: 07 alu

Arquitectura de Computadoras 8

MultiplexorMux 4 a 1

Mux 8 a 1

Page 9: 07 alu

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.

Page 10: 07 alu

Arquitectura de Computadoras 10

Sumador completo

Page 11: 07 alu

Arquitectura de Computadoras 11

Sumador completoSuma = a b CarryInCarryOut = (a · CarryIn) + (b · CarryIn) + (a ·

b) = (a + b) · CarryIn + (a · b)

Page 12: 07 alu

Arquitectura de Computadoras 12

Sumador completoDagrama a bloque.

Page 13: 07 alu

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

Page 14: 07 alu

Arquitectura de Computadoras 14

Agregando operacionesEl siguiente paso es agregar la suma.Se agrega un sumador completo al diseño

anterior.

Page 15: 07 alu

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

Page 16: 07 alu

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.

Page 17: 07 alu

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.

Page 18: 07 alu

Arquitectura de Computadoras 18

ALU de 1 bit

Page 19: 07 alu

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

Page 20: 07 alu

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.

Page 21: 07 alu

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.

Page 22: 07 alu

Universidad de Sonora Arquitectura de Computadoras 22

ALU de 1 bit

Page 23: 07 alu

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

Page 24: 07 alu

Arquitectura de Computadoras 24

Agregando operacionesVariando Ainvert y Binvert permite generar:

8 operaciones lógicas.5 operaciones aritméticas.

Page 25: 07 alu

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

Page 26: 07 alu

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

Page 27: 07 alu

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.

Page 28: 07 alu

Universidad de Sonora Arquitectura de Computadoras 28

ALU de 32 bits

Page 29: 07 alu

Arquitectura de Computadoras 29

ALU para los bits 0 al 30

Page 30: 07 alu

Arquitectura de Computadoras 30

ALU para el bit 31

Page 31: 07 alu

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.

Page 32: 07 alu

Arquitectura de Computadoras 32

ALU de 32 bits

Page 33: 07 alu

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

Page 34: 07 alu

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.

Page 35: 07 alu

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!

Page 36: 07 alu

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.

Page 37: 07 alu

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

Page 38: 07 alu

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.