• Nenhum resultado encontrado

Organização e Arquitetura de computadores

N/A
N/A
Protected

Academic year: 2021

Share "Organização e Arquitetura de computadores"

Copied!
7
0
0

Texto

(1)

Organiza

Organiza

ç

ç

ão e Arquitetura

ão e Arquitetura

de computadores

de computadores

Prof. Dr. Luciano José Senger

Aritmética computacional

Representa

Representaç

ção de valores

ão de valores

• Os valores expressos em números inteiros e fracionários

necessitam ser representados de forma eficiente em

sistemas computacionais, através de palavras binárias

• No hardware, os números são finitos, pois devem ser

mapeados em palavras de tamanho fixo

• Além disso, o hardware necessita trabalhar com número

com sinal (negativos e positivos)

– Solução: usar 1 bit (sinal magnitude).

• Primeira tentativa: o bit mais significativos (MSB) é usado

para sinal.

– Problema: duas representações para o zero – Solução mais usada: complemento a 2

– Notação em excesso (números em ponto flutuante)

• Faixa de valores em complemento de 2 para 3 bits

• Interface Hardware/Software

– Endereços: sempre positivos

– Em C: “int” e “unsigned int”

Representa

Representaç

ção de valores

ão de valores

0

-4

2

-2

1

3

-3

-1

111

101

011

001

010

110

100

000

Representa

Representaç

ção de valores

ão de valores

• Como o computador trabalha com bits, todos os

valores precisam ser convertidos para uma

representação interna que seja eficiente na

economia dos bits e na realização de operações

sobre os valores

• Questão: Que tipo de variável que pode conter

1.000.000.000 (dec) ocupa mais espaço na

memória?

– int em C

– String em C

– String em java (que usa Unicode)

Adi

Adiç

ção

ão

• Somador ripple carry (propagação de vai-um)

– O processo de somar as entradas de cada bit é rápido

– O problema é que o a propagação do excedente (carry)

leva um tempo longo para atravessar o circuito:

números maiores levam mais tempo para serem

somados.

Adi

Adiç

ção de alto desempenho

ão de alto desempenho

• Carry lookahead adder (somador com previsão de

excedente)

(2)

Adi

Adiç

ção de alto desempenho

ão de alto desempenho

• Carry lookahead adder (somador com previsão de

excedente)

Adi

Adiç

ção de alto desempenho

ão de alto desempenho

• Carry lookahead adder (somador com previsão de

excedente)

Adi

Adiç

ção de alto desempenho

ão de alto desempenho

• Hardware para adição e subtração

Overflow

Overflow

• Detecção de overflow

• Ocorre sempre que o resultado de uma operação não pode ser representado no hardware disponível.

<0 <0 >=0 A-B >=0 >=0 <0 A-B >=0 <0 <0 A+B <0 >=0 >= 0 A+B Resultado Operando B Operando A Operação

• Se um número for negativo, e o outro positivo, não ocorrerá overflow.

Overflow

Overflow

• Interface hardware/software

– O MIPS detecta um overflow como uma exceção,

também chamada de interrupção em muitos

computadores

• Uma exceção ou interrupção corresponde basicamente a uma chamada de procedimento não planejada

• O endereço da instrução que gerou o overflow é salvo em registrador especial, e o computador desvia a execução para um endereço pré-definido, para invocar a rotina apropriada para essa exceção

• O MIPS inclui um registrador, chamado de contador de programa de exceção (EPC) para conter o endereço da instrução que causou a exceção. A instrução move from system control (mfc0) é usada para copiar o EPC para um registrador de uso geral, de modo que o software do MIPS tem a opção de retornar à instrução problemática por meio de uma instrução jump register

Adi

Adiç

ção

ão

• Interface hardware/software

– Na ocorrência de overflow a máquina precisa decidir

como tratá-lo.

– Linguagem C: não toma conhecimento do overflows,

assim o overflow deve ser tratado pelo programador.

– Outras linguagens, como ADA e FORTRAN, tratam o

