ЗНАЕТЕ ЛИ ВЫ?

Обработка прерываний в реальном режиме



Обработка прерываний (как внешних, так и внутренних) в реальном режиме микропроцессора производится в три этапа.

1. Прекращение выполнения текущей программы.

2. Переход к выполнению и выполнение программы обработки прерываний.

3. Возврат управления прерванной программе.

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

Набор действий по реализации второго этапа заключается в определении источника прерывания и вызова соответствующей программы обработки. В реальном режиме микропроцессора допускается от 0 до 255 источников прерываний. Количество источников прерываний ограничено размером таблицы векторов прерываний. Эта таблица выступает связующим звеном между источником прерывания и процедурой обработки. Данная таблица располагается в памяти, начиная с адреса 0. Каждый элемент таблицы векторов прерываний занимает 4 байта и имеет следующую структуру.

1-е слово элемента таблицы – значение смещения начала процедуры обработки прерывания (n) от начала кодового сегмента;

2-е слово элемента таблицы – значение базового адреса сегмента, в котором находится процедура обработки прерывания.

Определить адрес, по которому находится вектор прерывания с номером n, можно следующим образом:

–смещение_элемента_таблицы_векторов_прерываний = n * 4

Полный размер таблицы векторов прерываний 4 * 256 = = 1024 байт.

Итак, на втором этапе обработки прерывания микропроцессор выполняет следующие действия.

1) По номеру источника прерывания путем умножения на 4 определяет смещение в таблице векторов прерываний.

2) Передает управление по адресу, определяемому парой сегмент-смещение.

3) Далее выполняется сама программа обработки прерывания. Она, в свою очередь, также может быть прервана, например, поступлением запроса от более приоритетного источника. В этом случае этапы 1 и 2 будут повторены для вновь поступившего запроса.

Набор действий по реализации этапа 3 заключается в восстановлении контекста прерванной программы. Так же, как и на этапе 1, на данном последнем этапе есть действия, выполняемые микропроцессором автоматически, и действия, задаваемые программистом. Основная задача на этапе 3 – привести стек в состояние, в котором он был сразу после передачи управления данной процедуре. Для этого программист указывает необходимые действия по восстановлению регистров и очистке стека.

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

Аппаратные прерывания могут быть инициированы программно командой микропроцессора int n, где n - номер аппаратного прерывания в соответствии с таблицей векторов прерываний.

Подведем некоторые итоги.

Система прерываний микропроцессора Intel реализована весьма удачно. Ее применение позволяет достаточно гибко принимать и обрабатывать прерывания от различных источников.

Источники прерываний делятся на внешние и внутренние. Количество внешних источников ограничено числом выводов микросхемы i8259A и не может превышать 15. К этому количеству нужно добавить еще одно прерывание – немаскируемое. Его инициируют источники, требующие безотлагательного вмешательства со стороны микропроцессора. Остальные источники прерываний являются внутренними. Общее количество источников прерываний в микропроцессоре не превышает 256. Внутренние источники прерываний также делятся на две группы: программные прерывания и исключения.

Любое из этих прерываний можно вызвать как стандартными для этого вида прерывания средствами, так и командой int xx.

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

Механизм обработки аппаратных прерываний основан на использовании микросхемы i8259А, которая позволяет организовать гибкую обработку прерываний.

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

Программирование микросхемы i8259А осуществляется специальными последовательностями управляющих и операционных слов.

ИЕРАРХИЯ ПАМЯТИ

В основе реализации иерархии памяти современных компьютеров лежат два принципа: принцип локальности обращений и соотношение стоимость/производительность.

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

Иерархия памяти современных компьютеров строится на нескольких уровнях, причем более высокий уровень меньше по объему, быстрее и имеет большую стоимость в пересчете на байт, чем более низкий уровень. Уровни иерархии взаимосвязаны: все данные на одном уровне могут быть также найдены на более низком уровне, и все данные на этом более низком уровне могут быть найдены на следующем нижележащем уровне и так далее, пока мы не достигнем основания иерархии.

Иерархия памяти обычно состоит из многих уровней, но в каждый момент времени мы имеем дело только с двумя близлежащими уровнями. Минимальная единица информации, которая может либо присутствовать, либо отсутствовать в двухуровневой иерархии, называется блоком. Размер блока может быть либо фиксированным, либо переменным. Если этот размер зафиксирован, то объем памяти является кратным размеру блока.

Успешное или неуспешное обращение к более высокому уровню называются соответственно попаданием или промахом.

Попадание – есть обращение к объекту в памяти, который найден на более высоком уровне, в то время как промах означает, что он не найден на этом уровне.

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

Чтобы описать некоторый уровень иерархии памяти надо ответить на следующие четыре вопроса.

1) Где может размещаться блок на верхнем уровне иерархии? (размещение блока).

2) Как найти блок, когда он находится на верхнем уровне? (идентификация блока).

3) Какой блок должен быть замещен в случае промаха? (замещение блоков).

4) Что происходит во время записи? (стратегия записи).

Организация кэш-памяти

Cегодня кэш-память имеется практически в любом компьютере. Как правило, конструктивно современная кэш-память неотделима от процессора





Последнее изменение этой страницы: 2016-06-06; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.216.79.60 (0.016 с.)