C variables volátiles y memoria caché

Cache está controlado por el hardware de la caché de forma transparente para el procesador, por lo que si usamos variables volátiles en el programa C, ¿cómo se garantiza que mi programa lea datos cada vez de la dirección de memoria real especificada pero no de la caché?

Mi comprensión es que,

a palabra clave @Volatile le dice al compilador que las referencias variables no deben optimizarse y deben leerse como se programa en el código.

Cache está controlado por hardware de caché de forma transparente, por lo tanto, cuando el procesador emite una dirección, no sabe si los datos provienen del caché o de la memoria.

Entonces, si tengo el requisito de tener que leer una dirección de memoria cada vez que sea necesario, ¿cómo puedo asegurarme de que no se haga referencia desde el caché sino desde la dirección requerida?

De alguna manera, estos dos conceptos no encajan bien. Por favor, aclare cómo se hace.

(Imaginando que tenemos una política de reescritura en caché (si es necesario para analizar el problema))

Gracias, Microkernel:)

Respuestas a la pregunta(7)

Su respuesta a la pregunta