FERRAMENTAS LINUX: GCC para o RISC-V agora conta com o suporte ao -mcpu=native e -mtune=native

quinta-feira, 27 de agosto de 2026

GCC para o RISC-V agora conta com o suporte ao -mcpu=native e -mtune=native


GCC para RISC-V agora tem o suporte a -mcpu=native e -mtune=native! Entenda como funciona, quais processadores são suportados e comece a compilar com otimização automática hoje mesmo.


O ecossistema do RISC-V acaba de receber uma atualização significativa que promete facilitar a vida de desenvolvedores e entusiastas da arquitetura aberta. Um engenheiro da SiFive, Kito Cheng, enviou patches para o GCC (GNU Compiler Collection) que adicionam suporte às opções -mcpu=native e -mtune=native para a arquitetura RISC-V.

Se você já compilou código em ambientes x86_64 ou ARM, provavelmente já utilizou essas flags para otimizar automaticamente os binários para o processador do seu sistema. Agora, essa mesma conveniência chega ao mundo do RISC-V — e neste artigo, vamos explorar o que isso significa, como funciona e por que você deveria se importar.


O que são -mcpu e -mtune ?


Antes de mergulharmos na novidade, vale um rápido resumo sobre o que essas flags fazem.


-mcpu: define o modelo de CPU alvo

A flag -mcpu informa ao compilador qual processador específico está sendo alvo. Com isso, o GCC pode gerar código que aproveita instruções exclusivas daquele modelo, além de ajustar parâmetros de agendamento de instruções.


-mtune: otimiza o desempenho sem perder compatibilidade

Já o  -mtune foca em otimizar o código para um processador específico, mas sem utilizar instruções que não existam na arquitetura base definida por -march. É uma forma de extrair o máximo de desempenho sem sacrificar a compatibilidade com outros processadores da mesma família.


E o -march ?

O  -march define o conjunto de instruções base (ISA) que o compilador pode utilizar. É a flag que determina, por exemplo, se o código pode usar extensões vetoriais (RVV) ou criptográficas.


Produto Afiliado


Chega de sofrer com a falta de portas USB-A no seu notebook ou tablet! Com o Anker Adaptador OTG USB-C para USB 3.0 (pacote com 2), você expande as possibilidades do seu dispositivo de forma simples, rápida e inteligente.

Transforme qualquer porta USB-C em uma porta USB-A universal e conecte pendrives, mouses, teclados, HDs externos, impressoras e muito mais. E o melhor: com velocidade de transferência de até 5 Gbps, você move filmes, músicas e arquivos pesados em segundos.






Por que este é o adaptador que você precisa ?


🖥️ Design Ultra-Fino: Conecte dois adaptadores lado a lado nas portas USB-C do seu MacBook Pro ou notebook sem nenhum bloqueio.

🔩 Construção Premium: Feito em alumínio Space Gray resistente a arranhões, combinando perfeitamente com seus dispositivos e aguentando o uso do dia a dia.

💪 Durabilidade Extrema: Os conectores são projetados para suportar mais de 10.000 conexões e desconexões – ou seja, um adaptador para a vida toda.

✅ Conexão Confirmada: Um pequeno LED indica que o adaptador foi conectado com sucesso ao seu dispositivo.

🌍 Sustentável: Produto certificado com características sustentáveis reconhecidas por certificações confiáveis.

Por que escolher a Anker?
Junte-se aos mais de 55 milhões de usuários que confiam na tecnologia líder de mercado da Anker. Com 4,7 de 5 estrelas em mais de 23 mil avaliações na Amazon, este é um produto que entrega o que promete.

"Ótimo adaptador, excelente qualidade." – Avaliação de cliente.


Anker Adaptador otg USB-C para USB 3.0 pacote com 2, adaptador usb tipo c -> https://link.amazon/B0jcKV5Qa

Eu ganho uma comissão quando você faz uma compra.


A novidade: O suporte ao "native" para o RISC-V no GCC


Até agora, usuários de RISC-V precisavam especificar manualmente os valores de -mcpu e -mtune — quando queriam otimização —, o que exigia conhecimento prévio do hardware em uso. Com os patches enviados por Kito Cheng, da SiFive, o GCC agora permite usar:

bash
gcc -mcpu=native -mtune=native meu_programa.c -o meu_programa

O compilador identifica automaticamente o processador RISC-V em execução e aplica as otimizações mais adequadas.


Como funciona a detecção automática ?


