Загрузка...

Стратегии обновления кэш-памяти


Реально у любой системы с кэш-памятью для одних и тех же данных имеется две копии: 1-я копия в кэш-памяти, а вторая в ОП и эти копии могут различаться (когда взведен флаг W, то копия в кэш-памяти отличаются от копии в ОП). Поэтому возникает проблема обеспечения целостности данных. Кэш-контроллер должен реализовывать некую стратегию обновления ОП для предотвращения использования устаревших данных в качестве достоверных. На практике используется сквозная (TWR) и обратная (BWR) записи.

Сквозная запись – одновременно с обновлением кэш-памяти происходит запись в ОП.

Структура буферизированной сквозной записи

Рис. 1. 50. Структура буферизированной сквозной записи

Буферизированная сквозная запись — обновляемый блок передаётся в кэш-буфер и транзакция к памяти завершается, т.е. процессор продолжает работу получив требуемые данные. Блок, записанный в кэш-буфере независимо от работы кэш-контроллера по мере освобождения интерфейса с ОП записывается в неё. Т.к. кэш-буфер в общем случае может содержать быстродействующую память, достаточную для хранения не одного, а нескольких блоков, организована эта память в виде очереди. Каждое место этой памяти состоит из 2-х частей: адреса блока b и данных блока data.

Недостаток: Реализуется еще одно устройство кэширования в виде кэш-буфера.

Обратная запись – для каждого места в кэш- памяти вводится в поле тегов специальный бит изменения данных блока, который устанавливается, если блок обновлён, т.е. является более поздним, чем его исходная копия в ОП. Перед освобождением места в кэш-памяти, занятого этим блоком контроллер проверяет этот бит. Если он установлен, то перед загрузкой в это место новых данных выполняется запись содержимого этого места в ОП.

Недостаток: При использовании энергонезависимой памяти отключение питания не позволяет сохранить изменённые данные в этой памяти.

Буферизированная обратная запись — изменяется порядок обращения к ОП. Замещаемый блок сохраняется в быстродействующей памяти – кэш-буфере вместе со своим адресом, далее читается замещающий блок из ОП в освобождённое место кэш-памяти, а затем по мере освобождения интерфейса с ОП замещённый блок передаётся в ОП. Очевидно, при этом не происходит задержка процессора при получении требуемых данных, такая, которая была бы при отсутствии буфера.

Загрузка...