Aritmética Computacional - Rampazzo.me
Download
Report
Transcript Aritmética Computacional - Rampazzo.me
Arquitetura de
Computadores
Willian Rampazzo
Faculdade Anhanguera de Indaiatuba
Aula 03
Aritmética Computacional
Unidade Lógica e Aritmética (ULA)
■
Parte do computador que realmente executa as operações aritméticas e
lógicas nos dados
■
Todos os outros elementos do computador existem principalmente para
transferir dados para a ULA para que este processe e, em seguida,
devolva os resultados
■
Com base na utilização de dispositivos simples de lógica digital que
podem armazenar dígitos binários e realizar operações de lógica
booleana simples
Entradas e Saídas da ULA
Unidade de
controle
Registradores
Bits
especiais
Registradores
Representação Inteira
■
No sistema numérico binário números arbitrários podem ser
representados com:
■
Os dígitos zero e um
■
O sinal negativo (para números negativos)
■
O ponto, ou ponto da raiz (para números com um componente fracionário)
■
Para fins de armazenamento e de processamento do computador nós
não temos o benefício de símbolos especiais para o sinal negativo e
ponto da raiz
■
Apenas os dígitos binários (0,1) podem ser utilizados para representar
números
Representação Sinal-Magnitude
Há várias convenções alternativas
utilizadas para representar negativo,
bem como números inteiros positivos
•Todas essas alternativas envolvem o tratamento do
bit mais significativo (mais à esquerda) da palavra
como um bit de sinal
•Se o bit de sinal é 0, o número é positivo
•Se o bit de sinal é 1, o número é negativo
Representação sinal-magnitude é a
forma mais simples que emprega um
bit de sinal
Inconvenientes:
Devido a estes inconvenientes, a
representação sinal-magnitude é
raramente usada na implementação da
parte inteira da ALU
•A adição e subtracção requerem uma consideração
de ambos os sinais dos números e dos seus valores
relativos ao realizar a operação necessária
•Há duas representações de 0
Representação em complemento de dois
■
Usa o bit mais significativo como um bit de sinal
■
Difere da representação sinal-magnitude de maneira que os outros bits
são interpretados
Extensão
Quantidade de
representação de zero
Negação
Extensão de bits
até
Um
Pegue o complemento booleano de cada bit do correspondente
positivo e adicione um ao resultado.
Adicione a quantidade desejada de bits a esquerda com o
mesmo valor do sinal.
Regra de overflow
Se dois números de mesmo sinal (ambos positivos ou ambos
negativos) são somados, um overflow acontece se e somente
se o resultado tem sinal oposto.
Regra de subtração
Para subtrair B de A, pegue o complemento de dois de B e
some a A.
Alternativas para representação de inteiros em 4 bits
Extensão
■
Gama de números que podem ser expressos é estendida através do
aumento do comprimento de bits
■
Na notação de sinal-magnitude conseguimos movendo o bit de sinal
para a nova posição mais à esquerda e preenchendo com zeros
■
Este procedimento não vai funcionar para inteiros negativos em
complemento de dois
■
Regra é para mover o bit de sinal para a nova posição mais à esquerda e
preencha com cópias do bit de sinal
■
Para números positivos, preencher com zeros, e para números negativos,
preencher com 1s
■
Isto é chamado de extensão de sinal
Representação de ponto fixo
A posição da vírgula é fixa e assumimos
que está à direita do bit menos
significativo.
Programadores podem usar a mesma
notação para representar fração binária
movendo implicitamente a posição da
vírgula.
Negação
■
Operação de complemento de dois
■
Leve o complemento booleano de cada bit do inteiro (incluindo o bit de sinal)
■
Tratar o resultado como um inteiro binário sem sinal, adicione 1
+18 = 00010010 (complemento de dois)
complemento bit a bit = 11101101
+
1
11101110 = -18
■
O negativo do negativo do número é ele mesmo:
-18 = 11101110 (complemento de dois)
complemento bit a bit = 00010001
+
1
00010010 = +18
Negação - Caso especial 1
0 =
00000000 (complemento de dois)
complemento bit a bit =
Adiciona 1
11111111
+
Resultado
Overflow é ignorado, então:
-0=0
1
100000000
Negação - Caso especial 2
-128
=
complemento bit a bit =
Adiciona 1
Resultado
10000000 (complemento de dois)
01111111
+
1
10000000
Então:
-(-128) = -128 X
Monitorar o bit mais significativo (bit de sinal)
Ele deve mudar durante a negação.
Adição
Regra do
Overflow
REGRA DO OVERFLOW:
Se dois números são somados
e eles são ambos positivos ou
ambos negativos, então ocorre
overflow se e somente se o
resultado é de sinal contrário.
REGRA DA SUBTRACTION:
Para subtrair um número
(subtraendo) de outro
(minuendo), tomar o
complemento de dois
(negação) do subtraendo e
adicioná-lo ao minuendo.
Regra da
Subtraction
Subtração
Representação geométrica dos números
inteiros em complemento de dois
Hardware para Adição e Subtração
Registrador B
Registrador A
Complemento de
dois
Somador
OF = Bit de overflow
SW = Seletor de adição ou subtração
Multiplicação
Multiplicando
Adição
Somador de n bits
Lógica de controle de
adição e
deslocamento
Deslocamento à direita
Implementação do
Hardware de
multiplicação de
números binários
sem sinal
Multiplicador
Fluxograma da
multiplicação de
números binários
sem sinal
Multiplicação em complemento de dois
Comparação
Inteiro sem sinal
Complemento de dois
Algoritmo de
Booth
Exemplo do algoritmo de Booth
Exemplos usando o algoritmo de Booth
Divisão
Fluxograma para
divisão binária
sem sinal
Exemplo de divisão em complemento de
dois
Representação de número de ponto flutuante
Princípios
■
Com uma notação de ponto fixo, é possível representar uma gama de
números inteiros positivos e negativos centrados em ou perto de 0
■
Ao assumir um ponto binário ou ponto fixo, este formato permite a
representação de números com um componente fracional
■
Limitações:
■
Números muito grandes ou pequenas frações não podem ser representadas
■
A parte fracionária do quociente em uma divisão de dois números grandes
pode ser perdida
Formato típico de ponto flutuante em
32 bits
Sinal da
mantissa
Expoente polarizado
Mantissa
Ponto flutuante
Significando
■
A porção final da palavra
■
Qualquer número de ponto flutuante pode ser expresso de várias
maneiras
Os seguintes são equivalentes, onde o significando é expresso na
forma binária:
0.110 * 25
110 * 22
0.0110 * 26
■
Número normal
■
O dígito mais significativo do significando é diferente de zero
Números representáveis
Inteiros representáveis
Reta de
números
Números inteiros em complemento de dois
Overflow
negativo
Representação de
números negativos
Underflo
w
negativo
Underflo
w
positivo
Representação de
números positivos
Overflow
positivo
Reta de
números
Números de ponto flutuante
Densidade de números de ponto flutuante
Padrão IEEE 754
A representação mais importante
de ponto flutuante é definida
Padrão foi desenvolvido para
facilitar a portabilidade de
programas de um processador
para outro e para incentivar o
desenvolvimento de programas
sofisticados e numericamente
orientados
Padrão tem sido amplamente
adotado e é usado em
praticamente todos os
processadores contemporâneos e
co-processadores aritméticos
IEEE 754-2008 abrange tanto as
representações binárias como as
decimais de ponto flutuante
IEEE 754-2008
■
Define os seguintes tipos diferentes de formatos de ponto flutuante:
■
Formato aritmético
■
■
Formato básico
■
■
Todas as operações obrigatórios definidos pelo padrão são suportados pelo formato.
O formato pode ser usado para representar operandos de ponto flutuante ou
resultados para as operações descritas na norma.
Esse formato abrange cinco representações de ponto flutuante, três binários e duas
decimais, cujas codificações são especificadas pela norma, e que podem ser usadas
para a aritmética. Pelo menos um dos formatos de base é implementado em qualquer
implementação conforme.
Formato de intercâmbio
■
Uma especificação completa, de comprimento fixo de codificação binária que
permite a troca de dados entre diferentes plataformas, e que pode ser utilizada para
o armazenamento.
bit de
sinal
Expoente
polarizado
Formatos
IEEE 754
Mantissa
Formato binário de 32 bits
bit de
sinal
Expoente
polarizado
Mantissa
Formato binário de 64 bits
bit de
sinal
Expoente
polarizado
Formato binário de 128 bits
Mantissa
Parâmetro
Formato
binário 32
binário 64
binário 128
Tamanho da palavra (bits
32
64
128
Tamanho do expoente (bits)
8
11
15
Polarização do expoente
127
1023
16383
Expoente máximo
127
1023
16383
Expoente mínimo
-126
-1022
-16382
Faixa de números (base 10)
10-38, 10+38
10-308, 10+308
10-4932, 10+4932
Tamanho da mantissa (bits)*
23
52
112
Número de expoentes
254
2046
32766
Número de frações
223
252
2112
Número de valores
1,98x231
1,99x263
1,99x2128
Menor número positivo normal
2-126
2-1022
2-16362
Maior número positivo normal
2128 - 2104
21024 - 2971
216384 - 216271
* não incluindo o bit implícito e não incluindo o bit de sinal
IEEE 754
Formatos
Parâmetros
Formatos adicionais
Formatos de precisão extendida
Formato de precisão extensível
■
Fornecer bits adicionais no expoente (alcance
estendido) e no significando (precisão
estendida)
■
Precisão e intervalo são definidos
sob o controle do usuário
■
Diminui a chance de um resultado final que
tenha sido contaminado por erro excessivo
■
■
Diminui a chance de um estouro intermediário
abortar um cálculo cujo resultado final teria sido
representável em um formato básico
Pode ser usado para cálculos
intermediários, sem restrição de
locais padrão ou de formato ou de
comprimento
■
Oferece alguns dos benefícios de um formato
básico maior, sem incorrer a penalidade de
tempo normalmente associado com maior
precisão
Aritmética com números de ponto flutuante
Números de ponto flutuante
Exemplos:
Operações aritméticas
Adição e subtração em ponto flutuante
X+Y=Z
X-Y=Z
Multiplicação em
ponto flutuante
X x Y=Z
Divisão em ponto
flutuante
X/Y=Z
Considerações de precisão
Bits de guarda
Exemplo binário, sem bits de guarda
Exemplo hexadecimal, sem bits de guarda
Exemplo binário, com bits de guarda
Exemplo hexadecimal, com bits de guarda
Considerações de precisão
Arredondamento
■
Abordagens padrão IEEE:
■ Arredondar para o mais próximo:
■ O resultado será arredondado para o número representável mais próximo.
■ Arredondar para +∞ :
■ O resultado é arredondado para mais infinito.
■ Arredondar para -∞:
■ O resultado é arredondado para baixo em direção ao infinito negativo.
■ Arredondar para 0:
■ O resultado é arredondado para zero.
Aritimética intervalar
■ Fornece um método eficiente para o
monitoramento e controle de erros em cálculos
de ponto flutuante por produzir dois valores
para cada resultado
■ Os dois valores correspondem aos pontos de
extremidade inferior e superior de um
intervalo que contém o resultado verdadeiro
■
Menos infinito e
arredondamento para mais são
úteis na implementação de
aritmética intervalar
Truncamento
■ A largura do intervalo indica a precisão do
resultado
■
Arredonda para zero
■ Se os pontos finais não podem ser
representados de então os pontos finais do
intervalo são arredondados para baixo e para
cima, respectivamente
■
Bits extras são ignorados
■
Técnica mais simples
■ Se o intervalo entre os limites superior e
inferior é suficientemente estreito então um
resultado suficientemente preciso foi obtido
■
Uma polarização consistente para zero
em uma operação
■ A polarização afeta cada operação
para os resultados diferentes de zero
nos bits extras
Padrão IEEE para aritmética de números binários de ponto
flutuante
Infinito
É tratado como o caso dos limites da aritmética real, com os valores de
borda infinita interpretados da seguinte forma:
- ∞ < (cada número finito) < + ∞
Por exemplo:
5 + (+ ∞ ) = + ∞
5÷ (+ ∞ )
= +0
5 - (+ ∞ ) = - ∞
(+ ∞ ) + (+ ∞ )
5 + (- ∞ ) = - ∞
(- ∞ ) + (- ∞)
=-∞
5 - (- ∞ ) = + ∞
(- ∞ ) - (+ ∞ )
=-∞
5 * (+ ∞ ) = + ∞
(+ ∞ ) - (- ∞ )
=+∞
=+∞
Padrão IEEE para aritmética de números binários de ponto
flutuante
NaN silencioso e NaN sinalizador
■
NaN sinalizador gera uma exceção de operação inválida sempre que é
usado como operando.
■
NaN silencioso se propaga por meio de quase toda operação aritmética
sem gerar exceção.
Operação
Qualquer
Adição e subtração
Multiplicação
Divisão
Resto
Raiz quadrada
NaN silencioso produzido por
Qualquer operação sobre um NaN sinalizador
Subtração de números de magnitude infinita
(+ ∞) + (- ∞)
(- ∞) + (+ ∞)
(+ ∞) - (+ ∞)
(+ ∞) - (- ∞)
0x∞
0/0 ou ∞/∞
x RES 0 ou ∞ RES y
raiz(x) onde x < 0
Operações que produzem
um NaN silencioso
Resumo
Aritmética
computacional
Aula 03
■
Aritmética inteira
■
ALU
■
Negação
■
Representação inteira
■
Adição e subtração
■
Sinal-magnitude
■
Multiplicação
■
Complemento de dois
■
Divisão
■
Extensão de faixa
■
Ponto fixo
■
■
Representação de ponto flutuante
■
Princípios
■
Padrão IEEE para representação
de números binários de ponto
flutuante
Stallings: Capítulo 8
PLT: Capítulo 7
Aritmética de ponto flutuante
■
Adição e subtração
■
Multiplicação e divisão
■
Considerações de precisão
■
Padrão IEEE para aritmética de
números binários de ponto
flutuante