FERRAMENTAS LINUX: O LLVM 10 adiciona uma opção para ajudar a compensar o impacto no desempenho do microcódigo Intel JCC

quinta-feira, 16 de janeiro de 2020

O LLVM 10 adiciona uma opção para ajudar a compensar o impacto no desempenho do microcódigo Intel JCC



Confira !!



Em novembro, foi divulgado o Intel Jump Conditional Code Erratum, que exigia um microcódigo atualizado da CPU para atenuar o impacto causado no desempenho da placa. Mas os desenvolvedores da Intel estavam trabalhando em patches de montadores para ajudar a reduzir esse impacto no desempenho . Os patches do GNU Assembler foram mesclados em dezembro, enquanto agora à frente do LLVM 10.0, essa cadeia de ferramentas alternativa tem uma opção para ajudar a recuperar parte do desempenho perdido.

No lado do GNU, a opção exposta é "-bramos dentro dos limites de 32B" para alterar o tratamento das instruções de salto para auxiliar na redução do desempenho atingido pela atualização do microcódigo da CPU Intel para Skylake por Cascadelake. (Mais detalhes no originalArtigo do JCC , que inclui benchmarks iniciais do impacto do JCC e do suporte mitigado que está disponível no Clear Linux da Intel desde a data de divulgação.)



Os desenvolvedores de LLVM, desde novembro, discutem seu tratamento equivalente para ajudar a reduzir o impacto no desempenho dos processadores afetados a partir desta atualização de microcódigo. Eles começaram as mudanças da chegada no final de dezembro, enquanto agora os bits necessários LLVM e Clang agora estão expostos.

Na semana anterior ao congelamento do recurso LLVM 10.0, a opção necessária agora está disponível: --x86-branches-dentro de 32B-limites . A confirmação adicionando --x86-branches-dentro de 32B-limites explica: "Como temos o suporte nop verificado e parece maduro (*), acho que é hora de adicionar o sinalizador mestre. Por enquanto, ele será padronizado como nop padding, mas assim que o suporte a prefix padding chegar, atualizaremos os padrões. (*) Agora posso confirmar que os testes posteriores das alterações que chegaram até o momento - nop padding e suporte do compilador para supressões - estão passando em todos os testes funcionais que lançamos nele. Ainda pode haver algo à espreita, mas obtivemos cobertura suficiente para ter certeza da abordagem básica. Observe que o novo sinalizador pode ser usado ao montar um arquivo .s ou ao usar o montador integrado diretamente do compilador. O posterior usará todo o mecanismo de supressão e sempre deve gerar o código correto. "

Para o Clang 10, a opção é-mbranches-dentro-32B-limites e apenas pousou também. Esta opção tem a mesma nomeação que no lado GNU. Essa opção de driver Clang foi adicionada aqui .

Esse suporte ao LLVM / Clang 10.0 para ajudar a compensar o impacto no desempenho do microcódigo JCC Erratum não é ativado por padrão.

O LLVM 10.0 entrou na ramificação de congelamento / código de recursos ontem e deve permanecer estável no final de fevereiro.

Fonte

Até a próxima !!

Nenhum comentário:

Postar um comentário