stringtranslate.com

coherencia de la memoria

La coherencia de la memoria es una cuestión 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 solo un núcleo), solo hay un elemento de procesamiento que realiza todo el trabajo y, por lo tanto, solo un elemento de procesamiento que puede leer o escribir desde/hacia una ubicación de memoria determinada. Como resultado, cuando se cambia un valor, todas las operaciones de lectura posteriores de la ubicación de memoria correspondiente verán el valor actualizado, incluso si está almacenado en caché .

Por el contrario, en los sistemas multiprocesador (o multinúcleo ), hay dos o más elementos de procesamiento trabajando al mismo tiempo, por lo que es posible que accedan simultáneamente a la misma ubicación de memoria. Siempre que ninguno de ellos cambie los datos en esta ubicación, pueden compartirlos indefinidamente y almacenarlos en caché como quieran. Pero tan pronto como uno actualiza la ubicación, los demás pueden trabajar en una copia desactualizada que, por ejemplo, reside en su caché local. En consecuencia, se requiere algún esquema para notificar a todos los elementos de procesamiento los cambios en los valores compartidos; dicho esquema se conoce como protocolo de coherencia de la memoria y, si se emplea dicho protocolo, se dice que el sistema tiene una memoria coherente .

La naturaleza exacta y el significado de la coherencia de la memoria están determinados por el modelo de coherencia que implementa el protocolo de coherencia. Para escribir programas concurrentes correctos, los programadores deben conocer el modelo de coherencia exacto que emplean sus sistemas.

Cuando se implementa en hardware, el protocolo de coherencia puede, por ejemplo, estar basado en directorios o en espionaje (también llamado sniffing ). Los protocolos específicos incluyen el protocolo MSI y sus derivados MESI , MOSI y MOESI .

Ver también

Referencias

  1. ^ Incensario, LM; Feautrier, P. (diciembre de 1978). "Una nueva solución a los problemas de coherencia en sistemas multicaché". Transacciones IEEE en computadoras . C-27 (12): 1112–18. doi :10.1109/TC.1978.1675013. S2CID  5898229.
  2. ^ Smith, Alan Jay (septiembre de 1982). "Recuerdos de caché". Encuestas de Computación ACM . 14 (3): 473–530. doi :10.1145/356887.356892. S2CID  6023466.
  3. ^ Li, Kai; Hudak, Paul (noviembre de 1989). "Coherencia de la memoria en sistemas de memoria virtual compartida". Transacciones sobre Sistemas Informáticos . 7 (4): 321–59. doi : 10.1145/75104.75105 . S2CID  1678750.
  4. ^ Stenstrom, Per (junio de 1990). "Un estudio de esquemas de coherencia de caché para multiprocesadores". Computadora IEEE . 23 (6): 12-24. doi :10.1109/2.55497.