Sumador/Restador en Punto Flotante IEEE 745 en el MIPS

11
CYT808 Universidad Católica “Nuestra Señora de Asunción” Proyecto con Microprocesadores II Sede Regional Asunción Ing. Electrónica Facultad de Ciencias y Tecnología Semestre IX Departamento de Electrónica e Informática Proyecto con Microprocesadores II Informe de Trabajo Final Sumador/Restador en Punto Flotante en el MIPS Fecha: 1 de julio de 2013 Pedro D. Ramírez López Alberto Gómez de la Fuente 0.1. Descripción del Proyecto Diseño de un módulo de operaciones entre registros tipo coma flotante F-TYPE de MIPS con base en el estandar IEEE 754. 0.2. Diagrama de Bloques Después de consultar algunos ejemplos sobre la manera de realizar el proyecto, se decide que la mejor manera de implementar el diseño de este proyecto es mediante un banco de datos propio, como se puede apreciar en la figura 1. Para Obtener la Implementación en el Spartan 3AN completa del trabajo diríjase el sgte Link Figura 1: Unidad de Punto Flotante con el Mips AG-PR 1

Transcript of Sumador/Restador en Punto Flotante IEEE 745 en el MIPS

Page 1: Sumador/Restador en Punto Flotante IEEE 745 en el MIPS

CYT808 Universidad Católica “Nuestra Señora de Asunción”Proyecto con

Microprocesadores IISede Regional Asunción

Ing. Electrónica Facultad de Ciencias y TecnologíaSemestre IX Departamento de Electrónica e Informática

Proyecto con Microprocesadores IIInforme de Trabajo Final

Sumador/Restador en Punto Flotante en el MIPS

Fecha: 1 de julio de 2013Pedro D. Ramírez LópezAlberto Gómez de la Fuente

0.1. Descripción del Proyecto

Diseño de un módulo de operaciones entre registros tipo coma flotante F-TYPE deMIPS con base en el estandar IEEE 754.

0.2. Diagrama de Bloques

Después de consultar algunos ejemplos sobre la manera de realizar el proyecto, sedecide que la mejor manera de implementar el diseño de este proyecto es mediante unbanco de datos propio, como se puede apreciar en la figura 1.

Para Obtener la Implementación en el Spartan 3AN completa del trabajo diríjase elsgte Link

Figura 1: Unidad de Punto Flotante con el Mips

AG-PR 1

Page 2: Sumador/Restador en Punto Flotante IEEE 745 en el MIPS

CYT808 Universidad Católica “Nuestra Señora de Asunción”Proyecto con

Microprocesadores IISede Regional Asunción

Ing. Electrónica Facultad de Ciencias y TecnologíaSemestre IX Departamento de Electrónica e Informática

0.3. Diseño de Modulos de Operaciones Internos

0.3.1. Excepción

Este módulo puramente combinacional se encarga de comparar los registros que con-tienen los operandos de manera previa a la realización de cualquier operación con el finde revisar si se esta llegando a generar una excepción.

Data A Data B Flag Operation Data C Typexxxx xxxx Overflow add/sub Infinite Operation Processxxxx xxxx Underflow add/sub Zero Operation Process

Invalid OperationInfinite xxxx none add/sub NaN Propagationxxxx Infinite none add/sub NaN Propagation

Infinite Infinite none add/sub NaN PropagationNaN xxxx none add/sub NaN Propagationxxxx NaN none add/sub NaN PropagationNaN NaN none add/sub NaN Propagation

Cuadro 1: Manejador de Excepciones del FPU

0.3.2. Pre-Normalización

Este es un módulo donde:

1. Se debe decodificar la información de exponente que se encuentra en el respectivoregistro con el fin de procesarla.

2. Se debe hacer la correspondiente operación entre exponentes; es decir como losregistros se suman o restan, se debe hallar el exponente mayor entre ambos.

si

no

Figura 2: Diagrama de Flujo del Módulo de Pre-Normalización

AG-PR 2

Page 3: Sumador/Restador en Punto Flotante IEEE 745 en el MIPS

CYT808 Universidad Católica “Nuestra Señora de Asunción”Proyecto con

Microprocesadores IISede Regional Asunción

