Aritmética dos Computadores

21
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 +)

Transcript of Aritmética dos Computadores

Page 1: Aritmética dos Computadores

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 +)

Page 2: Aritmética dos Computadores

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)

Page 3: Aritmética dos Computadores

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)

Page 4: Aritmética dos Computadores

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

Page 5: Aritmética dos Computadores

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

Page 6: Aritmética dos Computadores

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

Page 7: Aritmética dos Computadores

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

Page 8: Aritmética dos Computadores

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

Page 9: Aritmética dos Computadores

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

Page 10: Aritmética dos Computadores

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

Page 11: Aritmética dos Computadores

11

21

Unsigned Binary Multiplication

22

Exemplo da execução da multiplicação

Page 12: Aritmética dos Computadores

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

Page 13: Aritmética dos Computadores

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

Page 14: Aritmética dos Computadores

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.

Page 15: Aritmética dos Computadores

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?

Page 16: Aritmética dos Computadores

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

Page 17: Aritmética dos Computadores

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

Page 18: Aritmética dos Computadores

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:

Page 19: Aritmética dos Computadores

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

Page 20: Aritmética dos Computadores

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

Page 21: Aritmética dos Computadores

21

41

Floating Point Division

42

Leitura recomendada:

Stallings Capítulo 8

IEEE 754 on IEEE Web site