Sobre o projeto
Simulador funcional de um processador RISC-V de 32 bits com pipeline de 5 estágios (IF, ID, EX, MEM, WB), feito para a disciplina de Arquitetura de Computadores.
O programa lê um arquivo .asm, monta as instruções para binário e hexadecimal e executa ciclo a ciclo, gerando um log detalhado do estado de cada estágio do pipeline e dos registradores.
Destaques
Montador de duas passadas que exporta cada instrução em binário (32 bits) e hexadecimal
Subconjunto do RV32I: tipos R, I, S, B e J, além das pseudo-instruções LI e MV
Unidade de forwarding opcional para resolver hazards de dados
Detecção de hazards com inserção de bolhas (stalls)
Preditor de desvio de 2 bits
Com as otimizações, o programa de teste cai de ~45 para ~25 ciclos
Log ciclo a ciclo do pipeline no arquivo de saída
Tecnologias
- Python 3
- RISC-V RV32I
- Assembly