Skip to content

Simulador didático de pipeline de CPU MIPS em Python. Implementa um pipeline de 5 estágios com detecção de hazards, predição de branches, forwarding e coleta de métricas de desempenho.

Notifications You must be signed in to change notification settings

leoroncolato/Pipeline_Simulator_Python

Repository files navigation

🧠 Pipeline Simulator – CPU MIPS (Python)

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.


🎯 Objetivo do Projeto

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.


🏗️ Arquitetura do Pipeline

O pipeline simulado segue o modelo RISC clássico de 5 estágios:

  1. IF – Instruction Fetch
  2. ID – Instruction Decode
  3. EX – Execute
  4. MEM – Memory Access
  5. WB – Write Back

O estado entre os estágios é mantido por registradores de pipeline, modelados explicitamente no código.


⚙️ Funcionalidades Implementadas

  • ✔️ 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

📊 Métricas e Análise

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.


🧩 Estrutura do Projeto

├── 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

▶️ Como Executar

python main.py

O simulador executa instruções definidas nos arquivos de entrada e exibe informações sobre o comportamento do pipeline ao longo dos ciclos.


🧠 O que este projeto demonstra

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

🚀 Possíveis Evoluções

  • 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

📌 Observação

Este é um projeto de caráter educacional e experimental, com foco em aprendizado e análise de conceitos fundamentais de arquitetura de processadores.

About

Simulador didático de pipeline de CPU MIPS em Python. Implementa um pipeline de 5 estágios com detecção de hazards, predição de branches, forwarding e coleta de métricas de desempenho.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages