O que é x86-64-v3? Compreendendo os níveis da microarquitetura x86-64

O termo x86-64v3 volta a ser ponto de discussão entre usuários Linux, despertando curiosidade e questionamentos sobre sua relevância para a plataforma. Mas o que é isso, por que isso importa para o Linux e por que tanto alarido? Descubra tudo o que você precisa saber sobre x86-64v3 abaixo.

Uma breve visão geral da história da microarquitetura

A história do conjunto de instruções x86 começou há cerca de 39 anos com a introdução do Intel 80386, comumente referido como 386. Este foi um momento crucial na história da moderna computação de desktops e servidores. Lançado em 1985, o 386 foi o primeiro processador de 32 bits da Intel e foi equipado com uma unidade completa de gerenciamento de memória, permitindo executar sistemas operacionais que utilizam memória virtual. No entanto, a evolução da tecnologia x86 não parou no 386. Com o tempo, este chip mais antigo, a sua microarquitetura e as suas instruções foram eliminadas. O Debian Linux descontinuou o suporte 386 em 2005 e o removeu completamente em 2007. O kernel Linux seguiu o exemplo em 2012, apesar do desenvolvimento original do Linux em máquinas 386 e 486.

O 586, o 686 e assim por diante seguiram seus antecessores, que mais tarde foram chamados de Pentium, Pentium II e assim por diante. Cada nova versão introduziu instruções adicionais ao conjunto de instruções x86 e novas extensões como MMX e SSE. Eventualmente, os sistemas operacionais comuns começaram a eliminar totalmente o suporte para x86 de 32 bits, inaugurando a era de 64 bits. Por exemplo, o Windows 11 é exclusivamente de 64 bits, o Ubuntu deixou de oferecer suporte a PCs de 32 bits em 2018 e o macOS fez a transição para 64 bits totalmente em 2011.

x86-64v3 adiciona essencialmente AVX2, MOVBE, FMA e algumas instruções adicionais de manipulação de bits.

No entanto, o advento da era de 64 bits não significou o fim do progresso do x86. O primeiro marco aqui foi a introdução do conjunto de instruções AMD64 x86-64 básico com MMX, SSE e SSE2. Isso foi essencialmente usado pela família de processadores AMD K8 de 2003 e garantiu compatibilidade com os primeiros EMT64T – processadores de 64 bits da Intel. Resumindo, os processadores da AMD foram os primeiros a serem lançados em 64 bits e foram eles que definiram a arquitetura x86-64 bits.

A próxima evolução deste conjunto de instruções de linha de base é conhecida como x86-64v2, que inclui SSE3, SSE4.1 e SSE4.2. Isso corresponde às CPUs principais de 2008 a 2011, como o AMD Bulldozer e o Intel Nehalem. Em maio de 2023, o Red Hat Enterprise Linux 9 descontinuou o suporte para processadores x86-64 bits de linha de base mais antigos, exigindo suporte de processadores x86-64v2. O openSUSE Tumbleweed também começou a transição para exigir processadores v2 no final de 2023. O SUSE Linux Enterprise Server recomenda a v2 para desempenho ideal e pode descontinuar o suporte para processadores mais antigos no futuro.

O que é x86-64v3?

Oliver Cragg / Autoridade Android

x86-64v3 essencialmente adiciona instruções vetoriais até AVX2, MOVBE, FMA e algumas instruções adicionais de manipulação de bits. AVX2, também conhecido como instruções Haswell, expande-se para o conjunto de instruções AVX original introduzido na microarquitetura Haswell da Intel. A instrução MOVBE permite a conversão rápida para little-endian e big-endian em hardware, trocando bytes em uma leitura da memória ou em uma gravação na memória. A instrução FMA (multiplicação-adição fundida) combina multiplicação e adição em uma única operação que calcula o resultado intermediário com precisão finita. Isto é particularmente útil para jogos, operações de matriz e aplicações de redes neurais.

O x86v3 foi implementado pela primeira vez nas primeiras CPUs da geração Intel Haswell em 2013, e a AMD o implementou em 2015 com a microarquitetura Excavator. No entanto, a linha de produtos Atom da Intel só adicionou suporte v3 com a microarquitetura Gracemont em 2021. Apesar disso, a Intel continuou a lançar CPUs Atom sem AVX ou AVX2, incluindo a linha Parker Ridge em 2022 e algumas variantes de Elkhart Lake em 2023.

É por isso que a v3 demorou a se tornar a nova linha de base, já que nem todos os processadores Intel a suportam, tornando seu mandato problemático. No entanto, estes são processadores Atom, não processadores de servidor. Portanto, o suporte v3 não é garantido e precisa ser verificado para cada processador específico. Também vale a pena mencionar que existe um x86-64v4 introduzido nas plataformas Intel Skylake e AMD Zen 4, que adiciona AVX-512.

Para testar se sua CPU possui x86-64, use o ferramenta de nível x86-64 disponível no GitHub ou no comando ld-linux no Ubuntu em outras distros. Aqui está um exemplo de string para Ubuntu:

/usr/lib64/ld-linux-x86-64.so.2 --help

Isso fornecerá uma listagem e indicará se é compatível com v2, v3 e v4.

Por que todo mundo está falando sobre x86-64v3?

Edgar Cervantes / Autoridade Android

O burburinho se deve principalmente Red Hat Linux Enterprise Linux 10 movendo para a linha de base v3. Gentoo agora está oferecendo pacotes v3, e há versões experimentais de Servidor Ubuntu usando v3. Basicamente, isso significa que, ao compilá-lo, eles usam os sinalizadores de compilador corretos para garantir que o AVX2 possa ser usado quando necessário, mas isso requer suporte de hardware. Diferentes distribuições Linux implementarão esse suporte em diferentes estágios. Por exemplo, NixOS está em transição para a v2 em 2024 e, posteriormente, para a v3 em 2027.

Comparações de distribuições Linux compiladas com linha de base ou v2 com aquelas com v3 mostram resultados de desempenho variados. Em alguns casos, há um aumento no desempenho, enquanto em outros, há uma queda no desempenho. Esta é uma tecnologia que está amadurecendo em relação aos sinalizadores do compilador e ao código que o compilador produz para diferentes casos de uso.

Só porque uma distribuição requer um certo nível de microarquitetura, não significa que o próprio Linux exija isso.

No entanto, é importante notar que só porque uma distro requer um certo nível de microarquitetura, isso não significa que o próprio Linux exija isso. Por exemplo, distribuições Linux de 32 bits ainda estão disponíveis hoje. Portanto, você sempre pode encontrar uma versão de distribuição Linux adequada ao seu hardware específico, especialmente se você tiver um PC mais antigo. O foco aqui está no que as distros mais populares e de ponta estão fazendo. É claro que se o kernel do Linux abandonasse o suporte para um determinado nível de microarquitetura como aconteceu com o 386, a questão seria diferente. Porém, ainda não estamos nessa fase.

Por último, isso se aplica apenas aos processadores de desktop x86 de 64 bits da Intel ou AMD. Não se aplica, por exemplo, aos processadores Arm que você pode encontrar em um Raspberry Pi ou em seu smartphone. Além disso, o Windows 11 já exigiu o uso de CPUs modernas, exigindo um Intel Core de oitava geração ou Zen 2 para executar o Windows 11 oficialmente.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima