Описание лабораторной установки

Лабораторная работа выполняется на ПЭВМ типа IBM, работающей в среде Windows 98/2000 и выше. Программа имитационного моделирования составлена на языке Delphi 7.0. В ней представлена упрощенная модель подсистемы «Оперативная память – КЭШ». Êðîìå òîãî, â íåé îòîáðàæåíû øèíû àäðåñà è äàííûõ ìèêðîïðîöåññîðà.

Имитационная модель воспроизводит процесс выполнения команд обращения к памяти (чтения и записи). Основное внимание уделено визуализации процессов взаимодействия устройств подсистемы. Имеется возможность сравнивать архитектурные решения и алгоритмы замещения блоков в КЭШе.

Исходными данными для моделирования являются:

- количество команд обращения к памяти;

- доля команд чтения в последовательности;

- доля команд записи в общей смеси;

- объем оперативной памяти (измеряется в строках);

- объем КЭШ-памяти (измеряется в строках);

- способ организации работы КЭШ-памяти:

a) полностью ассоциативная;

b) множественно-ассоциативная;

c) с прямым отображением;

- для множественно-ассоциативной памяти задается количество подмножеств в КЭШе;

- метод обеспечения когерентности памяти;

- метод замещения строк в КЭШ-памяти;

- времена чтения и записи в КЭШ-память (измеряются в тактах);

- времена чтения и записи в оперативную память (измеряются в тактах).

Результаты моделирования представляются в виде:

- количества выполненных команд;

- количества выполненных тактов;

- среднего времени выполнения команды;

- количества промахов при обращении к КЭШ-памяти.

Исполняемый модуль программы моделирования имеет имя Memoryи находится в папке Lab 6. Его запуск осуществляется традиционным способом. После запуска на экране появляется основное окно, которое позволяет задать параметры модели и один из двух режимов моделирования: íåïðåðûâíûé èëè ïîòàêòîâûé. Èõ âûáîð îñóùåñòâëÿåòñÿ ñ ïîìîùüþ ìåíþ Файл –> Режим моделирования.

 íà÷àëå íåîáõîäèìî çàäàòü èñõîäíûå äàííûå (âûïîëíèòü íàñòðîéêó ìîäåëè). Ýòà ïðîöåäóðà, êàê è â ïðåäûäóùèõ ðàáîòàõ, âûïîëíÿåòñÿ ñ ïîìîùüþ ìåíþ Параметры.Ïðè âûáîðå óêàçàííîãî ïóíêòà ïîÿâëÿåòñÿ îêíî, ñîäåðæàùåå íåñêîëüêî çàêëàäîê.

Çàêëàäêà КЭШïîçâîëÿåò âûáðàòü âèä ÊÝØ-ïàìÿòè: ïîëíîñòüþ àññîöèàòèâíàÿ, ìíîæåñòâåííî-àññîöèàòèâíàÿ èëè ñ ïðÿìûì îòîáðàæåíèåì. Ïðè âûáîðå ìíîæåñòâåííî-àññîöèàòèâíîé ïàìÿòè ìîæíî çàäàòü êîëè÷åñòâî ïîäìíîæåñòâ â ÊÝØå èç ñëåäóþùåãî ðÿäà: 2,4,8. Äëÿ ìíîæåñòâåííî-àññîöèàòèâíîé ïàìÿòè èëè ñ ïðÿìûì îòîáðàæåíèåì â ìîäåëè ÊÝØà ïîëå Òåãà äîïîëíÿåòñÿ ïîëåì Èíäåêñà. Íà ýòîé âêëàäêå ìîæíî òàêæå âûáðàòü ìåòîä çàìåùåíèÿ ñòðîê â ÊÝØ-ïàìÿòè: LRU, FIFO, LFU èëè ïðîèçâîëüíûé.

