Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЭВМ II семестр

.pdf
Скачиваний:
21
Добавлен:
08.05.2015
Размер:
972.22 Кб
Скачать

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

КОП

Адрес 1-го

Адрес 2-го

Адрес

Адрес след.

операнда

операнда

результата

команды

 

Рис. 16. Четырехадресная структура машинной команды

2. Трехадресная структура (рис. 17) используется в вычислительных машинах, построенных так, что после выполнения команды по адресу K (команда занимает L ячеек памяти) выполняется команда по адресу K+L. Такой порядок выборки команд называется естественным. Он нарушается только специальными командами передачи управления. При естественном порядке выборки адрес следующей команды формируется в устройстве, называемом счетчик адреса команд. В этом случае команда становится трехадресной.

КОП

Адрес 1-го

Адрес 2-го

Адрес

операнда

операнда

результата

 

Рис. 17. Трехадресная структура машинной команды

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

КОП

Адрес 1-го

Адрес 2-го

операнда

операнда

 

Рис. 18. Двухадресная структура машинной команды

4. Одноадресная структура (рис. 19) – подразумеваемые адреса имеют результат операции и один из операндов. При этом один из операндов и результат операции размещаются в одном фиксированном регистре. Выделенный для этой цели внутренний регистр процессора получил название аккумулятор. Адрес другого операнда указывается в команде.

КОП

Адрес 1-го

операнда

 

Рис. 19. Одноадресная структура машинной команды

5. Безадресная структура (рис. 20) фиксирует адреса обоих операндов и результата операции, например при работе со стековой памятью.

КОП

Рис. 20. Безадресная структура машинной команды

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

31

Организация системы прерывания программ

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

Прерывающие

ЭВМ программы

(обработчики)

Внутренний

Прерываемая

программа

запрос

Внешний

Внешняя

среда

запрос

Рис. 21. Прерывание программы

Каждое событие, требующее прерывания, сопровождается сигналом прерывания, оповещающим об этом вычислительную машину, и называемым

запросом прерывания.

Взависимости от источника возникновения сигнала прерывания делятся на:

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

o запрос от другой вычислительной машины;

o сообщение от аварийных датчиков управляемого технологического процесса;

o запрос оператора;

o требование от пульта управления операции обмена; o запросы на обслуживание клавиатуры, мыши и т.д.

синхронные или внутренние – события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода, могут быть вызваны в процессе выполнения программы следующими событиями:

o сбой в аппаратуре;

32

o переполнение разрядной сетки; o деление на 0;

o выход из установленной зоны памяти;

o попытка обращения к запрещенной зоне памяти;

o попытка обращения к защищенным программам операционной системы;

oсигнал от таймера и т.д.;

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

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

Для эффективной организации процесса прерывания современные вычислительные машины снабжены соответствующими программноаппаратными средствами, которые получили название контроллера прерываний. Контроллер прерываний представляет собой отдельную специализированную БИС или встроенный блок процессора и определяет последовательность обработки запросов прерываний. Функциями контроллера прерываний также являются:

запоминание состояния прерываемой программы и осуществление перехода

кпрерывающей программе;

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

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

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

33

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

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

приоритетными соотношениями или дисциплиной обслуживания.

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

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

Число различных источников запросов прерывания может достигать десятков и даже сотен. Однако в ряде случаев многие запросы поступают от групп однотипных устройств, для обслуживания которых требуется одна и та же прерывающая программа (обработчик). Запросы от однотипных устройств целесообразно объединить в группы, каждой из которых будет соответствовать свой сигнал запроса прерывания. Уровнем или классом прерывания называется совокупность запросов, инициирующих одну и ту же прерывающую программу (обработчик) (рис. 22).

 

РгЗП

 

0

прерыванияна

0

1

 

 

0

Запросы

.

.

 

 

.

 

.

1 ЗПК1

1

1 ЗПКk

k

 

 

1

ОСП

 

 

 

 

 

 

В процессор

 

 

 

 

 

 

 

 

 

 

 

распознаванияСхема классапрерывания

В контроллер

 

 

 

 

 

 

 

 

прерываний

 

 

 

 

 

РгЗП регистр запросов прерывания;

ОСП общий сигнал прерывания; ЗПК запросы классов прерывания

Рис. 22. Разделение запросов на классы прерываний

34

Запросы от всех источников поступают в регистр запроса прерываний, устанавливая соответствующие его разряды в состояние 1, указывающее на наличие запроса прерывания. Запросы классов прерывания ЗПКi формируют элементы ИЛИ, объединяющие разряды регистра запроса прерываний, относящиеся к соответствующим уровням. Еще одна схема ИЛИ формирует общий сигнал прерывания, поступающий в устройство управления процессора. Он формируется при любом запросе прерывания.

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

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

Прерываемая программа

Запрос

 

t

прерываний

 

 

Прерывающая

 

t

 

 

программа

 

 

(обработчик)

 

t

 

 

tр tз

tппр

tв

tp время реакции системы на прерывание;

tз время запоминания состояния прерываемой программы; tппр время собственно прерывающей программы;

tв время восстановления состояния прерванной программы

Рис. 23. Упрощенная временная диаграмма процесса прерывания

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

35

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

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

Запрос

1

2

3

 

 

прерываний

 

 

 

 

 

Глубина преры-

1

2

3

t

 

 

 

 

вания = 1

 

 

 

 

 

 

 

 

3

 

t

 

 

2

 

2

 

Глубина преры-

1

 

1

 

вания ¹ 1

 

 

 

 

 

t

Рис. 24. Упрощенная диаграмма процесса прерывания в системах с различной глубиной

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

Характеристиками системы прерывания являются:

