Simulador educacional de pipeline de processador MIPS de 5 estágios, desenvolvido em Python, com suporte a detecção de hazards, forwarding, predição de desvios e coleta de métricas de desempenho.
O projeto foi desenvolvido com foco em Arquitetura de Computadores e Sistemas, demonstrando compreensão prática de execução paralela de instruções, controle de concorrência interna e impacto de decisões microarquiteturais no desempenho.
Simular o comportamento de um pipeline clássico de CPU e permitir a análise quantitativa de:
- Hazards de dados e controle
- Stalls no pipeline
- Efeitos de forwarding
- Impacto da predição de desvios
- Número de ciclos de execução
O simulador permite observar como diferentes instruções coexistem nos estágios do pipeline e como conflitos afetam a performance geral do processador.
O pipeline simulado segue o modelo RISC clássico de 5 estágios:
- IF – Instruction Fetch
- ID – Instruction Decode
- EX – Execute
- MEM – Memory Access
- WB – Write Back
O estado entre os estágios é mantido por registradores de pipeline, modelados explicitamente no código.
- ✔️ Pipeline de 5 estágios (IF, ID, EX, MEM, WB)
- ✔️ Detecção de data hazards
- ✔️ Tratamento de control hazards
- ✔️ Forwarding de dados
- ✔️ Preditor de desvios de 2 bits
- ✔️ Execução ciclo a ciclo
- ✔️ Coleta de métricas de desempenho (ciclos, stalls)
- ✔️ Simulação didática e determinística
Durante a execução, o simulador coleta informações como:
- Número total de ciclos
- Quantidade de stalls
- Impacto de branches no fluxo do pipeline
Essas métricas permitem analisar como decisões de projeto (ex: forwarding e branch prediction) afetam diretamente o desempenho do processador.
├── ALU.py # Unidade Lógica e Aritmética
├── pipeline.py # Controle principal do pipeline
├── main.py # Execução do simulador
├── branchPredictor.py # Predição de desvios
├── IF_ID.py # Registrador de pipeline IF/ID
├── ID_EX.py # Registrador de pipeline ID/EX
├── EX_MEM.py # Registrador de pipeline EX/MEM
├── MEM_WB.py # Registrador de pipeline MEM/WB
├── binary.py # Manipulação de instruções binárias
├── data_memory.txt # Memória de dados simulada
└── pipeline_registers.txt # Estado dos registradores
python main.pyO simulador executa instruções definidas nos arquivos de entrada e exibe informações sobre o comportamento do pipeline ao longo dos ciclos.
Este projeto evidencia conhecimentos práticos em:
- Arquitetura de Computadores
- Execução paralela de instruções
- Controle de concorrência interna
- Análise de desempenho
- Modelagem de sistemas complexos em Python
- Organização modular de software
- Comparação automática entre pipeline com e sem forwarding
- Relatórios de desempenho (CPI, IPC)
- Testes automatizados
- Containerização com Docker
- Integração com CI para execução de simulações
Este é um projeto de caráter educacional e experimental, com foco em aprendizado e análise de conceitos fundamentais de arquitetura de processadores.