Ing. Electrónica Facultad de Ciencias y TecnologíaSemestre IX Departamento de Electrónica e Informática

0.3.3. Suma/Resta

Este módulo debe:

1. Efectuar la operación teniendo en cuenta las consideraciones del estandar de tra-bajar con números con signo y no con complemento a dos.

2. Generar un flag de carry necesaria para el módulo de post-normalización.

si

si

nono

si

si

no nono

si

Figura 3: Diagrama de Flujo del Módulo de Suma y Resta(Big Alu)

0.3.4. Postnormalización

En este módulo se deben:

1. Efectuar corrimientos respectivos para lograr la normalización efectiva de la mantisacon el correspondiente aumento/disminución de pre_exp_result proveniente delmódulo de prenormalización.

2. Comprobar la que no haya desbordamiento o sub-desbordamiento de alguna de lasvariables de modo que no se llegen a estados obsoletos, para ello se deben generarlos flags de excepción underflow y overflow.

AG-PR 3

Page 4: Sumador/Restador en Punto Flotante IEEE 745 en el MIPS

CYT808 Universidad Católica “Nuestra Señora de Asunción”Proyecto con

Microprocesadores IISede Regional Asunción

Ing. Electrónica Facultad de Ciencias y TecnologíaSemestre IX Departamento de Electrónica e Informática

shift_right_post_norm

PM_SR

mantisa_in(63:0)

carry

mantisa_out(63:0)

demux_64

PM_DEMUX_64

c(63:0)

sel

a(63:0)

b(63:0)

amount

PM_AMOUNT

pre_mant_c(63:0) shift_amount(10:0)

mux_64

PM_MUX_64

a(63:0)

b(63:0)

sel

c(63:0)

calcular_exponente

PM_CALCULAR

pre_exp(10:0)

shift_amount(10:0)

carry

mode

amount(10:0)

exponente(10:0)

overflow

shift_left_2

PM_SL

pre_mant_c(63:0)

shift_amount(10:0)

mant_shift(63:0)

or2

overflow_imp_overflow1

I0

I1O

exponente_final

PM_EXPONENTE_FINAL

exponente_in(10:0)

mantisa_shift_left(63:0)

carry

mode

exponente_out(10:0)

overflow

underflow

redondeo_52

PM_ROUND_52

mant_c(63:0) mantisa(51:0)

carry

underflow

or2

underflow_imp_underflow1

I0

I1O

post_norm:1

PM_POST_NORM

pre_exp(10:0)

pre_mant_c(63:0)

carry

mode

exponente(10:0)

mantisa(51:0)

overflow

underflow

Figura 4: Módulo de Post-Norm implementado en VHDL

0.4. Conversión de simple a doble precisión

Especificación del operador:

1. Entrada: SA (1 bit), EA (8 bits) y MA (23 bits)

2. Salida: SR(1 bit), ER (11 bits) y MR (52 bits)

3. El signo no cambia: SR = SA

4. Exponente: hay que cambiar de exceso 127 a exceso 1023

ER = EA + 896

Obs.: Los números desnormalizados son iguales excepto que exponente = −126 ymantisa = 0,Fracción. (exponente NO es -127 : la mantisa ha de ser desplazado ala derecha por un bit más, de forma que incluya el bit principal, que no siempre es 1en este caso. Esto se balancea incrementando el exponente a -126 para el cálculo.).Por lo tanto, para el caso desnormalizado se tiene que:

ER = EA + 896 + 1

5. Mantisa: hay que añadir 52-23 = 29 ceros a la derecha

MR = MA||00 · · · 0

6. Hay que tratar correctamente los valores especiales:

AG-PR 4

Page 5: Sumador/Restador en Punto Flotante IEEE 745 en el MIPS

CYT808 Universidad Católica “Nuestra Señora de Asunción”Proyecto con

Microprocesadores IISede Regional Asunción

Ing. Electrónica Facultad de Ciencias y TecnologíaSemestre IX Departamento de Electrónica e Informática

EA SR ER MR

Zero 000000002 SA 000000000002 MA || 00 · · · 0Subnormal 000000002 SA 89610 MA || 00 · · · 0±∞ i NaN 111111112 SA 111111111112 MA || 00 · · · 0

