• Nenhum resultado encontrado

Capítulo 4. Aritmética. Números

N/A
N/A
Protected

Academic year: 2022

Share "Capítulo 4. Aritmética. Números"

Copied!
11
0
0

Texto

(1)

1

?1 9 9 8 Morgan Kaufmann Publishers

Capítulo 4

This material may not be copied or distributed for commercial pu rposes without express written permission of the copyright holder.

Permission is granted to copy and distribute this material for e ducational purposes only, provided that the complete bibliographic citation and following credit line is included: "Copyright 1998 Morgan Kaufmann Publishers." Permission is granted to alter and distribute this material provided that the following credit line is included: "Adapted from Computer Organization and Design: The Hardware/Software Interface, 2nd EditionDavid A. Patterson, John L. HennessyMorgan Kaufmann, 2nd ed., 1997, ISBN 1558604286 Copyright 1998 Morgan Kaufmann Publishers."

Lecture slides created by Michael Wahl in English

Tradução: Christian Lyra Gomes Revisão: Wagner M. N. Zola

2

?1 9 9 8 Morgan Kaufmann Publishers

Aritmética

Por onde já passamos:

Desempenho (segundos, ciclos, instruções)Abstrações:

Arquitetura de Conjunto de Instruções Linguagem Assemblye Linguagem de Máquina

O que está a frente:

Implementar a Arquitetura

32

32

32 operação

resultado a

b ULA

Bits são apenas bits (não tem um significado inerente)

— convenções definem a relação entre bits e números

Números binários (base 2)

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001...

decimal: 0...2n-1

Claro que isso fica mais complicado:

números são finitos (overflow) frações e números reais números negativos

ex., não existe instrução subi no MIPS; addi pode adicionar um número negativo

Como nós podemos representar números negativos?

Qual padrão de bits irá representar que número?

Números

(2)

4

?1 9 9 8 Morgan Kaufmann Publishers

Sinal de Magnitude: Complemento de 1 Complemento de 2 000 = +0 000 = +0 000 = +0 001 = +1 001 = +1 001 = +1 010 = +2 010 = +2 010 = +2 011 = +3 011 = +3 011 = +3 100 = -0 100 = -3 100 = -4 101 = -1 101 = -2 101 = -3 110 = -2 110 = -1 110 = -2 111 = -3 111 = -0 111 = -1

Pontos: balanço, número de zeros, facilidade de operações

Qual deles é melhor? Por que?

Representações possíveis

5

?1 9 9 8 Morgan Kaufmann Publishers

Números de 32 bits com sinal:

0000 0000 0000 0000 0000 0000 0000 0000 two= 0

ten 0000 0000 0000 0000 0000 0000 0000 0001

two= + 1 ten 0000 0000 0000 0000 0000 0000 0000 0010

two= + 2 ... ten

0111 1111 1111 1111 1111 1111 1111 1110

two= + 2,147,483,646 ten 0111 1111 1111 1111 1111 1111 1111 1111

two= + 2,147,483,647 ten 1000 0000 0000 0000 0000 0000 0000 0000

two= –2,147,483,648 ten 1000 0000 0000 0000 0000 0000 0000 0001

two= –2,147,483,647 ten 1000 0000 0000 0000 0000 0000 0000 0010

two= –2,147,483,646 ten ...

1111 1111 1111 1111 1111 1111 1111 1101 two= –3

ten 1111 1111 1111 1111 1111 1111 1111 1110

two= –2 ten 1111 1111 1111 1111 1111 1111 1111 1111

two= –1 ten

maxint minint

MIPS

Negar um número em complemento de dois: inverter todos e bits e adicionar 1

lembre-se: “negar” e “inverter” são bem diferentes!

Convertendo números com n bits em números com mais de n bits:

imediatos de 16 bits do MIPS 16 bit são convertidos em 32 bits para as operações aritméticas

copie o bit mais significante (o bit do sinal) nos outros bits 0010 -> 0000 0010

1010 -> 1111 1010”extensão de sinal" (lbu vs. lb)

Operações com Complemento de Dois

(3)

7

?1 9 9 8 Morgan Kaufmann Publishers

Como na escola primária (vai/empresta 1s)

