stringtranslate.com

Medición y métrica del rendimiento de la caché

Una caché de CPU es una pieza de hardware que reduce el tiempo de acceso a los datos en la memoria manteniendo parte de los datos de la memoria principal utilizados con frecuencia en una 'caché' de memoria más pequeña y más rápida.

El rendimiento de un sistema informático depende del rendimiento de todas las unidades individuales, que incluyen unidades de ejecución como enteros, bifurcaciones y coma flotante, unidades de E/S, bus, cachés y sistemas de memoria. La brecha entre la velocidad del procesador y la velocidad de la memoria principal ha crecido exponencialmente. Hasta 2001-2005, la velocidad de la CPU, medida por la frecuencia del reloj, crecía anualmente un 55%, mientras que la velocidad de la memoria sólo crecía un 7%. [1] Este problema se conoce como el muro de la memoria. La motivación para un caché y su jerarquía es cerrar esta brecha de velocidad y superar el muro de la memoria.

El componente crítico en la mayoría de las computadoras de alto rendimiento es el caché. Dado que el caché existe para cerrar la brecha de velocidad, su medición y métricas de rendimiento son importantes al diseñar y elegir varios parámetros como el tamaño del caché, la asociatividad, la política de reemplazo, etc. El rendimiento del caché depende de los aciertos y errores del caché, que son los factores que crean limitaciones al rendimiento del sistema. Los aciertos de caché son la cantidad de accesos al caché que realmente encuentran esos datos en el caché, y los errores de caché son aquellos accesos que no encuentran el bloque en el caché. Estos aciertos y errores de caché contribuyen al término tiempo promedio de acceso (AAT), también conocido como AMAT ( tiempo promedio de acceso a la memoria ), que, como su nombre indica, es el tiempo promedio que se tarda en acceder a la memoria. Esta es una métrica importante para medir el rendimiento de la caché, porque este número se vuelve muy significativo y crítico a medida que aumenta la velocidad del procesador.

Otra métrica útil para probar el rendimiento es la ley de potencia de los errores de caché . Le proporciona la cantidad de errores cuando cambia el tamaño del caché, dado que se conoce el número de errores para uno de los tamaños de caché. De manera similar, cuando desea probar el rendimiento de la caché en términos de errores en diferentes asociatividades, se utiliza el perfil de distancia de pila .

Introducción a los tipos de errores de caché

El aumento del rendimiento del procesador debido a la jerarquía de la caché depende de la cantidad de accesos a la caché que satisfacen las solicitudes de bloqueo de la caché (aciertos de caché) versus aquellos que no lo hacen. Los intentos fallidos de leer o escribir datos desde la caché (errores de caché) dan como resultado un acceso a la memoria principal o de nivel inferior, lo que aumenta la latencia. Hay tres tipos básicos de errores de caché conocidos como 3C [2] y algunos otros errores de caché menos populares.

Faltas obligatorias

Cada bloque de memoria, cuando se hace referencia por primera vez, provoca un error obligatorio. Esto implica que el número de errores obligatorios es el número de bloques de memoria distintos a los que se hace referencia. A veces también se les llama errores fríos . Los errores en frío no se pueden evitar a menos que el bloque esté precargado .

Se ha observado que un aumento en el tamaño del bloque hasta cierto punto para explotar la localidad espacial conduce a una disminución de los errores en frío. Aumentar el tamaño del bloque conduce a la búsqueda previa de palabras cercanas en un bloque y evita futuros errores en frío. Aumentar demasiado el tamaño del bloque puede provocar una captación previa de datos inútiles, lo que aumenta el número de errores en frío.

El conflicto falla

Los errores de conflicto ocurren cuando los datos requeridos estaban anteriormente en el caché, pero fueron desalojados. Estos desalojos se producen porque se asignó otra solicitud a la misma línea de caché. Generalmente, los errores de conflicto se miden restando el número de errores en un caché con asociatividad limitada por el número de errores de un caché totalmente asociativo del mismo tamaño y tamaño de bloque de caché.

Dado que los errores de conflicto se pueden atribuir a la falta de asociatividad suficiente, aumentar la asociatividad hasta cierto punto (asociatividad de 8 vías casi tan efectiva como la asociatividad total) disminuye la cantidad de errores de conflicto; sin embargo, este enfoque aumenta el tiempo de acceso a la caché. y consume mucha más energía que un caché asociativo establecido.

Falta de capacidad

Se produce una pérdida de capacidad debido al tamaño limitado de una memoria caché y no a la función de asignación de la memoria caché. Cuando el conjunto de trabajo, es decir, los datos que actualmente son importantes para el programa, es mayor que el caché, se producen pérdidas de capacidad con frecuencia. De las 3C, los errores de capacidad son los más difíciles de identificar y pueden considerarse errores no obligatorios en una caché totalmente asociativa. En un sistema de procesador único, los errores que existen después de restar el número de errores obligatorios y errores de conflicto se pueden clasificar como errores de capacidad.

