56
Capítulo 3 Aritmética de Computadores

3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Embed Size (px)

Citation preview

Page 1: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Capítulo 3

Aritmética de Computadores

Page 2: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Aritmética para Computadores

� Operações com inteiros

� Adição e subtração

� Multiplicação e divisão

� Lidado com estouro aritmético

� Números reais em ponto flutuante

� Representação e operações

Page 3: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Adição de Inteiros

� Exemplo: 7 + 6

� Estouro se o resultado estiver fora do intervalo

� Somando operandos +ve e –ve, não existe estouro

� Somando dois operandos +ve

� Estouro se o resultado do bit de sinal é 1

� Somando dois operandos –ve

� Estouro se o resultado do bit de sinal é 0

0 + 0 = 01 + 0 = 11 + 1 = 10 = 0 + carry de 1 p/ próxima posição

Page 4: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Subtração de Inteiros

� Adiciona negação do segundo operando

� Exemplo: 27 – 13 = 27 – (13) = 14

27: 1101113: - 0110114: 01110

� Estouro se o resultado estiver fora do intervalo

� Subtraindo dois operandos +ve ou dois operandos –ve, não existe estouro (lembrete: x – y = x + (-y))

� Subtraindo operando +ve de –ve

� Estouro se o resultado do bit de sinal for 0

� Subtraindo operando –ve de +ve� Estouro se o resultado do bit de sinal for 1

0 – 0 = 01 – 1 = 01 – 0 = 10 – 1 → toma emprestado → 10–1=1

Complementa e adiciona 1

Page 5: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Condições de Estouro

� Combinação de operações, operandos e resultados que indicam estouro

Page 6: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Lidando com Estouro

� Algumas linguagens (e.g., C) ignoram estouro

� Use as instruções do MIPS addu, addui, subu paraignorar o estouro

� Outras linguagens (e.g., Ada, Fortran) exigemlançar uma exceção

� Use as instruções do MIPS add, addi, sub paraconsiderar estouro

� No estouro, invocar o manipulador de exceção

� Salvar PC no registrador do contador de programa daexceção (EPC)

� Salta para o endereço do tratador pré-definido

� Instrução mfc0 (move do coprocessador reg) pode acessaro valor do EPC, para retornar depois da ação corretiva

Page 7: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Aritmética para Multimedia

� Processamento gráfico e de mídia opera em vetores de dados de 8 e 16 bits

� Use somador de 64 bits, com cadeia de carry

particionado

� Opera em vetores de 8×8-bit, 4×16-bit, ou 2×32-bit

� SIMD (single-instruction, multiple-data)

� Saturando operações

� Para overflow, o resultado é o maior valor representável

� c.f. módulo aritmético de complemento de 2

� E.g., botão com saturação pararia no volume mais alto ( )( ) ww

overflowunsigned rrl 22mod_

≤−⇔

Page 8: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Multiplicação

� Começe com a abordagem de multiplicação longa

1000× 1001

10000000 0000 1000 1001000

Comprimento do produto é a soma dos comprimentos do operando

multiplicando

multiplicador

produto

O comprimento da multiplicação de um multiplicando n e um multiplicador m é um produto n + m

Copia multiplicando se o dígito for 1

Page 9: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Hardware de Multiplicação

Inicialmente 0

O LSB do multiplicador determina se o multipicando é adicionado ao registrador do produto

Estes três passos são repetidos 32 vezes para obter o produto

Page 10: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exemplo

� Usando números de 4 bits para salvar espaço, multiplique 210 × 310 ou 00102 × 00112 usando o algoritmo de multiplicação

Page 11: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Multiplicador Otimizado

� Executa os passos em paralelo: soma/desloca

� O multiplicador e o multiplicando são deslocados enquanto o multiplicando é adicionado ao produto

� Caso o bit do multiplicador seja um

O produto é deslocado para direita

O multiplicador é colocado no MSB do registrador de produto

Um ciclo por soma do produto parcial

Page 12: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Multiplicador Mais Rápido

� Usa somadores múltiplos

� Balanceamento de custo/desempenho

� Este hardware “desenrola o laço” para usar 31 somadores

� Várias multiplicação executadas em paralelo para minimizar tempo

Page 13: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Multiplicação do MIPS

� Dois registradores de 32 bits para o produto

� HI: 32 bits mais significante

� LO: 32 bits menos significante

� Instruções

� mult rs, rt / multu rs, rt

� Produto de 64 bits em HI/LO

� mfhi rd / mflo rd

