Можно ли проверить, является ли строка кэша недопустимой и / или способ вручную повторно проверить строку кэша? - PullRequest
2 голосов
/ 16 февраля 2011

(меня в первую очередь интересуют архитектуры x86, но было бы интересно узнать, есть ли способ сделать это и в других архитектурах)

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

И есть ли способ программно повторно проверить недействительную строку кэша без записи в память? (ну, я думаю, с MESI, под "revalidate" я имею в виду изменить его состояние на "Modified")

Ответы [ 2 ]

0 голосов
/ 29 августа 2011

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

0 голосов
/ 23 февраля 2011

Единственное, о чем я могу думать, это использовать подсказку по оптимизации PREFETCH. Итак, вместо:

mov eax, (DWORD PTR [esi])

Вы бы сделали:

prefetch [esi]
;
; give processor time to load cacheline...
;
mov eax, (DWORD PTR [esi])

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...