230 likes | 392 Views
Processador MAC-1. Arquitectura. 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
E N D
Processador MAC-1 Arquitectura
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
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
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
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
Unidade funcional MAC-1 • ALU • 2 variáveis de controlo – F1e F0 • 2 flags (ou bits deestado) • 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
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
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çãodessa instrução
Fetch e execução de instruções EXECUÇÃO Palavra de controlo Palavra de controlo Palavra de controlo Estado Estado Estado Endereço de instrução (PC) FETCH Instrução
Processador MAC-1 Linguagem assembly
Assembly MAC-1 • Endereçamento imediato • Carregamento de constantes que são dadas pela própria instrução c é um valor inteiro entre 0 e 4095 (12 bits) Formato da instrução
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) p é a posição de memória que se pretende aceder. Pode ser um valor inteiro entre 0 e 4095 (12 bits).
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; } }
x: y: main: 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 7 6 4 3 5 0 jump 3 PC 1 0 10 25 0 10 25 AC 1 15 2 lodd 1 3 addd 2 4 stod 1 5 halt 6 ... 7
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
Assembly MAC-1 • Instruções de salto • Implementação de condições if…else • Envolvidas em ciclos (for, while) 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)
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: ...
Assembly MAC-1 • Implementação de ciclos • Ciclo while # Em MAC-1: ... ciclo: lodd i subd c jpos sai ... # xpto jump ciclo sai:... // Em Java: ... while (i < c) { ... // xpto } ...
Assembly MAC-1 • Ciclo for # 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:... // Em Java: ... for (i=0; i!=c; i++) { ... // xpto } ...