¿Qué es la coherencia de la memoria?

La coherencia de la memoria es un problema que ocurre en una computadora cuando un procesador intenta mirar un sector de la memoria. Este problema solo ocurre en sistemas multinúcleo o computadoras que tienen más de una unidad central de procesamiento (CPU). Cuando los procesadores múltiples miran el mismo sector de memoria y uno actualiza el sector, el otro puede quedarse con una versión antigua de la memoria de la computadora. Para solucionar este problema, se utilizan reglas de coherencia para garantizar que los procesadores no accedan a la misma memoria o que las actualizaciones sean coherentes entre ellos. Hay varios modelos de consistencia diferentes, por lo que los programadores y desarrolladores de computadoras deben conocer el modelo exacto utilizado.

El problema de coherencia de la memoria es uno que solo ocurre en computadoras que usan al menos dos CPU debido a cómo acceden a la memoria. Cuando una CPU accede a un sector de memoria, puede tomar, usar y alterar la memoria sin ningún conflicto, porque no hay otras piezas de hardware compitiendo por la memoria. Si se utilizan dos CPU, entonces las dos CPU pueden tomar el mismo sector de memoria. Si bien no hay problemas con las dos CPU que comparten la memoria, surge un problema si una CPU actualiza la memoria. Esto deja a la segunda CPU con memoria desactualizada que, si no se controla, puede hacer que toda la computadora tenga dos versiones separadas y conflictivas de la memoria de la computadora.

Hay esquemas de programación hechos específicamente para corregir la coherencia de la memoria, lo que puede ser un problema importante. Se conocen colectivamente como reglas de coherencia de memoria y existen muchas versiones. En general, cada versión le dice a las múltiples CPU cómo compartir correctamente la memoria de la computadora sin causar el problema de coherencia de la memoria. Esto se puede hacer actualizando ambas versiones de la memoria cuando se cambia una versión o evitando que las CPU accedan a la misma memoria al mismo tiempo.

Si bien el uso de reglas de coherencia ayuda a evitar el problema de coherencia de la memoria, surge otro problema de esto. Cada conjunto de coherencia tiene una programación y unas reglas distintas, por lo que los programadores que están creando programas o escribiendo código que se ocupan directamente de las CPU tendrán que adaptar la codificación para las reglas de coherencia exactas. De lo contrario, esto puede anular la coherencia o provocar un conflicto importante entre la codificación del programador y las reglas de coherencia, y la computadora puede dejar de funcionar.