0111 0111 0110

+ 0110 - 0110 - 0101

Operações em complemento de dois fácilsubtração usando adição de números negativos

0111 + 1010

Overflow (resultado muito grande para uma palavra de computador finita):

ex., adicionando 2 números de n bits não resulta em outro número de n bits

0111

+ 0001 note que o termo overflow pode ser enganoso, 1000 ele não significa um carry (vai-um) “ overflowed”

Adição & Subtração

8

?1 9 9 8 Morgan Kaufmann Publishers

Não há overflow quando se adiciona um número positivo e um negativo

Não há overflow quando os sinais são iguais na subtração

Overflow ocorre quando o valor afeta o sinal:

overflow quando adicionando dois positivos resulta num negativo

ou, adicionando dois negativos resulta num positivoou, subtraindo um negativo de um positivo resulta num negativoou, subtraindo um positivo de um negativo e o resultado é

positivo

Considere as operações A + B, and A – BPode ocorrer overflow se B for 0 ?Pode ocorrer overflow se A for 0 ?

Detectando Overflow

Uma exceção ocorre (interrupção)

controle salta para um endereço de exceção pré-definidoEndereço onde foi interrompido é armazenado para uma possível

reinicio

Detalhes baseados no sistema de software/linguagemexemplo: controle de vôo vs lição de casa

Nem sempre se quer detectar overflow

— novas instruções MIPS:addu, addiu, subu nota: addiucontinua estendendo o sinal!

nota:sltu,sltiupara comparações sem sinal

Efeitos do Overflow

(4)

10

?1 9 9 8 Morgan Kaufmann Publishers

Problema: Considere uma função lógica com 3 entradas: A, B, e C.

Saída D é verdadeira se pelo menos uma entrada for verdadeira Saída E é verdadeira se exatamente duas entradas forem verdadeiras

Saída F é verdadeira somente se as 3 entradas forem verdadeiras

Mostre a tabela verdade para essas 3 funções.

Mostre as equações Booleanas para essas 3 funções.

Mostre uma implementação usando apenas inversores, portas E e portas OU.

Revisão: Álgebra Booleana & portas lógicas (Gates)

11

?1 9 9 8 Morgan Kaufmann Publishers

Vamos construir uma ULA que suporte as instruçõesandie orinós iremos construir apenas uma ULA de 1 bit e usar 32 delas

Possível implementação (soma-dos-produtos):

b a

operação

resultado

op a b res

Uma ULA (Unidade Lógica Aritmética)

Seleciona uma das entras para ser a saída, baseado numa entrada de controle

Vamos construir nossa ULA usando um MUX:

S

A C B

0 1

Revisão: O Multiplexador

nota: Nós chamamos isso de um mux de 2 entradas mesmo que ele tenha 3 entradas!

(5)

13

?1 9 9 8 Morgan Kaufmann Publishers

Não é fácil decidir qual é a melhor maneira de se construir alguma coisa

Não se deseja muitas entradas para um única portaNão se deseja ter que atravessar muitos portas

para nossos propósitos, facilidade de compreensão é importante

Vamos olhar a ULA de 1 bit para adição:

Como nós podemos construir uma ULA de 1 bit para adição, E e OU?

Como nós podemos construir uma ULA de 32 bits?

Diferente Implementações

cout= a b + a cin+ b cin sum = a xor b xor cin

Su m Ca rryIn

Ca rryO ut a

b

14

?1 9 9 8 Morgan Kaufmann Publishers

Construindo uma ULA de 32 bits

b 0

2 R es ul t Op era ti on

a

1 Carr yIn

Ca rryO ut

Re s ul t3 1 a 3 1

b 3 1

Re s ul t0 Ca rry In

a 0 b 0

Re s ul t1 a 1

b 1

Re s ul t2 a 2

b 2

Op e rati o n

AL U0 Ca rry In

Ca rry Ou t

AL U1 Ca rry In

Ca rry Ou t

AL U2 Ca rry In

Ca rry Ou t

AL U3 1 Ca rry In

Abordagem Complemento de 2: apenas negamos b e adicionamos.

Como nós negamos?

Uma solução muito inteligente:

E a subtração (a – b) ?

0

