componentes+alu

6

Click here to load reader

Upload: vilma-hernandez

Post on 10-Aug-2015

35 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Componentes+Alu

1

La unidad aritmético-lógica (ALU)

Realiza las operaciones aritméticas y lógicas.

El resto de elementos están para suministrar datos a esta unidad.

Representación de enteros.

Puede expresar cantidades en coma flotante (reales).

Puede poner una unidad separada en las operaciones con la unidad de coma flotante (coprocesador matemático).

En las operaciones de la unidad de coma flotante puede incluir un chip en una unidad separada (microprocesador 486DX +).

Entradas y salidas de la ALU

Unidad de

control

Registros Registros

Indicadores

Representación de enteros

Para representar los números, sólo pueden utilizarse los dígitos 1 y 0.

Los números positivos se almacenan en el sistema binario.

Ejemplo: 41= 00101001.

No dispone de signo menos.

No dispone de coma.

Representación en signo-magnitud.

Representación en complemento a dos.

Representación en signo-magnitud

El bit más a la izquierda de la palabra es un bit de signo.

0 significa número positivo.

1 significa número negativo.

+18 = 00010010

-18 = 10010010

Problemas:

Se necesita tener en cuenta, tanto los signos de los números como sus magnitudes, si se emplea la aritmética en coma flotante.

Hay dos representaciones del número 0 (+0 y -0).

Representación en

complemento a dos

+3 = 00000011

+2 = 00000010

+1 = 00000001

+0 = 00000000

-1 = 11111111

-2 = 11111110

-3 = 11111101

Beneficios

Una representación de 0.

Facilita las operaciones aritméticas (véase a continuación).

Facilita bastante las operaciones con números negativos.

3 = 00000011

El complemento booleano tiene como resultado: 11111100.

Sumar 1 al patrón de bits resultante: 11111101.

Page 2: Componentes+Alu

2

Ilustración geométrica de los números

enteros en complemento a dos

Sustracción

de números

positivos

Sustracción de

números

positivos

Adición de

números

positivos

Adición de

números

positivos

(a) Números de 4 bits (b) Números de n bits

Caso especial de negación 1

0 = 00000000

Bit a bit sin signo 11111111

Sumarle 1 al bit menos significativo (LSB) situado a la derecha +1

Resultado 1 00000000

Se ignora el desbordamiento, por lo tanto:

- 0 = 0

Caso especial de negación 2

-128 = 10000000

Bit a bit sin signo 01111111

Sumarle 1 al LSB +1

Resultado 10000000

De este modo:

-(-128) = -128 X

Controlar al bit más significativo o MSB (también

llamado bit de signo).

Debería cambiar durante la negación.

El rango de números

8 bits en complemento a dos

+127 = 01111111 = 27 -1

-128 = 10000000 = -27

16 bits en complemento a dos

+32767 = 01111111 11111111 = 215 - 1

-32768 = 10000000 00000000 = -215

Conversión entre longitudes de

bits diferentes

Para los números positivos rellenar con ceros

+18 = 00010010

+18 = 00000000 00010010

Para los números negativos rellenar con unos

-18 = 10010010

-18 = 11111111 10010010

Es decir, añadir los MSB (o bit de signo).

Suma y resta

Suma binaria normal.

Observar el bit de signo para detectar el desbordamiento.

Se obtiene el complemento a dos del substraendo y se le suma al minuendo:

es decir, a - b = a + (-b)

Por lo tanto, sólo se necesita la suma y los complementadores.

Page 3: Componentes+Alu

3

Hardware para la suma y la resta

Registro B Registro A

Complementador

SW

Sumador OF OF = Bit de desbordamiento

SW = Conmutador (selecciona

suma o resta)

Multiplicación

Es una operación compleja.

Generar productos parciales para cada dígito.

Tener cuidado con la posición de los valores (en forma de columna).

Sumar los productos parciales.

Ejemplo de multiplicación

1011 Multiplicando (11).

x 1101 Multiplicador (13).

1011 Productos parciales.

0000 Nota: Si el bit del multiplicador es 1, el producto parcial es el

1011 multiplicando (colocar el valor hacia la izquierda).

1011 De lo contrario es 0.

10001111 Producto (143).

Nota: Es necesario que el resultado sea de longitud doble.

Multiplicación de binarios sin

signo

M n-1 M 0

Sumador de n-bits Lógica de control de

desplazamientos y sumas

Sumar

C A n - 1 A 0

Desplazar a derecha

Q n - 1 Q 0

Multiplicador

Multiplicando

Ejemplo de cálculo

Valores iniciales

Suma

Desplazamiento

Suma Segundo ciclo

Suma

Suma

Desplazamiento

Suma

Desplazamiento

Primer ciclo

Tercer ciclo

Cuarto ciclo

Diagrama de flujo para la

multiplicación de binarios sin signo

INICIO

C, A 0

M Multiplicando

Q Multiplicador

Cuenta n

¿Q0 = 1?

C, A A + M

Desplazar C, A, Q

Cuenta cuenta - 1

¿Cuenta = 0? FIN

No

No

Sí Producto en A, Q

Page 4: Componentes+Alu

4

Multiplicación de números

negativos

No puede realizarse.

Solución 1:

Convertirlos en números positivos, si es necesario.

Multiplicar como se ha explicado anteriormente.

Si los signos son distintos, poner el signo menos al resultado.