Dado que las pérdidas de capacidad se pueden atribuir al tamaño limitado de una caché, una forma sencilla de reducir el número de dichas pérdidas es aumentar el tamaño de la caché. Aunque este método es muy intuitivo, conduce a un mayor tiempo de acceso y a un aumento del área de caché y de su consumo de energía. Además, después de un cierto tamaño de caché, el número de errores se satura y no disminuye incluso al aumentar el tamaño de caché.

Los tres tipos de fallos anteriores sólo se refieren a fallos de un solo procesador.

Falta de coherencia

El grupo de 3C de errores de caché se puede ampliar a 4C cuando se trata de un sistema multiprocesador con caché, siendo la cuarta C los errores de coherencia. El recuento de errores de coherencia es el número de accesos a la memoria que se pierden porque una línea de caché que de otro modo estaría presente en el caché del subproceso ha sido invalidada por una escritura de otro subproceso. [3] La coherencia en un sistema multiprocesador se mantiene si solo está presente una copia de un bloque de memoria o si todas las copias tienen el mismo valor. Incluso si todas las copias del bloque de memoria no tienen el mismo valor, esto no necesariamente conduce a una falta de coherencia. Una falta de coherencia ocurre cuando los subprocesos ejecutan cargas de manera que observan los diferentes valores del bloque de memoria. [4]

El problema de la coherencia es complejo y afecta la escalabilidad de los programas paralelos. Debe existir un orden global de todos los accesos a la memoria a la misma ubicación en todo el sistema para abordar este problema.

Faltas de cobertura

El grupo de 4C de errores de caché se puede ampliar aún más a 5C cuando el sistema multiprocesador incluye un directorio de coherencia organizado como un caché, es decir, que puede reemplazar entradas. Esta quinta C significa Cobertura. [5] El recuento de faltas de cobertura es el número de accesos a la memoria que se pierden porque una línea de caché que de otro modo estaría presente en la caché del procesador ha sido invalidada como consecuencia de un desalojo de directorio. Si el directorio no puede rastrear una línea de caché debido a su capacidad limitada, la línea debe invalidarse de la caché de los procesadores para mantener la coherencia .

Fallos relacionados con el sistema

Las actividades del sistema, como interrupciones , cambios de contexto y llamadas al sistema, provocan la suspensión del proceso y la alteración del estado de la caché. Cuando se reanuda la ejecución del proceso, sufre errores de caché para restaurar el estado de caché que fue alterado. Estos errores se denominan errores relacionados con el sistema. [2]

Además, los errores de caché debidos al cambio de contexto pueden clasificarse en dos categorías que se describen a continuación.

Fallos reemplazados

Cuando se produce un cambio de contexto, el estado de la caché se modifica y algunos de sus bloques se reemplazan. Los fallos de acceso a estos bloques se denominan fallos sustituidos.

Errores reordenados

Es posible que algunos bloques en el caché no se reemplacen debido al cambio de contexto, pero se cambia su actualidad. Se dice que los errores reordenados ocurren cuando los errores ocurren debido a un cambio en la actualidad y no a que se reemplacen los bloques. Sin embargo, cuando el proceso suspendido reanuda la ejecución, los bloques reordenados no provocan errores de cambio de contexto cuando ningún otro error provoca que estos bloques reordenados sean desalojados.

Los errores relacionados con el sistema se vuelven significativos cuando el cambio de contexto ocurre regularmente. Aumentar el tamaño de la caché conduce a una disminución de la capacidad y de errores de conflicto, pero se ha observado que conduce a un aumento de los errores relacionados con el sistema si la memoria caché es aún más pequeña que el conjunto de trabajo de los procesos que comparten la memoria caché. Por lo tanto, reducir la cantidad de fallos relacionados con el sistema presenta un desafío.

Tiempo promedio de acceso a la memoria

Estos errores de caché se correlacionan directamente con el aumento de ciclos por instrucción (CPI). Sin embargo, la cantidad de efecto que tienen los errores de caché en el CPI también depende de cuánto del error de caché se puede superponer con los cálculos debido al ILP ( paralelismo a nivel de instrucción ) y de cuánto se puede superponer con otros errores de caché debido a Paralelismo a nivel de memoria . [2] Si ignoramos ambos efectos, entonces el tiempo promedio de acceso a la memoria se convierte en una métrica importante. Proporciona una medida del rendimiento de los sistemas y jerarquías de memoria. Se refiere al tiempo promedio que se tarda en realizar un acceso a la memoria. Es la suma del tiempo de ejecución de las instrucciones de la memoria y los ciclos de parada de la memoria. El tiempo de ejecución es el tiempo para acceder a la caché, y los ciclos de bloqueo de la memoria incluyen el tiempo para reparar una pérdida de caché y acceder a niveles inferiores de memoria. Si se conocen la latencia de acceso, la tasa de errores y la penalización por errores, el tiempo promedio de acceso a la memoria se puede calcular con:

donde es la latencia de acceso de la caché de nivel uno, es la tasa de fallos de la caché de nivel uno y son los ciclos adicionales que requiere un fallo en un nivel superior para ser atendido en comparación con un acierto en un nivel superior, y se calcula con:

