Un caché de CPU es una pieza de hardware que reduce el tiempo de acceso a los datos en la memoria al mantener una parte de los datos de uso frecuente de la memoria principal en un "caché" de memoria más pequeña y 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, bifurcados y de 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-05, la velocidad de la CPU, medida por la frecuencia del reloj, crecía anualmente en un 55%, mientras que la velocidad de la memoria solo crecía en 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 la caché. Dado que la caché existe para cerrar la brecha de velocidad, su medición y métricas de rendimiento son importantes para diseñar y elegir varios parámetros como el tamaño de la caché, la asociatividad, la política de reemplazo, etc. El rendimiento de la caché depende de los aciertos y las fallas de caché, que son los factores que crean limitaciones al rendimiento del sistema. Los aciertos de caché son el número 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 medio de acceso (AAT), también conocido como AMAT (tiempo medio de acceso a la memoria ), que, como su nombre indica, es el tiempo medio que se tarda en acceder a la memoria. Esta es una métrica importante para la medición del 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 fallos de caché . Le da el número 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 fallas 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 del caché depende del número de accesos al caché que satisfacen las solicitudes de bloqueo del caché (aciertos del caché) frente a los que no lo hacen. Los intentos fallidos de leer o escribir datos de la caché (fallas 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 fallos de caché conocidos como 3C [2] y algunos otros fallos de caché menos populares.
Fallos obligatorios
Cuando se hace referencia a cada bloque de memoria por primera vez, se produce un error obligatorio. Esto implica que el número de fallos obligatorios es el número de bloques de memoria distintos a los que se hace referencia alguna vez. A veces también se les llama fallos fríos . Los fallos 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 fallos fríos. El aumento del tamaño del bloque conduce a la captación previa de palabras cercanas en un bloque y evita futuras fallas en frío. Aumentar demasiado el tamaño del bloque puede conducir a la obtención previa de datos inútiles, aumentando así el número de fallos en frío.
Conflicto fallas
Los errores de conflicto ocurren cuando los datos requeridos estaban en la caché anteriormente, 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 una caché con asociatividad limitada por el número de errores de una caché completamente asociativa 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 totalmente asociativa) disminuye la cantidad de errores de conflicto, sin embargo, este enfoque aumenta el tiempo de acceso a la memoria 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 un caché y no a la función de mapeo del caché. Cuando el conjunto de trabajo, es decir, los datos que actualmente son importantes para el programa, es más grande que el caché, se producen pérdidas de capacidad con frecuencia. De las 3C, las fallas de capacidad son las más difíciles de identificar y pueden considerarse fallas no obligatorias en una memoria caché totalmente asociativa. En un sistema de un solo procesador, las fallas que existen después de restar el número de fallas obligatorias y fallas de conflicto se pueden clasificar como fallas de capacidad.
Dado que las fallas de capacidad se pueden atribuir al tamaño limitado de una memoria caché, una forma sencilla de reducir la cantidad de esas fallas es aumentar el tamaño de la memoria caché. Aunque este método es muy intuitivo, conduce a un mayor tiempo de acceso y un aumento en el área de caché y su consumo de energía. Además, después de un cierto tamaño de caché, el número de fallos se satura y no disminuye incluso al aumentar el tamaño de la caché.
Parámetros | Fallos obligatorios | Conflicto fallas | Falta de capacidad |
Mayor tamaño de caché | Sin efecto | Sin efecto | Disminución |
Tamaño de bloque más grande | Disminución | Efecto incierto | Efecto incierto |
Mayor asociatividad | Sin efecto | Disminución | Sin efecto |
Los tres tipos de errores anteriores solo abordan los errores de un procesador.
Falta de coherencia
El grupo de fallos de caché de 3C se puede extender a 4C cuando se trata de un sistema multiprocesador con caché, siendo el cuarto C fallos de coherencia. El recuento de errores de coherencia es el número de accesos a la memoria que fallan porque una línea de caché que de otro modo estaría presente en el caché del hilo ha sido invalidada por una escritura de otro hilo. [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, no necesariamente conduce a una falta de coherencia. Se produce una falta de coherencia cuando los subprocesos ejecutan cargas de modo 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.
Pérdidas de cobertura
El grupo de 4C de fallos de caché puede extenderse 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 errores 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 el caché del procesador se ha invalidado 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 .
Las actividades del sistema, como las interrupciones , los cambios de contexto y las llamadas al sistema, provocan la suspensión del proceso y la alteración de su estado de caché. Cuando se reanuda la ejecución del proceso, sufre fallas de caché para restaurar el estado de la caché que fue alterado. Estos fallos se denominan fallos relacionados con el sistema. [2]
Además, las pérdidas de caché debido al cambio de contexto se pueden clasificar en dos categorías que se describen a continuación.
Fallos reemplazados
Cuando ocurre un cambio de contexto, el estado de la caché se modifica y algunos de sus bloques se reemplazan. Los fallos en el acceso a estos bloques se denominan fallos reemplazados.
Fallos reordenados
Es posible que algunos bloques de la memoria caché no se reemplacen debido al cambio de contexto, pero se modifica su antigüedad. Se dice que los fallos reordenados ocurren cuando ocurren fallos debido a cambios en la antigüedad y no debido a que los bloques se reemplazan. Sin embargo, cuando el proceso suspendido reanuda la ejecución, los bloques reordenados no conducen a fallas de cambio de contexto cuando ninguna otra falla hace que estos bloques reordenados sean desalojados.
Los errores relacionados con el sistema se vuelven importantes cuando el cambio de contexto ocurre con regularidad. Aumentar el tamaño de la caché conduce a una disminución de la capacidad y fallas de conflicto, pero se ha observado que conduce a un aumento de fallas relacionadas 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 el número de errores relacionados con el sistema presenta un desafío.
Tiempo medio 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 las fallas de caché en el CPI también depende de la cantidad de fallas de caché que se puede superponer con los cálculos debido al ILP ( paralelismo a nivel de instrucción ) y de cuánto se puede superponer con otras fallas 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 de memoria y las jerarquías. Se refiere al tiempo medio que se tarda en realizar un acceso a la memoria. Es la suma del tiempo de ejecución de las instrucciones de memoria y los ciclos de bloqueo de memoria. El tiempo de ejecución es el tiempo para un acceso a la caché, y los ciclos de bloqueo de la memoria incluyen el tiempo para reparar una falta 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 medio de acceso a la memoria se puede calcular con:
dónde es la latencia de acceso de la caché de nivel uno, es la tasa de errores del caché de nivel uno y son los ciclos adicionales que se necesitan para reparar una falla en un nivel superior en comparación con una falla en un nivel superior, y se calcula con:
esta fórmula se puede ampliar más y utilizar de forma recursiva para todos los niveles adicionales en la jerarquía de memoria para obtener el . [6]
Ley de potencia de los fallos de caché
La ley de potencia de los fallos de caché muestra una tendencia en los fallos de capacidad en una aplicación particular del programa que se ve afectada por el tamaño del 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 errores y el tamaño de la memoria caché. Puede declararse como
donde M es la tasa de errores para una memoria caché de tamaño C y M 0 es la tasa de errores de una memoria caché de referencia. El exponente α es específico de la carga de trabajo y normalmente varía de 0,3 a 0,7, con un promedio de 0,5. La ley de energía fue validada en bastantes puntos de referencia del mundo real. [7]
Esta relación muestra que solo una pequeña fracción de las pérdidas de caché se puede eliminar para un aumento constante en el tamaño de la caché. Esta ley es válida solo para un cierto rango finito de tamaños de caché, hasta el cual la tasa de errores no se estabiliza. La tasa de errores eventualmente se estanca en un cierto tamaño de caché lo suficientemente grande y, después de eso, la relación no proporciona estimaciones correctas.
Perfil de distancia de la pila
El perfil de distancia de la pila es una mejor representación de cómo los fallos de caché se ven afectados por el tamaño de la caché. La ley de potencia de los fallos de caché solo mostró una aproximación aproximada de la misma. Un perfil de distancia de pila captura el comportamiento de reutilización temporal de una aplicación en una caché asociativa total o por conjuntos. [8]
Las aplicaciones que exhiben un comportamiento de reutilización más temporal generalmente acceden a datos que se usan más recientemente. Supongamos que la asociatividad de un caché es. Para recopilar la información del perfil de distancia de la pila de esta caché, suponiendo que tenga una política de reemplazo de LRU, los contadores se utilizan a partir de a y un contador adicional , que lleva la cuenta de los fallos. El contador se incrementa cuando hay un hit en el camino y el mostrador se incrementa en cada error. El perfil de distancia de la pila muestra la tendencia de los aciertos, disminuyendo desde los datos utilizados más recientemente hasta los utilizados menos recientemente. Usando esta información de perfil de distancia de la pila, la caché pierde una caché con asociatividad y política de reemplazo de LRU, donde se puede calcular como
Esta información de creación de perfiles tiene la limitación de que solo puede capturar la reutilización temporal en diferentes asociatividades. Para otros fines, la reutilización temporal debe estudiarse con mayor detalle.
Ver también
Notas
- ^ Hennessy, J. y Patterson, D. (2003). Arquitectura informática: un enfoque cuantitativo, 3ª edición . Morgan-Kaufmann Publishers, Inc. ISBN 9781558607248.CS1 maint: varios nombres: lista de autores ( enlace )
- ^ a b c d Solihin, Yan (17 de noviembre de 2015). Fundamentos de la arquitectura paralela multinúcleo, edición 2016 . Chapman y Hall. ISBN 978-1482211184.
- ^ "Modelado de errores de coherencia de caché en multinúcleos" (PDF) . Cite journal requiere
|journal=
( ayuda ) - ^ 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 informático paralelo . Cambridge: Cambridge University Press. ISBN 9781139051224.
- ^ 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 Magny-Cours para servidores de gran escala . XVII Congreso Internacional de Computación de Alto Rendimiento (HiPC). págs. 1-10. doi : 10.1109 / HIPC.2010.5713176 . ISBN 978-1-4244-8518-5.
- ^ 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.
- ^ Hartstein, A .; Srinivasan, V .; Puzak, TR; Emma, PG (1 de enero de 2006). Caché de comportamiento de la señorita: ¿Es √2? . Actas de la 3ª Conferencia sobre Fronteras de la Computación . CF '06. págs. 313–320. doi : 10.1145 / 1128022.1128064 . ISBN 978-1595933027.
- ^ Mattson, RL ; Gecsei, J .; Slutz, DR; Traiger, yo (1970). "Técnicas de evaluación para jerarquías de almacenamiento". Revista de sistemas de IBM . 9 (2): 78-117. doi : 10.1147 / sj.92.0078 .