Академический Документы
Профессиональный Документы
Культура Документы
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."
This material may not be copied or distributed for commercial purposes without express written permission of the copyright holder.
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?
Representaes possveis
Sinal de Magnitude: Complemento de 1 Complemento de 2
Pontos: balano, nmero de zeros, facilidade de operaes Qual deles melhor? Por que?
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
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 ?
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
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.
10
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
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
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
a0 b0
Operat ion CarryIn
a1
a 0
b1
Result
a2
2 b
b2
CarryOut
a31 b31
14
E a subtrao (a b) ?
Abordagem Complemento de 2: apenas negamos b e adicionamos. Como ns negamos?
Binvert
Operation CarryI n
a 0 1
Result
0 1
CarryOut
15
16
Suportando slt
a
Bi nvert
Operati on CarryIn
a.
CarryO ut
Binvert
O verflow
Bi nvert
CarryI n
Operation
a0 b0
Result 0
a1 b1 0
Result 1
a2 b2 0
Result 2
CarryIn
a31 b31 0
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
Result0
a1 b1 0
Result1 Zero
a2 b2 0
Result2
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
20
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
21
c1 c2 c3 c4
22
a0 b0 a1 b1 a2 b2 a3 b3
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
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!
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
24
Multiplicao: Implementao
St art
Mult iplier0 = 1
1. Te st M ultipl ier0
M ultipl ier0 = 0
64-bit ALU
Control test
3. S hift t he M ultipl ier register right 1 bi t
Done
25
Segunda Verso
St art
M ulti plier0 = 1
Mult iplier0 = 0
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
Product 64 bits
Control test
Done
26
Verso Final
St art
Produ ct 0 = 1
1. Test Product0
Product 0 = 0
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
Control test
Done
27
28
29
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