Você está na página 1de 20

Organizao de Computadores

Eduardo Barrre
DCC/UFJF

Baseado no material do professor Marcelo Lobosco

Aritmtica Computacional
Aula 08

Ponto Flutuante
Precisamos

de representao para nmeros reais Utilizaremos na representao nmeros normalizados em notao cientfica
Notao

cientfica normalizada: possui nico dgito esquerda do ponto decimal (ou ponto binrio, caso a base seja 2) Ex.: 1,0 x 10-9

Ponto Flutuante
Ponto

flutuante: aritmtica computacional que representa os nmeros em que o ponto binrio no fixo
na forma 1,aaaaaa x 2bbbb Precisamos de compromisso entre tamanho da frao e do expoente
Representados

Aumento da preciso x aumento do intervalo dos nmeros que podem ser representados

Ponto Flutuante

Nmeros em ponto flutuante mltiplos do tamanho de uma palavra

Preciso simples (floats em C): uma palavra usada na representao

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 s

expoente

frao

Preciso dupla (doubles em C): duas palavras usadas na representao

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 s expoente frao 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 frao (continuao)

Ponto Flutuante

Representaes anteriores chamada de sinal e magnitude


Sinal

possui um bit separado do restante do nmero

Representao em preciso simples


to pequenos quanto 2 x 10-38 e to grandes quanto 2 x 1038 Overflow ainda pode ocorrer
Nmeros

Expoente positivo torna-se muito grande para caber no campo de expoente

Tambm

podemos ter underflow

Expoente negativo torna-se muito grande para caber no campo de expoente

Ponto Flutuante
Representao
Nmeros

em preciso dupla

to pequenos quanto 2 x 10-308 e to grandes quanto 2 x 10308

Formato
IEEE

de ponto flutuante do IEEE

754

Mais

bits podem ser colocados na frao

Nmeros

sempre na forma 1,xxx Um implcito Bits da frao numerados da esquerda para direita Termo significando utilizado

Ponto Flutuante
Uso

de notao deslocada

Bias

(excesso) adicionado ao expoente No padro IEEE valor 127 utilizado como bias para preciso simples e 1023 para preciso dupla

(-1)s x (1 + frao) x 2 (expoente - bias)

No

exemplo anterior:

-1 + 127 = 126 => 0111 1110 +1 + 127 = 128 => 1000 0000

Ponto Flutuante
Exemplo:

Representar -0,75 em preciso simples e dupla


-0,7510 = 0,112 Na notao cientfica normalizada: -1,1 x 2-1 Expoente: -1+127 = 126 => 01111110 Nmero negativo: sinal = 1

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ponto Flutuante
Exemplo
Na

(cont.)

preciso dupla, expoente igual a -1+1023 = 1022 => 01111111110

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 0 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ponto Flutuante
Que

nmero decimal representado por este float de preciso simples?


0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 1 0 0 0 0 0 0 1 0 1 0

Bit

de sinal: 0 (nmero positivo) (-1)0 x (1 + 0,01) x 2(129 127) = 1 x 1,25 x 4 = 5,0

Ponto Flutuante

Ponto Flutuante
Instrues
Adio

de ponto flutuante no MIPS

simples e dupla: add.s e add.d Subtrao simples e dupla: sub.s e sub.d Multiplicao simples e dupla: mul.s e mul.d Diviso simples e dupla: div.s e div.d Comparao simples e dupla: c.x.s e c.x.d

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

Ponto Flutuante
Comparao

em ponto flutuante define um bit como verdadeiro ou falso, dependendo da condio de comparao
Desvio

de ponto flutuante decide ento se desviar ou no, dependendo da condio

Projetistas
$f0,

MIPS acrescentaram registradores de ponto flutuante separados


$f1, ..., $f31 Usados para preciso simples ou dupla

Vida real: ponto flutuante no IA32


Operandos

podem estar no topo da pilha, na memria ou em um dos 7 registradores do chip Operandos mais largos no topo da pilha do que na memria
Todas

as operaes realizadas nesse formato interno largo (80 bits) Converso automtica para formato largo em um load para a pilha e convertidos de volta em um store

Vida real: ponto flutuante no IA32


Operao

em ponto flutuante podem ser divididas em quatro classes:


Movimentao

de dados: load, load constant,

store, ... Aritmticas: add, subtract, divide, square root, absolute value, ... Comparao Instrues transcendentais: sine, cosine, log, exponentiation...

Vida real: ponto flutuante no IA32


Operaes

de memria reservam dois bits para decidir se operando um nmero de ponto flutuante de 32 ou 64 bits, ou inteiro de 16 ou 32 bits Arquitetura SSE2 inclui 8 novos registradores que podem ser usados como operandos de ponto flutuante
EMT64

expandiu para 16

Falcias e Armadilhas
Falcia:
x

Adio de ponto flutuante associativa


= -1,5 x 1038, y = 1,5 x 1038 e z = 1,0 x + (y + z) = -1,5 x 1038 + (1,5 x 1038 + 1,0) = 1,5 x 1038 + 1,5 x 1038 = 0,0 (x + y) + z = (-1,5 x 1038 + 1,5 x 1038) + 1,0 = 0,0 + 1,0 = 1,0

Falcias e Armadilhas
Falcia:

Somente matemticos tericos se importam com preciso do ponto flutuante

Prxima Aula...

Avaliando e Compreendendo o Desempenho


Introduo Desempenho

da CPU e seus Fatores

Você também pode gostar