Upload
nguyenanh
View
214
Download
0
Embed Size (px)
Citation preview
Arquitetura e Organização de Computadores
Aritmética Computacional
Prof. Sílvio Fernandes
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS
CURSO DE CIÊNCIA DA COMPUTAÇÃO
Unidade Lógica e Aritmética (ULA)
• Do inglês ALU • Faz os cálculos. • Tudo o mais no computador existe para atender
a essa unidade. • Trata de inteiros. • Pode tratar de números de ponto flutuante
(reais). • Pode ser FPU separada (coprocessador
matemático). • Pode estar em chip de FPU separado (486DX +).
2
Representação de Números Inteiros
• No sistema de numeração binária, é possível representar números inteiros negativos usando:
– Dígitos 0 e 1
– Sinal de subtração
– Vírgula
• Exemplo:
-1101,01012 = -13,312510
4
Representação de Números Inteiros
• Para armazenar e processar números inteiros
negativos no computador, são usados apenas
os dígitos 0 e 1
• Se uma sequencia de n bits de dígitos binários
na-1 na-2 ... a1 a0 for um inteiro sem sinal A, seu
valor é
5
1
0
2n
i
i
i aA
Representação de Números Inteiros
• Como representar números negativos?
– Representação Sinal-Magnitude
– Representação em Complemento de Dois
6
Representação Sinal-Magnitude
• Em uma palavra de n bits
– O bit mais à esquerda representa o sinal do número inteiro
– Os n-1 bits mais à direita representam a magnitude do número inteiro
• Exemplo:
+18 = 00010010
-18 = 10010010 7
Representação Sinal-Magnitude
• Há duas representações para o zero
+0 = 00000000
-0 = 10000000
• É mais difícil testar se um valor é igual a zero do que no caso em que há apenas uma representação para o zero
• Por isso, essa representação raramente é usada na implementação da parte inteira de uma ULA
8
– Para números inteiros positivos, an-1 = 0
– O número 0 é tratado como um número inteiro positivo
• Usada para representar números na faixa -2n ↔ 2n-1
• Usada quase universalmente para representar números inteiros dentro do µP
10
Representação 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
Representação em Complemento de Dois
• Conversão complemento de 2 → decimal
• Conversão decimal→ complemento de 2
-128 +2 +1 = -125
-120 =
12
Representação 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 é desejável converter a representação de um número inteiro com n bits para sua representação com m bits, onde m > n
• Na representação sinal-magnitude, isso pode ser feito facilmente
– Basta mover o bit de sinal para a posição mais à esquerda e preencher as demais posições novas com 0
13
Representação em Complemento de Dois
Representação 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 não funciona para números 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 posição mais à esquerda e preencher as demais com valor igual ao bit de sinal
15
Representação 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
Representação em Complemento de Dois
• Negação
– Para representação s-m, basta inverter o valor do bit de sinal
– Para a representação em complemento de dois:
• Toma-se o complemento booleano de cada bit do número
• Adiciona-se 1 ao resultado
17
Representação 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
Representação em Complemento de Dois
• Casos especiais de negação
0 = 00000000 (c-2)
Complemento booleano = 11111111
+1
100000000 = 0
Bit “vai um” (carry in) - é ignorado
19
Representação em Complemento de Dois
• Casos especiais de negação (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 representações distintas
• 2n é um número par
• Sendo representados números positivos, negativos e o 0, a qtde de números positivos e negativos são diferentes
20
Representação em Complemento de Dois
• Adição
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
Representação em Complemento de Dois
• Subtração
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
Representação em Complemento de Dois
Representação em Complemento de Dois
• Multiplicação
– Complexa.
– Calcule produto parcial para cada dígito.
– Cuidado com o valor da casa (coluna).
– Some produtos parciais.
25
Representação em Complemento de Dois
• Exemplo de Multiplicação
Nota: precisa de resultado com tamanho duplo.
26
Representação em Complemento de Dois
• Multiplicando número negativos
– Isso não funciona!
– Solução 1:
• Converta para positivo, se for preciso.
• Multiplique como antes.
• Se sinais diferentes, negue a resposta.
– Solução 2:
• Algoritmo de Booth.
30
Representação em Complemento de Dois
• Exemplo do algoritmo de Booth (7 x 3)
32 Nota: É usado deslocamento aritmético para preservar o sinal
Representação em Complemento de Dois
• Divisão
– Mais complexa que a multiplicação.
– Números negativos são realmente maus!
– Baseada na divisão longa.
34
Representação em Complemento de Dois
• Divisão de inteiros sem sinal
35
001111
1011
00001101
10010011
1011
001110
1011
1011
100
Quociente
Dividendo
Resto
Restos
Parciais
Divisor
Representação de Ponto Flutuante
• Usada para representar números muito grandes ou muito pequenos
– Para números decimais, usa-se a notação científica
• 976.000.000.000.000 = 9,76 x 1014
• 0,0000000000000976 = 9,76 x 10-14
• Para números binários, temos:
EBM
Sinal Mantissa
Expoente
37
Representação de Ponto Flutuante
• Um mesmo número pode ser várias representações em ponto flutuante
24 = 0,110 x 25 = 110 x 22 = 0,0110 x 26
• Para simplificar as operações, é requerido que os números sejam normalizados
E
nbbbb 2...1,1 210
implícito
Dígitos binários
38
Representação 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 não precisa ser armazenado • o valor 127 é adicionado ao expoente verdadeiro, sendo o resultado denominado Expoente Polarizado
Exemplos: • 856.064 = 0,11010001 x 210100 = 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
Representação de Ponto Flutuante
• Intervalos de representação para 32 bits:
– Números 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
– Números 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
Representação de Ponto Flutuante
Números positivos representáveis
Números negativos representáveis
-(1-2-24) x 2128 -0,5 x 2-127 -0,5 x 2-127 -(1-2-24) x 2128 0
Overflow em Números Negativos
Overflow em Números Positivos
Underflow em Números Negativos
Underflow em Números Positivos
Números inteiros representáveis
0 -231 231-1
Overflow em Números Negativos
Overflow em Números Positivos
41
Representação de Ponto Flutuante
• O underflow é menos crítico que o overflow, pois o valor pode ser aproximado para 0
• Não há, à princípio, representação para 0
– Na verdade, há um padrão de bits especial para representação do 0
• O número máximo de valores distintos representáveis continua sendo 232
– A representação em ponto flutuante apenas divide esses valores em duas faixas
42
Representação de Ponto Flutuante
• Há uma relação estreita entre os tamanhos dos campos reservados ao significando e ao expoente
• Para um tamanho fixo de palavra:
– Se o número de bits reservados ao significando aumentar, aumenta-se a precisão, mas diminui-se a faixa de valores representáveis
– Se o número de bits reservados ao expoente aumentar, aumenta-se a faixa de valores representáveis, mas diminui-se a precisão
43
Representação de Ponto Flutuante
• Padrão 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
Representação 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
Representação de Ponto Flutuante
• Parâmetros do formato IEEE 754
46
Parâmetro Formato Simples Formato Duplo
Tamanho da palavra 32 64
Tamanho do expoente 8 11
Polarização do expoente 127 1023
Expoente máximo 127 1023
Expoente mínimo -126 -1022
Tamanho da mantissa 23 52
Número de expoentes 254 2046
Número de mantissas 223 252
Número de valores 1,98 x 231 1,99 x 263
Referências
• STALLINGS, W. Arquitetura e organização 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. Organização e projeto de computadores – a interface hardware software. 3. ed. Editora Campus, 2005.
47