Universidad Autónoma del Estado de México
Facultad de Ingeniería
Ingeniería en Computación
Problema de la Coherencia de Caché y Soluciones
Profesor: Ing Elfego Gutierrez Ocampo
Alumno: Eduardo Manuel Flores Vera
PROBLEMA DE LA COHERENCIA DE CACHÉ
Pensemos por un momento cual es el modelo intuitivo que tenemos de lo que debe ser una memoria.
La memoria debe proporcionar un conjunto de direcciones para almacenar valores, y cuando se lea una de estas direcciones debe devolver el ´ultimo valor escrito en ella.
Es en esta propiedad fundamental de las memorias en la que descansan los programas secuenciales cuando usamos la memoria para comunicar un valor desde un punto del programa donde se calcula a otros puntos donde es usado.
También nos basamos en esta propiedad cuando el sistema usa un espacio de direcciones compartido para comunicar datos entre hebras o procesos que se est´an ejecutando en un procesador. Una lectura devuelve el ´ultimo valor escrito en esa dirección, sin importar el proceso que escribió dicho valor.
Las cachés (antememorias) no interfieren con el uso de múltiples procesos en un procesador, ya que todos ellos ven la memoria a través de la misma jerarquía de cachés. En el caso de usar varios procesadores, nos gustaría poder basarnos en la misma propiedad cuando dos procesos se ejecuten sobre diferentes procesadores de tal forma que el resultado de ejecutar un programa que usa varios procesos sea el mismo independientemente de si los procesos se ejecutan o no en diferentes procesadores físicos. Sin embargo, cuando dos procesos ven la memoria compartida a través de diferentes cachés, existe el peligro de que uno vea el nuevo valor en su caché mientras que el otro todavía vea el antiguo.
Informalmente se puede decir que un sistema de memoria es coherente si cualquier lectura de un dato devuelve el valor más recientemente escrito de ese dato. Esta definición, aunque intuitivamente correcta, es vaga y simple; la realidad es bastante más compleja. Esta definición simple contiene dos aspectos diferentes del comportamiento del sistema de memoria, siendo los dos críticos a la hora de escribir programas en memoria compartida. El primer aspecto, llamado coherencia definen los datos devueltos por una lectura. El segundo aspecto, llamado consistencia, determina cuando un valor escrito ser´a devuelto por una lectura
Los problemas de coherencia en la caché también ocurren cuando utilizamos un ´único procesador en el caso de las operaciones de E/S. La mayor´ıa de estas operaciones se realizan a través de dispositivos DMA con lo que es posible que que el contenido de la memoria principal y la memoria caché dejen de ser coherentes.
SOLUCIONES
Sin embargo, dado que las operaciones de E/S son mucho menos frecuentes que las operaciones de acceso a memoria, se han adoptado soluciones sencillas como usar direcciones de memoria que se marcan como no almacenables en la memoria caché o eliminar todos los bloques existentes en las cachés de las páginas que se van a utilizar en la operación de E/S antes de proceder a realizar dicha operación. En la actualidad, casi todos los microprocesadores proporcionan mecanismos para soportar la coherencia de cachés
REFERENCIAS
http://informatica.uv.es/iiguia/AAC/AA/apuntes/aic_multiproc.pdf
http://www.azulweb.net/ley-de-moore-podcast-5/
http://es.wikipedia.org/wiki/Coherencia_de_cach%C3%A9