RISC-V: Eles Deveriam Ter Sabido Melhor

A rápida ascensão do RISC‑V como um conjunto de instruções de CPU aberto e livre de royalties está sendo contraposta a críticas contundentes sobre suas escolhas técnicas de projeto. Os comentaristas debatem se suas extensões opcionais fragmentadas, codificações de instrução incômodas e detecção fraca de recursos em tempo de execução o tornam uma base ruim para sistemas de alto desempenho ou de uso geral, ou se essas falhas são menores em comparação com os benefícios de um padrão aberto e um ecossistema crescente. Muitos concluem que, mesmo sendo uma oportunidade perdida do ponto de vista de purismo de ISA, o RISC‑V é “bom o suficiente” para substituir núcleos proprietários em projetos embarcados, MCU e aceleradores, onde custo e licenciamento predominam.

Sentimento geral

  • Muitos concordam que o artigo destaca com precisão problemas reais de projeto no RISC‑V (opcionalidade, codificações, traps, interrupções).
  • Outros argumentam que a crítica é exagerada: o RISC‑V é “bom o suficiente”, utilizável em produtos reais, e todas as ISAs têm cantos feios.
  • Vários observam que, como no Linux, “bom o bastante + grátis” pode superar “tecnicamente melhor + licenciado”.

Extensões opcionais e fragmentação

  • Principal preocupação: quase tudo é opcional; cada opção dobra o número de variantes.
  • A falta de uma maneira simples e padronizada de enumerar todas as extensões (incluindo as de fornecedor) dificulta binários portáveis, kernels e blobs.
  • Alguns dizem que isso não é um problema para embarcados (você conhece o chip exato) ou para apps em nível de SO (você mira um profile como RVA23).
  • Outros respondem que bibliotecas compartilhadas, blobs e produtos de longa duração tornam isso um problema prático, não teórico.
  • Profiles (por exemplo, RVA23) são vistos como mitigação parcial, mas não como solução completa.

Codificação de instruções, densidade de código e decodificação

  • Debate entre codificações comprimidas (16/32 bits), de largura fixa e totalmente variáveis:
    • Críticos: o RISC‑V paga os custos de complexidade da largura variável, mas só iguala a densidade de código do AArch64 em vez de superá-la claramente; codificações sobrepostas entre extensões são chamadas de perigosas e confusas.
    • Defensores: núcleos modernos já quebram/fundem instruções complexas (x86, ARM), então a abordagem do RISC‑V é comparável; afirma-se que RV64GC/RVA23 superam x86‑64 e são competitivos com AArch64 em tamanho de texto.
  • Alguns detalhes microarquiteturais (alcance do JAL, ausência de flags, layouts de imediatos) são chamados de “erros não forçados”; outros dizem que são trade-offs razoáveis para projetos de alto desempenho mais simples.

Casos de uso embarcados vs. alto desempenho

  • Muitos veem o RISC‑V como bem adequado a funções fortemente embarcadas e semelhantes a MCU, especialmente como substituto legalmente “limpo” para núcleos da classe 8051 e ARM‑M licenciados.
  • Latência de interrupção e sobrecarga de salvamento de contexto (especialmente com FP) são criticadas; alguns observam que isso pode ser mitigado por convenções melhores ou extensões (por exemplo, Zfinx).
  • Para núcleos de classe desktop/servidor, as opiniões divergem:
    • Céticos: o RISC‑V deixou passar lições do ARMv8/x86, tornando-o uma opção ruim para núcleos OoO de ponta; mercados de alta margem podem simplesmente pagar ARM.
    • Otimistas: com tempo, núcleos abertos e profiles chegarão ao desempenho da classe M-series/A-series; núcleos x86/ARM de ponta já escondem peculiaridades da ISA atrás de micro-ops.

Compatibilidade de software e detecção de recursos

  • Crítica forte de que não é possível fazer trap de instruções indefinidas de forma confiável porque elas podem pertencer a alguma outra extensão, tornando inseguro detectar recursos executando opcodes.
  • Alguns argumentam que a descoberta mediada pelo SO (device tree, /proc/cpuinfo, profiles padronizados) é suficiente para software prático.
  • Desenvolvedores de embarcados observam que muitas vezes precisam suportar famílias de chips; mudanças silenciosas de comportamento entre núcleos semelhantes (especialmente com blobs de fornecedor) são vistas como um risco sério.

Argumentos legais, de mercado e de “abertura”

  • Um tema central pró-RISC‑V: design livre de royalties, consciente de patentes, e status de “padrão aberto” são atraentes, especialmente para:
    • Dispositivos embarcados sensíveis a custo.
    • Empresas e países que querem evitar licenciamento da ARM/x86 ou alavancagem geopolítica.
  • Outros alertam que patentes sobre microarquiteturas e extensões ainda existem, e nenhuma ISA pode ser provada como totalmente imune a trolls.

RISC‑V como “framework de ISA” e direções futuras

  • Alguns tratam o RISC‑V não como uma única ISA, mas como um gerador de muitas ISAs (base + extensões combináveis).
  • Essa flexibilidade é elogiada para aceleradores (IA, GPUs, IP customizado) e núcleos hobby, mas culpada pela fragmentação do ecossistema.
  • Aparecem sugestões para:
    • Um “RISC‑VI” ou um perfil reencodificado e mais estrito que aprenda com o ARMv8 e com os próprios erros do RISC‑V.
    • Mais padronização agressiva em torno de alguns profiles bem definidos e mecanismos de consulta, em vez de adicionar cada vez mais opções granulares.