Valores Corrientes (otros valores) SA EA + 896 MA || 00 · · · 0

Cuadro 2: Valores Especiales en el Estándar IEEE745

Tratamiento de los valores especiales Detalle del cálculo del exponente.

27

Conversión de simple a doble precisión

! El operador básico– No trata los valores especiales

SA EA MA

1 8 23

1 11 52

00..0

896 29

SR ER MR

28

Conversión de simple a doble precisión

! Tratamiento de los valores especiales– Detalle del cálculo del exponente

1 8 23

DEC

0

1…254

255

MUX

896

11

8

1 11 52

SR ER MR

SA EA MA

00…02 11…12

Figura 5: Diagrama en bloques del Hardware simple a double precisión.

0.5. Conversión de doble a simple precisión

0.5.1. Estructura del operador

1. El signo no cambia

2. Exponente: hay que cambiar de 11 bits en exceso 1023 a 8 bits en exceso127

Puede darse desbordamiento

3. Mantisa: hay que eliminar 29 bits por la derecha y redondear

AG-PR 5

Page 6: Sumador/Restador en Punto Flotante IEEE 745 en el MIPS

CYT808 Universidad Católica “Nuestra Señora de Asunción”Proyecto con

Microprocesadores IISede Regional Asunción

Ing. Electrónica Facultad de Ciencias y TecnologíaSemestre IX Departamento de Electrónica e Informática

29

Conversión de doble a simple precisión

! Estructura del operador– El signo no cambia

– Exponente: hay que cambiar de 11 bits en exceso 1023 a 8 bits enexceso 127

• puede darse desbordamiento

– Mantisa: hay que eliminar 29 bits por la derecha y redondear

S E M

1 8 23

S E M

1 11 52

–896

Redondeo

cA

30

El redondeo

! Circuito para el redondeo al más próximo

R

M (simple precisión)

cA

b51 b50 … b29 b28 b27 … b0

redondeo

guar

da

retenidos

0

b29 g red R

x 0 x 0

0 1 0 01 1 0 1x 1 1 10 1

MUX

0 1.1111111 1

10.00000

1.00000

+

1.1001101 0

1.10011

+

Si R=0, truncar:

Si R=1, incrementar:

1.1001111 1

1.10100

+

implícito

Si cA=1, corregir

Figura 6: Diagrama en bloques del Hardware double a simple precisión.

0.6. El redondeo

Circuito para el redondeo al más próximo

29

Conversión de doble a simple precisión

! Estructura del operador– El signo no cambia

– Exponente: hay que cambiar de 11 bits en exceso 1023 a 8 bits enexceso 127

• puede darse desbordamiento

– Mantisa: hay que eliminar 29 bits por la derecha y redondear

S E M

1 8 23

S E M

1 11 52

–896

Redondeo

cA

30

El redondeo

! Circuito para el redondeo al más próximo

R

M (simple precisión)

cA

b51 b50 … b29 b28 b27 … b0

redondeo

guar

da

retenidos

0

R

0

0110 1

MUX

0

1.1111111 1

10.00000

1.00000

+

1.1001101 0

1.10011

+

Si R=0, truncar:

Si R=1, incrementar:

1.1001111 1

1.10100

+

implícito

Si cA=1, corregir

Figura 7: Diagrama en boques del Hardware de redondeo.

AG-PR 6

Page 7: Sumador/Restador en Punto Flotante IEEE 745 en el MIPS

CYT808 Universidad Católica “Nuestra Señora de Asunción”Proyecto con

Microprocesadores IISede Regional Asunción

Ing. Electrónica Facultad de Ciencias y TecnologíaSemestre IX Departamento de Electrónica e Informática

b29 guarda redondeo RX 0 X 00 1 0 01 1 0 1X 1 1 1

Cuadro 3: Tabla de verdad del Algoritmo de redondeo al más próximo

Casos de valores de R

Si R = 0, Truncar

29

Conversión de doble a simple precisión

! Estructura del operador– El signo no cambia

– Exponente: hay que cambiar de 11 bits en exceso 1023 a 8 bits enexceso 127

• puede darse desbordamiento

– Mantisa: hay que eliminar 29 bits por la derecha y redondear

S E M

1 8 23

S E M

