Главная страница

Часть III. Описание архитектуры учебной эвм


Скачать 2.15 Mb.
НазваниеОписание архитектуры учебной эвм
Дата23.12.2022
Размер2.15 Mb.
Формат файлаdoc
Имя файлаЧасть III.doc
ТипПрактикум
#861303
страница5 из 6
1   2   3   4   5   6
ГЛАВА 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

  1. Ознакомиться с архитектурой ЭВМ (см. часть I).

  2. Записать в ОЗУ "программу", состоящую из пяти команд— варианты задания выбрать из табл. 9.3. Команды разместить в последовательных ячейках памяти.

  3. При необходимости установить начальное значение в устройство ввода IR.

  4. Определить те программно-доступные объекты ЭВМ, которые будут из­меняться при выполнении этих команд.

  5. Выполнить в режиме Шаг введенную последовательность команд, фиксируя изменения значений объектов, определенных в п. 4, в таблице (см. форму табл. 9.2).

  6. Если в программе образуется цикл, необходимо просмотреть не более двух повторений каждой команды, входящей в тело цикла.



Таблица 9.3. Варианты задания 1




Таблица 9.3. (окончание)

9.1.4. Содержание отчета

  1. Формулировка варианта задания.

  2. Машинные коды команд, соответствующих варианту задания.

  3. Результаты выполнения последовательности команд в форме табл. 9.2.

9.1.5. Контрольные вопросы

  1. Из каких основных частей состоит ЭВМ и какие из них представлены в модели?

  2. Что такое система команд ЭВМ?

  3. Какие классы команд представлены в модели?

  4. Какие действия выполняют команды передачи управления?

  5. Какие способы адресации использованы в модели ЭВМ? В чем отличие между ними?

  6. Какие ограничения накладываются на способ представления данных в модели ЭВМ?

  7. Какие режимы работы предусмотрены в модели и в чем отличие между ними?

  8. Как записать программу в машинных кодах в память модели ЭВМ?

  9. Как просмотреть содержимое регистров процессора и изменить содержи­мое некоторых регистров?

  10. Как просмотреть и, при необходимости, отредактировать содержимое ячейки памяти?

  11. Как запустить выполнение программы в режиме приостановки работы после выполнения каждой команды?

  12. Какие способы адресации операндов применяются в командах ЭВМ?

  13. Какие команды относятся к классу передачи управления?

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.

  1. Исходя из допустимых пределов изменения аргумента функций (табл. 9.5) и значения параметра а для своего варианта задания (табл. 9.6) выделить на числовой оси Ох области, в которых функция у вычисляется по представленной в п. 1 формуле, и недопустимые значения аргумента. На недопустимых значениях аргумента программа должна выдавать на OR максимальное отрицательное число: 199 999.

  2. Ввести текст программы в окно Текст программы, при этом возможен набор и редактирование текста непосредственно в окне Текст программы или загрузка текста из файла, подготовленного в другом редакторе.

  3. Ассемблировать текст программы, при необходимости исправить синтак­сические ошибки.

  4. Отладить программу. Для этого:

а) записать в IR значение аргумента х > а (в области допустимых значений);

б) записать в РС стартовый адрес программы;

в) проверить правильность выполнения программы (т. е. правильность результата и адреса останова) в автоматическом режиме. В случае наличия ошибки выполнить пп. 5, г и 5, д; иначе перейти к п. 5, е;

г) записать в РС стартовый адрес программы;

д) наблюдая выполнение программы в режиме Шаг, найти команду, являющуюся причиной ошибки; исправить ее; выполнить пп. 5, а — 5, в;

е) записать в IR значение аргумента х < а (в области допустимых значений); выполнить пп. 5, б и 5, в;

ж) записать в IR недопустимое значение аргумента х и выполнить пп. 5, б и 5, в.

  1. Для выбранного допустимого значения аргумента x наблюдать выполнение отлаженной программы в режиме Шаг и записать в форме табл. 9.2 содержимое регистров ЭВМ перед выполнением каждой команды.

Таблица 9.5. Функции



Таблица 9.6. Варианты задания 2



9.2.3. Содержание отчета

Отчет о лабораторной работе должен содержать следующие разделы:

  1. Формулировка варианта задания.

  2. Граф-схема алгоритма решения задачи.

  3. Размещение данных в ОЗУ.

  4. Программа в форме табл. 9.4.

  5. Последовательность состояний регистров ЭВМ при выполнении программы в режиме Шаг для одного значения аргумента.

  6. Результаты выполнения программы для нескольких значений аргумента, выбранных самостоятельно.

