O documento discute representação de números de ponto flutuante em MIPS, incluindo conceitos como overflow e underflow. Ele explica o padrão IEEE 754 e as instruções de ponto flutuante em MIPS, como adição e multiplicação, ilustrando os algoritmos passo a passo com exemplos numéricos.
3. 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
4. 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:
6. 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
7. UNIVERSIDADE DE PERNAMBUCO
Conceitos Importantes
• Overflow
Este caso ocorre em uma situação em que um expoente positivo tornase muito grande para caber no campo expoente.
• Underflow
Ocorre 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.
9. 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.
10. 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
11. 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
12. 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
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).
• Desvio em ponto flutuante:
Se verdadeiro
Se falso
bclt
bclf
15. 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:
16. 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
17. 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
19. UNIVERSIDADE DE PERNAMBUCO
Multiplicação em Ponto Flutuante
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.
• Etapa 1: somando os expoentes sem bias
-1 + (-2)= -3
ou usando a representação deslocada:
(-1+127) + (-2+127) – 127 = -3 + 127 = 124
21. UNIVERSIDADE DE PERNAMBUCO
Multiplicação em Ponto Flutuante
O produto é:
1,110000bin x 2-3 , ajustando para 4 bits temos:
1,110bin x 2-3
• Etapa 3: Verificar normalização underflow e overflow.
1,110bin x 2-3 produto normalizado.
127 >= -3 >= -126 não existe underflow ou overflow
22. UNIVERSIDADE DE PERNAMBUCO
Multiplicação em Ponto Flutuante
• Etapa 4: Verificar necessidade de arredondamento e
normalização.
1,110bin x 2-3 produto normalizado.
Necessitando ser normalizado deve voltar a Etapa 3.
• Etapa 5: sinais dos operandos diferentes implica no
produto negativo.
-1,110bin x 2-3