1 11 52

–896

Redondeo

cA

30

El redondeo

! Circuito para el redondeo al más p

R

M (simple precisión)

cA

b51 b50 … b29 b28 b27 … b0

redondeo

guar

da

retenidos

0

b29 g red R

x 0 x 0

0 1 0 01 1 0 1x 1 1 10 1

MUX

0 1.1111111 1

10.00000

1.00000

+

1.1001101 0

1.10011

+

Si R=1, incrementar:

1.1001111 1

1.10100

+

implícito

Si cA=1, corregir

Figura 8: Caso de R = 0

Si R = 1, Incrementar

29

Conversión de doble a simple precisión

! Estructura del operador– El signo no cambia

– Exponente: hay que cambiar de 11 bits en exceso 1023 a 8 bits enexceso 127

• puede darse desbordamiento

– Mantisa: hay que eliminar 29 bits por la derecha y redondear

S E M

1 8 23

S E M

1 11 52

–896

Redondeo

cA

30

El redondeo

! Circuito para el redondeo al más próximo

R

M (simple precisión)

cA

b51 b50 … b29 b28 b27 … b0

redondeo

guar

da

retenidos

0

b29 g red R

x 0 x 0

0 1 0 01 1 0 1x 1 1 10 1

MUX

0 1.1111111 1

10.00000

1.00000

+

1.1001101 0

1.10011

+

Si R=0, truncar:

Si R=1, incrementar:

1.1001111 1

1.10100

+

implícito

Si cA=1, corregirFigura 9: Caso R = 1

Si CA = 1, Corregir

AG-PR 7

Page 8: Sumador/Restador en Punto Flotante IEEE 745 en el MIPS

CYT808 Universidad Católica “Nuestra Señora de Asunción”Proyecto con

Microprocesadores IISede Regional Asunción

Ing. Electrónica Facultad de Ciencias y TecnologíaSemestre IX Departamento de Electrónica e Informática

29

Conversión de doble a simple precisión

! Estructura del operador– El signo no cambia

– Exponente: hay que cambiar de 11 bits en exceso 1023 a 8 bits enexceso 127

• puede darse desbordamiento

– Mantisa: hay que eliminar 29 bits por la derecha y redondear

S E M

1 8 23

S E M

1 11 52

–896

Redondeo

cA

30

El redondeo

! Circuito para el redondeo al más próximo

R

M (simple precisión)

cA

b51 b50 … b29 b28 b27 … b0

redondeo

guar

daretenidos

0

b29 g red R

x 0 x 0

0 1 0 01 1 0 1x 1 1 10 1

MUX

0 1.1111111 1

10.00000

1.00000

+

1.1001101 0

1.10011

+

Si R=0, truncar:

Si R=1, incrementar:

1.1001111 1

1.10100

+

implícito

Si c

Figura 10: Caso CA = 1

0.7. Resultados

Aquí el código del test bench de la implementacion en vhdl del trabajo

LIBRARY ieee;USE ieee.std_logic_1164.ALL;

-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--USE ieee.numeric_std.ALL;

ENTITY floating_point_unit_tbm ISEND floating_point_unit_tbm;

ARCHITECTURE behavior OF floating_point_unit_tbm IS

-- Component Declaration for the Unit Under Test (UUT)

COMPONENT floating_point_unitPORT(

a1 : IN std_logic_vector(31 downto 0);a2 : IN std_logic_vector(31 downto 0);b1 : IN std_logic_vector(31 downto 0);b2 : IN std_logic_vector(31 downto 0);mode : IN std_logic;operation : IN std_logic;c1 : OUT std_logic_vector(31 downto 0);c2 : OUT std_logic_vector(31 downto 0)

);END COMPONENT;

--Inputssignal a1 : std_logic_vector(31 downto 0) := (others => ’0’);signal a2 : std_logic_vector(31 downto 0) := (others => ’0’);signal b1 : std_logic_vector(31 downto 0) := (others => ’0’);

AG-PR 8

Page 9: Sumador/Restador en Punto Flotante IEEE 745 en el MIPS

CYT808 Universidad Católica “Nuestra Señora de Asunción”Proyecto con

Microprocesadores IISede Regional Asunción

