Articulo de referencia

Contador de rendimiento de hardware

En informática , los contadores de rendimiento de hardware ( HPC , por sus siglas en inglés) [ 1 ] , o contadores de hardware, son un conjunto de registros de propósito especial...

En informática , los contadores de rendimiento de hardware ( HPC , por sus siglas en inglés) [ 1 ] , o contadores de hardware, son un conjunto de registros de propósito especial integrados en los microprocesadores modernos para almacenar el recuento de actividades relacionadas con el hardware. Los usuarios avanzados suelen recurrir a estos contadores para realizar análisis o ajustes de rendimiento de bajo nivel .

Implementaciones

El número de contadores de hardware disponibles en un procesador es limitado, mientras que cada modelo de CPU puede tener muchos eventos diferentes que un desarrollador podría querer medir. Cada contador se puede programar con el índice del tipo de evento que se desea monitorizar, como un fallo de caché L1 o una predicción errónea de bifurcación.

Uno de los primeros procesadores en implementar un contador de hardware y una instrucción asociada para acceder a él (la RDPMCinstrucción) fue el Intel Pentium , pero no fueron documentados hasta que Terje Mathisen escribió un artículo sobre ingeniería inversa de ellos en Byte en julio de 1994. [ 2 ]

La siguiente tabla muestra algunos ejemplos de CPU y el número de contadores de hardware disponibles:

Técnicas de software versus

En comparación con los analizadores de rendimiento por software , los contadores de hardware proporcionan acceso con bajo consumo de recursos a una gran cantidad de información detallada sobre el rendimiento relacionada con las unidades funcionales de la CPU, las cachés y la memoria principal, entre otros componentes. Otra ventaja de su uso es que, por lo general, no se requieren modificaciones en el código fuente. Sin embargo, los tipos y significados de los contadores de hardware varían según la arquitectura debido a las diferencias en la organización del hardware.

Pueden surgir dificultades al correlacionar las métricas de rendimiento de bajo nivel con el código fuente. El número limitado de registros para almacenar los contadores a menudo obliga a los usuarios a realizar múltiples mediciones para recopilar todas las métricas de rendimiento deseadas.

Muestreo basado en instrucciones

Resultado de un perfil IBS de CodeAnalyst .

Los procesadores superescalares modernos programan y ejecutan múltiples instrucciones simultáneamente , incluso fuera de orden . Estas instrucciones en ejecución pueden interrumpirse en cualquier momento, dependiendo del acceso a la memoria, los aciertos en la caché, las pausas en la tubería de procesamiento y muchos otros factores. Esto puede provocar que los eventos del contador de rendimiento se atribuyan a instrucciones incorrectas, lo que dificulta o imposibilita un análisis preciso del rendimiento.

AMD introdujo métodos para mitigar algunos de estos inconvenientes. Por ejemplo, los procesadores Opteron implementaron [ 4 ] en 2007 una técnica conocida como muestreo basado en instrucciones (IBS). La implementación de IBS de AMD proporciona contadores de hardware tanto para el muestreo de búsqueda (la parte frontal de la tubería superescalar) como para el muestreo de operaciones (la parte posterior de la tubería). Esto da como resultado datos de rendimiento discretos que asocian las instrucciones retiradas con la instrucción AMD64 "padre".

Véase también

Referencias

  1. Malone, Corey; Zahran, Mohamed; Karri, Ramesh (2011). "¿Son los contadores de rendimiento de hardware una forma rentable de comprobar la integridad de los programas?" (PDF) . Actas del sexto taller de ACM sobre computación confiable escalable . págs. 71–76 . doi : 10.1145/2046582.2046596 . ISBN  9781450310017. S2CID 16409864 . Consultado el 17 de noviembre de 2022 . 
  2. "Pentium Secrets" . Gamedev.net . Consultado el 14 de febrero de 2012 .
  3. "Documentación – Desarrollador Arm" . developer.arm.com .
  4. "Muestreo basado en instrucciones: una nueva técnica de análisis de rendimiento para procesadores AMD de la familia 10h" (PDF) . AMD . Consultado el 16 de octubre de 2015 .