Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
осо.docx
Скачиваний:
0
Добавлен:
22.12.2019
Размер:
71.02 Кб
Скачать

10. Кэширование данных

Кэширование – универсальный метод, пригодный для ускорения доступа к оперативной памяти, к диску и другим видам запоминающих устройств.

Функционирование кэш-памяти

Содержимое кэш-памяти представляет собой совокупность записей обо всех загруженных в неё элементах данных из основной памяти. Каждая запись об элементе данных включает в себя:

значение элемента данных;

адрес, который этот элемент данных имеет в основной памяти;

управляющую информацию для реализации алгоритма замещения.

На практике в кэш-память считывается не один элемент данных, к которому произошло обращение, а целый блок данных, что увеличивает вероятность попадания в кэш при последующих обращениях.

Проблемы кэширования

Вытеснение данных их кэша в основную память

В процессе работы содержимое кэш-памяти постоянно обновляется, а значит, периодически данные должны из нее вытесняться.

Методы выбора данных для вытеснения зависят от способа отображения основной памяти на кэш и базируются на предположениях о свойствах данных.

Из-за непредсказуемости вычислительного процесса ни один алгоритм замещения данных не может быть максимально быстрым и одновременно гарантировать максимально возможную вероятность кэш-попаданий.

Согласование данных кэша и основной памяти при записи в последнюю

Проблема заключается в том, что при записи данных в основную память их копия в КЭШе (если она там есть) становится недостоверной. Для решения этой проблемы типичны два подхода.

Сквозная запись. Если данные по запрашиваемому адресу отсутствуют в кэше, то запись выполняется только в основную память, в противном случае – одновременно в кэш и основную память.

Обратная запись. Если данные по запрашиваемому адресу отсутствуют в кэше, то запись выполняется только в основную память, в противном случае – только в кэш-память.

Способы отображения основной памяти на кэш

Случайное отображение

Элемент основной памяти вместе с его адресом размещается в любом месте кэш- памяти. Адрес выступает в качестве признака, по которому производится поиск, или тега. Схема поиска представляет собой ассоциативный поиск, при котором сравнение значения тега выполняется параллельно со всеми записями КЭШа. Такая схема реализуется аппаратно и приводит к удорожанию памяти.

Детерминированное отображение

Любой элемент основной памяти всегда отображается в одно и то же место кэш- памяти. Кэш-память разделяется на нумерованные строки. Между номерами этих строк и адресами основной памяти устанавливается соответствие «один ко многим»: одному номеру строки соответствует множество адресов основной памяти. Для установления однозначного соответствия необходима дополнительная проверка, для чего каждая строка кэш-памяти дополняется тэгом, содержащим старшую часть адреса. Стоимость КЭШа относительно низкая.

Смешанная стратегия

Произвольный адрес основной памяти отображается на некоторую группу адресов КЭШа. Группы пронумерованы. Отображение на группу прямое. Внутри группы отображение случайное. Поиск в кэше осуществляется сначала по номеру группы, полученному из адреса в запросе, а затем – ассоциативно – внутри группы. Алгоритм замещения может учитывать интенсивность обращения к данным в КЭШе и тем самым повысить вероятность попадания в будущем.

Двухуровневое кэширование

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