Arquitetura de Computadores Aritmética
Arquitetura de Computadores Aritmética Usando a representação numérica aprendida no capítulo passado, iremos explorar os métodos aritméticos de adição, subtração, multiplicação e divisão Iremos ver os métodos diferentes para os números de ponto fixo X ponto flutuante Como encontrar overflow.
Arquitetura de Computadores Adição e subtração de ponto fixo O processo de adição ou subtração pode ser implementado utilizando os métodos de complementos de um ou complemento de dois, sendo que este último é o mais comum. Complemento de dois: Números podem ser adicionados ou subtraídos usando a idéia representada pela figura ao lado. Para adicionar basta caminhar no sentido horário, para subtrair o caminho inverso Overflow acontece, quando ocorre uma transição do +3 para -4 ou do -4 para +3.
Arquitetura de Computadores Overflow Overflow acontece quando dois positivos são somados e o resultado é negativo ou quando se adiciona dois números negativos e produzir um resultado com número positivo. Somar dois números com sinais diferentes nunca produzirá um overflow. Em complemento de dois no processo de soma é normal descartar o bit de excesso (carry) e não indica a ocorrencia de overflow. Exemplo de overflow: Soma: (80 + 80 = 160)10, produzirá na base 8, o valor –9610 iusando o formato de complemento de dois: 01010000 = 80 + 01010000 = 80 ---------- 10100000 = -96 (complemento de dois)
Arquitetura de Computadores Implementação de adição e subtração via hardware Adição com Ripple-Carry (excedentes propagados em onda) Subtração com Ripple-Borrow (empréstimo propagados em onda)
Arquitetura de Computadores Adição com Ripple-Carry (excedentes propagados em onda) Exemplo: soma de dois números binários, usando dois operandos de 4 bits, carry e resultados como saídas.
Arquitetura de Computadores Sistema de 16 bits Um sistema maior poder ser construído partir de cascatas de somadores de 4 bits
Arquitetura de Computadores Subtração Um circuito de subtração pode ser implementado usando a seguinte tabela verdade:
Arquitetura de Computadores Modelo Ripple-Borrow de subtração Pode ser composta pela combinação em cascata, para gerar circuitos maiores. A e B são valores que são entrada para a subtração, as saídas são as diferenças e “vai um”
Arquitetura de Computadores Combinação Subtração/Soma É possível criar um único circuito que possa somar e subtrair utilizando portas lógicas XOR.
Arquitetura de Computadores Subtração usando complemento de um É raramente usando hoje em dia O excedente da posição mais a esquerda não é eliminado, mas sim somado de volta na posição menos significativa da porção inteira. Ex:
Arquitetura de Computadores Representação cíclica de números usando três bits, com números em complemento de um.
Arquitetura de Computadores O último carry, complica adição de números não inteiros portando o complemento de um não é normalmente utilizado.
Arquitetura de Computadores Multiplicação e Divisão em Ponto Fixo Pode ser feito usando operações de adição, subtração e deslocamentos Funcionam com ou sem sinalização
Arquitetura de Computadores Multiplicação de números de ponto fixo sem sinal Multiplicação de dois numero de 4 bits produzirá como resultado 8 bits Multiplicação de número de 4 bits, sinalizado produz com resultado um número de 7 bits! Figura retirada do livro Introdução a Arquitetura de Computadores, Miles J. Murdocca
Arquitetura de Computadores Multiplicador em Série
Arquitetura de Computadores Exemplo de um multiplicador usando a multiplicação serial
Arquitetura de Computadores Divisão sem sinal A ideia é subtrair sucessivamente o valor divisor do dividendo usando o menos de bits possível para esta operação. Exemplo de divisão usando a base 2 7/3 = 2, com resto 1 Equivalentemente, (0111/11=10), com resto 1
Arquitetura de Computadores • Divisor Serial
Arquitetura de Computadores Exemplo de divisão com sinal Divisor Serial
Arquitetura de Computadores Extensão do sinal Um número negativo deve ser estendido de acordo com u numero de bits do resultado para dar certo.
Arquitetura de Computadores Aritmética de Ponto Flutuante As operações aritméticas em números de ponto flutuante podem ser feitas usando as operações de ponto fixo descritas anteriormente, prestando atenção em manter a representação de ponto flutuante.
Arquitetura de Computadores Aritmética de Ponto Flutuante O tratamento para a aritmética de ponto flutuante difere da aritmética de inteiros porque temos pensar também nos expoente e no magnetude dos operandos ( Normalização) As operações aritméticas em números de ponto flutuante podem ser feitas usando as operações de ponto fixo descritas anteriormente, prestando atenção em manter a representação de ponto flutuante.
Arquitetura de Computadores Adição e subtração em ponto flutuante Difere de ponto flutuante da aritmética inteira porque os expoentes tem de ser tratados junto com as magnetudes dos operandos Exemplo: Somar (.101 ´ 23 + .111 ´ 24)2 .101 ´ 23 = .010 ´ 24, perde-se .001 ´ 23 de precisão (.010 + .111) ´ 24 = 1.001 ´ 24 = .1001 ´ 25 Trabalhando apenas com 3 dígitos, temos: .100 ´ 25, e perdendo mais 0.001 ´ 24 no processo
Arquitetura de Computadores A multiplicação e divisão em ponto flutuante A multiplicação e divisão em ponto flutuante são feitos de maneira similar a adição e subtração em ponto flutuante.
Arquitetura de Computadores Aritmética de alto desempenho Muitas aplicações exigem mais velocidades nos cálculos matemáticos. Usar este métodos simples, não é produtivo Outras técnicas são necessárias para melhorar a velocidades dos cálculos matemáticos em adição, subtração, multiplicação e divisão em ponto flutuante.
Arquitetura de Computadores Adição de alto desempenho Carry-Lookahead Addition Os carries são representados em termos de expressões de Gi e Pi Gi = aibi and Pi = ai + bi c0 = 0 c1 = G0 c2 = G1 + P1G0 c3 = G2 + P2G1 + P2P1G0 c4 = G3 + P3G2 + P3P2G1 + P3P2P1G0
Arquitetura de Computadores Carry-Lookahead Addition Atraso máximo das portas para a geração do garry é de 3. O pior caso usando o controle para adição será 5.
Arquitetura de Computadores Multiplicação de ponto flutuante A multiplicação de ponto flutuante é feito de modo similar a subtração de adição, exceto que o sinal, expoente e a fração do resultado são computados separadamente. Podem gerar resultados negativos ou positivos Os expoentes são somados na operação de multiplicação de números Os expoentes são subtraídos na operação de divisão As frações são multiplicados ou divididos de acordo com a operação, e são normalizados. Exemplo: (+.110 ´ 25) / (+.100 ´ 24)2 Passo 1: verificar o sinal: Positivo Passo 2: subtrair o expoente: 5-4 = 1 Passo 3: dividir a parte fracionária: 110/100 = 1.10 Passo 4: combinar os resultados: (+1.10 ´ 21) Passo 5: Normalizado: (+.110 ´ 22).
Arquitetura de Computadores The Booth Algorithm A multiplicação por Booth reduz o numero de adição dos resultados intermediários, mas pode algumas vezes piorar mais do que melhorar. Números positivos e negativos são tratados da mesma forma.
Arquitetura de Computadores Pior caso para o Booth O pior caso acontece quando o algoritmo de requere duas vezes mais adição na multiplicação serial.
Arquitetura de Computadores Bit-Pair Recoding (Modified Booth Algorithm)
Arquitetura de Computadores Coding of Bit Pairs
Arquitetura de Computadores Parallel Pipelined Array Multiplier
Arquitetura de Computadores Divisão de alto desempenho Técnica de divisão fracional no calculo de a/b Fazer parecer que números são inteiros, efetuar a divisão e escalar de modo que fique com um número real fracionário. Um método mais rápido é usar uma tabela intermediária e interação.
Arquitetura de Computadores Newton’s Iteration for Zero Finding O objetivo é achar onde a função f(x) cruza o eixo x, através de uma estimativa inicial xi e calcular o erro entre f(xi) e Zero. Depois, um novo calculo é feito com novas estimativas de modo que o zero possa ser alcançado. Ex: a/b = a x (1/b) Tabela com estimativas iniciais para o x0
Arquitetura de Computadores Aritmética Residual Implementado sem uso de Carry (portanto rápido) As comparações são mais difíceis de serem implementados sem converter os números em formatos normalizados A representação dos primeiros 20 decimais inteiros em um sistema dado por modulos
Arquitetura de Computadores Exemplo de cálculo usando aritmética residual
Arquitetura de Computadores Adição usando BCD A adição é realizada digito por dígito, não bit por bit. Exemplo (255 + 63 = 318)10:
Arquitetura de Computadores Subtração usando BCD Usa-se o complemento de 10 para efetuar a subtração Exemplo: (255 - 63 = 192)10:
Arquitetura de Computadores Sinal do numero em BCD Um número é considerado negativo em BCD complemento de 10, quando o número mais a esquerda estiver entre 0 e 4 inclusive.
Arquitetura de Computadores Subtração em complemento de 10 Exemplo: (21 - 34 = -13)10: