У меня есть некоторые вопросы по операциям синхронизации кеша.
Invalidate. Прежде чем процессор попытается прочитать часть памяти, обновленную устройством, соответствующая память должна быть недействительной.
Flush. Прежде чем устройство прочитает часть памяти, обновленную процессором, CPU должен сброситься (записать обратно также правильно?) содержимое из кеша в память, чтобы устройство считывало содержимое из памяти с обновленным содержимым.
Если флеш не выполняется, он может считывать нежелательные данные, присутствующие в памяти, поскольку память еще не обновляется содержимым, записанным в кеш.
Пожалуйста, подтвердите правильность моего понимания?
Когда вы хотите комбинировать как флеш, так и аннулировать? Я слышал, что, играя с дескрипторами управления устройством, нам нужно синхронизировать, объединяя флеш и недействительно. Почему так?
Нужно ли следовать последовательности, такой как flush, за которой следует invalidate?
Есть ли сценарий, в котором может быть полезен недействительный, за которым следует флеш?