26-04-2010 – Aritmética Computacional
Download
Report
Transcript 26-04-2010 – Aritmética Computacional
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)