Coherencia de memoria
# Coherencia de memoria

La coherencia de memoria hace referencia a la necesidad de establecer la lógica necesaria para que los distintos datos replicados a lo largo de la jerarquía de memoria, contengan la misma información si se trata de la misma dirección física. Por ejemplo, un dato que se encuentra en el nivel más alto de la jerarquía, esto es, en la caché de L1, y que ha sido modificado, deberá activar los mecanismos necesarios para que esta modificación se lleve a cabo en el resto de niveles, donde este dato también existe.

Esto puede cobrar más relevancia en el caso de los procesadores multinúcleos, donde, en general, se comparte un nivel de caché, L2 o Ln(donde n podrá ser cualquier número natural), pero cada núcleo dispone de su propia L1 donde modifica los datos, pudiendo haber una incoherencia de los datos que lee un núcleo y que han sido modificados recientemente por otro, disponiendo el dato sin modificar en la caché compartida.

En el caso de los procesadores mononúcleo, la lógica de control de coherencia de caché del procesador, es decir, la circuitería interna que en este caso concreto se encarga de gestionar el trasvase de la información de un lugar a otro, se encargará de modificar en los niveles inferiores de la jerarquía, aquellos datos que hayan sido modificados en L1, con el objetivo de que cuando éste desaparezca de la caché, el dato se encuentre actualizado en los siguientes niveles de caché, memoria principal y disco.

Estos mecanismos de control, por tanto, sólo se activarán como parece lógico pensar, en los casos en los que se produzca una escritura. Faltaría añadir, que dentro de la caché y de sus distintas implementaciones, nos podemos encontrar con una lógica de control de mayor o menor complejidad, dependiendo de si es una caché exclusiva o inclusiva. Donde en la inclusiva nos encontramos una circuitería más simple, aumentando la complejidad en la exclusiva.

