200 likes | 290 Views
Processador MAC-1. Arquitectura. Processador MAC-1. Desenvolvido por Andrew Tanenbaum para fins didácticos Arquitectura muito 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 muito 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
Unidade de controlo MAC-1 • O programa encontra-se carregado em memória • A unidade de controlo acede à memória para ler cada instrução • O endereço da instrução encontra-se num registo especial – o Program Counter(PC) • A leitura da instrução designa-se fetch (busca) • Durante o fetch, enquanto se acede à memória o PC é incrementado, ou seja, PC ← PC + 1 • Isto para ficar “preparado” para a próxima instrução • Depois do fetch procede-se então à execução da instrução
Unidade de controlo MAC-1 • Unidade multi-ciclo ou microprogramada • Um ciclo para realizar o fetch… • … e n de ciclos para executar a instrução • Em cada um dos n ciclos de execução aplica-se uma palavra de controlo ao datapath • Algumas instruções são simples • sequência de 1 ou 2 palavras de controlo • Outras podem ser mais complicadas • sequência mais longa de palavras de controlo para executar a instrução
MAC-1 – processamento 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 c é qualquer valor inteiro entre 0 e 4095 (12 bits)
Assembly MAC-1 • Endereçamento directo • Usado para aceder a variáveis globais • Operações I/O (leitura e escrita de caracteres) p é a posição de memória que se pretende acederPode 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, necessária 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; } }
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 3 4 5 6 7 0 jump 3 PC 1 0 25 10 0 10 25 AC 1 15 2 lodd 1 3 addd 2 4 stod 1 5 halt 6 ... 7
Se x for menor que 0, salta para aqui Assembly MAC-1 • Instruções de salto • Diz-se que há um salto quando a próxima instrução a executar não é a 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; else x = -1; y = x;
Assembly MAC-1 • Instruções de salto • Implementação de condições if…else • Envolvidas em ciclos (for, while) x é 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 Exemplo – utilização de saltos em condições // 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:...