FERRAMENTAS LINUX: O Linux pode perseguir os níveis de recursos da microarquitetura x86_64

sábado, 11 de julho de 2020

O Linux pode perseguir os níveis de recursos da microarquitetura x86_64



Confira !!



A partir do recente trabalho da GNU glibc em lidar melhor com as otimizações modernas de CPU, com extensões de conjuntos de instruções mais recentes nas famílias de produtos Intel e AMD, o conceito de níveis de recursos de microarquitetura x86-64 está sendo discutido por desenvolvedores de código aberto / Linux.

A idéia desses níveis de recursos é dividir as instruções suportadas além da base x86_64 na daquelas suportadas em horários razoáveis ​​pelos processadores Intel e AMD. Embora as CPUs Intel / AMD mais recentes geralmente suportem mais extensões do conjunto de instruções, há outras dores de cabeça envolvidas no manuseio atual dos recursos da CPU x86_64, considerando os tipos de CPUs Intel Atom modernas que suportam apenas um subconjunto das extensões suportadas pelas CPUs Core e Xeon, assim, a criação desses níveis de recursos razoavelmente sãos está sendo discutida pelos desenvolvedores da Red Hat com a contribuição dos engenheiros da Intel e da AMD.

Com esses níveis de recursos, permitiria segregar melhor as diferentes classes de CPUs Intel / AMD x86_64 e facilitaria as distribuições Linux a oferecer níveis diferentes de suporte ou requisitos básicos para suas imagens x86_64. A proposta foi enviada hoje por Florian Weimer, da Red Hat, que está trabalhando no glibc HWCAPS, como parte de uma melhor permissão das otimizações do AMD Zen. Da parte da Red Hat, eles discutiram o aumento dos requisitos básicos de CPU no Fedora e planejam abandonar o antigo suporte de CPU no Red Hat Enterprise Linux 9 . Para o RHEL9, tem sido falado sobre um possível requisito básico de ter suporte para a CPU AVX2, mas nada parece definitivo ainda.

Esses diferentes níveis de recursos para x86_64 no momento estão sendo propostos como:

Nível A- CMPXCHG16B, LAHF / SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3. Mal indo além dos requisitos básicos do x86_64.

Nível B - Nível A + AVX. O vintage da Intel Sandy Bridge e da AMD Jaguar.

Nível C - Nível B + AVX2, IMC1, IMC2, F16C, FMA, LZCNT, MOVBE. O objetivo dos sistemas da era Intel Haswell.

Nível D - Nível C + AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL. Nesta fase, com o foco no AVX-512, apenas os atuais CPUs Intel Xeon Scalable e Ice Lake.

Obviamente, avançando para as gerações futuras de CPU, níveis adicionais poderiam ser facilmente introduzidos na construção desse conceito de nível x86-64.

Se essa abordagem no nível x86_64 for acordada e chegar a algum consenso, o GNU e o LLVM poderão começar a canalizar o manuseio da biblioteca para verificar primeiro o nível de recurso mais otimizado, retornando ao mais básico / mais antigo até corresponder à CPU host. A partir daí, ao carregar bibliotecas dinamicamente e havendo várias compilações da referida biblioteca, ele tentaria carregar a melhor versão suportada, a fim de buscar o melhor desempenho. Essa abordagem de nível torna as coisas muito mais simples, considerando, de outra forma, a multiplicidade de famílias / gerações diferentes de CPUs da Intel e da AMD para ter um subconjunto mais razoável de bibliotecas / binários para gerenciar. Ou esses níveis, conforme mencionado anteriormente, poderiam ser usados ​​para distribuições Linux para aumentar seus requisitos básicos além do x86_64 convencional.

Será interessante ver aonde a discussão leva enquanto, por enquanto, a ideia provisória é apresentada na lista de discussão em vários projetos diferentes.


Fonte

Até a próxima !

Nenhum comentário:

Postar um comentário