Реализован компромисс между полностью ассоциативной кэш-памятью и кэш-памятью с прямым отображением: ОП разбивается на блоки, объединенные в области (как при прямом отображении), КП разбивается на группы мест по числу блоков в области, т.е. для каждого индекса имеется несколько мест (в одной группе), где он может хранится (Рис. 3.4.10).
Кэш-память разделяем на N групп. Каждая группа включает в себя М мест. ОП разделяется на К областей по N блоков в каждой из области. Одновременно в кэш-памяти могут находится до M блоков которые имеют в областях номера 0. Раньше при памяти с прямым отображением был один блок а сейчас мы говорим что не один нулевой блок может находится в памяти, а целых M нулевых блоков.
У нас имеется, как и в предыдущем случае, адрес, поступающий от процессора, разделенный на три части:
1. d – смещение внутри блока.
2. i – Индекс, который определяет, как и в памяти с прямым отображением, группу тегов находящихся в кэш-памяти. Сами эти теги подвергаются ассоциативному сравнению, полученного от процессора.
Как и в памяти с прямым отображением имеется ЗУ с линейной организацией памяти, которое называется статическое ЗУ тегов. Индекс определяет группу тегов, то есть произошло как бы расслоение кэш-памяти. Эти теги подвергаются ассоциативному сравнению с тегом находищимся в адресе. СР – устройство ассоциативного сравнения — компоратор. Теги поступают на цифровые компораторы сравнения тегов (СР). После сравнения теги поступают в шифратор (CD), который говорит о том, в каком месте группы находится требуемый блок или что этого блока нет. Если блок имеется, выдается номер места в этой группе. С CD снимаются 2 сигнала, т.е. решаются две задачи:
1. Выбор свободного места в КП, если оно есть;
2. если все места заняты, выбирает замещаемое место путем анализа тегов, которое содержит бит обращения (модификации) и формирует номар места, которое можно использовать для размещения нового блока, предварительно сохранив хранящийся, если установлен бит модификации в тэге.
Стратегия выборки определяет какое место необходимо выбрать для размещения блока в кэш-памяти. Стратегия замещения определяет какое место освободить для записи нового блока.
Допустим контроллер обнаружил кэш-промах, т.е. сработала эта схема и обнаружила, что нет требуемого блока в кэш-памяти, но вся кэш-память свободна или занята, и имеются некие свободные места в той группе, которая предназначена для хранения этого блока. Для выбора свободных мест шифратор должен выдавать не только сигнал о том, что блока нет, но сигнал того — свободно место или занято. Если свободных мест нет, то в этом случае можно использовать в памяти тегов дополнительные теги, т.е. хранить там не только теги мест, но еще и специальные флаги: W – в это место произведена запись, F – частота обращения к блоку (контроллер должен с некой периодичностью сбрасывать этот флаг в 0), B.
Шифратор дополнительно решает выбор свободного места в кэш-памяти. Для этого может использоваться специальный бит в теговой памяти В – место занято. Если все места заняты и установлен бит записи W, шифратор реализует стратегию замещения. Для этого используются такие биты, как W — место модифициравано и F – к месту было обращение процессора. Биты F контроллером периодически сбрасываются в 0.
Недостатки:
1. Сложная и дорогостоящая память.
2. Требуется большой объем памяти тегов.
3. Усложненные схемы для определения свободных или обновляемых мест.
