Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MPT_otvety_na_ekzamen.docx
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
416.51 Кб
Скачать
  1. Принципы организации полностью ассоциативной и множественно-ассоциативной кэш-памятей:

Ассоциативная память – это память, элементы которой выбираются не по адресу, а по некоторому признаку, присваиваемому данному элементу.

В полностью ассоциативной кэш-памяти любой блок оперативной памяти может быть отображен на любую строку кэш-памяти. Поскольку между блоками в данном случае, нет каких либо определенных взаимосвязей, то в буфер должны записываться полный адрес каждого блока и непосредственно сам блок. Тогда четыре младших разряда (в примере рис.IV.3) физического адреса определяют номер байта в блоке, а старшие 28 разрядов определяют признак (тэг) данной строки и помещаются в память признаков. Таким образом, в памяти признаков (тэгов) будет храниться полный адрес блока. Этот подход к реализации кэш-памяти позволяет решить проблему конфликтов адресов, свойственную кэш-памяти с прямым отображением, так как каждая строка кэш-памяти будет отображать только один блок оперативной памяти.

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

Ответ на вопрос, какой же из блоков переписать в основную память, вполне очевиден – тот, к которому было наименьшее число обращений. Следовательно, необходим некоторый механизм, позволяющий определить наименее используемый блок. Кроме того, необходим и механизм, позволяющий отличать строки, к которым уже были обращения, от строк, к которым обращений еще не было. Вся эта технология основывается на информации, которая содержится в поле L (Least Recently Used). Конечно, это потребует дополнительных аппаратных затрат. Принципы функционирования таких механизмов изложим несколько позднее, при рассмотрении структуры множественной ассоциативной кэш-памяти. Кроме того, при каждом обращении к оперативной памяти необходимо сравнивать запрашиваемый адрес со всеми адресами, хранящимися в буфере (памяти признаков), а подобная процедура требует уже немалого времени. Таким образом, полностью ассоциативный кэш разрешает проблему конфликта адресов, но ценой дополнительного оборудования и увеличения времени обработки запроса в память. Поэтому этот тип кэш-памяти используется редко, только при небольших ее объемов в некоторых типах процессоров.

Бит достоверности V (Valid) и бит модифицируемости M (Modified) выполняют ту же роль, что и в кэш-памяти с прямым отображением.

Рис.IV.3 Организация полностью ассоциативной кэш-памяти

объемом 8 Кбайт.

Множественно-ассоциативная кэш-память.

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

Рассмотрим подробнее конкретный пример четырехвходовой множественно-ассоциативной кэш-памяти объемом 8 Кбайт (рис.IV.4), которая использовалась в процессорах i486.

Рис.IV.4. Организация множественно-ассоциативной кэш-памяти

объемом 8 Кбайт.

В этом случае буфер кэш-памяти будет иметь 128 групп строк по 4 строки в каждой. 4 младших бита физического адреса, выдаваемого процессором, по-прежнему определяют байт в блоке. 7 бит поля индекса обеспечивают выбор одной из групп кэш-памяти, а старшие 21 бит поля тэга (признака) позволяют установить присутствие адресуемого блока в кэш-памяти. Понятно, что для блоков с одним и тем же индексом отводится 4 строки буфера.

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

Кроме собственно буфера кэш-памяти, где хранится адресуемая информация, кэш-память имеет еще несколько вспомогательных полей: поле битов достоверности (или занятости), поле битов модифицирования и поле LRU. Рассмотрим их назначение подробнее. Каждой строке ставится в соответствие бит достоверности и бит модифицирования. Каждой группе (набору строк, множеству) ставится в соответствие код LRU. Бит достоверности определяет достоверность соответствующей строки, т.е., что в данную строку был записан некоторый код при обмене информацией между кэш-памятью и основной памятью. В самом начале, после инициализации системы, биты достоверности всех строк содержат нули.

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

В случае если, при этом, все строки данной группы (множества) уже заняты (достоверны), т.е. все биты достоверности этой группы строк установлены в состояние 1, то выбирается одна из строк, та, к которой дольше всех не было обращений, и на ее место заносится этот новый блок. Этот принцип устранения блока из строки, к которой дольше всего не было обращений, называется принципом LRU (Least Recently Used). Этот принцип аналогичен принципу LRU, который используется при свопинге сегментов или страниц между оперативной памятью и дисками, но более упрощен по методу выбора устраняемого блока. Поэтому применительно к кэш-памяти этот принцип часто называют псевдо-LRU.

Поясним суть метода псевдо-LRU более подробно. Обозначим строки во множестве (наборе) через L3,L2,L1,L0. Каждому множеству строк соответствует трехразрядный двоичный код с битами B2,B1,B0, которые модифицируются при каждом попадании (cache hit) и заполнении строки следующим образом:

  • Если обращение во множестве было к строке L0 или L1, то бит B0 устанавливается в состояние 1, а при обращении к строке L2 или L3,

бит B0 сбрасывается в 0;

  • Если последнее обращение в паре L0, L1 было к строке L0, то бит B1 устанавливается в состояние 1, а при обращении к строке L1 бит B1 сбрасывается в 0;

  • Если последнее обращение в паре L2, L3 было к строке L2, то бит B2 устанавливается в состояние 1, а при обращении к строке L3 бит B2 сбрасывается в 0.

Таким образом, в зависимости от временной последовательности обращения к строкам каждого множества, в блоке LRU данного множества формируется определенный код B2, B1, B0. Выбор заменяемой строки (когда все строки во множестве достоверны) определяется содержимым бит B2, B1, B0 следующим образом:

  • при 00Х – заменяется строка L0;

  • при 01Х – заменяется строка L1;

  • при 1Х0 – заменяется строка L2;

  • при 1Х1 – заменяется строка L3;

где Х – любое значение: 0 или 1.

Заметим, что кроме алгоритма Pseudo-LRU иногда используется алгоритм замещения по принципу FIFO (First-In, First-Out), при котором для замещения выбирается та строка, к которой было первое обращение в данном множестве строк. Использовался, также, принцип случайного (random) выбора строки для замещения. Эти алгоритмы проще в реализации, но не так эффективны.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]