1
Arquitetura de Computadores
Aritmética
2Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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.
3Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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.
4Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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)
5Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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)
6Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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.
7Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
Arquitetura de Computadores
Sistema de 16 bits– Um sistema maior poder ser construído partir de cascatas de
somadores de 4 bits
8Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
Arquitetura de Computadores
Subtração– Um circuito de subtração pode ser implementado
usando a seguinte tabela verdade:
9Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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”
10Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
Arquitetura de Computadores
Combinação Subtração/Soma– É possível criar um único circuito que possa somar e subtrair
utilizando portas lógicas XOR.
11Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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:
12Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
Arquitetura de Computadores
Representação cíclica de números usando três bits, com números em complemento de um.
13Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
Arquitetura de Computadores
O último carry, complica adição de números não inteiros portando o complemento de um não é normalmente utilizado.
14Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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
15Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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
16Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
Arquitetura de Computadores
Multiplicador em Série
17Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
Arquitetura de Computadores
Exemplo de um multiplicador usando a multiplicação serial
18Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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
19Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
Arquitetura de Computadores
• Divisor Serial
20Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
Arquitetura de Computadores
Exemplo de divisão com sinal
– Divisor Serial
21Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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.
22Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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.
23Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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.
24Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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
25Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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.
26Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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.
27Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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
28Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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.
29Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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).
30Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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.
31Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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.
32Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
Arquitetura de Computadores
Bit-Pair Recoding (Modified Booth Algorithm)
33Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
Arquitetura de Computadores
Coding of Bit Pairs
34Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
Arquitetura de Computadores
Parallel Pipelined Array Multiplier
35Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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.
36Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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
37Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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
38Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
Arquitetura de Computadores
Exemplo de cálculo usando aritmética residual
39Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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:
40Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
Arquitetura de Computadores
Subtração usando BCD– Usa-se o complemento de 10 para efetuar a subtração– Exemplo: (255 - 63 = 192)10:
41Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
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.
42Professor: Arlindo Tadayuki Noji Instituto de Ensino Superior Fucapi - CESF
Arquitetura de Computadores
Subtração em complemento de 10– Exemplo: (21 - 34 = -13)10: