Las cachés multinivel pueden diseñarse de diversas maneras, dependiendo de si el contenido de una caché está presente en otros niveles. Si todos los bloques de la caché de nivel superior también están presentes en la caché de nivel inferior, se dice que la caché de nivel inferior es inclusiva . Si la caché de nivel inferior contiene solo bloques que no están presentes en la caché de nivel superior, se dice que es exclusiva . Si el contenido de la caché de nivel inferior no es ni estrictamente inclusivo ni exclusivo, se denomina caché no inclusiva/no exclusiva (NINE) . [ 1 ] [ 2 ]
Política inclusiva

Consideremos un ejemplo de jerarquía de caché de dos niveles donde L2 puede ser inclusiva, exclusiva o NINE de L1. Consideremos el caso en que L2 es inclusiva de L1. Supongamos que hay una solicitud de lectura del procesador para el bloque X. Si el bloque se encuentra en la caché L1, entonces los datos se leen de la caché L1 y se devuelven al procesador. Si el bloque no se encuentra en la caché L1, pero está presente en la caché L2, entonces el bloque de caché se obtiene de la caché L2 y se coloca en L1. Si esto provoca que un bloque sea desalojado de L1, no hay intervención de L2. Si el bloque no se encuentra ni en L1 ni en L2, entonces se obtiene de la memoria principal y se coloca en L1 y L2. Ahora bien, si hay un desalojo de L2, la caché L2 envía una invalidación inversa a la caché L1 para que no se viole la inclusión.
Como se ilustra en la Figura 1, inicialmente supongamos que las cachés L1 y L2 están vacías (a). Supongamos que el procesador envía una solicitud de lectura X. Se producirá un fallo de caché tanto en L1 como en L2, por lo que el bloque se carga en ambas desde la memoria principal, como se muestra en (b). Ahora, supongamos que el procesador emite una solicitud de lectura Y, que también se produce un fallo de caché en L1 y L2. Por lo tanto, el bloque Y se coloca en ambas, como se muestra en (c). Si el bloque X debe eliminarse de L1, se elimina únicamente de L1, como se muestra en (d). Si el bloque Y debe eliminarse de L2, se envía una solicitud de invalidación inversa a L1, por lo que el bloque Y se elimina de L1, como se muestra en (e).
Para que se cumpla la condición de inclusión, deben satisfacerse ciertas condiciones. La asociatividad de L2 debe ser mayor o igual que la de L1, independientemente del número de conjuntos. El número de conjuntos de L2 debe ser mayor o igual que el de conjuntos de L1, independientemente de la asociatividad de L2. Toda la información de referencia de L1 se transfiere a L2 para que esta pueda actualizar sus bits de reemplazo .
Un ejemplo de caché inclusiva es el procesador Intel de cuatro núcleos con 4 cachés L2 de 256 KB y 8 MB (inclusive) de caché L3. [ 3 ]
Política exclusiva

Consideremos el caso en que L2 excluye a L1. Supongamos que el procesador solicita la lectura del bloque X. Si el bloque se encuentra en la caché L1, los datos se leen de L1 y se devuelven al procesador. Si el bloque no se encuentra en L1, pero sí en L2, se traslada de L2 a L1. Si esto provoca la eliminación de un bloque de L1, este se coloca en L2. Esta es la única forma en que se llena L2. En este caso, L2 se comporta como una caché de víctimas . Si el bloque no se encuentra ni en L1 ni en L2, se recupera de la memoria principal y se coloca solo en L1, no en L2.
Como se ilustra en la Figura 2, inicialmente se supone que las cachés L1 y L2 están vacías (a). Supongamos que el procesador envía una solicitud de lectura X. Se producirá un fallo de caché tanto en L1 como en L2, por lo que el bloque se carga en L1 desde la memoria principal, como se muestra en (b). Ahora, el procesador vuelve a enviar una solicitud de lectura Y, que también se produce un fallo de caché en L1 y L2. Por lo tanto, el bloque Y se coloca en L1, como se muestra en (c). Si el bloque X debe eliminarse de L1, se retira de L1 y se coloca en L2, como se muestra en (d).
Un ejemplo de caché exclusiva es AMD Opteron con 512 KB (por núcleo) de caché L2, excluyendo la L1. [ 3 ]
Política NUEVE

Consideremos el caso en que L2 no es inclusiva ni excluyente de L1. Supongamos que hay una solicitud de lectura del procesador para el bloque X. Si el bloque se encuentra en la caché L1, entonces los datos se leen de la caché L1 y se devuelven al procesador. Si el bloque no se encuentra en la caché L1, pero está presente en la caché L2, entonces el bloque de caché se obtiene de la caché L2 y se coloca en L1. Si esto provoca que un bloque sea desalojado de L1, no hay participación de L2, lo cual es igual que en el caso de la política inclusiva. Si el bloque no se encuentra ni en L1 ni en L2, entonces se obtiene de la memoria principal y se coloca en ambas L1 y L2. Ahora bien, si hay un desalojo de L2, a diferencia de la política inclusiva, no hay invalidación inversa.
Como se ilustra en la Figura 3, inicialmente supongamos que las cachés L1 y L2 están vacías (a). Supongamos que el procesador envía una solicitud de lectura X. Se producirá un fallo de caché tanto en L1 como en L2, por lo que el bloque se carga en ambas desde la memoria principal, como se muestra en (b). Ahora, el procesador vuelve a emitir una solicitud de lectura Y, que también se produce un fallo de caché en L1 y L2. Por lo tanto, el bloque Y se coloca en ambas, como se muestra en (c). Si el bloque X debe eliminarse de L1, se elimina solo de L1, como se muestra en (d). Si el bloque Y debe eliminarse de L2, se elimina solo de L2, como se muestra en (e).
Un ejemplo de caché no inclusiva no exclusiva es el AMD Opteron con una caché L3 no inclusiva de 6 MB (compartida). [ 3 ]
Comparación
La ventaja de la política inclusiva radica en que, en sistemas paralelos con caché privada por procesador, si se produce un fallo de caché, se comprueba si el bloque se encuentra en otras cachés pares. Si la caché de nivel inferior incluye la caché de nivel superior y se produce un fallo en la caché de nivel inferior, no es necesario buscar en la caché de nivel superior. Esto implica una menor latencia de fallo para una caché inclusiva en comparación con las exclusivas y NINE. [ 1 ]
Una desventaja de una política inclusiva es que la capacidad de memoria única de la caché está determinada por la caché de nivel inferior. A diferencia del caso de la caché exclusiva, donde la capacidad de memoria única es la capacidad combinada de todas las cachés en la jerarquía. [ 4 ] Si el tamaño de la caché de nivel inferior es pequeño y comparable al tamaño de la caché de nivel superior, hay más capacidad de caché desperdiciada en las cachés inclusivas. Aunque la caché exclusiva tiene mayor capacidad de memoria única, utiliza más ancho de banda, ya que sufre una mayor tasa de llenado de nuevos bloques (igual a la tasa de fallos de la caché de nivel superior) en comparación con la caché NINE, que se llena con un nuevo bloque solo cuando sufre un fallo. Por lo tanto, es necesario realizar una evaluación del costo en relación con el beneficio al explorar la elección entre cachés inclusivas, exclusivas y NINE.
Inclusión de valores : No es necesario que un bloque tenga los mismos valores de datos cuando se almacena en caché tanto en cachés de nivel superior como inferior, aunque se mantenga la inclusión. Pero, si los valores de datos son iguales, se mantiene la inclusión de valores. [ 1 ] Esto depende de la política de escritura en uso, ya que la política de escritura diferida no notifica a la caché de nivel inferior sobre los cambios realizados en el bloque en la caché de nivel superior. Sin embargo, en el caso de la caché de escritura directa, no existe tal preocupación.
Referencias
- 1 2 3 Solihin, Yan (2016). Fundamentos de la arquitectura multinúcleo paralela . Chapman and Hall/CRC. págs. 146–150 . ISBN 9781482211184.
- ↑ Culler, David; Gupta, Anoop; Singh, Jaswinder Pal (1999). Arquitectura de computadoras paralelas: un enfoque de hardware/software . San Francisco: Morgan Kaufmann Publishers. pp. 369–372 . ISBN 1558603433.
- 1 2 3 "Comparación de arquitecturas de caché y protocolos de coherencia en sistemas SMP multinúcleo x86-64". Actas del 42.º Simposio Internacional sobre Microarquitectura . MICRO'09.
- ↑ Ying Zheng; Davis, BT; Jordan, M. (2004). "Evaluación del rendimiento de jerarquías de caché exclusivas". Simposio Internacional IEEE sobre Análisis de Rendimiento de Sistemas y Software (ISPASS), 2004. pp. 89–96 . doi : 10.1109/ISPASS.2004.1291359 . ISBN 0-7803-8385-0. S2CID 10784219 .
- Caché (informática)