Skip to main content

¿Qué es la coherencia de la memoria?

  • Giles

La coherencia de la memoria es un problema que ocurre en una computadora cuando un procesador intenta mirar un sector de memoria. Este problema solo ocurre en sistemas multinúcleo o en computadoras que tienen más de una unidad central de procesamiento (CPU). Cuando los múltiples procesadores miran el mismo sector de memoria y uno actualiza el sector, el otro puede quedarse con una versión anterior 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. Existen varios modelos de consistencia diferentes, por lo que los programadores y los 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 que compitan por la memoria. Si se usan 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 hay 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. Cada conjunto de coherencia tiene una programación diferente y reglas diferentes, por lo que los programadores que crean programas o escriben código que tratan directamente con las CPU tendrán que adaptar la codificación para las reglas de coherencia exactas. De lo contrario, esto puede anular la coherencia o causar un conflicto importante entre la codificación del programador y las reglas de coherencia, y la computadora puede dejar de funcionar.