� Move de HI/LO para rd

� Pode tesar o valor de HI para checar se o produto estourou os 32 bits

� mul rd, rs, rt

� 32 bits menos significante do produto –> rd

Page 14: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exercício 1

� Efetue as seguintes operações

a) 1012 + 112

b) 10110112 + 10110102

c) 10012 – 1012

d) 110102 – 100112

Page 15: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exercício 2

� Efetue as seguintes multiplicações:

a) 11012 × 10102

b) 101012 × 1102

c) 100110101102 × 11112

Page 16: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exercício 3

� Usando números de 4 bits para salvar espaço, multiplique 310 × 410 ou 00112 × 01002 usando o algoritmo de multiplicação

Page 17: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Divisão

� Checa por divisor 0

� Abordagem da divisão longa

� Se os bits do divisor ≤ dividendo

� 1 bit no quociente, subtrai

� Caso contrário

� 0 bit no quociente, abaixa próximo bit de dividendo

� Restaurando a divisão

� Faz a substração, e se o resto for < 0, adiciona o divisor de volta

� Divisão com sinal

� Divide usando valores absoluto

� Ajusta o sinal do quociente e resto quando necessário

10011000 1001010

-100010101 1010-1000

10

operandos de n-bit produz quociente e resto de n-bit

quociente

dividendo

resto

divisor

Dividendo=Quociente×Divisor+Resto ∴Dividendo=9×8+2=74

div

idendo

Page 18: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exercício

� Realize a divisão de 01112 por 00102

� Realize a divisão de 1101002 por 1002

110100 100-100 1101

101-100

10100-100

0

111 10-10 11

11-10

1

Page 19: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Hardware da Divisão

Inicialmente dividendo

Inicialmente divisor na metade

esquerda

Page 20: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exemplo

� Usando uma versão de 4 bits do algoritmo, tente dividir 710 por 210 ou 01112 por 00102

Page 21: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exercício

� Usando uma versão de 4 bits do algoritmo, tente dividir 610 por 210 ou 0000 01102 por 00102

Page 22: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Divisor Otimizado

� Um ciclo por subtração do resto parcial

� Parece bastante como um multiplicador!

� Mesmo hardware pode ser usado para ambos

Combina o registrador do quociente com a metade direita do registrador do resto

Page 23: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Divisão Mais Rápida

� Não pode usar hardware paralelo como no multiplicador

� Subtração está condicionada no sinal do resto

� Divisores mais rápidos geram mútiplos bits do quociente por passo

� Ainda exige múltiplos passos

Page 24: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Divisão do MIPS

� Usa registradores HI/LO para resultado

� HI: resto de 32 bits

� LO: quociente de 32 bits

� Instruções

� div rs, rt / divu rs, rt

� Sem estouro ou checagem de divisão por 0

� Software deve executar checagens se necessário

� Usa mfhi, mflo para acessar resultado

Page 25: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Ponto Flutuante

� Representação de números não-inteiros

� Incluindo números muito pequenos e muito grandes

� Como notação científica (um dígito à esquerda do ponto decial)

� –2.34 × 1056

� +0.002 × 10–4

� +987.02 × 109

� Em binário

� ±1.xxxxxxx2 × 2yyyy

� Tipos float e double em C

normalizado

não normalizado

Normalizado: um número em notação de ponto flutuante que não tem líder 0s

Page 26: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Padrão de Ponto Flutuante

� Definido pela IEEE Std 754-1985

� Desenvolvido em resposta a divergência de representações

� Problemas de portabilidade de código científico

� Agora, quase universalmente adotado

� Duas representações

� Precisão simples (32-bit)

� Precisão dupla (64-bit)

Page 27: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Formato de Ponto Flutuante IEEE

� S: bit de sinal (0 ⇒ positivo, 1 ⇒ negativo)� Para suportar ainda mais bits, IEEE 754 faz o uso implícito

do líder 1-bit dos números binários normalizados� precisão simples: o número é 24 bits (implica 1+uma fração de 23 bits)� Precisão dupla: o número é 53 bits (implica 1+uma fração de 52 bits)

� Expoente: excesso de representação: expoente real+viés� Assegure que o expoente é não sinalizado� Simples: Viés = 127; Duplo: Viés = 1023

S Expoente Fração

r. simples: 8 bitsr. dupla: 11 bits

r. simples: 23 bitsr. dupla: 52 bits

