Top Banner
UNIVERSIDADE DE PERNAMBUCO Ponto Flutuante em MIPS
22

Ponto Flutuante em MIPS

Jul 01, 2015

Download

Education

Mayara Mônica
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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