Está en la página 1de 17

1+.

Construccin de una unidad


aritmtica y lgica (coma flotante)
scar David Robles Snchez
ngel Serrano Snchez de Len
Luis Rincn Crcoles
Estructura y Tecnologa de Computadores (ITIG)
2
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
Programa
1. Introduccin.
2. Representacin de nmeros en coma flotante.
3. Estndar IEEE 754.
4. Suma en coma flotante.
5. Multiplicacin en coma flotante.
6. La coma flotante y el procesador Pentium.
7. Bibliografa.
Conceptos bsicos: Coma flotante, notacin cientfica normalizada, redondeo,
estndar IEEE 754, precisin simple/doble, exponente, mantisa, bit implcito,
hueco del cero, underflow, NaN (Not a Number), suma en coma flotante,
multiplicacin en coma flotante, error FDIV del procesador Pentium.
3
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
1. Introduccin
Hay vida ms all de los nmeros enteros con y sin signo.
Utilizacin de los nmeros reales en los lenguajes de programacin.
Ejemplos:
3.14159265359 0.718282828282
0.000000001 456.854728945783
En notacin cientfica (tema 3):
0.000000001 = 1.0 10
-9
3155760000 = 3.15576 10
9
1.0 10
-9
est en notacin cientfica normalizada.
0.1 10
-8
10.0 10
-10
no lo estn.
4
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
Los nmeros binarios tambin se pueden expresar en esta notacin:
1.0 2
-1
Se necesita una base que permita incrementar o decrementar el exponente en
la misma proporcin que el nmero de bits necesarios para desplazar el nmero
dejando un nico dgito distinto de 0 a la izquierda de la coma decimal.
La parte aritmtica que trata estos nmeros se llama de coma flotante (floating
point).
El lenguaje C usa el tipo de datos float para representar estos nmeros.
El formato es:
1.xxxxxxx 2
yyyy
Slo hay un dgito no nulo a la izquierda de la coma binaria.
2. Representacin de nmeros en coma flotante
5
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
La coma flotante no es una representacin exacta para nmeros reales, sino
que nicamente permite representar los nmeros reales en forma aproximada.
Es preciso aplicar cuidadosamente tcnicas de redondeo.
En los programas no se debe testear la igualdad de dos nmeros en coma flotante.
Dado que la realizacin de operaciones con datos en coma flotante es
compleja, los computadores cuentan con circuitos especficos dedicados a ello.
Los computadores de potencia baja trabajaban en coma flotante mediante software.
Con el microprocesador 8086 de Intel surgieron los coprocesadores de coma
flotante: chips especficos que, trabajando en paralelo con los microprocesadores,
realizaban las operaciones de coma flotante (8087 y sucesivos).
Con los avances en tecnologa de integracin de circuitos, hace aos que los
coprocesadores de coma flotante se integran en el chip del microprocesador.
6
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
3. Estndar IEEE 754
Precisin simple (32 bits):
Signo (1 bit) y Mantisa (23 bits+ 1 bit implcito), expresados en binario signo-
magnitud. El bit implcito siempre vale 1 y no se almacena.
Exponente (8 bits), expresado en binario exceso a 127.
Rango:
[3.403810
38
, 1.175510
38
] U {0} U [1.175510
38
, 3.403810
38
]
28 27 26 25 24 23
MANTISA
22
EXPONENTE S
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 29 30 31
Hueco del cero
(underflow)
7
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
(1)
s
1.m 2
exp127
si 0 < exp < 255
(1)
s
0.m 2
126
si exp = 0 (caso desnormalizado)
0 si exp = m = 0
+ si exp = 255, m = 0, s = 0
si exp = 255, m = 0, s = 1
NaN (Not a Number) si exp = 255, m 0
N =
donde:
s = signo de la mantisa
m = mdulo de la mantisa almacenada (sin bit implcito)
exp = exponente almacenado (sin descontar exceso)
8
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
MANTISA
MANTISA (CONTINUACIN)
28 27 26 25 24 23 22
EXPONENTE S
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 29 30 31
Precisin doble (64 bits):
Signo (1 bit) y Mantisa (52 bits+ 1 bit implcito), expresados en binario signo-
magnitud. El bit implcito siempre vale 1 y no se almacena.
Exponente (11 bits), expresado en binario exceso a 1023.
Rango:
[1.797710
308
, 2.225110
308
] U {0} U [2.225110
308
, 1.797710
308
]
Hueco del cero
(underflow)
9
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
(1)
s
1.m 2
exp1023
si 0 < exp < 2047
(1)
s
0.m 2
1022
si exp = 0 (caso desnormalizado)
0 si exp = m = 0
+ si exp = 2047, m = 0, s = 0
si exp = 2047, m = 0, s = 1
NaN (Not a Number) si exp = 2047, m 0
N =
donde:
s = signo de la mantisa
m = mdulo de la mantisa almacenada (sin bit implcito)
exp = exponente almacenado (sin descontar exceso)
10
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
Ejemplo: Base 10 IEEE 754 (prec. simple)
N = 0.75
10
1. Expresarlo en binario: 0.75
10
= 0.11
2
2. Normalizar: 0.11
2
= 1.1
2
2
1
3. Clculo del exponente en exceso: exp = 1
10
+ 127
10
= 126
10,exc.127
= 01111110
2,exc.127
4. Clculo de mantisa: m = 1.10000000000000000000000 (el bit implcito no se almacena)
5. Bit de signo: s = 1 (n negativo)
6. Representacin en precisin simple:
7. Representacin en notacin compacta hexadecimal:
N = 1011 1111 0100 0000 0000 0000 0000 0000
2,IEEE754,s
= BF400000
16,IEEE754,s
1 1 1 1 1 0
MANTISA
1
EXPONENTE S
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
11
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
Ejemplo: IEEE 754 (prec. simple) Base 10
N = C0A00000
16,IEEE754,s
= 1100 0000 1010 0000 0000 0000 0000 0000
2,IEEE754,s
1. Bit de signo: s = 1 (n negativo)
2. Exponente: exp = 10000001
2,exc.127
= 129
10,exc.127
= 129
10
127
10
= 2
10
3. Mantisa: 1.0100000000000000000000
2
= 2
0
+ 2
2
= 1.25
10
4. Resultado: N = 1.25 2
2
= 5
10
s exp m
12
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
4. Suma en coma flotante
9.999 10
1
+ 1.610 10
-1
= ?
4 cifras decimales para la mantisa.
2 para el exponente.
Paso 1: Alinear mantisas
1.610 10
-1
= 0.01610 10
1
0.016 10
1
Paso 2: Sumar mantisas
9.999 + 0.016 = 10.015 Suma = 10.015 10
1
Paso 3: Normalizar resultado
10.015 10
1
= 1.0015 10
2
Paso 4: Redondear resultado
Resultado final = 1.0015 10
2
1.002 10
2
13
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
Diagrama de bloques de
una ALU dedicada a la
suma en coma flotante:
14
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
5. Multiplicacin en coma flotante
1.110 10
10
9.200 10
-5
= ?
4 cifras decimales para la mantisa.
2 para el exponente.
Paso 1: Sumar exponentes
Exponente = 10 + (5) = 5
Paso 2: Multiplicar mantisas
1.110 9.200 = 10.212
Paso 3: Normalizar resultado
10.212 10
5
= 1.0212 10
6
Paso 4: Redondear resultado
1.0212 10
6
1.021 10
6
Paso 5: Colocar signo
Resultado final = +1.021 10
6
15
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
6. La coma flotante y el procesador Pentium
El Pentium utiliza algoritmo estndar de divisin en coma flotante, que
genera mltiples bits del cociente paso por paso.
Utiliza los bits ms significativos del divisor y el dividendo para estimar
los siguientes 2 bits del cociente a travs de una tabla de prediccin.
Si una estimacin previa lleva a un resto demasiado grande, su valor se
reajusta en el siguiente paso.
En el 80486 la tabla de prediccin tena 5 elementos que Intel pens que
no se utilizaran en el Pentium. Se devolvera 0 en lugar de 2 en esas
posiciones.
ERROR: los 11 primeros bits eran siempre correctos, pero no del 12 al
52.
16
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
Julio 1994: Intel descubre el error. Coste real de cientos de miles de dlares.
Estimacin de fabricacin de 3 a 5 millones de procesadores con el error.
Septiembre 1994: Thomas Nicely del Lynchburg College de Virginia descubre el
error. No hay reaccin oficial de Intel. Introduce su descubrimiento en Internet.
7 noviembre 1994: Portadas en los principales peridicos financieros.
22 noviembre 1994: Pequeo error que afecta a slo un grupo de usuarios tipo
matemticos tericos (segn Intel).
5 diciembre 1994: El error se produce una vez cada 27000 aos para usuarios
habituales de hojas de clculo (segn Intel).
12 diciembre 1994: IBM demuestra una probabilidad de error mucho mayor y detiene
la produccin de nuevos PCs basados en Pentium.
21 diciembre 1994: Intel pide disculpas. Los analistas sitan el coste de esta
operacin en 300 millones de dlares.
El error FDIV de Pentium
17
Tema 14. Construccin de una unidad aritmtica y lgica (coma flotante)
7. Bibliografa
D.A. PATTERSON, J.L HENNESSY. Computer Organization and Design.
Morgan Kaufmann, 2005.
D. A. PATTERSON, J. L. HENNESSY. Estructura y diseo de computadores.
Revert, 2000.
DORMIDO, S. CANTO M.A., MIRA J., DELGADO A.E. Estructura y Tecnologa
de Computadores. 2 edicin. Sanz y Torres, 2000.
D. A. PATTERSON, J. L., HENNESSY. Computer Organization and Design.
Morgan Kaufmann, 2005.
J.M. ANGULO, J.GARCA. Sistemas Digitales y Tecnologa de Computadores.
Paraninfo, 2002.
P. DE MIGUEL. Fundamentos de los Computadores. 7 edicin. Paraninfo,
1999.
W. STALLINGS. Organizacin y Arquitectura de Computadores. 5 edicin,
Prentice Hall, 2000.

También podría gustarte