Escolar Documentos
Profissional Documentos
Cultura Documentos
03 Aritmetica Computacional
03 Aritmetica Computacional
Introduo
Humanos: sistema decimal. Computadores: sistema binrio. Como representar nmeros negativos e nmeros reais? Qual o maior nmero representvel numa palavra de computador? O que acontece quando o resultado maior do que a capacidade do computador?
Aritmtica Computacional 2
Contedo
1.
2. 3. 4. 5. 6. 7.
8.
9.
Nmeros com sinal e nmeros sem sinal Adio e subtrao Operaes lgicas Construo de uma unidade aritmtica lgica Multiplicao Diviso Operaes em ponto flutuante Lendas e falhas Consideraes Finais
Aritmtica Computacional 3
Base 10:
2543(10)=2103+5102+4101+3100(10)
Base 2:
1011(2)=123+022+121+120=11(10)
00001011
Bit Mais Significativo (MSB) Bit Menos Significativo (LSB)
Aritmtica Computacional
0000 0000(2) = 0(10) 0000 0001(2) = 1(10) 0000 0010(2) = 2(10) ... 1111 1100(2) = 252(10) 1111 1101(2) = 253(10) 1111 1110(2) = 254(10) 1111 1111(2) = 255(10)
Aritmtica Computacional 6
Representao de nmeros
Nmeros reais: infinitos. No computador: finitos. Maioria: grande quantidade de zeros esquerda. Computador: pode lidar com nmeros at um certo tamanho. Overflow: tratado pelo sistema operacional. No computador: preciso representar nmeros com sinal.
Aritmtica Computacional
Complemento a 2
A regra baseia-se no fato de que a soma de um nmero com sua representao invertida deve ser -1:
x x 1
x x 1 0 x 1 x
Aritmtica Computacional
001
010
101
011
Aritmtica Computacional
-X = 1111 1000
Aritmtica Computacional
10
Interface Hardware/Software
Endereos: sempre positivos Os nmeros vo de 0 a 27FF (Z80), e no so nunca negativos. Em C: int e unsigned int.
Aritmtica Computacional
11
Exerccios
1.
2. 3. 4.
Converta -15(10) para binrio com representao em sinal/magnitude (16 bits). Converta -15(10) para binrio com representao em complemento a 2 (16 bits). Qual o nmero, em decimal, representado em complemento a 2 por 1010 0011(2)? Usando complemento a 2 qual a faixa de nmeros que podem ser representados com 8 bits?
Aritmtica Computacional
12
Adio e Subtrao
Adio e Subtrao
No computador: soma semelhante soma no sistema decimal. Soma: soma cada bit, mais o vai-um.
Aritmtica Computacional
14
+ 0000 0111
1111 1010 0000 0001
15
Overflow
Ocorre sempre que o resultado de uma operao no pode ser representado no hardware disponvel.
Operao A+B A+B A-B A-B Operando A >= 0 <0 >=0 <0 Operando B >=0 <0 <0 >=0 Resultado <0 >=0 <0 >=0
Isto significa que o resultado est correto se o bit de sinal for ignorado
Aritmtica Computacional 17
Interface Hardware/Software
Aritmtica Computacional
21
Exerccios
Aritmtica Computacional
22
Operaes Lgicas
Operaes Lgicas
Em muitas aplicaes necessrio processar bits isolados dentro de uma palavra operaes lgicas Shifts: deslocamento esquerda ou direita instrues rlc, rrc, rl, rr
Ver
Aritmtica Computacional
24
Operaes AND e OR
Operao AND: atua bit a bit, deixando 1 como resultado somente no caso de ambos os bits correspondentes dos operandos serem 1 (aplicao de mscara) Operao OR: tambm atua bit a bit colocando 1 no resultado se qualquer um dos bits correspondentes do operando for 1.
Aritmtica Computacional
25
Introduo
Representa os msculos do computador: realiza operaes aritmticas como a adio e a subtrao ou operaes lgicas como AND e OR A partir de agora mostrar-se- como construir uma UAL para realizar as quatro operaes acima
Aritmtica Computacional
27
Sada c 1 0
Sada c 0 0 0 1
a b
c a.b c ab
Multiplexador
OR
a b
Entrada a b 0 0 0 1 1 0 1 1
Sada c 0 1 1 1
d a b 0 1
Aritmtica Computacional
Entrada d 0 1 Sada c a b
28
Somador de 1 bit
Sadas
Soma Vai 1 0 0 0 1 0
Comentrios
0+0+0 = 00 0+0+1 = 01 0+1+0 = 01 0+1+1 = 10 1+0+0 = 01
1
1 1
0
1 1
1
0 1
0
0 1
1
1 1
1+0+1 = 10
1+1+0 = 10 1+1+1 = 11
30
Aritmtica Computacional
Exerccio
+
b CarryOut
Soma
Aritmtica Computacional
31
Aritmtica Computacional
32
Exerccios
1.
2.
Alterar a UAL anterior para que ela gere o valor 0. Dica: a maneira mais fcil expandir o multiplexador controlado pela linha Operao. Como projetar uma UAL de 32 bits utilizando uma UAL de 1 bit?
Aritmtica Computacional
33
UAL de 32 bits
Aritmtica Computacional
34
Subtrao
a b a (b 1)
BInvertido
O circuito ao lado inverte o valor de b. Falta ainda somar 1 ao valor de b invertido. Como faz-lo?
A0
1 B0 0 1
Resultado 0
+
CarryOut
Aritmtica Computacional
35
Subtrao
Na soma o primeiro CarryIn (vem 1) 0. O que acontece de fizermos o primeiro CarryIn = 1?
Aritmtica Computacional
36
Overflow
o tpico Adaptao da UAL de 32 bits para o MIPS e faa o exerccio 4.23 do livro texto.
Aritmtica Computacional
37
Aritmtica Computacional
38
Problema
Aritmtica Computacional
39
Carry Lookahead
que as entradas a e b podem ser perfeitamente determinadas a qualquer tempo, mas a entrada CarryIn de um determinado somador de 1 bit depende do resultado da operao realizada no somador de 1 bit vizinho. Soluo:
Aritmtica Computacional
40
Carry Lookahead
Problema deste mtodo: circuito ainda complexo para clculos de muitos bits e portanto caro. Qual a soluo?
Mtodo
texto.
Aritmtica Computacional
41
Multiplicao
Aritmtica Computacional
43
Algoritmo
Como na prtica Simplesmente coloque um cpia do multiplicando (1 x multiplicando) no lugar apropriado, se o digito do multiplicando for igual a 1, ou Coloque 0 (0 x multiplicando) no lugar apropriado, se o digito do multiplicando for igual a 0; Veremos a seguir 3 verses do algoritmo de multiplicao para 32 bits (32 x 32 bits)
Aritmtica Computacional
44
Algoritmo: 1 Verso
incio
Multiplicador0=1
Multiplicador0=0
no
32 repeties?
sim
Fim
Aritmtica Computacional 45
Hardware: 1 Verso
Aritmtica Computacional
46
Exerccio
Usando nmeros de 4 bits, com o intuito de economizar espao, multiplique 210 por 310 ou 00102 por 00112. Valores iniciais:
Multiplicando
Aritmtica Computacional
47
Desvantagens
dos bits do multiplicando da primeira verso so sempre zero, de modo que somente metade deles poderia conter informaes teis. A segunda verso utiliza-se desta informao para melhorar a performance da multiplicao.
Aritmtica Computacional
48
Algoritmo: 2 Verso
incio
Multiplicador0=1
Multiplicador0=0
sim
no
Fim
32 repeties?
Aritmtica Computacional 49
Hardware: 2 Verso
Aritmtica Computacional
50
Exerccio
Multiplique 00102 por 00112 usando a segunda verso do algoritmo de multiplicao. Valores iniciais:
Multiplicando
Aritmtica Computacional
51
O registrador reservado ao produto desperdia tanto espao quanto o do multiplicador: medida que o desperdcio de espao do produto se reduzia, a mesma coisa acontecia com o multiplicador.
Aritmtica Computacional
52
Algoritmo: 3 Verso
incio
Produto0=1
Produto0=0
32 repeties?
no sim
Fim
Aritmtica Computacional 53
Hardware: 3 Verso
Vantagens: ULA de 32 bits. Apenas 1 registrador de 64 bits.
Aritmtica Computacional
54
Exerccio
Multiplique 00102 por 00112 usando a terceira verso do algoritmo de multiplicao. Valores iniciais:
Multiplicando
Aritmtica Computacional
55
Diviso
Divide et impera.
Verso latina da velha mxima poltica Divida e governe, citada por Maquiavel em 1532
Prof. Cludio Faria e Lideir Viana PUC-Minas campus de Poos de Caldas
Diviso
A operao recproca da multiplicao a diviso, operao que ainda menos freqente que a multiplicao e mais ardilosa. Alm disso, ela oferece uma rara oportunidade de se efetuar uma operao matemtica invlida: a diviso por zero.
dividendo = quociente x divisor + resto
Aritmtica Computacional 57
Diviso
incio
Resto>=0
Teste do Resto
Resto < 0
33 repeties?
sim
Fim
Aritmtica Computacional 58
Hardware da Diviso
Divisor Deslocamento direita (64 bits)
UAL de 64 bits
Resto Escrita
Teste de controle
64 bits
Aritmtica Computacional
59
Exerccio
Dividir 0000 01112 por 00102. Valores iniciais:
Quociente
Aritmtica Computacional
60
Suporte a nmeros inteiros com e sem sinal. Suporte a nmeros fracionrios: 3,1414, 0,00001 etc. Notao cientfica: 1,34 x 103. Nmeros normalizados: 1 dgito antes do ponto decimal. Nmeros binrios tambm podem ser normalizados. Ponto decimal / ponto binrio. Aritmtica com nmeros normalizados: aritmtica de ponto flutuante. Em C: float. Formato: 1,xxxxxxxx2 2yyyy.
Aritmtica Computacional
62
expoente 8
mantissa 23
S sinal do nmero F mantissa, normalizada E expoente Tamanho: -2,0 1038 a 2,0 1038.
Aritmtica Computacional 63
Ocorre quando o expoente muito grande pra ser representado pelos 8 bits. Underflow: O mdulo do expoente negativo muito grande. Necessrio nmeros maiores: preciso dupla. Na linguagem C: double. 64 bits s 1 expoente
mantissa 52
N (1) S (1 Mantissa) 2 E
Aritmtica Computacional 65
Deve permitir comparaes rpidas. Seria melhor: o menor coeficiente possvel valer 00000000, e o maior 11111111. Modificao:
Formato:
Exemplo 1
1.
2.
Representar o nmero -0,7510 em ponto flutuante e preciso simples. Representar o nmero -0,7510 em ponto flutuante e dupla preciso.
Aritmtica Computacional
67
Resposta da 1
Resultado: Representao:
Aritmtica Computacional
68
Exemplo
Aritmtica Computacional
69
Resposta
Aritmtica Computacional
70
Lendas e Falhas
Lendas e Falhas
Lenda: a adio em ponto flutuante associativa; ou seja, x+(y+z)=(x+y)+z. Lenda: assim como uma instruo de deslocamento esquerda pode substituir uma multiplicao inteira por uma diviso inteira por uma potncia de 2. Lenda: s os matemticos tericos se preocupam com a preciso das operaes em ponto flutuante.
Aritmtica Computacional
72
Bibliografia
Patterson, David A. e Hennessy, John L. Organizao e Projeto de Computadores: A Interface Hardware/Software. Ed. LTC, 732. Ed., 2000, Rio de Janeiro.
Aritmtica Computacional
73
BInvertido
A0
1 B0 0 1
Resultado 0
+
CarryOut
Aritmtica Computacional
74