Viés)(ExpoenteS 2Fração)(11)(x −×+×−=

O significante representa o número de 24- ou 53-bits que é 1 mais a fração; e a fração quando referimos o número de 23- e 52-bits

Page 28: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Formato de Ponto Flutuante IEEE

� Os bits da fração representam um número entre 0 e 1 e E representa o valor no campo do expoente

� Se numerarmos os bits da fração da esquerda para direita s1, s2, s3,…, então o valor é

� A notação desejável deve representar o expoente mais negativo como 00..002 e o mais positivo como 11..112

� Esta convenção é chamda notação de viés

� Expoente sendo subtraído do viés para representar o maior e menor valor do expoente real

� Se usarmos o bit de sinal em E, diminuiríamos o intervalo de número que podem ser representados

( ) ( ) ( ) ( )( ) VESsss

−−−−×+×+×+×+×− 223222111

321K

Page 29: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Intervalo da Precisão Simples

� Expoentes 00000000 e 11111111 reservado

� Menor valor

� Expoente: 00000001⇒ expoente real = 1 – 127 = –126

� Fração: 000…00 ⇒ significante = 1.0

� ±1.0 × 2–126 ≈ ±1.2 × 10–38

� Maior valor

� Expoente: 11111110⇒ expoente real = 254 – 127 = +127

� Fração: 111…11 ⇒ significante ≈ 2.0

� ±2.0 × 2+127 ≈ ±3.4 × 10+38

Page 30: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Intervalo da Precisão Dupla

� Expoentes 0000…00 e 1111…11 reservado

� Menor valor

� Expoente: 00000000001⇒ expoente real = 1 – 1023 = –1022

� Fração: 000…00 ⇒ significante = 1.0

� ±1.0 × 2–1022 ≈ ±2.2 × 10–308

� Maior valor

� Expoente: 11111111110⇒ expoente real = 2046 – 1023 = +1023

� Fração: 111…11 ⇒ significante ≈ 2.0

� ±2.0 × 2+1023 ≈ ±1.8 × 10+308

Page 31: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Precisão do Ponto Flutuante

� Precisão relativa

� Todos os bits de fração são significativos

� Simples: aproximadamente 2–23

� Equivalente a 23 × log102 ≈ 23 × 0.3 ≈ 6 dígitos decimais de precisão

� Duplo: aproximadamente 2–52

� Equivalente a 52 × log102 ≈ 52 × 0.3 ≈ 16 dígitos decimais de precisão

Page 32: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exemplo de Ponto Flutuante (1)

� Representar –0.75

� O número -0.7510 é também -3/410 ou -3/2210

� Representado pela fração binária -112/22

10 ou -1.12×2-1

� –0.75 = (–1)1 × 1.12 × 2–1, onde S = 1

� 1 + Fração = .1000…002

� Expoente Real (i.e., ER = E - V) deve ser igual a –1� Simples: E = –1 + 127 = 126 = 011111102

� Duplo: E = –1 + 1023 = 1022 = 011111111102

� Simples: 1011111101000…00

� Duplo: 1011111111101000…00

sinal expoente fração

Page 33: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exemplo de Ponto Flutuante (2)

� Qual número é representado pelo seguinte flutuante de precisão simples

11000000101000…00

� S = 1 (representa número negativo)

� Fração = 01000…002 = 1×2-2 = 0.25

� Expoente = 100000012 = 129

� x = (–1)1 × (1 + 0.25) × 2(129 – 127)

= (–1) × 1.25 × 22

= –5.0

Page 34: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exercício (1)

� Representar -0.5 em ponto flutuante com precisao simples e dupla

� Representar 0.25 em ponto flutuante com precisao simples e dupla

� Representar -0.4375 em ponto flutuante com precisao simples e dupla

Page 35: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exercício (2)

� Qual número é representado pelo seguinte flutuante de precisão simples

11111111100000…00

10000000100000…00

Page 36: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Adição de Ponto Flutuante

� Consideremos um exemplo decimal de 4 dígitos� 9.999 × 101 + 1.610 × 10–1

� 1. Alinhas os pontos decimais� Deslocar número com expoente menor

� 9.999 × 101 + 0.016 × 101

� 2. Adicionar significante� 9.999 × 101 + 0.016 × 101 = 10.015 × 101

� 3. Normalizar o resultado & checar estouro positivo/negativo� 1.0015 × 102

� 4. Arredondar e normalizar, se necessário� 1.002 × 102

127 ≥ 2 ≥ -126

Page 37: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Adição de Ponto Flutuante

� Agora consideremos um exemplo binário de 4 digitos

� 1.0002 × 2–1 + –1.1102 × 2–2 (0.5 + –0.4375)

� 1. Alinhar pontos binários

� Deslocar número com expoente menor

� 1.0002 × 2–1 + –0.1112 × 2–1

� 2. Adicionar significante

� 1.0002 × 2–1 + –0.1112 × 2–1 = 0.0012 × 2–1

� 3. Normalizar resultado & checar estouro positivo/negativo

� 1.0002 × 2–4, sem estouro positivo/negativo

� 4. Arredondar e renormalizar, se necessário

� 1.0002 × 2–4 (sem mudança)

� 0.0001000 = 8 / 27 = 0.0625

127 ≥ -4 ≥ -126

Page 38: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Hardware para Adicionar PF

� Muito mais complexo do que o somador de inteiros

� Fazê-lo em um ciclo de relógio levaria muito tempo

� Muito mais longo do que operações com números inteiros

� Relógio mais lento penaliza todas as instruções

� Somador de ponto flutuante geralmente leva mais ciclos de relógio

� Pode ser pipelined

Page 39: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Algoritmo do Somador de PF

� Passo 1 e 2 similar ao exemplo do slide anterior

� Adicionar o significante do número com o menor expoente e então somar os dois significantes

� Passo 3 normaliza os resultados, forçando a verificação do estouro

� Precisão simples: o máximo exp. é 127 e o mínimo é -126

� Precisão dupla: o máximo exp. é 1023 e o mínimo é -1022

Page 40: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Hardware para Somador de PF

Passo 1

Passo 2

Passo 3

Passo 4

⇒ subtrai expoentes

⇒ multiplexador

⇒ multiplexador

Page 41: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exercício

� Tente somar os números 0.2510 e 0.12510 em binário usando o algoritmo do somador em ponto flutuante

Page 42: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Multiplicação de Ponto Flutuante

� Consideremos um exemplo decimal de 4 dígitos� 1.110 × 1010 × 9.200 × 10–5

� 1. Adicionar expoentes� Para expoentes negativos, subtrair viés de soma

� Novo expoente = 10 + (–5) = 5

� 2. Multiplicar significantes� 1.110 × 9.200 = 10.212 ⇒ 10.212 × 105

� 3. Normalizar o resultado & checar estouro� 1.0212 × 106

� 4. Arredondar e renomalizar, se necessário� 1.021 × 106

� 5. Determinar o sinal do resultado apartir dos sinais dos operandos� +1.021 × 106

Page 43: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Multiplicação de Ponto Flutuante

� Agora consideremos um exemplo binário de 4 bits� 1.0002 × 2–1 × –1.1102 × 2–2 (0.5 × –0.4375)

� 1. Adicionar expoentes� Novo expoente: –1 + (–2) = –3

� Viés: (–1 + 127) + (–2 + 127) = –3 + 254 – 127 = –3 + 127

� 2. Multiplicar significantes� 1.0002 × 1.1102 = 1.1102 ⇒ 1.1102 × 2–3

� 3. Normalizar o resultado & checar estouro� 1.1102 × 2–3 sem estouro positivo/negativo

� 4. Arredondar e renormalizar, se necessário� 1.1102 × 2–3 (nenhuma mudança)

� 5. Determinar o sinal: +ve × –ve ⇒ –ve� –1.1102 × 2–3

� 0.001110 = 14 / 26 = –0.21875

ER = E - V

Page 44: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Algoritmo do Multiplicador de PF

� Inicia com o cálculo do novo do produto, seguido da multiplicação dos significantes e por uma normalização

� Checa se houve estouro no tamanho do expoente, e então o produto é arredondado

� Se o arredondamento levar a normalização, checa-se novamente o tamanho dos expoentes

Page 45: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Hardware para Aritmética de PF

� Multiplicador de ponto flutuante é de complexidade similar ao somador

� Mas usa um multiplicador para o significante em vez de um somador

� Hardware de ponto flutuante geralmente realiza

� Adição, subtração, multiplicação, divisão, raiz quadrada

� Conversão entre ponto flutuante ↔ inteiro

� Operações geralmente levam vários ciclos de relógio

� Pode ser pipelined

Page 46: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Instruções de PF no MIPS

� Hardware de PF é o coprocessador 1� Processador adjunto que estende o ISA

� Registradores de PF são separados� Precisão simples de 32: $f0, $f1, … $f31� Pareado para decisão dupla: $f0/$f1, $f2/$f3, …

� Versão 2 do MIPs ISA suporta reg’s de PF de 32 × 64-bit

� Instruções de PF operam somente em registradoresde PF� Programas geralmente não realizam operações de

inteiro em PF, ou vice-versa� Mais registradores com impacto mínimo no tamanho

do código

� Instruções de load e store de PF� lwc1, ldc1, swc1, sdc1 w ⇒ word

d ⇒ double word

Page 47: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Instruções de PF no MIPS

� Aritmética de precisão simples� add.s, sub.s, mul.s, div.s

� e.g., add.s $f0, $f1, $f6

� Aritmética de precisão dupla� add.d, sub.d, mul.d, div.d

� e.g., mul.d $f4, $f4, $f6

� Comparação de precisão simples e dupla� c.xx.s, c.xx.d (xx representa eq, lt, le, …)

� Seta ou limpa bit do código de condição do PF� e.g. c.lt.s $f3, $f4

� Desvia num código de condição de PF (true ou false)� bc1t, bc1f

� e.g., bc1t TargetLabel

Page 48: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exemplo de PF: °F para °C

� Código C :float f2c (float fahr) {

return ((5.0/9.0)*(fahr - 32.0));}

� fahr em $f12, resultado em $f0, literais no espaço de memória global

� Código MIPS compilado:f2c: lwc1 $f16, const5($gp)

lwc1 $f18, const9($gp)div.s $f16, $f16, $f18lwc1 $f18, const32($gp)sub.s $f18, $f12, $f18mul.s $f0, $f16, $f18jr $ra

0($gp)

4($gp)

8($gp)

Page 49: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Interpretação de Dados

� Bits não têm significado inerente

� Eles podem representar inteiros com/sem sinal, números de ponto flutuante e instruções

� Interpretação depende das instruções aplicadas

� Representações computacionais de números

� Intervalo e precisão finita

� Necessário levar em conta o tamanho finito das palavras nos programas

The BIG Picture

Page 50: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Associatividade

� Programas paralelos podem intercalar operações em ordens inesperadas

� Suposição da associatividade pode falhar devido as aproximações e a precisão limitada

(x+y)+z x+(y+z)

x -1.50E+38 -1.50E+38

y 1.50E+38

z 1.0 1.0

1.00E+00 0.00E+00

0.00E+00

1.50E+38

� Precisa validar programas paralelos sob diferentes níveis de paralelismo

O número 1.5010x1038 é muito maior do que 1

Page 51: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Divisão e Deslocamento para Direita

� Deslocamento para esquerda por i multiplica um inteiro por 2i

� Deslocamento para direita divide por 2i?

� Somente para inteiros sem sinal

� Para inteiros com sinal

� Deslocamento à direita aritmético: replica o bit de sinal

� e.g., –5 / 4

� 111110112 >> 2 = 111111102 = –2

� O resultado é -210 em vez de -110; próximo, mas não exato

� c.f. 111110112 >>> 2 = 001111102 = +62

Page 52: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Observações Finais (1)

� Aritmética de suporte dos ISAs

� Inteiros com sinal e sem sinal

� Aproximação de ponto flutuante para números reais

� Intervalo e precisão limitada

� Operações podem causar estouro positivo e negativo

� ISA do MIPS

� Instruções do núcleo: 54 mais frequentemente usadas (próximo slide)

� 100% do SPECINT, 97% do SPECFP

� Outras instruções: menos frequente

Page 53: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Observações Finais (2)

Page 54: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exercício 1

� Tente multiplicar os números 0.2510 e 0.12510

em binário usando o algoritmo do multiplicador em ponto flutuante

Page 55: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exercício 2

� Emule o código assembly da conversão de Farenheit para Celsius usando o emulador Mars

� Dica: converta os números para ponto flutuante, antes de inserir nos registradores $f0, $f1, etc

� Para uma entrada de 40 farenheit, o resultado é 0x408e38e4 ou 4.4444447

� Para checar os resultados, use o conversor disponível no site http://www.h-schmidt.net/FloatConverter/

Page 56: 3 aritmetica de computadores.ppt [Modo de Compatibilidade]home.ufam.edu.br/lucascordeiro/asd/slides/3_aritmetica_de_comput... · Adição e subtração Multiplicação e divisão

Exercício 3

� Escreva um programa em assembly do MIPS que capture o valor do raio de uma esfera e exiba o valor do volume e da área da superfície da esfera. Sabe-se que o volume da esfera é dado por (4/3) ×π×r3 e que a área da superfície é dada por 4×π ×r2. Assuma π=3.14

� Dica: transforme o valor de π em uma fração