You are on page 1of 6

Arquitectura de Computadores

Arquitectura Básica de um
Processador

Marco Costa

* Baseado em slides de José Delgado/IST

Estrutura de um computador

Processador
Memória
de IInstruções
d t õ

Unidade
de Controlo Memória
de Dados

Unidade Periféricos
de Dados (entradas/saídas)

1
PEPE--8: instruções com opcodes
PEPE

Memória de Memória
instruções de dados

opcode constante

endereço de ROM de
instruções descodificação
constante
WR
PC
SEL_B MUX_B

SEL_PC SEL_A MUX_A


ESCR_PC
ESCR_A Registo A
MUX_PC

1
bit de maior peso 8
8 1.º operando 2.º operando
0 1 ...
1

SEL_ALU ALU

resultado da operação

Unidade de Controlo Unidade de Dados


Processador (PEPE-8)

Linguagem assembly
Instrução
Categoria Significado Opcode Descrição em RTL
assembly
LD valor Load ((imediato
(imediato)) 00H A  valor
Transferência LD [endereço] Load (memória
(memória)) 01H A  M[endereço]
de dados
ST [endereço] Store (memória) 02H M[endereço]  A
ADD valor Add (imediato) 03H A  A + valor

Operações ADD [endereço] Add (memória) 04H A  A + M[endereço]


aritméticas SUB valor Subtract (imediato) 05H A  A – valor
SUB [endereço] Subtract (memória) 06H A  A – M[endereço]
AND valor AND (imediato) 07H A  A  valor
Operações AND [endereço] AND (memória) 08H A  A  M[endereço]
lógicas OR valor OR (imediato) 09H A  A  valor
OR [endereço] OR (memória) 0AH A  A  M[endereço]
JMP endereço Jump 0BH PC  endereço
Saltos
JZ endereço Jump if zero 0CH (A=0) : PC  endereço
Diversos NOP No operation 0DH

2
Só um registo não chega…
Memória de
Memória de instruções
dados

opcode constante

constante
t t
endereço de ROM de
instruções descodificação
WR

PC
SEL_RES MUX_RES

relógio ESCR_PC REG_1


SEL_PC
REG_2
MUX_PC Banco de
ESCR_RES
registos
N
Z
0 1

SEL_OP2 MUX_OP2

1.º operando 2.º operando

SEL_ALU ALU

resultado da operação

Unidade de Controlo Unidade de Dados

Processador

PEPE--16: mais registos, 16 bits


PEPE

3
Exemplo com o simulador
; Exemplos de instruções simples no PEPE

MOV R2,, 25H ; coloca uma constante de um byte y no R2


MOV R3, 1234H ; coloca uma constante de dois bytes no R3
ADD R2, R3 ; exemplo de soma
SUB R2, R2 ; para dar zero e ver os bits de estado

MOV R4, 5 ; ilustrar ciclo de 5 iterações


ciclo: SUB R4, 1 ; decrementa contador e afecta bits de estado
JNZ ciclo ; salta se ainda não tiver chegado a 0

SHR R3, 2 ; deslocamento de 2 bits à direita

fim: JMP fim ; forma expedita de "terminar"

Banco de registos (saída tristate)


C0 R0 OE0

C1 • R1 • OE1
Endereço Endereço
Descodificador

Descodificador

de escrita C2 • R2 • OE2 de leitura


E0 C3 • • OE3 S0
E1 R3 S1
E2 S2
C4 • R4 • OE4
C5 • R5 • OE5
C OE
C6 • R6 • OE6
C7 • R7 • OE7

Entrada (N bits) Saída (N bits)

4
Transferência entre registos
C0 R0 OE0

C1 • R1 • OE1
Endereço Endereço

Descodificador

Descodificador
de escrita C2 • R2 • OE2 de leitura
(0) E0 C3 • • OE3 S0(1)
(0) E1 R3 S1 (0)
(1) E2 S2 (0)
C4 • R4 • OE4
C5 • R5 • OE5
C OE
C6 • R6 • OE6
C7 • R7 • OE7
Entrada/
transferência Multiplexer
entrada • saída

RE e bits de Memória de instruções


Memória de
dados

estado (flags
(flags)) opcode constante

constante
endereço de ROM de
instruções descodificação
WR

PC
SEL_RES MUX_RES

relógio ESCR_PC REG_1


SEL_PC
REG_2
MUX_PC Banco de
ESCR_RES
registos
N
Z
0 1

SEL_OP2 MUX_OP2

1.º operando 2.º operando

SEL_ALU ALU

resultado da operação

Unidade de Controlo Unidade de Dados

Processador

5
A ilusão de memórias separadas

Processamento das instruções em 2 fases:


fases:
– Busca
– Execução