Organização e Projetos de Computadores
Capítulo 3
Hennessy • Patterson
1
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Números
Bits são apenas bits (nenhum significado inerente) — Convenções
definem a relação entre bits e números
• Números binários (base 2)
– 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001...
– Decimal: 0...2n-1
• Obviamente, torna-se mais complicado:
•
– Números são finitos (overflow)
– Frações e números reais
– Números negativos
– Por exemplo, nenhuma instrução subi do MIPS; addi pode
somar um número negativo
• Como representar os números negativos? Por exemplo, que
padrões de bit representarão esses números?
Hennessy • Patterson
2
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Representações possíveis
•
Sinal e magnitude:
Complemento a um
Complemento a dois
000 = +0
001 = +1
010 = +2
011 = +3
100 = -0
101 = -1
110 = -2
111 = -3
000 = +0
001 = +1
010 = +2
011 = +3
100 = -3
101 = -2
110 = -1
111 = -0
000 = +0
001 = +1
010 = +2
011 = +3
100 = -4
101 = -3
110 = -2
111 = -1
•
Questões: equilíbrio, número de zeros, facilidade de operações
•
Qual é o melhor? Por quê?
Hennessy • Patterson
3
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
MIPS
Números de 32 bits com sinal:
maxint
minint
Hennessy • Patterson
4
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Operações de complemento a dois
•
Negar um número de complemento a dois: inverter todos os bits
e somar 1
•
Lembre-se: “negar” e “inverter” são muito diferentes!
•
Converter números de n bits em números com mais de n bits:
•
O campo imediato de 16 bits do MIPS é convertido em 32 bits
para aritmética – Deve-se copiar o bit mais significativo (o bit de
sinal) para os outros bits
0010 -> 0000 0010
1010 -> 1111 1010
•
“Extensão de sinal”: lbu (load byte unsigned) versus lb (load
byte)
Hennessy • Patterson
5
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Adição e subtração
•
Exatamente como aprendemos na escola (emprestar/subir 1s)
0111
+ 0110
•
0111
- 0110
0110
- 0101
Facilidade de operações do complemento a dois - Subtração usando
adição para números negativos
0111
+ 1010
•
Overflow (resultado muito grande para a word finita do computador): por
exemplo, somar dois números de n bits não produz um número de n bits
0111
+ 0001
note que o termo overflow é um pouco confuso;
1000
ele não significa que um carry “transbordou”
Hennessy • Patterson
6
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Detectando overflow
•
Nenhum overflow ocorrerá ao se somar um número positivo com
um negativo
•
Nenhum overflow ocorrerá ao se subtrair dois números de sinais
iguais
•
O overflow ocorre quando o valor afetar o sinal:
– Overflow ao somar dois positivos produz um negativo
– Ou, somar dois negativos produz um positivo
– Ou, subtrair um negativo de um positivo e obter um negativo
– Ou, subtrair um positivo de um negativo e obter um positivo
Hennessy • Patterson
7
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Efeitos do overflow
• Uma exceção (interrupção) ocorrendo:
– O controle salta para um endereço predefinido para exceção
– O endereço interrompido é salvo para uma possível
retomada
• Nem sempre desejamos detectar overflow — Novas
instruções MIPS: addu, addiu, subu
– Nota:
addiu ainda com extensão de sinal
– Nota:
sltu, sltiu para comparações sem sinal
Hennessy • Patterson
8
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Multiplicação
• Mais complexa do que a adição - Realizada através de
deslocamento e adição
• Mais tempo e mais área
• Algoritmo da escola
0010
x 1011
(multiplicando)
(multiplicador)
• Números negativos: converta e multiplique - Existem
técnicas melhores, que não serão tratadas aqui
Hennessy • Patterson
9
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Multiplicação: Implementação
Hennessy • Patterson
10
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Versão final
O multiplicador inicia na metade direita do produto
Hennessy • Patterson
11
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Ponto flutuante – Um breve exame
•
Precisamos de uma maneira de representar
– Números com frações, por exemplo, 3,1416... (K)
– Números muito pequenos, por exemplo, 0,000000001
– Números muito grandes, por exemplo, 3,15576 × 109
•
Representação:
– Sinal, expoente, significando: (–1)sinal × significando × 2expoente
– Mais bits para o significando fornece mais precisão
– Mais bits para o expoente aumenta a faixa de valores
•
Padrão de ponto flutuante IEEE 754:
– Precisão única: expoente de 8 bits, significando de 23 bits
– Precisão dupla: expoente de 11 bits, significando de 52 bits
Hennessy • Patterson
12
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Padrão de ponto flutuante IEEE 754
•
O bit “1” inicial do significando está implícito
•
O expoente é “desviado” para facilitar a classificação
– Desvio do 127: -1 equivale a 126 (-1+126) e +1 equivale a 128 (+1+127)
com zero sendo equivalente a 127
– Valor com 0s indica o menor expoente e com 1s o maior
– Desvio do 127 para precisão única e do 1023 para precisão dupla
– Resumo: (–1)sinal × (1 + significando) × 2expoente – desvio
•
Exemplo:
– Decimal: -0,75 =− 3
2 2 dec
=
− 11bin
2 2 dec
= −0,11bin
– Binário: -0,11 = -1.1 × 2-1
– Ponto flutuante -1: expoente = 126 = 01111110
•
Precisão única IEEE: 10111111010000000000000000000000
Hennessy • Patterson
13
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Adição de ponto flutuante
Hennessy • Patterson
14
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Complexidades do ponto flutuante
•
As operações são um pouco mais complicadas (veja o texto)
•
Além do overflow podemos ter o “underflow”
•
A precisão pode ser um grande problema
– O IEEE 754 mantém dois bits extras, guarda e arredondamento
– Quatro modos de arredondamento
– Positivo dividido por zero produz “infinidade”
– Zero dividido por zero não produz um número
– Outras complexidades
•
Implementar o padrão pode ser arriscado
•
Não usar o padrão pode ser ainda pior
– Veja no texto a descrição do 80x86 e o bug do Pentium!
Hennessy • Patterson
15
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Resumo do Capítulo 3
•
•
•
•
•
•
A aritmética de computador é restrita por uma precisão limitada
Os padrões de bit não têm um significado inerente mas existem
padrões
– Complemento a dois
– Ponto flutuante IEEE 754
As instruções de computador determinam o “significado” dos
padrões de bit
O desempenho e a precisão são importantes; portanto, existem
muitas complexidades nas máquinas reais
A escolha do algoritmo é importante e pode levar a otimizações
de hardware para espaço e tempo (por exemplo, multiplicação)
Fazer uma revisão pode ser uma boa idéia (a Seção 3.10 é uma
ótima leitura!)
Hennessy • Patterson
16
©2005 Elsevier Editora Ltda
Download

Capítulo 3 Números