Базовые принципы организации кэш-памяти.

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

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

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

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

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

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

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

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

  • Стратегия сквозной записи (WT – Write Through) предусматривает запись данных и в строку кэша, и в основную память. При этом, легко обеспечивается целостность данных и отпадает необходимость использования признаков достоверности данных. Но, вместе с тем, снижается скорость записи из-за необходимости обращения к основной памяти. Однако, в какой-то степени этот недостаток можно компенсировать, используя буфер отложенной записи FIFO-буфер.
  • Стратегия обратной записи (WB – Write Back) в случае кэш-попадания предполагает запись данных в действительную строку кэша и объявление ее недействительной до выгрузки ее содержимого в основную память. Такая выгрузка может выполняться в любое свободное время после модификации строки, если в ней нет острой необходимости, связанной с сохранением целостности данных.

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

Каталог кэша реализуется одной или двумя словарными микросхемами асинхронной статической памяти для хранения тегов (Tag SRAM) и, возможно, отдельной микросхемой для хранения признаков действительности (чистоты) строк (Dirty SRAM).

С точки зрения организации взаимного соответствия между строкой кэш-памяти и блоком основной памяти представляют интерес три известные архитектуры: кэш прямого отображения (direct-mapped cache), наборно-ассоциативный кэш (set-associative cache) и полностью ассоциативный кэш (fully associative cache).

 

Бесплатный конструктор сайтов - uCoz