Кэш управляется аппаратным кешем прозрачно для процессора, поэтому, если мы используем изменчивые переменные в программе на C, как можно гарантировать, что моя программа каждый раз будет считывать данные с указанного фактического адреса памяти, но не с кеша.
Насколько я понимаю,
Ключевое слово Volatile сообщает компилятору, что ссылки на переменные не должны быть оптимизированы и должны читаться так, как они запрограммированы в коде.
Кэш прозрачно управляется аппаратным кешем, поэтому, когда процессор выдает адрес, он не знает, поступают ли данные из кеша или из памяти.
Итак, если у меня есть требование читать адрес памяти каждый раз, когда это необходимо, как я могу убедиться, что он ссылается не из кеша, а с требуемого адреса?
Каким-то образом эти две концепции плохо сочетаются друг с другом. Уточните, пожалуйста, как это делается.
(Представьте, что у нас есть политика обратной записи в кеш (если это необходимо для анализа проблемы))
Спасибо, Microkernel :)