caché. Protocolo MESI para caché multinivel en procesadores Intel

3

Ahora estoy tratando de simular el rendimiento del procesador Intel CORE 2 Duo (pero estoy muy satisfecho con la información sobre cualquier otro procesador Intel de múltiples núcleos) y funciona con la memoria de la computadora. Como entendí, el principal problema que existe con la memoria es apoyar la coherencia de la memoria caché. Pero, ¿cómo funciona el protocolo MESI con diferentes capas? Por ejemplo, ¿cómo se aplica a L2 y L3? También me complacería mucho saber sobre la implementación de la política de escritura no exclusiva y si el algoritmo de respuesta de L2 está conectado al bloque que se reemplaza de L1. ¿Alguien sabe algo sobre esto?

    
pregunta Alexander

1 respuesta

1

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.

    
respondido por el Neha Karanjkar

Lea otras preguntas en las etiquetas