Como o processo de fabricação e a qualidade do compilador afetam o desempenho da CPU

Como o processo de fabricação e a qualidade do compilador afetam o desempenho da CPU

Eu estava lendo minhas palestras e um dos slides listava os fatores que afetam o desempenho da CPU. Não consigo entender como isso acontece.processo de fabricaçãoequalidade do compiladorafetar o desempenho da CPU

Responder1

A qualidade do compilador é a mais fácil ...

Bons compiladores sabem como converter código em instruções de CPU de maneira eficiente.

Imagine que você tem um software que faz uma equação matemática simples - digamos 1+1. Um aplicativo compilado de forma inteligente dirá à CPU para somar os números, armazenar a resposta e o trabalho estará concluído. Isso pode ser representado como:

  • Defina a memória 0 como 1
  • definir memória 1 como 1
  • adicione memória 0 a 1
  • armazenar no banco de memória 0 ..simples!

Compiladores ruins (e já vi alguns!) farão a mesma coisa, mas emitirão muitas instruções adicionais para fazer a mesma coisa, o que reduz o desempenho e torna o aplicativo mais lento. O mesmo exemplo:

  • Definir memória 0
  • Definir memória 1
  • Defina a memória 0 como 0
  • Defina a memória 1 para 0
  • Defina a memória 0 para 1
  • definir memória 1 para 1
  • recuperar valores da memória 0 e 1
  • adicione-os juntos
  • armazenar resultado na memória 0

Agora tenha em mente que um aplicativo complexo como um editor de vídeo, aplicativo gráfico, jogo ou até mesmo um processador de texto pode precisar realizar centenas de milhares (se não dezenas de milhões) de operações apenas para ser iniciado! Esse é o impacto de um bom compilador!

O processo de fabricação é uma extensão disso, pois a fabricação é a "colagem" de vários aplicativos por meio de funções compartilhadas. Se isso for bem feito, será necessário menos poder de computação para obter o mesmo resultado final.

Responder2

A qualidade (capacidade de otimização) do compilador determina quão bem o código da máquina é mapeado para os recursos de hardware. As otimizações do compilador podem reduzir a quantidade de trabalho executado (por exemplo, desenrolar um loop pode reduzir o número de ramificações, a alocação de registradores pode reduzir o número de acessos à memória, o inlining pode remover a sobrecarga da chamada e remover o código que não é utilizado pelo chamador específico), agendar o trabalho para evitar espera (por exemplo, agendar cargas mais cedo para que as instruções dependentes não tenham que esperar), explorar instruções especializadas que fazem o trabalho de forma mais eficiente (por exemplo, a vetorização pode usar instruções SIMD), organizar acessos à memória para explorar o comportamento do cache (por exemplo , transformando um array de estruturas em uma estrutura de arrays quando os loops internos tocam apenas alguns membros da estrutura).

(Algumas otimizações do compilador se aplicam a todo ou a maioria do hardware; outras são mais específicas para implementações de hardware específicas. Além disso, embora o suporte de hardware para execução fora de ordem melhore a execução de código menos bem programado, um bom agendamento de instruções ainda pode fornecer um valor mensurável , se pequeno, benefício.)

O processo de fabricação determina o uso de energia, a velocidade de comutação e a área utilizada pelos transistores (e características semelhantes de outros componentes). Obviamente, os transistores que comutam mais rapidamente permitem maior desempenho. A redução da área por transistor permite que mais transistores sejam usados ​​em um chip economicamente fabricável (que pode ser traduzido em mais desempenho) e pode reduzir o tempo de comunicação entre os componentes (por exemplo, a latência de acesso ao cache é limitada pela distância e não apenas pela velocidade de comutação do transistor). O uso de energia restringe o desempenho (até certo ponto, quanto mais energia deve ser fornecida, mais "pinos" [esferas de solda] devem ser usados ​​para fornecer essa energia, reduzindo o número potencialmente disponível para comunicação do chip para a memória, E/S ou outros processadores; a extração do calor residual também representa um limite económico). Menor energia de comutação significa que mais trabalho pode ser realizado dentro de um determinado orçamento de energia; menor potência ociosa ("vazamento") significa que mais transistores podem ser mantidos energizados e prontos para funcionar (isso talvez seja particularmente importante para SRAM, que deve estar sempre energizado para manter o estado).

informação relacionada