Coherencia de caché y memoria en sistemas multiprocesador
En los sistemas multiprocesador actuales, una organización esencial para conseguir unas
prestaciones razonables es disponer de uno o dos niveles de caché asociados a cada procesador.
Esto, no obstante, origina un problema, conocido como el problema de la coherencia de caché.
La esencia del problema es la posibilidad de que existan varias copias del mismo datosimultáneamente en diferentes caché. En este caso, si los procesadores actualizan sus copias,
puede producirse una visión inconsistente de la memoria.
Cuando se utilizan caché, existen dos políticas de escritura usuales:
Post-escritura (Write back): Las operaciones de escritura se realizan usualmente sólo en la caché. La memoria principal sólo se actualiza cuando la línea de cachécorrespondiente se reemplaza.
Escritura directa (Write through): Todas las operaciones de escritura se realizan en memoria principal a la vez que en la caché, asegurándose así de que el contenido de la memoria principal siempre es válido.
Se expone a continuación un problema de ejemplo para explicar más claramente los dos tipos de caché y como las inconsistencias de los contenidos de éstas con loalmacenado en memoria compartida afectarían al sistema en cada caso:
Problema: la Figura 4.1 muestra tre procesadores con caché conectadas por medio de un bus a una memoria principal compartida. Una secuencia de accesos a la localización “u” es realizada por cada procesador. Primero el procesador P1 lee “u” desde memoria principal y lo copia en su caché. A continuación el P3 lee “u” desde memoriaprincipal y lo copia en su caché, cambiando el valor de la dirección “u” de 5 a 7. Una caché de escritura directa hará que la localización en memoria principal también sea actualizada. Sin embargo, el procesador P1 lee de nuevo el valor en “u” (acción 4), desafortunadamente leyendo el valor 5 en su propia caché en vez de leer el valor actualizado 7 desde memoria principal. ¿Que pasa si las caché sondel tipo “post-escritura” en vez de ser de “escritura directa”?
(Figura 4.1: Ejemplo de problema de coherencia de caché)
Solución: la situación es aun peor con caché de post-escritura. La escritura realizada por P3 se limitaría a cambiar el bit “sucio” (o modificado) asociado al bloque de caché que almacena la posición “u” y no actualizaría la memoria principal en ese instante. Solo cuandoeste bloque de caché sustituido por otro en la caché de P3 sus contenidos serán escritos de vuelta a la memoria principal. No solo leerá P1 el valor sin actualizar, sino que además cuando el procesador 2 lea la posicion “u” (acción 5), ocurrirá un fallo de lectura en su caché y se leerá el valor 5 desde memoria principal. Por último, si múltiples procesadores escriben valores distintos en laposición “u” en sus caché con post-escritura, el valor final que almacenará dicha posición de memoria principal vendrá determinado por el orden en que los bloques de caché conteniendo “u” sean sustituidos, no importando el orden en que se realizaron las escrituras para nada.
El objetivo de un protocolo de coherencia de caché es situar las variables locales utilizadas recientemente en la cachéapropiada, y mantenerlas allí para las distintas escrituras y lecturas, al mismo tiempo que se mantiene la consistencia de las variables compartidas que pudieran encontrarse en varias caché al mismo tiempo.
Existen dos aproximaciones básicas para minimizar los problemas asociados a la coherencia
de los datos en las cachés de primer o de segundo nivel de los procesadores constituyentes de unsistema multiprocesador: software y hardware.
4.1 Soluciones Software
Este tipo de soluciones intentan evitar la necesidad de circuitería y lógica hardware adicional, trasladando el problema al compilador y el sistema operativo. Los mecanismos basados en el compilador realizan un análisis del código para determinar qué datos pueden producir problemas, marcándolos de forma que el sistema...
Regístrate para leer el documento completo.