Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_Основы_Архит_ИС__для_ЭКЗ_2014_ФГОС-3.doc
Скачиваний:
45
Добавлен:
22.02.2015
Размер:
1.72 Mб
Скачать

Аппаратные прерывания мп

Бывают: немаскируемые (запросы поступает на входы NMIиSMIМП) и маскируемые (запрос поступает на входINTRМП)

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

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

Разрешить МП реагировать на прерывания можно, установив в «1» флаг IFкомандойSTI.

Программируемый контроллер прерывания (ПКП)

В компьютере IBMPCATПКП состоит из двух ПКП.

- ведущий ПКП. К нему подключатся линии прерываний IRQ0-IRQ7.Из пространства ввода-вывода для него выделены адреса 20h- 21h

- ведомый ПКП. Подключается по второму входу ведущего ПКП. К ведомому ПКП подключаются линии IRQ8-IRQ15. Из пространства ввода-вывода за ним закрепляется адреса А0h; А1h.

Программная модель ПКП соответствует ИМС i8259.

Каждый ПКП содержит три восьми разрядных регистра:

1. IRRфиксирует запросы, поступившие на входы 7-0 ПКП

2. IMR– регистр масок. Хранит маскируемые (запрещённые) входы ПКП. Установка бита в «1» запрещает ПКП реагировать на соответствующий вход (вIRRзапрос фиксируется)

3. ISR- регистр обслуживаемых прерываний.

Хранит обслуживаемые прерывания. Установка в «1» бита в регистре ISRпредотвращает прерывание от этого входа и всех других входов с меньшими преритетами. После установки бита в регистреISRсоответствующий бит в регистреIRRобнуляется.

Функции ПКП

  1. Принимает запросы в компьютере по линиями IRQ15 -IRQ0.

  2. Присваивает фиксированные или циклически изменяемые приоритеты входам ПКП.

  3. Формирует и передаёт по шине данных микропроцессору код команды CALLи адрес вектора прерывания (CALL– переход на подпрограмму).

Реакция системы прерывания на запрос.

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

Поступил запрос от клавиатуры на первый вход ведущего ПКП (смотри рисунок). Этот запрос фиксируется в регистре ISRустановкой в «1» первого разряда. Проверяется содержимое первого разряда регистраIMR. ЕслиIMR[1] равен 0, то ПКП может реагировать на запрос и этот запрос поступает на шифратор приоритетов. Если запросов с более высоким приоритетом нет, то ПКП формирует сигнал на выходеINT, который поступает на входINTRМП. МП проверяет флаг прерыванияIF. ЕслиIFравен 1, т.е. прерывания разрешены. МП завершает выполнение текущей команды и переходит на выполнения цикла магистрали – «подтверждение прерывания», формируя на выходах М/IO#- 0,D/C# - 0,W/R#- 0.

Системный контроллер по этому коду формирует сигнал, поступающий на вход INTА ПКП.

ПКП обнуляет первый разряд в регистре IRRи устанавливает в «1» первый разряд в регистреISR. ПКП по шине данных передает МП код командыCALLи адрес вектора прерывания. Адрес вектора формирует ПКП, прибавляя к базовому адресу вектора 08h, который загружается в ПКП приказом инициализацииICW2, номер входа ПКП. Адрес вектора - 08h+ 1 = 09h.

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

0000h: 0024h- логический адрес вектора прерывания.

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

Немаскируемые аппаратные прерывания

Обрабатываются МП не зависимо от состояния флага IF. К ним относятся прерывания, поступающие на входеINTМП. А для МП, поддерживающих режим системного управления ещё по линииSMI.

Немаскируемые прерыванияNMI

Сигналы на входе NMIформируются схемами контроля по паритету памяти, либо схемами контроля шин расширения и поступают по линиямIOCHKшиныISA,SERRшиныPCI.

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

Обработчик прерывания определяет источник прерывания, анализируя разряды 7 и 6 порта 61h. Вложенности прерываний нет, т.е. если во время обработки немаскируемого прерывания снова появится сигналNMIповторный вызов обработчика возможен только после выполнения командыIRET(выход из подпрограммы).

Немаскируемые прерыванияSMI

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