С изменчивые переменные и кэш-память

Кэш контролируется аппаратным обеспечением кеша прозрачно для процессора, поэтому, если мы используем переменные переменные в программе на C, как гарантируется, что моя программа будет считывать данные каждый раз с фактического указанного адреса памяти, но не с кеша.

Насколько я понимаю,

Ключевое слово Volatile говорит компилятору, что ссылки на переменные не должны быть оптимизированы и должны читаться как запрограммировано в коде.

Кэш прозрачно контролируется аппаратным обеспечением кеша, поэтому, когда процессор выдает адрес, он не знает, поступают ли данные из кеша или из памяти.

Итак, если у меня есть требование читать каждый раз адрес памяти, как я могу убедиться, что он ссылается не на кеш, а на требуемый адрес?

В некотором смысле, эти два понятия плохо сочетаются друг с другом. Пожалуйста, уточните, как это делается.

(Представьте, что у нас есть политика обратной записи в кеше (если требуется для анализа проблемы))

Спасибо, Микроядро :)