Introdução aos Microprocessadores

Propaganda
Introdução aos Microprocessadores
Colégio Técnico de Campinas - COTUCA
Disciplina: TDM II – Arquitetura e Organização de
Microprocessadores
Departamento Eletro-Eletrônica
25/04/2010
www.corradi.junior.nom.br
1
Um Microprocessador - Atual
www.corradi.junior.nom.br
25/04/2010
2
La Motivacion
„
O que é um computador?
„
„
Combinação de diversos dispositivos e circuitos digitais
que podem executar uma seqüência de operações
programadas com um mínimo de intervenção humana. A
seqüência de operações é denominada de Programa.
Como os computadores pensam?
„
„
(Como executam um programa?)
Computadores não pensam! O programador fornece-lhe um
programa.
„ (pela Arquitetura)
www.corradi.junior.nom.br
25/04/2010
3
Organização Básica de um
sistema de Computador
www.corradi.junior.nom.br
25/04/2010
4
Organização Básica de um sistema de Computador
Unidade Central de Processamento
Dispositivos
de Entrada
Unidade
de Controle
ULA
Dispositivos
de Saída
Unidade Primária
de Armazenamento
Dispositivos de
Armazenament
o Secundário
www.corradi.junior.nom.br
25/04/2010
5
Estrutura Típica de um
microcomputador de oito bits
www.corradi.junior.nom.br
25/04/2010
6
Estrutura Básica do PC
Princípios:
•Armazenamento;
•Transporte de informação
•Processamento LógicoAritmético.
•Periféricos Internos e
externos
www.corradi.junior.nom.br
25/04/2010
7
Estrutura simplificada do Microprocessador
BUS
uP
AX
BX
CX
DX
tempA
tempB
Entrada A
A
Entrada B
IR
IP
Saída Z
MA
MD
www.corradi.junior.nom.br
25/04/2010
8
Microprocessador – [uP]
BUS
uP
AX
„
Registradores;
BX
CX
DX
tempA
tempB
A
Entrada A
Entrada B
Saída Z
IR
IP
MA
MD
www.corradi.junior.nom.br
25/04/2010
9
Microprocessador – [uP]
BUS
uP
AX
BX
CX
Registradores
„ Barramento;
„
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
IR
IP
MA
MD
www.corradi.junior.nom.br
25/04/2010
10
Microprocessador – [uP]
BUS
uP
AX
BX
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
„
„
„
Registradores
Barramento;
Unidade Lógica e
Aritmética.
IR
IP
MA
MD
Observar que temos os
mesmos princípios
do Computador
www.corradi.junior.nom.br
25/04/2010
11
Os Registradores
BUS
uP
AX
BX
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
IR
IP
MA
MD
São pequenas células de
memória que podem
armazenar um Byte,
Word e DWord.
Assim, poderemos
armazenar um
número ou um
código binário dentro
de cada um destes
registradores.
www.corradi.junior.nom.br
25/04/2010
12
O Barramento
BUS
uP
AX
BX
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
IR
IP
MA
MD
Trata-se de um
meio de
comunicação de
dados entre os
diversos
registradores e
demais
periféricos.
www.corradi.junior.nom.br
25/04/2010
13
Transporte de dados
BUS
uP
„
AX
BX
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
„
IR
IP
MA
MD
Para transportar a
informação de um
registrador para
outro, utilizamos o
barramento.
Representamos este
transporte pela
notação reversa:
Destino Å Origem
www.corradi.junior.nom.br
25/04/2010
14
Transporte de dados
BUS
uP
AX = 10
BX
CX
DXDX
= 10
tempA
tempB
Entrada A
Entrada B
Saída Z
A
IR
Assim, se possuirmos
o dado 10d em AX
e desejarmos
transferir este dado
para DX, devemos
escrever:
IP
MA
MD
MOV DX , AX
www.corradi.junior.nom.br
25/04/2010
15
ULA – Unidade Lógica e Aritmética
BUS
uP
„
AX
BX
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
IR
IP
MA
MD
Unidade
responsável por
realizar operações
como Soma
(ADD), subtração
(SUB),
incremento
(INC), entre
outras...
www.corradi.junior.nom.br
25/04/2010
16
ULA – Unidade Lógica e Aritmética
„
Entrada A
Entrada B
Operação
Saída Z
Esta unidade
sempre recebe
um ou dois
parâmetros
nas Entradas
A e B,...
www.corradi.junior.nom.br
25/04/2010
17
ULA – Unidade Lógica e Aritmética
„
Entrada A
Entrada B
Operação
Saída Z
Esta unidade
sempre recebe
um ou dois
parâmetros
nas Entradas
A e B, e a
operação.
www.corradi.junior.nom.br
25/04/2010
18
ULA – Unidade Lógica e Aritmética
„
Entrada A
Entrada B
Operação
Saída Z
Como resultado
destes sinais, é
gerado uma
resposta em sua
saída!
www.corradi.junior.nom.br
25/04/2010
19
ULA – Unidade Lógica e Aritmética
5
7
Entrada A
Entrada B
Operação
ADD
Saída Z
Exemplo:
Ao receber os dados
7d e 5d nas
entradas A e B da
ULA
respectivamente, e
solicitarmos a
operação ADD
(soma)...
„
www.corradi.junior.nom.br
25/04/2010
20
ULA – Unidade Lógica e Aritmética
5
7
Entrada B
Entrada A
Operação
ADD
Saída Z
„
Ela responderá
em sua saída
com o valor da
operação!
12
www.corradi.junior.nom.br
25/04/2010
21
ULA – Unidade Lógica e Aritmética
5
7
Entrada A
Entrada B
Operação
ADD
SUB
Saída Z
„
Se alterarmos
apenas a
operação, ela
responde
imediatamente!
7-5=2
12
2
www.corradi.junior.nom.br
25/04/2010
22
O Microprocessador
O microprocessador para
processar uma instrução
busca as mesmas na
memória de programa
[MP]. Utilizando um
processo de busca e
execução denominado
[FETCH].
www.corradi.junior.nom.br
25/04/2010
23
O Microprocessador
BUS
uP
AX
BX
CX
DX
tempA
tempB
A
Entrada A
Entrada B
Saída Z
IR
IP
Para isto, ele utiliza
dois registradores
auxiliares, memória
de endereços [ME] e
memória de dados
[MD.]
Memória-MP
0
MOV AX,0
ME
1
MOV BX,1
MD
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
24
O Microprocessador
BUS
uP
AX
BX
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
IR
IP
ME = 3
MD
Através da ME, o
microprocessador
informa o endereço
a ser acessado na
memória.
Memória-MP
0
MOV AX,0
1
MOV BX,1
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
25
BUS
O Microprocessador
uP
AX
BX
CX
DX
tempA
tempB
A
Entrada A
Entrada B
Saída Z
IR
IP
O registrador MD
tem a função de
receber a instrução
ou dado da memória
apontado por ME.
Memória-MP
0
MOV AX,0
ME = 3
1
MOV BX,1
JMP
MD 2
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
26
O Microprocessador
„
Algumas instruções básicas em Assembly:
Instrução
Descrição
MOV destino, origem
ADD AX, RX
JMP endereço
destino Å origem
Ax Å Ax + Rx
IP Å endereço
www.corradi.junior.nom.br
25/04/2010
27
Modelos de Arquiteturas
Arquitetura Von Neumann
Microcontrolador Intel 8051 – Arquitetura
Von Neumann Modificada (Mista)
Arquitetura Harvard
Arquitetura Harvard
Neumann Von X Harvard
Neumann Von X Harvard
Exemplos de Instruções CISC
Exemplos de Instruções RISC
RISC x CISC
Espaço na Memória de Programa
Microprocessador funcionando!
BUS
uP
AX
BX
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
IR
IP = 0
Ao ligarmos o
microprocessador,
ocorre um sinal de
RESET que inicializa o
registrador IP (instruction
pointer ), com ZERO.
Memória-MP
0
MOV AX,0
ME
1
MOV BX,1
MD
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
38
Microprocessador funcionando!
BUS
uP
AX
BX
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
IR
IP = 0
ME
MD
O registrador IP,
denominado apontador
de instrução (instruction
pointer) serve para
indicar qual o endereço
da próxima instrução na
memória de programa
[MP] Memória-MP
0
MOV AX,0
1
MOV BX,1
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
39
Microprocessador funcionando!
„
O uP deve realizar as seguintes atividades repetidas
vezes:
Busca de instrução (FETCH) onde o IP é incrementado;
„ Decodificação da instrução;
As vezes
„ Execução da instrução.
ocorrem juntas
„
Fetch 0
Fetch 1
Decod 0
Decod 1
Exec 0
Primeira instrução
Exec 1
...
Segunda instrução
www.corradi.junior.nom.br
25/04/2010
40
Procedimento para FETCH 0...
BUS
uP
AX
BX
Para realizar o FETCH, o
uP executa os seguintes
passos:
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
IR
IP = 0
Memória-MP
0
MOV AX,0
ME
1
MOV BX,1
MD
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
41
FETCH ...
BUS
uP
AX
BX
Para realizar o FETCH, o
uP executa os seguintes
passos:
1. ME Å IP
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
IR
IP = 0
ME = 0
MD
Memória-MP
0
MOV AX,0
1
MOV BX,1
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
42
FETCH ...
BUS
uP
AX
BX
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
Para realizar o FETCH, o
uP executa os seguintes
passos:
1. ME Å IP
2. MD Å Memória-MP
A
IR
IP = 0
ME = 0
MD=MOV AX,0
Memória-MP
0
MOV AX,0
1
MOV BX,1
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
43
FETCH ...
BUS
uP
AX
BX
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
Para realizar o FETCH, o
uP executa os seguintes
passos:
1. ME Å IP
2. MD Å Memória-MP
3. IR Å MD
A
IR=MOV AX,0
IP = 0
ME = 0
MD=MOV AX,0
Memória-MP
0
MOV AX,0
1
MOV BX,1
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
44
O procedimento para INC PC ...
BUS
uP
AX
BX
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
IR=MOV AX,0
IP = 0
ME = 0
MD=MOV AX,0
Após o FETCH de cada
instrução, o IP precisa
ser incrementado; isto
é feito através da ULA,
para apontar para a
próxima instrução...
Memória-MP
0
MOV AX,0
1
MOV BX,1
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
45
INC PC ...
BUS
uP
AX
BX
Para isto, são realizados
os seguintes passos:
1. tempA Å IP
CX
DX
tempA
tempA
=0
tempB
0
Entrada A
Entrada B
Saída Z
A
IR=MOV AX,0
IP = 0
ME = 0
MD=MOV AX,0
Memória-MP
0
MOV AX,0
1
MOV BX,1
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
46
INC PC ...
BUS
uP
AX
BX
CX
Para isto, são realizados
os seguintes passos:
1. tempA Å IP
2. ULA Å INC (A)
DX
tempA
tempA
=0
tempB
0
Entrada A
Entrada B
Saída Z
INC A
1
A
IR=MOV AX,0
IP = 0
ME = 0
MD=MOV AX,0
Memória-MP
0
MOV AX,0
1
MOV BX,1
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
47
INC PC ...
BUS
uP
AX
BX
CX
DX
tempA
tempA
=0
tempB
0
Para isto, são realizados
os seguintes passos:
1. tempA Å IP
2. ULA Å INC (A)
3. IP Å ULA
A
Entrada A
Entrada B
Saída Z
INC A
1
IR=MOV AX,0
IP = 01
ME = 0
MD=MOV AX,0
Memória-MP
0
MOV AX,0
1
MOV BX,1
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
48
A Execução ...
BUS
uP
AX
AX
=0
BX
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
IR=MOV AX,0
IP = 1
ME = 0
MD=MOV AX,0
Para EXECUTAR a
instrução
MOV AX,0
o uP apenas realiza a
transferência:
AX Å 0
Memória-MP
0
MOV AX,0
1
MOV BX,1
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
49
Microprocessador funcionando!
„
Após a execução da primeira instrução, um
novo ciclo inicia-se...
Fetch 0
...
Fetch 1
Decod 0
Decod 1
Exec 0
Primeira instrução
Exec 1
Segunda instrução
www.corradi.junior.nom.br
25/04/2010
50
FETCH 1 (segunda instrução) ...
BUS
uP
1. ME Å IP
AX = 0
BX
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
IR
IP = 1
ME = 1
MD
Memória-MP
0
MOV AX,0
1
MOV BX,1
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
51
FETCH (segunda instrução) ...
BUS
uP
1. ME Å IP
2. MD Å Memória-MP
AX = 0
BX
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
IR
IP = 1
ME = 1
MD=MOV BX,1
Memória-MP
0
MOV AX,0
1
MOV BX,1
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
52
FETCH (segunda instrução) ...
BUS
uP
AX = 0
BX
1. ME Å IP
2. MD Å Memória
3. IR Å MD
CX
DX
tempA
tempB
Entrada A
Entrada B
Saída Z
A
IR=MOV BX,1
IP = 1
ME = 1
MD=MOV BX,1
Memória-MP
0
MOV AX,0
1
MOV BX,1
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
53
Execução (segunda instrução)...
BUS
uP
AX = 0
BXBX
=1
E a segunda instrução é
executada...
MOV BX,1
CX
BX Å 1
DX
tempA
tempB
A
Entrada A
Entrada B
Saída Z
IR=MOV BX,1
IP = 1
ME = 1
MD=MOV BX,1
Memória-MP
0
MOV AX,0
1
MOV BX,1
2 ADD AX,BX
3
JMP 2
4
...
www.corradi.junior.nom.br
25/04/2010
54
Processamento da Informação
PROGRAMA
tarefa
Homem
Computador
Resposta da tarefa
Um programa é constituído
por uma seqüência prédeterminada de comandos
que devem ser seguidas
para que seja atingido o
objetivo computacional.
www.corradi.junior.nom.br
25/04/2010
55
Programa
„
„
„
O Hardware [HW] entende apenas a linguagem de 0s e
1s. Logo qualquer programa descrito em outra
linguagem deve ser traduzido para a linguagem de
mais baixo nível representada por 0s e 1s.
Linguagem de Máquina é uma linguagem binária
composta por um conjunto de comandos que são
denominados de instruções.
O programa em linguagem de máquina é armazenado na
memória de programa [MP], também chamada memória
da máquina.
www.corradi.junior.nom.br
25/04/2010
56
Palavra de Computador – Instruções ou Dados
Palavra de Instrução - Formato das Instruções
10001
10000001
00001111
opcode
operando
• O formato de uma instrução normalmente é retangular
dividido em campos de bits.
• Cada campo pode assumir o valor:
– Opcode (primeiro campo)
– Valor de uma constante
– Endereço de memória
– Endereço/nome de um registrador
www.corradi.junior.nom.br
25/04/2010
57
Formato das Instruções
„
O formato de uma instrução normalmente é retangular
dividido em campos de bits.
FONTE
DESTINO
opcode
operando
FONTE
DESTINO
opcode
FONTE
operando
www.corradi.junior.nom.br
25/04/2010
58
Visão geral de Linguagem Assembly
Mnemônicos
Código de Operação
Binário/Hexadecimal
Descrição
LDA
01011011/5B
LOAD: O dado armazenado no
endereço do operando é carregado no
acumulador
ADD
01101101/6D
ADD: O operando é adicionado ao dado
armazenado no acumulador e o resultado
da soma é armazenado no acumulador
SUB
10100010/A2
SUB: O operando é subtraído do dado
armazenado no acumulador, e o
resultado da subtração é armazenado no
acumulador.
STA
10001010/8A
STORE: O conteúdo do acumulador é
armazenado na memória na posição
especificada pelo endereço do operando
www.corradi.junior.nom.br
25/04/2010
59
Visão geral de Linguagem Assembly
JMP
01001100/4C
JUMP: A próxima instrução
será obtida da
especificada no endereço
do operando em vez de ser
obtida da seqüência.
JPZ
01110110/76
JUMPZ: A próxima instrução
será obtida do endereço do
operando se o acumulador
contiver zero, caso
contrário, será obtido da
seqüência.
HLT
00111111/3F
PARE: O computador para de
operar. Não há mais
instruções a executar
www.corradi.junior.nom.br
25/04/2010
60
Classificação das Instruções
„
Transferência de dados
„ Move dados entre registradores ou entre locações de
memória e registradores;
„ Ex.: "MOVEs", "LOADs", "STOREs" e EXCHANGE;
„
Processamento de dados
„ Grupo Aritmético
„ "ADDs", "SUBTRACTs", "INCREMENTs" ou DECREMENTs" dados nos
registradores ou na memória;
„ Grupo Lógico
„ "ANDs", "ORs", "XORs", "COMPAREs", "ROTATEs" ou
"COMPLEMENTs" dados entre registradores ou entre locações
de memória e registradores;
„
Controle
„ "JUMPs", "CALLs" e "RETs" condicionais ou incondicionais;
www.corradi.junior.nom.br
25/04/2010
61
Classificação das Instruções
„
Instruções de transferência de dados (MOV)
„
„
„
MOV A,R1
(A) <- (R1)
„ Move o conteúdo do registrador R1 para o
acumulador.
MOV 23h,40h (23h) <- (40h)
„ Move o conteúdo do endereço de memória 40h
para o endereço de memória 23h.
MOV 22h,A
(22h) <- (A)
„ Move o conteúdo de A para o endereço de
memória 22h.
www.corradi.junior.nom.br
25/04/2010
62
Classificação das Instruções
„
Instruções de transferência de dados (LOAD, STORE)
„
„
LDA 23h
„ Transfere o valor armazenado no endereço 23h
da memória para o acumulador
STA 55h
„ Transfere o valor do acumulador para o
endereço de memória 55h.
www.corradi.junior.nom.br
25/04/2010
63
Classificação das Instruções
„
Instruções Aritméticas e Lógicas (ADD, OR, ...)
„
ADD A,23h
(A) <- (A)+(23h)
„ Soma o valor do registrador acumulador com o
valor armazenado no endereço de memória 23h e
grava o resultado no acumulador.
„
ADD 25h,15h (A) <- (25h)+(15h)
„ Soma o valor armazenado no endereço 25h com o
valor armazenado no endereço 15h e guarda
resultado no acumulador.
„
ADD A,#4h
(A) <- (A)+4
„ Soma o valor do acumulador com o número 4h.
www.corradi.junior.nom.br
25/04/2010
64
Classificação das Instruções
„
Instruções de Teste e Desvio (JMP, JNZ, ...)
„
JZ 23h
„ Salta se o acumulador é zero para a posição de
memória de programa 23h (muda o registrador PC)
„
JNZ 22h
„ Salta se o acumulador não é zero para a posição
de memória de programa 22h (muda o registrador
PC).
„
JMP 87h
„ Salta para o endereço 87h (PC)
www.corradi.junior.nom.br
25/04/2010
65
Em resumo
mnemônico
Comando em linguagem
de alto nível
Comandos
em Assembly
X=AxB+C-D
LDA A
MUL B
ADD C
SUB D
STA X
HLT
Instruções em linguagem
de Máquina
1100011111110000
1110000000001111
0010000011100000
0001110001101010
0010010000000011
1111000000000000
A representação em Assembly é o correspondente valor em binário varia
para cada Microprocessador.
www.corradi.junior.nom.br
25/04/2010
66
Escrevendo um Programa
„
Computador Hipotético
„
„
Escrever em linguagem de máquina um programa para
nosso computador hipotético.
Situação
„
„
„
Subtrai uma palavra de dados de oito bits (X) de
outra palavra de dados de oito bits (Y). Os valores
de X e de Y estão armazenados nos endereços 0300 e
0301, respectivamente.
Armazenar a diferença no endereço de memória 0302.
Se o valor da diferença for zero, o programa desvia
para o endereço 0400, buscando lá a próxima instrução
a ser executada. Caso contrário, o programa para.
www.corradi.junior.nom.br
25/04/2010
67
Solução
Mnemônicos
LDA 0301
SUB 0300
STA 0302
JPZ 0400
HLT
Descrição/Comentário
Carregar o dado (Y) de
endereço 0301 no
acumulador
Subtrai o dado (X) no
endereço 0300 do
acumulador
Armazena a diferença no
endereço 0302
Se a diferença é zero,
desvie para 0400 para
obter a próxima instrução
Se a diferença não é zero,
para o programa
www.corradi.junior.nom.br
25/04/2010
68
Dúvidas.....?????
www.corradi.junior.nom.br
25/04/2010
69
Atividades:
„
„
„
“Baixar” informações do site:
www.corradi.junior.nom.br
Estudar os tutoriais sobre Microprocessadores;
Resolver exercícios de listas.
Download