Ing. Electrónica Facultad de Ciencias y TecnologíaSemestre IX Departamento de Electrónica e Informática

signal b2 : std_logic_vector(31 downto 0) := (others => ’0’);signal mode : std_logic := ’0’;signal operation : std_logic := ’0’;

--Outputssignal c1 : std_logic_vector(31 downto 0);signal c2 : std_logic_vector(31 downto 0);

BEGIN

-- Instantiate the Unit Under Test (UUT)uut: floating_point_unit PORT MAP (

a1 => a1,a2 => a2,b1 => b1,b2 => b2,mode => mode,operation => operation,c1 => c1,c2 => c2

);-- Stimulus processstim_proc: processbegin

-- hold reset state for 100 ns.wait for 100 ns;

-- insert stimulus here--Modo simplea1 <= X"40C80000";--6.25

a2 <= X"00000000";b1 <= X"40C80000";b2 <= X"00000000";mode <= ’0’; -- simpleoperation <= ’0’; -- suma

wait for 100 ns;

a1 <= X"40C80000";--6.25a2 <= X"00000000";b1 <= X"40200000";--2.5b2 <= X"00000000";mode <= ’0’; -- simpleoperation <= ’1’; -- resta

wait for 100 ns;

AG-PR 9

Page 10: Sumador/Restador en Punto Flotante IEEE 745 en el MIPS

CYT808 Universidad Católica “Nuestra Señora de Asunción”Proyecto con

Microprocesadores IISede Regional Asunción

Ing. Electrónica Facultad de Ciencias y TecnologíaSemestre IX Departamento de Electrónica e Informática

a1 <= X"40C80000";--6.25a2 <= X"00000000";b1 <= X"40C80000";--2.5b2 <= X"00000000";mode <= ’0’; -- simpleoperation <= ’1’; -- resta

wait for 100 ns;

a1 <= X"41020000";--8.125a2 <= X"00000000";b1 <= X"41020000";--8.125b2 <= X"00000000";mode <= ’0’; -- simpleoperation <= ’1’; -- resta

wait for 100 ns;

a1 <= X"3FF40000";--1.25 en doublea2 <= X"00000000";b1 <= X"3FD00000";--0.25 en doubleb2 <= X"00000000";mode <= ’1’; -- doubleoperation <= ’1’; -- resta

wait for 100 ns;

a1 <= X"3FF40000";--1.25 en doublea2 <= X"00000000";b1 <= X"3FD00000";--0.25 en doubleb2 <= X"00000000";mode <= ’1’; -- doubleoperation <= ’0’; -- suma

wait for 100 ns;wait;

end process;

END;

AG-PR 10

Page 11: Sumador/Restador en Punto Flotante IEEE 745 en el MIPS

CYT808 Universidad Católica “Nuestra Señora de Asunción”Proyecto con

Microprocesadores IISede Regional Asunción

Ing. Electrónica Facultad de Ciencias y TecnologíaSemestre IX Departamento de Electrónica e Informática

Los resultados se pueden ver en la formas de onda de salida donde los resultados estanen hexadecimal, a1,a2 es el primer operando, b1,b2 es el segundo operando, c1,c2 esel resultado, mode es ’0’ en forma simple y ’1’ en forma double, operation es una restacuando es ’1’ y ’0’ cuando es una suma, Si se opera en fornato simple solo se opera sobrelos operandos a1,b1 y el resultado tiene sentido solo en c1, en caso de operar en mododouble los operandos son en conjunto a1&a2(64 bits) y b1&b2(64 bits) y el resultado esc1&c2(64 bits).

0 ns 100 ns 200 ns 300 ns 400 ns 500 ns 600 ns 700 ns

Figura 11: Resultados de la FPU

0.8. Referencias

1. Organización y Diseño de Computadores David A. Patterson, McGraw Hill, 3ThEdición

2. http://www.zator.com/Cpp/E2_2_4a1.htm

3. http://www6.uniovi.es/ãntonio/uned/ieee754/IEEE-754hex32.html

4. http://babbage.cs.qc.cuny.edu/IEEE-754.old/64bit.html

5. http://www.h-schmidt.net/FloatConverter/

6. http://www.mipshelper.com/mips-converter.php

AG-PR 11