Вы находитесь на странице: 1из 16

Captulo 4

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 Interfac e, 2nd Edition David A. Patterson , John L. Hennessy Morgan Kaufmann, 2nd ed ., 1997, ISBN 1558604286 Copyright 1998 Morgan Kaufmann Publishers."

Lecture slides created by Michael Wahl in English

Traduo: Christian Lyra Gomes Reviso: Wagner M. N. Zola

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

? 1998 Morgan Kaufmann Publishers

Aritmtica
Por onde j passamos: Desempenho (segundos, ciclos, instrues) Abstraes: Arquitetura de Conjunto de Instrues Linguagem Assembly e Linguagem de Mquina O que est a frente: Implementar a Arquitetura
operao

a
32

ULA
resultado
32

b
32
? 1998 Morgan Kaufmann Publishers

Nmeros
Bits so apenas bits (no tem um significado inerente) convenes definem a relao entre bits e nmeros Nmeros binrios (base 2) 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001... decimal: 0...2 n-1 Claro que isso fica mais complicado: nmeros so finitos (overflow) fraes e nmeros reais nmeros negativos ex., no existe instruo subi no MIPS; addi pode adicionar um nmero negativo Como ns podemos representar nmeros negativos? Qual padro de bits ir representar que nmero?

? 1998 Morgan Kaufmann Publishers

Representaes possveis
Sinal de Magnitude: Complemento de 1 Complemento de 2

000 = +0 001 = +1 010 = +2 011 = +3 100 = -0 101 = -1 110 = -2 111 = -3

000 = +0 001 = +1 010 = +2 011 = +3 100 = -3 101 = -2 110 = -1 111 = -0

000 = +0 001 = +1 010 = +2 011 = +3 100 = -4 101 = -3 110 = -2 111 = -1

Pontos: balano, nmero de zeros, facilidade de operaes Qual deles melhor? Por que?

? 1998 Morgan Kaufmann Publishers

MIPS
Nmeros de 32 bits com sinal:
0000 0000 0000 ... 0111 0111 1000 1000 1000 ... 1111 1111 1111 0000 0000 0000 0000 0000 0000 0000two = 0ten 0000 0000 0000 0000 0000 0000 0001two = + 1ten 0000 0000 0000 0000 0000 0000 0010two = + 2ten 1111 1111 0000 0000 0000 1111 1111 0000 0000 0000 1111 1111 0000 0000 0000 1111 1111 0000 0000 0000 1111 1111 0000 0000 0000 1111 1111 0000 0000 0000 1110two 1111two 0000two 0001two 0010two = = = = = + + 2,147,483,646ten 2,147,483,647ten 2,147,483,648ten 2,147,483,647ten 2,147,483,646ten

maxint minint

1111 1111 1111 1111 1111 1111 1101two = 3ten 1111 1111 1111 1111 1111 1111 1110two = 2ten 1111 1111 1111 1111 1111 1111 1111two = 1ten

? 1998 Morgan Kaufmann Publishers

Operaes com Complemento de Dois


Negar um nmero em complemento de dois: inverter todos e bits e adicionar 1 lembre-se: negar e inverter so bem diferentes! Convertendo nmeros com n bits em nmeros com mais de n bits: imediatos de 16 bits do MIPS 16 bit so convertidos em 32 bits para as operaes aritmticas copie o bit mais significante (o bit do sinal) nos outros bits 0010 -> 0000 0010 1010 -> 1111 1010

extenso de sinal" (lbu vs. lb)

? 1998 Morgan Kaufmann Publishers

Adio & Subtrao


Como na escola primria (vai/empresta 1s) 0111 0111 0110 + 0110 - 0110 - 0101 Operaes em complemento de dois fcil subtrao usando adio de nmeros negativos 0111 + 1010 Overflow (resultado muito grande para uma palavra de computador finita): ex., adicionando 2 nmeros de n bits no resulta em outro nmero de n bits 0111 + 0001 note que o termo overflow pode ser enganoso, 1000 ele no significa um carry (vai-um) overflowed
? 1998 Morgan Kaufmann Publishers

