Repositório para a atividade da disciplina Arquiteturas de Computadores
O projeto é um trabalho para a disciplina de Arquitetura de Computadores. Foi feito um simulador de pipeline, que receberá um arquivo .asm e irá simular o processo da instruções do MIPS em 5 etapas do pipeline.
Utilizamos novas features que o Python 3.10 adicionou. Os desenvolvedores Maximilian Harrisson e Isadora Pacheco usaram, respectivamente, as versões 3.10.1 e 3.10.5 para o desenvolvimento do trabalho.
git clone https://github.com/Pruzny/simulador-mips
cd simulador-mips
python main.py
- Executando as instruções: Selecione a caixa que contém as etapas do pipeline e aperte espaço.
- Visualizando os registradores e a memória de dados: Selecione a caixa que deseja e mova com o botão 3 do mouse (scroll).
- Utilize um arquivo que contenha um código em asm, sendo o utilizado o ISA do mips. Por favor, lembre-se que não aceitamos pseudo-instruções talvez suportadas pelo MARS, apenas o pseudo-código "move" foi mapeado.
- Nossa memória de dados tem limite de 1000 bytes (250 endereços). Lembre-se dessa limitação para quando for utilizar alguma instrução que faça acesso a memória de dados, como "lw", "sw".
- A memória de dados e os registradores colocará os valores em hexadecimal.
- Nosso simulador já está tratando os hazards possíveis nativamente, sem possibilidade de ativação ou desativação.
- Nossa previsão de desvio nas instruções de branch, são estáticas, prevendo sempre o falso, em nossa arquitetura a etapa ID irá calcular o verdadeiro valor do branch. Caso nossa previsão esteja incorreta, terá um stall de 1 ciclo e irá para o label correspondente da instrução de branch.
- Ainda sobre o branch, caso você faça uma dependência do branch que não será executada a tempo do branch ser finalizado no ID, por favor, insira uma instrução sll $zero, $zero, 0 antes da instrução de branch. O Forwarding nesse caso, não funcionará porque a instrução ainda não foi executada.
- Ao utilizar a instrução "jr", o programador deve ficar atento a adicionar corretamente o valor no registrador. Caso a instrução desejada para seguir no jr, esteja na posição 4 contando a partir do 1, adicione 3 no registrador referente. Para mais informações, utilize o exemplo_funcao.asm em base/exemplos_testados
- Por favor, utilize instruções junto ao label. A maneira de funcionamento depende disso. Exemplo abaixo:
EXIT: add, $s0, $s1, $s2
Correto e aceitável.
EXIT:
add, $s0, $s1, $s2
Correto, porém não aceitável para o simulador.