Pregunta

Cuando mi programa realiza una operación de carga con la semántica adquieren / operación de almacenamiento con la semántica de liberación o tal vez una valla llena, se invalida la memoria caché de la CPU.
Mi pregunta es la siguiente: ¿qué parte de la memoria caché es en realidad invalida? Sólo la línea de caché que llevó a cabo la variable que he utilizado adquieren / release? o tal vez se invalida toda la memoria caché? (L1 + L2 + L3 .. y así sucesivamente?). ¿Hay una diferencia en este tema cuando se utiliza la semántica adquieren / liberación, o cuando se utiliza un cerco completo?

¿Fue útil?

Solución

No soy un experto en esto, pero me encontré con este documento, tal vez sea útil http://www.rdrop.com/users/ paulmck / escalabilidad / papel / whymb.2009.04.05a.pdf

Otros consejos

Al realizar una carga sin vallas o exclusiones mutuas, entonces el valor cargado potencialmente podría venir de cualquier parte, es decir, cachés, registros (por medio de las optimizaciones del compilador), o RAM ... pero a partir de su pregunta, que ya sabían esto .

En la mayoría de las implementaciones de exclusión mutua, cuando se adquiere un mutex, una cerca siempre se aplica, ya sea explícita (por ejemplo, mfence, barrera, etc.) o implícita (por ejemplo, el prefijo de bloqueo para bloquear el autobús en x86). Esto hace que las líneas de caché de todos los cachés en el camino a ser invalidados.

Tenga en cuenta que toda la memoria caché no se invalida, a las respectivas líneas de caché para la posición de memoria. Esto también incluye las líneas para el mutex (que por lo general se implementa como un valor en la memoria).

Por supuesto, hay detalles específicos de la arquitectura, pero esto es cómo funciona en general.

También tenga en cuenta que esta no es la única razón para cachés invalidan, ya que puede haber en las operaciones de una CPU que sería necesario cachés una sobre otra a ser invalidado. Haciendo una búsqueda en Google de "protocolos de coherencia de caché" le proporcionará una gran cantidad de información sobre este tema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top