Материал: 2225

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

2.При программировании необходимо использовать язык более низкого уровня (Ассемблер, Паскаль, Си, а не Delphi, Java).

3.При выполнении операций результаты должны иметь тот же тип, что и операнды, чтобы не было затрат на преобразование типов.

4.При выполнении операций результаты не должны вызывать переполнение.

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

1.Цель работы.

2.Методика оценки.

3.Алгоритм.

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

5.Условия экспериментов (детальное описание параметров и конфигурации вычислительной системы (ВС).

6.Таблицы и графики полученных зависимостей.

7.Выводы.

Варианты индивидуальных заданий

1.Производительность дисковых операций (чтение и запись).

2.Сравнительная производительность при выполнении операций с действительными (2 вида) и целыми числами.

3.Сравнительная оценка производительности двух различных ВС (машин) при выполнении различных операций, а именно:

а) короткие операции с действительными (3 вида) числами; б) длинные операции с действительными (3 вида) числами; в) короткие операции с целыми (3 вида) числами; г) длинные операции с целыми (3 вида) числами.

4.Сравнительная оценка накладных расходов на организацию циклов различного типа (for, while, repeat) в различных языках программирования: a) Ассемблер; б) Паскаль; в) Си.

5.Сравнительная производительность при выполнении операций преобразования типов:

а) различные целые типы – в различные действительные; б) различные действительные типы – в другие действительные.

6.Матричные операции с числами различных типов.

7.Векторные операции с числами различных типов.

Вопросы для самоконтроля

1. Способы оценки производительности ЭВМ (перечислить).

6

2.Способы оценки производительности ЭВМ по MIPS.

3.Способы оценки производительности ЭВМ по MFLOPS.

4.Способы оценки производительности ЭВМ по World Banch.

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

6.Проблемы при оценке производительности.

7.Составляющие производительности компьютера.

8.Виды времени, которые могут оцениваться.

9.Категории тестов.

10.Требования к тестам.

11.Способы толкования оценки производительности.

12.Способы оценки производительности процессора.

Лабораторная работа № 2

СИСТЕМА ПРЕРЫВАНИЙ ЭВМ

Цель работы: изучение системы прерываний ЭВМ и программ обработки прерываний в DOS.

Теоретические сведения

Прерывание – это кратковременная приостановка текущей процедуры программы, позволяющая выполнить другую процедуру. После завершения прерывания прерванная программа продолжает выполняться так, как будто бы ничего не происходило. Эти две процедуры могут быть несвязанными, и прерывание не окажет никакого воздействия на прерванную процедуру. Они могут быть взаимозависимы – прерванная программа может быть модифицирована процедурой обработки прерывания. Прерывание может быть вызвано внешним по отношению к выполняемой программе событием, или действием самой программы, или аппаратно, или командой из программы.

В компьютере РС существуют 256 различных прерываний с номерами от 0 до FF (hex). При выполнении прерывания содержимое регистров признаков (флаги) сохраняются в стеке. После этого прерывания запрещаются, и выполняется программа с адреса, соответствующего предыдущему прерыванию. Запрет прерываний осуществляется функцией “disable()”, а разрешение – функцией “enable()”.

Эта программа должна сохранить используемые ею регистры, вы-

7

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

Аппаратные прерывания вызываются событиями, физически связанными в аппаратуре с соответствующими векторами прерываний. Например, клавиатура связана с прерыванием 09h, обращение к дисковым устройствам связано с прерыванием 13h и т. д.

Программные прерывания происходят при выполнении в текущей программе команды типа int86() с номером прерывания в качестве операнда. В остальном никакой разницы между программным и аппаратным прерываниями нет.

Программы обработки прерывания реагируют на прерывания от аппаратуры или от программ и обычно предназначены для поддержки различных устройств. Примером такой программы может быть обработчик прерывания от таймера или программа обработки аппаратных прерываний от устройства типа «мышь».

Захват прерывания. По прерыванию может выполняться ваша программа, если на неё указывает соответствующий вектор. Например, в языке Си это осуществляется с помощью функции setvect (num_interrupt, address), где num_interrupt – номер вектора прерывания

(от 0 до FFh), а значение address – адрес программы обработки прерывания.

Замечание: полезно восстанавливать прерывания после их изменения, для этого нужно сохранить адрес обработчика до его замещения,

это делается с помощью функции void interrupt *getvect (num interrupt),

где num interrupt – номер вектора прерывания.

Совместное использование прерываний. Если необходимо использо-

вать прерывания, которые уже используются другими программами, то необходимо сделать так, чтобы те программы не замечали вашего воздействия на них. Например, если осуществляется перехват таймера, то необходимо обеспечивать выполнение старой процедуры, ибо тогда часы, встроенные в ваш ПК, будут стоять. Или если вы перенаправите обработчик клавиатуры, то есть вероятность, что клавиатура не будет реагировать на все ваши дальнейшие усилия (если вы не выполните процедуру, которая выполнялась ранее по этому вектору).

Прерываниями (interruption) являются штатные ситуации, возникающие при поступлении соответствующих команд (программные преры-

8

вания) или внешних сигналов (аппаратные прерывания), а исключениями (exeption) – нештатные ситуации (ошибки), возникающие при работе процессора. При выявлении таких ошибок соответствующие блоки, контролирующие работу процессора, вырабатывают внутренние сигналы запроса, обеспечивающие вызов необходимой подпрограммы обслуживания.

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

Запросы на выполнение аппаратных прерываний поступают от внешних устройств на входы LINT0/INTR, LINT1/NMI процессора. В мультипроцессорной системе, когда включен внутренний контроллер локальных прерываний APIC, сигналы LINT1-0 на этих входах определяют номер запроса, поступающего от других устройств (процессоров) системы. В однопроцессорной системе, когда функционирование контроллера APIC запрещено, эти входы служат, соответственно, для подачи маскируемых INTR и немаскируемых NMI запросов прерывания от различных внешних устройств.

На вход INTR поступают маскируемые запросы прерываний, обслуживание которых может быть запрещено (замаскировано) путем установки значения признака IF =1 в регистре состояний EFLAGS. Обычно такой запрос поступает от внешнего устройства через специальный контроллер прерываний, который собирает запросы от различных внешних устройств и передает их для обработки процессору, указав для них также номер n, определяющий вид прерывания (INTR n). На вход NMI поступает запрос на немаскируемое прерывание, процедура обслуживания которого имеет фиксированный номер n = 2. Значение признака IF в регистре EFLAGS не влияет на обслуживание процессором немаскируемого запроса прерывания NMI. При работе процессора в мультипроцессорной системе, когда функционирует контроллер локальных прерываний APIC, запросы аппаратных прерываний (немаскируемых и маскируемых) поступают по специальной APIC-шине.

Программные прерывания реализуются при поступлении команд INT n, INT3, INTO, BOUND. Эти команды вызывают переход к выполнению подпрограмм обслуживания, векторы которых можно найти в литературе [2, c. 481 – 483].

9

Для исключений зарезервированы первые 32 вектора в таблице прерываний, из которах в процессорах семейства Р6 используются только 19. Каждый тип исключения имеет мнемоническое обозначение. Исключения делятся на ошибки (faults), ловушки (traps) и отказы (aborts).

Обработка прерываний

Прерывание – событие, при котором меняется нормальная последовательность команд, выполняемых процессом. Для обработки прерываний существуют специальные средства: аппаратные и программные. Частично это выполняет ядро операционной системы (ОС), но лишь в минимальной степени. Действия ЭВМ при обработке прерываний приведены на рис. 1, а временная диаграмма выполнения этих действий – на рис. 2.

Точка

прерывания

 

 

 

Запоминание со-

Переход к про-

стояния преры-

 

ваемой програм-

 

грамме обра-

мы

 

ботки прерыва-

 

 

ний

 

 

 

 

 

 

Рис. 1. Схема работы ЭВМпри прерывании

10

Источник: https://studfile.net/preview/16712649/