- •Министерство образования российской федерации
- •Введение
- •Теоретические сведения Принцип действия кэш-памяти
- •Организация кэш-памяти
- •Поблочное отображение
- •Преобразование адресов ассоциативным отображением
- •Стратегии выталкивания страниц
- •Принцип оптимальности
- •Выталкивание случайной страницы
- •Выталкивание первой пришедшей страницы (fifo)
- •Выталкивание дольше всего не использовавшейся страницы (lru)
- •Выталкивание реже всего используемой страницы (lfu)
- •Выталкивание не использовавшейся в последнее время страницы (nur)
- •Локальность
- •Описание алгоритма моделирования
- •Объекты и средства исследования
- •Порядок работы
- •Результаты работы
- •Варианты заданий для выполнения лабораторной работы
- •Контрольные вопросы
- •Библиографический список
Описание алгоритма моделирования
Алгоритм
моделирования размещения данных в
кэш-памяти представляет собой алгоритм
чтения данных из кэш-памяти, показанный
на рис.7. На вход поступает адрес байта
ОП. Зная размер блока, вычисляется номер
блока в ОП и смещение в блоке, по которому
содержится байт данных. Адрес блока ОП
сравнивается с адресами блоков
ассоциативной памяти и определяется:
содержится ли данный блок, а следовательно
и байт данных, в КП или нет. Если блок
содержится в КП, то формируется адрес
байта в КП конкатенацией адреса блока
КП и смещения в блоке. Затем происходит
чтение байта из КП. Если нужного блока
не содержится в КП, то блок сначала
переписывается в КП. Если КП полностью
заполнена, то используется LRU стратегия
замещения блока.
1
2 3 1
2 3 i
- 2 i
- 1 i i
- 2 i
- 1 i n
- 2 n
- 1 n n
- 2 n
- 1 n
Рис.7 Алгоритм
чтения данных из кэш-памяти.
Объекты и средства исследования
Объектом исследования является кэш-память. Необходимо провести моделирование размещения данных в кэш-памяти (стратегия размещения блоков в кэш-памяти – полностью ассоциативное распределение).
Порядок работы
Программа написана и протестирована для операционной системы Windows 95. Теоретически возможно функционирование данной программы и под управлением ОС Windows NT. Запускать программу под управлением других ОС пользователь может на свой страх и риск.
Минимальные требования к характеристикам ПК устанавливаются в соответствии с требованиями соответствующей ОС.
Для получения результатов моделирования размещения данных в кэш-памяти необходимо выполнить следующие действия:
В главном меню программы выбрать пункт Model/Graphic или нажать комбинацию клавиш Crtt+G. В появившемся диалоговом окне ввести необходимые данные:
* Размер основной памяти
* Размер кэш-памяти
* Количество обращений к кэш-памяти
И затем дождаться результатов работы программы.
Программа написана на языке C++ с использованием компилятора MS Visual C++ 5.0 и библиотеки классов MFC 4.2. Отладка программы происходила в ОС Windows 95.
Для представления модели взаимодействия оперативной памяти и кэш-памяти были разработаны соответствующие классы. Для организации диалога с пользователем они использовались совместно с библиотекой классов MFC. Для более детального ознакомления обращайтесь непосредственно к тексту программы.
Результаты работы
В качестве тестовых примеров приведены результаты работы программы. Это графики зависимости числа попаданий в кэш-память от размера блока. Для всех графиков взято одинаковое количество обращений к кэш-памяти и размер оперативной памяти, изменяется только размер кэш-памяти.
Количество обращений к кэш-памяти = 32768
Размер оперативной памяти = 16384 Кб
1. Размер кэш-памяти = 8 Кб
2. Размер кэш-памяти
= 16 Кб
3. Размер кэш-памяти
= 32 Кб
Рекомендации, которые необходимо учитывать при выборе того или иного размера блока.
* Чем меньше размер блока, тем большее количество блоков будет в системе и тем больше будут таблицы блоков. Для систем, в которых таблицы блоков занимают кэш-память, это указывает на необходимость увеличенных размеров блоков. Такое неэффективное использование памяти из-за чрезмерно больших таблиц называется табличной фрагментацией.
* При крупных размерах блоков в первичную память при подкачке попадают большие объемы информации, которая, вообще говоря, может и не понадобиться. Это указывает на необходимость уменьшения размеров блоков.
* Поскольку обмены данными с оперативной памятью занимают относительно много времени, нужно свести к минимуму число обменов, которые будут производиться для программы во время ее выполнения. Это указывает, по-видимому, на необходимость увеличения размеров блоков.
* Программы, как правило, проявляют свойство локальности обращений, причем размеры подобных локальных участков невелики. Таким образом, уменьшение размера блока должно способствовать тому, что у программы образуется более компактный набор блоков, т. е. блоки рабочего множества, размещаемые в кэш-памяти, будут содержать более интенсивно используемые объекты.
* Поскольку данные работающих процессов редко занимают целое число блоков, в памяти наблюдается внутренняя фрагментация, иллюстрируемая на следующем рисунке. Сегмент длины s с равной вероятностью может иметь свою последнюю страницу почти полную или почти пустую, и, таким образом, в среднем потери из-за внутренней фрагментации составляют половину блока (при том ограничительном условии, что блок не может содержать части более чем одного сегмента). Чем меньше размер блока, тем меньше потери из-за внутренней фрагментации.
s
Первая
страница сегмента
Вторая
страница сегмента
Последняя
страница сегмента
В
среднем 1/2
Рис. Внутренняя фрагментация в системе со страничной организацией.