9.2.4. Контрольные вопросы

  1. Как работает механизм косвенной адресации?

  2. Какая ячейка будет адресована в команде с косвенной адресацией через ячейку 043, если содержимое этой ячейки равно 102 347?

  3. Как работают команды передачи управления?

  4. Что входит в понятие "отладка программы"?

  5. Какие способы отладки программы можно реализовать в модели?

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. Написать программу определения заданной характеристики последова­тельности чисел С1, С2,..., Сn. Варианты заданий приведены в табл. 9.8.

  2. Записать программу в мнемокодах, введя ее в поле окна Текст программы.

  3. Сохранить набранную программу в виде текстового файла и произвести ассемблирование мнемокодов.

  4. Загрузить в ОЗУ необходимые константы и исходные данные.

  5. Отладить программу.

Т аблица 9.8. Варианты задания 3





Примечание. Под четными (нечетными) элементами массивов понимаются элементы массивов, имеющие четные (нечетные) индексы. Четные числа— элементы массивов, делящиеся без остатка на 2.

9.3.3. Содержание отчета

  1. Формулировка варианта задания.

  2. Граф-схема алгоритма решения задачи.

  3. Распределение памяти (размещение в ОЗУ переменных, программы и необходимых констант).

  4. Программа.

  5. Значения исходных данных и результата выполнения программы.

9.3.4. Контрольные вопросы

  1. Как организовать цикл в программе?

  2. Что такое параметр цикла?

  3. Как поведет себя программа, приведенная в табл. 9.7. если в ней будет от­сутствовать команда WR 31по адресу 014?

  4. Как поведет себя программа, приведенная в табл. 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. Содержание отчета

  1. Формулировка варианта задания.

  2. Граф-схема алгоритма основной программы.

  3. Граф-схема алгоритма подпрограммы.

  4. Распределение памяти (размещение в ОЗУ переменных, программы и не­обходимых констант).

  5. Тексты программы и подпрограммы.

  6. Значения исходных данных и результата выполнения программы.

9.4.4. Контрольные вопросы

  1. Как работает команда MOV R3, R7?

  2. Какие действия выполняет процессор при реализации команды CALL?

  3. Как поведет себя программа примера 4, если в ней вместо команд CALL M использовать команды JMP M?

  4. После начальной установки процессора (сигнал Сброс) указатель стека SР устанавливается в 000. По какому адресу будет производиться запись в стек первый раз, если не загружать SР командой WRSP?

  5. Как, используя механизмы постинкрементной и преддекрементной адресации, организовать дополнительный стек в произвольной области памя­ти, не связанный с 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. Контрольные вопросы

  1. Какие микрокоманды связаны с изменением состояния аккумулятора?

  2. Какие действия выполняются в модели по микрокоманде MRd? RWr?

  3. Попробуйте составить микропрограмму (последовательность микро­команд, реализующих команду) для несуществующей команды "умноже­ние модулей чисел".

  4. Что изменится в работе процессора, если в каждой микропрограмме мик­рокоманду увеличения программного счетчика РС := РС + 1 переместить в самый конец микропрограммы?





9.6. Лабораторная работа № 6.

Программирование внешних устройств

Целью этой лабораторной работы является изучение способов организации взаимодействия процессора и внешних устройств (ВУ) в составе ЭВМ.

Выше отмечалось, что связь процессора и ВУ может осуществляться в син­хронном или асинхронном режиме. Синхронный режим используется для ВУ, всегда готовых к обмену. В нашей модели такими ВУ являются дисплей и тоногенератор— процессор может обращаться к этим ВУ, не анализируя их состояние (правда дисплей блокирует прием данных после ввода 128 символов, формируя флаг ошибки).

Асинхронный обмен предполагает анализ процессором состояния ВУ, которое определяет готовность ВУ выдать или принять данные или факт осуществле­ния некоторого события, контролируемого системой. К таким устройствам в нашей модели можно отнести клавиатуру и блок таймеров.

Анализ состояния ВУ может осуществляться процессором двумя способами:

  • в программно-управляемом режиме;

  • в режиме прерывания.

В первом случае предполагается программное обращение процессора к регистру состояния ВУ с последующим анализом значения соответствующего разряда слова состояния. Такое обращение следует предусмотреть в про­грамме с некоторой периодичностью, независимо от фактического наступле­ния контролируемого события (например, нажатие клавиши).

Во втором случае при возникновении контролируемого события ВУ форми­рует процессору запрос на прерывание программы, по которому процессор и осуществляет связь с ВУ.

9.6.1. Задание 6

Свой вариант задания (табл. 9.12) требуется выполнить двумя способами — сначала в режиме программного контроля, далее модифицировать программу таким образом, чтобы события обрабатывались в режиме прерывания про­граммы. Поскольку "фоновая" (основная) задача для этого случая в заданиях отсутствует, роль ее может сыграть "пустой цикл":
M: NOP