2 Re su l t Op e ra tio n

a

1 Ca rryIn

Ca rry Ou t 0 1 Bi n ve rt

b

(6)

16

?1 9 9 8 Morgan Kaufmann Publishers

Precisa suportar a instrução atribui-se-menor -que (set-o n-less-than - slt)

lembre-se: slt é uma instrução aritméticaproduz 1 se rs < rt, e 0 caso contráriousa subtração: (a-b) < 0 implica que a < b

Precisa suporta o teste de igualdade (beq $t5, $t6, $t7)usa subtração: (a-b) = 0 implica que a = b

Ajustando a ULA ao MIPS

Suportando slt

Podemos descobrir a idéia?

0

3 Resul t Operation

a

1 CarryIn

Carry Out 0 1 B inv ert

b 2

Les s

0

3 Res ult Oper ati on

a

1 Car ryIn

0 1 Bi nvert

b 2

Les s

Set

Ov erflow

detec tion Overfl ow

a.

b.

Se t a3 1

0

ALU 0 Re su lt0

C arry In

a0

Re su lt1 a1

0

Re su lt2 a2

0

O pe ra tio n

b3 1 b0

b1

b2

Re su lt3 1 Ov erfl o w Bi nv e rt

C arry In Le s s C arry In

C arry Ou t

ALU 1 Le s s C arry In

C arry Ou t

ALU 2 Le s s C arry In

C arry Ou t

ALU 31 L es s C arry In

(7)

19

?1 9 9 8 Morgan Kaufmann Publishers

Teste de igualdade

Observe as linhas de controle:

000 = and 001 = or 010 = add 110 = subtract 111 = slt

•Nota: zero retorna 1 quando o resultado é zero!

Se t a 31

0 Re su l t0 a0

Re su l t1 a1 0

Re su l t2 a2 0

Op era ti o n

b 31 b0

b1

b2

Re s ul t3 1

O ve rflo w Bn eg a te

Ze ro AL U0

L es s Ca rryIn

Ca rryO ut

AL U1 L es s Ca rryIn

Ca rryO ut

AL U2 L es s Ca rryIn

Ca rryO ut

AL U3 1 L es s Ca rryIn

20

?1 9 9 8 Morgan Kaufmann Publishers

Conclusão

Nós podemos construir uma ULA para suportar o conjunto de instru ções do MIPS

idéia chave: usar o multiplexador para selecionar a saída que nós queremosnós podemos executar a subtração de maneira eficiente com o comp lemento

de 2

nós podemos replicar a ULA de 1 bit para produzir a ULA de 32 bits

Pontos importantes sobre o hardware

todas as portas lógicas estão sempre funcionandoa velocidade de uma porta é afetada pelo número de entradasa velocidade de um circuito é afetada pelo número de portas em série

(no “caminho crítico” ou o “nível de lógica mais profundo”)

Nosso foco primário: compreensão, no entanto,

Mudanças inteligentes na organização podem melhorar o desempenho (similar a usar melhores algoritmos no software)

Nós iremos olhar dois exemplos de adição e multiplicação

Uma ULA de 32 bits é rápida como uma ULA de 1 bit?

Existe mais de uma maneira de se fazer a adição?

dois extremos: propagação de vai-1 e soma de produtos

Você pode ver a propagação? Como você pode se livrar dela?

c1= b0c0+ a0c0 + a0b0 c2= b1c1+ a1c1 + a1b1c2= c3= b2c2+ a2c2 + a2b2 c3= c4= b3c3+ a3c3 + a3b3 c4=

Não é praticável! Por que?

*N.T.: ripple carry adder

Problema: somador com propagação de vai-1* é lento

(8)

22

?1 9 9 8 Morgan Kaufmann Publishers

Uma aproximação no meio dos nossos dois extremos

Motivação:

Se nós não sabemos o valor do vem-1, o que podemos fazer?

Quando nós podemos sempre gerar o vai-1? gi= aibi Quando nós podemos propagar o vai-1? pi= ai + bi

Nós nos livramos da propagação?

c1= g0+ p0c0 c2= g1+ p1c1 c2= c3= g2+ p2c2 c3= c4= g3+ p3c3 c4=

Praticável! Por que?

