Рис. 2.Организация кэш-памяти
с прямым отображением
►Если каждая строка ОЗУ имеет только одно фиксированное место, на котором она может находиться в кэш-памяти, то такая память называется памятью с прямым отображением.
Предположим, что ОЗУ состоит из 1000 строк с номерами от 0 до 999, а кэш-память имеет емкость только 100строк. В кэш с прямым отображением строки ОЗУ с номерами 0, 100, 200, ..., 900 могут сохраняться только в строке 0 кэш и нигде иначе; строки 1, 101, 201, …, 901 ОЗУ - в строке 1 кэш, строки ОЗУ с номерами 99, 199, …, 999 сохраняются в строке 99 кэш-памяти (рис. 2).
Такая организация кэш-памяти обеспечивает быстрый поиск в ней нужной информации: необходимо проверить ее наличие только в одном месте. Однако емкость КП при этом используется не в полной мере: несмотря на то, что часть кэш-памяти может быть не заполнена, будет происходить вытеснение из нее полезной информации при последовательных обращениях, например, к строкам 101, 301, 101 ОЗУ.
►Кэш-память называется полностью ассоциативной, если каждая строка ОЗУ может располагаться в любом месте кэш-памяти.
В полностью ассоциативной кэш-памяти максимально используется весь ее объем: вытеснение сохраненной в КП информации проводится лишь после ее полного заполнения. Однако поиск в кэш-памяти, организованной подобным образом, представляет собой трудную задачу.
►Компромиссом между этими двумя способами организации кэш-памяти служит множественно-ассоциативная КП, в которой каждая строка ОЗУ может находиться по ограниченному множеству мест в кэш-памяти.
◙ При необходимости замещения информации в кэш-памяти на новую используется несколько стратегий замещения. Наиболее известными среди них являются:
ü - замещается строка, к которой дольше всего не было обращений LRU (least recently used);
ü - замещается самая давняя по пребыванию в кэш-памяти строка FIFO;
ü - замещение проходит случайным образом Random.
Некоторые оценки вероятности кэш-промаха при разных стратегиях замещения (в %) представлены далее в табл. 1.
Таблица 1. Вероятность кэш-промаха для различной кэш-памяти, %
Размер кэша, Кбайт
Организация кэш-памяти
2-канальная ассоциативная
4-канальная ассоциативная
8-канальная ассоциативная
LRU
Random
LRU
Random
LRU
Random
5.2
5.7
4.7
5.3
4.4
5.0
1.9
2.0
1.5
1.7
1.4
1.5
1.15
1.17
1.13
1.13
1.12
1.12
Анализ таблицы показывает, что:
увеличением емкости кэша, естественно, уменьшается вероятностькэш-промаха, но даже при незначительной на сегодняшний день емкости кэш-памяти в 16 Кбайт около 95 % обращений происходят к кэш-памяти, минуя оперативную память;
чем больше степень ассоциативности кэш-памяти, тем больше вероятность кэш-попадания за счет более полного заполнения КП (время поиска информации в КП в данном анализе не учитывается);
механизм LRU обеспечивает более высокую вероятность кэш-попадания по сравнению с механизмом случайного замещения Random, однако этот выигрыш не очень значителен.
► Соответствие между данными в оперативной памяти и в кэш-памяти обеспечивается внесением изменений в те области ОЗУ, для которых данные в кэш-памяти подверглись изменениям. Существует два основных способа реализации этих действий: со сквозной записью (write-through) и с обратной записью (write-back).
- При считывании оба способа работают идентично.
● При записикэширование со сквозной записью обновляет основную память параллельно с обновлением информации в КП. Это несколько снижает быстродействие системы, так как микропроцессор впоследствии может вновь обратиться по тому же адресу для записи информации, и предыдущая пересылка строки кэш-памяти в ОЗУ окажется бесполезной. Однако при таком подходе содержимое соответствующих друг другу строк ОЗУ и КП всегда идентично. Это играет большую роль в мультипроцессорных системах с общей оперативной памятью.
● Кэширование с обратной записью модифицирует строку ОЗУ лишь при вытеснении строки кэш-памяти, например, в случае необходимости освобождения места для записи новой строки из ОЗУ в уже заполненную КП. Операции обратной записи также инициируются механизмом поддержания согласованности кэш-памяти при работе мультипроцессорной системы с общей оперативной памятью.
● Промежуточное положение между этими подходами занимает способ, при котором все строки, предназначенные для передачи из КП в ОЗУ, предварительно накапливаются в некотором буфере.
Передача осуществляется либо при вытеснении строки, как в случае кэширования с обратной записью, либо при необходимости согласования кэш-памяти нескольких микропроцессоров в мультипроцессорной системе, либо при заполнении буфера.
Такая передача проводится в пакетном режиме, что более эффективно, чем передача отдельной строки.