A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aritmética Aula 03. Computador de von Neumann Unidade lógica e aritmética Diz respeito a: Desempenho (segundos, ciclos, instruções) Abstrações: Arquitetura.

Apresentações semelhantes


Apresentação em tema: "Aritmética Aula 03. Computador de von Neumann Unidade lógica e aritmética Diz respeito a: Desempenho (segundos, ciclos, instruções) Abstrações: Arquitetura."— Transcrição da apresentação:

1 Aritmética Aula 03

2 Computador de von Neumann

3 Unidade lógica e aritmética Diz respeito a: Desempenho (segundos, ciclos, instruções) Abstrações: Arquitetura do Conjunto de Instruções Linguagem Assembly e Linguagem de Máquina Para que serve: Implementar a Arquitetura 32 operation result a b ALU

4 Aritmética MIPS Todas as instruções usa 3 registradores A ordem dos registradores é fixa (primeiro o registrador destino) Exemplo: C code: A = B + C MIPS code: add $s0, $s1, $s2 (associado às variáveis pelo compilador)

5 Instrução slt – set on less than if $s1 < $s2 then $t0 = 1 slt $t0, $s1, $s2 else $t0 = 0 Fluxo de Controle

6 Bits são apenas bits (sem nenhum significado inerente) convenções definem a relação entre bits e números Números Binários (base 2) decimal: n -1 Naturalmente resultam em algumas sofisticações: números são finitos (overflow) números fracionários e reais números negativos p.ex., no MIPS não existe instrução de subtração imediata - addi pode adicionar um número negativo) Como representamos números negativos? i.e., que padrões de bits representam os números? Números

7 Sinal e Magnitude Complemento de 1 Complemento de = = = = = = = = = = = = = = = = = = = = = = = = -1 Comparações: balanceamento, número de zeros, facilidade de operações Qual é o melhor? Por que? Possíveis Representações

8 Números sinalizados de 32 bits: two = 0 ten two = + 1 ten two = + 2 ten two = + 2,147,483,646 ten two = + 2,147,483,647 ten two = – 2,147,483,648 ten two = – 2,147,483,647 ten two = – 2,147,483,646 ten two = – 3 ten two = – 2 ten two = – 1 ten maxint minint MIPS

9 Negar um número em complemento de 2: inverter todos os bits e somar 1 lembrança: negar e inverter são diferentes! Convertendo um número de n bits em números com mais de n bits: Um dado imediato de 16 bits do MIPS é convertido para 32 bits em aritmética Copiar o bit mais significativo (o bit de sinal) para outros bits > > "sign extension" Operações em Complemento de 2

10 Como no curso primário (carry/borrow) Operações em complemento de 2 subtração usando soma de números negativos Overflow (resultado muito grande para um computador de tamanho de palavra finito): P.ex., somando dois números de n-bits não resulta em n-bits note que o bit de overflow é enganoso, 1000 ele não significa um carry de transbordo Adição & Subtração

11 Não ocorre overflow quando se soma um número positivo e um negativo quando os sinais são os mesmos para a subtração Overflow ocorre quando o valor afeta o sinal: quando somando dois positivos resulta num negativo ou, somando dois negativos resulta num positivo ou, subtraindo um negativo de um positivo e dá um negativo ou, subtraindo um positivo de um negativo e dá um positivo Considerar as operações A + B, e A – B Pode ocorrer overflow se B é 0 ? Pode ocorrer overflow se A é 0 ? Detectando Overflow

12 Uma exceção (interrupt) ocorre A instrução salta para endereço predefinido para a rotina de exceção O endereço da instrução interrompida é salvo para possível retorno Nem sempre se requer a detecção do overflow novas instruções MIPS: addu, addiu, subu nota: addiu still sign-extends! nota: sltu, sltiu for unsigned comparisons Efeitos do Overflow

13 Problema: Considerar uma função lógica com 3 entradas: A, B, e C. A saída D é true se pelo menos uma entrada é true A saída E é true se exatamente duas entradas são true A saída F é true somente se todas as três entradas são true Mostrar a tabela verdade para essas três funções. Mostrar as equações Booleanas para as três funções. Mostrar uma implementação consistindo de portas inversoras, AND, e OR. Revisão: Álgebra Booleana & Portas

