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