Типы стратегий работы кэш-памяти
- Стратегия отображение адреса памяти на кэш
- Стратегия обновления.
- Стратегия выборки.
- Стратегия замещения.
Стратегия отображение адреса памяти на кэш
Отображение основной памяти на кэш-память происходит блоками. Организация обмена между основной памятью и кэш-памятью основана на блочной пересылке, когда основная память разбивается на блоки равной длины (4, 8, 16 и т.д. байт) и обмен между уровнями иерархий происходит этими блоками. Т.е. принцип локальности позволяет, используя блочную пересылку предвосхитить следующее обращения процессора к основной памяти. Частотный принцип реализуется путём накопления в кэш-памяти наиболее часто используемых блоков. Если блок долго не используется, при очередной блочной пересылке его место занимают новые данные. Блок заведомо в несколько раз больше разрядности нижележащей памяти.
Три организации кэш-памяти:
- Полностью ассоциативная кэш-память.
- Кэш-память с прямым отображением.
- Ассоциативная по множеству кэш-память.
Они отличаются механизмом преобразования адресов и стратегиями замещения и обновления.
Во всех типах кэш-памяти используется следующая модель. Основная память разделяется на блоки фиксированного размера, которые называются строками кэш- памяти. Строка кэш-памяти состоит из нескольких последовательных байтов (обычно от 4 до 64). Строки нумеруются, начиная с 0, то есть если размер строки со- ставляет 32 байта, то строка 0 — это байты с 0 по 31, строка 1 — байты с 32 по 63 и т. д. В любой момент несколько строк находится в кэш-памяти. Когда происходит обращение к памяти, контроллер кэш-памяти проверяет, есть ли нужное слово в данный момент в кэш-памяти. Если есть, то можно сэкономить время, требуемое на доступ к основной памяти. Если данного слова в кэш-памяти нет, то какая-либо строка из нее удаляется, а вместо нее помещается нужная строка из основной памяти или из кэш-памяти более низкого уровня. Существует множество вариаций данной схемы, но в их основе всегда лежит идея держать в кэш-памяти как можно больше часто используемых строк, чтобы число успешных обращений к кэш-памяти было максимальным.
Стратегии выборки
Определяет метод выбора места для размещения считанного из основной памяти блока. В разных типах памяти стратегия разная. Существует два типа локализации адресов. Работа кэш-памяти зависит от этих типов локализации.
Пространственная локализация основана на вероятности, что в скором времени появится потребность обратиться к ячейкам памяти, которые расположены рядом с недавно вызванными ячейками. Исходя из этого наблюдения в кэш-память переносится больше данных, чем требуется в данный момент.
Временная локализация имеет место, когда недавно запрашиваемые ячейки запрашиваются снова. Это может происходить, например, с ячейками памяти, находящимися рядом с вершиной стека или с командами внутри цикла. Принцип временной локализации используется при выборе того, какие элементы выкинуть из кэш-памяти в случае промаха кэш-памяти. Обычно отбрасываются те элементы, к которым давно не было обращений.
Стратегии замещения
Определяет метод замещения старых данных в основной памяти при их модификации в кэш-памяти: сквозная и обратная запись.
LRU (Least-Recently-Used) – производится замена блока кэш-памяти, к которому наиболее долго не обращались; этот способ требует поддерживать историю обращения к блокам (с помощью счетчиков).
FIFO (Fist-in, Fist-out) или обычная очередь – производится замена блока кэш-памяти, который загружался раньше всех других; это более дешевая, но не столь эффективная стратегия замены блоков в кэше как LRU-стратегия.
Стратегии обновления
Согласование данных в кэше и основной памяти
Store through (Write through) – сквозная запись (одновременная запись данного в блок кэша и в блок основной памяти), при этом происходит трата ресурсов и времени на обновление основной памяти. Достоинство: надежный способ согласования данных.
Store In (Write back) – обратная запись, обновление блока основной памяти происходит только при выгрузке строки из кэша в основную память. Достоинство: более высокая производительность. Недостаток: временное различие данных в ОП и в кэше может привести к конфликтам (проявляется в многопроцессорных компьютерах с общей памятью).