330 likes | 396 Views
Professor: André Luis Meneses Silva E-mail/msn: andreLuis.ms@gmail.com Página: www.orgearq20101.wordpress.com. Aritmética Computacional Operações Complexas. Agenda. Detectando Overflow Efeitos do Overflow Multiplicação. Detectando Overflow.
E N D
Professor: André Luis Meneses Silva E-mail/msn: andreLuis.ms@gmail.com Página: www.orgearq20101.wordpress.com Aritmética Computacional Operações Complexas
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 Um dígito por vez
Multiplicação Deslocamento para esquerda Deslocamento para direita É como se tívessemos incluído mais um 0 no multiplicando
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 • 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)sinalx 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)sinalx fração x 2(expoente – 127) precisão simples • (-1)sinalx 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: 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)