La coherencia de la caché es el problema natural que se desarrolla cuando varios agentes acceden al conjunto de datos de un sistema y lo modifican. El área principal de la arquitectura de computadoras donde esto se convierte en un problema es en las computadoras multiprocesador. Cada procesador en una computadora multiprocesador tiene su propia caché que carga y almacena información de la memoria de acceso aleatorio (RAM). Cuando dos procesadores acceden a la misma área de memoria, se perderá la coherencia de la caché si no se toman ciertas precauciones.
Sin coherencia de caché, un sistema multiprocesador no podría funcionar. Hay varios métodos que se han desarrollado para abordar este problema y evitar problemas potenciales. La coherencia basada en directorios, el espionaje y el snarfing son tres métodos que se utilizan para evitar la pérdida de coherencia de la caché.
La coherencia basada en directorios funciona como un filtro para garantizar la coherencia. Los datos se colocan en una parte de la memoria a la que pueden acceder todos los procesadores. Cuando se cambia la información que se almacena dentro de esa área de memoria, el sistema actualizará los cachés o los invalidará.
La indagación requiere que el procesador controle todos los accesos a las ubicaciones de memoria que se han almacenado en caché. Esto permite que el procesador sepa cuándo se ha producido una operación de escritura. Al saber cuándo ocurre una operación de escritura, el procesador puede actualizar su caché.
Snarfing suficientemente similar a fisgonear. Snarfing implica no solo monitorear los accesos a las ubicaciones de la memoria que se han almacenado en caché, sino también monitorear la información real que se almacena en la memoria. Cuando se produce una escritura en la memoria, la caché se puede actualizar con la nueva información.
Los sistemas de coherencia basados en directorios tienen una latencia relativamente alta, lo que resulta en un procesamiento más lento. Los requisitos de menor ancho de banda permiten que los sistemas de coherencia basados en directorios sean prácticos en aplicaciones de coherencia de caché a gran escala. Cuantos más procesadores utilice un sistema, más ventajas puede tener el uso de un sistema de coherencia basado en directorios.
Espiar es un método mucho más rápido. Este método requiere más ancho de banda que el enfoque basado en directorios. Este método se puede utilizar de forma eficaz en sistemas que tienen relativamente pocos procesadores.
El gruñido no se suele utilizar como método para mantener la coherencia de la caché. Esto se debe principalmente a que snarfing requiere que se utilicen más recursos en comparación con los métodos de espionaje y basados en directorios. Para que un sistema de snarfing funcione, debe realizar un seguimiento tanto de las direcciones de memoria como de los datos almacenados en esas áreas de la memoria. La cantidad de ancho de banda y procesamiento que ocupa este método lo hace indeseable para la mayoría de las aplicaciones de mantener la coherencia de la caché.