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