Sie sind auf Seite 1von 7

Universidad Rey Juan Carlos Rey Juan Carlos

ESTRUCTURAESTRUCTURA YY TECNOLOGTECNOLOGÍÍAA DEDE COMPUTADORESCOMPUTADORES

Circuitos para coma flotante

Luis Rincón Córcoles Licesio J. Rodríguez-Aragón

ProgramaLuis Rincón Córcoles Licesio J. Rodríguez-Aragón Bibliografía. Circuitos para coma flotante 1.

Bibliografía.

Circuitos para coma flotante

1. Introducción.

2. Suma y resta en coma flotante.

3. Producto y división en coma flotante.

4. Instrucciones para coma flotante en ensamblador.

BibliografíaCircuitos para coma flotante D.A. PATTERSON, J.L. HENNESSY. Estructura y Diseño de Computadores . Reverté,

Circuitos para coma flotante

D.A. PATTERSON, J.L. HENNESSY. Estructura y Diseño de Computadores. Reverté, 2000.

J.L.

Kauffman, 2003.

DORMIDO, S. CANTO M.A., MIRA J., DELGADO A.E. Estructura y Tecnología de Computadores. 2ª edición. Sanz y Torres, 2000.

Morgan

HENNESSY,

D.A.

PATTERSON.

Computer

Architecture.

PARHAMI, B. Computer Arithmetic. Oxford University Press, 2000.

P. DE MIGUEL. Fundamentos de los Computadores. 7ª edición. Paraninfo,

1999.

W. STALLINGS. Organización y Arquitectura de Computadores. 5ª edición, Prentice Hall, 2000.

3

1. Introducciónde Computadores . 5ª edición, Prentice Hall, 2000. 3 Circuitos para coma flotante Los computadores utilizan

Circuitos para coma flotante

Los computadores utilizan dos representaciones claramente diferenciadas para cantidades numéricas:

•Coma fija: para números enteros sin signo o complemento a 2. •Coma flotante (floating point, FP): para números muy grandes o muy pequeños o con parte fraccionaria.

Inicialmente cada modelo de computador tenía su propia manera de representar números en coma flotante. •Problemas a la hora de asegurar la transportabilidad de los programas y datos.

En 1977 se formó un comité de expertos del IEEE cuyo objetivo era definir un documento estándar para los futuros desarrollos que utilizaran coma flotante. •Finalmente en 1985 el comité hizo oficial el estándar IEEE 754.

En 1987 otro comité de expertos del IEEE propuso un estándar para coma flotante independiente de la base de numeración utilizada: el IEEE 854. •Este estándar no implica ninguna modificación del IEEE 754.

IntroducciónCircuitos para coma flotante La coma flotante permite representar los números reales en forma aproximada

Circuitos para coma flotante

La coma flotante permite representar los números reales en forma aproximada.

•Es preciso aplicar cuidadosamente técnicas de redondeo. •En los programas no se debe testear la igualdad de dos números en coma flotante.

El estándar IEEE 754 permite formatos extendidos para aumentar la precisión:

•Simple extendido: mayor precisión que el formato simple y menor que el formato doble. •Doble extendido: mayor precisión que el formato doble. •Trabajar con estos formatos facilita el redondeo.

Dado que la realización de operaciones con datos en coma flotante es compleja, los computadores cuentan con circuitos específicos 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 específicos que, trabajando en paralelo con los microprocesadores, realizaban las operaciones de coma flotante (8087 y sucesivos). •Con los avances en tecnología de integración de circuitos, hace años que los coprocesadores de coma flotante se integran en el chip del microprocesador.

Hay circuitos de coma flotante para operaciones de suma, resta, producto, división, raíz cuadrada, logaritmos, exponenciales, funciones trigonométricas, etc.

5

2. Suma y resta en coma flotanteexpone nciales, funciones trigonométricas, etc. 5 Circuitos para coma flotante Lo primero es desempaquetar los

Circuitos para coma flotante

Lo primero es desempaquetar los operandos (dividirlos en campos).

Después hay que igualar los exponentes de los dos operandos.

•Se calcula k =Exp hacia la derecha.

A Exp B y se desplaza la mantisa de menor exponente k lugares

A continuación, se suman o se restan las mantisas M A y M B .

