17 pontos por khwl1026 2026-01-07 | 6 comentários | Compartilhar no WhatsApp

Apresentamos o basic_RV32s, com o qual é possível aprender os fundamentos do projeto de CPUs RISC-V por meio de prática com 4 CPUs e 2 projetos de SoC.

Resumo do basic_RV32s

  • Softcore RISC-V RV32I capaz de rodar em FPGA, criado ao longo de 6 meses durante o serviço militar
  • Alcançou desempenho de Dhrystone 1.11 DMIPS/MHz e Coremark 1.10 Coremark/MHz
    Desempenho entre os melhores entre artigos de CPU baseadas em RV32I projetadas na Coreia.
    (com referência a 11 artigos dentre 126 do RISS que incluem benchmark RV32I, na data de redação)
    (rodando a @50MHz)
  • Processo gradual de projeto de CPU e projeto de SoC
    • 3 núcleos single-cycle, (37F, 43F, 46F)
    • 1 núcleo com pipeline de 5 estágios, (46F5SP)
    • 2 projetos de SoC com o núcleo pipeline embarcado
      (46F5SP_SoC - Debug, Benchmark)
  • Abstração de módulos em alto nível, intuitiva e fácil de entender, e projeto correspondente
  • Fornece vários documentos para aprender projeto de CPU RISC-V
    • planilha Excel RV32I Cheatsheet
    • diário de desenvolvimento, registros de depuração
    • diretrizes de projeto de arquitetura
    • documentos com explicação da lógica de toda a arquitetura e de cada módulo
    • diretrizes de porting bare-metal
      • diretrizes de build do RISC-V GNU GCC Toolchain RV32I
      • diretrizes para execução bare-metal do benchmark Dhrystone em RV32I, entre outras
  • Fornece código em estrutura de formato duplo: clean code sem comentários e código com comentários
  • Fornece diagramas de blocos da arquitetura em nível de sinal
  • Dois estudantes do 2º ano da graduação submeteram um artigo por conta própria e apresentaram na ISOCC 2025
  • Incluído no repositório oficial de aprendizado de RISC-V, riscv/learn
    • Learning Resources - Intermediate-Level Resource

Contexto do desenvolvimento

Em 15 de dezembro de 2024, durante o serviço militar, comecei com um colega do mesmo período um projeto para criar uma CPU do zero. Há pouco tempo completou 1 ano!

Criar uma CPU RISC-V com base em fundamentos de arquitetura de computadores era algo relativamente fácil de aprender, já que existe muita teoria e muitos materiais didáticos. Mas, quando fui para o teclado, a situação pareceu bem diferente.

Embora fosse a primeira vez que eu iniciava um projeto de verdade com VerilogHDL, aprendido superficialmente na faculdade, percebi que quase não havia exemplos reais open source de RISC-V que incluíssem documentos, manuais e diretrizes para construir uma CPU RISC-V, indo além da codificação em si. (com base em riscv/learn - open implementations.)

Claro, decompor e analisar núcleos já implementados, como NEORV32 ou DarkRISCV, é uma ótima forma de aprender, mas era bastante difícil entender com precisão ou encontrar os fundamentos e as razões por trás daquele projeto em questões como filosofia de design e histórico de desenvolvimento.

Por isso, decidi expandir este projeto para algo além de uma implementação open source de CPU RISC-V: um guia open source completo para criar uma CPU RISC-V RV32I. Achei que registrar a trajetória de crescimento de um iniciante poderia virar um bom rastro para os próximos iniciantes.

Introdução ao basic_RV32s

Como está escrito no resumo acima, ele inclui logs de desenvolvimento, documentação sobre o projeto dos núcleos e anotações de erros sobre a criação de CPUs RISC-V, tendo como base a metodologia Patterson-Hennessy e mirando iniciantes em projeto de hardware RISC-V como eu.

O projeto central começa com a arquitetura 37F, que suporta 37 instruções em RV32I, e é fornecido em uma forma progressiva que se expande da seguinte maneira.

  • 37F : arquitetura base, single-cycle
  • 43F : suporte a 6 instruções de extensão Zicsr
  • 46F : suporte às instruções EBREAK, ECALL e mret
  • 46F5SP : extensão com pipeline de 5 estágios com data forwarding e preditor dinâmico de desvio FSM de 2 bits