Detectando Overflow
No h overflow quando se adiciona um nmero positivo e um negativo No h overflow quando os sinais so iguais na subtrao Overflow ocorre quando o valor afeta o sinal: overflow quando adicionando dois positivos resulta num negativo ou, adicionando dois negativos resulta num positivo ou, subtraindo um negativo de um positivo resulta num negativo ou, subtraindo um positivo de um negativo e o resultado positivo Considere as operaes A + B, and A B Pode ocorrer overflow se B for 0 ? Pode ocorrer overflow se A for 0 ?

? 1998 Morgan Kaufmann Publishers

Efeitos do Overflow
Uma exceo ocorre (interrupo) controle salta para um endereo de exceo pr-definido Endereo onde foi interrompido armazenado para uma possvel reinicio Detalhes baseados no sistema de software/linguagem exemplo: controle de vo vs lio de casa Nem sempre se quer detectar overflow novas instrues MIPS: addu, addiu, subu nota: addiu continua estendendo o sinal! nota: sltu, sltiu para comparaes sem sinal

? 1998 Morgan Kaufmann Publishers

Reviso: lgebra Booleana & portas lgicas (Gates)

Problema: Considere uma funo lgica com 3 entradas: A, B, e C. Sada D verdadeira se pelo menos uma entrada for verdadeira Sada E verdadeira se exatamente duas entradas forem verdadeiras Sada F verdadeira somente se as 3 entradas forem verdadeiras

Mostre a tabela verdade para essas 3 funes. Mostre as equaes Booleanas para essas 3 funes. Mostre uma implementao usando apenas inversores, portas E e portas OU.

? 1998 Morgan Kaufmann Publishers

10

Uma ULA (Unidade Lgica Aritmtica)


Vamos construir uma ULA que suporte as instrues andi e ori ns iremos construir apenas uma ULA de 1 bit e usar 32 delas operao a b resultado op a b res

Possvel implementao (soma-dos-produtos):

? 1998 Morgan Kaufmann Publishers

11

Reviso: O Multiplexador
Seleciona uma das entras para ser a sada, baseado numa entrada de controle S nota: Ns chamamos isso de um mux de 2 entradas mesmo que ele tenha 3 entradas!

A B

0 1

Vamos construir nossa ULA usando um MUX:

? 1998 Morgan Kaufmann Publishers

12

Diferente Implementaes
No fcil decidir qual a melhor maneira de se construir alguma coisa No se deseja muitas entradas para um nica porta No se deseja ter que atravessar muitos portas para nossos propsitos, facilidade de compreenso importante Vamos olhar a ULA de 1 bit para adio:
CarryIn

a Sum b

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

CarryOut

Como ns podemos construir uma ULA de 1 bit para adio, E e OU? Como ns podemos construir uma ULA de 32 bits?
? 1998 Morgan Kaufmann Publishers

13

Construindo uma ULA de 32 bits


CarryI n Operat ion

a0 b0
Operat ion CarryIn

CarryI n ALU0 CarryO ut Result0

a1
a 0

CarryI n ALU1 CarryO ut Result1

b1

Result

a2
2 b

CarryI n ALU2 CarryO ut Result2

b2

CarryOut

a31 b31

CarryI n ALU31 Result31

? 1998 Morgan Kaufmann Publishers

14

E a subtrao (a b) ?
Abordagem Complemento de 2: apenas negamos b e adicionamos. Como ns negamos?

Uma soluo muito inteligente:

Binvert

Operation CarryI n

a 0 1

Result

0 1

CarryOut

? 1998 Morgan Kaufmann Publishers

15

Ajustando a ULA ao MIPS


Precisa suportar a instruo atribui-se-menor-que (set-on-less-than slt) lembre-se: slt uma instruo aritmtica produz 1 se rs < rt, e 0 caso contrrio usa subtrao: (a-b) < 0 implica que a < b Precisa suporta o teste de igualdade (beq $t5, $t6, $t7) usa subtrao: (a-b) = 0 implica que a = b

? 1998 Morgan Kaufmann Publishers

16

Suportando slt
a

Bi nvert

Operati on CarryIn

Podemos descobrir a idia?


1 Result b 0 1 Less 3 2

a.

CarryO ut

Binvert

Operat ion CarryI n

a 0 1 Result b 0 1 Less 3 Set Overf low detecti on b. 2

O verflow

Bi nvert

CarryI n

Operation

a0 b0