overflow

– Na arquitetura IA-32, o registrador de flags notifica se o

resultado de uma operação aritmética gerou ou não um

overflow; cabe ao software utilizar essa informação para

o tratamento do overflow

(3)

Multiplica

Multiplicaç

ção

ão

• Multiplicação

– A multiplicação, ao contrário da soma e da subtração, é

uma operação complexa

– Realizada através da soma dos produtos parciais para

cada dígito do multiplicador

– A soma deve ser realizada observando que cada

produto parcial tem uma posição (deslocamento) na

soma que deve ser respeitada

– A multiplicação de números inteiros binários de n bits

resulta em um produto com até 2n bits de tamanho

Multiplica

Multiplicaç

ção

ão

1011 Multiplicando (11 decimal)

x 1101 Multiplicador (13 decimal)

1011 produtos parciais

0000 Nota: se o bit do multiplicador

1011

for igual a 1, copia-se o

1011

multiplicando, senão 0

10001111 produto (143 decimal)

Nota: o resultado é expresso através de um

número que tem o dobro do tamanho dos

termos (p.e. se os termos têm 4 bits, o

resultado deve ser expresso em 8 bits)

Multiplica

Multiplicaç

ção

ão

• Hardware de multiplicação

Multiplica

Multiplicaç

ção

ão

• Exemplo: Multiplicar 1011 por 1101

Multiplica

Multiplicaç

ção

ão

• Diagrama de fluxo de dados para a multiplicação

Multiplica

Multiplicaç

ção mais r

ão mais rá

ápida

pida

• Replicação de somadores

– Não importa se o multiplicando deve ser somado ou não, isso é conhecido no início da multiplicação analisando cada um dos 32 bits do multiplicador – Multiplicações mais rápidas são

possíveis basicamente fornecendo um somador de 32 bits para cada bit do multiplicador: uma entrada é o AND do multiplicando pelo bit do multiplicador e a outra é a saída do somador anterior

(4)

Multiplica

Multiplicaç

ção mais r

ão mais rá

ápida

pida

• Replicação de somadores

Multiplica

Multiplicaç

ção

ão

• Números negativos

– a técnica/hardware anterior não funciona para números

negativos, expressos em complemento de 2

– Primeira solução

• Converter o número negativo para um número positivo • Multiplicar como descrito previamente

• Se os sinais dos termos iniciais forem diferentes, efetuar a representação do resultado através de um número negativo

– Segunda solução

• Algoritmo de Booth

Multiplica

Multiplicaç

ção

ão

• Diagrama de fluxo de dados para a multiplicação (Booth)

Multiplica

Multiplicaç

ção

ão

• Algoritmo de Booth

– O multiplicador e o multiplicando são armazenados nos registradores Q e M

– Existe um registrador de 1 bit, posicionado logicamente à direita do bit menos significativo (Q0) do registrador Q e designado como Q-1

– A e Q-1são inicializados com zero

– A lógica de controle examina os bits do multiplicador, um de cada vez – Quando o bit é examinado, observa-se o bit a sua direita: se esses dois bits

forem iguais (1-1 ou 0-0), então todos os bits dos registradores A, Q e Q-1

são deslocados 1 bit para a direita; se eles forem diferentes, o

multiplicando será somado ou subtraído do registrador A, dependendo se os dois bits são 0-1 ou 1-0, respectivamente

– Após a operação de adição ou subtração, ocorre o deslocamento de um bit para a direita, que é feito de tal maneira que o bit mais a esquerda de A, denominado de An-1, é deslocado para An-2, mas também permanece em

An-1

– Tal forma de deslocamento é necessária para preservar o sinal do número armazenado em A e Q; esses deslocamento é conhecido como

deslocamento aritmético, porque preserva o bit de sinal

Multiplica

Multiplicaç

ção

ão

• Exemplo: Multiplicar 0111 por 0011

Multiplica

Multiplicaç

ção

ão

(5)

Multiplica

