Linguagem alto nível

Propaganda
ORGANIZAÇÃO E ARQUITETURA DE
COMPUTADORES
Computador Cleópatra
Interface Hardware e Software
Alexandre Amory
Edson Moreno
2/9
Nas Aulas Anteriores …
• Vimos como descrever e implementar circuitos combinacionais
• Como descrever a ULA da Cleo usando lógica combinacional
• Vimos como descrever e implementar circuitos sequenciais e
máquinas de estados
3/9
Na Aula de Hoje …
• Retomamos a Arquitetura Cleópatra
• Foco no fluxo de dados/instruções internamente ao
processador
• Como as instruções Assembly são executadas
– Relação: instrução+ME com a máquina de estados e ULA
4/9
Arquitetura Cleópatra - Von Neumann
CPU
ck
BLOCO
DE
CONTROLE
µinst n z
c
v
PROGRAMA ARMAZENADO
- dados
- instruções
IR
ce
ck
rw
reset
µinst n z
ck
reset
c
v IR
BLOCO
DE
DADOS
dados
endereços
MEMÓRIA
dados e programa
5/9
Bloco de Dados
µinst
ck
reset
DATAMEM
CE
RW
escreve na memória
ADDRESS
MAR
lê da
memória
0
mux
1
BUS_B BUS_A
MDR
sel
IR
PC
CE RW
AC
RS
w
Codificação
de escrita
ULA
NZCV
r
Codificação de
leitura
u
lnz
lcv
n
z
c
Bloco de
Dados
v
IR
6/9
Bloco de Controle
CPU
ck
BLOCO
DE
CONTROLE
µinst n z
c v IR
ce
ck
rw
reset
µinst n z
ck
reset
c
BLOCO
DE
DADOS
v IR
dados
endereços
MEMÓRIA
dados e programa
7/9
Diagrama de Estados da Cleo
8/9
Cleo: Carrega Endereço da Instrução
Memória
ADD #5
200 ADD, #
201 5
CPU
PC
200
MAR
200
9/9
Cleo: Carrega Endereço da Instrução
DATAMEM
CE
RW
escreve na memória
ADDRESS
MAR
lê da
memória
0
mux
1
BUS_B BUS_A
MDR
sel
IR
PC
CE RW
AC
RS
w
Codificação
de escrita
ULA
NZCV
r
Codificação de
leitura
u
lnz
lcv
10 / 9
Cleo: Lê Instrução da Memória
Memória
CPU
endereço
ADD #5
200 ADD, #
201 5
dado
MAR
200
MDR
ADD, I
11 / 9
Cleo: Lê Instrução da Memória
DATAMEM
CE
RW
escreve na memória
ADDRESS
MAR
lê da
memória
0
mux
1
BUS_B BUS_A
MDR
sel
IR
PC
CE RW
AC
RS
w
Codificação
de escrita
ULA
NZCV
r
Codificação de
leitura
u
lnz
lcv
12 / 9
Cleo: Decodifica Instrução
Memória
ADD #5
200 ADD, #
201 5
CPU
IR
ADD, I
MDR
ADD, I
13 / 9
Cleo: Decodifica Instrução
DATAMEM
CE
RW
escreve na memória
ADDRESS
MAR
lê da
memória
0
mux
1
BUS_B BUS_A
MDR
sel
IR
PC
CE RW
AC
RS
w
Codificação
de escrita
ULA
NZCV
r
Codificação de
leitura
u
lnz
lcv
14 / 9
Cleo: Inicia Busca do Operando
Memória
ADD #5
200 ADD, #
201 5
CPU
PC
201
MAR
201
15 / 9
Cleo: Inicia Busca do Operando
DATAMEM
CE
RW
escreve na memória
ADDRESS
MAR
lê da
memória
0
mux
1
BUS_B BUS_A
MDR
sel
IR
PC
CE RW
AC
RS
w
Codificação
de escrita
ULA
NZCV
r
Codificação de
leitura
u
lnz
lcv
16 / 9
Cleo: Leitura do Operando
Memória
CPU
endereço
ADD #5
200 ADD, #
201 5
MAR
201
MDR
5
dado
17 / 9
Cleo: Leitura do Operando
DATAMEM
CE
RW
escreve na memória
ADDRESS
MAR
lê da
memória
0
mux
1
BUS_B BUS_A
MDR
sel
IR
PC
CE RW
AC
RS
w
Codificação
de escrita
ULA
NZCV
r
Codificação de
leitura
u
lnz
lcv
18 / 9
Cleo: Realiza a Operação
CPU
AC
AC + MDR
MDR
5
19 / 9
Cleo: ADD Imediato
Exemplo:
ADD #5
DATAMEM
CE
RW
escreve na memória
ADDRESS
MAR
lê da
memória
0
mux
1
BUS_B BUS_A
MDR
sel
IR
PC
CE RW
AC
RS
w
Codificação
de escrita
ULA
NZCV
r
Codificação de
leitura
u
lnz
lcv
20 / 9
Datapath Cleo – ULA
DATAMEM
CE
RW
escreve na memória
ADDRESS
MAR
lê da
memória
0
mux
1
BUS_B BUS_A
MDR
sel
IR
PC
CE RW
AC
RS
w
Codificação
de escrita
ULA
NZCV
r
Codificação de
leitura
u
lnz
lcv
21 / 9
Bloco de Controle - Máquina de Estados Finita
22 / 9
Modo de Endereçamento
• Imediato
– Operando é o próprio dado
– Usado para representar constantes
• Ex.: Número 45 do trecho de código C
• Direto
– Operando é endereço do dado
– Usado para representar variáveis
int valor;
int *p = &valor;
int entrada = 8;
*p = entrada + 45;
• Ex. Variável entrada do trecho de código C
• Indireto
– Operando é endereço do endereço do dado
– Usado para representar ponteiros
• Ex. Ponteiro *p (que aponta para valor) do trecho de código C
23 / 9
Descrição das Instruções
Mnemônico
Operação
NOT
Complementa (inverte) todos os bits de AC.
STA oper
Armazena AC na memória dada por oper.
LDA oper
Carrega AC com conteúdos de memória da posição dada por oper.
ADD oper
Adiciona AC ao conteúdo da memória dada por oper.
OR oper
Realiza OU lógico do AC com conteúdo da memória dada por oper.
AND oper
Realiza E lógico do AC com conteúdo da memória dada por oper.
JMP oper
PC recebe dado especificado por oper (desvio incondicional).
JC oper
Se C=1, então PC recebe valor dado por oper (desvio condicional).
JV oper
Se V=1, então PC recebe valor dado por oper (desvio condicional).
JN oper
Se N=1 então PC recebe valor dado por oper (desvio condicional).
JZ oper
Se Z=1, então PC recebe valor dado por oper (desvio condicional).
JSR oper
RS recebe conteúdo de PC e PC recebe dado de oper (subrotina).
RTS
PC recebe conteúdos de RS (retorno de subrotina).
HLT
Suspende processo de busca e execução de instruções.
24 / 9
Meu Primeiro Prog Assembly
• Linguagem alto nível (e.g. C, JAVA)
– *C = A+3
• Assembly da Cleo
– LDA
– ADD
– STA
A
#3
C,I
25 / 9
Meu Primeiro Prog Assembly
• Linguagem alto nível (e.g. C, JAVA)
– *C = A+3
• Assembly da Cleo
– LDA
– ADD
– STA
A
#3
C,I
Carrega a variável A no reg interno
26 / 9
Meu Primeiro Prog Assembly
• Linguagem alto nível (e.g. C, JAVA)
– *C = A+3
• Assembly da Cleo
– LDA
– ADD
– STA
A
#3
C,I
Soma o conteúdo do reg interno (A) com
a constante 3. o resultado é salvo no reg
interno. Utiliza Modo Imediato.
27 / 9
Meu Primeiro Prog Assembly
• Linguagem alto nível (e.g. C, JAVA)
– *C = A+3
• Assembly da Cleo
– LDA
– ADD
– STA
A
#3
C,I
Carrega conteúdo do reg interno (A+3) na
variável C
28 / 9
Meu Primeiro Prog Assembly
• Linguagem alto nível (e.g. C)
– *C = A+3
• Assembly da Cleo
– LDA
– ADD
– STA
A
#3
C,I
29 / 9
Meu Primeiro Prog Assembly
• Linguagem alto nível (e.g. C)
– *C = A+3
• Assembly da Cleo
– LDA
– ADD
– STA
A
#3
C,I
30 / 9
Meu Primeiro Prog Assembly
• Linguagem alto nível (e.g. C)
– *C = A+3
• Assembly da Cleo
– LDA
– ADD
– STA
A
#3
C,I
DATAMEM
CE
RW
escreve na memória
ADDRESS
MAR
BUS_B BUS_A
0
lê da
memória
mux
1
sel
MDR
IR
PC
CE RW
AC
RS
w
Codificação
de escrita
ULA
NZCV
r
Codificação
de leitura
u
lnz
lcv
31 / 9
Meu Primeiro Prog Assembly
• Linguagem alto nível (e.g. C)
– *C = A+3
• Assembly da Cleo
– LDA
– ADD
– STA
A
#3
C,I
32 / 9
Meu Primeiro Prog Assembly
• Linguagem alto nível (e.g. C)
– *C = A+3
• Assembly da Cleo
– LDA
– ADD
– STA
A
#3
C,I
33 / 9
Resumo
• Como um programa Assembly é executado
– O que acontece dentro do processador durante a
execução de uma instrução
Download