Upload
geraldo-melgaco-castilhos
View
214
Download
0
Embed Size (px)
Citation preview
1
Processador MAC-1
Arquitectura
2
Processador MAC-1
Desenvolvido por Andrew Tanenbaum para fins didácticos Arquitectura simples, útil para perceber uma série de
conceitos que também são válidos em processadores mais complexos
Processador virtual Não existe implementação comercial em hardware Existem simuladores (máquinas virtuais) que
permitem executar programas para este processador
3
Processador MAC-1
Principais características: Possui 12 linhas para endereçar a memória
Espaço de endereçamento = 212 = 4K endereços Palavras de 16 bits
Um datapath de 16 bits 16 registos para uso interno 2 registos para comunicação com o exterior (memória) Uma ALU e um bloco de deslocamento
Instruções de 16 bits Unidade de controlo multi-ciclo microprogramada
4
Arquitectura MAC-1
MAR
MDR
PC
AC
SP
IR
BUS CDeslocamento
Mux-A
2
2
N
F
H
SA
LAR
LDR
RDWR
BUS B
BUS A
ALU
0 1
RARBRC4 4 4
LE
(...)
Endereços
Dados
Z
5
Arquitectura MAC-1
Principais registos AC (Acumulador)
Guarda o resultado das operações PC (Program Counter)
Guarda o endereço da próxima instrução a ser executada
IR (Instruction Register)Guarda a instrução que vai ser executada
SP (Stack Pointer)Guarda o endereço do topo da pilha
6
Arquitectura MAC-1
Registos de comunicação com o exterior MDR (Memory Data Register)
Guarda os dados recebidos / a enviar LDR – Controlo de carregamento do BUS C RD / WR – Carregamento / Output enable para o
exterior (também são ligados à memória)
MAR (Memory Adress Register)Guarda endereços
LAR – Controlo de carregamento do BUS B
7
Unidade funcional MAC-1
ALU 2 variáveis de controlo – F1 e F0
2 flags (ou bits de estado) N – indica se o resultado é negativo Z – indica se o resultado é zero
Deslocamento 2 variáveis de controlo – H1 e H0
Permite deslocar para esquerdaou para a direita
Operação F1 F0
A + B 0 0
A & B 0 1
A 1 0
~A 1 1
Operação H1 H0
A 0 0
A >> 1 0 1
A << 1 1 0
--- 1 1
8
Organização da memória no MAC-1
12 bits para endereçamento ou seja, 4K=4096 endereços
Dividido em: Programa
Instruções (código-máquina) Variáveis globais, constantes
Pilha (ou Stack) Dados temporários Variáveis locais
I/O Escrita de caracteres no écran Leitura de caracteres do teclado
012...
40954094...
012...
40954094...
Pro
gram
a
012...
40954094...
Pro
gram
aP
ilha
Memória012...
Pro
gram
aP
ilha
I/O
9
Fetch e execução de instruções
O programa encontra-se carregado em memória O processador acede à memória para ler cada
instrução O endereço da instrução a aceder encontra-se num
registo especial – o Program Counter (PC) A leitura da instrução designa-se fetch (busca) Durante a fase de fetch, enquanto se acede à
memória o PC é incrementado, ou seja, PC←PC+1 Isto para PC ficar “preparado” para a próxima instrução
Depois de realizar o fetch, o processador passa à execução dessa instrução
10
Datapath
Memória
Unidadede Controlo
Processador MAC-1
R/W
End. Din Dout
Fetch e execução de instruções
Palavra de controlo
EstadoEndereço de
instrução (PC)
Instrução
Palavra de controlo
Estado
Palavra de controlo
Estado
FETCH
EXECUÇÃO
11
Palavras de controlo no MAC-1
MAR
MDR
PC
AC
SP
IR
BUS CDeslocamento
Mux-A
2
2
N
F
H
SA
LAR
LDR
RDWR
BUS B
BUS A
ALU
0 1
RARBRC4 4 4
LE
(...)
Endereços
Dados
Z
SA
CND
F HLDR
LAR
RD
WR
LE RC RB RA MADDR
031
12
Processador MAC-1
Linguagem assembly
13
Assembly MAC-1
Endereçamento imediato Carregamento de constantes que são dadas pela
própria instrução
Mnemónica Descrição Significado
loco c AC ← c Load constant
c é um valor inteiro entre 0 e 4095 (12 bits)
cccccccccccc1110
Opcode(4 bits)
Constante a carregar(12 bits)
Formato da instrução
14
Assembly MAC-1
Endereçamento directo Usado para aceder a variáveis globais ou a valores
constantes guardados na memória Operações I/O (leitura e escrita de caracteres)
Mnemónica Descrição Significado
lodd p AC ← M[p] Load direct
stod p M[p] ← AC Store direct
addd p AC ← AC + M[p] Add direct
subd p AC ← AC – M[p] Subtract direct
p é a posição de memória que se pretende aceder. Pode ser um valor inteiro entre 0 e 4095 (12 bits).
15
Assembly MAC-1
Exemplo – endereçamento directo
// Código em java
public class exemplo {
// Má programação, serve apenas para explicar o// endereçamento directo...
public static int x = 10;public static int y = 15;
public static void main(String[] args){
x = x + y;}
}
16
0134567101525
jump 3
lodd 1addd 2stod 1
halt...
01234567
Assembly MAC-1
# Código MAC-1
jump main
x: 10y: 15
main: lodd xaddd ystod xhalt
0PCAC
Registos Memória
1025
Exemplo – endereçamento directo
x:
y:main:
17
Assembly MAC-1
Instruções de salto Diz-se que ocorre um salto quando a próxima
instrução a executar não é a que se encontra na posição de memória seguinte
Ou seja, não é a instrução que se encontra na posição PC+1 Fazendo uma analogia com a programação:
Se x for menor que 0, “salta” para aqui
...if (x >= 0) x = 1;y = x...
Se x for maior ou igual a 0, não “salta”
18
Assembly MAC-1
Instruções de salto Implementação de condições if…else Envolvidas em ciclos (for, while)
Mnemónica Descrição Significado
jump p PC ← p Unconditional jump
jpos p if (AC ≥ 0) PC ← p Jump if positive or zero
jneg p if (AC < 0) PC ← p Jump if negative
jzer p if (AC == 0) PC ← p Jump if zero
jnze p if (AC != 0) PC ← p Jump if nonzero
p é o endereço para o qual o programa salta em caso de salto Pode ser qualquer valor inteiro entre 0 e 4095 (12 bits)
19
Assembly MAC-1
Implementação de condições if…else
// Em Java:...if (x >= 0)
y = x;else
y = 0;...
# Em MAC-1:
...
lodd x
if: jneg else
stod y
jump cont
else: loco 0
stod y
cont: ...
20
Assembly MAC-1
Implementação de ciclos Ciclo while// Em Java:...while (i < c){
... // xpto}...
# Em MAC-1:
...
ciclo: lodd i
subd c
jpos sai
... # xpto
jump ciclo
sai: ...
21
Assembly MAC-1
Ciclo for
// Em Java:...for (i=0; i!=c; i++){
... // xpto}...
# Em MAC-1:
...
loco 0 #
stod i # i = 0
ciclo: lodd i
subd c
jzer sai
... # xpto
loco 1 #
addd i #
stod i # i=1+i
jump ciclo
sai: ...