1 Processador MAC-1 Arquitectura. 2 Processador MAC-1 Desenvolvido por Andrew Tanenbaum para fins...

Preview:

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: ...

Recommended