Pular para conteúdo

MC851 - Projeto em Computação I

Rodolfo Azevedo - rodolfo.azevedo@unicamp.br http://www.ic.unicamp.br/~rodolfo/mc851

Objetivo

Desenvolver um sistema computacional contendo, ao menos, um processador e seus componentes periféricos

Bibliografia

Dinâmica das aulas e atividades

  • Essa é uma disciplina de 12 créditos contendo:
  • 4 créditos em aulas às sextas-feiras, das 14h-16h na sala CC05
  • 8 créditos de atividades dos alunos no seu próprio tempo
  • Os alunos devem formar grupos de até 6 pessoas
  • Procurem utilizar as aulas de sexta-feira para tirar dúvidas e discutir o projeto

Avaliações

  • Serão realizadas 4 entregas do projeto, sempre na última sexta-feira do mês
  • As 3 primeiras entregas valem 2 pontos cada
  • A última entrega vale 4 pontos

  • As entregas serão compostas por:

  • Código fornecido através do repositório do GitHub do grupo (será detalhado na página da disciplina)
  • Pequena apresentação/demonstração durante a aula da entrega
  • Curto relatório em PDF

  • As notas individuais serão baseadas nos trabalhos em grupo e na participação dos alunos no projeto

Entrega 1 - 25/08 - 2 pontos

Para essa entrega, os alunos devem planejar e desenvolver um processador RISC-V de 32 bits, com pipeline, que suporte o conjunto RV32I. Deve ser possível desenvolver programas em alto nível para o processador e executa-los corretamente no kit de FPGA.

Para realizar essa entrega, o grupo deve:

  • Compreender e desenvolver um pipeline para o processador RISC-V;
  • Compreender e desenvolver programas de teste para o processador;
  • Compreender e desenvolver um ambiente de execução (restrito ao momento) para o processador;
  • Compreender e utilizar o ambiente de execução em FPGA para implementar o processador;

Entrega 2 - 29/09 - 2 pontos

Para essa entrega, o conjunto de instruções do processador deve ser incrementado para suportar RV32IMA, novamente com suporte de software para execução em FPGA. Além disso, um primeiro periférico precisa ser desenvolvido e integrado ao processador.

Para realizar essa entrega, o grupo deve:

  • Compreender e desenvolver a cache L1;
  • Compreender e desenvolver um periférico para o processador;
  • Compreender e desenvolver um ambiente de execução (restrito ao momento) para o periférico;
  • Compreender e utilizar o ambiente de execução em FPGA para implementar o periférico;
  • Demonstrar um código que utilize as instruções e o periférico em FPGA;

Entrega 3 - 27/10 - 2 pontos

Para essa entrega, o conjunto de instruções do processador deve ser incrementado para suportar as instruções compactas. Além disso, outro periférico precisa ser desenvolvido em integrado ao processador.

Para realizar essa entrega, o grupo deve:

  • Compreender e desenvolver um periférico para o processador;
  • Compreender e desenvolver um ambiente de execução (restrito ao momento) para o periférico;
  • Compreender e utilizar o ambiente de execução em FPGA para implementar o periférico;
  • Demonstrar um código que utilize as instruções e os periféricos em FPGA;

Entrega 4 - 01/12 - 4 pontos

A meta para essa entrega é complementar o sistema computacional desejado. Além disso, o processador deve conseguir executar programas em alto nível, compilados para o conjunto de instruções RV32IMAC.

Todas as pendências de entregas anteriores precisam ser sanadas até a entrega final.

Políticas para desenvolvimento de código

  • Você pode utilizar módulos da infraestrutura fornecida para o trabalho
  • Você pode utilizar geradores de código (chatGPT, copilot, etc) desde que indique em comentários no seu código
  • Você não pode copiar e colar código disponível na Internet
  • Você não pode copiar ou fornecer código para outros grupos dessa disciplina

Dicas

  • Não deixe acumular atividades
  • Fornecerei documentos/informações atualizadas através do Google Classroom e da página da disciplina
  • Não deixe acumular problemas
  • Se tiver dúvidas, pergunte
  • Se tiver problemas, avise
  • Não existe máquina do tempo!

O que espero para hoje?

  1. Formem os grupos de até 6 pessoas. Todo grupo tem que ter um nome!
  2. Instalar os softwares conforme guia da página da disciplina Instale nos seus outros computadores posteriormente
  3. Criar o repositório no GitHub
  4. Montar um roteiro do seu semestre Faça um arquivo no seu repositório e coloque o roteiro de ações que precisa até lá. Você pode criar issues do github se achar interessante