*N.T.: Carry-lookahead adder

Somador com antecipação do vai-1*

23

?1 9 9 8 Morgan Kaufmann Publishers

Não podemos construir somadores com 16 bits desse jeito... (muito grande)

Podemos usar o somadores com propagação de vai -1 com somadores com antecipação de vai-1 de 4 bits

Melhor: use o princípio AV-1 de novo!

Use o princípio para construir somadores maiores

Ca rry In

Re su l t0--3 AL U0

Ca rry In

Re su l t4--7 AL U1

Ca rry In

Re su l t8--1 1 AL U2

Ca rry In

Ca rryO u t Re su l t12 --1 5 AL U3

Ca rry In C1

C2

C3

C4 P0 G0

P1 G1

P2 G2

P3 G3

p i g i

p i + 1 g i + 1 c i + 1

c i + 2

c i + 3

c i + 4 p i + 2 g i + 2

p i + 3 g i + 3 a 0 b 0 a 1 b 1 a 2 b 2 a 3 b 3

a 4 b 4 a 5 b 5 a 6 b 6 a 7 b 7

a 8 b 8 a 9 b 9 a 10 b 10 a 11 b 11

a 12 b 12 a 13 b 13 a 14 b 14 a 15 b 15

Ca rry -lo o ka h ea d u ni t

Mais complicado do que a adição

Conseguida através de deslocamento e adição

Mais tempo e mais área

Vamos olhar 3 versões baseadas no algoritmo da escola primária 0010 (multiplicando)

__x_1011 (multiplicador)

Números negativos: converter e multiplicar

existem técnicas melhores, mas nós não veremos elas

Multiplicação

(9)

25

?1 9 9 8 Morgan Kaufmann Publishers

Multiplicação: Implementação

Do ne 1 . Tes t M ul tip l i er0

1 a .A dd mu l tip l i ca n d to pro d u ct a nd p la c e th e res u lt i n Pro d u ct re gi s ter

2 .Sh i ft th e Mu l tip l ic a nd re gi s ter l e ft1 b it

3 . Shi ft th e Mu l tip l ie r re g is ter ri g h t1 b it

3 2n d rep e titi o n?

Sta rt

Mu l tip l ie r0 =0 Mu l tip l ie r0 =1

No : < 3 2 re p eti ti on s

Ye s: 32 re p eti tio n s 6 4 -bi t AL U

C on tro l te st Mu l tip l ie r

Sh ift ri gh t

Pro d uc t Wri te M u lti p li ca n d

Sh ift l eft 6 4 b i ts

64 b i ts

3 2 b i ts

26

?1 9 9 8 Morgan Kaufmann Publishers

Segunda Versão

Mu l tip l ie r Sh ift ri gh t

Wri te 3 2 b i ts

6 4 bi ts

3 2 b i ts

Sh ift ri gh t M ul ti pl i ca n d

3 2 -b it AL U

Pro d uc t C on tro l te st

D on e 1 . Te s t Mu l tip l ie r0

1a . Ad d m u lti p li c an d to th e l e ft h a lf o f th e p ro du c t a n d p l a ce the re su l t in th e l e ft h a lf o f th e Pro du c t re g is te r

2 . Sh i ft th e Prod u c t re g is te r ri g h t 1 b it

3 . Sh i ft th e Mu l tip l ie r re gi s te r ri gh t 1 bi t

32 n d re p e titi on ? Start

M u lti p li e r0 = 0 M u lti p li e r0 = 1

No : < 3 2 re pe ti tio ns

Ye s : 3 2 rep e titi o ns

Versão Final

C on tro l te s t Wri te 3 2 b i ts

6 4 bi ts Sh ift ri gh t Pro d uc t M ul ti pl i ca n d

3 2 -b it AL U

D on e 1 . Te s t Pro du c t0

1a . Ad d m u lti p li c an d to th e l e ft h a lf o f th e p ro du c t a n d p l a ce the re su l t in th e l e ft h a lf o f th e Pro du c t re g is te r

2 . Sh i ft th e Prod u c t re g is te r ri g h t 1 b it

32 n d re p e titi on ? Start

Pro d u ct0 = 0 Pro du c t0 = 1