Para implementar o núcleo em FPGA, foi projetado o 46F5SP_SoC, criado em duas versões.

  • Versão de depuração
    É possível depurar instruções e ver o processo de execução passo a passo por UART ao apertar botões.
  • Versão de benchmark
    É possível executar Dhrystone ou Coremark e obter diretamente os resultados por UART.

O 46F5SP_MMIO_SoC, atualizado recentemente, implementa MMIO com suporte a saída UART, oferecendo a funcionalidade de printf. Se esse SoC for compilado adequadamente com arquivos BSP como linker, script de boot e syscall, será possível obter diretamente os resultados de vários programas em C, como Dhrystone 2.1 e Coremark.

Encerrando

Esperamos que nossa paixão por RISC-V ajude iniciantes a dar os primeiros passos. E o ponto mais importante é que todo este projeto é open source!
Isso significa que, usando este projeto, é possível criar melhores tutoriais de aprendizado, documentação e designs de processadores para a comunidade RISC-V, e que qualquer pessoa pode contribuir livremente.

Sinto que ainda é preciso muito mais para atingir o objetivo deste projeto. Ao realizá-lo, percebi que a verificação nunca termina e, como não sou especialista, pode haver muitos erros que desconheço, inclusive vários hazards. Por isso, o repositório não foi congelado e continua aberto! Ficaríamos muito gratos se pessoas mais experientes pudessem olhar nosso trabalho e nos dar feedback. Isso ajudaria não apenas a nós, mas também todos que estudarem por meio deste projeto.

Daqui para frente

Agora, após concluir a extensão de RV32I para RV64I, estamos avançando rumo à expansão para RV64IM e, mais adiante, ao objetivo que era nosso sonho original: criar uma CPU de uso geral da Coreia do Sul (RVA23). No momento, estamos nos dedicando ao desenvolvimento até a extensão RV64IMA no repositório ima_make_rv64. Ficaremos realmente agradecidos se vocês acompanharem.

6 comentários

 
m00nny 2026-01-12

Lembro de já ter visto no passado um projeto com a frase "em andamento durante o serviço", mas não sei se é a mesma pessoa. Seja ou não uma continuação daquele projeto, isso realmente me impressiona. Essa postura de fazer a pergunta "por quê?" até sobre premissas que parecem óbvias é a base da ciência, e acho isso realmente incrível e digno de apoio.
Especialmente o fato de ser open source é muito legal. Afinal, a ciência deve pertencer a todos mais do que a qualquer um. Eu também me interessava bastante por RISC-V desde o começo, pensando em como seria se existisse um hardware totalmente open source, mas acabei me afastando cada vez mais da parte de circuitos, e, como o autor mencionou, também era difícil encontrar informações relacionadas, então deixei isso guardado. Isso me dá vontade de voltar a estudar, e acho que também vai me ajudar bastante acompanhar este trabalho. Obrigado por compartilhar com todos tanto os seus erros e tentativas quanto o conhecimento que adquiriu, e por contribuir. Também vou continuar torcendo pelo que você fizer daqui para frente.

 
khwl1026 2026-01-12

Eu também fiquei um pouco surpreso ao ler o projeto daquela pessoa. Pelo fato de também ter havido, naquela mesma época, um caso de desenvolvimento de uma CPU dentro do exército, participando de um projeto de ASIC, haha..

Li com atenção seu valioso comentário. Acho que o maior motivo de eu ter começado este projeto foi justamente por sentir muita frustração no ponto que você mencionou. E, a partir da pergunta "por quê?", naturalmente veio em seguida: "não existe um jeito melhor e diferente?"

Quando eu terminar este RV64, pretendo ajustar um pouco a filosofia de projeto e tentar conceber uma nova microarquitetura.

Muito obrigado pelo apoio. Vou continuar me esforçando daqui para frente.!

Se tiver qualquer dúvida, pode falar comigo a qualquer momento!!

 
gwondori 2026-01-09

Realmente incrível!!!

 
khwl1026 2026-01-09

Muito obrigado pela gentileza (_ _)

 
calofmijuck 2026-01-07

Sou um estudante que pesquisa CPUs, e agradeço pelos ótimos materiais! Vou torcer por vocês!

 
khwl1026 2026-01-09

Muito obrigado pelo apoio. Se tiver qualquer dúvida ao usar, pode falar comigo a qualquer momento..!