O GCC identifica o processador em uso através da leitura de registradores específicos do RISC-V:

  • mvendorid — identifica o fabricante do core.
  • marchid — identifica a arquitetura do core.
  • mimpid — identifica a implementação do core.

Essas informações são obtidas via hwprobe ou diretamente do arquivo /proc/cpuinfo.


Quais processadores já são suportados ? 


Os patches melhoram significativamente a identificação para diversos cores RISC-V populares:

Além disso, o GCC 17 já conta com suporte direto para -mcpu=spacemit-x100 e -mtune=spacemit-x100.


Por que isso é importante para os desenvolvedores RISC-V ?


1. Compilação otimizada sem esforço

Com -mcpu=native, você não precisa mais pesquisar qual é o core exato da sua placa de desenvolvimento. Basta compilar e o GCC faz o resto. Isso é especialmente útil para:


  • Desenvolvedores de software embarcado que testam em diferentes. hardwares

  • Entusiastas que querem extrair o máximo desempenho de seus sistemas.


2. Alinhamento com outras arquiteturas


x86_64 e ARM já suportam essas flags há anos. Com essa adição, o RISC-V se torna uma opção ainda mais atraente para quem deseja uma experiência de desenvolvimento consistente entre diferentes arquiteturas.


Limitações e ressalvas


Nem tudo são flores. Os patches atuais apresentam algumas limitações importantes:

⚠️ Sem suporte para designs híbridos / assimétricos


Atualmente, o suporte a -mcpu=native e -mtune=native não funciona em sistemas com cores RISC-V assimétricos (big.LITTLE ou similares). O GCC não consegue determinar qual core está sendo usado em cada momento, o que pode levar a otimizações subótimas.

⚠️ -mcpu não sobrescreve -march ou -mtune

Uma particularidade importante: no GCC para RISC-V, a flag -mcpu não sobrescreve valores previamente definidos por -march ou -mtune. Ou seja, se você especificar:

bash
gcc -march=rv64gc -mcpu=native programa.c

O -mcpu=native definirá apenas o -mtune adequado, mas não alterará o -march. Isso significa que você pode perder otimizações se o -march definido for mais restrito que o suportado pelo seu processador.


Perguntas Frequentes (FAQ)


1. Em qual versão do GCC o suporte a -mcpu=native estará disponível ?

Os patches foram enviados em agosto de 2026 e, eles devem ser mesclados a tempo do lançamento do GCC 17, previsto para 2027. Os usuários que compilarem o GCC a partir do branch master podem ter acesso antecipado.


2. Posso usar -mcpu=native em qualquer placa RISC-V ?

Sim, desde que o processador seja reconhecido pelo GCC. Atualmente, há suporte para cores da SiFive (P550, P870-D, U74) e SpacemiT (X60, X100, A100). O suporte tende a crescer conforme novos patches forem adicionados.


3. Qual a diferença entre -mcpu=native e -march=native ?


O RISC-V não possui -march=native no GCC. O -mcpu=native é o equivalente funcional, pois define tanto o conjunto de instruções (-march) quanto as otimizações de agendamento (-mtune) com base no processador detectado. Entretanto, lembre-se: -mcpu não sobrescreve um -march explicitamente definido.


📋 Checklist para testar o -mcpu=native no seu sistema RISC-V


Copie e use esse Checklist

1. Verifique a versão do GCC: gcc --version

2. Se necessário, compile o GCC a partir do branch master

3. Identifique seu processador: cat /proc/cpuinfo | grep -E "mvendorid|marchid|mimpid"

4. Compile um programa simples com -mcpu=native: gcc -mcpu=native hello.c -o hello

5. Compare com uma compilação sem otimização: gcc hello.c -o hello-basico

6. Meça o desempenho: time ./hello vs time ./hello-basico

7. Teste com flags adicionais: -O2 -mcpu=native

8. Compartilhe seus resultados com a comunidade!


Conclusão e chamada para ação

A adição de suporte a -mcpu=native e -mtune=native no GCC para RISC-V é um marco importante para a maturidade da arquitetura. Depois de anos de espera, desenvolvedores finalmente terão a mesma conveniência de compilação otimizada que já existe em x86 e ARM.

Se você trabalha com RISC-V — seja em placas de desenvolvimento, sistemas embarcados ou servidores —, essa é uma ótima notícia. O próximo passo é testar, contribuir com feedback e ajudar a comunidade a expandir o suporte para mais cores e configurações.


Nenhum comentário:

Postar um comentário