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 representamos 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
maxint
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: inverta
•
•
•
•
•
•
todos os bits e some 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
copie o bit mais significativo (o bit de sinal) para os
outros bits
0010 -> 0000 0010
1010 -> 1111 1010
“extensão de sinal” (lbu versus lb)
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)
•
Facilidade de operações do complemento a dois - subtração usando
adição para números negativos
0111
+ 0110
0111
- 0110
0110
- 0101
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 quando somar um número positivo com um
negativo
• Nenhum overflow quando sinais são iguais para subtração
• O overflow ocorre quando o valor afeta o sinal:
- overflow ao somar dois positivos produz um negativo
- ou, somar dois negativos produz um positivo
- ou, subtraia um negativo de um positivo e obtenha um
negativo
- ou, subtraia um positivo de um negativo e obtenha um
positivo
• Considere as operações A + B e A  B
- Pode ocorrer overflow se B for 0?
- Pode ocorrer overflow se A for 0?
Hennessy • Patterson
7
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Efeitos do overflow
• Uma exceção (interrupção) ocorre
- O controle salta para um endereço predefinido
para exceção
- O endereço interrompido é salvo para uma
possível retomada
• Detalhes baseados na linguagem/sistema de software
- exemplo: controle de vôo versus dever de casa
• 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
• Vejamos três versões baseadas em um algoritmo da
escola
•
0010 (multiplicando)
x 1011 (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
Caminho de dados
Hennessy • Patterson
10
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Multiplicação: Implementação
controle
Hennessy • Patterson
11
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Versão final
O multiplicador inicia na metade
direita do produto
O que entra aqui?
Hennessy • Patterson
12
©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
- 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
• 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
13
©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
- todos os 0s são o menor expoente, todos os 1s são 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 = - ( ½ + ¼ )
- binário: -0,11 = -1.1  2-1
- ponto flutuante: expoente = 126 = 01111110
•
precisão única IEEE: 10111111010000000000000000000000
Hennessy • Patterson
14
©2005 Elsevier Editora Ltda
Organização e Projetos de Computadores
Adição de ponto flutuante
Hennessy • Patterson
15
©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
16
©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
17
©2005 Elsevier Editora Ltda
Download

Respostas Capitulo 3 - trabalhos