esta fórmula se puede expandir aún más y usar de forma recursiva para todos los niveles adicionales en la jerarquía de memoria para obtener el archivo . [6]

Ley de potencia de errores de caché

La ley de potencia de las pérdidas de caché muestra una tendencia en las pérdidas de capacidad en una aplicación particular del programa según se vea afectada por el tamaño de la caché. Esta observación empírica condujo a la forma matemática de la ley de potencia, que muestra la relación entre la tasa de fallos y el tamaño de la caché. Se puede afirmar como

donde M es la tasa de fallos para una caché de tamaño C y M 0 es la tasa de fallos de una caché de referencia. El exponente α es específico de la carga de trabajo y normalmente oscila entre 0,3 y 0,7, con un promedio de 0,5. La ley de potencia fue validada en bastantes puntos de referencia del mundo real. [7]

Esta relación muestra que sólo una pequeña fracción de los errores de caché se puede eliminar mediante un aumento constante del tamaño de la caché. Esta ley es válida sólo para un cierto rango finito de tamaños de caché, hasta el cual la tasa de errores no se estabiliza. La tasa de errores finalmente se estanca en un tamaño de caché determinado y lo suficientemente grande, y después de eso la relación no proporciona estimaciones correctas.

Perfil de distancia de pila

El perfil de distancia de la pila es una mejor representación de cómo el tamaño de la caché afecta los errores de caché. La ley de potencia de los errores de caché acaba de mostrar una aproximación aproximada de lo mismo. Un perfil de distancia de pila captura el comportamiento de reutilización temporal de una aplicación en una caché totalmente asociativa o por conjuntos. [8]

Las aplicaciones que exhiben un comportamiento de reutilización más temporal generalmente acceden a datos que se utilizan más recientemente. Supongamos que la asociatividad de un caché es . Para recopilar la información del perfil de distancia de la pila de este caché, suponiendo que tenga una política de reemplazo de LRU, se utilizan contadores que comienzan desde hasta y un contador adicional , que lleva la cuenta de los fallos. El contador aumenta cuando hay un golpe en el camino y el contador aumenta cada vez que falla. El perfil de distancia de la pila muestra la tendencia de los aciertos, disminuyendo desde los datos utilizados más recientemente hasta los menos utilizados. Usando esta información del perfil de distancia de pila, la pérdida de caché para un caché con asociatividad y política de reemplazo de LRU, donde se puede calcular como

Esta información de elaboración de perfiles tiene la limitación de que solo puede capturar la reutilización temporal entre diferentes asociatividades. Para otros fines, la reutilización temporal debe estudiarse con mayor detalle.

Ver también

Notas

  1. ^ Hennessy, J. y Patterson, D. (2003). Arquitectura de computadoras: un enfoque cuantitativo, tercera edición . Morgan-Kaufmann Publishers, Inc. ISBN 9781558607248.{{cite book}}: Mantenimiento CS1: varios nombres: lista de autores ( enlace )
  2. ^ abcd Solihin, Yan (17 de noviembre de 2015). Fundamentos de la arquitectura multinúcleo paralela, edición 2016 . Chapman y Hall. ISBN 978-1482211184.
  3. ^ "Errores de coherencia de caché de modelado en núcleos múltiples" (PDF) . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  4. ^ Suecia, Michel Dubois, Universidad del Sur de California, EE. UU., Murali Annavaram, Universidad del Sur de California, EE. UU., Per Stenström, Universidad Tecnológica de Chalmers (2012). Organización y diseño de ordenadores paralelos . Cambridge: Prensa de la Universidad de Cambridge. ISBN 9781139051224.{{cite book}}: Mantenimiento CS1: varios nombres: lista de autores ( enlace )
  5. ^ Ros, Alberto; Cuesta, Blas; Fernández-Pascual, Ricardo; Gómez, María E.; Acacio, Manuel E.; Robles, Antonio; García, José M.; Duato, José (2010). EMC2: Ampliación de la coherencia de Magny-Cours para servidores de gran escala . XVII Conferencia Internacional sobre Computación de Alto Rendimiento (HiPC). págs. 1–10. doi :10.1109/HIPC.2010.5713176. ISBN 978-1-4244-8518-5.
  6. ^ Patterson, John L. Hennessy, David A. (2011). Arquitectura informática: un enfoque cuantitativo (5ª ed.). San Francisco, California: Morgan Kaufmann. ISBN 978-0-12-383872-8.{{cite book}}: Mantenimiento CS1: varios nombres: lista de autores ( enlace )
  7. ^ Hartstein, A.; Srinivasan, V.; Puzak, TR; Emma, ​​PG (1 de enero de 2006). "Comportamiento de pérdida de caché". Actas de la 3ª conferencia sobre fronteras de la informática . CF '06. págs. 313–320. doi :10.1145/1128022.1128064. ISBN 978-1595933027. S2CID  17728397.
  8. ^ Mattson, RL ; Gecsei, J.; Slutz, DR; Traiger, yo (1970). "Técnicas de evaluación de jerarquías de almacenamiento". Revista de sistemas IBM . 9 (2): 78-117. doi :10.1147/sj.92.0078.