14 Seja uma ALU para suportar as instruções andi e ori Projetar uma ALU de 1 bit, e replicá-la 32 vezes Possível implementação (soma-de-produtos): b a operation result opabres Uma ALU (arithmetic logic unit)

15 Seleciona uma das entradas para a saída, baseado numa entrada de controle Seja construir a nossa ALU usando um MUX: S C A B 0 1 Revisão: Multiplexador nota: mux de 2-entradas embora tenha 3 entradas!

16 Não é fácil decidir a melhor forma para construir algo Não queremos muitas entradas para uma única porta (fan-in) Não queremos distribuir para muitas portas (fan-out) Para o nosso propósito, facilidade de compreensão é importante Seja a ALU de 1-bit para soma: Como construir uma ALU de 1-bit para soma, AND e OR? Como construir uma ALU de 32-bits? Implementação de ALU de um bit c out = a b + a c in + b c in sum = a xor b xor c in

17 Construindo uma ALU de 32 bits

18 Técnica do complemento de 2: apenas negar b e somar. Como negar? Solução: E sobre subtração (a – b) ?

19 Deve suportar a instrução set-on-less-than (slt) lembrar: slt é uma instrução aritmética produz um 1 se rs < rt, e 0 caso contrário usar subtração: (a - b) < 0 implica a < b Deve suportar o teste para igualdade (beq $t5, $t6, $t7) usar subtração: (a - b) = 0 implica a = b Outras operações da ALU do MIPS

20 Suportando slt Desenhando a idéia?

21

22 Teste de igualdade Nota: zero é 1 quando o resultado é zero!

23 Linhas de controle 000 = and 001 = or 010 = add 110 = subtract 111 = slt Operation Binvert

24 Conclusão Podemos construir uma ALU para suportar o conjunto de instruções MIPS -- usando multiplexador para selecionar a saída desejada realizando uma subtração usando o complemento de 2 replicando uma ALU de 1-bit para produzir uma ALU de 32-bits Pontos importantes sobre o hardware Todas as portas estão sempre trabalhando A velocidade de uma porta é afetada pelo número de entradas da porta A velocidade de um circuito é afetado pelo número de portas em série (no caminho crítico ou nivel mais profundo da lógica) Mudanças inteligentes na organização pode melhorar o desempenho (similar a usar algoritmos melhores em software)

25 Uma ALU de 32-bits é tão rápida quanto uma ALU de 1-bit? Existem mais de uma forma de somar? dois extremos: ripple carry e soma-de-produtos Voce pode ver a propagação do vai-um? Como resolvê-lo? c 1 = a 0 c 0 + b 0 c 0 + a 0 b 0 = (a 0 + b 0 )c 0 + a 0 b 0 c 2 = a 1 c 1 + b 1 c 1 + a 1 b 1 c 3 = a 2 c 2 + b 2 c 2 + a 2 b 2 c 4 = a 3 c 3 + b 3 c 3 + a 3 b 3 Problema: somador ripple carry (vai-um propagado) é lento

26 Uma técnica intermediária entre dois extremos Motivação: Se não sabemos o valor do carry-in, o que fazemos? Quando sempre geramos um carry? g i = a i b i Quando propagamos um carry? p i = a i + b i Resolvemos o ripple calculando o vai-um antecipadamente, usando as equações: c 1 = g 0 + p 0 c 0 c 2 = g 1 + p 1 c 1 c 3 = g 2 + p 2 c 2 c 4 = g 3 + p 3 c 3 Somador de vai-um antecipado - (Carry-lookahead) - CLA

27 usar o princípio de CLA novamente! Construção de somadores grandes

28 Mais complicado que soma Realizado via deslocamento e soma Mais tempo e mais área Vejamos 3 versões baseados no algoritmo 0010 (multiplicando) __x_1011 (multiplicador) Números negativos: converter e multiplicar Multiplicação

29 Multiplicação: Implementação

30 Segunda Versão

31 Versão Final

