1 / 17

Capítulo 3

Capítulo 3. 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...2 n -1 Obviamente, torna-se mais complicado:

Download Presentation

Capítulo 3

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Capítulo 3 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? Hennessy • Patterson

  3. Representações possíveis • Sinal e magnitude: Complemento a um Complemento a dois • 000 = +0 000 = +0 000 = +0001 = +1 001 = +1 001 = +1010 = +2 010 = +2 010 = +2011 = +3 011 = +3 011 = +3100 = -0 100 = -3 100 = -4101 = -1 101 = -2 101 = -3110 = -2 110 = -1 110 = -2111 = -3 111 = -0 111 = -1 • Questões: equilíbrio, número de zeros, facilidade de operações • Qual é o melhor? Por quê? Hennessy • Patterson

  4. maxint maxint MIPS Números de 32 bits com sinal: 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) 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” 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? 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 sinalNota: sltu, sltiu para comparações sem sinal 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 Hennessy • Patterson

  10. Multiplicação: Implementação Caminho de dados Hennessy • Patterson

  11. Multiplicação: Implementação controle Hennessy • Patterson

  12. Versão final O multiplicador inicia na metade direita do produto O que entra aqui? 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 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 Hennessy • Patterson

  15. Adição de ponto flutuante 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! 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!) Hennessy • Patterson

More Related