Главная » Просмотр файлов » Жмакин А.П. Архитектура ЭВМ (2006)

Жмакин А.П. Архитектура ЭВМ (2006) (1186252), страница 25

Файл №1186252 Жмакин А.П. Архитектура ЭВМ (2006) (Жмакин А.П. Архитектура ЭВМ (2006)) 25 страницаЖмакин А.П. Архитектура ЭВМ (2006) (1186252) страница 252020-08-27СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 25)

6.3.3. Прерывания

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

Различают внутренние и внешние (по отношению к процессору) события, требующие реакции подсистемы прерываний. К внутренним событиям отно­сятся переполнение разрядной сетки при выполнении арифметических опе­раций, попытка деления на 0, извлечение корня четной степени из отрица­тельного числа, появление несуществующего кода команды, обращение про­граммы в область памяти, для нее не предназначенную, сбой при выполнении передачи данных или операции в АЛУ и многое другое. Внутренние преры­вания должны обеспечиваться развитой системой аппаратного контроля про­цессора, поэтому они не получили широкого распространения в простых 8- и 16-разрядных МП.

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

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

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

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

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

□ обнаружение изменения состояния внешней среды (запрос на прерыва­ние);

□ идентификация источника прерывания;

□ разрешение конфликтной ситуации в случае одновременного возникнове­ния нескольких запросов (приоритет запросов);

□ определение возможности прерывания текущей программы (приоритет программ);

□ фиксация состояния прерываемой (текущей) программы;

□ переход к программе, соответствующей обслуживаемому прерыванию;

□ возврат к прерванной программе после окончания работы прерывающей программы.

Рассмотрим варианты реализации в МПС перечисленных выше функций.

Обнаружение изменения состояния внешней среды

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

Количество источников запросов в МПС может быть различно, в т. ч. довольно велико. Дефицит внешних выводов МП в общем случае исключа­ет возможность передачи каждого запроса от ВУ по "собственной" линии интерфейса. Обычно на одну линию запроса подключается несколько ис­точников прерываний (по функции ИЛИ), а иногда и все источники запро сов — на единственный вход.

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

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

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

Идентификация источника прерывания

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

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

Гораздо чаще в современных МПС используется т. н. векторная подсистема прерываний. В такой системе микропроцессор, получив запрос на векторном входе INT, выдает на свою выходную линию сигнал подтверждения преры­вания INTA, поступающий на все возможные источники прерывания. Источ­ник, не выставивший запроса, никак не реагирует на сигнал INTA. Источник, выставивший запрос, получая сигнал INTA, выдает на системную шину дан­ных "вектор прерывания" — свой номер или адрес обслуживающей програм­мы или, чаще, адрес памяти, по которому расположен указатель на обслужи­вающую программу. Время реакции МПС на запрос векторного прерывания минимально (1—3 машинных цикла) и не зависит от числа источников.

Приоритет запросов

Для исключения конфликтов при одновременном возникновении нескольких запросов на векторном входе ответный сигнал INTA подается на источники запросов не параллельно, а последовательно — в порядке убывания приори­тетов запросов. Источник, не выставлявший запроса, транслирует сигнал INTA со своего входа на выход, а источник, выставивший запрос, блокирует дальнейшее распространение сигнала INTA. Таким образом, только один ис­точник, выставивший запрос, получит от процессора сигнал ПМТА и выдаст по нему свой вектор на шину данных.

Более гибко решается проблема организации приоритетов запросов при ис­пользовании в МПС специальных контроллеров прерываний.

Конфликты на радиальном входе исключаются самим порядком программно­го опроса источников.

Приоритет программ

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

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

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

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

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

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

Можно вспомнить, что подобный механизм реализован в системах команд многих процессоров для выполнения команд вызовов подпрограммы (call, jsr). В этих командах адрес вызываемой подпрограммы содержится в коде команды.

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

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

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

Если в конце очередного командного цикла процессор обнаруживает (не­замаскированный) запрос на векторном входе, он начинает следующий командный цикл с небольшими изменениями: содержимое PC по-прежнему выдается на шину адреса (чтобы не нарушать общности цикла), но вместо сигнала RDM формирует сигнал INTA. Источник запроса (чаще — контрол­лер прерываний) в ответ на сигнал INTA формирует на шину данных код ко­манды вызова подпрограммы, в адресной части которой размещается адрес обработчика соответствующего прерывания.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6392
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее