Supongo que su pregunta es sobre cómo un protocolo de coherencia se extiende a cachés multinivel. Este libro es una buena referencia. Aquí está mi entendimiento:
Tomaré el ejemplo de Core i7 (ya que no estoy muy familiarizado con la arquitectura Core 2 Duo).
En Core i7, todos los núcleos tienen un caché L1 y L2 privado, y todos los núcleos comparten un solo caché L3 grande en el chip. Uno puede, a su vez, unirse a varios procesadores de este tipo utilizando enlaces punto a punto para formar un sistema NUMA.
Por lo tanto, hay 4 niveles en la jerarquía de memoria : L1, L2, L3, memoria principal.
Hay un protocolo de coherencia entre múltiples L2 en un chip y el L3.
Hay un protocolo separado entre múltiples L3 en chips separados. Los dos son independientes el uno del otro. Uno puede usar la indagación y otro puede usar la implementación basada en directorios. Creo que en Core i7, ambos son protocolos MESIF basados en directorios (F es un nuevo estado Forward ).
Todas las cachés en Core i7 son inclusivas . Esto simplifica un poco el protocolo.
Como L2 incluye a L1, un bloque que se desaloja de L2, también debe ser desalojado de L1. De manera similar, un bloque desalojado de L3 tiene que ser desalojado de todos los L2.
L3 mantiene los bits core_valid para cada bloque. Se establece un bit core_valid si el caché L2 de ese núcleo tiene una copia del bloque. De esta forma, cuando se desaloja un bloque de L3, las invalidaciones deben enviarse solo a aquellos L2 que tienen una copia del bloque. Supongo que los bits core_valid también actúan como una especie de directorio.
Si tiene inclusión, solo los mensajes de coherencia para los bloques existentes en una memoria caché de nivel inferior deben reenviarse a la memoria caché de nivel superior. Así que el caché de nivel inferior actúa como un filtro de espionaje.
No estoy seguro de entender su pregunta sobre la política no exclusiva. Tal vez este enlace sea de ayuda.