
- •Министерство образования российской федерации
- •Введение
- •Теоретические сведения Принцип действия кэш-памяти
- •Организация кэш-памяти
- •Поблочное отображение
- •Преобразование адресов ассоциативным отображением
- •Стратегии выталкивания страниц
- •Принцип оптимальности
- •Выталкивание случайной страницы
- •Выталкивание первой пришедшей страницы (fifo)
- •Выталкивание дольше всего не использовавшейся страницы (lru)
- •Выталкивание реже всего используемой страницы (lfu)
- •Выталкивание не использовавшейся в последнее время страницы (nur)
- •Локальность
- •Описание алгоритма моделирования
- •Объекты и средства исследования
- •Порядок работы
- •Результаты работы
- •Варианты заданий для выполнения лабораторной работы
- •Контрольные вопросы
- •Библиографический список
Локальность
Большинство стратегий управления памятью базируется на концепции локальности, суть которой заключается в том, что распределение запросов процессов на обращение к памяти имеет, как правило, неравномерный характер с высокой степенью локальной концентрации. Свойство это скорее эмпирическое (наблюдаемое), чем теоретически обоснованное. Локальность никак нельзя гарантировать, однако ее вероятность зачастую весьма велика. Например, в системах со страничной организацией мы наблюдаем, что процессы обычно "оказывают предпочтение" определенным подмножествам своих страниц и что эти страницы обычно размещаются по соседству друг с другом в адресном пространстве процесса. Это не значит, что процесс не будет иметь ссылок на какую-либо новую страницу - если бы это было так, то процессы вообще не могли бы даже начать выполнение. Это просто означает, что процесс будет, как правило, сосредоточивать свои обращения в течение некоторого временного интервала на некотором конкретном подмножестве своих страниц.
Фактически свойство локальности для вычислительных систем довольно легко объяснимо, если учесть, каким образом пишутся программы и организуются данные. В частности,
1. Временная локальность, означающая, что к ячейкам памяти" к которым недавно производилось обращение, с большой вероятностью будет обращение в ближайшем будущем, обусловливается наличием следующих факторов:
а) программных циклов,
б) подпрограмм,
в) стеков,
г) переменных, используемых в качестве счетчиков и для накопления итоговых сумм.
2. Пространственная локальность, означающая, что обращения к памяти, как правило, концентрируются таким образом, что в случае обращения к некоторой ячейке памяти с большой вероятностью можно ожидать обращения к близлежащим ячейкам, обусловливается наличием следующих факторов;
а) организацией данных в виде массивов,
б) последовательным выполнением кода программы,
в) тенденцией программистов размещать описания взаимосвязанных переменных поблизости друг от друга.
КЭШ
память
Память
тегов
(ассоциативная
память) Память данных
о
1
16
Оперативная
память
1
Рис.
5 Связь
между оперативной памятью и кэш-памятью.
1
о
1
16
0
16382
0
2
2
127
0
1
2
127
0
1
2
16382
16383
При моделировании использованы модели оперативной памяти и кэш-памяти. На рис. 5 схематично показана связь между оперативной памятью и кэш-памятью.
Кэш-память состоит из памяти тегов (ассоциативной памяти) и памяти данных. Память тэгов (ассоциативная память) это таблица адресов блоков, в которой каждому адресу (номеру) блока оперативной памяти, присутствующем в кэш-памяти, ставится в соответствие адрес (номер) блока памяти данных кэша. Число строк этой таблицы равно числу блоков кэш-памяти. Адреса блоков оперативной памяти, не присутствующих в кэш-памяти, в таблице блоков не хранятся.
Динамическое преобразование адресов ассоциативным отображением производится по алгоритму, описанному в начале данного пособия.
Для моделирования выбрана стратегия выталкивания дольше всего не использовавшейся страницы (LRU). Эта стратегия выбрана в связи с тем, что она более чем другие стратегии выталкивания страниц, удовлетворяет принципу оптимальности, что в свою очередь базируется на концепции локальности.
Для реализации стратегии выталкивания дольше всего не использовавшейся страницы (LRU) используется стек, который изображен на рис.6. В стек закладываются адреса (номера) блоков оперативной памяти, присутствующие в кэш-памяти. Если блок оперативной памяти, к которому обращается процесс, присутствует в кэш-памяти, то его адрес (номер) переписывается в вершину стека, а содержимое стека сдвигается вниз на одну ячейку (это проиллюстрированно на рис. 6а). Если блок оперативной памяти, к которому обращаятся процесс, отсутствует в кэш-памяти, то его адрес (номер) записывается в вершину стека, все содержимое стека сдвигается вниз на одну ячейку, а самый нижний элемент стека удаляется из стека (см. рис. 6б). Адрес (номер), который содержит нижний элемент стека (удаляемый) и является адресом (номером) выталкиваемого блока.
a)
6)
Рис.6
Организация стека
LRU