FERRAMENTAS LINUX: 5+ Anos Depois: O alvo do AMD Excavator do LLVM estava faltando dois recursos

domingo, 28 de junho de 2020

5+ Anos Depois: O alvo do AMD Excavator do LLVM estava faltando dois recursos




Confira !



Demorou até 2020 para um desenvolvedor da Intel obter um patch, fornecendo suporte para duas instruções suportadas pelos processadores AMD " Excavator ", mas não expostas pelo alvo "bdver4".

Acontece que o alvo bdver4 do LLVM para CPUs Excavator estava com falta dos recursos MOVBE e RDRND. RDRND é para o gerador de número aleatório de hardware RdRand que era novo no Excavator / Bulldozer v4. MOVBE é a instrução de movimentação Big Endian para ir de / para o formato x86 Little Endian, basicamente revertendo a ordem dos bytes. O MOVBE também era novo nas CPUs AMD, começando com o Excavator. O RDRND destina-se a chamar os recursos RdRand da CPU, enquanto a instrução MOVBE pode ser útil no processamento de redes e áreas relacionadas, quando for necessário alternar o endianness.

Em 2014, a AMD enviou o patch do GCC que foi adicionando RDRND / MOVBE ao destino do compilador bdver4, mas levou seis anos até que esses recursos foram expostos pelo destino bdver4 do compilador LLVM / Clang.

Não foi a AMD que notou o suporte ausente, mas um dos engenheiros de compilador da Intel que estava trabalhando para lidar melhor com a forma como o LLVM define os recursos da CPU para o Clang e auditar a correção. Ao fazer isso, ele notou a diferença do bdver4 e teve a gentileza de lançar um patch, portanto, usar "-march = bdver4" agora pode usar o MOVBE e o RDRND, se relevante para o código que está sendo compilado.

Concedido, se você estiver usando o AMD Excavator em 2020, eu o incentivaria a considerar altamente as CPUs Zen 2 mais recentes ou o próximo Zen 3 para obter muito melhor desempenho e eficiência de energia, mas, infelizmente, demorou tanto tempo para que a deficiência do compilador LLVM fosse notado.



Fonte

Até a próxima !

Nenhum comentário:

Postar um comentário