Программная модель кэш-памяти
К описанной в разд. 8.1 программной модели учебной ЭВМ может быть подключена программная модель кэш-памяти, структура которой в общем виде отображена на рис. 5.2. Конкретная реализация кэш-памяти в описываемой программной модели показана на рис. 8.15.
Кэш-память содержит N ячеек (в модели N может выбираться из множества {4, 8, 16, 32}), каждая из которых включает трехразрядное поле тега (адреса ОЗУ), шестиразрядное поле данных и три однобитовых признака (флага):
? Z — признак занятости ячейки;
? U — признак использования;
? W — признак записи в ячейку.
Таким образом, каждая ячейка кэш-памяти может дублировать одну любую ячейку ОЗУ, причем отмечается ее занятость (в начале работы модели все ячейки кэш-памяти свободны, VZ, = 0), факт записи информации в ячейку во время пребывания ее в кэш-памяти, а также использование ячейки (т. е. любое обращение к ней).

Текущее состояние кэш-памяти отображается на экране в отдельном окне в форме таблицы, причем количество строк соответствует выбранному числу ячеек кэш. Столбцы таблицы определяют содержимое полей ячеек, например, так, как показано в табл. 8.3.
Таблица 8.3. Пример текущего состояния кэш-памяти
| Теги | Данные | Z | U | W | |
Для настройки параметров кэш-памяти можно воспользоваться диалоговым окном Кэш-память,вызываемым командой Вид| Кэш-память,а затем нажать первую кнопку на панели инструментов открытого окна. После этих действий появится диалоговое окно Параметры кэш-памяти,позволяющее выбрать размер кэш-памяти, способ записи в нее информации и алгоритм замещения ячеек.
Напомним, что при сквозной записи при кэш-попадании в процессорных циклах записи осуществляется запись как в ячейку кэш-памяти, так и в ячейку ОЗУ, а при обратной записи — только в ячейку кэш-памяти, причем эта ячейка отмечается битом записи (Wt := 1). При очистке ячеек, отмеченных битом записи, необходимо переписать измененное значение ноля данных в соответствующую ячейку ОЗУ.
При кэш-промахе следует поместить в кэш-память адресуемую процессором ячейку. При наличии свободных ячеек кэш-памяти требуемое слово помещается в одну из них (в порядке очереди). При отсутствии свободных ячеек следует отыскать ячейку кэш-памяти, содержимое которой можно удалить, записав на его место требуемые данные (команду). Поиск такой ячейки осуществляется с использованием алгоритма замещения строк.
В модели реализованы три различных алгоритма замещения строк:
? случайное замещение, при реализации которого номер ячейки кэш-памяти выбирается случайным образом;
? очередь, при которой выбор замещаемой ячейки определяется временем пребывания ее в кэш-памяти;
? бит использования, случайный выбор осуществляется только из тех ячеек, которые имеют нулевое значение флага использования.
Напомним, что бит использования устанавливается в 1 при любом обращении к ячейке, однако, как только все биты Ut установятся в 1, все они тут же сбрасываются в 0, так что в кэш всегда ячейки разбиты на два непересекающихся подмножества по значению бита U — те, обращение к которым состоялось относительно недавно {после последнего сброса вектора U ) имеют значение U = 1, иные — со значением U = 0 являются кандидатами на удаление при использовании алгоритма замещения бит использования. Если в параметрах кэш-памяти установлен флаг с учетом бита записи, то все три алгоритма замещения осуществляют поиск кандидата на удаление прежде всего среди тех ячеек, признак записи которых не установлен, а при отсутствии таких ячеек (что крайне маловероятно) — среди всех ячеек кэшпамяти. При снятом флаге с учетом бита записи поиск осуществляется по всем ячейкам кэш-памяти без учета значения W.
Оценка эффективности работы системы с кэш-памятью определяется числом кэш-попаданий по отношению к общему числу обращений к памяти. Учитывая разницу в алгоритмах записи в режимах сквозной и обратной записи, эффективность использования кэш-памяти вычисляется по следующим выражениям (соответственно для сквозной и обратной записи):

где:
К — коэффициент эффективности работы кэш-памяти;
So — общее число обращений к памяти;
SK — число кэш-попаданий;
SK — число сквозных записей при кэш-попадании (в режиме сквозной записи);
S’K — число обратных записей (в режиме обратной записи).
Вспомогательные таблицы
В данном разделе представлены вспомогательные таблицы (табл. 8.4—8.8) для работы с моделью учебной ЭВМ.
Таблица 8.4. Таблица команд учебной ЭВМ
| МЛ\СТ | |||||||||
| NOP | JMP | MOV | |||||||
| IN | JZ | RD | RD | RDI | |||||
| OUT | JNZ | WR | WR | ||||||
| IRET | JS | ADD | ADD | ADI | |||||
| WRRB | JNS | SUB | SUB | SBI | |||||
| WRSP | JO | MUL | MUL | MULI | |||||
| PUSH | JNO | DIV | DIV | DIVI | |||||
| POP | JRNZ | IN | |||||||
| RET | INT | El | OUT | ||||||
| HLT | CALL | DI | |||||||
| Таблица 8.5.Типы адресации, их коды и обозначение | |||||||||
| Обозначение | Код | Тип адресации | Пример команды | ||||||
| Прямая (регистровая) | ADD 23 (ADD R3) | ||||||||
| # | Непосредственная | ADD #33 | |||||||
| @ | Косвенная | ADD @33 | |||||||
| Обозначение | Код | Тип адресации | Пример команды | ||||||
| [ ] | Относительная | ADD [33] | |||||||
| @R | Косвенно-регистровая | ADD @R3 | |||||||
| @R+ | Индексная с постинкрементом | ADD @R3+ | |||||||
| -@R | Индексная с преддекрементом | ADD -@R3 | |||||||
В табл. 8.6 приняты следующие обозначения:
? DD — данные, формируемые командой в качестве (второго) операнда: прямо или косвенно адресуемая ячейка памяти или трехразрядный непосредственный операнд;
? R* — содержимое регистра или косвенно адресуемая через регистр ячейка памяти;
? ADR* — два младших разряда ADR поля регистра CR;
? V — адрес памяти, соответствующий вектору прерывания;
? М(*) — ячейка памяти, прямо или косвенно адресуемая в команде; О I — пятиразрядный непосредственный операнд со знаком.
Таблица 8.6. Система команд учебной ЭВМ

