Программируемый контроллер прерываний что это
Программируемый контроллер прерываний
Контроллер прерываний — микросхема или встроенный блок процессора, отвечающий за возможность последовательной обработки запросов на прерывание от разных устройств. Английское название — Programmable Interrupt Controller (PIC).
Как правило представляет собой электронное устройство, иногда выполненное как часть самого процессора или же сложных микросхем его обрамления, входы которого присоединены электрически к соотвествующим выходам различных устройств. Номер входа контроллера прерываний обозначается «IRQ». Следует отличать этот номер от приоритета прерывания, а также от номера входа в таблицу векторов прерываний (INT). Так, например, в IBM PC в реальном режиме работы (в этом режиме работает MS-DOS) процессора прерывание от стандартной клавиатуры использует IRQ 1 и INT 9.
В первоначальной платформе IBM PC используется очень простая схема прерываний. Контроллер прерываний представляет из себя простой счётчик, который либо последовательно перебирает сигналы разных устройств, либо сбрасывается на начало при нахождении нового прерывания. В первом случае устройства имеют равный приоритет, во втором устройства с меньшим (или большим при обратном счёте) обладают большим приоритетом.
APIC использовался в многоядерных/многопроцессорных системах, начиная с Pentium Pro. Начиная с поколения Pentium 4 он стал широко использоваться и в наборах микросхем одноядерных систем.
Преимущества расширенного контроллера прерываний:
APIC поддерживался в ОС Windows, начиная с Windows NT 4.
В настоящий момент наблюдается тенденция к отказу от IO APIC, как и проводников IRQ, и переходу на Message Signaled Interrupts.
Программируемые контроллеры прерываний (Лекция)
1. Вложенные прерывания с фиксированными приоритетами входов
2. Прерывания с круговым (циклическим) приоритетом
3. Специальное маскирование
4. Структура программируемого контроллера прерываний
1. Вложенные прерывания с фиксированными приоритетами входов
2. Прерывания с круговым (циклическим) приоритетом
В этом случае у каждого входа тоже есть свой приоритет, но после обслуживания он изменяется в круговом порядке так, что обслуженный вход получает низший приоритет. Такая дисциплина обслуживания характерна для ситуации с источниками, не имеющими преимуще ств др уг перед другом. Запрашивающее обслуживания устройство будет ждать в худшем случае до того, как 7 других источников будут обслужены по одному разу. Работу с круговым приоритетом можно иллюстрировать примером (Рисунок 45), в котором регистр запросов вначале содержит 6-й и 4-й запросы, т.е. наивысший приоритет имеет 4-й запрос, который и будет обслужен. После обслуживания приоритетность входов изменяется как бы вращением кольца, причем номер 7 с низшим приоритетом становится на 4-ю позицию только что обслуженного запроса. Позицию низшего приоритета называют дном приоритетного кольца. Контроллерами реализуется маскирование запросов, когда запрещается их восприятие с помощью соответствующих битов регистра маски. При этом могут быть реализованы разные ситуации. Обычное маскирование. Маскирование какого-либо запроса ведет и к маскированию других запросов с меньшими приоритетами.
3. Специальное маскирование
Происходит блокирование восприятия только одного входа запросов при отсутствии маскирования младших по приоритету. После снятия маски обслуживание запросов становится возможным.
Рис. Пример обслуживания запросов прерывания с круговым приоритетом
Включение контроллера прерываний в систему показано на рисунке ниже. Контроллер принимает запросы от внешних устройств, определяет, какой из незамаскированных запросов имеет наивысший приоритет, сравнивает его с приоритетом текущей программы и при соответствующих условиях выдает запрос прерывания INT для МП. После подтверждения запроса МП должен получить от контроллера информацию, которая укажет на подпрограмму, соответствующую данному ВУ, т.е. вектор прерывания.
Рис. Схема включения контроллера прерываний в микропроцессорную систему
4. Структура программируемого контроллера прерываний
Рис. Структура программируемого контроллера прерываний
Можно также обслуживать прерывания по результатам опроса источников запросов, когда сигнал INT не используется, и процессор сам производит поочередный опрос входов, начиная со старшего по приоритету. Обнаружение запроса ведет к его обслуживанию с переходом на соответствующую подпрограмму.
Программируемый контроллер прерываний что это
Организация прерываний в микроЭВМ
Эта важная особенность обмена с прерыванием программы позволяет организовать обмен данными с ВУ в произвольные моменты времени, не зависящие от программы, выполняемой в микроЭВМ. Таким образом, появляется возможность обмена данными с ВУ в реальном масштабе времени, определяемом внешней по отношению к микроЭВМ средой. Обмен с прерыванием программы существенным образом экономит время процессора, затрачиваемое на обмен. Это происходит за счет того, что исчезает необходимость в организации программных циклов ожидания готовности ВУ (см. примеры 2.1 и 2.2, Параллельная передача данных), на выполнение которых тратится значительное время, особенно при обмене с медленными ВУ.
Прерывание программы по требованию ВУ не должно оказывать на прерванную программу никакого влияния кроме увеличения времени ее выполнения за счет приостановки на время выполнения подпрограммы обработки прерывания. Поскольку для выполнения подпрограммы обработки прерывания используются различные регистры процессора (счетчик команд, регистр состояния и т.д.), то информацию, содержащуюся в них в момент прерывания, необходимо сохранить для последующего возврата в прерванную программу.
Обычно задача сохранения содержимого счетчика команд и регистра состояния процессора возлагается на аппаратные средства обработки прерывания. Сохранение содержимого других регистров процессора, используемых в подпрограмме обработки прерывания, производится непосредственно в подпрограмме. Отсюда следует достаточно очевидный факт: чем больший объем информации о прерванной программе сохраняется программным путем, тем больше время реакции микроЭВМ на сигнал прерывания, и наоборот. Предпочтительными с точки зрения повышения производительности микроЭВМ (сокращения времени выполнения подпрограмм обработки, а, следовательно, и основной программы) являются уменьшение числа команд, обеспечивающих сохранение информации о прерванной программе, и реализация этих функций аппаратными средствами.
Рис. 3.11. Фрагмент блок-схемы контроллера ВУ с разрядом «Разрешение прерывания» в регистре состояния и управления
Аналогичным путем решается проблемам управления прерываниями в микроЭВМ, в целом. Для этого в регистре состояния процессора выделяется разряд, содержимое которого определяет, разрешены или запрещены прерывания от внешних устройств. Значение этого разряда может устанавливаться программным путем.
В микроЭВМ обычно используется одноуровневая система прерываний, т. е. сигналы «Запрос на прерывание» от всех ВУ поступают на один вход процессора. Поэтому возникает проблема идентификации ВУ, запросившего обслуживание, и реализации заданной очередности (приоритета) обслуживания ВУ при одновременном поступлении нескольких сигналов прерывания. Существуют два основных способа идентификации ВУ, запросивших обслуживания:
— программный опрос регистров состояния (разряд «Готовность ВУ») контроллеров всех ВУ;
— использование векторов прерывания.
Организация прерываний с программным опросом готовности предполагает наличие в памяти микроЭВМ единой подпрограммы обслуживания прерываний от всех внешних устройств. Структура такой подпрограммы приведена на рис. 3.12.
Рис. 3.12. Структура единой программы обработки прерываний и ее связь с основной программой
Обслуживание ВУ с помощью единой подпрограммы обработки прерываний производится следующим образом. В конце последнего машинного цикла выполнения очередной команды основной программы процессор проверяет наличие требования прерывания от ВУ. Если сигнал прерывания есть и в процессоре прерывание разрешено, то процессор переключается на выполнение подпрограммы обработки прерываний.
После сохранения содержимого регистров процессора, используемых в подпрограмме, начинается последовательный опрос регистров состояния контроллеров всех ВУ, работающих в режиме прерывания. Как только подпрограмма обнаружит готовое к обмену ВУ, сразу выполняются действия по его обслуживанию. Завершается подпрограмма обработки прерывания после опроса готовности всех ВУ и восстановления содержимого регистров процессора.
Приоритет ВУ в микроЭВМ с программным опросом готовности внешнего устройства однозначно определяется порядком их опроса в подпрограмме обработки прерываний. Чем раньше в подпрограмме опрашивается готовность ВУ, тем меньше время реакции на его запрос и выше приоритет. Необходимость проверки готовности всех внешних устройств существенно увеличивает время обслуживания тех ВУ, которые опрашиваются последними. Это является основным недостатком рассматриваемого способа организации прерываний. Поэтому обслуживание прерываний с опросом готовности ВУ используется только в тех случаях, когда отсутствуют жесткие требования на время обработки сигналов прерывания внешних устройств.
Рассмотрим организацию векторной системы с интерфейсным вектором. Вектор прерывания (или его адрес) выдается контроллером не одновременно с запросом на прерывание, а только по разрешению процессора, как это реализовано в схеме на рис. 3.13. Это делается для того, чтобы исключить одновременную выдачу векторов прерывания от нескольких ВУ. В ответ на сигнал контроллера ВУ «Запрос на прерывание» процессор формирует управляющий сигнал «Предоставление прерывания (вх.)», который разрешает контроллеру ВУ, запросившему обслуживание, выдачу вектора прерывания в шину адреса системного интерфейса. Для этого в контроллере используются регистр вектора прерывания и схема совпадения И3. Регистр вектора прерывания обычно реализуется с помощью перемычек или переключателей, что позволяет пользователю устанавливать для конкретных ВУ требуемые значения векторов прерывания.
Рис. 3.13. Формирование векторов прерывания в контроллере ВУ
Управляющий сигнал «Предоставление прерывания (вых.)» формируется в контроллере ВУ с помощью схемы совпадения И2. Этот сигнал используется для организации последовательного аппаратного опроса готовности ВУ и реализации тем самым требуемых приоритетов ВУ. Процессор при поступлении в него по общей линии системного интерфейса «Запрос на прерывание» сигнала прерывания формирует управляющий сигнал «Предоставление прерывания (вх.)», который поступает сначала в контроллер ВУ с наивысшим приоритетом (рис. 3.14). Если это устройство не требовало обслуживания, то его контроллер пропускает сигнал «Предоставление прерывания» на следующий контроллер, иначе дальнейшее распространение сигнала прекращается и контроллер выдает вектор прерывания на адресно-информационную шину.
Аппаратный опрос готовности ВУ производится гораздо быстрее, нежели программный. Но если обслуживания запросили одновременно два или более ВУ, обслуживание менее приоритетных ВУ будет отложено на время обслуживания более приоритетных, как и в системе прерывания с программным опросом.
Рассмотренная векторная система прерываний практически полностью соответствует системе прерываний, реализованной в микроЭВМ «Электроника-60». Восьмиразрядный вектор прерывания в «Электронике-60» указывает одну из ячеек памяти с адресами от 0 до (376)8, в которой размещается адрес начала подпрограммы обработки прерывания. В следующей за указанной вектором прерывания ячейке памяти хранится новое содержимое регистра состояния процессора, загружаемое в него при переключении на подпрограмму обработки прерывания. Один из бит нового содержимого регистра состояния процессора запрещает или разрешает прерывания от других ВУ, что позволяет ВУ с более высоким приоритетом прерывать подпрограммы обслуживания ВУ с меньшим приоритетом и наоборот.
Векторная система с внеинтерфейсным вектором прерывания используется в IBM-совместимых персональных компьютерах. В этих компьютерах контроллеры внешних устройств не имеют регистров для хранения векторов прерывания, а для идентификации устройств, запросивших обслуживания, используется общий для всех ВУ контроллер прерываний. Ниже приведен пример контроллера прерываний INTEL 8259A.
Структурная схема ПКП приведена на рисунке 3.15.
Рис. 3.15. Контроллер прерываний Intel 8259A
Установка ПКП в исходное состояние и «настройка» его на определенный режим обслуживания прерываний происходит с помощью двух типов команд: команд инициализации (ICW) и команд управления операциями (OCW).
Упрощенная схема взаимодействия контроллера прерываний с процессором и контроллером шины имеет следующий вид.
Рис. 3.16. Упрощенная схема взаимодействия контроллера прерываний с процессором и контроллером шины в IBM-совместимых персональных компьютерах класса AT
Далее процессор считывает номер вектора прерывания. Сохраняет в стеке содержимое регистра флагов, сбрасывает флаг прерываний IF и помещает в стек адрес возврата в прерванную программу (регистры CS и IP). После этого процессор извлекает из таблицы векторов прерываний адрес подпрограммы обработки прерываний для данного устройства и приступает к ее выполнению.
Процедура обработки аппаратного прерывания должна завершаться командой конца прерывания EOI (End of Interruption), посылаемой контроллеру прерываний. Для этого необходимо записать байт 20h в порт 20h (для первого контроллера) и в порт A0h (для второго).
Аппаратные прерывания. Контроллер прерываний
Технические науки
Похожие материалы
Введение
Прерывание означает временное прекращение основного процесса вычислений для выполнения некоторых запланированных или незапланированных действий, вызываемых работой аппаратуры или программы. Т.е. это процесс, временно переключающий микропроцессор на выполнение другой программы с последующим возвратом к прерванной программе. Нажимая клавишу на клавиатуре, мы инициируем немедленный вызов программы, которая распознает клавишу, заносит ее код в буфер клавиатуры, из которого он считывается другой программой. Т.е. на некоторое время микропроцессор прерывает выполнение текущей программы и переключается на программу обработки прерывания, так называемый обработчик прерывания. После того, как обработчик прерывания завершит свою работу, прерванная программа продолжит выполнение с точки, где было приостановлено ее выполнение. Адрес программы-обработчика прерывания вычисляется по таблице векторов прерываний.
Механизм прерываний поддерживается на аппаратном уровне. В зависимости от источника, прерывания делятся на:
Аппаратные средства системы прерываний
Система прерываний — это совокупность программных и аппаратных средств, реализующих механизм прерываний.
К аппаратным средствам системы прерываний относятся:
Обработка прерываний
Прерывание вызывает ряд событий, которые происходят как в аппаратном, так и в программном обеспечении. На рис. 1 показана типичная последовательность этих событий.
После завершения работы устройства ввода-вывода происходит следующее:
Рисунок 1. Временная диаграмма программы: медленный ввод-вывод
Теперь процессору нужно подготовиться к передаче управления обработчику прерываний. Сначала необходимо сохранить всю важную информацию, чтобы в дальнейшем можно было вернуться к тому месту текущей программы, где она была приостановлена. Минимальная требуемая информация — это слово состояния программы и адрес очередной выполняемой команды, который находится в программном счетчике. Эти данные заносятся в системный управляющий стек.
Рисунок 2. Обработка простого прерывания
Далее в программный счетчик процессора загружается адрес входа программы обработки прерываний, которая отвечает за обработку данного прерывания. В зависимости от архитектуры компьютера и устройства операционной системы может существовать как одна программа для обработки всех прерываний, так может быть и своя программа обработки для каждого устройства и каждого типа прерываний. Если для обработки прерываний имеется несколько программ, то процессор должен определить, к какой из них следует обратиться. Эта информация может содержаться в первоначальном сигнале прерывания; в противном случае для получения необходимой информации процессор должен по очереди опросить все устройства, чтобы определить, какое из них отправило прерывание.
Как только в программный счетчик загружается новое значение, процессор переходит к следующему циклу команды, приступая к ее извлечению из памяти. Так как команда извлекается из ячейки, номер которой задается содержимым программного счетчика, управление переходит к программе обработки прерываний. Исполнение этой программы влечет за собой следующие операции.
Содержимое программного счетчика и слово состояния прерываемой программы уже хранятся в системном стеке. Однако это еще не вся информация, имеющая отношение к состоянию исполняемой программы. Например, нужно сохранить содержимое регистров процессора, так как эти регистры могут понадобиться обработчику прерываний. Поэтому необходимо сохранить всю информацию о состоянии программы. Обычно обработчик прерываний начинает свою работу с записи в стек содержимого всех регистров. Другая информация, которая должна быть сохранена, обсуждается в главе 3, «Описание процессов и управление ими». На рис. показан простой пример, в котором программа пользователя прерывается после выполнения команды из ячейки N. Содержимое всех регистров, а также адрес следующей команды (N+1), в сумме составляющие М слов, заносятся в стек. Указатель стека при этом обновляется, указывая на новую вершину стека. Обновляется и программный счетчик, указывая на начало программы обработки прерывания.
Теперь обработчик прерываний может начать свою работу. В процесс обработки прерывания входит проверка информации состояния, имеющая отношение к операциям ввода-вывода или другим событиям, вызвавшим прерывание. Сюда может также входить пересылка устройствам ввода-вывода дополнительных инструкций или уведомляющих сообщений.
После завершения обработки прерываний из стека извлекаются сохраненные ранее значения, которые вновь заносятся в регистры, возобновляя таким образом то состояние, в котором они пребывали до прерывания.
Последний этап — восстановление из стека слова состояния программы и содержимого программного счетчика. В результате следующей будет выполняться команда прерванной программы.
Из-за того, что прерывание не является подпрограммой, вызываемой из программы, для полного восстановления важно сохранить всю информацию состояния прерываемой программы. Однако прерывание может произойти в любой момент и в любом месте программы пользователя. Это событие непредсказуемо [2].
Контроллер прерываний
Контроллер прерываний предназначен для обработки и арбитража поступающих запросов на обслуживание к центральному процессору от периферийных устройств. По аналогии функции контроллера прерываний можно сравнить с секретарём какого–нибудь начальника. Секретарь должен решить, кого из посетителей допустить к боссу в первую очередь, а кого и потом, исходя из приоритетов, отдаваемых боссом и статуса самого посетителя. Так и в компьютерной системе, возможна такая ситуация, когда несколько периферийных устройств послали сигнал прерывания или запрос на прерывание. В компьютерной литературе этот сигнал обозначается IRQ (Interrupt Request).
Как уже выше говорилось, прерывания имеют определённый приоритет, который позволяет контроллеры прерываний отдавать предпочтение в данный момент времени одному устройству, а не другому. В современном компьютере существует до 16 внешних и периферийных устройств, генерирующие прерывания. Вот эти устройства:
Здесь сигналы приведены в порядке убывания приоритетов. Можно заметить, что после IRQ 2, следует IRQ 8. Дело в том, что в своё время контроллер прерываний состоял из двух микросхем, одна была подключена к другой. Вот эта вторая микросхема и подключается к линии IRQ 2, образуя каскад. Она обслуживает линии IRQ8–IRQ 15. А затем следуют линии первой микросхемы [3].
Работа контроллера прерывания
Работа контроллеров прерываний рассматривается на основе микросхем фирмы Intel 8259A, которые применялись в теперь уже очень старых компьютерах с процессорами до 386 серии. В этих компьютерах обычно было 2 микросхемы 8259A, подключенных каскадно, то есть одна к другой. Одна из микросхем, подключенная по линии запроса на прерывание непосредственно к процессору является ведущей или мастером. Остальные, подключаются к ведущей через аналогичные выводы, называются ведомыми.
Рисунок 3. Схема подключения контроллеров прерываний и их взаимодействие с центральным процессором
На рисунке 3 изображена схема подключения контроллеров прерываний и их взаимодействие с центральным процессором. Сигналы на прерывание от периферийных устройств или ведомых контроллеров поступают на входы IR0–IR7 ведущего контроллера. Внутренняя логика ведущего контроллера обрабатывает поступившие запросы с точки зрения приоритета. Если приоритет запроса устройства достаточен, то на выходе INT контроллера вырабатывается сигнал, поступающий на вход INTR процессора. В противном случае, запрос блокируется.
Если процессор разрешает прерывания, то после завершения выполнения текущей команды, он вырабатывает по линии INTA последовательность сигналов, которая переводит ведомый контроллер в состояние невосприимчивости к поступающим новым запросам на прерывание, а кроме того, на линию данных выводится информация из внутренних регистров контроллера по которой процессор распознаёт тип прерывания.
Разрешение на прерывание процессор передаёт контроллеру прерываний через контроллер шины. Сигнал RD предназначен для того, чтобы контроллер прерываний поместил на шину данных содержимое внутренних регистров. По сигналу WR контроллер прерываний, наоборот, принимает данные с одноимённой шины и записывает их во внутренние регистры. Соответственно, это влияет на режим работы контроллера прерываний.
Вход CS подключается к шине адреса и по этому сигналу происходит идентификация конкретного контроллера прерываний. Вход A0 указывает на порт контроллера прерываний в пространстве ввода–вывода.
Входы IR0–IR7 предназначены для приёма запросов на прерывание от периферийных устройств и ведомых контроллеров.
Выходы CAS0–CAS2 предназначены для идентификации конкретного ведомого контроллера [4].
В статье рассмотрены аппаратные прерывания и устройство, функции, работу контроллера прерываний. Данный контроллер прерываний появился ещё в первых PC–совместимых компьютерах. С тех пор, и процессоры, и сам компьютер во многом изменились, хотя некоторые моменты остались. Поэтому, для того, чтобы было понятней и была рассмотрена организация контроллера прерываний 8295A.
На приведенной выше схеме показаны сигналов приходящие не только на ведомый и ведущий контроллеры прерываний, но и на остальные ведомые. Однако на вашем компьютере или ноутбуке на самом деле 2 контроллера прерываний, как выше указывалось: ведущий и ведомый. Но можно создавать свои компьютерные системы, используя таким образом до 64 ведомых контроллеров прерываний.
В современных компьютерах уже давно функции контроллера прерываний выполняют не микросхемы 8259A, а южный мост. Однако, для всех программ и устройств всё остаётся по–прежнему. Более того, контроллер прерываний можно программировать, и обращаться к внутренним регистрам и портам необходимо точно также, как и к контроллеру 8259A [5].
Заключение
В данной работе были рассмотрены прерывания, а именно аппаратные средства обработки прерываний и принцип обработки прерываний. Также рассмотрены контроллеры прерываний и принцип их работы.
Прерывание означает временное прекращение основного процесса вычислений для выполнения некоторых запланированных или незапланированных действий, вызываемых работой аппаратуры или программы. Механизм прерываний поддерживается на аппаратном уровне. Аппаратные прерывания возникают как реакция микропроцессора на физический сигнал от некоторого устройства (клавиатура, системные часы, клавиатура, жесткий диск и т.д.), по времени возникновения эти прерывания асинхронны, т.е. происходят в случайные моменты времени.
Контроллер прерываний предназначен для обработки и арбитража поступающих запросов на обслуживание к центральному процессору от периферийных устройств. Прерывания имеют определённый приоритет, который позволяет контроллеру прерываний отдавать предпочтение в данный момент времени одному устройству, а не другому. В современном компьютере существует до 16 внешних и периферийных устройств, генерирующие прерывания.
Список литературы
Завершение формирования электронного архива по направлению «Науки о Земле и энергетика»
Создание электронного архива по направлению «Науки о Земле и энергетика»
Электронное периодическое издание зарегистрировано в Федеральной службе по надзору в сфере связи, информационных технологий и массовых коммуникаций (Роскомнадзор), свидетельство о регистрации СМИ — ЭЛ № ФС77-41429 от 23.07.2010 г.
Соучредители СМИ: Долганов А.А., Майоров Е.В.