32 Multiplicação Paralela a5 a4 a3 a2 a1 a0 = A x b5 b4 b3 b2 b1 b0 = B ___________________________________ a5b0 a4b0 a3b0 a2b0 a1b0 a0b0 = W1 a5b1 a4b1 a3b1 a2b1 a1b1 a0b1 = W2 a5b2 a4b2 a3b2 a2b2 a1b2 a0b2 = W3 a5b3 a4b3 a3b3 a2b3 a1b3 a0b3 = W4 a5b4 a4b4 a3b4 a2b4 a1b4 a0b4 = W5 a5b5 a4b5 a3b5 a2b5 a1b5 a0b5 = W6 _________________________________________________________________ P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 = AxB=P

33 CPA – Carry Propagation Adder Faz a adição de 2 números A e B para produzir o resultado A + B. CSA – Carry Save Adder Faz a adição de 3 números A, B e D, produzindo dois resultados: soma S e vai-um C. Matematicamente, tem-se A + B + D = S + C. A = B = D = __________________________ C = S = __________________________ A + B + D = S + C = Somadores

34 Circuito de Multiplicação Paralela

35 Exemplo

36 Ponto Flutuante Necessitamos de uma forma para representar Números com frações, p.ex., Números muito pequenos, p.ex., Números muito grandes, p.ex., Representação: Sinal, expoente, significando: (–1) sinal significando 2 expoente Mais bits para o significando dá mais resolução Mais bits para o expoente aumenta o intervalo (range) Padrão ponto flutuante IEEE 754: Precisão simples: expoente de 8 bits, significando de 23 bits Precisão dupla: expoente de 11 bits, significando de 52 bit

37 Padrão de ponto flutuante IEEE 754 O primeiro bit (leading bit), 1 do significando é implícito Expoente é polarizado para fazer a separação facilmente bias de 127 para precisão simples e 1023 para precisão dupla Resumo: (–1) sinal significando) 2 expoente – bias Exemplo: decimal: -.75 = -3/4 = -3/2 2 binário: -.11 = -1.1 x 2 -1 Ponto flutuante: expoente = 126 = Precisão simples IEEE:

38 Complexidade do Ponto Flutuante Além do overflow tem underflow Precisão pode ser um grande problema IEEE 754 mantem dois extra bits, guard e round Quatro modos de arredondamento positivo dividido por zero resulta em infinito zero dividido por zero resulta em not a number Outras complexidades A Implementação do padrão pode ser complicado Não usar o padrão pode ser mesmo pior

39 Formato s é o bit de sinal s = 0 positivo s=1 negativo exp é usado para obter E frac é usado para obter M Valor representado (-1) s M 2 E Significando M é um valor fracionário no intervalo [1.0,2.0), para números normalizados e [0 e 1) para números denormalizados Exponente E fornece o peso em potência de dois Representação ponto flutuante s expfrac

40 Valores numéricos Normalizados Condição exp 000 … 0 e exp 111 … 1 Expoente codificado como valor polarizado (biased) E = exp – bias exp : valor não sinalizado bias : valor da polarização Precisão Simples: 127 (exp: 1…254, E: -126…127) Precisão dupla: 1023 (exp: 1…2046, E: -1022…1023) Em geral: bias = 2 e-1 - 1, onde e e´ o numero de bits do expoente Significando codificado com bit 1 mais significativo (leading bit) implicito M = 1.xxx … x 2 xxx … x : bits da frac Minimo quando 000 … 0 (M = 1.0) Maximo quando 111 … 1 (M = 2.0 – ) O bit extra (leading bit 1) e´ obtido implicitamente

41 Valores denormalizados Condição exp = 000 … 0 Valor Valor do Expoente E = –Bias + 1 Valor do Significando M = 0.xxx … x 2 xxx … x : bits de frac Casos exp = 000 … 0, frac = 000 … 0 Representa valor 0 Nota-se que existem valores distintos +0 e –0 exp = 000 … 0, frac 000 … 0 Numeros muito próximos de 0.0 Perde precisão à medida que vai diminuindo underflow gradual

42 Valores especiais Condição exp = 111 … 1 Casos exp = 111 … 1, frac = 000 … 0 Representa valor (infinito) Operação que transborda (overflow) Ambos positivo e negativo P. ex., 1.0/0.0 = 1.0/ 0.0 = +, 1.0/ 0.0 = exp = 111 … 1, frac 000 … 0 Not-a-Number (NaN) Nenhum valor numérico pode ser determinado P. ex., sqrt(–1),

