Энергозависимые переменные C и кэш-память

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

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

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

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

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

Каким-то образом эти две концепции плохо сочетаются друг с другом. Уточните, пожалуйста, как это делается.

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

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

33
задан Björn Pollex 24 October 2011 в 06:56
поделиться