GithubHelp home page GithubHelp logo

simulador-mips's Introduction

simulador-mips

Repositório para a atividade da disciplina Arquiteturas de Computadores

O Projeto

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.

Versão do Python

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.

Modo de Execução

git clone https://github.com/Pruzny/simulador-mips
cd simulador-mips
python main.py

Utilizando o simulador

  1. Executando as instruções: Selecione a caixa que contém as etapas do pipeline e aperte espaço.
  2. Visualizando os registradores e a memória de dados: Selecione a caixa que deseja e mova com o botão 3 do mouse (scroll).
  3. 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.
  4. 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".
  5. A memória de dados e os registradores colocará os valores em hexadecimal.
  6. Nosso simulador já está tratando os hazards possíveis nativamente, sem possibilidade de ativação ou desativação.
  7. 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.
  8. 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.
  9. 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
  10. 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.

  1. As instruções aceitas estará na imagem abaixo. Junto com a maneira de calculo que ocorrerá na etapa EX. Salvo instruções de branch que serão executadas na etapa ID. Screenshot_20220717_135718

simulador-mips's People

Contributors

asunnya avatar pruzny avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

asunnya

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.