43 Resumo da codificação de números reais em ponto flutuante NaN + 0 +Denorm+Normalizado -Denorm -Normalizado +0

44 Representação ilustrativa de 8 bits Representação ponto flutuante de 8 bits O bit de sinal e´ o bit mais significativo. Os seguintes quatro bits são expoente, com bias de 7. Os últimos três bits bits são frac Semelhante a forma geral no formato IEEE normalizado, denormalizado Representação de 0, NaN, infinito s expfrac

45 Valores Relativos ao Expoente expE2 E /64(denorms) / / / / / / n/a(inf, NaN)

46 Intervalo s exp frac EValor /8*1/64 = 1/ /8*1/64 = 2/512 … /8*1/64 = 6/ /8*1/64 = 7/ /8*1/64 = 8/ /8*1/64 = 9/512 … /8*1/2 = 14/ /8*1/2 = 15/ /8*1 = /8*1 = 9/ /8*1 = 10/8 … /8*128 = /8*128 = n/ainf Mais perto de zero maior denorm menor norm perto de 1 abaixo perto de 1 acima maior norm números denormalizados números Normalizados

47 Distribuição de valores Formato de 6-bits tipo IEEE e = 3 bits de expoente f = 2 bits de fracao bias e´ 3 Notar como a distribuição fica mais densa perto de zero.

48 Distribuição de Valores perto de zero Formato de 6-bits, tipo IEEE e = 3 bits de expoente f = 2 bits de fração Bias igual a 3

49 Numeros interessantes Descrição expfrac valor numérico Zero00…0000…000.0 menor Pos. Denorm.00…0000…012 – {23,52} X 2 – {126,1022} Single 1.4 X 10 –45 Double 4.9 X 10 –324 maior Denorm.00…0011…11(1.0 – ) X 2 – {126,1022} Single 1.18 X 10 –38 Double 2.2 X 10 –308 menor Pos. Norm.00…0100…001.0 X 2 – {126,1022} Um01…1100…001.0 maior Normalized11…1011…11(2.0 – ) X 2 {127,1023} Single 3.4 X Double 1.8 X

50 Operações em ponto flutuante Conceitualmente Primeiro computar o resultado exato Fazê-lo enquadrar na precisão desejada transborda se o expoente for muito grande arredonda para caber no frac Modos de arredondamento –1.50 Zero1112–1 Round down (- )1112–2 Round up (+ ) 2223–1 Nearest Even (default)1222–2 Nota: 1. Round down: resultado e´perto mas não maior que o resultado verdadeiro. 2. Round up: resultado e´perto mas não menor do que o resultado verdadeiro.

51 Multiplicação em FP Operandos ( –1) s1 M1 2 E1 * ( –1) s2 M2 2 E2 Resultado exato ( –1) s M 2 E Sinal s: s1 xor s2 Significando M: M1 * M2 Expoente E: E1 + E2 Representação final se M 2, deslocar à direita M, incrementar E se E fora do intervalo, overflow Arredonda M para caber em frac

52 Adição FP Operandos ( –1) s1 M1 2 E1 ( –1) s2 M2 2 E2 Assumir E1 > E2 Resultado exato ( –1) s M 2 E Sinal s, significando M: Resultado de alinhamento e adição Expoente E: E1 Representação final Se M 2, deslocar à direita M, incrementa E Se M < 1, deslocar à esquerda M de k posições, decrementar E de k Overflow se E fora do intervalo arredonda M para caber em frac (– 1) s1 M1 (– 1) s2 M2 E1–E2 + (– 1) s M

53 Ariane 5 Explodiu 37 segundos após decolagem Por que? Foi computada a velocidade horizontal como número em ponto flutuante Convertido para inteiro de 16-bits Funcionou bem para Ariane 4 Ocorreu Overflow para Ariane 5 Foi usado o mesmo software


Carregar ppt "Aritmética Aula 03. Computador de von Neumann Unidade lógica e aritmética Diz respeito a: Desempenho (segundos, ciclos, instruções) Abstrações: Arquitetura."

Apresentações semelhantes


Anúncios Google