Имеет ли смысл очищать кеш процессора вручную, если он реализован в качестве кэша для записи?Ручная очистка кэша для записи
ответ
Когда слово записывается в кэше записи (WT) инструкцией хранилища, оно также отправляется на следующий уровень иерархии памяти (see cache entry at wikipedia). Следовательно, блоки кэша в кэше WT чисты, то есть будут согласованы с их копиями на следующем уровне, и записи не потребуются.
В случае использования памяти Direct Memory Acceses (DMA) может потребоваться недействительность WT, которая делает содержимое кеша устаревшим, но, насколько я знаю, это не ручные операции, а ОС или аппаратные средства.
Связанные вручную промывке, например, в соответствии с Руководстве разработчика архитектуры Intel программиста (Том 2, Instruction Set Reference):
WBINVD - Write Back и Invalidate Cache Эта команда записывает обратно все измененные строки кэша внутреннего кеша процессора к основной памяти и аннулирует (очищает) внутренние кеши.
Так что я думаю, что в случае кэша WT эта инструкция просто отменяет все строки кэша.
Спасибо, chus. Если хранилище резервной копии для строки кэша является изменчивым (DMA), то это не делает недействительным идеальный кеш, чем его промывку? – San
Вы правы. Я отредактировал свой ответ, чтобы сделать его более точным. – chus
Да. Теперь, поскольку записи строки кэша WT всегда чисты, явный поток строки кэша не должен приводить к записи в реальную память, не так ли? CPU должен просто отказаться от инструкции по промывке. – San