Solución 2:

Algoritmo de Booth.

Algoritmo de Booth

INICIO

A 0 Q-1 0

M Multiplicando

Q Multiplicador

Cuenta n

Q0 , Q -1

Desplazamiento aritmético a derecha:

A, Q, Q -1

Cuenta Cuenta - 1

A A + M A A - M

¿Cuenta = 0? INICIO FIN No Sí

= 01 = 10

= 11 = 00

Ejemplo de algoritmo de Booth

Valores iniciales

A A - M Primer ciclo

Desplazamiento

Desplazamiento Segundo ciclo

A A + M Tercer

Desplazamiento ciclo

Desplazamiento Cuarto ciclo

A A + M Tercer ciclo

Desplazamiento

División

Es algo más compleja que la multiplicación.

El proceso de división de números negativos es aún más complicado.

Está basada en el proceso de división larga.

001111

División de enteros binarios sin

signo

1011

00001101

10010011

1011

001110 1011

1011

100

Quotient

Dividend

Remainder

Partial

Remainders

Divisor

Cociente

Divisor Dividendo

Resto Resto

Restos Parciales

Números reales

Fracciones.

Podría realizarse mediante el proceso binario:

1001.1010 = 24 + 20 +2-1 + 2-3 =9,625

¿Dónde está la coma binaria?

¿Es fija?

Pocas veces.

¿Se mueve?

¿Cómo se sabe dónde está?

Page 5: Componentes+Alu

5

Coma flotante

+/- ,mantisa x 2exponente

Es un nombre inapropiado.

En realidad, la coma se sitúa entre el bit de signo y la mantisa.

El exponente indica la colocación del valor (es decir, la posición de la coma).

Bit

de

sig

no

Exponente

sesgado Parte significativa o mantisa

Ejemplos de coma flotante

Signo de la

mantisa

Exponente sesgado Mantisa

8 bits 32 bits

a) Formato

0,11010001 x 2 10100 = 0 10010011 10100010000000000000000

- 0,11010001 x 2 10100 = 1 10010011 10100010000000000000000

0,11010001 x 2 -10100 = 0 01101011 10100010000000000000000

- 0,11010001 x 1 -10100 = 1 01101011 10100010000000000000000

b) Ejemplos

Signos en coma flotante

La mantisa se almacena en complemento a dos.

El exponente está en la representación sesgada.

Ejemplo: Un sesgo de 128 comprende:

Un campo de 8 bits.

Los valores verdaderos que van desde 0 a 255.

La resta de 128 para obtener el resultado correcto.

El rango de -128 a +127.

Normalización

Los números en coma flotante se suelen normalizar.

Es decir, el exponente se ajusta para que el bit más significativo (MSB) de la mantisa sea 1.

Debido a que siempre es 1, no hay necesidad de

almacenarlo.

(En cambio, en la notación científica los números están normalizados de tal forma que hay un dígito antes de la coma).

Ejemplo: 3,123 x 103.

Los rangos en coma flotante

Para un número de 32 bits:

Exponente de 8 bits.

+/- 2256 1,5 x 1077

Precisión:

Como consecuencia de haber cambiado la posición del bit menos significativo (LSB) en la mantisa.

Mantisa de 23 bits: 2-23 1,2 x 10-7 .

La coma estará situada en la sexta posición.

Números representables

Enteros representables

Recta Real

(a) Enteros en complemento a dos

Desbordamiento

negativo

Números negativos

representables

Desbordamiento

a cero negativo

Desbordamiento a

cero positivo

Números positivos

representables

Desbordamiento

positivo

Recta

Real

(b) Números en coma flotante

Cero

0,5 X 0,5 X

Page 6: Componentes+Alu

6

Formato IEEE 754

Estándar para el almacenamiento en coma flotante.

Define los formatos tanto de 32 como de 64 bits.

Con exponentes de 8 y de 11 bits, respectivamente.

Los formatos ampliados incluyen bits adicionales en el exponente y en la mantisa para los resultados intermedios.

Aritmética en coma flotante:

Suma y resta

Comprobar valores cero.

Ajuste de mantisas (ajuste de exponentes).

Sumar o restar las mantisas.

Normalizar el resultado.

Aritmética en coma flotante:

Multiplicación y división

Comprobar valores cero.

Sumar y restar exponentes.

Multiplicar y dividir mantisas (teniendo en cuenta el signo).

Normalizar.

Redondear.

Todos los resultados intermedios deben doblar su longitud al ser almacenados.

Multiplicación

en coma

flotante

MULTIPLICAR

¿X = 0?

Z 0

RETORNAR

¿Y = 0? Sumar

exponentes

Restar

sesgo

¿Desborda-miento en

exponente?

Indicar

desborda-

miento

¿Desbordamiento a cero en

exponente?

Indicar

desborda-

miento a

cero

Multiplicar

mantisas

Normalizar

Redondear RETORNAR

No

No

No No

Sí Sí

División en

coma

flotante

DIVIDIR

¿X = 0?

Z 0

RETORNAR

¿Y = 0?

Z

Restar

exponentes

Sumar

sesgo

¿Desborda-miento en

exponente?

¿Desborda-miento a cero en exponente?

Dividir

mantisas

Normalizar

Redondear RETORNAR

Indicar

desborda-

miento

Indicar

desborda-

miento a

cero

No

No

No

No

Sí Sí