¿Cómo afecta el proceso de fabricación y la calidad del compilador al rendimiento de la CPU?

¿Cómo afecta el proceso de fabricación y la calidad del compilador al rendimiento de la CPU?

Estaba leyendo mis conferencias y una de las diapositivas enumeraba los factores que afectan el rendimiento de la CPU, no puedo entender cómo funciona.proceso de fabricaciónycalidad del compiladorafecta el rendimiento de la CPU

Respuesta1

La calidad del compilador es la más fácil...

Los buenos compiladores saben cómo traducir código a instrucciones de la CPU de manera eficiente.

Imagine que tiene un software que realiza una ecuación matemática simple, digamos 1+1. Una aplicación inteligentemente compilada le indicará a la CPU que sume los números, almacene la respuesta y el trabajo estará hecho. Esto se puede representar como:

  • Establecer la memoria 0 como 1
  • configurar la memoria 1 como 1
  • agregar memoria 0 a 1
  • almacenar en el banco de memoria 0 ..simple!

Los compiladores malos (¡y he visto algunos!) harán lo mismo, pero emitirán un montón de instrucciones adicionales para hacer lo mismo, lo que reduce el rendimiento y ralentiza la aplicación. El mismo ejemplo:

  • Establecer memoria 0
  • Establecer memoria 1
  • Establecer memoria 0 a 0
  • Establecer memoria 1 a 0
  • Establecer memoria 0 a 1
  • configurar la memoria 1 a 1
  • recuperar valores de la memoria 0 y 1
  • sumarlos juntos
  • guardar resultado en memoria 0

Ahora tenga en cuenta que una aplicación compleja como un editor de vídeo, una aplicación de gráficos, un juego e incluso un procesador de textos puede necesitar realizar cientos de miles (si no decenas de millones) de operaciones solo para iniciarse. ¡Ese es el impacto de un buen compilador!

El proceso de fabricación es una extensión de esto en el sentido de que la fabricación consiste en "pegar" múltiples aplicaciones a través de funciones compartidas. Si se hacen bien, se necesitará menos potencia informática para lograr el mismo resultado final.

Respuesta2

La calidad (capacidad de optimización) del compilador determina qué tan bien se asigna el código de máquina a los recursos de hardware. Las optimizaciones del compilador pueden reducir la cantidad de trabajo realizado (p. ej., desenrollar un bucle puede reducir el número de ramas, la asignación de registros puede reducir el número de accesos a la memoria, la inserción puede eliminar la sobrecarga de llamadas y eliminar el código que la persona que llama específica no utiliza), programar el trabajo para evitar esperas (por ejemplo, programar cargas antes para que las instrucciones dependientes no tengan que esperar), explotar instrucciones especializadas que hacen el trabajo de manera más eficiente (por ejemplo, la vectorización puede usar instrucciones SIMD), organizar los accesos a la memoria para explotar el comportamiento de la caché (por ejemplo, , transformando una matriz de estructuras en una estructura de matrices cuando los bucles internos solo tocan unos pocos miembros de la estructura).

(Algunas optimizaciones del compilador se aplican a todo o la mayor parte del hardware; otras son más específicas para implementaciones de hardware particulares. Además, aunque el soporte de hardware para la ejecución fuera de orden mejora la ejecución de código menos programado, una buena programación de instrucciones aún puede proporcionar un beneficio mensurable. , si es pequeño, beneficio.)

El proceso de fabricación determina el uso de energía, la velocidad de conmutación y el área utilizada por los transistores (y características similares de otros componentes). Obviamente, los transistores que cambian más rápido permiten un mayor rendimiento. Reducir el área por transistor permite utilizar más transistores en un chip económicamente fabricable (lo que se puede traducir en más rendimiento) y puede reducir el tiempo de comunicación entre componentes (por ejemplo, la latencia del acceso a la caché está limitada por la distancia y no solo por la velocidad de conmutación del transistor). El uso de energía limita el rendimiento (hasta cierto punto, cuanto más energía se debe entregar, más "pines" [bolas de soldadura] se deben usar para entregar esa energía, lo que reduce el número potencialmente disponible para la comunicación desde el chip a la memoria, E/S o otros procesadores; la extracción del calor residual también presenta un límite económico). Una energía de conmutación más baja significa que se puede realizar más trabajo dentro de un presupuesto de energía determinado; Una menor potencia inactiva ("fuga") significa que se pueden mantener más transistores encendidos y listos para funcionar (esto quizás sea particularmente importante para SRAM, que debe estar siempre encendido para conservar el estado).

información relacionada