Multiplicaç

ção

ão

Divisão

Divisão

• Algoritmo de divisão

– Mais complexo que o algoritmo de multiplicação

001111

1011

00001101

10010011

1011

001110

1011

1011

100

Quociente

Dividendo

Resto

Resto

Divisor

Divisão

Divisão

início Teste do Resto 2a. Desloque o Quociente 1 bit à esquerda

Q0 = 1

3. Desloque o Divisor 1 bit à direita

33 repetições? Fim Resto < 0 Resto>=0 não sim

1. Resto = Resto - Divisor

2b. Resto = Resto + Divisor Desloque o Quociente um 1 bit à esquerda

Q0 = 0

Ponto flutuante

Ponto flutuante

• Números reais não inteiros seguem a

representação em ponto flutuante

• Na notação em ponto flutuante, os números

seguem uma notação científica normalizada:

• Ocorrência de overflow e underflow

• Precisão simples (float)

s

expoente

mantissa

32 bits

1

8

23

E S

F

N

=

(

1

)

×

×

2

Ponto flutuante

Ponto flutuante

• Formato duplo (double)

– Esses formatos estão de acordo com o padrão IEEE 754, encontrado em praticamente todos os computadores desde 1980

– Para colocar mais bits no significando, o IEEE 754 deixa explícito o bit 1 inicial nos números binários.

– Logo, o número tem 24 bits de largura na precisão simples e 53 bits na precisão dupla

– O valor de expoente 0 (reservado) indica o número zero

s

expoente

mantissa

64 bits

1

11

52

E S

Mantissa

N

=

(

1

)

(

1

+

)

×

2

Ponto flutuante

Ponto flutuante

• Codificação do padrão IEEE 754 para os números em ponto flutuante – Para facilitar a comparação entre valores, o bit de expoente é representado

no início da palavra; além disso, a representação em excesso de 127 para a precisão simples:

– -1: -1+127 = 126 – 1: 1+127 = 128

– O bias para o expoente é igual a 1023

not a number (NaN) nonzero 2047 nonzero 255 ±infinity 0 ±2047 0 ±255

±floating point number anything ±1-2046 anything ±1-254 ±denormalized number nonzero 0 nonzero 0 zero (0) 0 0 0 0 F (52) E (11) F (23) E (8) Objeto representado Precisão dupla Precisão simples ) (

2

)

1

(

)

1

(

S

Mantissa

E Peso

N

×

+

×

=

(6)

Ponto Flutuante

Ponto Flutuante

NaN NaN

+∞

-∞

-0 +0+Denorm +Normalized -Denorm -Normalized

• Faixas de representação

• Description exp frac Numeric Value

• Zero 00…00 00…00 0.0

• Smallest Pos. Denorm. 00…00 00…01 2– {23,52}X 2– {126,1022} – Single ≈ 1.4 X 10–45

– Double ≈≈≈≈4.9 X 10–324

• Largest Denormalized 00…00 11…11 (1.0 – εεεε) X 2– {126,1022} – Single ≈ 1.18 X 10–38

– Double ≈≈≈≈2.2 X 10–308

• Smallest Pos. Normalized 00…01 00…00 1.0 X 2– {126,1022} – Just larger than largest denormalized

• One 01…11 00…00 1.0 • Largest Normalized 11…10 11…11 (2.0 – εεεε) X 2{127,1023} – Single ≈ 3.4 X 1038 – Double ≈≈≈≈1.8 X 10308

Ponto Flutuante

Ponto Flutuante

exp E value 0 0000 000 n/a 0 0 0000 001 -6 1/512 0 0000 010 -6 2/512 0 0000 110 -6 6/512 0 0000 111 -6 7/512 0 0001 000 -6 8/512 0 0001 001 -6 9/512 0 0110 110 -1 28/32 0 0110 111 -1 30/32 0 0111 000 0 1 0 0111 001 0 36/32 0 0111 010 0 40/32 0 1110 110 7 224 0 1110 111 7 240 0 1111 000 n/a inf closest to zero largest denorm smallest norm closest to 1 below closest to 1 above largest norm Denormalized numbers Normalized numbers

Padrão IEEE 754

Padrão IEEE 754

Exemplos:

1. Representar o número 0,7510em ponto flutuante e precisão

simples.

2. Representar o número -0,7510em ponto flutuante e dupla

precisão.

Convertendo para binário:

– 0,75 x 2 = 1,5 → 1 – 0,5 x 2 = 1,0 → 1 – -0,7510 = -0,112= -0,11 x 20= -1,1 x 2-1

Em precisão simples:

Resultado:

) (

2

)

