Escolar Documentos
Profissional Documentos
Cultura Documentos
Vírgula flutuante
Aula 6
Page 2
17 de Março de 2005
Arquitectura de Computadores 2004/05
2 - Aula 6
Page 4
17 de Março de 2005
Arquitectura de Computadores 2004/05
4 - Aula 6
Page 5
17 de Março de 2005
Arquitectura de Computadores 2004/05
5 - Aula 6
Page 6
17 de Março de 2005
Arquitectura de Computadores 2004/05
6 - Aula 6
Page 7
17 de Março de 2005
Arquitectura de Computadores 2004/05
7 - Aula 6
Page 8
17 de Março de 2005
Arquitectura de Computadores 2004/05
8 - Aula 6
Page 9
17 de Março de 2005
Arquitectura de Computadores 2004/05
9 - Aula 6
Page 10
17 de Março de 2005
Arquitectura de Computadores 2004/05
10 - Aula 6
Page 11
17 de Março de 2005
Arquitectura de Computadores 2004/05
11 - Aula 6
Page 12
17 de Março de 2005
Arquitectura de Computadores 2004/05
12 - Aula 6
Page 13
17 de Março de 2005
Arquitectura de Computadores 2004/05
13 - Aula 6
Normalização (1)
Consideremos um formato simplificado em VF (e mais
manejável): fracção com 3 bits, para já o expoente é um
inteiro “e”
•
O format é: S f1 f2 f3 “expoente e”
•
O número é (-1)
S
x 0,f1 f2 f3 x 2
(expoente e)
Quero representar o número real “+2”
•
Por (-1)
0
x 0,1 0 0 x 2
(e = 2)
= + 1/2 x 4 = + 2 ?
•
Por (-1)
0
x 0,0 1 0 x 2
(e = 3)
= + 1/4 x 8 = + 2 ?
•
Por (-1)
0
x 0,0 0 1 x 2
(e = 4)
= + 1/8 x 16 = + 2 ?
Múltiplas representações do “+2” não são aceitáveis
Page 14
17 de Março de 2005
Arquitectura de Computadores 2004/05
14 - Aula 6
Normalização (2)
Porque é que esta solução não é viável?
•
Apenas existe um número finito de padrões binários para
representar todos os reais, já que são limitadas as
dimensões da fracção e do expoente
•
Se deixarmos que um único valor (por exemplo, o número
2)
seja representado de muitas formas diferentes, então
apenas conseguimos representar um número bastante
reduzido de números reais diferentes
Como resolver o problema?
•
Precisamos de uma representação “canónica”
•
Solução possível: a fracção começa sempre com um 1
•
Não é a solução preconizada pela IEEE (ver à frente)
Page 15
17 de Março de 2005
Arquitectura de Computadores 2004/05
15 - Aula 6
Normalização (3)
Para o número real “+2”
•
(-1)
0
x 0,1 0 0 x 2
(e = 2)
= + 1/2 x 4 OK, normalizada
•
(-1)
0
x 0,0 1 0 x 2
(e = 3)
= + 1/4 x 8 Not OK
•
(-1)
0
x 0,0 0 1 x 2
(e = 4)
= + 1/8 x 16 Not OK
Consequência
•
Admitir que os operandos necessários à execução de uma
operação em VF já estão normalizados
•
O hardware deve assegurar-se que o resultado da operação em
VF também vem normalizado
•
Aqui temos um problema; precisamos de hardware extra, e não
é fácil de implementar
Page 16
17 de Março de 2005
Arquitectura de Computadores 2004/05
16 - Aula 6
Page 17
17 de Março de 2005
Arquitectura de Computadores 2004/05
17 - Aula 6
Page 18
17 de Março de 2005
Arquitectura de Computadores 2004/05
18 - Aula 6
Page 19
17 de Março de 2005
Arquitectura de Computadores 2004/05
19 - Aula 6
Page 20
17 de Março de 2005
Arquitectura de Computadores 2004/05
20 - Aula 6
Page 21
17 de Março de 2005
Arquitectura de Computadores 2004/05
21 - Aula 6
Expoentes (1)
Outro exemplo simplificado: expoente com 3 bits e2 e1
e0
•
Se #bits = 3, então o desvio de que precisamos é 2(3-1) -
1 = 3.
•
Assim sendo, o nosso número será (-1)
S
x (1,f) x 2
(e-3)
•
Apenas existem 8 padrões binários para o expoente:
e2 e1 e0 signif. expoente
0 0 0 0-3 = -3
0 0 1 1-3 = -2
0 1 0 2-3 = -1
0 1 1 3-3 = 0
1 0 0 4-3 = 1
1 0 1 5-3 = 2
1 1 0 6-3 = 3
1 1 1 7-3 = 4
Não é simétrico. Mais um
positivo do que negativos
Bits e2 e1 e0 “ordenados”
da mesma forma que usaríamos
para um expoente real
com sinal
Page 22
17 de Março de 2005
Arquitectura de Computadores 2004/05
22 - Aula 6
Expoentes (2)
O “ordenados da mesma forma” é a razão porque
usamos
um expoente desviado (“biased”)
•
Consideremos um formato simplificado, com 1 bit de sinal,
3
bits para f, 3 bits para e: [s0 e2 e1 e0 f1 f2 f3]
•
Consideremos 2 números:
[0 001 110] = +0,110 x 2
(1 - 3)
= +(1/2+1/4) x 2
-2
= +0,1875
[0 101 110] = +0,110 x 2
(5 - 3)
= +(1/2+1/4) x 2
2
= +3
•
Se compararmos apenas os padrões binários [0 001 110] e
[0 101 110] como se fossem inteiros sem sinal, podemos
concluir sobre os valores relativos dos números
•
Ex: 0001110 < 0101110 considerados como inteiros sem
sinal. Mas também +0,1875 < +3
•
A comparação de dois números em VF vem simplificada
Page 23
17 de Março de 2005
Arquitectura de Computadores 2004/05
23 - Aula 6
Page 24
17 de Março de 2005
Arquitectura de Computadores 2004/05
24 - Aula 6
Page 25
17 de Março de 2005
Arquitectura de Computadores 2004/05
25 - Aula 6
Interpret. de um número na
IEEE
Nem todos os padrões geram números “reais”
•
3 casos para o expoente e, baseados em Emin= -126,
Emax=+127
•
e = Emin-1 significa e = -127
•
Emin<=e<=Emax, ou seja, e no intervalo [-126, +127]
•
e = Emax+1 significa e = +128
•
2 casos para a fracção f:
•
f = 0 (todos os 23 bits a 0)
•
f != 0
•
O bit de sinal não tem função nenhuma em particular,
apenas designa o sinal do número em VF
Vamos construir uma matriz com todos os casos
•
No início parece complexo, mas faz sentido
Page 26
17 de Março de 2005
Arquitectura de Computadores 2004/05
26 - Aula 6
Page 27
17 de Março de 2005
Arquitectura de Computadores 2004/05
27 - Aula 6
Page 28
17 de Março de 2005
Arquitectura de Computadores 2004/05
28 - Aula 6
Zeros e infinitos
e = 0, f = 0 significa número = 0. São permitidos +0, -0
e= 11...1, f=0 significa núm = ∞. São permit. + ∞, - ∞
Sinal S=0
+∞
Sinal S=0
+0
e=00000000
E=Emin-1=
=-127
e=xxxxxxxx
no intervalo
[-126,+127]
e=11111111
E=Emax+1=
=+128
f=0000 ... 00
f!=0000 ... 00
=xxxx ... xx
Denormalized
numbers
Not a Number
NAN
Sinal S=1
-
∞
Sinal S=1
-0
Ordinary num
(-1)
S
x (1,f) x 2
(e-127)
Page 29
17 de Março de 2005
Arquitectura de Computadores 2004/05
29 - Aula 6
Infinitos (1)
Porquê os padrões especiais?
•
Num sistema de numeração com um número de bits finito,
podemos ter números com módulos demasiado grandes
para
os conseguirmos representar com o número de bits
disponível
•
Exemplo: com uma fracção f com 3 bits e um expoente e
com 3 bits, o maior módulo (finito) é:
(1,111) x 2
(6 -3)
= (1,875) x 2
3
= 15
•
Lembrar que o expoente e=111 é especial, reservado para
os INFINITOS; é por isso que o expoente do número acima
é e=110
Page 30
17 de Março de 2005
Arquitectura de Computadores 2004/05
30 - Aula 6
Infinitos (2)
O que acontece se somarmos 1 ao número com o maior
módulo?
•
Já não temos padrões binários para representar o
resultado!
Faltam bits!
•
Provocamos OVERFLOW na operação de adição em VF,
porque o número que queremos é demasiado grande
•
Porém, na aritmética da norma IEEE coloca-se o resultado
em + ∞ou - ∞e continua-se!
•
+
∞
= (1.000) x 2
(7-3)
= (1.000) x 2
4
= 16 (!)
Page 31
17 de Março de 2005
Arquitectura de Computadores 2004/05
31 - Aula 6
Zeros
Um padrão todo com 0s significa o número +0
•
Mas o que realmente significa é (-1)
0
x (1.0) x 2
(0-127)
!
Bom para testar o 0
Sinal S=0
+∞
Sinal S=0
+0
e=00000000
E=Emin-1=
=-127
e=xxxxxxxx
no intervalo
[-126,+127]
e=11111111
E=Emax+1=
=+128
f=0000 ... 00
f!=0000 ... 00
=xxxx ... xx
Denormalized
numbers
Not a Number
NAN
Sinal S=1
-∞
Sinal S=1
-0
Ordinary num
(-1)
S
x (1,f) x 2
(e-127)
Page 32
17 de Março de 2005
Arquitectura de Computadores 2004/05
32 - Aula 6
Page 33
17 de Março de 2005
Arquitectura de Computadores 2004/05
33 - Aula 6
Page 34
17 de Março de 2005
Arquitectura de Computadores 2004/05
34 - Aula 6
Denormals (1)
Uma outra categoria de números (a última): os
“denormals” ou “denormalized numbers”
•
Não são normalizados como todos os outros números
•
Permitem a representação de números mais pequenos com
precisão menor
Page 36
17 de Março de 2005
Arquitectura de Computadores 2004/05
36 - Aula 6
Denormals (2)
Sinal S=0
+∞
Sinal S=0
+0
e=00000000
E=Emin-1=
=-127
e=xxxxxxxx
no intervalo
[-126,+127]
e=11111111
E=Emax+1=
=+128
f=0000 ... 00
f!=0000 ... 00
=xxxx ... xx
Denormalized
numbers
Not a Number
NAN
Sinal S=1
-∞
Sinal S=1
-0
Ordinary num
(-1)
S
x (1,f) x 2
(e-127)
Page 37
17 de Março de 2005
Arquitectura de Computadores 2004/05
37 - Aula 6
Denormals (3)
Qual é o número em VF na norma IEEE 754 com o
menor
módulo?
Bit #: 31 30 . . . 23 22 21 20 19 18 . . . 03 02 01 00
O menor valor legal para f é
f=00000 ... 0.
Significanda “unpacked” é 1,0
O menor
expoente legal é
00000001
que é igual a
2
(1-127)
=2
(-126)
Logo, o menor número normalizado e legal é
1,0 x 2
(-126)
Page 38
17 de Março de 2005
Arquitectura de Computadores 2004/05
38 - Aula 6
Próxima aula
Principais características dos processadores RISC
Estrutura de um processador (MIPS) sem pipeline, de
ciclo único
O “datapath” ou circuito de dados
A unidade de controlo