Upload
macielaraujo
View
27
Download
1
Embed Size (px)
Citation preview
Arquitetura e Organizao de Computadores
Aritmtica Computacional
Prof. Slvio Fernandes
UNIVERSIDADE FEDERAL RURAL DO SEMI-RIDO DEPARTAMENTO DE CINCIAS EXATAS E NATURAIS
CURSO DE CINCIA DA COMPUTAO
Unidade Lgica e Aritmtica (ULA)
Do ingls ALU Faz os clculos. Tudo o mais no computador existe para atender
a essa unidade. Trata de inteiros. Pode tratar de nmeros de ponto flutuante
(reais). Pode ser FPU separada (coprocessador
matemtico). Pode estar em chip de FPU separado (486DX +).
2
Unidade Lgica e Aritmtica (ALU)
3
Representao de Nmeros Inteiros
No sistema de numerao binria, possvel representar nmeros inteiros negativos usando:
Dgitos 0 e 1
Sinal de subtrao
Vrgula
Exemplo:
-1101,01012 = -13,312510
4
Representao de Nmeros Inteiros
Para armazenar e processar nmeros inteiros
negativos no computador, so usados apenas
os dgitos 0 e 1
Se uma sequencia de n bits de dgitos binrios
na-1 na-2 ... a1 a0 for um inteiro sem sinal A, seu
valor
5
1
0
2n
i
i
iaA
Representao de Nmeros Inteiros
Como representar nmeros negativos?
Representao Sinal-Magnitude
Representao em Complemento de Dois
6
Representao Sinal-Magnitude
Em uma palavra de n bits
O bit mais esquerda representa o sinal do nmero inteiro
Os n-1 bits mais direita representam a magnitude do nmero inteiro
Exemplo:
+18 = 00010010
-18 = 10010010 7
Representao Sinal-Magnitude
H duas representaes para o zero
+0 = 00000000
-0 = 10000000
mais difcil testar se um valor igual a zero do que no caso em que h apenas uma representao para o zero
Por isso, essa representao raramente usada na implementao da parte inteira de uma ULA
8
9
Representao em Complemento de Dois
Para nmeros inteiros positivos, an-1 = 0
O nmero 0 tratado como um nmero inteiro positivo
Usada para representar nmeros na faixa -2n 2n-1
Usada quase universalmente para representar nmeros inteiros dentro do P
10
Representao em Complemento de Dois
2
0
1
1 22n
i
i
i
n
n aaA
Decimal S-M C-2
+8 - -
+7 0111 0111
+6 0110 0110
+5 0101 0101
+4 0100 0100
+3 0011 0011
+2 0010 0010
+1 0001 0001
+0 0000 0000
Decimal S-M C-2
-0 1000 -
-1 1001 1111
-2 1010 1110
-3 1011 1101
-4 1100 1100
-5 1101 1011
-6 1110 1010
-7 1111 1001
-8 - 1000
Representao em Complemento de Dois
Converso complemento de 2 decimal
Converso decimal complemento de 2
-128 +2 +1 = -125
-120 =
12
Representao em Complemento de Dois
-128 64 32 16 8 4 2 1
1 0 0 0 0 0 1 1
-128 64 32 16 8 4 2 1
1 0 0 0 1 0 0 0
-128 +8
s vezes desejvel converter a representao de um nmero inteiro com n bits para sua representao com m bits, onde m > n
Na representao sinal-magnitude, isso pode ser feito facilmente
Basta mover o bit de sinal para a posio mais esquerda e preencher as demais posies novas com 0
13
Representao em Complemento de Dois
Representao em Sinal-Magnitude
Exemplos:
+18 = 00010010 (s-m, 8 bits)
+18 = 0000000000010010 (s-m, 16 bits)
-18 = 10010010 (s-m, 8 bits)
-18 = 1000000000010010 (s-m, 16 bits)
Esse procedimento no funciona para nmeros inteiros negativos representados em complemento de dois
14
Exemplos:
+18 = 00010010 (c-2, 8 bits)
+18 = 0000000000010010 (c-2, 16 bits)
-18 = 11101110 (c-2, 8 bits)
-32.658 = 1000000001101110 (c-2, 16 bits)
A regra mover o bit de sinal para a posio mais esquerda e preencher as demais com valor igual ao bit de sinal
15
Representao em Complemento de Dois
Exemplos:
+18 = 00010010 (c-2, 8 bits)
+18 = 0000000000010010 (c-2, 16 bits)
-18 = 11101110 (c-2, 8 bits)
-18 = 1111111111101110 (c-2, 16 bits)
16
Representao em Complemento de Dois
Negao
Para representao s-m, basta inverter o valor do bit de sinal
Para a representao em complemento de dois:
Toma-se o complemento booleano de cada bit do nmero
Adiciona-se 1 ao resultado
17
Representao em Complemento de Dois
Exemplos:
+18 = 00010010 (c-2)
Complemento booleano = 11101101
+1
11101110 = -18
-18 = 11101110 (c-2)
Complemento booleano = 00010001
+1
00010010 = +18
18
Representao em Complemento de Dois
Casos especiais de negao
0 = 00000000 (c-2)
Complemento booleano = 11111111
+1
100000000 = 0
Bit vai um (carry in) - ignorado
19
Representao em Complemento de Dois
Casos especiais de negao (cont.)
-128 = 10000000 (c-2)
Complemento booleano = 01111111
+1
10000000 = -128
Anomalia se deve ao fato que uma palavra de n bits pode conter 2n representaes distintas
2n um nmero par
Sendo representados nmeros positivos, negativos e o 0, a qtde de nmeros positivos e negativos so diferentes
20
Representao em Complemento de Dois
Adio
1001 +0101 1110
(a) (-7) + (+5) = -2
1100 +0100 10000
(b) (-4) + (+4) = 0
0011 +0100 0111
(c) (+3) + (+4) = +7
1100 +1111 11011
(d) (-4) + (-1) = -5
0101 +0100 1001
(e) (+5) + (+4) = +9 (overflow)
1001 +1010 10011
(f) (-7) + (-6) = -13 (overflow) 21
Representao em Complemento de Dois
Subtrao
0010 +1001 1011
(a) M = 2 = 0010 S = 7 = 0111
-S = -7 = 1001 (+2) + (-7) = -5
1011 +1110 11001
(c) M = -5 = 1011 S = 2 = 0010
-S = -2 = 1110 (-5) + (-2) = -7
0111 +0111 1110
(e) M = 7 S = -7 = 1001 -S = 7 = 0111
(+7) + (+7) = 14 (overflow)
0101 +1110 10011
(b) M = 5 = 0101 S = 2 = 0010
-S = -2 = 1110 (+5) + (-2) = +3
0101 +0010 0111
(d) M = 5 = 0101 S = -2 = 1110 -S = 2 = 0010 (+5) + (+2) = +7
1010 +1100 10110
(f) M = -6 = 1010 S = 4 = 0100
-S = -4 = 1100 (-6) + (-4) = -10 (overflow)
22
Representao em Complemento de Dois
23
Representao em Complemento de Dois
Representao em Complemento de Dois
Hardware para adio e subtrao
24
Representao em Complemento de Dois
Multiplicao
Complexa.
Calcule produto parcial para cada dgito.
Cuidado com o valor da casa (coluna).
Some produtos parciais.
25
Representao em Complemento de Dois
Exemplo de Multiplicao
Nota: precisa de resultado com tamanho duplo.
26
Representao em Complemento de Dois
Hardware para Multiplicao
27
Representao em Complemento de Dois
Multiplicao de 1101 e 1011
28
Representao em Complemento de Dois
Fluxograma para Multiplicao
29
Representao em Complemento de Dois
Multiplicando nmero negativos
Isso no funciona!
Soluo 1:
Converta para positivo, se for preciso.
Multiplique como antes.
Se sinais diferentes, negue a resposta.
Soluo 2:
Algoritmo de Booth.
30
Representao em Complemento de Dois
Fluxograma do algoritmo de Booth
31
Representao em Complemento de Dois
Exemplo do algoritmo de Booth (7 x 3)
32 Nota: usado deslocamento aritmtico para preservar o sinal
Representao em Complemento de Dois
Exemplo do algoritmo de Booth para negativos
33
Representao em Complemento de Dois
Diviso
Mais complexa que a multiplicao.
Nmeros negativos so realmente maus!
Baseada na diviso longa.
34
Representao em Complemento de Dois
Diviso de inteiros sem sinal
35
001111
1011
00001101
10010011
1011
001110
1011
1011
100
Quociente
Dividendo
Resto
Restos
Parciais
Divisor
Representao em Complemento de Dois
Diviso de inteiros sem sinal
36
Representao de Ponto Flutuante
Usada para representar nmeros muito grandes ou muito pequenos
Para nmeros decimais, usa-se a notao cientfica
976.000.000.000.000 = 9,76 x 1014
0,0000000000000976 = 9,76 x 10-14
Para nmeros binrios, temos:
EBM
Sinal Mantissa
Expoente
37
Representao de Ponto Flutuante
Um mesmo nmero pode ser vrias representaes em ponto flutuante
24 = 0,110 x 25 = 110 x 22 = 0,0110 x 26
Para simplificar as operaes, requerido que os nmeros sejam normalizados
Enbbbb
2...1,1 210
implcito
Dgitos binrios
38
Representao de Ponto Flutuante
Expoente polarizado
Significando
23 bits 8 bits
32 bits Sinal da
mantissa o sinal armazenado no primeiro bit da palavra o primeiro bit da significando verdadeira sempre 1
- por isso no precisa ser armazenado o valor 127 adicionado ao expoente verdadeiro, sendo o resultado denominado Expoente Polarizado
Exemplos: 856.064 = 0,11010001 x 2
10100 = 0 10010011 10100010000000000000000 -856.064 = -0,11010001 x 210100 = 1 10010011 10100010000000000000000 209 x 2-28 = 0,11010001 x 2-10100 = 0 01101011 10100010000000000000000 -209 x 2-28 = -0,11010001 x 2-10100 = 1 01101011 10100010000000000000000
39
Representao de Ponto Flutuante
Intervalos de representao para 32 bits:
Nmeros negativos:
[-(1-2-24) x 2128 , -0,5 x 2-127] -(1-2-24) x 2128 = 1 11111111 11111111111111111111111
-0,5 x 2-127 = 1 00000000 00000000000000000000000
Nmeros positivos:
[0,5 x 2-127 , (1-2-24) x 2128] 0,5 x 2-127 = 0 00000000 00000000000000000000000
(1-2-24) x 2128 = 0 11111111 11111111111111111111111
40
Representao de Ponto Flutuante
Nmeros positivos representveis
Nmeros negativos representveis
-(1-2-24) x 2128 -0,5 x 2-127 -0,5 x 2-127 -(1-2-24) x 2128 0
Overflow em Nmeros Negativos
Overflow em Nmeros Positivos
Underflow em Nmeros Negativos
Underflow em Nmeros Positivos
Nmeros inteiros representveis
0 -231 231-1
Overflow em Nmeros Negativos
Overflow em Nmeros Positivos
41
Representao de Ponto Flutuante
O underflow menos crtico que o overflow, pois o valor pode ser aproximado para 0
No h, princpio, representao para 0
Na verdade, h um padro de bits especial para representao do 0
O nmero mximo de valores distintos representveis continua sendo 232
A representao em ponto flutuante apenas divide esses valores em duas faixas
42
Representao de Ponto Flutuante
H uma relao estreita entre os tamanhos dos campos reservados ao significando e ao expoente
Para um tamanho fixo de palavra:
Se o nmero de bits reservados ao significando aumentar, aumenta-se a preciso, mas diminui-se a faixa de valores representveis
Se o nmero de bits reservados ao expoente aumentar, aumenta-se a faixa de valores representveis, mas diminui-se a preciso
43
Representao de Ponto Flutuante
Padro IEEE 754
44
Expoente polarizado
Significando
52 bits 11 bits
64 bits Sinal do
significando
Expoente polarizado
Significando
23 bits 8 bits
32 bits Sinal do
significando
Formato Simples
Formato Duplo
Representao de Ponto Flutuante
Sinal
Expoente Polarizado
Mantissa Valor Formato
Simples
Formato
Duplo
0 0 0 0 0
1 0 0 0 -0
0 255 2047 0
1 255 2047 0 -
0 ou 1 255 2047 0 NaN
45
Valores especiais definidos no IEEE 754
Representao de Ponto Flutuante
Parmetros do formato IEEE 754
46
Parmetro Formato Simples Formato Duplo
Tamanho da palavra 32 64
Tamanho do expoente 8 11
Polarizao do expoente 127 1023
Expoente mximo 127 1023
Expoente mnimo -126 -1022
Tamanho da mantissa 23 52
Nmero de expoentes 254 2046
Nmero de mantissas 223 252
Nmero de valores 1,98 x 231 1,99 x 263
Referncias
STALLINGS, W. Arquitetura e organizao de computadores: projeto para o desempenho. 8. ed. Prentice Hall, 2009.
DELGADO, J.; RIBEIRO, C. Arquitetura de Computadores. 2 ed. LTC, 2009.
PATTERSON, D. A. ; HENNESSY, J.L. Organizao e projeto de computadores a interface hardware software. 3. ed. Editora Campus, 2005.
47