Лабораторная работа выполняется на ПЭВМ типа 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, … ×àñòîòà îáðàùåíèÿ ê îäíîìó è òîìó æå àäðåñó çàâèñèò îò êîëè÷åñòâà ïîâòîðåíèé öèêëà îáðàáîòêè. Ýòè ïàðàìåòðû ìîæíî çàäàòü ñ ïîìîùüþ âêëàäêè Циклы.
Âêëàäêà Другиеîáåñïå÷èâàåò çàäàíèå èíòåðâàëà òàéìåðà äëÿ íåïðåðûâíîãî ðåæèìà ìîäåëèðîâàíèÿ.
После осуществления всех необходимых настроек можно переходить к исследованиям.
Во время моделирования имитируется выполнение некоторой программы, содержащей заданное количество команд с заданным процентным соотношением операций чтение – запись. При этом на шину адреса последовательно поступают адреса строк, которые необходимо считать из памяти или перезаписать в нее. Адреса формируются с помощью генератора случайных чисел с учетом наличия циклов обработки массивов. Блок сравнения и выборки в контроллере КЭШ-памяти их анализирует и определяет, есть ли строка с заданным адресом в КЭШе. Если строка присутствует, то она либо подается на шину данных, либо считывается с нее и обновляется. Если строки нет (КЭШ-промах), то идет запрос к основной памяти. После этого искомая строка либо подается на шину данных, либо считывается с нее и обновляется. Таким образом в программе рассматривается также и ситуация конфликта по памяти (КЭШ-промах).
Äâå öèôðû â ñêîáêàõ â íà÷àëå èìåíè ñòðîêè óêàçûâàþò íîìåð âåðñèè åå ñîäåðæèìîãî. Êðàñíûå ñòðåëêè ïîêàçûâàþò íàïðàâëåíèå ïåðåäà÷è äàííûõ. Äâóíàïðàâëåííàÿ ñòðåëêà ìåæäó îñíîâíîé è ÊÝØ-ïàìÿòüþ îáîçíà÷àåò, ÷òî â òå÷åíèå òàêòà ïðîèçîøëà ïåðåäà÷à äàííûõ ñíà÷àëà èç îñíîâíîé ïàìÿòè â ÊÝØ, à çàòåì - èç ÊÝØà â îñíîâíóþ ïàìÿòü.
Выходными данными моделирующей программы являются количество выполненных тактов и команд, среднее время выполнения команды в тактах и количество КЭШ-промахов.