Aritmética Computacional Operações Complexas Professor: André Luis Meneses Silva E-mail/msn: [email protected] Página: www.orgearq20101.wordpress.com Agenda Detectando Overflow Efeitos do Overflow Multiplicação Detectando Overflow Operações overflow. aritméticas estão sujeitas a Quando o overflow acontece? Ao somarmos dois positivos, obtemos um negativo. Ao somarmos dois negativos, obtemos um positivo. Ao subtrairmos um negativo de um positivo e obtemos um negativo. Ao subtrairmos um positivo de um negativo e obtemos um positivo. Detectando Overflow O quadro a seguir ilustram estes casos: Pode ocorrer overflow se B for 0? Pode ocorrer overflow se A for 0? Efeitos do overflow Se o bit extra gerado, for necessário, pode acontecer uma interrupção (exceção): Ao detectar a interrupção, o controle saltará para um endereço predefinido para tratamento da interrupção. O endereço interrompido é salvo para uma possível retomada. No caso do MIPS, o endereço de retorno é salvo no registrador EPC (Exception program counter). Efeitos do overflow Linguagem de programação ou finalidade da aplicação podem influir para este comportamento. No MIPS, instruções unsigned não “detectam” overflow. addu, addiu, subu. Multiplicação Operação mais complexa do que adição Na verdade ela representa um conjunto de adições. Necessita de mais tempo e mais área de silício para ser implementada. Multiplicação Multiplicação Um dígito por vez Multiplicação Deslocamento para esquerda Deslocamento para direita É como se tívessemos incluído mais um 0 no multiplicando Controle Caminho de Dados Multiplicação mais rápida Array de somadores Entrada de cada somador = (bit do multiplicador && resultado do somador anterior) Proporciona: Entrega os resultados de cada parcial quase que simultaneamente. Proporciona paralelização. Divisão Menos freqüente e mais peculiar que a multiplicação. Pode ser efetuada através de sucessivas subtrações e deslocamentos. Divisão: Como o hardware trabalha Divisão: Como o hardware trabalha Divisão: Como o hardware trabalha Divisão: Como o hardware trabalha Divisão: Como o hardware trabalha Divisão Divisão Hardware de multiplicação e divisão são similares. No entanto, o hardware formado pelo conjunto de somadores não pode ser utilizado na divisão. Porque? Divisão Hardware de multiplicação e divisão são similares. No entanto, o hardware formado pelo conjunto de somadores não pode ser utilizado na divisão. Porque? Na divisão, as sub-operações são dependentes. Não temos como realizar a próxima etapa até sabermos o valor do resto. Ponto Flutuante Precisamos de uma maneira para representar: Números com frações, por exemplo, 3,1416 Números muito pequenos, por exemplo, 0,00000001 Números muito grandes, por exemplo, 3,15576 x 109 Notação Científica (1,1 x 21)2 Ponto Flutuante Representação (-1)sinal x fração x 2expoente Mais bits para a fração fornece mais precisão Mais bits para o expoente, aumenta o range de valores. IEEE 754. Precisão única : expoente 8 bits, fração 23 bits. Precisão dupla: expoente 11 bits, fração 52 bits. Ponto Flutuante Representação de um número de ponto flutuante. Expoentes negativos não utilizam complemento de 2. Logo, o número em ponto flutuante é calculado desta forma: (-1)sinal x fração x 2(expoente – 127) precisão simples (-1)sinal x fração x 2(expoente – 1023) precisão dupla Ponto flutuante: Operações aritméticas Operações aritiméticas overflow e underflow. estão sujeitas a Underflow Resultado obtido é pequeno demais para ser representado em um número de ponto flutuante. Ponto flutuante: Adição Hw: Soma Ponto Flutuante: Multiplicação Ponto Flutuante: Arredondamento Além do underflow, podemos ter problemas relativo a forma de arredondamento. Formas de arredondamento: Sempre arredondar para cima. Sempre arredondar para baixo. Truncamento. Arredondar para o próximo par. Ponto Flutuante: Arredondamento Como lidar: Uso de 3 bits adicionais Bit guarda Bit arredondamento Utilizado para melhorar a precisão do arredonamento. Utilizado para encontrar o número mais próximo que possa ser representado no formato. Stick bit Utilizado para verificar se existe algum bit diferente de 0 após o bit de arredondamento. Bibliografia Organização e Arquitetura (Patterson e Henessy) Capítulo 3 (Aritmética Computacional)