Aquí se enumeran ejemplos de protocolos de coherencia para la memoria caché. Para simplificar, no se muestran en los diagramas todas las transacciones de estado de lectura y escritura "fallidas" que obviamente provienen del estado "I" (o falta de etiqueta ) . Se muestran directamente en el nuevo estado. Muchos de los siguientes protocolos solo tienen valor histórico. Actualmente los principales protocolos utilizados son los protocolos tipo R-MESI / MESIF y el HRT-ST-MESI (tipo MOESI) o un subconjunto o una extensión de estos.
En sistemas como Multiprocesador , multinúcleo y sistema NUMA , donde se utiliza un caché dedicado para cada procesador , núcleo o nodo , puede ocurrir un problema de coherencia cuando un mismo dato se almacena en más de un caché. Este problema surge cuando se modifican los datos en un caché. Este problema se puede resolver de dos formas:
Nota: la coherencia generalmente se aplica solo a los datos (como operandos) y no a las instrucciones (consulte Código automodificable ).
Sistemas que operan bajo un solo SO ( Sistema Operativo ) con dos o más procesadores homogéneos y con una Memoria Principal compartida centralizada
Cada procesador tiene su propio caché que actúa como puente entre el procesador y la memoria principal . La conexión se realiza mediante un System Bus o un Crossbar ("xbar") o una combinación de los dos anteriores, bus para dirección y crossbar para Data (Data crossbar). [1] [2] [3]
El cuello de botella de estos sistemas es el tráfico y el ancho de banda de la memoria. El ancho de banda se puede aumentar mediante el uso de una ruta de bus de datos grande, barra cruzada de datos, intercalado de memoria (acceso paralelo de múltiples bancos) y transacciones de datos fuera de servicio . El tráfico se puede reducir mediante el uso de un caché que actúa como un "filtro" frente a la memoria compartida, es decir, el caché es un elemento esencial para la memoria compartida en los sistemas SMP.