Сквозная запись и обратная запись в кэш
Предварительное условие - многоуровневая организация кеширования
Кэш - это метод временного хранения копии данных в быстро доступной запоминающей памяти. Кэш хранит последние использованные слова в небольшой памяти для увеличения скорости доступа к данным. Он действует как буфер между ОЗУ и ЦП и, таким образом, увеличивает скорость, с которой данные доступны процессору.
Всякий раз, когда процессор хочет записать слово, он проверяет, присутствует ли адрес, на который он хочет записать данные, в кэше или нет. Если адрес присутствует в кеш-памяти, например, Write Hit .
Мы можем обновить значение в кеше и избежать дорогостоящего доступа к основной памяти, но это приводит к проблеме несогласованности данных. Поскольку и кеш, и основная память имеют разные данные, это вызовет проблемы в двух или более устройствах, совместно использующих основную память (как многопроцессорная система).
Вот где на сцену выходит сквозная запись и обратная запись.
Написать через:
При сквозной записи данные одновременно обновляются в кэш и память . Этот процесс проще и надежнее, он используется, когда нет частых операций записи в кэш (количество операций записи меньше).
Помогает в восстановлении данных (в случае отключения электроэнергии или сбоя системы). Запись данных будет иметь задержку (задержку), поскольку мы должны писать в два места (как в память, так и в кэш). Это решает проблему несогласованности. Но это ставит под сомнение преимущество наличия кеша при операции записи (поскольку весь смысл использования кеша состоял в том, чтобы избежать множественного доступа к основной памяти).
Ответить:
Данные обновляются только в кэше и обновляются в памяти позже. Данные обновляются в памяти только тогда, когда строка кэша готова к замене (замена строки кэша выполняется с использованием аномалии Белади, алгоритма наименее недавно использованного, FIFO, LIFO и других в зависимости от приложения).
Обратная запись также известна как отложенная запись.
Грязный бит : каждому блоку в кэше нужен бит, чтобы указать, были ли данные, присутствующие в кэше, были изменены (грязные) или не изменены (чистые). Если они чистые, нет необходимости записывать их в память. Он предназначен для сокращения операций записи в память. В случае сбоя кэша, сбоя системы или отключения питания измененные данные будут потеряны. Потому что восстановить данные из кеша в случае потери практически невозможно.
Если запись происходит в место, которого нет в кэше (ошибка записи), мы используем два варианта: распределение записи и круговая запись .
Запись распределения:
В режиме записи данные загружаются из памяти в кеш, а затем обновляются. Распределение записи работает как с обратной записью, так и с сквозной записью, но обычно используется с обратной записью, поскольку нет необходимости переносить данные из памяти в кеш и затем обновлять данные как в кеш-памяти, так и в основной памяти. Таким образом, сквозная запись часто используется без выделения для записи.
Пишите вокруг:
Здесь данные напрямую записываются / обновляются в основную память, не нарушая работу кеша. Лучше использовать это, когда данные не используются немедленно снова.