Confira !!
Em um esforço para atender melhor às extensões de conjunto de instruções x86_64 mais novas e comuns, os desenvolvedores de conjunto de ferramentas de código aberto estão avançando com o trabalho em níveis de recursos de microarquitetura do x86_64 para serem capazes de atingir um punhado de "níveis" diferentes além da instrução x86_64 de base conjunto.
Os níveis de recursos do x86_64 são para segregar facilmente diferentes classes de CPUs x86_64 Intel / AMD na esperança de tornar mais fácil para as distribuições Linux aumentar seus requisitos básicos além de apenas x86_64 / AMD64 e melhorar as cadeias de ferramentas do compilador com um conjunto comum de níveis possíveis / recursos de hardware em geração de bibliotecas otimizadas. Isso vai junto com o trabalho realizado pela Red Hat em aumentar os requisitos de CPU x86_64 para novas versões RHEL / Fedora e para as iniciativas de otimização como o glibc HWCAPS no suporte a alguns níveis de otimização diferentes em vez de ter como alvo todas as famílias de microarquitetura de CPU Intel / AMD possíveis como é feito atualmente para otimização / ajuste de código.
Na semana passada, o LLVM Clang 12 adicionou suporte para alimentar os níveis de recursos x86_64 no compilador Clang C / C ++ e o GCC 11 também deve lançar em breve uma funcionalidade semelhante.
Os níveis de recursos definidos para x86_64 incluem:
x86-64: CMOV, CMPXCHG8B, FPU, FXSR, MMX, FXSR, SCE, SSE, SSE2
x86-64-v2: (perto de Nehalem) CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3
x86-64-v3: (perto de Haswell) AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE
x86-64-v4: AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL
Os diferentes níveis / versões podem ser alimentados agora em -march = para Clang 12 e GCC 11 se desejar otimizar para um desses alvos em vez de especificar extensões de conjunto de instruções específicas manualmente ou uma família de CPU.
Até a próxima !!
Nenhum comentário:
Postar um comentário