36230

Прерывания микропроцессора

Доклад

Информатика, кибернетика и программирование

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

Русский

2013-09-21

69.5 KB

7 чел.

16. Прерывания микропроцессора

Прерывание работы микропроцессора.

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

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

ЦП может игнорировать требование маскируемого прерывания и продолжать выполнять текущую программу. Это происходит тогда, когда флаг разрешения прерывания IF регистра флагов содержит 0 (прерывание невозможно) и маскируемые прерывания должны ждать обслуживания ЦП-м. ЦП  может либо вообще не обработать маскируемое прерывание, либо обработать его через какое-то время (после того как обработает текущую программу). В этом случае флаг разрешения прерывания IF регистра флагов станет 1.

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

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

Каждому прерыванию соответствует код, по которому его различает МП. В системе может быть до 256 типов прерываний. Прерывания могут генерироваться требованиями устройств ввода-вывода, внешними по отношению к ЦП. Такого типа прерывания могут быть как немаскируемые, так и маскируемые. Прерывания могут быть внутренними, возникающими в прикладных программах при определённых условиях, таких как выполнение команды INTO (прерывание по переполнению), когда флаг переполнения OF равен 1.

ЦП автоматически присваивает текущую работу в следующих случаях:

при делении на 0 (прерывание из-за ошибки деления, тип 0);

при восполнении команды, когда флаг ловушки TF находится в состоянии 1 (пошаговый  останов, прерывания 1);

при выполнении команды СС (16 –й код )(прерывании в заданной точке программы).

Внешние прерывания

В систему, основанную на МП I8088, может входить много соединённых с ним BY: принтер, терминал, ЗУ на гибких дисках, клавиатура и др. Ряд из них требует «внимания» со стороны МП лишь на непродолжительный срок; остальное время они могут функционировать без помощи ЦП.

Рассмотрим клавиатуру. Хорошая машинистка вводит до 400 символов в минуту. Это означает, что новый символ может поступать от клавиатуры в ЭВМ каждые 150 мс, а МП должен каждые 150 мс считывать и запоминать символ, введённый с клавиатуры.

Сам процесс считывания символа и запоминания его в память занимает 10 мкс. В этом примере преимущества от использования прерываний очевидны. Каждый раз, когда нажимается клавиша, устройство выдаёт в ЦП требование на прерывание. Чтобы ни выполнял МП, он постанавливает свою работу, и передаёт управление процедуре прерываний, обслуживающей клавишное устройство, которая содержит команды, необходимые для оценивания и занесения символа в компьютерную память.

Когда эта процедура завершается, ЦП продолжает свою работу с того места программы, где его застало прерывание. Благодаря механизму прерывания, процессор тратит менее 10 мкс на считывание каждого символа, вводимого с клавиатуры. А в течении времени, оставшегося от 150 мс интервала между двумя символами, вводимыми с клавиатуры, он может выполнять другие действия.

У МП есть три линии прерываний, RESET, NMI    и  INTR, по которым ВУ могут передавать свои запросы на обслуживание со стороны ЦП.

Запуск ЦП

При появлении запроса в линии RESET ЦП выполняем следующие действия:

устанавливаем флаг IF в нулевое состояние. Это приводит к невозможности выполнения маскируемых и пошаговых прерываний;

обнуляет регистры сегментов DS, ES, SS;

обнуляет указатель команд IP;

засылает шестнадцатеричное число FFFF в регистр сегмента команд.

ЦП начинает работу с обращения к ячейке памяти с адресом FFFFО. Эта ячейка содержит команду IMP, которая передает управление процедуре инициализации, запускающей МК.

Векторы прерываний служат для идентификации процедур, необходимых для обслуживания требования прерывания. Каждому внешнему требованию на прерывании может быть поставлен в соответствие код прерывания в переделах 0 – 255.

В ПК семейства I 8088 существует 256 векторов прерываний – по одному вектору на каждый тип прерывания.

Таблица векторов прерываний ПК фирмы IBM.

Таблица векторов прерываний занимает 1024 младших байта памяти – ячейки с физическими адресами от 0 до 03FFH – и имеют 256 входов в соответствии с количеством векторов.

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

Маскируемые прерывания. Это внешние требования, поступающие в МП по линии INTR. С помощью маскируемых прерываний можно засинхронизировать с ЦП наибольшее число BУ. При активизации линии INTER МП осуществляет различные действия, зависящие от состояния флага прерываний. Реализуемая в этот момент машинная команда всегда выполняется до конца, и только после этого начинаемая обработка запроса на прерывание.

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

генерируется сигнал прерывания внешнего прерывания. Этот сигнал сообщает ВУ о том, что его требование признано;

считывается код прерывания, поступивший на шину с ВУ;

содержимое регистров флагов записываемая в ячейку памяти, адрес которой хранится в текущей в текущей вершине стека, определяемой регистром SS и SP;

обнуляется флаг прерываний, что предотвращает возможность выполнения вновь поступающего маскируемого прерывания;

обнуляется флаг ловушки TF, что делает невозможным пошаговый режим;

