Coder Social home page Coder Social logo

tarcidio / trabalho-org-arq-comp-02 Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 9.7 MB

Material educativo: implementação e simulação do processamento em pipeline de um processador x32 de arquitetura RISC-V. Link Logisim-ITA: https://logisim.altervista.org/

trabalho-org-arq-comp-02's Introduction

Trabalho 02 SCC0902 Organização e Arquitetura de Computadores:

Autores:

  • Tarcídio Antônio Júnior - 10748347 ([email protected])
  • Jade Bortot de Paiva - 11372883 ([email protected])
  • Gabriel Barbosa de Oliveira - 12543415
  • Luís Filipe Vasconcelos Peres - 10310641

Introdução

A disciplina de Organização e Arquitetura de Computadores é crucial para profissionais de tecnologia da informação. Ela oferece uma compreensão sólida do funcionamento interno dos computadores e seus componentes, sendo fundamental para o desenvolvimento de softwares e hardwares eficientes. Além disso, o estudo dessa disciplina ajuda a solucionar problemas em sistemas computacionais, identificando falhas de desempenho e segurança e encontrando soluções apropriadas.

Objetivo do trabalho

O objetivo deste trabalho é implementar e simular um processador x32 RISC-V em pipeline usando o Logisim. A técnica de pipeline é empregada para otimizar o desempenho do processador, dividindo as instruções em estágios e executando-os simultaneamente. Compreender o funcionamento do pipeline e seus componentes básicos é fundamental para compreender a arquitetura de um computador.

Além da implementação, serão realizados testes utilizando instruções básicas para verificar a funcionalidade do processador simulado. O trabalho também busca ser um recurso educativo, fornecendo material para os futuros alunos da disciplina de Organização e Arquitetura de Computadores.

Ferramentas

Foi utilizado o simulador Logisim-ITA, uma ferramenta gratuita de simulação de circuitos digitais. Ele possui uma interface gráfica intuitiva que permite a criação e teste de circuitos combinacionais e sequenciais. O Logisim-ITA é popular entre estudantes, educadores e entusiastas da eletrônica digital devido à sua facilidade de uso. Possui uma ampla biblioteca de componentes lógicos, como portas, flip-flops e registradores, que podem ser arrastados e soltos na interface. Além disso, o Logisim-ITA oferece recursos de simulação e modularização, permitindo a criação de subcircuitos reutilizáveis para facilitar a construção de circuitos mais complexos. Para usar o Logsim, siga as instruções abaixo:

  1. Acesse o site https://logisim.altervista.org/
  2. Role até o fim da página
  3. Clique em "DOWNLOAD"
  4. Em segundos, o arquivo .exe do Logsim será baixado
  5. Vá até a pasta de "Downloads" e abra o arquivo baixado

Também foi usado como base o livro "GUIA PRÁTICO RISC-V: ATLAS DE UMA ARQUITETURA ABERTA": livro abrangente que explora a arquitetura RISC-V de forma prática. Ele apresenta os conceitos fundamentais e a implementação dessa arquitetura de processador aberta. Exploramos principalmente a página 17 e 18, onde consta as instruções.

Discussão e resultados

Vídeos:

Para facilitar a discussão de todo o trabalho, fizemos vídeos que descrevem melhor os componentes e a implementação. Segue:

Subcircuitos:

Neste trabalho, implementamos os seguintes subcircuitos:

  • banco_de_registradores.circ: circuito que representa o conjunto de registradores do processador;
  • conversor_32_23.circ: como a memória RAM do Logisim é endereçada com, no máximo, 24 bits, não podemos utilizar os 32 bits da arquitetura. Para converter, modularizamos um pequeno circuito que captura os 24 bits menos significativos;
  • detector_tipo_instrucao.circ: subcircuito usado na unidade de controle para identificar o tipo da instrução;
  • immediate_generator.circ: circuito que determina o valor imediado da instrução;
  • unidade_controle.circ.circ: figura central do processador, é quem maestra os sinais de controle;
  • unidade_controle_ula.circ: determina qual operação deve ser feita na ULA;
  • unidade_logica_aritmetica.circ: componente que faz os cálculos necessários para a instrução;
  • monociclo.circ: primeiro componente principal. Para construir a pipeline, fizemos a monociclo primeiro;
  • pipeline.circ: componente principal o qual é o objetivo do trabalho.

Instruções:

Implementamos as seguintes instruções:

  • Tipo R: add
  • Tipo I: lw
  • Tipo S: sw
  • Tipo B: beq
  • Tipo J: jal

Código:

O código que está no "MEMORIA_INSTRUCOES" é:

0x00: lw t0, 4(zero)

0x04: lw t1, 8(zero)

0x08: add zero, zero, zero

0x12: add zero, zero, zero

0x16: add t2, t1, t0

0x20: add zero, zero, zero

0x24: add zero, zero, zero

0x28: sw t2, 16(sp)

0x32: beq t3, zero, 40

0x68: j ra, -0x68 (111111111111110011000)

Veja melhor no arquivo "instrucoes.txt".

Funcionamento:

Desafios

Dentre os desafios enfrentados, podemos citar:

  1. Fazer subcircuitos que não sabiamos como funcionava de fato. O principal exemplo foi o banco de registradores;
  2. Manipular os fios de forma que todo o circuito fosse o mais didático possível;
  3. Sincronizar o clock para que resolvesse o problema da dependência estrutural

Pontos de melhoria para os próximos alunos

  1. Implementar outras instruçoes da arquitetura;
  2. Implementar técnicas que resolvam melhor o problema de dependência de dados;
  3. Implementar cache

Quer nos ajudar?

Se encontrar erros neste projeto, por favor, faça um pull ou nos chame para conversar! Adoraríamos melhorar este trabalho para os próximos alunos. Se implementar uma melhoria (instruções, forwarding, cache, dentre outras), avise-nos! Anexaremos o link do seu trabalho neste git hub.

Vamos melhorar o aprendizado desta disciplina ;)


Instituto de Ciências Matemáticas e de Computação (ICMC) - Universidade de São Paulo (USP)

trabalho-org-arq-comp-02's People

Contributors

tarcidio avatar jade16 avatar

Watchers

 avatar

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.