Стратегия обновления и стратегия выборки


Стратегии:

1. Стратегия обновления. Определяет метод замещения старых данных в основной памяти при их модификации в кэш-памяти: сквозная и обратная запись.

2. Стратегия выборки. Определяет метод выбора места для размещения считанного из основной памяти блока. В разных типах памяти стратегия разная.

3. Стратегия замещения. Определяет метод определения места, куда необходимо разместить новый блок данных, с учётом того, что все доступные места заняты (какой блок выгрузить из кэш-памяти).

Кэш память

Рис. 1. 41. Кэш память

Бит А периодически сбрасывается в “0”. При обращении к блоку бит А устанавливается в “1”. Если флаг сброшен, то это место – кандидат в замещение. Если флаг установлен, то это место – кандидат в замещение в последнюю очередь.

Разумно использовать следующую стратегию выборки и замещения: если имеется свободное место, то оно выбирается для записи нового блока из ОП. Если свободных мест нет, то замещению подлежит место со сброшенным флагом доступа, например, имеющий наименьший номер. Если флаг М взведен, то этот блок подлежит сохранению (обновлению) в ОП. Самая простая стратегия — это стратегия псевдослучайного выбора места.

Далее стратегия выбора наиболее редко используемого места.

Стратегия выбора немодифицируемого места, то есть то место, где блок не изменился. Из всех редко используемых блоков выбирается любой немодифицированный блок (определяется по флагу). Объем тэговой памяти занимает 10-20% от объема кэш-памяти.

Эффективность кэш-памяти определяется отношением числа успешных обращений (кэш-попаданий) к общему числу обращений к основной памяти процессором. Кэш-промах – это когда требуемая процессором порция данных не находится в кэш-памяти.

Направление просмотра определяет, какой следующий блок будет считан из ОП. Блочная выборка может доставить данные, расположенные как до, так и после затребованной порции процессором. Для учета этого вводится специальный тэг.

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