В указатель команд IP засылаемая 16-битовое слово, находящееся по физическому адресу (TYPE*4) и (TYPE*4)+1, где TYPE – код типа прерывания;

в регистр сегмента команд CS засылается 16-битовое слово, находящееся в ячейках памяти с физическим адресом (TYPE*4)+2 и (TYPE*4)+3.

После выполнения операции 6) и 7) управление передается процедуре обслуживания прерывания, содержащей машинные команды, подходящие для удовлетворения требований маскируемого прерывания. Одной из таких команд, содержащихся в процедуре обслуживания, является команда STI (установить прерывание), которая устанавливает флаг прерываний в 1-е состояние и тем самым делает возможным выполнение новых требований, поступающих на INTER.

Немаскируемые прерывания. Это внешние прерывания, поступающие в МП по линии NMI. Обычно ими являются прерывания, сигнализирующие ЦП о внешних событиях особой важности, таких как отключение питания, сбой памяти и т.д. Немаскируемые прерывания признаются МП всегда независимо от состояния флага прерываний. Таким образом, немаскируемые прерывания имеют более высокий приоритет по сравнению с маскируемыми. Им присвоен тип 2. МП в ответ на требование немаскируемого прерывания выполняет следующую последовательность операций:

содержимое регистра флагов записывается в ячейку памяти (адрес который хранится в текущей вершине стека), определяемую регистрами SS и SP;

обнуляется флаг прерываний IF, что запрещает выполнение всех маскируемых прерываний;

обнуляется флаг ловушки TF, что делает невозможным пошаговый режим;

в стек загружается содержимое регистра сегмента команд CS;

в стек загружается содержимое указателя команд IP;

16-битовое слово из ячейки с физическим адресом 00008Н записывается в регистр IP;

16-битовое слово из ячейки с физическим адресом 0000АН записывается в регистр CS.

После выполнения операций 6 и 7 управление передается процедуре обслуживания прерываний, содержаний команды, которые необходимо выполнить для удовлетворения требования, поступившего по линии NMI.

Внутренние прерывания.

Эти прерывания обусловливаются прикладными программами, использующими команду INT. Они возникают также при некоторых условиях по сигналам в самом МП, например, при ошибках деления, переполнении и т. п. Внутренние прерывания   аналогичны маскируемым, требования на которые поступают по линии INTR. Отличие заключается только в том, что МП реагирует на запросы внутренних прерываний независимо от состояния флага прерываний IF.

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

В ПК IBM программные прерывания используются для реализации возможностей, предоставляемых системным программным обеспечением BIOS. Так, например, команда INT 16Н может быть использована для чтения символа из буфера клавишного пульта ЭВМ.

Прерывания из-за ошибки деления.

МП автоматически генерирует прерывание типа 0 немедленно вслед за операциями DIV (деление) или IDIV (целочисленное деление) при возникновении следующих условий:

деление на 0;

если результат занимает больше 8 или 16 бит при делении соответственно 8- и 16-разрядных чисел.

Адрес процедуры обслуживания прерывания типа 0 должен определяться ячейками памяти с физическими адресами с 00000Н по 00003Н.

Прерывание в точке.

Прерывание в заданной точке (месте) программы используется в основном для отладки программы при её написании или тестировании. МП генерирует прерывание типа немедленно по завершении выполнения команды INT 3 (CCH). Шестнадцатеричный машинный код СС используется как команда прерывания в точке. Его можно вставить в любое место программы, где необходимо прервать его нормальное выполнение, и с помощью процедуры, обслуживающей это прерывание, отобразить критическую информацию, такую, как содержимое регистров ЦП и ячеек памяти. Поскольку минимальная смысловая часть команды на языке МП I8088 занимает один байт, машинный код ССН может заменить любую команду, обозначая тем самым точку программы, в которой необходимо осуществить прерывание.

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

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


3FFH

00H

004H

008H

00CH

010H

014H

018H

01CH

020H

3F4H

3F7H

3F8H

3FCH

16 разрядов

Указатель типа 255

Указатель типа 254

Указатель типа 253

Указатель типа 0 (ошибка деления)

Указатель типа 1 (пошаговый режим)

Указатель типа 5 (выдача данных на экран)

Указатель типа 4 (переполнение)

Указатель типа 3 (один байт содержит CCН)

Указатель типа 2 (несанкционированные прерывания по HHI)

Указатель типа 6 (резерв)

Указатель типа 8 (таймер)

Указатель типа 7 (резерв)

Младший адрес

Новый базовый адрес сегмента команд

Новый указатель команд


 

А также другие работы, которые могут Вас заинтересовать

62353. ПУТЬ К ИНТОНАЦИОННОМУ ПОНИМАНИЮ МУЗЫКИ 2.86 MB
  Музыка занимает одно из ключевых мест в системе воспитания духовного человека. представляет собой программу по курсу слушания музыки для 14 годов обучения. Они так же синестетичны: острое или мягкое прикосновения штриха плотная или разряженная тяжелая или облегченная фактура высокий...