Внутреннее устройство кэша

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

• размер кэша;

• размер блока;

• функция отображения;

• алгоритм замещения;

• стратегия записи.

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

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

При загрузке блоков в кэш в конце концов наступает момент, когда все слоты заполняются и новый блок нужно записывать на место, занятое каким-то другим блоком. Выбор этого блока осуществляется в соответствии салгоритмом замещения, на который накладывает ограничения отображающая функция.При этом желательно было бы убрать именно тот блок, который, скорее всего, не по­надобится в ближайшем будущем. Хотя достоверно определить его невозможно» достаточно эффективной стратегией является замена блока, к которому дольше всего не было обращений. Такая стратегия называется политикой недавнего ис­пользования блока (least-recently-used — LRU). Для определения используемости блоков необходим соответствующий аппаратно реализованный механизм.

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