CarryI n ALU0 Less CarryOut

Result 0

a1 b1 0

CarryI n ALU1 Less CarryOut

Result 1

a2 b2 0

CarryI n ALU2 Less CarryOut

Result 2

CarryIn

a31 b31 0

CarryI n ALU31 Less

Result 31 Set Overf low

? 1998 Morgan Kaufmann Publishers

18

Teste de igualdade
Observe as linhas de controle:
000 001 010 110 111 = = = = = and or add subtract slt
Bnegat e Opera tion

a0 b0

CarryI n ALU0 Less CarryO ut

Result0

a1 b1 0

CarryI n ALU1 Less CarryO ut

Result1 Zero

a2 b2 0

CarryI n ALU2 Less CarryO ut

Result2

Nota: zero retorna 1 quando o resultado zero!


a31 b31 0 CarryI n ALU31 Less Result 31 Set Overf low

? 1998 Morgan Kaufmann Publishers

19

Concluso
Ns podemos construir uma ULA para suportar o conjunto de instrues do MIPS idia chave: usar o multiplexador para selecionar a sada que ns queremos ns podemos executar a subtrao de maneira eficiente com o complemento de 2 ns podemos replicar a ULA de 1 bit para produzir a ULA de 32 bits Pontos importantes sobre o hardware todas as portas lgicas esto sempre funcionando a velocidade de uma porta afetada pelo nmero de entradas a velocidade de um circuito afetada pelo nmero de portas em srie (no caminho crtico ou o nvel de lgica mais profundo) Nosso foco primrio: compreenso, no entanto, Mudanas inteligentes na organizao podem melhorar o desempenho (similar a usar melhores algoritmos no software) Ns iremos olhar dois exemplos de adio e multiplicao

? 1998 Morgan Kaufmann Publishers

20

Problema: somador com propagao de vai-1* lento

Uma ULA de 32 bits rpida como uma ULA de 1 bit? Existe mais de uma maneira de se fazer a adio? dois extremos: propagao de vai-1 e soma de produtos

Voc pode ver a propagao? Como voc pode se livrar dela? c1 c2 c3 c4 = = = = b0c0 b1c1 b2c2 b3c3 + + + + a0c0 a1c1 a2c2 a3c3 + + + + a0b0 a1b1 c2 = a2b2 a3b3

c3 = c4 = No praticvel! Por que?

*N.T.: ripple carry adder

? 1998 Morgan Kaufmann Publishers

21

Somador com antecipao do vai-1*


Uma aproximao no meio dos nossos dois extremos Motivao: Se ns no sabemos o valor do vem-1, o que podemos fazer? Quando ns podemos sempre gerar o vai-1? gi = ai bi Quando ns podemos propagar o vai-1? pi = ai + bi Ns nos livramos da propagao? = = = = g0 g1 g2 g3 + + + + p0c0 p1c1 c2 = p2c2 c3 = p3c3 c4 = Praticvel! Por que?
*N.T.: Carry-lookahead adder
? 1998 Morgan Kaufmann Publishers

c1 c2 c3 c4

22

Use o princpio para construir somadores maiores


CarryI n

a0 b0 a1 b1 a2 b2 a3 b3

CarryI n Result 0--3 ALU0 P0 G0 C1 pi gi Carry-lookahead unit ci + 1

a4 b4 a5 b5 a6 b6 a7 b7

CarryI n Result 4--7 ALU1 P1 G1 C2 CarryI n Result 8--11 ALU2 P2 G2 C3 CarryI n Result 12--15 ALU3 P3 G3 C4 CarryO ut pi + 3 gi + 3 ci + 4 pi + 2 gi + 2 ci + 3 pi + 1 gi + 1 ci + 2

a8 b8 a9 b9 a10 b10 a11 b11

No podemos construir somadores com 16 bits desse jeito... (muito grande) Podemos usar o somadores com propagao de vai-1 com somadores com antecipao de vai-1 de 4 bits Melhor: use o princpio AV -1 de novo!

a12 b12 a13 b13 a14 b14 a15 b15

? 1998 Morgan Kaufmann Publishers

23

Multiplicao
Mais complicado do que a adio Conseguida atravs de deslocamento e adio Mais tempo e mais rea Vamos olhar 3 verses baseadas no algoritmo da escola primria 0010 __x_1011
(multiplicando) (multiplicador)

