Давайте посмотрим на это на примере. Предположим, у нас есть кэш с прямым отображением и используется политика обратной записи. Итак, у нас есть действительный бит, грязный бит, тег и поле данных в строке кеша. Предположим, у нас есть операция: записать A (где A отображается в первую строку кеша).
Что происходит, так это то, что данные (A) от процессора записываются в первую строку кеша. Установлены действительные биты и биты тегов. Грязный бит установлен в 1.
Грязный бит просто указывает, была ли когда-либо записана строка кеша с момента последнего внесения в кеш!
Теперь предположим, что выполняется другая операция: чтение E (где E также отображается в первую строку кеша)
Поскольку у нас есть кэш с прямым отображением, первую строку можно просто заменить блоком E, который будет извлечен из памяти. Но поскольку последний записанный в строку блок (блок A) еще не записан в память (обозначенный грязным битом), контроллер кеша сначала выполнит обратную запись в память, чтобы передать блок A в память, а затем он заменит строку блоком E, выполнив операцию чтения в память. грязный бит теперь установлен в 0.
Таким образом, политика обратной записи не гарантирует, что блок будет таким же в памяти и связанной с ним строке кэша. Однако всякий раз, когда строка собирается заменить, сначала выполняется обратная запись.
Политика сквозной записи прямо противоположна. Согласно этому, в памяти всегда будут актуальные данные. То есть, если записывается блок кеша, соответственно будет записана и память. (без грязных битов)
write back
лучшую производительность?