NOP

JMP M

Таблица 9.12. Варианты задания 6




9.6.2. Задания повышенной сложности

  1. Разработать программу-тест на скорость ввода символов с клавиатуры. По звуковому сигналу включается клавиатура и таймер на Т секунд. Можно начинать ввод символов, причем каждый символ отображается на дисплее, ведется подсчет количества введенных символов (после каждых 50 дается команда на очистку буфера клавиатуры, после 128 — очищается дисплей). Переполнение таймера выключает клавиатуру и включает сигнал завершения ввода (можно тон этого сигнала сопоставить с количеством введен­ных символов). Параметр Т вводится из IR. Результат S — средняя ско­рость ввода (символ/с) выдается на ОR. Учитывая, что модель учебной ЭВМ оперирует только целыми числами, можно выдавать результат в формате Sx60 символов/мин.

  2. Разработать программу-тест на степень запоминания текста. Три различных вариантах текста выводятся последовательно на дисплей на Т1 секунд с промежутками Т2 секунд. Далее эти тексты (то, что запомнилось) вводятся с клавиатуры (в режиме ввода строки) и программно сравниваются с исходными текстами. Выдается количество (процент) ошибок.

  3. Разработать программу-калькулятор. Осуществлять ввод из буфера кла­виатуры последовательности цифр, упаковку (см. задание 1 в табл. 9.12).

Разделители — знаки бинарных арифметических операций и =. Результат переводится в ASCII-коды и выводится на дисплей.

9.6.3. Порядок выполнения работы

  1. Запустить программную модель учебной ЭВМ и подключить к ней опре­деленные в задании внешние устройства (меню Внешние устройства | Менеджер ВУ).

  2. Написать и отладить программу, предусмотренную заданием, с использо­ванием программного анализа флагов готовности ВУ. Продемонстриро­вать работающую программу преподавателю.

  3. Изменить отлаженную в п. 2 программу таким образом, чтобы процессор реагировал на готовность ВУ с помощью подсистемы прерывания. Проде­монстрировать работу измененной программы преподавателю.

9.6.4. Содержание отчета

  1. Текст программы с программным анализом флагов готовности ВУ.

  2. Текст программы с обработчиком прерывания.

9.6.5. Контрольные вопросы

  1. При каких условиях устанавливается и сбрасывается флаг готовности кла­виатуры Rd?

  2. Возможно ли в блоке таймеров организовать работу всех трех таймеров с разной тактовой частотой?

  3. Как при получении запроса на прерывание от блока таймеров определить номер таймера, достигшего состояния 99 999 (00 000)?

  4. Какой текст окажется на экране дисплея, если после нажатия в окне обо­зревателя дисплея кнопки Очистить и загрузки по адресу CR (11) кон­станты #10 вывести по адресу DR (10) последовательно пять ASII-кодов русских букв А, Б, В, Г, Д?

  5. В какой области памяти модели ЭВМ могут располагаться программы — обработчики прерываний?

  6. Какие изменения в работе отлаженной вами второй программы произой­дут, если завершить обработчик прерываний командой 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. Порядок выполнения работы

  1. Ввести в модель учебной ЭВМ текст своего варианта программы (см. табл. 9.14), ассемблировать его и сохранить на диске в виде txt-файла.

  2. Установить параметры кэш-памяти размером 4 ячейки, выбрать режим записи и алгоритм замещения в соответствии с первой строкой своего ва­рианта из табл. 9.13.

  3. В шаговом режиме выполнить программу, фиксируя после каждого шага состояние кэш-памяти.

  4. Для одной из команд записи (WR) перейти в режим Такт и отметить, в ка­ких микрокомандах происходит изменение кэш-памяти.

  5. Для кэш-памяти размером 8 ячеек установить параметры в соответствии со второй строкой своего варианта из табл. 9.13 и выполнить программу в шаговом режиме еще раз, фиксируя последовательность номеров заме­щаемых ячеек кэш-памяти.

1 Напомним, что программа определяется как последовательность команд, выполнение кото­рых позволит получить некий результат.

9.7.3. Содержание отчета

  1. Вариант задания — текст программы и режимы кэш-памяти.

  2. Последовательность состояний кэш-памяти размером 4 ячейки при одно­кратном выполнении программы (команды 1—7).

  3. Последовательность микрокоманд при выполнении команды WR с отметкой тех микрокоманд, в которых возможна модификация кэш-памяти.

  4. Для варианта кэш-памяти размером 8 ячеек— последовательность номе­ров замещаемых ячеек кэш-памяти для второго варианта параметров кэш­-памяти при двукратном выполнении программы (команды 1—7).

