Стратегия замещения блоков в кэш память.

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

  1. Для полностью ассоциативной КЭШ памяти на всем множестве блоков.

  2. Для КЭШ памяти ассоциативной по множеству, в пределах блоков принадлежащих выбранному массиву.

  3. Для секторированной КЭШ памяти внутри множества секторов.

Несмотря на существование достаточно большого числа стратегий замещений (несколько десятков) наибольшее распространение получили следующие: (все они реализуются на аппаратном уровне)

  1. Случайное замещение (RAND) не требует никакой истории, самый простой в реализации.

  2. Стратегия с использованием принципа FIFO, удалению подлежит блок, который наиболее давно был помещен в КЭШ память.

  3. LFU – Least Frequenly Used наименее часто используемый блок. Собирается статистика по частоте обращения между двумя последовательными КЭШ промахами.

  4. LRU – Least Resentely Used В соответствии с ней удалению подлежит блок, к которому наиболее долго не было обращений.

Сложность реализации приведенных стратегий возрастает 1->4. Эффективность использования возрастает также. При реализации КЭШ в современных процессорах наибольшее распространение получила стратегия LRU.

Основные принципы реализации стратегии lru.

Наиболее просто если эта стратегия реализуется для частично ассоциативной памяти с организацией 2WSA – Way Set Associative. 2-а блока внутри множества. В этом случае каждый блок КЭШ памяти снабжается спец битом обращения (обычно бит used). При обращении к какому-либо блоку множества осуществляется установка этого бита для одного блока и сброс для другого. В ситуации КЭШ промаха из 2-х блоков множества удаляется блок со сброшенным битом обращения. Можно ли обойтись одним блоком, и как тогда работать? При увеличении числа блоков внутри множества сложность реализации стратегии существенно возрастает. Классический способ реализации стратегии LRU является т.н. LRU – стек. Автоматная модель LRU-стека для выбора одного кандидата из 3-х приведена на рис5 на самостоятельное изучение. Как будет выглядеть граф для 4-х блоков? В связи с тем, что для организации КЭШ памяти с 4WSA аппаратная реализация принципа LRU выглядит достаточно сложно, в КЭШ памяти современных процессорах (INTEL) для выбора блока кандидата на удаление используется упрощенная стратегия LRU, называемая псевдо LRU (Pseudo LRU).

--------------------------20,11,03------------------------------------------------------------------------------------------

Реализация стратегии PLRU основывается на использовании 3-х битов (b0,b1,b2). Для каждого множества блоков КЭШ памяти. Модификация этих битов осуществляется при любом обращении к блоку в рамках этого множества (по чтению и по записи). Алгоритм установки битов LRU приведен на рис7а. Выбор блока, кандидата на удаление (одного из 4-х в рамках множества) осуществляется на основе значений битов LRU в соответствии с таблицей.

Значения битов LRU

Блок, кандидат на удаление

B0

B1

B2

0

0

Х

L0

0

1

X

L1

1

X

0

L2

1

X

1

L3

Алгоритм выбора блока кандидата на удаление, реализованный в процессорах Intel, в некоторых случаях выбирает не последний блок к которому осуществлялось обращение, а предпоследний (отсюда и название PLRU). Примером использования нестрогого принципа LRU может служить временная последовательность обращений к блокам следующего вида:

L0

L2

L3

L1

T1

T2

T3

T4

В соответствии с рассмотренной последовательностью обращений кандидатом на удаление должен быть блок L0 с наиболее ранним по времени обращением. В соответствии же с таблицей, комбинация битов LRU на момент времени T4 (100) соответствует выбор блока L2; не наиболее раннего, а предпоследнего. По мнению специалистов стратегия РLRU лишь немногим уступает по эффективности. При каком количестве блоков LRU можно реализовать чистую стратегию LRU? Наихудшая, но и самая простая стратегия: случайный выбор блока по мнению большинства специалистов отличается от стратегии LRU на 10-15%.

Проблема согласования данных в ОП и КЭШ памяти.

Стратегии обновления ОП.

После того как некоторый блок ОП копируется в КЭШ память в вичислительной системе существует 2-е копии одного блока данных. Копия блока в КЭШ памяти может быть изменена при обращении к ней со стороны ЦП по записи. Если это изменение не отслеживать для копии в ОП, то она становиться не актуальной, по стравнению с изменением копии в КЭШ памяти. С Другой стороны к ОП кроме ЦП могут обращаться так же устройства ввода вывода ко каналу прямого доступа. В связи с этим копия блока в ОП может измениться по сравнению с ее содержимым в КЭШ памяти. Еще более сложной эта проблема согласования становиться в много процессорных системах, где каждый процессор имеет собственных КЭШ, а ОП является разделяемым ресурсом. В литературе эта проблема называется «Проблема поддержания информационной целостности (когерентности) данных в КЭШах и ОП». Наиболее простыми и раними по времени их появления являются 2-е основные альтернативные стратегии: сквозная запись (WT – Write Through); обратная запись (WB – Write Back). Стратегия WT предполагает при любом обращении к КЭШ памяти по записи, параллельно осуществлять модификацию копии блока в ОП. Стратегия WB предполагает осуществлять содификацию блока ОП при изменении его копии в КЭШ памяти только в тот момент, когда этот блок в КЭШ памяти стаковиться кандидатом на удаление и требуется его обратная пересылка в ОП. Использование стратегии WT предполагает полное поддержание актуальности копии блоков ОП при их модификациях в КЭШ памяти. Отрицательной стороной такого подхода являются большие затраты времени на перезапись всех изменений в ОП. В свою очередь использование стратегии WB с одной стороны уменьшает затраты времени для копирования блоков ОП, но с другой стороны на некоторое время нарушается согласование содержимого копии в КЭШ памяти и ОП. Существуют несколько модификаций стратегий WT и WB. Основными являются:

WT

WTWA (WT with Allocation с распределением)

WTNWA (WT non with Allocation безраспределения)

Отличие модификации стратегии WT проявляются в условиях КЭШ промаха при записи. Использование WTWA предполагает первоначальное копирование блока из ОП в КЭШ память, а затем параллельную запись в ОП и в КЭШ память. В свою очередь стратегия WTNWA предполагает выполнение операции запись только в ОП без копирования блока в КЭШ память.

WB

FWB

FRWB

Flag WB

RWB

Registor WB

При использование модификации FWB предполагается наличие у каждого блока в КЭШ памяти спец бита (флага) модификации, установка которого производиться при выполнении обращения к этому блоку по записи. Использование флага модификации позволяет предотвратить лишние пересылки блоков кандидатов на удаление из КЭШ памяти в ОП. Если для блока кандидата на удаление флаг модификации сброшен, то отпадает необходимость его пересылки в ОП. Модификация RWB предролагает использование быстрого буфера (регистровой памяти) для пересылки блока, кандидата на удаление из КЭШ памяти в ОП. Благодаря наличию этого буфера новый блок, пересылаемый из ОП в КЭШ память становиться наиболее быстро доступным ЦП по сравнению с предварительной пересылкой удаляемого блока не в буфер, а прямо в ОП. Пересылка удаляемого блока из буфера в ОП реализуется при освобождении шины ОП от более важных пересылок. На рис 1б предполагается использование стратегии WTNWA и FWB.

-----------------26,11,03---------------------------------------------------------------------------------------------------

В процессорах предназначенных для использование в много процессорных системах, применяются более сложные стратегии поддержания когерентности данных. Одной из таких стратегий являются протокол MESI, реализованной во внутренней КЭШ памяти процессоров Pentium, а так же Power PC. Название этого протокала соответствует определенным им состоянием блоков (строк) КЭШ памяти: M – Modified, E – Exclusive, S – Shared (разделяемая), I – Invalid (недостоверная). Эти состояния имеют следующий смысл.

М – стока присудствует в КЭШ памяти только этого процессора и модифицирована, т.е. отличается от копии строки в ОП.

Е – строка присутствует в КЭШ памяти, только этого процессора, но не модифицирована, т.е. ее копия в ОП действительна.

S – строка присутствует в КЭШ памяти, но потенциально может присутствовать в КЭШ памяти других процессоров, копия строки в ОП действительна.

I – строка содержит недостоверные (не обновленные) данные.

Более детально состояния строк КЭШ памяти можно описать таблицей.

Состояния строк

Характеристики строки

M

E

S

I

Достоверные данные в строке КЭШа

Да

Да

Да

Нет

Достоверные данные в копии строк в ОП

Нет

Да

Да

Нет

Наличие копии строки в других КЭШах

Нет

Нет

Возможно

Возможно

Реакция на запись в строку КЭШа

Не выводиться на магистраль

Не выводиться на магистраль

Выводиться на магистраль и другие КЭШи

Выводиться прямо на магистраль