Confira !!
Os engenheiros do Google têm trabalhado no Machine Function Splitter como meio de tornar os binários até um pouco mais rápidos, graças a essa abordagem baseada em compilador. Agora eles estão procurando fazer o upstream do divisor de funções da máquina no LLVM.
O divisor de funções da máquina é um passo de otimização de geração de código para dividir funções de código em partes quentes e frias. Eles estão fazendo isso com base em pesquisas que, em aproximadamente metade das funções de código, mais de 50% dos bytes de código nunca são executados, mas geralmente carregados no cache de dados da CPU.
O divisor de funções da máquina, com a divisão de funções em caminhos quentes e frios, garantirá que os caminhos quentes sejam carregados no cache da CPU, mas as partes provavelmente não serão executadas, economizando espaço limitado no cache para outro código quente.
Os engenheiros do Google com o Machine Function Splitter descobriram que este LLVM oferece uma melhoria média de 2,33% no tempo de execução, graças à redução de erros no cache L1i e nas taxas de erros TLB. Eles descobriram que as falhas do iTLB reduziram de 16% a 35%, enquanto as perdas do sTLB reduziram de 62% a 67%. Este divisor de funções foi testado para ajudar os sistemas Intel e AMD. Ao testar com o SPECInt 2017, eles descobriram que a média geométrica da taxa int melhora em 1,6%.
É uma pequena melhoria, mas todo o trabalho se soma e não é ruim apenas para uma passagem de otimização do compilador. Mais detalhes sobre o divisor de funções da máquina proposto para LLVM através da lista de discussão LLVM .
Até a próxima !!
Nenhum comentário:
Postar um comentário