9.7.4. Контрольные вопросы

  1. В чем смысл включения кэш-памяти в состав ЭВМ?

  2. Как работает кэш-память в режиме обратной записи? Сквозной записи?

  3. Как зависит эффективность работы ЭВМ от размера кэш-памяти?

  4. В какую ячейку кэш-памяти будет помещаться очередное слово, если сво­бодные ячейки отсутствуют?

  5. Какие алгоритмы замещения ячеек кэш-памяти вам известны?

9.8. Лабораторная работа № 8.

Алгоритмы замещения строк кэш-памяти

Цель работы — изучение влияния параметров кэш-памяти и выбранного ал­горитма замещения на эффективность работы системы. Эффективность в данном случае оценивается числом кэш-попаданий по отношению к общему числу обращений к памяти. Учитывая разницу в алгоритмах в режимах сквоз­ной и обратной записи, эффективность использования кэш-памяти вычисля­ется выражениям (8.2) и (8.3) соответственно для сквозной и обратной записи.

Очевидно, эффективность работы системы с кэш-памятью будет зависеть не только от параметров кэш-памяти и выбранного алгоритма замещения, но и от класса решаемой задачи. Так, линейные программы должны хорошо ра­ботать с алгоритмами замещения типа очередь, а программы с большим чис­лом условных переходов, зависящих от случайных входных данных, могут да­вать неплохие результаты с алгоритмами случайного замещения. Можно предположить, что программы, имеющие большое число повторяющихся уча­стков (часто вызываемых подпрограмм и/или циклов) при прочих равных ус­ловиях обеспечат более высокую эффективность применения кэш-памяти, чем линейные программы. И, разумеется, на эффективность напрямую дол­жен влиять размер кэш-памяти.

Для проверки высказанных выше предположений выполняется настоящая лабораторная работа.

9.8.1. Задание 8

В данной лабораторной работе все варианты задания одинаковы: исследовать эффективность работы кэш-памяти при выполнении двух разнотипных про­грамм, написанных и отлаженных вами при выполнении лабораторных работ № 2 и 4.

9.8.2. Порядок выполнения работы

  1. Загрузить в модель учебной ЭВМ отлаженную программу из лабораторной работы № 2.

  2. В меню Работа установить режим Кэш-память.

  3. В меню Вид выбрать команду Кэш-память, открыв тем самым окно Кэш­память, в нем нажать первую слева кнопку на панели инструментов, от­крыв диалоговое окно Параметры кэш-памяти, и установить следующие параметры кэш-памяти: размер — 4, режим записи — сквозная, алгоритм замещения — случайное, без учета бита записи (W).

  4. Запустить программу в автоматическом режиме; по окончании работы просмотреть результаты работы кэш-памяти в окне Кэш-память, вычис­лить значение коэффициента эффективности K и записать в ячейку табл. 9.15, помеченную звездочкой.

  5. Выключить кэш-память модели (Работа | Кэш-память) и изменить один из ее параметров — установить флаг с учетом бита записи (в окне Пара­метры кэш-памяти).

  6. Повторить п. 4, поместив значение полученного коэффициента эффек­тивности в следующую справа ячейку табл. 9.15.

  7. Последовательно меняя параметры кэш-памяти, повторить пп. 3—5, за­полняя все ячейки табл. 9.15.

Совет

П ри очередном запуске программы не забывайте устанавливать про­цессор модели в начальное состояние, нажимая кнопку R в окне Процессор!

  1. Повторить все действия, описанные в пп. 1—7 для программы из лабораторной работы № 4, заполняя вторую таблицу по форме табл. 9.15.


9.8.3. Содержание отчета

  1. Две таблицы по форме табл. 9.15 с результатами моделирования программ из лабораторных работ № 2 и 4 при разных режимах работы кэш-памяти.

  2. Выводы, объясняющие полученные результаты.

9.8.4. Контрольные вопросы

  1. Как работает алгоритм замещения очередь при установленном флажке С учетом бита записи в диалоговом окне Параметры кэш-памяти?

  2. Какой алгоритм замещения будет наиболее эффективным в случае приме­нения кэш-памяти большого объема (в кэш-память целиком помещается программа)?

  3. Как скажется на эффективности алгоритмов замещения учет значения би­та записи XV при работе кэш-памяти в режиме обратной записи? Сквозной записи?

  4. Для каких целей в структуру ячейки кэш-памяти включен бит использования. Как устанавливается и сбрасывается этот бит?


Таблица 9.15. Результаты эксперимента




1   2   3   4   5   6


написать администратору сайта