общее количество запросов прерывания количество источников запросов прерывания;

тип представления прерывания – как правило, запрос прерывания представлен логическим уровнем сигнала;

36

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

время реакции – временной интервал между появлением запроса прерывания и началом выполнения прерывающей программы;

задержка прерывания – определяется суммарным временем на запоминание и восстановление программы;

глубина, обычно совпадает с числом уровней приоритетов в системе прерывания;

насыщение системы прерывания;

допустимые моменты прерывания программ.

Организация перехода к вызывающей программе

Процедура перехода к обработчику прерываний включает в себя:

передачу текущего вектора состояния прерываемой программы на хранение в стек;

выявление запроса прерывания с максимальным приоритетом;

загрузку в регистры процессора вектора прерывания (чаще всего –

начального адреса).

Векторы прерывания хранятся в фиксированных ячейках оперативной памяти, и процессор должен предварительно получить адрес соответствующего вектора прерывания.

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

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

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

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

37

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

 

Шина данных (ШД)

 

Адрес вектора

 

прерывания

Процес-

ОСП

Контрол-

 

сор

ЛПП

лер пре-

 

рываний

 

ПП

 

ЛЗП1

РгЗП ЗПk

ЛЗПk

ИЗП1

ЛЗПi

ИЗПk

ИЗП источник запросов прерывания; ЗП сигнал запроса прерывания; ПП сигнал подтверждения прерывания; ОСП общий сигнал прерывания; ЛЗП линия запросов прерывания;

ЛПП линия подтверждения прерывания; РгЗП регистр запросов прерывания

Рис. 25. Радиальная структура системы прерывания

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

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

Сигнал с линии запроса прерываний распространяется по цепочке источников запроса прерываний, подключенных к данной линии. Распространение этого сигнала блокируется ИЗПj, выставившим запрос. Получив сигнал подтверждения

38

прерывания, ИЗПj выставляет на ШД код адреса вектора прерывания. Приоритет подключенных к одной линии устройств определяется положением источника запроса прерывания в цепочке распространения сигнала подтверждения прерывания. Это исключает необходимость выполнения процедуры поиска запроса с максимальным приоритетом.

 

 

 

Шина данных (ШД)

 

 

 

 

Адрес вектора

 

 

 

 

 

 

прерывания

 

 

6

 

 

 

 

 

 

 

 

 

2

ОСП

 

ЛЗП1

 

 

Процес-

 

 

Контрол-

РгЗП

 

 

 

 

ЛЗПi

1

 

сор

ЛПП

рываний

 

лер пре-

 

 

 

3

ПП

 

 

 

 

ЛЗПk

 

 

 

 

ЗПj

 

 

 

 

 

ЛППk

4

 

 

 

 

 

ИЗПj

ИЗПm

 

 

 

 

ИЗП1

 

 

 

 

 

 

 

 

 

ППk

 

5

 

 

 

 

 

ЛППi

 

 

 

 

 

 

 

ЛПП1

 

 

 

 

 

 

ИЗП источник запросов прерывания;

 

 

 

 

ЗП сигнал запроса прерывания;

 

 

 

 

 

ПП сигнал подтверждения прерывания;

 

 

 

 

ОСП общий сигнал прерывания;

 

 

 

 

ЛЗП линия запросов прерывания;

 

 

 

 

ЛПП линия подтверждения прерывания

 

Рис. 26. Цепочечная структура системы прерывания (цифрами обозначена последовательность прохождения сигналов)

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

Такие системы прерывания являются наиболее динамичными даже при достаточно большом количестве источников запроса прерывания.

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

Для уменьшения времени поиска запроса прерывания с максимальным приоритетом может использоваться аппаратная реализация алгоритма, представленная на рис. 27 и называемая аппаратным полингом.

39

 

 

Счетчик

 

 

 

 

 

n

2

1

Кодномера

запроса

 

 

 

 

 

ГТИ

 

 

 

 

 

 

 

 

Дешифратор

 

 

 

 

 

k=2n

2

1

&

1

&

 

ЗП

 

 

 

 

 

 

 

 

 

 

 

1

 

 

&

 

 

РгЗП

 

 

 

R

T

ЗП2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S

ОСП

 

 

 

 

&

 

 

 

 

 

 

 

 

ЗПk

РгЗП регистр запросов прерываний;

Сброс

 

 

 

 

 

 

 

ЗП запрос на прерывание;

 

 

 

ОСП общий сигнал запроса на прерывание;

 

 

ГТИ генератор тактовых импульсов

 

Рис. 27. Схема устройства аппаратного полинга

Опрос k линий запросов прерываний производится с помощью n-разрядного счетчика (2n k), на вход которого поступают импульсы от генератора тактовых импульсов. Поиск начинается со сброса счетчика и установки триггера в состояние 1. При этом импульсы от ГТИ через схему И начинают поступать на вход счетчика. На выходах дешифратора, начиная с первого, последовательно появляются единицы. Это происходит до тех пор, пока не попадается возбужденная линия запроса прерывания, на которой тоже выставлена 1. В этом случае триггер перебрасывается в состояние 0 и в процессор поступает общий сигнал прерывания. При этом прекращается поступление импульсов ГТИ на вход счетчика, т.е. завершается просмотр входов системы прерывания. Содержимое счетчика – код номера запроса (старшего по приоритету) используется для формирования адреса соответствующего вектора прерывания. Схемы подобного типа принято называть дейзи-цепочками, и в настоящее время они получили очень широкое распространение в различных устройствах.

Реализация программно-управляемых приоритетов

Существуют три основных метода реализации систем программноуправляемых приоритетов – порог прерывания, маскирование прерывания и смена приоритетов.

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

40

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]