Linux Kernel

Linus Torvalds critica modelo de níveis de recurso no x86_64

Linus Torvalds rejeita os níveis de recurso do x86_64, chamando-os de "completamente quebrados" e defendendo soluções mais simples e eficientes no kernel Linux.

Linus Torvalds reclama de bugs em hardware e de ataques teóricos da CPU
Linus Torvalds garante que, após 30 anos, Linux não é um projeto morto

O fundador do Linux, Linus Torvalds, manifestou sua opinião contundente sobre os níveis de recurso do x86_64 em meio a uma série de patches para o kernel Linux que visam a otimização da arquitetura. Em uma resposta a um patch específico envolvendo as flags do compilador no Kconfig do x86, Torvalds deixou claro que a abordagem atual desses níveis de recurso é inaceitável para ser incorporada ao kernel.

O que são os níveis de recurso do x86_64?

Os níveis de recurso do x86_64 foram introduzidos pelos desenvolvedores das toolchains de compiladores como uma forma de agrupar extensões da ISA (arquitetura de conjunto de instruções) que surgiram ao longo dos anos:

  • x86_64-v2: Inclui suporte a SSE3, SSE4.2 e outros recursos, compatível com CPUs como AMD Bulldozer e Intel Nehalem.
  • x86_64-v3: Introduz AVX, AVX2, BMI2, FMA e outras extensões da era Intel Haswell e AMD Excavator.
  • x86_64-v4: Exige suporte ao AVX-512, além de todas as extensões do v3.

A ideia desses níveis é criar uma forma simplificada de representar o suporte a determinados recursos em CPUs modernas. No entanto, Linus Torvalds criticou fortemente essa abordagem.

Por que Linus Torvalds é contra os níveis de recurso do x86_64?

Torvalds apontou várias razões técnicas e práticas para rejeitar essa ideia no kernel Linux:

  1. Modelo Não Linear: Ele destacou que os recursos da CPU não seguem um progresso linear. Recursos como o AVX-512, por exemplo, não são suportados por algumas CPUs modernas da Intel, criando inconsistências.
  2. Complexidade Adicional: Para Torvalds, esses níveis adicionam mais complexidade ao invés de simplificar. Ele exemplificou que seria mais direto verificar se uma instrução específica, como cmpxchgb16, é suportada, em vez de entender o que cada nível como “v3” representa.
  3. Caráter Não Oficial: Ele classificou o conceito de níveis de microarquitetura como “um lixo completamente não oficial” e afirmou que isso não deveria ser introduzido nas fontes do kernel.

A postura sobre otimização para CPUs modernas

Além de criticar os níveis de recurso, Torvalds também comentou sobre as opções de compilação no kernel Linux. Ele argumentou que muitas dessas opções são históricas e não têm mais relevância nos processadores modernos:

  • Generalização: A solução proposta seria manter o kernel genérico para x86_64 com opções como -march=x86_64 -mtune=generic.
  • Otimização local: Ele sugeriu oferecer uma opção para otimização específica do sistema local usando a flag -march=native. Embora essa não seja uma solução universal, atenderia às necessidades de usuários que compilam o kernel para suas próprias máquinas.

Impactos para o futuro do kernel Linux

A rejeição de Linus Torvalds à introdução desses níveis de recurso reflete a busca por manter o kernel eficiente e livre de abstrações desnecessárias. Com CPUs modernas operando de forma mais dinâmica, o kernel deve evitar soluções que adicionem complexidade desnecessária, especialmente quando não há um ganho claro.

Conclusão

A polêmica em torno dos níveis de recurso do x86_64 destaca a importância de manter a simplicidade e a eficácia no desenvolvimento do kernel Linux. A opinião de Torvalds reafirma o compromisso com soluções técnicas que tragam benefícios reais, evitando abordagens que complicam desnecessariamente a arquitetura do sistema.

Acesse a versão completa
Sair da versão mobile