Âêëàäêà Взаимодействиеïîçâîëÿåò âûáðàòü ìåòîä êîãåðåíòíîñòè ïàìÿòè: ñêâîçíîé èëè îáðàòíîé çàïèñè. Ïðè âûáîðå ìåòîäà îáðàòíîé çàïèñè â ìîäåëü ÊÝØà äîáàâëÿåòñÿ ïîëå ÁÌ – áèò ìîäèôèêàöèè, êîòîðîå îòîáðàæàåò ñîñòîÿíèå áèòà ìîäèôèêàöèè äëÿ êàæäîé ñòðîêè. Íà ýòîé âêëàäêå ìîæíî òàêæå çàäàòü âðåìÿ îáðàùåíèÿ (÷òåíèå/çàïèñü) ê ÊÝØ è îñíîâíîé ïàìÿòè.

Âêëàäêà Командыïîçâîëÿåò óêàçàòü îáùåå êîëè÷åñòâî êîìàíä ðàáîòû ñ ïàìÿòüþ (îò 1000 äî 10000). Ñ ïîìîùüþ ýòîé âêëàäêè ìîæíî òàêæå çàäàòü ïðîöåíòíîå ñîîòíîøåíèå êîëè÷åñòâà êîìàíä çàïèñè è ÷òåíèÿ.

Âêëàäêà Объемы памятиïîçâîëÿåò çàäàòü îáúåìû îñíîâíîé (16 – 1024) è ÊÝØ-ïàìÿòè (8 – 64) â ñòðîêàõ, à òàêæå êîëè÷åñòâî ñòðîê â ïîäìíîæåñòâå. Ïîÿâëåíèå êýø-ïðîìàõîâ è èõ êîëè÷åñòâî ñóùåñòâåííî çàâèñÿò îò ïîðÿäêà ðàñïîëîæåíèÿ ñòðîê, â êîòîðûõ íàõîäÿòñÿ îïåðàíäû êîìàíä. Òàê ïðè îáðàáîòêå ìàññèâîâ îáû÷íî àäðåñà ìåíÿþòñÿ ëèíåéíî: 0, 1, 2, … ×àñòîòà îáðàùåíèÿ ê îäíîìó è òîìó æå àäðåñó çàâèñèò îò êîëè÷åñòâà ïîâòîðåíèé öèêëà îáðàáîòêè. Ýòè ïàðàìåòðû ìîæíî çàäàòü ñ ïîìîùüþ âêëàäêè Циклы.

Âêëàäêà Другиеîáåñïå÷èâàåò çàäàíèå èíòåðâàëà òàéìåðà äëÿ íåïðåðûâíîãî ðåæèìà ìîäåëèðîâàíèÿ.

 

После осуществления всех необходимых настроек можно переходить к исследованиям.

Во время моделирования имитируется выполнение некоторой программы, содержащей заданное количество команд с заданным процентным соотношением операций чтение – запись. При этом на шину адреса последовательно поступают адреса строк, которые необходимо считать из памяти или перезаписать в нее. Адреса формируются с помощью генератора случайных чисел с учетом наличия циклов обработки массивов. Блок сравнения и выборки в контроллере КЭШ-памяти их анализирует и определяет, есть ли строка с заданным адресом в КЭШе. Если строка присутствует, то она либо подается на шину данных, либо считывается с нее и обновляется. Если строки нет (КЭШ-промах), то идет запрос к основной памяти. После этого искомая строка либо подается на шину данных, либо считывается с нее и обновляется. Таким образом в программе рассматривается также и ситуация конфликта по памяти (КЭШ-промах).

Äâå öèôðû â ñêîáêàõ â íà÷àëå èìåíè ñòðîêè óêàçûâàþò íîìåð âåðñèè åå ñîäåðæèìîãî. Êðàñíûå ñòðåëêè ïîêàçûâàþò íàïðàâëåíèå ïåðåäà÷è äàííûõ. Äâóíàïðàâëåííàÿ ñòðåëêà ìåæäó îñíîâíîé è ÊÝØ-ïàìÿòüþ îáîçíà÷àåò, ÷òî â òå÷åíèå òàêòà ïðîèçîøëà ïåðåäà÷à äàííûõ ñíà÷àëà èç îñíîâíîé ïàìÿòè â ÊÝØ, à çàòåì - èç ÊÝØà â îñíîâíóþ ïàìÿòü.

Выходными данными моделирующей программы являются количество выполненных тактов и команд, среднее время выполнения команды в тактах и количество КЭШ-промахов.