Часть III. Описание архитектуры учебной эвм
Скачать 2.15 Mb.
|
ГЛАВА 9 Лабораторные работы Цикл лабораторных работ рассчитан на выполнение студентами в рамках курса "Архитектура ЭВМ" и других, подобных по содержанию. Цикл включает работы различного уровня. Лабораторные работы № 1—4 ориентированы на первичное знакомство с архитектурой процессора, системой команд, способами адресации и основными приемами программирования на машинно-ориентированном языке. Лабораторная работа № 5 иллюстрирует реализацию командного цикла процессора на уровне микроопераций. Лабораторная работа № 6 посвящена способам организации связи процессора с внешними устройствами, а в лабораторных работах № 7 и 8 рассматривается организация кэш-памяти и эффективность различных алгоритмов замещения. Все работы выполняются на программной модели учебной ЭВМ и взаимодействующих с ней в программных моделях ВУ и кэш-памяти, описанных в главе 8. Описание работы включает постановку задачи, пример выполнения, набор вариантов индивидуальных заданий, порядок выполнения работы, требования к содержанию отчета и контрольные вопросы. 9.1. Лабораторная работа № 1. Архитектура ЭВМ и система команд 9.1.1. Общие положения Для решения с помощью ЭВМ некоторой задачи должна быть разработана программа. Программа на языке ЭВМ представляет собой последовательность команд. Код каждой команды определяет выполняемую операцию, тип адресации и адрес. Выполнение программы, записанной в памяти ЭВМ, осуществляется последовательно по командам в порядке возрастания адресов команд или в порядке, определяемом командами передачи управления. Для того чтобы получить результат выполнения программы, пользователь должен: ввести программу в память ЭВМ; определить, если это необходимо, содержимое ячеек ОЗУ и РОН, содержащих исходные данные, а также регистров 1К. и ВК; установить в РС стартовый адрес программы; перевести модель в режим Работа. Каждое из этих действий выполняется посредством интерфейса модели, описанного в главе 8. Ввод программы может осуществляться как в машинных кодах непосредственно в память модели, так и в мнемокодах в окно Текст программы с последующим ассемблированием. Цель настоящей лабораторной работы — знакомство с интерфейсом модели ЭВМ, методами ввода и отладки программы, действиями основных классов команд и способов адресации. Для этого необходимо ввести в память ЭВМ и выполнить в режиме Шаг некоторую последовательность команд (определенную вариантом задания) и зафиксировать все изменения на уровне программно-доступных объектов ЭВМ, происходящие при выполнении этих команд. Команды в память учебной ЭВМ вводятся в виде шестиразрядных десятичных чисел (см. форматы команд на рис. 8.3, коды команд и способов адресации в табл. 8.2—8.4). В настоящей лабораторной работе будем программировать ЭВМ в машинных кодах. 9.1.2. Пример 1 Дана последовательность мнемокодов, которую необходимо преобразовать в машинные коды, занести в ОЗУ ЭВМ, выполнить в режиме Шаг и зафиксировать изменение состояний программно-доступных объектов ЭВМ (табл. 9.1). Таблица 9.1. Команды и коды Введем полученные коды последовательно в ячейки ОЗУ, начиная с адреса 000. Выполняя команды в режиме Шаг, будем фиксировать изменения программно-доступных объектов (в данном случае это Асc, РС и ячейки ОЗУ 020 и 030) в табл. 9.2. Таблица 9.2. Содержимое регистров 9.1.3. Задание 1 Ознакомиться с архитектурой ЭВМ (см. часть I). Записать в ОЗУ "программу", состоящую из пяти команд— варианты задания выбрать из табл. 9.3. Команды разместить в последовательных ячейках памяти. При необходимости установить начальное значение в устройство ввода IR. Определить те программно-доступные объекты ЭВМ, которые будут изменяться при выполнении этих команд. Выполнить в режиме Шаг введенную последовательность команд, фиксируя изменения значений объектов, определенных в п. 4, в таблице (см. форму табл. 9.2). Если в программе образуется цикл, необходимо просмотреть не более двух повторений каждой команды, входящей в тело цикла. Таблица 9.3. Варианты задания 1 Таблица 9.3. (окончание) 9.1.4. Содержание отчета Формулировка варианта задания. Машинные коды команд, соответствующих варианту задания. Результаты выполнения последовательности команд в форме табл. 9.2. 9.1.5. Контрольные вопросы Из каких основных частей состоит ЭВМ и какие из них представлены в модели? Что такое система команд ЭВМ? Какие классы команд представлены в модели? Какие действия выполняют команды передачи управления? Какие способы адресации использованы в модели ЭВМ? В чем отличие между ними? Какие ограничения накладываются на способ представления данных в модели ЭВМ? Какие режимы работы предусмотрены в модели и в чем отличие между ними? Как записать программу в машинных кодах в память модели ЭВМ? Как просмотреть содержимое регистров процессора и изменить содержимое некоторых регистров? Как просмотреть и, при необходимости, отредактировать содержимое ячейки памяти? Как запустить выполнение программы в режиме приостановки работы после выполнения каждой команды? Какие способы адресации операндов применяются в командах ЭВМ? Какие команды относятся к классу передачи управления? 9.2. Лабораторная работа № 2. Программирование разветвляющегося процесса Для реализации алгоритмов, пути в которых зависят от исходных данных, используют команды условной передачи управления. 9.2.1. Пример 2 В качестве примера (несколько упрощенного по сравнению с заданиями лабораторной работы № 2) рассмотрим программу вычисления функции причем х вводится с устройства ввода IR, результат у выводится на OR. Граф-схема алгоритма решения задачи показана на рис. 9.1. Рис. 9.1. Граф-схема алгоритма В данной лабораторной работе используются двухсловные команды с непосредственной адресацией, позволяющие оперировать отрицательными числами и числами по модулю, превышающие 999, в качестве непосредственного операнда. Оценив размер программы примерно в 20—25 команд, отведем для области данных ячейки ОЗУ, начиная с адреса 030. Составленная программа с комментариями представлена в виде табл. 9.4. Таблица 9.4. Пример программы Таблица 9.4 (окончание) 9.2.2. Задание 2 1. Разработать программу вычисления и вывода значения функции: для вводимого из IR значения аргумента x. Функции и допустимые пределы изменения аргумента приведены в табл. 9.5, варианты заданий — в табл. 9.6. Исходя из допустимых пределов изменения аргумента функций (табл. 9.5) и значения параметра а для своего варианта задания (табл. 9.6) выделить на числовой оси Ох области, в которых функция у вычисляется по представленной в п. 1 формуле, и недопустимые значения аргумента. На недопустимых значениях аргумента программа должна выдавать на OR максимальное отрицательное число: 199 999. Ввести текст программы в окно Текст программы, при этом возможен набор и редактирование текста непосредственно в окне Текст программы или загрузка текста из файла, подготовленного в другом редакторе. Ассемблировать текст программы, при необходимости исправить синтаксические ошибки. Отладить программу. Для этого: а) записать в IR значение аргумента х > а (в области допустимых значений); б) записать в РС стартовый адрес программы; в) проверить правильность выполнения программы (т. е. правильность результата и адреса останова) в автоматическом режиме. В случае наличия ошибки выполнить пп. 5, г и 5, д; иначе перейти к п. 5, е; г) записать в РС стартовый адрес программы; д) наблюдая выполнение программы в режиме Шаг, найти команду, являющуюся причиной ошибки; исправить ее; выполнить пп. 5, а — 5, в; е) записать в IR значение аргумента х < а (в области допустимых значений); выполнить пп. 5, б и 5, в; ж) записать в IR недопустимое значение аргумента х и выполнить пп. 5, б и 5, в. Для выбранного допустимого значения аргумента x наблюдать выполнение отлаженной программы в режиме Шаг и записать в форме табл. 9.2 содержимое регистров ЭВМ перед выполнением каждой команды. Таблица 9.5. Функции Таблица 9.6. Варианты задания 2 9.2.3. Содержание отчета Отчет о лабораторной работе должен содержать следующие разделы: Формулировка варианта задания. Граф-схема алгоритма решения задачи. Размещение данных в ОЗУ. Программа в форме табл. 9.4. Последовательность состояний регистров ЭВМ при выполнении программы в режиме Шаг для одного значения аргумента. Результаты выполнения программы для нескольких значений аргумента, выбранных самостоятельно. 9.2.4. Контрольные вопросы Как работает механизм косвенной адресации? Какая ячейка будет адресована в команде с косвенной адресацией через ячейку 043, если содержимое этой ячейки равно 102 347? Как работают команды передачи управления? Что входит в понятие "отладка программы"? Какие способы отладки программы можно реализовать в модели? 9.3. Лабораторная работа № 3. Программирование цикла с переадресацией При решении задач, связанных с обработкой массивов, возникает необходимость изменения исполнительного адреса при повторном выполнении некоторых команд. Эта задача может быть решена путем использования косвенной адресации. 9.3.1. Пример 3 Разработать программу вычисления суммы элементов массива чисел С1, С2,..., Сn. Исходными данными в этой задаче являются: n — количество суммируемых чисел и С1, С2, …, Сn — массив суммируемых чисел. Заметим, что должно выполняться условие n > 1, т. к. алгоритм предусматривает, по крайней мере, одно суммирование. Кроме того, предполагается, что суммируемые числа записаны в ОЗУ подряд, т. е. в ячейки памяти с последовательными адресами. Результатом является сумма S. Составим программу для вычисления суммы со следующими конкретными параметрами: число элементов массива— 10, элементы массива расположены в ячейках ОЗУ по адресам 040, 041, 042, ..., 049. Используемые для решения задачи промежуточные переменные имеют следующий смысл: Ai — адрес числа Сi, i {1, 2,..., 10}; ОЗУ(Ai) — число по адресу Ai, S — текущая сумма; k — счетчик цикла, определяющий число повторений тела цикла. Распределение памяти таково. Программу разместим в ячейках ОЗУ, начиная с адреса 000, примерная оценка объема программы — 20 команд; промежуточные переменные: Аi — в ячейке ОЗУ с адресом 030, k — по адресу 031, S — по адресу 032. ГСА программы показана на рис. 9.2, текст программы с комментариями приведен в табл. 9.7. Рис. 9.2. Граф-схема алгоритма для примера 3 Таблица 9.7. Текст программы примера 3 Таблица 9.7 (окончание) 9.3.2. Задание 3 Написать программу определения заданной характеристики последовательности чисел С1, С2,..., Сn. Варианты заданий приведены в табл. 9.8. Записать программу в мнемокодах, введя ее в поле окна Текст программы. Сохранить набранную программу в виде текстового файла и произвести ассемблирование мнемокодов. Загрузить в ОЗУ необходимые константы и исходные данные. Отладить программу. Т аблица 9.8. Варианты задания 3 Примечание. Под четными (нечетными) элементами массивов понимаются элементы массивов, имеющие четные (нечетные) индексы. Четные числа— элементы массивов, делящиеся без остатка на 2. 9.3.3. Содержание отчета Формулировка варианта задания. Граф-схема алгоритма решения задачи. Распределение памяти (размещение в ОЗУ переменных, программы и необходимых констант). Программа. Значения исходных данных и результата выполнения программы. 9.3.4. Контрольные вопросы Как организовать цикл в программе? Что такое параметр цикла? Как поведет себя программа, приведенная в табл. 9.7. если в ней будет отсутствовать команда WR 31по адресу 014? Как поведет себя программа, приведенная в табл. 9.7, если метка М1 будет поставлена по адресу 005? 007? 9.4. Лабораторная работа № 4. Подпрограммы и стек В программировании часто встречаются ситуации, когда одинаковые действия необходимо выполнять многократно в разных частях программы (например, вычисление функции sin x). При этом с целью экономии памяти не следует многократно повторять одну и ту же последовательность команд — достаточно один раз написать так называемую подпрограмму (в терминах языков высокого уровня — процедуру) и обеспечить правильный вызов этой подпрограммы и возврат в точку вызова по завершению подпрограммы. Для вызова подпрограммы необходимо указать ее начальный адрес в памяти и передать (если необходимо) параметры — те исходные данные, с которыми будут выполняться предусмотренные в подпрограмме действия. Адрес подпрограммы указывается в команде вызова CALL, а параметры могут передаваться через определенные ячейки памяти, регистры или стек. Возврат в точку вызова обеспечивается сохранением адреса текущей команды (содержимого регистра РС) при вызове и использованием в конце подпрограммы команды возврата RET, которая возвращает сохраненное значение адреса возврата в РС. Для реализации механизма вложенных подпрограмм (возможность вызова подпрограммы из другой подпрограммы и т. д.) адреса возврата целесообразно сохранять в стеке. Стек ("магазин") — особым образом организованная безадресная память, доступ к которой осуществляется через единственную ячейку, называемую верхушкой стека. При записи слово помещается в верхушку стека, предварительно все находящиеся в нем слова смещаются вниз на одну позицию; при чтении извлекается содержимое верхушки стека (оно при этом из стека исчезает), а все оставшиеся слова смещаются вверх на одну позицию. Такой механизм напоминает действие магазина стрелкового оружия (отсюда и второе название). В программировании называют такую дисциплину обслуживания LIFO (Last, последним пришел — первым вышел) в отличие от дисциплины типа очередь— FIFO (First In First Out , первым пришел — первым вышел). В обычных ОЗУ нет возможности перемещать слова между ячейками, поэтому при организации стека перемещается не массив слов относительно неподвижной верхушки, а верхушка относительно неподвижного массива. Под стек отводится некоторая область ОЗУ, причем адрес верхушки хранится в специальном регистре процессора — указателе стека SР. В стек можно поместить содержимое регистра общего назначения по команде PUSH или извлечь содержимое верхушки в регистр общего назначения по команде POP. Кроме того, по команде вызова подпрограммы CALL значение программного счетчика РС (адрес следующей команды) помещается в верхушку стека, а по команде RET содержимое верхушки стека извлекается в РС. При каждом обращении в стек указатель SP автоматически модифицируется. В большинстве ЭВМ стек "растет" в сторону меньших адресов, поэтому перед каждой записью содержимое SР уменьшается на 1, а после каждого извлечения содержимое SР увеличивается на 1. Таким образом, SР всегда указывает на верхушку стека. Цель настоящей лабораторной работы — изучение организации программ с использованием подпрограмм. Кроме того, в процессе организации циклов мы будем использовать новые возможности системы команд модели ЭВМ, которые позволяют работать с новым классом памяти — сверхоперативной (регистры общего назначения — РОН). В реальных ЭВМ доступ в РОН занимает значительно меньшее время, чем в ОЗУ; кроме того, команды обращения с регистрами короче команд обращения к памяти. Поэтому в РОН размещаются наиболее часто используемые в программе данные, промежуточные результаты, счетчики циклов, косвенные адреса и т. п. В системе команд учебной ЭВМ для работы с РОН используются специальные команды, мнемоники которых совпадают с мнемониками соответствующих команд для работы с ОЗУ, но в адресной части содержат символы регистров R0—R9. Кроме обычных способов адресации (прямой и косвенной) в регистровых командах используются два новых — постинкрементная и преддекрементная (см. табл. 8.5). Кроме того, к регистровым относится команда организации цикла JRNZ R,М. По этой команде содержимое указанного в команде регистра уменьшается на 1, и если в результате вычитания содержимого регистра не равно 0, то управление передается на метку м. Эту команду следует ставить в конце тела цикла, метку м — в первой команде тела цикла, а в регистр R помещать число повторений цикла. 9.4.1. Пример 4 Даны три массива чисел. Требуется вычислить среднее арифметическое их максимальных элементов. Каждый массив задается двумя параметрами: адресом первого элемента и длиной. Очевидно, в программе трижды необходимо выполнить поиск максимального элемента массива, поэтому следует написать соответствующую подпрограмму. Параметры в подпрограмму будем передавать через регистры: R1 — начальный адрес массива, R2 — длина массива. Рассмотрим конкретную реализацию этой задачи. Пусть первый массив начинается с адреса 085 и имеет длину 14 элементов, второй— 100 и 4, третий — 110 и 9. Программа будет состоять из основной части и подпрограммы. Основная программа задает параметры подпрограмме, вызывает ее и сохраняет результаты работы подпрограммы в рабочих ячейках. Затем осуществляет вычисление среднего арифметического и выводит результат на устройство вывода. В качестве рабочих ячеек используются регистры общего назначения R6 и R7— для хранения максимальных элементов массивов Подпрограмма получает параметры через регистры R1 (начальный адрес массива) и R2 (длина массива). Эти регистры используются подпрограммой в качестве регистра текущего адреса и счетчика цикла соответственно. Кроме того, R3 используется для хранения текущего максимума, а R4 — для временного хранения текущего элемента. Подпрограмма возвращает результат через аккумулятор. В табл. 9.9 приведен текст основной программы и подпрограммы. Обратите внимание, цикл в подпрограмме организован с помощью команды JRBZ, а модификация текущего адреса— средствами постинкрементной адресации. Таблица 9.9. Программа примера 4 Таблица 9.9 (окончание) 9.4.2. Задание 4 Составить и отладить программу учебной ЭВМ для решения следующей задачи. Три массива в памяти заданы начальными адресами и длинами. Вычислить и вывести на устройство вывода среднее арифметическое параметров этих массивов. Параметры определяются заданием к предыдущей лабораторной работе (см. табл. 9.8), причем соответствие между номерами вариантов заданий 3 и 4 устанавливается по табл. 9.10. Таблица 9.10. Соответствие между номерами заданий 9.4.3. Содержание отчета Формулировка варианта задания. Граф-схема алгоритма основной программы. Граф-схема алгоритма подпрограммы. Распределение памяти (размещение в ОЗУ переменных, программы и необходимых констант). Тексты программы и подпрограммы. Значения исходных данных и результата выполнения программы. 9.4.4. Контрольные вопросы Как работает команда MOV R3, R7? Какие действия выполняет процессор при реализации команды CALL? Как поведет себя программа примера 4, если в ней вместо команд CALL M использовать команды JMP M? После начальной установки процессора (сигнал Сброс) указатель стека SР устанавливается в 000. По какому адресу будет производиться запись в стек первый раз, если не загружать SР командой WRSP? Как, используя механизмы постинкрементной и преддекрементной адресации, организовать дополнительный стек в произвольной области памяти, не связанный с SР? 9.5. Лабораторная работа № 5. Командный цикл процессора Реализация программы в ЭВМ сводится к последовательному выполнению команд. Каждая команда, в свою очередь, выполняется как последовательность микрокоманд, реализующих элементарные действия над операционными элементами процессора. В программной модели учебной ЭВМ предусмотрен Режим микрокоманд, в котором действие командного цикла реализуется и отображается на уровне микрокоманд. Список микрокоманд текущей команды выводится в специальном окне Микрокомандный уровень (см. рис. 8.8). 9.5.1. Задание 5.1 Выполнить снова последовательность команд по варианту задания 1 (см. табл. 9.3), но в режиме Шаг. Зарегистрировать изменения состояния процессора и памяти в форме табл. 9.11, в которой приведены состояния ЭВМ при выполнении примера 1 (фрагмент). 9.5.2. Задание 5.2 Записать последовательность микрокоманд для следующих команд модели учебной ЭВМ: 9 .5.3. Контрольные вопросы Какие микрокоманды связаны с изменением состояния аккумулятора? Какие действия выполняются в модели по микрокоманде MRd? RWr? Попробуйте составить микропрограмму (последовательность микрокоманд, реализующих команду) для несуществующей команды "умножение модулей чисел". Что изменится в работе процессора, если в каждой микропрограмме микрокоманду увеличения программного счетчика РС := РС + 1 переместить в самый конец микропрограммы? 9.6. Лабораторная работа № 6. Программирование внешних устройств Целью этой лабораторной работы является изучение способов организации взаимодействия процессора и внешних устройств (ВУ) в составе ЭВМ. Выше отмечалось, что связь процессора и ВУ может осуществляться в синхронном или асинхронном режиме. Синхронный режим используется для ВУ, всегда готовых к обмену. В нашей модели такими ВУ являются дисплей и тоногенератор— процессор может обращаться к этим ВУ, не анализируя их состояние (правда дисплей блокирует прием данных после ввода 128 символов, формируя флаг ошибки). Асинхронный обмен предполагает анализ процессором состояния ВУ, которое определяет готовность ВУ выдать или принять данные или факт осуществления некоторого события, контролируемого системой. К таким устройствам в нашей модели можно отнести клавиатуру и блок таймеров. Анализ состояния ВУ может осуществляться процессором двумя способами: в программно-управляемом режиме; в режиме прерывания. В первом случае предполагается программное обращение процессора к регистру состояния ВУ с последующим анализом значения соответствующего разряда слова состояния. Такое обращение следует предусмотреть в программе с некоторой периодичностью, независимо от фактического наступления контролируемого события (например, нажатие клавиши). Во втором случае при возникновении контролируемого события ВУ формирует процессору запрос на прерывание программы, по которому процессор и осуществляет связь с ВУ. 9.6.1. Задание 6 Свой вариант задания (табл. 9.12) требуется выполнить двумя способами — сначала в режиме программного контроля, далее модифицировать программу таким образом, чтобы события обрабатывались в режиме прерывания программы. Поскольку "фоновая" (основная) задача для этого случая в заданиях отсутствует, роль ее может сыграть "пустой цикл": M: NOP NOP JMP M Таблица 9.12. Варианты задания 6 9.6.2. Задания повышенной сложности Разработать программу-тест на скорость ввода символов с клавиатуры. По звуковому сигналу включается клавиатура и таймер на Т секунд. Можно начинать ввод символов, причем каждый символ отображается на дисплее, ведется подсчет количества введенных символов (после каждых 50 дается команда на очистку буфера клавиатуры, после 128 — очищается дисплей). Переполнение таймера выключает клавиатуру и включает сигнал завершения ввода (можно тон этого сигнала сопоставить с количеством введенных символов). Параметр Т вводится из IR. Результат S — средняя скорость ввода (символ/с) выдается на ОR. Учитывая, что модель учебной ЭВМ оперирует только целыми числами, можно выдавать результат в формате Sx60 символов/мин. Разработать программу-тест на степень запоминания текста. Три различных вариантах текста выводятся последовательно на дисплей на Т1 секунд с промежутками Т2 секунд. Далее эти тексты (то, что запомнилось) вводятся с клавиатуры (в режиме ввода строки) и программно сравниваются с исходными текстами. Выдается количество (процент) ошибок. Разработать программу-калькулятор. Осуществлять ввод из буфера клавиатуры последовательности цифр, упаковку (см. задание 1 в табл. 9.12). Разделители — знаки бинарных арифметических операций и =. Результат переводится в ASCII-коды и выводится на дисплей. 9.6.3. Порядок выполнения работы Запустить программную модель учебной ЭВМ и подключить к ней определенные в задании внешние устройства (меню Внешние устройства | Менеджер ВУ). Написать и отладить программу, предусмотренную заданием, с использованием программного анализа флагов готовности ВУ. Продемонстрировать работающую программу преподавателю. Изменить отлаженную в п. 2 программу таким образом, чтобы процессор реагировал на готовность ВУ с помощью подсистемы прерывания. Продемонстрировать работу измененной программы преподавателю. 9.6.4. Содержание отчета Текст программы с программным анализом флагов готовности ВУ. Текст программы с обработчиком прерывания. 9.6.5. Контрольные вопросы При каких условиях устанавливается и сбрасывается флаг готовности клавиатуры Rd? Возможно ли в блоке таймеров организовать работу всех трех таймеров с разной тактовой частотой? Как при получении запроса на прерывание от блока таймеров определить номер таймера, достигшего состояния 99 999 (00 000)? Какой текст окажется на экране дисплея, если после нажатия в окне обозревателя дисплея кнопки Очистить и загрузки по адресу CR (11) константы #10 вывести по адресу DR (10) последовательно пять ASII-кодов русских букв А, Б, В, Г, Д? В какой области памяти модели ЭВМ могут располагаться программы — обработчики прерываний? Какие изменения в работе отлаженной вами второй программы произойдут, если завершить обработчик прерываний командой RET, а не IRET? 9.7. Лабораторная работа № 7. Принципы работы кэш-памяти В разд. 8.8 данной книги описаны некоторые алгоритмы замещения строк кэш-памяти. Цель настоящей лабораторной работы — проверить работу различных алгоритмов замещения при различных режимах записи. 9.7.1. Задание 7 В качестве задания предлагается некоторая короткая "программа" (табл. 9.14), которую необходимо выполнить с подключенной кэш-памятью (размером 4 и 8 ячеек) в шаговом режиме для следующих двух вариантов алгоритмов замещения (табл. 9.13). Таблица 9.13. Пояснения к вариантам задания 7 Таблица 9.14. Варианты задания 7 Т аблица 9.14 (окончание) Не следует рассматривать заданную последовательность команд как фрагмент программы1. Некоторые конструкции, например, последовательность команд PUSH R6, RET в общем случае не возвращает программу в точку вызова подпрограммы. Такие группы команд введены в задание для того, чтобы обратить внимание студентов на особенности функционирования стека. 9.7.2. Порядок выполнения работы Ввести в модель учебной ЭВМ текст своего варианта программы (см. табл. 9.14), ассемблировать его и сохранить на диске в виде txt-файла. Установить параметры кэш-памяти размером 4 ячейки, выбрать режим записи и алгоритм замещения в соответствии с первой строкой своего варианта из табл. 9.13. В шаговом режиме выполнить программу, фиксируя после каждого шага состояние кэш-памяти. Для одной из команд записи (WR) перейти в режим Такт и отметить, в каких микрокомандах происходит изменение кэш-памяти. Для кэш-памяти размером 8 ячеек установить параметры в соответствии со второй строкой своего варианта из табл. 9.13 и выполнить программу в шаговом режиме еще раз, фиксируя последовательность номеров замещаемых ячеек кэш-памяти. 1 Напомним, что программа определяется как последовательность команд, выполнение которых позволит получить некий результат. 9.7.3. Содержание отчета Вариант задания — текст программы и режимы кэш-памяти. Последовательность состояний кэш-памяти размером 4 ячейки при однократном выполнении программы (команды 1—7). Последовательность микрокоманд при выполнении команды WR с отметкой тех микрокоманд, в которых возможна модификация кэш-памяти. Для варианта кэш-памяти размером 8 ячеек— последовательность номеров замещаемых ячеек кэш-памяти для второго варианта параметров кэш-памяти при двукратном выполнении программы (команды 1—7). 9.7.4. Контрольные вопросы В чем смысл включения кэш-памяти в состав ЭВМ? Как работает кэш-память в режиме обратной записи? Сквозной записи? Как зависит эффективность работы ЭВМ от размера кэш-памяти? В какую ячейку кэш-памяти будет помещаться очередное слово, если свободные ячейки отсутствуют? Какие алгоритмы замещения ячеек кэш-памяти вам известны? 9.8. Лабораторная работа № 8. Алгоритмы замещения строк кэш-памяти Цель работы — изучение влияния параметров кэш-памяти и выбранного алгоритма замещения на эффективность работы системы. Эффективность в данном случае оценивается числом кэш-попаданий по отношению к общему числу обращений к памяти. Учитывая разницу в алгоритмах в режимах сквозной и обратной записи, эффективность использования кэш-памяти вычисляется выражениям (8.2) и (8.3) соответственно для сквозной и обратной записи. Очевидно, эффективность работы системы с кэш-памятью будет зависеть не только от параметров кэш-памяти и выбранного алгоритма замещения, но и от класса решаемой задачи. Так, линейные программы должны хорошо работать с алгоритмами замещения типа очередь, а программы с большим числом условных переходов, зависящих от случайных входных данных, могут давать неплохие результаты с алгоритмами случайного замещения. Можно предположить, что программы, имеющие большое число повторяющихся участков (часто вызываемых подпрограмм и/или циклов) при прочих равных условиях обеспечат более высокую эффективность применения кэш-памяти, чем линейные программы. И, разумеется, на эффективность напрямую должен влиять размер кэш-памяти. Для проверки высказанных выше предположений выполняется настоящая лабораторная работа. 9.8.1. Задание 8 В данной лабораторной работе все варианты задания одинаковы: исследовать эффективность работы кэш-памяти при выполнении двух разнотипных программ, написанных и отлаженных вами при выполнении лабораторных работ № 2 и 4. 9.8.2. Порядок выполнения работы Загрузить в модель учебной ЭВМ отлаженную программу из лабораторной работы № 2. В меню Работа установить режим Кэш-память. В меню Вид выбрать команду Кэш-память, открыв тем самым окно Кэшпамять, в нем нажать первую слева кнопку на панели инструментов, открыв диалоговое окно Параметры кэш-памяти, и установить следующие параметры кэш-памяти: размер — 4, режим записи — сквозная, алгоритм замещения — случайное, без учета бита записи (W). Запустить программу в автоматическом режиме; по окончании работы просмотреть результаты работы кэш-памяти в окне Кэш-память, вычислить значение коэффициента эффективности K и записать в ячейку табл. 9.15, помеченную звездочкой. Выключить кэш-память модели (Работа | Кэш-память) и изменить один из ее параметров — установить флаг с учетом бита записи (в окне Параметры кэш-памяти). Повторить п. 4, поместив значение полученного коэффициента эффективности в следующую справа ячейку табл. 9.15. Последовательно меняя параметры кэш-памяти, повторить пп. 3—5, заполняя все ячейки табл. 9.15. Совет П ри очередном запуске программы не забывайте устанавливать процессор модели в начальное состояние, нажимая кнопку R в окне Процессор! Повторить все действия, описанные в пп. 1—7 для программы из лабораторной работы № 4, заполняя вторую таблицу по форме табл. 9.15. 9.8.3. Содержание отчета Две таблицы по форме табл. 9.15 с результатами моделирования программ из лабораторных работ № 2 и 4 при разных режимах работы кэш-памяти. Выводы, объясняющие полученные результаты. 9.8.4. Контрольные вопросы Как работает алгоритм замещения очередь при установленном флажке С учетом бита записи в диалоговом окне Параметры кэш-памяти? Какой алгоритм замещения будет наиболее эффективным в случае применения кэш-памяти большого объема (в кэш-память целиком помещается программа)? Как скажется на эффективности алгоритмов замещения учет значения бита записи XV при работе кэш-памяти в режиме обратной записи? Сквозной записи? Для каких целей в структуру ячейки кэш-памяти включен бит использования. Как устанавливается и сбрасывается этот бит? Таблица 9.15. Результаты эксперимента |