aritmética dos computadores - faculdade de computação
TRANSCRIPT
William Stallings
Computer Organization and Architecture
Capítulo 4
Aritmética dos Computadores
2
Unidade Lógica e Aritmética
� Faz os cálculos lógicos e aritméticos.
� Tudo, num sistema computador, está lápara servir esta unidade.
� Manipula valores inteiros (ponto fixo)
� Manipula valores reais (ponto flutuante)
� A FPU pode ser uma unidade separada� Co-processador matemático (maths co-
processor)
� A FPU pode ser um chip separado (486DX +)
3
Interface da ULA: entradas e saídas
4
Representação Inteira
� Utiliza os símbolos 0 0 && 11 para representar todas as coisas.
� Números positivos são armazenados no formato binário.� Exemplo: 41= 00101001� Sem sinal de negativo� Sem vírgula
� Representações de valores sinalizados:� Sinal-magnitude (Sign-Magnitude)� Complemento-dois (Two’s compliment)
5
Representação Inteira
� De modo geral, se a seqüência de nndígitos binários aann--11aann--22.....a.....a
11aa00for
interpretada como um número inteiro sem sinal AA, seu valor será dado por:
i
1n
0i
ia2A ∑−
=
=
6
Representação Sinal-Magnitude (Sign-Magnitude)
� O bitbit mais a esquerda é o bit de sinalbit de sinal
�� 00 significa que o valor é positivo�� 11 significa que o valor é negativo� +18 = 00010010� -18 = 10010010
� Problemas
� É necessário considerar o sinal e a magnitude nas operações aritméticas.
� Duas representações para o zero (+0 and -0)
7
Representação Sinal-Magnitude
� Expressão geral:
=−
==−
∑
∑−
=−
−
=−
2
01
2
01
12
02: n
ini
i
n
ini
i
asea
aseaAmagnitudeSinal
8
Representação em Complemento-Dois (Two’s Compliment)
� +3 = 00000011
� +2 = 00000010
� +1 = 00000001
� +0 = 00000000
� -1 = 11111111
� -2 = 11111110
� -3 = 11111101
9
Representação em Complemento-DoisCaracterísticas-chaves
Para subtrair B de A, pegue o complemento de dois de B e some-o com A.Regra de subtração
Se dois números com o mesmo sinal forem somados, ocorrerá overflow apenas se o resultado tiver sinal oposto.
Regra de overflow
Acrescente posições de bit à esquerda e preencha esses bits com o valor do bit de
sinal original.Expansão do número de bits
Pegue o complemento booleano de cada bit do número positivo correspondente e então some 1 ao padrão de bits resultante, tratado como um número inteiro sem sinal
Negação
1Representações para o zero
-2n-1 a 2n-1-1Faixa de Valores representáveis
10
Representação em Complemento-Dois:Benefícios
� Uma única representação para o zerozero
� As operações aritméticas são simples� (mais tarde, veremos mais detalhes)
� A negação é aparentemente simples:� 3 = 00000011� Fazendo a complementação booleana, temos:
� 11111100
� Adicionando 1 ao LSBLSB, temos:� 11111101 = -3
11
Representação em Complemento-DoisExpressão Analítica
∑−
=−
− +−=2
01
1 22n
ii
in
n aaA
12
Complemento-de-DoisRepresentação geométrica de inteiros
13
Negação: caso especial #1
� 0 = 00000000
� Inverter bits 11111111
� Add 1 ao LSB +1
� Resulta 1 00000000
� Se ignorarmos o overflowoverflow, teremos então:� - 0 = 0 √
14
� -128 = 10000000
� Inverter bits 01111111
� Add 1 ao LSB +1
� Resulta 10000000
� Então:� -(-128) = -128 X
� Monitorar MSBMSB (sign bitsign bit)
� Deve mudar durante a operação de negação
Negação: caso especial #2
15
Faixa de valores
� 8 bits em complemento-2� +127 = 01111111 = 27 -1
� -128 = 10000000 = -27
� 16 bits em complemento-de-2� +32767 = 011111111 11111111 = 215 - 1
� -32768 = 100000000 00000000 = -215
16
Conversão de comprimentos
� Números positivos preencher com 0´s
� +18 = 00010010
� +18 = 00000000 00010010
� Números negativos preencher com 1´s
� -18 = 10010010
� -18 = 11111111 10010010
� Isso é chamado extensão de sinalextensão de sinal
17
Aritmética de Números Inteiros:Adição e Subtração
� Adição:� operação aritmética binária normal� Monitora o bit de sinal para overflowoverflow
� Subtração:� Realiza o complemento-dois do subtraendo e adiciona
ao minuendo� Isto é, a - b = a + (-b)
� Precisamos, somente, dos circuitos de complemento e de adição.
18
Hardware para Adição e Subtração
19
Aritmética de Números Inteiros:Multiplicação
� Comparada as operações de adição e subtração, a operação de multiplicação éde maior complexidade.
� Realizar produtos parciais para cada dígito
� Tomar cuidado com a posição do valor (coluna)
� Adicionar os produtos parciais.
20
1011 Multiplicando (11dec)
xx 1101 Multiplicador (13dec)
1011 produtos parciais
0000
1011
1011
10001111 Produto (143dec)
Nota: precisamos do dobro de comprimento para o resultado final
Exemplo de multiplicação
Nota: se o bit do multiplicadorfor 1, copiar o multiplicando(posicionar o valor), casocontrário somar 0
21
Unsigned Binary Multiplication
22
Exemplo da execução da multiplicação
23
Diagrama para multiplicação não sinalizada.
24
Multiplicação de Números sinalizados
� O método anterior não funciona para valores sinalizados (representados em complemento-dois)
� Solução #1� Converter para positivo� Multiplicar, como feito anteriormente.� Se os sinais forem diferentes, negar o resultado.
� Solução #2
� Booth’s algorithm
25
Booth’s Algorithm
� Multiplicador e multiplicando armazenados nos registradores Q e M, respectivamente.
� O resultado da multiplicação é guardado nos registradores A e Q
� Existe um registrador de um bit adicional, colocado a direita doLSB de Q, denominado Q
-1
� A e Q-1
serão inicializados com valor 0 (zero)
� Como antes, a lógica de controle examina os bits do multiplicando, um de cada vez.
� Quando cada bit for examinado, também será examinado o bit a sua direita.
� Se esses dois bits forem iguais (1-1 ou 0-0), então todos os bits dos regs. A, Q, Q-1 serão deslocados 1 bit a direita.
� Se eles forem diferentes, o multiplicando será somado ou subtraído do registrador A, dependendo se os dois bits forem (0-1 ou 1-0), respectivamente. Após a adição ou subtração, ocorre o deslocamento aritmético de um bit a direita.
26
Booth’s Algorithm
27
Exemplo do Booth’s Algorithm
28
Aritmética de Números Inteiros:Divisão
� Mais complexa que a multiplicação, embora seja baseada nos mesmos princípios gerais.
� Como antes, a base para o algorítmo é a abordagem usada para efetuar a operação usando lápis e papel.� A operação envolve repetidas execuções de
adição, subtração e deslocamentos.
� Números negativos são terríveis!
� O método é baseado em divisões longas.
29
Division of Unsigned Binary Integers
001111
1011
00001101
100100111011001110
1011
1011100
Quociente
Dividendo
Resto
RestosParciais
Divisor
30
Números Reais ou fracionários
� Números com frações
� Pode ser representado em binário puro� 1001.1010 = 24 + 20 +2-1 + 2-3 =9.625
� Onde está o ponto binário?
� Fixo?� limitado
� Móvel?� Dúvida: onde posicionar o ponto?
31
Representação em Ponto-flutuante
� +/- .mantissa x 2expoente
� O nome (PF) não expressa a representação.
� O ponto é fixo entre o bit de sinal e o corpoda mantissa.
� O valor do exponte indica a posição do ponto.
Sign
bit
BiasedExponent
Significand or Mantissa
32
Ponto Flutuante: exemplos
33
Sinais para o Ponto Flutuante
� A mantissa é armazenada emcomplemento-dois
� O expoente é representado na notaçãoexcess ou biased
� Exemplo: Excess (bias) 128 significa
� Campo expoente de 8 bit
� Faixa de valores puros 0-255
� Subtraia 128 para obter o valor correto
� Nova faixa -128 to +127
34
Normalização
� Números em FP são frequentementenormalizados
� i.e., o expoente é ajustado para que o bit mais significativo (leading bit) da mantissa seja 1.
� Sendo ele (leading bit) sempre 1, não hánecessidade de armazená-lo.
� Considerando a notação científica, osnúmeros são normalizados para teremsomente um dígito antes do ponto decimal.� Exemplo: 3.123 x 103
35
FP – faixa de valores
� Para um valor em 32 bits� Expoente de 8 bits
� +/- 2256 ≈ 1.5 x 1077
� Precisão:� O efeito da mudança do bit menos
significativo (LSB) da mantissa
� Mantissa de 23 bits 2-23 ≈ 1.2 x 10-7
� Precisão em torno de seis casas.
36
Valores representáveis:
37
IEEE 754
� Padrão para armazenagem de valoresem ponto-flutuante
� Padrões de 32 e 64 bits� 32 bits � precisão simples
� 64 bits � precisão dupla
� O campo do expoente é composto por8 ou 11 bits, respectivamente.
38
FP Arithmetic +/-
� Verificar se zero
� Alinhar mantissas (ajustando osexpoentes)
� Adicionar ou subtrair as mantissas
� Normalizar o resultado
39
FP Arithmetic x/÷
� Verificar se zero
� Adicionar/Subtrair expoentes
� Multiplicar/dividir as mantissas (observando os sinais)
� Normalizar
� Arredondar
� Todos os resultados devem estararmazenados em comprimentoextendido.
40
Floating Point Multiplication
41
Floating Point Division
42
Leitura recomendada:
� Stallings Capítulo 8
� IEEE 754 on IEEE Web site