•La mantisa resultante M R puede no estar normalizada. •El exponente resultante Exp R es el mayor de los dos operandos fuente.

Después se normaliza M R y se modifica Exp R si es preciso (postnormalización).

Se comprueba que el exponente resultante está en el rango permitido.

•Si Exp R <Exp min subdesbordamiento: desnormalizar e ir al paso de redondeo. •Si Exp R >Exp max ⇒ ± infinito: poner valor especial y empaquetar. •En ambos casos podría generarse una excepción.

Se redondea la mantisa M R (en este punto M R se puede desnormalizar).

•Si M R se desnormaliza, hay que volver al paso de postnormalización. •Si M R sigue normalizada, empaquetar el resultado (unir los campos) y salir.

6

Suma y resta en coma flotanteEn la etapa de inicio hay que desempaquetar los operandos originales. En la etapa final

En la etapa de inicio hay que desempaquetar los operandos originales.

En la etapa final hay que empaquetar el resultado, respetando los anchos especificados por el estándar y eliminando la parte entera de la mantisa.

Circuitos para coma flotante

Inicio Alinear las mantisas Sumar/restar las mantisas Normalizar la mantisa resultante Sí ¿Exponente mayor que
Inicio
Alinear las mantisas
Sumar/restar las
mantisas
Normalizar la mantisa
resultante
¿Exponente mayor
que el máximo?
No
Infinito positivo
o negativo
¿Exponente menor
que el mínimo?
No
Redondear la
Representar número en
forma desnormalizada
mantisa resultante
No
¿Todavía está
normalizada?
Fin

7

Suma y resta en coma flotanteresultante No ¿Todavía está normalizada? Sí Fin 7 Sign Exponent Significand Sign Exponent Significand

Sign Exponent Significand Sign Exponent Significand Compare Small ALU exponents Exponent difference 0 1 0
Sign
Exponent
Significand
Sign
Exponent
Significand
Compare
Small ALU
exponents
Exponent
difference
0
1
0
1
0
1
Shift smaller
Control
Shift right
number right
Add
Big ALU
0
1
0
1
Increment or
Shift left or right
Normalize
decrement
Rounding hardware
Round
Sign
Exponent
Significand

Circuitos para coma flotante

En función del signo de las mantisas de los operandos y del tipo de operación, el circuito de control seleccionará la UAL grande para realizar una suma o una resta.

La UAL pequeña simplemente resta los exponentes para calcular la longitud del desplazamiento que hay que aplicar a la mantisa del número con menor módulo.

8

Suma y resta en coma flotanteCircuitos para coma flotante Al desempaquetar operandos normalizados es preciso incluir el bit implícito como

Circuitos para coma flotante

Al desempaquetar operandos normalizados es preciso incluir el bit implícito como parte entera de la mantisa, que no estaba almacenado en el dato original.

•Como M R (-4,4), usaremos dos bits para el módulo de la parte entera de las mantisas

fuente (que tendrán la forma: s01’

)

y para la mantisa resultado.

Dado que el resultado de la operación puede estar desnormalizado, el paso de postnormalización exige un circuito complejo.

•El incrementador / decrementador para postnormalizar será un sumador / restador.

La UAL grande tendrá que generar resultados de al menos 1+2+m+t bits:

•El primer bit sería el de signo. •Los dos siguientes serían para la parte entera de la mantisa. •Los m siguientes serían para el ancho almacenable de la parte entera de la mantisa. •Los últimos t bits serían para redondear.

La UAL pequeña admitiría operandos de n+1 bits (n: ancho del exponente).

9

3. Producto en coma flotanteoperandos de n+1 bits ( n : ancho del exponente). 9 A B = = m

A

B

=

=

m

m

a

b

2

2

exp

exp

a

b

R

=

A

B

=

(

m

a

m

b

)

2

exp

a

+

exp

B

Circuitos para coma flotante

Lo primero es desempaquetar los operandos (dividirlos en campos).

Después se pueden realizar las dos operaciones siguientes en paralelo:

•Sumar los exponentes Exp A y Exp B para obtener Exp R . •Multiplicar las mantisas M A y M B para obtener M R .

Después se normaliza M R ajustando Exp R si es preciso.

Se comprueba que el exponente resultante está en el rango permitido.

•Si Exp R <Exp min subdesbordamiento: desnormalizar, empaquetar y salir. •Si Exp R >Exp max ⇒ ± infinito: empaquetar y salir. •En ambos casos podría generarse una excepción.

Se redondea la mantisa M R .

•Si M R se desnormaliza, hay que volver al paso de normalización. •Si M R sigue normalizada, empaquetar el resultado y salir.

10

División en coma flotanteA B = = m m a b ⋅ ⋅ 2 2 exp exp a

A

B

=

=

m

m

a

b

2

2

exp

exp

a

b

R

⇒ =

A

= ⎛ ⎜ m

⎟ ⋅ 2

B

m

b

a

exp

a

exp

B

Circuitos para coma flotante

Lo primero es desempaquetar los operandos (dividirlos en campos).

Después se pueden realizar las dos operaciones siguientes en paralelo:

•Restar los exponentes Exp A y Exp B para obtener Exp R . •Dividir las mantisas M A y M B para obtener M R .

Después se normaliza M R ajustando Exp R si es preciso (postnormalización).

Se comprueba que el exponente resultante está en el rango permitido.

•Si Exp R <Exp min subdesbordamiento: desnormalizar, empaquetar y salir. •Si Exp R >Exp max ⇒ ± infinito: empaquetar y salir (¿producir excepción?).

Se redondea la mantisa M R .

•Si M R se desnormaliza, hay que volver al paso de normalización. •Si M R sigue normalizada, empaquetar el resultado y salir.

11

Producto y división en coma flotanteR sigue normalizada, empaquetar el resultado y salir. 11 En la etapa de inicio hay que

En la etapa de inicio hay que desempaquetar los operandos originales.

Habitualmente se trabaja con mantisas normalizadas, para lo cual es necesario:

•Normalizar los operandos que estén desnormalizados. •Contar con un bit más para ampliar el rango del exponente.

En la etapa final hay que empaquetar el resultado, respetando los anchos especificados por el estándar y eliminando la parte entera de la mantisa.

Circuitos para coma flotante

Inicio Sumar/restar los exponentes Multiplicar/dividir las mantisas Normalizar la mantisa resultante Sí
Inicio
Sumar/restar los
exponentes
Multiplicar/dividir las
mantisas
Normalizar la mantisa
resultante
¿Exponente mayor
que el máximo?
No
Infinito positivo
o negativo
¿Exponente menor
que el mínimo?
No
Redondear la
Representar número en
forma desnormalizada
mantisa resultante
No
¿Todavía está
normalizada?
Fin
12

Producto y división en coma flotanteCircuitos para coma flotante Las dos operaciones son similares, con lo cual gran parte del

Circuitos para coma flotante

Las dos operaciones son similares, con lo cual gran parte del circuito para ambas puede ser común:

•Un sumador / restador para los exponentes como la UAL pequeña del circuito de suma / resta (sumador para el producto, restador para la división). •Un multiplicador en coma fija que admita operandos fuente de m+1 bits (m:

ancho de la mantisa almacenada). •Un divisor en coma fija que admita operandos de m+1 bits.

Si las mantisas están normalizadas se facilita la postnormalización, ya que:

•El módulo de la mantisa producto estará en el rango [1,4). •El módulo de la mantisa cociente estará en el rango [1/2,2).

Por tanto, puede ser conveniente normalizar previamente las mantisas fuente que estén desnormalizadas:

•A la hora de operar, se añadiría un bit a la representación interna del exponente.

13

un bit a la representación interna del exponente. 13 Circuitos para coma flotante 4. Instrucciones ensamblador

Circuitos para coma flotante

4. Instrucciones ensamblador para coma flotante

MIPS

Tiene instrucciones de coma flotante, ejecutadas por el coprocesador 1 (que se encuentra dentro del microprocesador). Los nemotécnicos son similares a las operaciones con enteros con signo, pero con un sufijo indicativo de la precisión de los operandos:

•Precisión simple: .s •Precisión doble: .d

MC68000

El MC68000 no tiene circuitería para coma flotante. M68881: coprocesador externo de coma flotante para IEEE 754 de precisión simple y doble. •Tiene un formato interno extendido de 80 bits.

Las instrucciones de coma flotante comienzan por el código 1111. •Producen una excepción de emulación.

14