aritmética dos computadores
TRANSCRIPT
1
William Stallings
Arquitetura e Organização de Computadores
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 +)
2
3
Interface da ULA: entradas e saídas
4
Representação Inteira
Utiliza os símbolos 0 & 1 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)
3
5
Representação Inteira
De modo geral, se a seqüência de ndígitos binários an-1an-2.....a1a0 for interpretada como um número inteiro sem sinal A, seu valor será dado por:
i
1n
0i
ia2A
6
Representação Sinal-Magnitude (Sign-Magnitude)
O bit mais a esquerda é o bit de sinal
0 significa que o valor é positivo
1 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)
4
7
Representação Sinal-Magnitude
Expressão geral:
2
0
1
2
0
1
12
02
:n
i
ni
i
n
i
ni
i
asea
asea
AmagnitudeSinal
8
Representação em Complemento-Dois (Two’s Compliment)
+3 = 00000011
+2 = 00000010
+1 = 00000001
+0 = 00000000
-1 = 11111111
-2 = 11111110
-3 = 11111101
5
9
Representação em Complemento-DoisCaracterísticas-chaves
Faixa de Valores representáveis -2n-1 a 2n-1-1
Representações para o zero 1
Negação
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
Expansão do número de bitsAcrescente posições de bit à esquerda e preencha esses bits com o valor do bit de
sinal original.
Regra de overflowSe dois números com o mesmo sinal forem somados, ocorrerá overflow apenas se o resultado tiver sinal oposto.
Regra de subtração Para subtrair B de A, pegue o complemento de dois de B e some-o com A.
10
Representação em Complemento-Dois:Benefícios
Uma única representação para o zero
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 LSB, temos:
✓ 11111101 = -3
6
11
Representação em Complemento-DoisExpressão Analítica
2
0
1
1 22n
i
i
i
n
n aaA
12
Complemento-de-DoisRepresentação geométrica de inteiros
7
13
Negação: caso especial #1
0 = 00000000
Inverter bits 11111111
Add 1 ao LSB +1
Resulta 1 00000000
Se ignorarmos o overflow, teremos então:
- 0 = 0
14
-128 = 10000000
Inverter bits 01111111
Add 1 ao LSB +1
Resulta 10000000
Então:
-(-128) = -128 X
Monitorar MSB (sign bit)
Deve mudar durante a operação de negação
Negação: caso especial #2
8
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 sinal
9
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 overflow
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
10
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)
x 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 multiplicador
for 1, copiar o multiplicando
(posicionar o valor), caso
contrário somar 0
11
21
Unsigned Binary Multiplication
22
Exemplo da execução da multiplicação
12
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
13
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 do LSB 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
14
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.
15
29
Division of Unsigned Binary Integers
001111
1011
00001101
10010011
1011
0011101011
1011
100
Quociente
Dividendo
Resto
Restos
Parciais
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?
16
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 corpo da mantissa.
O valor do exponte indica a posição do ponto.
Sig
n b
it
Biased
ExponentSignificand or Mantissa
32
Ponto Flutuante: exemplos
17
33
Sinais para o Ponto Flutuante
A mantissa é armazenada em complemento-dois
O expoente é representado na notação excess 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 frequentemente normalizados
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, os números são normalizados para terem somente um dígito antes do ponto decimal.
Exemplo: 3.123 x 103
18
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:
19
37
IEEE 754
Padrão para armazenagem de valores em ponto-flutuante
Padrões de 32 e 64 bits
32 bits precisão simples
64 bits precisão dupla
O campo do expoente é composto por 8 ou 11 bits, respectivamente.
38
FP Arithmetic +/-
Verificar se zero
Alinhar mantissas (ajustando os expoentes)
Adicionar ou subtrair as mantissas
Normalizar o resultado
20
39
FP Arithmetic x/
Verificar se zero
Adicionar/Subtrair expoentes
Multiplicar/dividir as mantissas (observando os sinais)
Normalizar
Arredondar
Todos os resultados devem estar armazenados em comprimento extendido.
40
Floating Point Multiplication
21
41
Floating Point Division
42
Leitura recomendada:
Stallings Capítulo 8
IEEE 754 on IEEE Web site