O Simulador Hamses
Por: Sheila Beloti • 23/6/2016 • Trabalho acadêmico • 2.071 Palavras (9 Páginas) • 763 Visualizações
RESUMO
O objetivo proposto é contruir um simulador para a Unidade de Controle de umas das microarquiteturas do computador hipotético Ramses. O relatório incia-se com uma breve introdução das características, instruções e organização do computador hipotético Ramses. No simulador utilizou-se a linguagem de Programação C, para o desenvolvimento do código e o Ambiente de desenvolvimento integrado Dev C++, para a compilação do mesmo. Foi utilizada a microarquitetura esquematizada no Anexo I.. O programa funciona de uma maneira bem didática, lê um arquivo .txt com o mapa de área de dados da memória em seguida o usuário entra com o código assembly requerido de acordo com as intruções do Hamses via arquivo .txt, faz-se a compilação passo-a-passo, mostrando o conteúdo de cada registrador, área de dados da memória e micro-instruções, e em cada passo apresenta-se os sinais gerados pela unidade de controle. Na saída, tela final, é mostrada pela tela preta de compilação do programa Dev C++, onde apresenta todos os sinais de controle requeridos de acordo com a microarquitetura do Hamses utilizada.
1.0 INTRODUÇÃO
Os professores Raul Fernando Weber e Taisy Silva Weber da UFRGS, desenvolveram computadores hipotéticos de uma forma didática e hieraquica de complexidade, tais quais Neander, Ahmes, Ramses e Cesar, com o objetivo de uso na disciplina Arquitetura de Computadores.
O computador hipotético Ramses, é compatível com o Neander, mas foi adicionado mais recursos para facilitar a programação, ou seja, pode se dizer que ele é uma atualização do computador hipotético Neander.
Características do Ramses:
- Largura de dados e de endereços de 8 bits
- Dados representados em complemento de dois
- 2 registradores para uso geral A e B de 8 bits
- 1 registrador de índice X de 8 bits
- 1 apontador de programa PC de 8 bits
- 1 registrador de estado com 3 condições: negativo, zero e carry.
- O Ramses possui 16 instruções codificadas por 4 bits, para fazer a programação em assembly. Segue a relação na tabela abaixo:
[pic 1]
Possui 4 modos de endereçamento: direto, indireto, imediato e indexado. Os quais são diferenciados pela forma ou não como acessam a memória e buscam as instruções.
- Modo de enderaçamento Direto:[pic 2]
Neste modo, o endereço de 8 bits do operando segue a palavra de código da insrução. Em assembly é representado apenas por endereço.
- Mode de endereçamento Indireto:
Neste modo, o endereço de 8 bits do endereço do operando seque a palavra de código da instrução. Em assembly é representado pelo endereço seguido de um I.[pic 3]
- Modo de endereçamento Imediato:
Neste modo, o operando de 8 bits segue a palavra de código da instrução, este modo não há acesso a memória. Em assembly é representado por uma # antes do endereço.[pic 4]
- Modo de endereçamento Indexado:
Neste modo o deslocamento que segue a palavra de código da instrução é somado ao registrador X para formar o endereço do operando. Esse deslocamento é representado em complexo de dois. Em assembly é representado pelo endereço,X.[pic 5]
O modelo de computador possui uma instrução de subrotina JSR, na qula quando é executada o controle do programa passa para a subrotina que se encontra no endereço apontado por JSR, no final dessa subrotina deve ocorrer um desvio para a posição da instrução que chamou essa subrotina. Neste caso, o retorno, o valo que PC assume após a decodificação da instrução de JSR.
2.0 Objetivo proposto
Construir um simulador para a Unidade de Controle de uma das possíveis microarquiteturas do computador Ramses proposta pelo autor.
Entradas:
- Mapa de área de dados da memória, com os valores iniciais [128...256]
- Registradores e seus valores iniciais
- Código escrito na linguagem de Montagem do computador Ramses, em .txt
- Assumir que o programa inicia no endereço 0 da memória
Saídas:
1. Mapa de área de dados da memória, com os valores alterados após a execução do simulador
2. Registradores e seus valores alterados após a execução do simulador
3. Sequencia de microinstruções gerados em cada instante de tempo de execução, assumindo que memórias e registradores necessitem apenas de 1 ciclo para leitura ou escrita.
3.0 Justificativa de escolha da linguagem de programação
Decidiu-se por programar em linguagem C, devido a mesma ser compilada estaticamente e seus códigos fontes são transformados diretamente em linguagem de máquina. Assim, houve uma relação direta com a lógica do código e os binários correspondentes das instruções e das relações de transferencias necessárias para realizar cada instrução.
4.0 Arquitetura escolhida
Utilizou-se a arquitetura do computador hipotético Ramses tal qual as relações código-instruções e o fluxograma de execução se encontram abaixo. Esta organização foi escolhida, por possuir apenas uma unidade aritmética, facilitando assim a lógica desenvolvida para a operação do simulador.
[pic 6]
[pic 7]
4.0 O simulador
Requisitos para execução do simulador: estar preferencialmente em ambiente windows.
4.1 Tutorial de execução
Segue as instruções para execução do simulador de Unidade de Controle do Computador Ramses.
Antes de tudo descompacte a pasta que contém o simulador.
Etapa de mapeamento da área de dados da memória
1) Abra o arquivo 'memoria_dados.txt'
2) Escreva os valores desejados nas posições de memória que desejar, as posições em branco são consideradas como 0 “zero”, escreva conforme o exmplo abaixo:
...