1

(

)

1

(

S EPeso

Mantissa

N

×

+

×

=

Ponto Flutuante

Ponto Flutuante

• Converter a palavra abaixo em ponto flutuante

para número:

• Resposta

Adi

Adiç

ção e Multiplica

ão e Multiplicaç

ção em Ponto Flutuante

ão em Ponto Flutuante

Ponto Flutuante

Ponto Flutuante

• Na arquitetura MIPS:

– Adição simples e dupla: add.s e add.d – Subtração simples e dupla: sub.s e sub.d – Multiplicação simples e dupla: mult.s e mult.d

• Aritmética de precisão

– Ao contrário dos números inteiros, os números em ponto flutuante são aproximações dos valores reais

– O arredondamento exige bits adicionais

– O IEEE 754 mantém 2 bits extras à direita para adições intermediárias, chamados guarda e arredondamento – Exemplo: soma 2,56 x 10^0 + 2,34 x 10^2, supondo 3 dígitos

decimais significativos • 2,3400 + 0,0256 = 2,3656 • Arredondamento: 2,37

• Sem dígitos de guarda e arredondamento: • 2,34 + 0,02 = 2,36

(7)

Vida Real: ponto flutuante do IA

Vida Real: ponto flutuante do IA-

-32

32

• IA-32

– Início: de ponto flutuante 1987

– Arquitetura de pilha: operandos são colocados na pilha

e removidos para o processamento

– 80 bits são reservados para números em ponto flutuante

(formato estendido); não utilizado pelas linguagens de

programação tradicionais

s exp frac 0 63 64 78 79

Considera

Consideraç

ções finais

ões finais

• Considerações

• Replicação de somadores: melhor desempenho

• Algoritmo de Booth

– Trata números negativos diretamente

– Blocos de 1s e 0s são ignorados, sendo feita, em média, apenas uma adição ou subtração por bloco

• Multiplicação e divisão

– Menos freqüentes

• Ponto flutuante

– Aritmética complexa – Registradores específicos

• Falácia:

– a adição em ponto flutuante é associativa; ou seja, x+(y+z)=(x+y)+z.

Referências

Referências

• Patterson e Hennessy, cap. 3

• Stalings, cap. 8

• Murdocca, cap. 3

• Wikipedia:

http://en.wikipedia.org/wiki/IEEE_floating-point_standard

Referências

Documentos relacionados

As percepções do papel efetivo da liderança da nova escola de Relações Públicas da Comunicação Integrada são tratadas no texto mostrando a importância de cargos de

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Os sub-gêneros, nesta pesquisa, são todas as formas derivadas de um gênero. Como por exemplo, o drama musicado regional, ou a revista circense. A variedade de gêneros e

Também mostramos que a acusação de crimes contra a humanidade foi, ao nosso entendimento, a grande motivação para que Speer escrevesse sobre sua trajetória, em

Destarte, analisando o conceito de direito à intimidade, constata-se claramente que os dados genéticos, como informações diretamente relacionadas ao ser humano, são

Não apresentarei o argumento neste trabalho, pois importa dizer sobre a solução ter vindo, então, ao deixar de lado as recomendações de escrita de roteiro que eu seguira

Na análise do jurídico e literário, na seara da propriedade intelectual, utilizando como objeto de estudo as obras de Machado de Assis, pode-se perceber a presença de