Таблица 8.7.Таблица кодов ASCII (фрагмент)
| I | A | В | С | D | Е | F | ||||||||||
| @ | Р | ? | P | A | Р | а | Р | |||||||||
| ! | А | Q | а | q | Б | С | б | с | ||||||||
| В | R | b | r | В | т | в | т | |||||||||
| # | С | S | с | s | Г | У | г | У | ||||||||
| $ | D | т | d | t | Д | ф | д | -в- | ||||||||
| % | Е | и | е | u | Е | X | е | X | ||||||||
| F | V | f | V | Ж | Ц | ж | ц | |||||||||
| « | G | W | g | w | ч | ч | ||||||||||
| ( | Н | X | h | X | И | ш | и | ш | ||||||||
| ) | I | Y | i | У | й | щ | й | Щ | ||||||||
| А | J | Z | j | z | к | ъ | к | ъ | ||||||||
| В | + | ; | К | [ | k | { | л | ы | л | ы | ||||||
| С | L | м | ь | м | ь | |||||||||||
| D | — | = | М | ] | m | } | н | э | н | э | ||||||
| Е | N | n | щ | ю | Щ | ю | ||||||||||
| F | / | ? | О | _ | п | я | п | я |
Для решения с помощью ЭВМ некоторой задачи должна быть разработана программа. Программа на языке ЭВМ представляет собой последовательность команд. Код каждой команды определяет выполняемую операцию, тип
Таблица 8.8. Перевод НЕХ-кодов в десятичные числа
адресации и адрес. Выполнение программы, записанной в памяти ЭВМ, осуществляется последовательно по командам в порядке возрастания адресов команд или в порядке, определяемом командами передачи управления.
Для того чтобы получить результат выполнения программы, пользователь должен:
— ввести программу в память ЭВМ;
— определить, если это необходимо, содержимое ячеек ОЗУ и РОН, содержащих исходные данные, а также регистров IR и BR;
— установить в PC стартовый адрес программы; ? перевести модель в режим Работа.
Каждое из этих действий выполняется посредством интерфейса модели, описанного в главе 8. Ввод программы может осуществляться как в машинных кодах непосредственно в память модели, так и в мнемокодах в окно Текст программыс последующим ассемблированием.
Цель настоящей лабораторной работы — знакомство с интерфейсом модели ЭВМ, методами ввода и отладки программы, действиями основных классов команд и способов адресации. Для этого необходимо ввести в память ЭВМ и выполнить в режиме Шагнекоторую последовательность команд (определенную вариантом задания) и зафиксировать все изменения на уровне программно-доступных объектов ЭВМ, происходящие при выполнении этих команд.
Команды в память учебной ЭВМ вводятся в виде шестиразрядных десятичных чисел (см. форматы команд на рис. 8.3, коды команд и способов адресации в табл. 8.2—8.4).
В настоящей лабораторной работе будем программировать ЭВМ в машинных кодах.
Пример
Дана последовательность мнемокодов, которую необходимо преобразовать в машинные коды, занести в ОЗУ ЭВМ, выполнить в режиме Шаги зафиксировать изменение состояний программно-доступных объектов ЭВМ (табл. 9.1).
Таблица 9.1.Команды и коды
| Последовательность | Значения | |||||
| Команды | RD #20 | WR 30 | ADD #5 | WR @30 | JNZ 002 | |
| Коды | 21 1 020 | 22 0 030 | 23 1 005 | 22 2 030 | 12 0 002 |
Введем полученные коды последовательно в ячейки ОЗУ, начиная с адреса 000. Выполняя команды в режиме Шаг, будем фиксировать изменения программно-доступных объектов (в данном случае это Асе, PC и ячейки ОЗУ 020 и 030) в табл. 9.2.
Таблица 9.2.Содержимое регистров
| PC | Асс | М(30) | М(20) | PC | Асс | М(30) | М(20) |
Номер варианта выбираем по двум последним цифрам в зачетной книжке. Если номер больше 28 то от цифры отнимаем 28.
Задание для нечетных вариантов
Статьи к прочтению:
Алгоритм замещения
Похожие статьи:
-
Модели воздействия программных
Закладок на компьютеры Перехват В модели перехват программная закладка внедряется в ПЗУ, системное или прикладное программное обеспечение и сохраняет всю…
-
Классификация моделей надежности по
Термин модель надежности программного обеспечения, как правило, относится к математической модели, построенной для оценки зависимости надежности…
