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