No : < 3 2 re pe ti tio ns

Ye s : 3 2 rep e titi o ns

(10)

28

?1 9 9 8 Morgan Kaufmann Publishers

Ponto Flutuante (uma breve olhada)

Nós precisamos uma meio para representarnúmeros com frações, ex., 3.1416números muito pequenos, ex., .000000001números muito grandes, ex., 3.15576 ?109

Representação:

sinal, expoente, significand : (–1)sinal???significand???2expoente mais bits para o significand dá mais precisão

mais bits no expoente aumenta o intervalo

Padrão de ponto flutuante IEEE 754:

precisão simples: 8 bits expoente, 23 bit significandprecisão dupla: 11 bit expoente, 52 bit significand

29

?1 9 9 8 Morgan Kaufmann Publishers

Padrão de Ponto Flutuante IEEE 754

O bit “1” inicial do signifcand é implícito

Expoente é “ajustado” para facilitar a ordenaçãotodos 0s é o menor expoente e todos os 1s é o maiorajuste de 127 para precisão simples e de 1023 para precisão

dupla

sumário: (–1)sinal?????significand) ???2expoente – ajuste

Exemplo:

decimal: -.75 = -3/4 = -3/22binário: -.11 = -1.1 x 2-1

ponto flutuante: expoente = 126 = 01111110

IEEE precisão simples: 10111111010000000000000000000000

Complexidade s do Ponto Flutuante

As operações são um tanto mais complicadas (veja o texto)

Além do overflow podemos ter também o “underflow”

Precisão pode ser um grande problema

IEEE 754 guarda dois bits extras, guarda e “redondo” (round )quatro modos de arredondamento

positivos divididos por zero resultam em “infinito”

zero dividido por zero resulta em “não é um número”

outras complexidades

Implementar o padrão pode ser trabalhoso

Não usar o padrão pode ser ainda pior

veja o texto para a descrição do bug do 80x86 e do Pentium !

(11)

31

?1 9 9 8 Morgan Kaufmann Publishers

Sumário do Capítulo 4

Aritmética de computadores é restrita por uma precisão limitada

Padrões de Bits não tem nenhum significado inerente mas existem padrões

Complemento de 2Ponto flutuante IEEE 754

Instruções de computador determinam o “significado” dos padrões de bits

Desempenho e precisão são importantes pois existem muitas complexidades em máquinas reais (ex., algoritmos e implementações).

Nós estamos prontos para seguir adiante (e implementar o processador)

Você pode querer uma revisão (Seção 4.12 é uma boa leitura!)

Referências

Documentos relacionados

comportamento de cada híbrido dentro do local, observa-se que em Quilmaná, não houve diferenças significativas entre os híbridos para massa da espiga e massa de

Hierarquia de saliência fônica (cf. Tem uma semivogal que não aparece na 1a. Além disso, houve uma distribuição enviesada dos verbos nesta hierarquia, com relação ao

Nesse artigo apresentamos um pequena introdu¸ c˜ ao ` a teoria dos c´ odigos corretores de erros e a sua surpreendente rela¸ c˜ ao com uma das mais abstratas ´ areas da matem´

Al´em disso, foi apresentada outra fam´ılia de novos c´odigos convolucionais que n˜ao possuem parˆametros similares aos c´odigos dispon´ıveis na literatura..

15ª Conferência Internacional da Latin American Real Estate Society Escola Politécnica da Universidade de São Paulo.. São Paulo, 23 a 25 de Setembro

Combine-a com a palavra que diz qual o tipo de sentido que ela tem (lado direito). À semelhança dos Salmos, Cantares é um convite para que o crente entre numa íntima relação com

2004226 NATÁLIA CRISTINA CARVALHEIRA DE FREITAS MARTO Doutoramento DM 2013199 NUNO JOÃO SANTOS SINEIRO DE OLIVEIRA VAU Doutoramento DM 2013127 PATRÍCIA ISABEL CARVALHO PATRÍCIO DA

231 António Cristina Silva Nomeação Definitiva Auxiliar Motoris. Pesados 6-218 CTFPTI Assistente Operacional Assistente Operacional Motoris. 2-280 CTFPTI Assistente Técnico