Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Аппаратные и программные прерывания. Внутренние и внешние прерывания.

Поиск

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

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

  • асинхронные, или внешние (аппаратные) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (Interrupt request, IRQ);

Аппаратные прерывания делятся на:

    • маскируемые — прерывания, которые можно запрещать установкой соответствующих битов в регистре маскирования прерываний (в x86-процессорах — сбросом флага IF в регистре флагов);
    • немаскируемые (Non-maskable interrupt, NMI) — обрабатываются всегда, независимо от запретов на другие прерывания. К примеру, такое прерывание может быть вызвано сбоем в микросхеме памяти.
  • синхронные, или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение стека, обращение к недопустимым адресам памяти или недопустимый код операции;
  • программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения (firmware), драйверов и операционной системы.

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

Ввод-вывод по прерываниям, однако, требует усложнения аппаратных средств – создания системы прерываний.

Структура контроллера приоритетных прерываний имеет вид

Обозначения:

  • IRn- линии запроса прерываний от периферийных устройств;
  • INTR– сигнал запроса прерывания от контролера к процессору;
  • INTA– сигнал подтверждения приёма запроса на прерывание, запрос вектора прерывания;
  • NMI– запрос на немаскируемое прерывание с фиксированным вектором от устройств не обслуживаемых контроллером прерываний (например сигнал от блока питания о исчезновении питающего напряжения или поломке);

При поступлении запроса на прерывание IR(N) от периферийного устройства (ПУ) контроллер прерываний посылает запрос на прерывание (INT) в центральный процессор. Процессор разрешает обработку прерывания, формируя сигнал подтверждения #INTA, который, поступая в контроллер прерываний, вызывает формирование на шине данных вектора прерывания. Вектор определяют программу обработки. Обработка прерывания произойдет после завершения выполнения текущей команды процессором.

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

8. (!)Одноуровневая система прерывания. Аппаратное и программное обеспечение.

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

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

Функциональная схема включения таких портов в микропроцессорную систему с учебным микропроцессором представлена на рис.4.17. Эта схема реализует так называемую одноуровневую векторную систему прерываний. Она включает в себя порты 1…N, реализующие асинхронный ввод-вывод на внешнем участке обмена, элемент «ИЛИ», приоритетный шифратор и порт ввода вектора прерывания.

Пусть в исходном состоянии все запросы на обслуживания IRQ1…IRQN равны нулю, то есть отсутствуют. Пусть далее появляется запрос от порта ввода No1 IRQ = 1. Этот запрос через элемент «ИЛИ» передается на вход запроса прерываний INT процессора. Процессор, реагируя на этот запрос, выполняет следующие действия:

  1. проверяет, разрешены ли прерывания. Если они запрещены, никаких других действий по обслуживанию прерывания не производится. В микро-ЭВМ продолжается выполнение основной программы;
  2. запрещает прерывания;
  3. завершает выполнение текущей команды;
  4. переходит в режим приема кода операции с шины данных;
  5. блокирует с помощью системного контроллера выдачу сигнала MEMR шины управления и формирует на отдельной линии этой шины сигнал INTA – «подтвеждение прерывания»;
  6. принимает с шины данных код команды рестарта RST 1;
  7. выполняет эту команду, то есть записывает в стек адрес следующей по порядку команды основной программы и передает управление по адресу 0008H, с которого должна начинаться программа ввода из порта 1;
  8. выполняет всю программу ввода и завершающую ее команду RET. По этой команде из стека восстанавливается содержимое счетчика команд, которое было там до рерывания, то есть управление передается очередной команде основной программы.

Рис.4.17.Функциональная схема одноуровневой векторной системы прерываний

Рис.4.18.Типовая блок-схема программы обслуживания прерывания

Каждый из портов этой системы имеет свою собственную программу обслуживания порта, вызываемую одной из команд вида RST X. Конкретный вариант команды рестарта называют вектором соответствующего прерывания. Вектор формируется приоритетным шифратором из запросов IRQ1… IRQN и выставляется на шину данных по сигналу . Использование приоритетного шифратора позволяет обслуживать одновременно поступившие запросы от разных портов в соответствии с заранее определенной системой приоритетов.

Программа обслуживания прерывания в одноуровневой векторной системе обычно строится по типовой блок-схеме (рис.4.18).

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

В одноуровневой системе все запросы на прерывания практически равнозначны. Приоритет сказывается лишь при одновременности поступления запросов.

Иногда удобнее иметь многоуровневую систему прерываний, в которой запросы с более высоким приоритетом могут прерывать работу программ обработки прерываний, имеющих низшие приоритеты. Векторную многоуровневую систему прерываний реализуют с помощью специализированной БИС – контроллера приоритетных прерываний.

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

 

9. (!)Многоуровневая система прерывания. Аппаратное и программное обеспечение.

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

Структура таблицы векторов прерываний:

Обращение к элементам таблицы осуществляется по 8-разрядному коду - типу прерывания

 

Однако несколько контроллеров прерываний могут быть вклю­чены последовательно. На современных компьютерах (начиная с 286) один (ведущий) контроллер прерываний подключен непо­средственно к процессору, а второй (ведомый) своим выходом INT подключен ко входу IRQ2 ведущего контроллера. Итого получается 15 входов прерываний от IRQ0 до IRQ 15 (IRQ2 не может быть использован).

При подаче сигнала на прерывание от контроллера к процессо­ру по линии INTR-INT, одновременно по линиям данных из контроллера прерываний в процессор поступает номер вектора прерывания, который образуется путем сложения IRQ с некото­рым базовым номером, который присваивается ВIOSом кон­троллеру в процессе загрузки (значения по умолчанию 08h для ведущего контроллера и 70h для ведомого). Таким образом, например, номер вектора прерывания для клавиатуры будет 08+1=9 h, для жесткого диска 70 h +6=76 h.

Контроллер прерываний допускает перепрограммирование для установки различных режимов формирования очереди запро­сов, изменения приоритетов прерываний, изменения базовых номеров контроллеров. Такое перепрограммирование осущест­вляется через два байтовых порта 20 h и 21 h. По умолчанию IRQ отдельного контроллера имеют приоритеты в соответствии с их номерами (IRQ0 – наивысший, IRQ7 – наинизший).

Пример каскадного включения двух контроллеров прямого доступа к памяти



Поделиться:


Последнее изменение этой страницы: 2016-08-15; просмотров: 1857; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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