UNIVERSIDADE DE PERNAMBUCO
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
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
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:
UNIVERSIDADE DE PERNAMBUCO
Introdução
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
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.
UNIVERSIDADE DE PERNAMBUCO
IEEE - 754 - Metade (16-bit)
- Simples (32-bit)
-Dupla (64-bit)
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.
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
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
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).
UNIVERSIDADE DE PERNAMBUCO
Instruções de Ponto Flutuante no MIPS:
UNIVERSIDADE DE PERNAMBUCO
Adição em Ponto Flutuante
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:
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
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
UNIVERSIDADE DE PERNAMBUCO
Multiplicação em Ponto Flutuante
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
UNIVERSIDADE DE PERNAMBUCO
• Etapa 2: Multiplicando os significandos:
1,000bin
x 1,110bin
0000
1000
1000
1000
1110000bin
Multiplicação em Ponto Flutuante
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
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
Top Related