Um simulador educacional interativo e visual da microarquitetura MIC-1, projetado para facilitar o estudo e a compreensão de datapaths e execução de instruções.
A proposta do projeto é criar um simulador que explique, de forma visual e passo a passo, o funcionamento da microarquitetura MIC-1, em estrita conformidade com a literatura de Organização Estruturada de Computadores de Andrew S. Tanenbaum, 3ªEdição.
O embasamento teórico para o desenvolvimento do SimuMIC contou com:
- Literatura clássica sobre Arquitetura de Computadores.
- Pesquisas e referências em websites especializados.
- Análise de arquivos e diagramas focados no funcionamento do MIC-1.
- Utilização de um simulador MIC-1 base para estudos prévios e testes práticos sobre o comportamento do datapath e das instruções implementadas.
O simulador foi inteiramente desenvolvido na linguagem Java, utilizando conceitos sólidos de Programação Orientada a Objetos e as seguintes ferramentas:
- JavaFX: Responsável por toda a interface gráfica e diagramação visual (através de arquivos
.fxmle Controllers para interação em tempo real). - Maven: Utilizado para a estruturação do projeto, build automatizado e gerenciamento de dependências.
O motor do simulador modela o hardware com alta fidelidade, exibindo o estado da máquina através de três visões principais (main, ram-view e cache-view). As estruturas contemplam:
- Registradores: 16 registradores básicos do caminho de dados +
MAReMBR. - Sinalização: 2 flags de desvio (N, Z) e status dinâmico da RAM (Idle, Read, Write).
- Barramentos: Implementação completa dos barramentos
A,BeC. - Hierarquia de Memória: Caches
L1eL2operando com Mapeamento Direto e política de atualização Write Through. - Microcódigo: Interpretação nativa das macroinstruções do MIC-1.
- Ciclo de Clock: Execução de todos os
MPCs(Microprogram Counter) dividida rigorosamente em 4 subciclos de clock.
Não é necessário ter o Java ou o Maven instalados na sua máquina local para testar a aplicação. Basta ter o Docker configurado.
1. Construir a imagem do simulador:
sudo docker build -t simumic-app .2. Executar o simulador (Linux):
sudo docker run -it --rm \
--net=host \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v $HOME/.Xauthority:/root/.Xauthority \
simumic-app(Nota: Para Windows com WSL2 ou macOS, consulte a documentação sobre partilha do servidor X11/XQuartz).
O desenvolvimento é contínuo. As próximas atualizações focam em elevar a complexidade arquitetural do simulador:
-
Multiprocessamento: Integrar dois processadores MIC-1 operando em paralelo.
-
Pipelining: Implementar a arquitetura de pipeline para demonstrar o ganho de performance na sobreposição de instruções.