Baixe o app para aproveitar ainda mais
Prévia do material em texto
Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 1 Capítulo 3 Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 2 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? Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 3 Representações possíveis • Sinal e magnitude: Complemento a um Complemento a dois • 000 = +0 000 = +0 000 = +0 001 = +1 001 = +1 001 = +1 010 = +2 010 = +2 010 = +2 011 = +3 011 = +3 011 = +3 100 = -0 100 = -3 100 = -4 101 = -1 101 = -2 101 = -3 110 = -2 110 = -1 110 = -2 111 = -3 111 = -0 111 = -1 • Questões: equilíbrio, número de zeros, facilidade de operações • Qual é o melhor? Por quê? Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 4 MIPS Números de 32 bits com sinal: maxint maxint Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 5 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) Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 6 Adição e subtração • Exatamente como aprendemos na escola (emprestar/subir 1s) • • 0111 0111 0110 + 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” Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 7 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? Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 8 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 Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 9 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 Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 10 Multiplicação: Implementação Caminho de dados Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 11 Multiplicação: Implementação controle Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 12 Versão final O multiplicador inicia na metade direita do produto O que entra aqui? Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 13 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 Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 14 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 Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 15 Adição de ponto flutuante Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 16 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! Organização e Projetos de Computadores ©2005 Elsevier Editora Ltda Hennessy • Patterson 17 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!)
Compartilhar