aritmética dos computadores - faculdade de computação

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

Upload: others

Post on 14-Nov-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aritmética dos Computadores - Faculdade de Computação

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

Page 2: Aritmética dos Computadores - Faculdade de Computação

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)

Page 3: Aritmética dos Computadores - Faculdade de Computação

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)

Page 4: Aritmética dos Computadores - Faculdade de Computação

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

Page 5: Aritmética dos Computadores - Faculdade de Computação

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

Page 6: Aritmética dos Computadores - Faculdade de Computação

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

Page 7: Aritmética dos Computadores - Faculdade de Computação

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

Page 8: Aritmética dos Computadores - Faculdade de Computação

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

Page 9: Aritmética dos Computadores - Faculdade de Computação

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

Page 10: Aritmética dos Computadores - Faculdade de Computaçã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

Page 11: Aritmética dos Computadores - Faculdade de Computação

21

Unsigned Binary Multiplication

22

Exemplo da execução da multiplicação

Page 12: Aritmética dos Computadores - Faculdade de Computaçã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

Page 13: Aritmética dos Computadores - Faculdade de Computação

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

Page 14: Aritmética dos Computadores - Faculdade de Computação

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 - Faculdade de Computação

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?

Page 16: Aritmética dos Computadores - Faculdade de Computação

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

Page 17: Aritmética dos Computadores - Faculdade de Computação

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

Page 18: Aritmética dos Computadores - Faculdade de Computação

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 - Faculdade de Computação

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

Page 20: Aritmética dos Computadores - Faculdade de Computação

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

Page 21: Aritmética dos Computadores - Faculdade de Computação

41

Floating Point Division

42

Leitura recomendada:

� Stallings Capítulo 8

� IEEE 754 on IEEE Web site