Ponto Flutuante em MIPS

22
UNIVERSIDADE DE PERNAMBUCO Ponto Flutuante em MIPS

Transcript of Ponto Flutuante em MIPS

Page 1: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Ponto Flutuante em MIPS

Page 2: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Roteiro

1. Introdução2. Representação em ponto flutuante3. Conceitos Importantes4. IEEE - 7545. Instruções de ponto flutuante em MIPS6. Adição em Ponto Flutuante7. Multiplicação em Ponto Flutuante

Page 3: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Introdução

• As linguagens de programação admitem números com frações, que são chamados de reais na matemática. Exemplos:

• Notação científica

• Normalizado

Page 4: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Introdução

• Exemplo de número em notação científica e normalizado:

• Exemplo de números que não estão na notação científica e também não estão normalizados:

Page 5: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Introdução

Page 6: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Representação em Ponto Flutuante

• Esta representação é chamada sinal e magnitude pois o sinal possui um bit separado do restante do número. Onde:

• S é o sinal do número de ponto flutuante (1 significando negativo)• Expoente é o valor do campo de expoente de 8 bits (incluindo o sinal do

expoente)• Fração é o número de 23 bits

Page 7: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Conceitos Importantes• Overflow

Este caso ocorre em uma situação em que um expoente positivo torna-se muito grande para caber no campo expoente.

• UnderflowOcorre quando o expoente negativo torna-se muito grande para caber no campo de expoente.

** Uma maneira de reduzir as chances de underflow e overflow é oferecer outro formato que tenha um expoente maior. Em C, esse número é chamado double, e as operações sobre doubles são indicadas como aritmética de ponto flutuante de precisão dupla que utiliza duas words MIPS de 32 bits.

Page 8: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

IEEE - 754 - Metade (16-bit)

- Simples (32-bit)

-Dupla (64-bit)

Page 9: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Instruções de Ponto Flutuante no MIPS

• Algumas considerações:

• Os projetistas do MIPS decidiram prover registradores específicos para operações em ponto flutuante, chamados $f0, $f1, $f2....$f31

Usados tanto para precisão simples quanto para precisão dupla!

• Foram incluídas instruções especiais de load e store para registradores em ponto flutuante: lwcl e swcl.

Page 10: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Instruções de Ponto Flutuante no MIPS

• Adição em ponto flutuante:

Precisão Simples Precisão Dupla

add.s add.d

• Subtração em ponto flutuante:

Precisão Simples Precisão Dupla

sub.s sub.d

Page 11: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Instruções de Ponto Flutuante no MIPS

• Multiplicação em ponto flutuante:

Precisão Simples Precisão Dupla

mul.s mul.d

• Divisão em ponto flutuante:

Precisão Simples Precisão Dupla

div.s div.d

Page 12: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Instruções de Ponto Flutuante no MIPS

• Comparação em ponto flutuante:

Precisão Simples Precisão Dupla

c.x.s c.x.d

• Desvio em ponto flutuante:

Se verdadeiro Se falso

bclt bclf

Onde x pode ser igual (eq), diferente (req), menor que (lt), menor que ou igual a (le), maior que (gt), ou maior que ou igual a (ge).

Page 13: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Instruções de Ponto Flutuante no MIPS:

Page 14: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Adição em Ponto Flutuante

Page 15: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Adição em Ponto Flutuante

Somar os números 0,5 e -0,4375 em binário usando o algoritmo da figura anterior:

Page 16: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Adição em Ponto Flutuante

Etapa 1: O significando do número com o menor expoente é deslocado para a direita até seu expoente combinar com o maior número:

Etapa 2: Some os significandos:

Etapa 3: Normalize a soma, verificando overflow ou underflow:

Como 127 ≥ 04 ≥ - 126, não existe overflow ou underflow. O expoente deslocado seria – 4 + 127, ou 123, que está entre 1 e 254, o menor e o maior expoente deslocado não reservado

Page 17: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Adição em Ponto Flutuante

Etapa 4: Arredondando a soma:

A soma já cabe exatamente em 4 bits, de modo que não há mudança nos bits devido ao arredondamento. Essa soma é, então:

Essa soma é o que esperaríamos da soma de

Page 18: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Multiplicação em Ponto Flutuante

Page 19: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

Considere os seguintes números:

0,5dec e -0,4375dec

em binário:

1,000x2-1 por -1,110x2-2

Consideremos operandos e resultado com no máximo 4 bits.

Multiplicação em Ponto Flutuante

• Etapa 1: somando os expoentes sem bias

-1 + (-2)= -3

ou usando a representação deslocada:

(-1+127) + (-2+127) – 127 = -3 + 127 = 124

Page 20: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

• Etapa 2: Multiplicando os significandos:

1,000bin

x 1,110bin

0000

1000

1000

1000

1110000bin

Multiplicação em Ponto Flutuante

Page 21: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

• Etapa 3: Verificar normalização underflow e overflow.

1,110bin x 2-3 produto normalizado.

127 >= -3 >= -126 não existe underflow ou overflow

Multiplicação em Ponto Flutuante

O produto é:

1,110000bin x 2-3 , ajustando para 4 bits temos:

1,110bin x 2-3

Page 22: Ponto Flutuante em MIPS

UNIVERSIDADE DE PERNAMBUCO

• Etapa 4: Verificar necessidade de arredondamento e normalização.

1,110bin x 2-3 produto normalizado.

Necessitando ser normalizado deve voltar a Etapa 3.

Multiplicação em Ponto Flutuante

• Etapa 5: sinais dos operandos diferentes implica no produto negativo.

-1,110bin x 2-3