Coherencia de caché

¿Qué es el problema de coherencia de cache?

La esencia del del problema de la coherencia de cache se basa en que pueden existir varias copias del mismo dato simultáneamente en cachés diferentes, y si los procesadores actualizan sus copias, puede producirse una visión inconsistente de la memoria.

Políticas de escritura

De clases anteriores se definieron dos políticas de escritura usuales:

  1. Post-escritura (Write back): las operaciones de escritura se hacen usualmente solo en la caché. La memoria principal solo se actualiza cuando la línea de caché correspondiente se reemplaza. (Esta puede ocasionar inconsistencia)
  2. Escritura directa (Write through): todas las operaciones de escritura se realizan en memoria principal a la vez que en la caché, asegurándose así que el contenido de la memoria principal siempre es válido.

Inconsistencia de la caché

Una política de post-escritura puede ocasionar inconsistencia. Si dos cachés contienen la misma línea, y la línea se actualiza en una caché, la otra caché tendrá un valor no válido. Las lecturas siguientes a dicha línea producirán resultados no válidos. Incluso con la política de escritura directa puede existir inconsistencia, a no ser que las otras cachés comprueben los accesos a la memoria principal o reciban algún tipo de notificación directa de la escritura realizada

Protocolo de coherencia de caché

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és al mismo tiempo.

Soluciones por software

Los esquemas software de coherencia de caché intentan evitar la necesidad de circuitería y lógica hardware adicional dejando que el compilador y el sistema operativo se encarguen del problema. Las propuestas software son atractivas porque transfieren el costo de la detección de posibles problemas desde el hardware al software.

Por otra parte, en el momento de la compilación, el software generalmente debe tomar ciertas decisiones conservadoras que pueden ocasionar una utilización ineficiente de la caché.

Soluciones por hardware

El enfoque más sencillo consiste en impedir que cualquier dato compartido pase a caché.

Dentro de las soluciones por hardware tenemos 3 protocolos distintos para implementar

1. Protocolo directo