Программная модель кэш-памяти учебной ЭВМ
К описанной программной модели учебной ЭВМ может быть подключена программная модель кэш-памяти, структура которой в общем виде отображена на рис. 8.3, а конкретная реализация кэш-памяти в описываемой программной модели показана на рис. 8.4.
Кэш-память содержит N ячеек (в модели N может выбираться из множества {4, 8, 16, 32}), каждая из которых включает трехразрядное поле тега (адреса ОЗУ), шестиразрядное поле данных и три однобитовых признака (флага):
• Z — признак занятости ячейки;
• U — признак использования;
• W — признак записи в ячейку.
Таким образом, каждая ячейка кэш-памяти может дублировать одну любую ячейку ОЗУ, причем отмечается ее занятость (в начале работы модели все ячейки кэш-памяти свободны, "Z, = 0 ), факт записи информации в ячейку во время пребывания ее в кэш-памяти, а также использование ячейки (т. е. любое обращение к ней).
Рис. 8.4. Структура модели кэш-памяти
Текущее состояние кэш-памяти отображается на экране в отдельном окне в форме таблицы, причем количество строк соответствует выбранному числу ячеек кэш. Столбцы таблицы определяют содержимое полей ячеек, например, так, как показано в табл. 8.1.
Таблица 8.1. Пример текущего состояния кэш-памяти
Теги | Данные | Z | U | W | |
Для настройки параметров кэш-памяти можно воспользоваться диалоговым окном Кэш-память,вызываемым командой Вид> Кэш-память,а затем нажать первую кнопку на панели инструментов открытого окна. После этих действий появится диалоговое окно Параметры кэш-памяти,позволяющее выбрать размер кэш-памяти, способ записи в нее информации и алгоритм замещения ячеек.
Напомним, что при сквозной записи при кэш-попадании в процессорных циклах записи осуществляется запись как в ячейку кэш-памяти, так и в ячейку ОЗУ, а при обратной записи — только в ячейку кэш-памяти, причем эта ячейка отмечается битом записи (W:= 1). При очистке ячеек, отмеченных битом записи, необходимо переписать измененное значение ноля данных в соответствующую ячейку ОЗУ.
При кэш-промахе следует поместить в кэш-память адресуемую процессором ячейку. При наличии свободных ячеек кэш-памяти требуемое слово помещается в одну из них (в порядке очереди). При отсутствии свободных ячеек следует отыскать ячейку кэш-памяти, содержимое которой можно удалить, записав на его место требуемые данные (команду). Поиск такой ячейки осуществляется с использованием алгоритма замещения строк.
В модели реализованы три различных алгоритма замещения строк:
• случайное замещение, при реализации которого номер ячейки кэш-памяти выбирается случайным образом;
• бит использования, случайный выбор осуществляется только из тех ячеек, которые имеют нулевое значение флага использования;
• очередь (LRU), при которой выбор замещаемой ячейки определяется временем пребывания ее в кэш-памяти/
Напомним, что бит использования устанавливается в 1 при любом обращении к ячейке, однако, как только все биты Uустановятся в 1, все они тут же сбрасываются в 0, так что в кэш всегда ячейки разбиты на два непересекающихся подмножества по значению бита U — те, обращение к которым состоялось относительно недавно (после последнего сброса вектора U) имеют значение U = 1, иные — со значением U = 0 являются "кандидатами на удаление" при использовании алгоритма замещения "бит использования".
Если в параметрах кэш-памяти установлен флаг "с учетом бита записи", то все три алгоритма замещения осуществляют поиск "кандидата на удаление" прежде всего среди тех ячеек, признак записи которых не установлен, а при отсутствии таких ячеек (что крайне маловероятно) — среди всех ячеек кэш-памяти. При снятом флаге "с учетом бита записи" поиск осуществляется по всем ячейкам кэш-памяти без учета значения W.
Оценка эффективности работы системы с кэш-памятью определяется числом кэш-попаданий по отношению к общему числу обращений к памяти. Учитывая разницу в алгоритмах записи в режимах сквозной и обратной записи, эффективность использования кэш-памяти вычисляется по следующим выражениям (соответственно для сквозной и обратной записи):
где:
- К — коэффициент эффективности работы кэш-памяти;
- So — общее число обращений к памяти;
- SK — число кэш-попаданий;
- SK — число сквозных записей при кэш-попадании (в режиме сквозной записи);
- SiK — число обратных записей (в режиме обратной записи).
Задание для выполнения:
1.Изучить теоретические сведения посвященные организации кэш-памяти в модели учебной ЭВМ.
2. Выполнить задание, представленное некоторой короткой "программой" (табл. 8.2), которую необходимо выполнить с подключенной кэш-памятью (размером 4 и 8 ячеек) в шаговом режиме для следующих двух вариантов алгоритмов замещения указанных в таблице 8.3). Номер задания определяется номером варианта.
Таблица 8.2.Варианты задания
№ варианта | Номера команд программы | ||||||
RD #12 | WR 10 | WR @10 | ADD 12 | WR RO | SUB 10 | PUSH R0 | |
RD #65 | WR R2 | MOV R4,R2 | WR 14 | PUSH R2 | POP R3 | CALL 002 | |
RD #16 | SUB #5 | WR 9 | WR @9 | WR R3 | PUSH R3 | POP R4 | |
RD #99 | WR R6 | MOV R7,R6 | ADD R7 | PUSH R7 | CALL 006 | POP R8 | |
RD #11 | WR R2 | WR -@R2 | PUSH R2 | CALL 005 | POP R3 | RET | |
RD #19 | SUB #10 | WR9 | ADD #3 | WR ©9 | CALL 006 | POPR4 | |
RD #8 | WR R2 | WR @R2+ | PUSH R2 | POP R3 | WR -@R3 | CALL 003 | |
RD #13 | WR 14 | WR @14 | WR @13 | ADD 13 | CALL 006 | RET | |
RD #42 | SUB #54 | WR16 | WR @16 | WRR1 | ADD @R1+ | PUSH Rl | |
RD #10 | WR R5 | ADD R5 | WR R6 | CALL 005 | PUSH R6 | RET | |
JMP 006 | RD #76 | WR 14 | WR R2 | PUSH R2 | RET | CALL 001 |
Примечание. He следует рассматривать заданную последовательность команд как фрагмент программы*. Некоторые конструкции, например, последовательность команд push R6, ret в общем случае не возвращает программу в точку вызова подпрограммы. Такие группы команд введены в задание для того, чтобы обратить внимание студентов на особенности функционирования стека.
* Напомним, что программа определяется как последовательность команд, выполнение которых позволяет получить некоторый результат.
Таблица 8.3.Пояснения к вариантам задания
Номера вариантов | Режим записи | Алгоритм замещения |
1,7, 11 | Сквозная | СЗ, без учета бита записи |
Обратная | О, с учетом бита записи | |
2,5,9 | Сквозная | БИ, без учета бита записи |
Обратная | О, с учетом бита записи | |
3,6,12 | Сквозная | О, без учета бита записи |
Обратная | СЗ, с учетом бита записи | |
4, 8, 10 | Сквозная | БИ, без учета бита записи |
Обратная | БИ, с учетом бита записи |
Где:
СЗ – случайное замещение запись;
О – очередь;
БИ – бит использования.
2.1. Ввести в модель учебной ЭВМ текст своего варианта программы (см. табл. 8.2), ассемблировать его и сохранить на диске в виде txt-файла.
2.2. Установить параметры кэш-памяти размером 4 ячейки, выбрать режим записи и алгоритм замещения в соответствии с первой строкой своего варианта из табл. 8.3.
2.3. В шаговом режиме выполнить программу, фиксируя после каждого шага состояние кэш-памяти.
2.4. Для одной из команд записи (WR) перейти в режим Такти отметить, в каких микрокомандах происходит изменение кэш-памяти.
2.5. Для кэш-памяти размером 8 ячеек установить параметры в соответствии со второй строкой своего варианта из табл. 8.4 и выполнить программу в шаговом режиме еще раз, фиксируя последовательность номеров замещаемых ячеек кэш-памяти.
Содержание отчета
Отчет о лабораторной работе должен содержать следующие разделы:
1. Вариант задания — текст программы и режимы кэш-памяти.
2. Последовательность состояний кэш-памяти размером 4 ячейки при однократном выполнении программы (команды 1—7).
3. Последовательность микрокоманд при выполнении команды wr с отметкой тех микрокоманд, в которых возможна модификация кэш-памяти.
4. Для варианта кэш-памяти размером 8 ячеек — последовательность номеров замещаемых ячеек кэш-памяти для второго варианта параметров кэш-памяти при двукратном выполнении программы (команды 1—7).