FERRAMENTAS LINUX: O LLVM inicia as remessas preliminares de desembarque em torno do JCC Erratum da Intel, suporte ao GAS

domingo, 22 de dezembro de 2019

O LLVM inicia as remessas preliminares de desembarque em torno do JCC Erratum da Intel, suporte ao GAS



Confira !!

Em novembro, foi divulgada a errata do Intel Jump Conditional Code (JCC) que afeta a Skylake e as CPUs mais recentes que podem levar a "comportamento imprevisível" quando as instruções de salto atravessam as linhas de cache. A Intel emitiu uma atualização de microcódigo da CPU para resolver o problema a um custo de desempenho, mas com alguma mágica da cadeia de ferramentas do compilador, é possível mitigar uma boa parte desse impacto.

A Intel mandou os patches do GNU Assembler em torno do JCC Erratum e, da mesma forma, trabalhos em andamento no campo LLVM, devido ao seu uso cada vez maior. Os desenvolvedores do LLVM estão debatendo seus próprios patches para ajudar a mitigar o impacto do JCC Erratum .

Esse debate LLVM ainda está em andamento, mas na sexta-feira alguns trabalhos preliminares foram mesclados para levar a discussão adiante. O pouso inicial do patch no LLVM 10 explicou:
AVISO: Se você está olhando para este patch porque procura uma atenuação total do desempenho do Intel JCC Erratum, não é isso!
Este é um patch preliminar para atenuar as regressões de desempenho causadas pela atualização de microcódigo da Intel para o Jump Condicional Code Erratum.
O patch adiciona a infra-estrutura do assembler e as opções de linha de comando necessárias para exercitar a lógica do TESTE INTERNO. Estes NÃO são sinalizadores públicos e não devem ser usados ​​para nada que não seja o próprio teste / depuração do LLVM. É provável que eles mudem tanto na ortografia quanto no significado.
AVISO: Este patch está intencionalmente incorreto em algumas bases de dados. Precisamos, e ainda não fornecemos, um mecanismo para ativar / desativar seletivamente o preenchimento. A conversa sobre isso continuará paralelamente ao trabalho de extensão dessa infraestrutura para oferecer suporte ao preenchimento de prefixo.
O objetivo aqui é fazer com que o assembler alinhe instruções específicas para que não cruzem nem terminem em um limite de 32 bytes.
Portanto, as bandeiras ainda não são públicas e ainda não são estáveis, mas é um começo e esperamos que a discussão avance. Embora em meados de janeiro seja o congelamento do recurso LLVM / Clang 10.0, espero que o trabalho possa se reunir a tempo. O trabalho do LLVM continua a ser discutido aqui .


Em Binutils a montante, seus remendos do JCC Erratum chegaram há pouco mais de uma semana sem muita alarde. Os patches que chegaram lá exigem a configuração de -ranches-dentro-32B-limites para o GNU Assembler (GAS), pois ele não está ativado por padrão. Quando se trata do suporte à cadeia de ferramentas GNU, a única distribuição Linux que eu conheço fornecendo suporte corrigido para ajudar a compensar esse impacto no desempenho é o Clear Linux, onde o comportamento mitigado é aplicado por padrão.

Fonte

Até apróxima !!

Nenhum comentário:

Postar um comentário