FERRAMENTAS LINUX: Os desenvolvedores de LLVM ainda estão debatendo como lidar com a mitigação de erros de JCC da Intel

quarta-feira, 25 de março de 2020

Os desenvolvedores de LLVM ainda estão debatendo como lidar com a mitigação de erros de JCC da Intel




Confira !!


Foi divulgado em meados de novembro o Intel JCC Erratum, que exigia uma atualização do microcódigo da CPU para atenuar e que, por sua vez, tinha amplos resultados de desempenho. Mas, por meio de atualizações da cadeia de ferramentas, parte dessa sobrecarga pode ser compensada. Os patches do GNU Assembler foram rapidamente mesclados e novas opções expostas para ajudar a diminuir esse desempenho, mas no lado do LLVM os desenvolvedores ainda estão trabalhando na mitigação, com algumas decisões de design ainda a serem tomadas.

Alguns trabalhos do LLVM foram mesclados para alterar o comportamento das instruções de salto que ultrapassam os limites de 32 bytes. Mas os desenvolvedores da Intel e a comunidade LLVM upstream têm trabalhado para finalizá-lo e realizar trabalhos relacionados à errata "Jump Condicional Code".

Uma nova discussão na lista de discussão do LLVM descreve o estado atual do LLVM da mitigação do JCC e as próximas etapas.

Agora temos suporte em árvore para alinhamento de tais ramificações por meio de preenchimento de nop e suporte limitado para preenchimento de instruções existentes com prefixos ou valores imediatos maiores. Isso sobreviveu a vários dias de testes dedicados e parece ser razoavelmente robusto. O suporte de preenchimento aplica-se ao alinhamento de ramificação para a mitigação, mas também às diretrizes de alinhamento normais.
Os patches originais propuseram uma abordagem um pouco diferente da que acabamos adotando - principalmente por causa de preocupações com sobrecarga de memória. No entanto, houve também um desacordo mais profundo sobre os tópicos de revisão originais (D70157 e outros) que nunca foram resolvidos e parece que estamos em um ponto em que isso precisa de atenção. Em suma, a questão é como o suporte ao assembler deve ser tratado.

O problema que está sendo decidido agora é o manuseio de arquivos .s fornecidos pelo usuário que estão sendo alimentados para o assembler e não apenas a saída do compilador. Os interessados ​​em obter mais detalhes técnicos da mitigação e os assuntos discutidos agora podem conferir este tópico da lista de discussão .

O microcódigo da CPU Intel que mitiga o JCC Erratum agora é bastante difundido e a maioria dos usuários de Linux já deve estar usando-o já para essa mudança que afeta o Skylake através dos processadores Cascadelake. O suporte ao GNU Assembler está lá fora, mas, além do Clear Linux, não vi nenhuma distribuição Linux usando os novos sinalizadores de assembler por padrão para ajudar no desempenho. Obviamente, no lado LLVM, o assunto ainda está sendo resolvido.


Fonte

Até a próxima !

Nenhum comentário:

Postar um comentário