Nmeros negativos: converter e multiplicar existem tcnicas melhores, mas ns no veremos elas

? 1998 Morgan Kaufmann Publishers

24

Multiplicao: Implementao
St art

Mult iplier0 = 1

1. Te st M ultipl ier0

M ultipl ier0 = 0

Mul tipli cand Shift lef t 64 bit s


1a. A dd m ul tipli cand to product and place the result in Product regist er

64-bit ALU

Mult iplier Shi ft right 32 bits


2. S hift the M ultip lican d regi st er lef t 1 bit

Product Wri te 64 bits

Control test
3. S hift t he M ultipl ier register right 1 bi t

32nd repet iti on?

No: < 32 repet itions

Y es: 32 repeti tions

Done

? 1998 Morgan Kaufmann Publishers

25

Segunda Verso
St art

M ulti plier0 = 1

1. Test Mult iplier0

Mult iplier0 = 0

M ulti pl icand 32 bit s

1a. Add m ulti pl icand to the l eft half of the product and place the result in the left half of the Product register

32-bi t ALU

Mult iplier Shi ft right 32 bits Shi ft right Wri te

2. Shi ft the Product register righ t 1 bit

Product 64 bits

Control test

3. Shi ft the Mult iplier register ri ght 1 bit

No: < 32 repet iti ons 32nd repetit ion?

Yes: 32 repet itions

Done

? 1998 Morgan Kaufmann Publishers

26

Verso Final
St art

Produ ct 0 = 1

1. Test Product0

Product 0 = 0

Mult iplicand 32 bit s

1a. Add m ulti pl icand to the l eft half of the product and place the result in the left half of the Product register

32-bit ALU

Product 64 bit s

Shif t ri ght Writ e

Control test

2. Shi ft the Product register righ t 1 bit

No: < 32 repet iti ons 32nd repetit ion?

Yes: 32 repet itions

Done

? 1998 Morgan Kaufmann Publishers

27

Ponto Flutuante (uma breve olhada)


Ns precisamos uma meio para representar nmeros com fraes, ex., 3.1416 nmeros muito pequenos, ex., .000000001 nmeros muito grandes, ex., 3.15576 ? 109 Representao: sinal, expoente, significand : (1)sinal ???significand ???2expoente mais bits para o significand d mais preciso mais bits no expoente aumenta o intervalo Padro de ponto flutuante IEEE 754: preciso simples: 8 bits expoente, 23 bit significand preciso dupla: 11 bit expoente, 52 bit significand

? 1998 Morgan Kaufmann Publishers

28

Padro de Ponto Flutuante IEEE 754


O bit 1 inicial do signifcand implcito Expoente ajustado para facilitar a ordenao todos 0s o menor expoente e todos os 1s o maior ajuste de 127 para preciso simples e de 1023 para preciso dupla sumrio: (1)sinal ????? significand) ???2expoente ajuste Exemplo: decimal: -.75 = -3/4 = -3/2 2 binrio: -.11 = -1.1 x 2 -1 ponto flutuante: expoente = 126 = 01111110 IEEE preciso simples: 10111111010000000000000000000000

? 1998 Morgan Kaufmann Publishers

29

Complexidade s do Ponto Flutuante


As operaes so um tanto mais complicadas (veja o texto) Alm do overflow podemos ter tambm o underflow Preciso 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 no um nmero outras complexidades Implementar o padro pode ser trabalhoso No usar o padro pode ser ainda pior veja o texto para a descrio do bug do 80x86 e do Pentium !

? 1998 Morgan Kaufmann Publishers

30

Sumrio do Captulo 4
Aritmtica de computadores restrita por uma preciso limitada Padres de Bits no tem nenhum significado inerente mas existem padres Complemento de 2 Ponto flutuante IEEE 754 Instrues de computador determinam o significado dos padres de bits Desempenho e preciso so importantes pois existem muitas complexidades em mquinas reais (ex., algoritmos e implementaes).

Ns estamos prontos para seguir adiante (e implementar o processador) Voc pode querer uma reviso (Seo 4.12 uma boa leitura!)
? 1998 Morgan Kaufmann Publishers

31

Вам также может понравиться