21
1 Processador MAC-1 Arquitectura

1 Processador MAC-1 Arquitectura. 2 Processador MAC-1 Desenvolvido por Andrew Tanenbaum para fins didácticos Arquitectura simples, útil para perceber

Embed Size (px)

Citation preview

Page 1: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

1

Processador MAC-1

Arquitectura

Page 2: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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

Page 3: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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

Page 4: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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

Page 5: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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

Page 6: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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

Page 7: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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

Page 8: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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

Page 9: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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

Page 10: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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

Page 11: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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

Page 12: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

12

Processador MAC-1

Linguagem assembly

Page 13: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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

Page 14: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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

Page 15: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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;}

}

Page 16: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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:

Page 17: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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”

Page 18: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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)

Page 19: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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

Page 20: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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

Page 21: 1 Processador MAC-1 Arquitectura. 2 Processador MAC-1  Desenvolvido por Andrew Tanenbaum para fins didácticos  Arquitectura simples, útil para perceber

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