A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Processador MAC-1 Arquitectura.

Apresentações semelhantes


Apresentação em tema: "Processador MAC-1 Arquitectura."— Transcrição da apresentação:

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

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 esquerda ou para a direita Operação F1 F0 A + B A & B 1 A ~A Operação H1 H0 A A >> 1 1 A << 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 Memória

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 Fetch e execução de instruções
Palavra de controlo Palavra de controlo Palavra de controlo Estado Estado Estado Endereço de instrução (PC) FETCH Instrução

11 Palavras de controlo no MAC-1

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) 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 Assembly MAC-1 Exemplo – endereçamento directo Registos Memória
# Código MAC-1 jump main x: 10 y: 15 main: lodd x addd y stod x halt PC 3 1 5 4 7 6 jump 3 AC 25 10 x: y: main: 1 10 25 2 15 3 lodd 1 4 addd 2 5 stod 1 6 halt 7 ...

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: ... if (x >= 0) x = 1; y = x Se x for maior ou igual a 0, não “salta” Se x for menor que 0, “salta” para aqui

18 Jump if positive or zero
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 cont: ...

20 Assembly MAC-1 Implementação de ciclos Ciclo while // Em Java: ...
# Em MAC-1: ... ciclo: lodd i subd c jpos sai # xpto jump ciclo sai: ... // Em Java: ... while (i < c) { ... // xpto }

21 Assembly MAC-1 Ciclo for // Em Java: ... for (i=0; i!=c; i++) {
# Em MAC-1: ... loco # stod i # i = 0 ciclo: lodd i subd c jzer sai # xpto loco # addd i # stod i # i=1+i jump ciclo sai: ... // Em Java: ... for (i=0; i!=c; i++) { ... // xpto }


Carregar ppt "Processador MAC-1 Arquitectura."

Apresentações semelhantes


Anúncios Google