componentes+alu
TRANSCRIPT
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.
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.
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í
Sí Producto en A, Q
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á?
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
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í
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í Sí
Sí