Главная страница
Навигация по странице:

  • Прерываниями

  • Исключения

  • Маскируемые прерывания

  • Адрес точки возврата

  • Вектор прерываний

  • 0_МПиИСТС_Все главы. Микропроцессоры и интерфейсные средства транспортных средств


    Скачать 10.01 Mb.
    НазваниеМикропроцессоры и интерфейсные средства транспортных средств
    Анкор0_МПиИСТС_Все главы.doc
    Дата18.12.2017
    Размер10.01 Mb.
    Формат файлаdoc
    Имя файла0_МПиИСТС_Все главы.doc
    ТипУчебное пособие
    #11960
    страница9 из 47
    1   ...   5   6   7   8   9   10   11   12   ...   47

    2.3 Режим прерывания








    Рис. 2.8 Виды режимов прерываний



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

    Исключения – нештатные ситуации (ошибки), возникающие при работе процессора.

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

    Исключения – возникают по причине: деления на ноль, переполнения разрядной сетки, особые ситуации в ходе обработки данных.

    Аппаратные прерывания – прерывания, формируемые некоторыми внешними источниками запроса, возникающими при появлении внешнего сигнала запроса аппаратуры: клавиша, выключатель.

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

    Радиальные – радиальная структура – источник запроса прерывания

    Векторные – цепочечная структура – источник запроса прерывания.

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

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

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

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

    Процессор одновременно с сигналом разрешения активирует сигнал чтения и устройство прерывания выставляет на младшие разряды ШД адрес вектора прерывания.

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

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

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

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

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

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

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

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




    Рис. 2.9 Фрагмент блок-схемы контроллера ВУ с разрядом

    «Разрешение прерывания» в регистре состояния и управления


    Для решения этой проблемы регистр состояния и управления контроллера ВУ (рис. 2.9) дополняют еще одним разрядом - «Разрешение прерывания». Запись 1 или 0 в разряд «Разрешение прерывания» производится программным путем по одной из линий шины данных системного интерфейса. Управляющий сигнал системного интерфейса «Запрос на прерывание» формируется с помощью схемы совпадения только при наличии единиц в разрядах «Готовность ВУ» и «Разрешение прерывания» регистра состояния и управления контроллера.

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

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

    - программный опрос регистров состояния (разряд «Готовность ВУ») контроллеров всех ВУ;

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

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





    Рис. 2.9 Структура единой программы обработки прерываний и ее связь с основной программой


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

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

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

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

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

    Рассмотрим организацию векторной системы с интерфейсным вектором. Вектор прерывания (или его адрес) выдается контроллером не одновременно с запросом на прерывание, а только по разрешению процессора, как это реализовано в схеме на рис. 2.11. Это делается для того, чтобы исключить одновременную выдачу векторов прерывания от нескольких ВУ. В ответ на сигнал контроллера ВУ «Запрос на прерывание» процессор формирует управляющий сигнал «Предоставление прерывания (вход)», который разрешает контроллеру ВУ, запросившему обслуживание, выдачу вектора прерывания в шину адреса системного интерфейса. Для этого в контроллере используются регистр вектора прерывания и схема совпадения И3. Регистр вектора прерывания обычно реализуется с помощью перемычек или переключателей, что позволяет пользователю устанавливать для конкретных ВУ требуемые значения векторов прерывания.




    Рис. 2.11 Формирование векторов прерывания в контроллере ВУ



    Управляющий сигнал «Предоставление прерывания (выход)» формируется в контроллере ВУ с помощью схемы совпадения И2. Этот сигнал используется для организации последовательного аппаратного опроса готовности ВУ и реализации тем самым требуемых приоритетов ВУ. Процессор при поступлении в него по общей линии системного интерфейса «Запрос на прерывание» сигнала прерывания формирует управляющий сигнал «Предоставление прерывания (вх.)», который поступает сначала в контроллер ВУ с наивысшим приоритетом (рис. 2.12). Если это устройство не требовало обслуживания, то его контроллер пропускает сигнал «Предоставление прерывания» на следующий контроллер, иначе дальнейшее распространение сигнала прекращается и контроллер выдает вектор прерывания на адресно-информационную шину.




    Рис. 2.12 Реализация приоритетов ВУ в микроЭВМ с векторной системой прерываний с интерфейсным вектором

    (ППР (вх.) - «Предоставление прерывания (входной)»;

    ППР (вых.) – «Предоставление прерывания (выходной)»)


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

    Рассмотренная векторная система прерываний практически полностью соответствует системе прерываний, реализованной в микроЭВМ «Электроника-60». Восьмиразрядный вектор прерывания в «Электронике-60» указывает одну из ячеек памяти с адресами от 0 до (376)8, в которой размещается адрес начала подпрограммы обработки прерывания. В следующей за указанной вектором прерывания ячейке памяти хранится новое содержимое регистра состояния процессора, загружаемое в него при переключении на подпрограмму обработки прерывания. Один из бит нового содержимого регистра состояния процессора запрещает или разрешает прерывания от других ВУ, что позволяет ВУ с более высоким приоритетом прерывать подпрограммы обслуживания ВУ с меньшим приоритетом и наоборот.

    Векторная система с внеинтерфейсным вектором прерывания используется в IBM-совместимых персональных компьютерах. В этих компьютерах контроллеры внешних устройств не имеют регистров для хранения векторов прерывания, а для идентификации устройств, запросивших обслуживания, используется общий для всех ВУ контроллер прерываний. Ниже приведен пример контроллера прерываний INTEL 8259A.

    БИС программируемого контроллера прерываний (ПКП) представляет собой устройство, реализующее до восьми уровней запросов на прерывания с возможностью программного маскирования и изменения порядка обслуживания прерываний. За счет каскадного включения БИС ПКП число уровней прерывания может быть расширено до 64 (в архитектуре персонального компьютера IBM PC AT - 16).

    Структурная схема ПКП приведена на рисунке 2.13.




    Рис. 2.13 Контроллер прерываний Intel 8259A



    В состав БИС входят:

    RGI - регистр запретов прерываний; хранит все уровни, на которые поступают запросы IRQx;

    PRB - схема принятия решений по приоритетам; схема идентифицирует приоритет запросов и выбирает запрос с наивысшим приоритетом;

    ISR - регистр обслуживаемых прерываний; сохраняет уровни запросов прерываний, находящиеся на обслуживании ПКП;

    RGM - регистр маскирования прерываний; обеспечивает запрещение одной или нескольких линий запросов прерывания;

    BD - буфер данных; предназначен для сопряжения ПКП с системной шиной данных;

    RWCU - блок управления записью/чтением; принимает управляющие сигналы от микропроцессора и задает режим функционирования ПКП;

    CMP - схема каскадного буфера-компаратора; используется для включения в систему нескольких ПКП;

    CU - схема управления; вырабатывает сигналы прерывания и формирует трехбайтовую команду CALL для выдачи на шину данных.

    Установка ПКП в исходное состояние и «настройка» его на определенный режим обслуживания прерываний происходит с помощью двух типов команд: команд инициализации (ICW) и команд управления операциями (OCW).

    Программируемый контроллер прерываний (ПКП) имеет 16 входов запросов прерываний (IRQ 0 - IRQ 15). Контроллер состоит из двух каскадно включенных контроллеров - выход INTR (запрос на прерывание) второго контроллера подключен ко входу IRQ 2 первого контроллера. В качестве примера отметим, что к линии IRQ 0 подключен системный таймер, к линии IRQ 1 - клавиатура, к линии IRQ 8 - часы реального времени и т.д.

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




    Рис. 2.14 Упрощенная схема взаимодействия контроллера

    прерываний с процессором и контроллером шины в IBM-совместимых персональных компьютерах класса AT


    Эта схема функционирует следующим образом. Пусть в некоторый момент времени контроллер клавиатуры с помощью единичного сигнала по линии IRQ 1 известил контроллер прерываний о своей готовности к обмену. В ответ на запрос контроллер прерываний генерирует сигнал INTR (запрос на прерывание) и посылает его на соответствующий вход процессора. Процессор, если маскируемые прерывания разрешены (т.е. установлен флаг прерываний IF в регистре флагов процессора), посылает на контроллер шины сигналы R# - чтение, C# - управление и IO# - ввод/вывод, определяющие тип цикла шины. Контроллер шины, в свою очередь, генерирует два сигнала подтверждения прерывания INTA# и направляет их на контроллер прерываний. По второму импульсу контроллер прерываний выставляет на шину данных восьмибитный номер вектора прерывания, соответствующий данной линии IRQ.

    В режиме реального адреса («реальном» режиме) векторы прерываний хранятся в таблице векторов прерываний, которая находится в первом килобайте оперативной памяти. Под каждый вектор отведено 4 байта (2 байта под адрес сегмента и 2 байта под смещение), т.е. в таблице может содержаться 256 векторов. Адрес вектора в таблице - номер вектора * 4.

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

    Процедура обработки аппаратного прерывания должна завершаться командой конца прерывания EOI (End of Interruption), посылаемой контроллеру прерываний. Для этого необходимо записать байт 20h в порт 20h (для первого контроллера) и в порт A0h (для второго).

    В IBM PC/XT/AT используется режим прерываний с фиксированными приоритетами. Высшим приоритетом обладает запрос по линии IRQ 0, низшим - IRQ 7. Так как второй контроллер подключен к линии IRQ 2 первого контроллера, то приоритеты линий IRQ в порядке убывания приоритета располагаются следующим образом: IRQ 0, IRQ 1, IRQ 8 - IRQ 15, IRQ 3 - IRQ 7. Если запрос на обслуживание посылают одновременно два устройства с разными приоритетами, то контроллер обслуживает запрос с большим приоритетом, а запрос с меньшим приоритетом блокирует. Блокировка сохраняется до получения команды EOI.
    1   ...   5   6   7   8   9   10   11   12   ...   47


    написать администратору сайта