La coherencia de la memoria es un problema que afecta al diseño de sistemas informáticos en los que dos o más procesadores o núcleos comparten un área común de memoria . [ 1 ] [ 2 ] [ 3 ] [ 4 ]
En un sistema monoprocesador (donde existe un solo núcleo), solo hay un elemento de procesamiento que realiza todo el trabajo y, por lo tanto, solo un elemento de procesamiento puede leer o escribir en una ubicación de memoria determinada. Como resultado, cuando se modifica un valor, todas las operaciones de lectura posteriores de la ubicación de memoria correspondiente verán el valor actualizado, incluso si está en caché .
Por el contrario, en los sistemas multiprocesador (o multinúcleo ), dos o más elementos de procesamiento trabajan simultáneamente, por lo que es posible que accedan al mismo lugar de memoria al mismo tiempo. Siempre que ninguno de ellos modifique los datos en dicho lugar, pueden compartirlos indefinidamente y almacenarlos en caché a su antojo. Pero en cuanto uno actualiza el lugar, los demás podrían trabajar con una copia desactualizada que, por ejemplo, reside en su caché local. En consecuencia, se requiere algún mecanismo para notificar a todos los elementos de procesamiento los cambios en los valores compartidos; dicho mecanismo se conoce como protocolo de coherencia de memoria , y si se emplea dicho protocolo, se dice que el sistema tiene una memoria coherente .
La naturaleza y el significado exactos de la coherencia de memoria vienen determinados por el modelo de consistencia que implementa el protocolo de coherencia. Para escribir programas concurrentes correctos, los programadores deben conocer el modelo de consistencia exacto que utilizan sus sistemas.
Cuando se implementa en hardware, el protocolo de coherencia puede basarse, por ejemplo, en directorios o en la técnica de espionaje (también llamada detección de paquetes ). Algunos protocolos específicos son el protocolo MSI y sus derivados MESI , MOSI y MOESI .
Véase también
Referencias
- ↑ Censier, LM; Feautrier, P. (diciembre de 1978). "Una nueva solución a los problemas de coherencia en sistemas multicaché". IEEE Transactions on Computers . C-27 (12): 1112–18 . doi : 10.1109/TC.1978.1675013 . S2CID 5898229 .
- ↑ Smith, Alan Jay (septiembre de 1982). "Memorias caché". ACM Computing Surveys . 14 (3): 473– 530. doi : 10.1145/356887.356892 . S2CID 6023466 .
- ↑ Li, Kai; Hudak, Paul (noviembre de 1989). "Coherencia de memoria en sistemas de memoria virtual compartida" . ACM Transactions on Computer Systems . 7 (4): 321– 59. doi : 10.1145/75104.75105 . S2CID 1678750 .
- ↑ Stenstrom, Per (junio de 1990). "Un estudio de esquemas de coherencia de caché para multiprocesadores". IEEE Computer . 23 (6): 12– 24. doi : 10.1109/2.55497 .
- Memoria de computadora
- Computación paralela