25/02/2011 1 organização de computadores: uma introdução aos componentes fundamentais lógica...
TRANSCRIPT
25/02/2011 1
Organização de Computadores:
Uma Introdução aos Componentes Fundamentais
Lógica DigitalIntrodução a Arquitetura
Prof. Dr. Ronaldo GonçalvesProf. Leandro Magno
25/02/2011 2
Algumas Verdades Escondidas
As portas lógicas são ativadas por uma entrada especial, a qual deve ser considerada como um sinal de ativação e não como uma entrada que sofrerá as transformações do circuito lógico.
A finalidade deste sinal de ativação é fazer com que o dado (entradas que serão transformadas) somente passe pelo circuito em determinado momento (momento da ativação)
Sinais Válidos: 1 - Ativação e 0 - Manutenção
25/02/2011 3
Exemplificação Visual
AB
A AND B
S A
A
BA OR B
S A
A A
S A
25/02/2011 4
Em circuitos mais complexos ...AB
CD
S
S A
25/02/2011 5
Observação
A duração de um sinal de ativação deve ser suficiente para que o dado de entrada esteja estabilizado na saída.
A freqüência (MHz) com que um computador trabalha mede a velocidade com que os circuitos lógicos são ativados.
A este sinal de ativação de um circuito lógico chamamos de temporizador ou sinal de clock (relógio)
25/02/2011 6
Abstração do Circuito(Caixa Preta)
CircuitoLógico 2
A
B
C
D
Clock
S 1
S 0CircuitoLógico 1
A
B
C
D
S
Clock
25/02/2011 7
Mais Genericamente temos:
CircuitoLógico
Genérico
Clock
S 1
S 0E 0
E 1
:
E n-1
:
S m-1
25/02/2011 8
Revendo Números Binários
Representação de valores decimais em binários. Exemplos:
Dec de 2 casas -> Binário de 4 casas
00 0000
01 0001
02 0010
03 0011
25/02/2011 9
Mais um pouco...
Dec de 2 casas -> Binário de 4 casas
04 0100
10 1010
13 1101
15 1111
Como fazer genericamente??
25/02/2011 10
Regra Básica:
Decomponha o número decimal em uma somatória de potências de 2, usando a seguinte fórmula:
ND = An-1.2n-1+...+ A3.23 + A2.22 + A1.21 + A0.20
Assim, ND = An-1... A3 A2 A1 A0
Onde A0, A1, A2, A3 ... An-1 {0,1}
25/02/2011 11
Regra mais prática:• Primeiro passo, faça uma linha com uma
seqüência das potências de 2 da direita para a esquerda
• Na segunda linha, caminhe da esquerda para a direita e vá decompondo o número original em uma somatória de potências. Se a potência acima pode ser contida no número, coloque 1 e decremente a potência do número. Repita a operação até a última potência.
25/02/2011 12
Exemplo: Converta o número 29
Potências: 64 32 16 8 4 2 1
Resultado: 0 0 1 1 1 0 1
Assim, 29 = 11101 ou 00000011101
Pois 29 = 1.16 + 1.8 + 1.4 + 0.2 + 1.1
25/02/2011 13
Exercício para Agora:
Converta os decimais para binários com 16 dígitos (2 bytes)
1) 97
2) 735
3) 2946
25/02/2011 14
Resposta:
A conversão ficou:
1) 97 = 0000000001100001
2) 735 = 0000001011011111
3) 2946 = 0000101110000010
25/02/2011 15
Operações Aritméticas com Binários
Adição Básica
0
0+
0
0
1+
1
1
0+
11
1+
01
vai 1 p/cima
1
25/02/2011 16
Um exemplo um pouco maior:
0
1+
0
1
1
1
0
1
1
1
0
1
101
1
31+
02
Dec Bin
7
1 1Seqüênciade "vai 1"s
p/ cima
25/02/2011 17
Exercícios para Agora
Efetue a Soma Binária com 8 digitos:
a) 135 + 49
b) 178 + 51
c) 86 + 26
25/02/2011 18
Resolvendo temos:
a) 10000111 + 00110001 = 10111000
b) 10110010 + 00110011 = 11100101
c) 01010110 + 00011010 = 01110000
25/02/2011 19
Implementando um Circuito Somador Básico de 2 Bits
Modelo Abstratodo
Somador Básico
B VEA
SVS
A e B – Entradas S – Saída VE – Vai Um de entrada VS – Vai Um de saída
25/02/2011 20
Montando a Tabela Verdade:
A B VE S VS
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
25/02/2011 21
Simplificando com Karnaugh:
S = A´B´VE + A´BVE´ + AB´VE´+ ABVE
0
1
1 0 1
0 1 0
ou S = A xor B xor VE
0
0
0 1 0
1 1 1
VS = BVE + AVE + AB
25/02/2011 22
Detalhe: Porta lógica “Ou Exclusivo”
A B A xor B0 0 00 1 11 0 11 1 0
A
BA XOR B
A xor B = A´B + AB´
25/02/2011 23
Então teremos:
AB S
VE
VS
25/02/2011 24
Para um somador de 4 bits ...
A BVE
S 0
A BVE
S 1
A BVE
S 2
A B
S 3
VSVSVSVS
25/02/2011 25
Operações Aritméticas com Binários
Subtração Básica
0
0-
0
0
1-
1
1
0-
1
1
1-
01
vai 1 p/baixo
25/02/2011 26
Um exemplo um pouco maior:
1
0-
1
0
1
1
11
0
1
1
1
00
7
1-
30
Dec Bin
0
1 1
Seqüênciade "vai 1"s
p/ baixo
25/02/2011 27
Exercícios para Agora
Efetue a Subtração Binária com 8 digitos:
a) 135 – 49
b) 178 – 111
c) 86 – 26
25/02/2011 28
Resolvendo temos:
a) 10000111 – 00110001 = 01010110
b) 10110010 – 01101111 = 01000011
c) 01010110 – 00011010 = 00111100
25/02/2011 29
Implementando um Circuito Subtrator Básico de 2 Bits
A e B – Entradas S – Saída VE – Vai Um de entrada VS – Vai Um de saída
Modelo Abstratodo
Subtrator Básico
B VEA
SVS
25/02/2011 30
Montando a Tabela Verdade:
A B VE S VS
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 0 1
1 0 0 1 0
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1
25/02/2011 31
Simplificando com Karnaugh:
S = A´B´VE + A´BVE´ + AB´VE´+ ABVE
0
1
1 0 1
0 1 0
ou S = A xor B xor VE
0
0
1 1 1
0 1 0
VS = A´B´+ A´VE + BVE
25/02/2011 32
Então teremos:
AB S
VE
VS
25/02/2011 33
Para um subtrator de 4 bits ...
A BVE
S 0
A BVE
S 1
A BVE
S 2
A B
S 3
VSVSVSVS
25/02/2011 34
Decodificador 2 x 4
S0
S1
S2
S3
E0
E1
25/02/2011 35
Bit de Memória
Flip-Flop RS
R
S
Q
25/02/2011 36
Palavra de Memória
Registrador
entrada
pulso
saída
25/02/2011 37
Sistema de Memória
0
1
2
3
4
5
:
n-1
MAR
MBR
deco
dific
ador
read
write
MEM
25/02/2011 38
Unidade Lógica e Aritmética
Unidade Funcional
A B
add
sub
mulULA
25/02/2011 39
Unidade de Controle Microprogramada
Reg. Instr. Pulsos que Unidade de ativam os Controle diversos Reg Status : dispositivos.
25/02/2011 40
Arquitetura Primitiva (CISC)
3 A 7 F
1 0 B 2
5 6 0 E
6 2 E A
: :
MEM
MBR
MAR
: :
: :
: :
1
2
3
4
PC15
RI5
UC
A B
ULA
MUX MUX67
8
9
10
11
12
13
14
MUX
25/02/2011 41
Algoritmo da CPU
Loop
1. RI <- mem(PC);
2. Decodifica(RI);
3. Executa(RI);
4. PC <- PC + 1;
Forever;
25/02/2011 42
Visão Geral: CPU, MEM e E/S
CPU E/S
MEM
25/02/2011 43
Aprendendo Números Hexadecimais
Representação de valores decimais em hexadecimais. Exemplos:
Dec de 2 casas -> Hexadecimal com 2 casas
00 00 01 01 02 02 03 03
25/02/2011 44
Mais um pouco...
Dec de 2 casas -> Hexadecimal de 2 casas
09 09 10 0A 13 0D 15 0F 16 10
Como fazer genericamente??
25/02/2011 45
Regra Básica:
Decomponha o número decimal em uma somatória de potências de 16, usando a seguinte fórmula:
ND = An-1.16n-1+...+ A2.162 + A1.161 + A0.20
Assim, ND = An-1... A3 A2 A1 A0
Onde A0, A1, A2, A3 ... An-1 {0,1, 2 ..A ... F}
25/02/2011 46
Regra mais prática:• Primeiro passo, faça uma linha com uma
seqüência das potências de 16 da direita para a esquerda
• Na segunda linha, caminhe da esquerda para a direita e vá decompondo o número original em uma somatória de potências. Se a potência acima pode ser contida no número n vezes, coloque n e decremente nxpotência do número. Repita a operação até a última potência.
25/02/2011 47
Exemplo: Converta o número 60000
Potências: 65536 4096 256 16 1
Ou: 164 163 162 161 160
Res Parcial: 0 14 10 6 0
Ou 0 E A 6 0
Assim, 60000 = EA60 ou 000000EA60
Pois 60000 = E.16 + 1.8 + 1.4 + 0.2 + 1.1
25/02/2011 48
Observação:
Cada 4 digitos binários corresponde a um digito hexadecimal
Exs: 1010 = A
11000011 = C3
1111011100001011 = F70B
25/02/2011 49
Exercício para Agora:
Converta os decimais para hexadecimais com 4 dígitos (16 bits ou 2 bytes)
1) 97
2) 735
3) 2946
25/02/2011 50
Resposta:
A conversão ficou:
1) 0061
2) 02DF
3) 0B82
25/02/2011 51
Mais Exercícios para Agora:
Converta os decimais para Hexadecimais com 4 dígitos (2 bytes)
1) 62097
2) 31032
3) 24256
25/02/2011 52
Resposta:
A conversão ficou:
1) F291
2) 7938
3) 5EC0
25/02/2011 53
Formato das Instruções
7 4 3 2 1 0
código rid mod
endereço ou dado
Cada instrução ocupa 2 bytes (16 bits)
25/02/2011 54
Modos de Endereçamento
00 - direto: o segundo byte contém o endereço do operando
01 - indireto: o segundo byte contém o endereço de uma posição de memória que contém o endereço do operando
10 - imediato: o segundo byte contém o próprio operando
11 - indexado: o segundo byte deve ser somado ao conteúdo do registrador X a fim de juntos proverem o endereço do operando.
25/02/2011 55
Registradores (Identificadores)
00 = registrador A (uso geral)
01 = registrador B (uso geral)
10 = registrador X (uso geral)
11 = nenhum registrador é selecionado
25/02/2011 56
Conjunto de Instruções
25/02/2011 57
Exemplo de Instruções: Como fazer?1. Colocar um dado em um registrador:
- Instrução: LDR (load)
- Código da Instrução: 0010
- Registrador: B
- Código do registrador: 01
- Dado: 0001 0000
- Modo Imediato: 10
Instrução Final: 0010 0110 0001 0000
ou: 26 10
25/02/2011 58
2. Colocar um dado de registrador na memória:
- Instrução: STR (store)
- Código da Instrução: 0001
- Registrador: B
- Código do registrador: 01
- Endereço de Memória: 1111 1111
- Modo Imediato: 00
Instrução Final: 0001 0100 1111 1111
ou: 14 FF