Aritmética Computacional Operações Complexas
Professor: André Luis Meneses SilvaE-mail/msn: [email protected]
Página: www.orgearq20101.wordpress.com
Agenda
Detectando Overflow Efeitos do Overflow Multiplicação
Detectando Overflow
Operações aritméticas estão sujeitas a overflow.
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 direita
Deslocamento para esquerda
É como se tívessemos incluído mais um 0 no multiplicando
Controle
Caminho de Dados
Multiplicaçãomais 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 estão sujeitas a overflow e underflow.
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 Utilizado para melhorar a precisão do arredonamento.
Bit arredondamento 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)