Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LABA4.doc
Скачиваний:
13
Добавлен:
04.04.2013
Размер:
468.48 Кб
Скачать

Описание алгоритма моделирования

Алгоритм моделирования размещения данных в кэш-памяти представляет собой алгоритм чтения данных из кэш-памяти, показанный на рис.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

Рис. Внутренняя фрагментация в системе со страничной организацией.

Соседние файлы в предмете Организация ЭВМ