На какой шине обслуживаются запрос и предоставление прерываний

Обновлено: 02.07.2024

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

Аналогичным преобразованиям подвергаются и запросы радиальных прерываний . Обычно они соотносятся с некоторыми векторными прерываниями и называются запросами с фиксированными векторами. [5]

При этом типе прерываний, как правило, требуется введение в систему специального контроллера прерываний. Каждое радиальное прерывание требует введения дополнительной линии в шину управления системной магистрали. Но работать с радиальными прерываниями проще, так как все сводится только к выработке единственного сигнала IRQ, и никаких циклов обмена по магистрали не требуется. [6]

Блок прерываний организует приоритетную систему прерываний в процессоре, принимает и обрабатывает внутренние и внешние запросы на прерывание. При одновременном появлении нескольких запросов все источники прерываний по взаимному приоритету образуют следующую иерархию: ошибка обращения к каналу; резервный или запрещенный код в регистре команд; Т - разряд в слове состояния процессора; сигнал аварии сетевого питания ACLO; запросы радиального прерывания IRQ1, IRQ2, IRQ3; требование прерывания VIRQ. Необходимо отметить, что блок прерывании реагирует на запросы ACLO, IRQ2, IRQ3 при их переходе от высокого уровня напряжения к низкому. При возникновении условий прерывания процессор микропрограммно осуществляет сохранение текущего значения счетчика команд и слова состояния и производит загрузку их нового значения из пары ячеек внешнего ОЗУ или ПЗУ. Прерывание процессора обычно допускается лишь в конце выполнения команды. Только прерывание Ошибка обращения к каналу может остановить выполнение команды на любой фазе ее выполнения. [7]

Блок прерываний организует приоритетную систему прерываний в процессоре, принимает и обрабатывает внутренние и внешние запросы на прерывание. При одновременном появлении нескольких запросов все источники прерываний по взаимному приоритету образуют следующую иерархию: ошибка обращения к каналу; резервный или запрещенный код в регистре команд; Т - разряд в слове состояния процессора; сигнал аварии сетевого питания ACLO; запросы радиального прерывания IRQ1, IRQ2, IRQ3; требование прерывания VIRQ, Необходимо отметить, что блок прерываний реагирует на запросы ACLO, IRQ2, IRQ3 при их переходе от высокого уровня напряжения к низкому. При возникновении условий прерывания процессор микропрограммно осуществляет сохранение текущего значения счетчика команд и слова состояния и производит загрузку их нового значения из пары ячеек внешнего ОЗУ или ПЗУ. Прерывание процессора обычно допускается лишь в конце выполнения команды. Только прерывание Ошибка обращения к каналу может остановить выполнение команды на любой фазе ее выполнения. [8]

При этом типе прерываний, как правило, требуется введение в систему специального контроллера прерываний. Каждое радиальное прерывание требует введения дополнительной линии в шину управления системной магистрали. Но работать с радиальными прерываниями проще, так как все сводится только к выработке единственного сигнала IRQ, и никаких циклов обмена по магистрали не требуется. [9]

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

Прежде чем начать обмен в режиме ПДП, устройство, которому необходим ПДП, должно запросить ПДП и получить его. Процедура запроса и предоставления ПДП очень похожа на процедуру запроса и предоставления прерывания. В обоих случаях устройство, требующее обслуживания, посылает сигнал запроса процессору. Однако в случае ПДП процессор обязательно должен предоставить ПДП запросившему устройству с помощью специальных сигналов, так как на время ПДП процессор отключается от магистрали. А при радиальных прерываниях предоставления прерывания от процессора не требуется. [12]

Системная шина PC / AT - расширенная, но совместимая с предыдущей шиной PC. Имеет дополнительный разъем для добавочных 8 разрядов данных, 4 разрядов адресов и 5 линий IRQ. Часто эта магистраль называется Industry Standard Architecture ( ISA) - стандартная промышленная архитектура. Характерное отличие ISA от предыдущей магистрали состоит в том, что ее тактовый сигнал не совпадает с тактовым сигналом процессора. На магистрали ISA реализован раздельный доступ к памяти процессорной системы и к устройствам ввода / вывода. Магистраль поддерживает радиальные прерывания и ПДП. Допускается захват магистрали устройством ввода / вывода. Конструктивное исполнение магистрали - разъемы, установленные на материнской плате, все одноименные контакты которых соединены между собой. [13]

Еще один важный сигнал, который имеется в каждом процессоре, - это сигнал начального сброса RESET. При включении питания, при аварийной ситуации или зависании процессора подача этого сигнала приводит к инициализации процессора, заставляет его приступить к выполнению программы начального запуска. Аварийная ситуация может быть вызвана помехами по цепям питания и земли, сбоями в работе памяти, внешними ионизирующими излучениями и еще множеством причин. В результате процессор может потерять контроль над выполняемой программой и остановиться в каком-то адресе. Для выхода из этого состояния как раз и используется сигнал начального сброса. Этот же вход начального сброса может использоваться для оповещения процессора о том, что напряжение питания стало ниже установленного предела. В таком случае процессор переходит к выполнению программы сохранения важных данных. По сути, этот вход представляет собой особую разновидность радиального прерывания . [14]

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

Источники прерывания делятся на три класса.

1. Внутренние прерывания, например, аппаратный сбой, ошибка от схем контроля и т.д. При внутренних прерываниях не происхо­дит формирования сигнала INTE . Внутренние прерывания имеют более высокий приоритет по сравнению с внешними прерываниями.

2. Внутрисистемные прерывания, возникающие вследствие со­бытий во внешних устройствах, например, прерывания от тайме pa, устройства ввода-вывода в момент его готовности к обмену информацией и т. д.

3. Прерывания, предусмотренные в выполняемой текущей про­грамме с помощью специальных команд.

Существуют два типа обслуживания прерываний: считываемый и векторный.

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

При векторном типе обслуживания прерываний внешние уст­ройства, требующие к себе внимания со стороны МП, выставля­ют сигнал INT (Запрос прерывания). Восприятие запросов уста­навливается определенным разрядом ССП при выполнении ко­манды EI (Разрешение прерывания). МП не воспринимает запро­сы на прерывание при начальной установке по входу RESET , ког­да все триггеры, в том числе и триггеры ССП, устанавливаются в нулевое состояние.

Поэтому, если МП приступил к выполнению программы, то он и в дальнейшем не будет реагировать на запро­сы прерывания до тех пор, пока в программе не появится команда EI (Разрешение прерывания).

При дальнейшем продолжении вы­полнения программы, в случае, если необходимо проигнорировать прерывание, вводят команду DI (Запрещение прерываний). Удов­летворение запроса на прерывание зависит от значения сигнала DO ССП. Если DO = 1, то при наличии сигнала DB IN (прием ин­формации) формируется сигнал IN ТЕ (Разрешение прерывания) (см. рис. 2.1.7).

Рисунок 2.1.7 – УГО МП БИС КР580ИК80

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

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

2. МП посылает устройствам ввода-вывода ответный сигнал INTE (Разрешение прерывания), давая понять, что он готов к обмену данными.

3. Устройство ввода-вывода сообщает начальный адрес подпро­граммы обслуживания прерывания.

4. Получив адрес, МП начинает подпрограмму обмена данными.

5. В конце подпрограммы всегда должна стоять команда выхода из подпрограммы и возврата управления прерванной основной программе по команде RETURN (RET).

6. Получив команду возврата RETURN, МП извлекает из стека адрес возврата к прерванной программе и продолжает ее выпол­нение.

Если одновременно возникают запросы на прерывание от не­скольких устройств, необходимо выработать приоритет по их обслу­живанию.

Для этой цели вводят специальный блок приоритетных прерываний (БПП), который берет на себя посреднические услу­ги между устройством ввода-вывода и МП. Для подключения БПП используется вход INT МП.

БПП выполняет следующие функции:

1. получает запросы на прерывание от нескольких источников, если они пришли одновременно и формирует один сигнал, кото­рый поступает на вход INT МП;

2. выставляет запрет (маскирование) на восприятие сигналов от определенных источников прерываний;

3. устанавливает и меняет приоритеты в обслуживании поступив­ших запросов на прерывание;

4. сообщает МП начальный адрес подпрограммы обслуживания прерывания внешнего устройства, причем адрес подпрограммы обслуживания прерывания сообщается МП по ШД.

Разряд Д0 совместно с сигналом на выходе ПРИЕМ используется для формирования сигнала ОБ. Пр (обслуживание прерывания) магистрали управления микроЭВМ (рис. 2.1.8). Поэтому сигналу ВУ выдают на МД микроЭВМ либо код команды RST , либо код команды CALL .

Существует восемь кодов команды RST ,где N=0—7.

Команда RST указывает начальный адрес подпрограммы
обслуживания прерывания.

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

Возврат можно осуществить с помощью команды RET (RETURN), которая загружает содержание двух верхних ячеек стека в PC.

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

Первым машинным циклом при обращении к ячейкам памяти, указанным в команде RST , является цикл М1 извлечения команды.

При векторном способе задания прерываний на первом цикле
М1 ВУ будет передавать МП БИС не команду RST , а команду
САLL .

Получив команду CALL, МП БИС автоматически переходит в режим ввода 2 байтов адреса А1 и А2 на циклах М2, М3.

После этого организуется сохранение содержания PC в стеке и
обращение к началу подпрограммы обслуживания прерывания.
Начало подпрограммы указано во втором и третьем байтах (
) команды CALL.

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


Рисунок 2.1.8 – Ввод кода команды RST1 при обслуживании МП БИС сигнала прерывания

Здесь приводятся описание аппаратной части контроллера прерываний 8259A, команд контроллера и макросов для программирования на ассемблере.

Авторская часть состоит в разработке макросов для работы с контроллером. Сами тексты макросов приведены в irq.def.

Оглавление

Описание подсистемы аппаратных прерываний

В архитектуре IBM AT все запросы на аппаратные прерывания из системной шины поступают через два контроллера прерываний (КП) 8259A на вход процессора (ЦП) INTR. Процессор подаёт через выход INTA сигнал на подтверждение прерывания и получает по локальной шине D0–D7 от КП номер вектора прерывания. После чего, он приостанавливает исполнение текущей программы и начинает обрабатывать прерывание. Обработчик прерывания, выполнив заданную последовательность действий, посылает в КП команду окончания обработки прерывания.

Контроллер прерываний (8259A) имеет следующие регистры

  • IMR регистр масок; установленные биты указывают, какие номера прерываний запретить обрабатывать;
  • IRR регистр запросов на прерывание, содержит номера поступивших запросов на прерывание, бит соответствующему запросу сбрасывается после подтверждения прерывания (IMR на IRR не влияет);
  • ISR регистр обслуживаемых прерываний, указывает номера обслуживаемых прерываний.

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

Контроллер прерываний может воспринимать запросы на прерывания от устройств как по уровню, так и по фронту сигнала. Это программируется в процедуре настройки контроллера прерываний.

Когда устройство подаёт запрос на прерывание, в регистре запросов на прерывание IRR устанавливается соответствующий ему бит. Если в регистре обслуживаемых прерываний ISR нет необслуженных прерываний с бóльшим приоритетом, и прерывание от данного устройства незамаскировано, то выдаётся запрос на вход INTR ЦП. После получения подтверждения прерывания от ЦП по входу INTA в ISR устанавливается соответствующий ему бит. Сброс бита в ISR осуществляется подачей в КП соответствующей команды из ЦП обработчиком прерывания.

Микросхема 8259A позволяет подключать к себе до восьми устройств. Чтобы расширить количество обрабатываемых прерываний, в IBM PC/AT контроллеры прерываний включены каскадом. Один из КП играет роль ведущего (Master), а второй — ведомого (Slave). Выход INTR ведомого контроллера подключён к одному из входов ведущего, а выход INTR ведущего — к соответствующему входу ЦП (см. структуру подключений). Получив от ЦП подтверждение прерывания (по общей для обоих КП шине INTA), если оно относится в ведомому КП, ведущий по локальной шине cas0–cas2 сообщает ведомому, что ведомый должен выдавать вектор прерываний на шину D0–D7.

Перед использованием контроллеров прерываний необходимо выполнить их настройку вначале ведущего КП, а затем ведомого. В процессе настройки ИС 8259A ведущего КП нужно, в частности, указать к каким его входам подключены ведомые КП, а ИС 8259A ведомого — к какому входу ведущего КП она подключена. К ИС 8259A, настроенной как ведущий КП, может подключаться до восьми ведомых ИС 8259A (в IBM PC используется только один), что в принципе позволяет обрабатывать до 64 запросов прерываний. После того, как ведущий КП передаёт в ЦП запрос на прерывание от ведомого КП и получает подтверждение, он выдаёт на локальную шину cas0–cas2 номер входа, к которому подключён ведомый контроллер. Ведомый контроллер отслеживает состояние входов на шине cas0–cas2, и когда обнаруживает свой номер, обрабатывает подтверждение своего запроса прерывания.

Структура подключения контроллеров прерываний в IBM AT

Порты, используемые для обращений к контроллерам прерываний.

  • 020h — Первый порт ведущего контроллера прерываний;
  • 021h — Второй порт ведущего контроллера прерываний;
  • 0A0h — Первый порт подчинённого контроллера прерываний;
  • 0A1h — Второй порт подчинённого контроллера прерываний.

Из первого порта можно прочитать регистры ISR и IRR. А из второго — IMR.

При загрузке ЭВМ BIOS настраивает контроллеры прерываний так, что ведущий выдаёт номера векторов прерываний в диапазоне от 08h до 0fh, а ведомый — в диапазоне от 70h до 77h.

Команды контроллера делятся на: команды настройки (ICW) и рабочие команды (OCW). Вначале рассмотрим команды настройки (командные слова ICW1, ICW2, ICW3 и ICW4). Слово ICW1 начинает процесс настройки КП. Оно задаёт по фронту или по уровню сигнала на входе КП нужно генерировать запрос на прерывание; работает ли контроллер в каскадном режиме (Master или Slave) или самостоятельно, а также имеется ли слово ICW4.

Бит A0 в команде задаётся адресом порта в который она посылается.


Слово ICW1 должно выводиться в порт 20h для ведущего контроллера и в порт 0A0h для ведомого


Слово ICW2 должно выводиться в порт 21h для ведущего контроллера или в порт 0A1h для ведомого.



Слово ICW3 должно выводиться в порт 21h для ведущего контроллера в порт 0A1h для ведомого.


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

В специальном полновложенном режиме игнорируются только запросы на прерывание с более низким приоритетом.

// Буферный режим -- ? (о нём нет сведений) //

Слово ICW4 должно выводиться в порт 21h ведущего КП и в порт 0A1h ведомого.

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

Порядок настройки контроллера прерываний


Чтобы изменить одно из ICWn, нужно перепрограммировать всю последовательность.

Регистр маски

Регистр IMR доступен для чтения всегда, ISR и IRR — только после выдачи соответствующих команд.

Теперь рассмотрим рабочие команды (OCW1, OCW2 и OCW3).

Командное слово OCW1

Для управления регистром маски IMR контроллера прерываний используется командное слово OCW1

Команда OCW1 маскирует отдельные запросы на прерывания. Единичные значения битов указывают, что поступающие запросы на прерывание с соответствующими им номерами игнорируются.

Порт, в который Слово OCW1 должно выводиться в порт 21h ведущего КП и 0A1h ведомого.


Макрос IRQMaskN macro MS, N, SCRV устанавливает, сбрасывает, инвертирует или тестирует один бит регистра маски прерываний контроллера.

  • MS — указывает контроллер, к которому ведётся обращение (должно быть master или slave);
  • N — номер проверяемого бита;
  • SRCV — указывает, что нужно сделать с битом регистра маски:
    • S — установить соответствующий бит маскирования канала прерывания;
    • C — инвертировать соответствующий бит маскирования канала прерывания;
    • R — сбросить соответствующий бит маскирования канала прерывания;
    • — проверить соответствующий бит маскирования канала прерывания, загрузив его в разряд CF регистра флагов ЦП (если бит N установлен, то CF=1).

    Макрос IRQMaskMANY macro MS, msk, SCRV устанавливает, сбрасывает или инвертирует биты регистра маски прерываний контроллера, которые в переменной msk имеют единичное значение.

    • MS — указывает контроллер, к которому ведётся обращение (должно быть master или slave)
    • msk — маска изменяемых битов (единичное значение указывает, что бит должен быть изменён).
    • SRCW — указывает, что нужно сделать с битами регистра маски:
      • S — установить соответствующие биты маскирования канала прерывания;
      • C — инвертировать соответствующие биты маскирования канала прерывания;
      • R — сбросить соответствующие биты маскирования канала прерывания.

      Макрос IRQMaskALL MS, msk записывает в регистр масок контроллера прерываний байт.

      • MS — указывает контроллер, к которому ведётся обращение (должно быть master или slave )
      • msk — новое значение регистра масок.

      Командное слово OCW2


      R=1 — управляет операциями, связанными с ротацией приоритетов;
      SL=1 — указывает, что команда относится к конкретному прерыванию, а не к последнему, подтверждённому на обслуживание (специальное в смысле заданное);
      EOI=1 — окончание прерывания (сброс разряда в ISR);
      L0-L2 — номер запроса на прерывание, для которого выполняется команда, используется совместно с SL=1.

      Изменение уровней приоритетов вступает в силу только по завершении обработки прерывания (после команды EOI, например).

      Когда уровни приоритетов не изменяются, достаточно обычного EOI, когда используются команды ротации приоритетов в обработчике прерываний, нужно использовать специальную команду EOI, явно указывая номер завершаемого прерывания. На использование автоматического завершения прерывания можно программировать контроллер только тогда, когда частота прерываний не очень велика, иначе может возникнуть ситуация сверхвложения (когда одно и то же прерывание вызывается на столько часто, что обработчик не успевает его отработать, при этом оно блокирует вызов всех остальных, и может возникнуть переполнение стека). Если производится ротация приоритетов прерываний, во время обработки прерывания, то приоритеты будут только после окончания обработки (выдачи команды EOI). Т. е. если после ротации приоритетов если, вдруг оказался запрос с более высоким приоритетом, чем у обрабатываемого, то оно обрабатываться не будет до тех пор, пока текущий обработчик прерываний не выдаст команду EOI.

      Слово OCW2 должно выводиться в порт 20h для ведущего КП и в порт 0A0h для ведомого.

      Для окончания обработки запроса на прерывание служит макрос

      _IRQeoi MS, IRQN

      • MS — master (вместо него можно указать 1) или slave (можно указать 0).
      • IRQN — номер канала прерывания, для которого выполняется команда. Необязателен. Если не указывать, то подразумевается последнее подтверждённое на обслуживание прерывание.

      Команда OCW3 используется для выдачи различных режимов и команд в 8259A. OCW3 имеет две функции:

      • Выдаёт состояния прерываний
      • Управляет маскированием прерываний
      • RR=1 — выполняется команда чтения регистра;
      • RIS=0 — читать IRR; RIS=1 — читать ISR;
      • ESMM=1 — включается или выключается режим специального маскирования;
      • SMM=1 — включить; SMM=0 — выключить;
      • P — выдаётся команда опроса.

      Режим опроса необходим, когда устройства имеют общую программу-обработчик прерываний, а также при количестве запросов больше 64. Инициатором опроса является команда, посылающая слово OCW3, по которой микропроцессор блокирует свой вход INTR и подготавливает цепи в КП (контроллере прерываний), необходимые для опроса. Затем в контроллер передаётся команда чтения порта 20h (для ведущего) или A0h (для ведомого КП), по которой по наиболее приоритетному запросу устанавливается соответствующий разряд ISR и сбрасывается одноимённый разряд IRR) и на шину X выдаётся слово опроса прерываний, структура которого следующая


      По полученной информации программа либо перейдёт на программу-обработчик приоритетного прерывания, либо ликвидирует следы обслуживаемого прерывания командой EOI. При необходимости операции опроса может повторяться до тех пор, пока разряд I (D7) не станет равным нулю.

      Слово OCW3 выводится в порт 20h ведущего контроллера и в порт 0A0h ведомого контроллера.

      Следующий макрос устанавливает режим опроса.

      IRQSetRA MS, Reg, SM

      • MS — master или slave;
      • Reg — регистр, который потом можно будет прочитать (IRR или ISR), можно опустить, тогда не будет меняться читаемый регистр;
      • SM — изменить состояние специальной маски (SSM/установить или RSM/сбросить), можно не указывать, тогда состояние специального маскирования меняться не будет.

      Макрос IRQResetRA MS, Reg, SM сбрасывает режим опроса, а также может изменить состояние специального маскирования и читаемый регистр (IRR или ISR)

      • MS — master или slave;
      • Reg — регистр, который потом можно будет прочитать (IRR или ISR), можно опустить, тогда не будет меняться читаемый регистр;
      • SM — изменить состояние специальной маски (SSM/установить или RSM/сбросить), можно не указывать, тогда состояние специального маскирования меняться не будет.

      Макрос IRQSRARead MS, Reg, IntFNOCHANGE устанавливает режим опроса и читает регистр КП. MS — master или slave. Reg — регистр, который потом можно будет прочитать (IRR или ISR), можно опустить, тогда не будет меняться читаемый регистр. Параметр IntFNOCHANGE — если указан (любое значение), то регистр флагов не сохраняется.

      Т. к. в процессе чтения регистра может быть выработано прерывание, которое, в свою очередь, может попытаться прочитать другой регистр контроллера, что в свою очередь может привести к чтению первым обработчиком неправильного регистра, то лучше на время выполнения операции чтения запретить прерывания (вставить команду cli перед IRQSRARead).

      • MS — master или slave;
      • Reg — регистр, который потом можно будет прочитать (IRR или ISR), можно опустить, тогда читаемый регистр не будет меняться;
      • IntFNOCHANGE — Любое значение. Указывает, что не нужно сохранять регистр флагов.

      Если запрос на прерывание снимается со входа до того, как он будет разрешён в IMR, то прерывание не вырабатывается.

      Возможны следующие режимы работы контроллера

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

      Последовательность действий при использовании специального маскирования


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

      Для окончания обработки прерывания в специальном полновложенном режиме на подчинённых контроллерах используется макрос _IRQeoiSFNM IRQN . IRQN — необязательный параметр, указывает номер завершаемого прерывания. Если не указывать, то будет завершено последнее подтверждённое на обслуживание.

      Макросы высокого уровня

      Список устройств, подключённых к контроллерам прерываний, имена устройств указываются в макросах окончания обработки прерывания (IRQ_EOI), маскирования и размаскирования прерываний (IRQ_Des и IRQ_En)

      Примечание: .IRQSpecialFNM — переменная указывает, используется ли специальный полновложенный режим. Служит для указания генерируемого кода для обработки окончания прерывания, полученного от ведомого контроллера. Переменная вступает в силу после макроса настройки контроллера InitATIRQ. Если настройка контроллера не выполняется, то её можно установить явно. Если .IRQSpecialFNM не определена то IRQ_EOI для подчинённого контроллера генерируется так, если бы был настроен специальный режим полного вложения.

      Стандартная инициализация контроллеров прерываний осуществляется с помощью макроса IRQ_Ini IRQ0Int1, IRQ0Int2, SpecFNM

      1. SpecFNM — указывает, следует ли использовать специальный полновложенный режим
      2. IRQ0Int1, IRQ0Int2 — номера прерываний первого и второго контроллера Макрос формирует переменную .IRQSpecialFNM, указывающую, следует ли использовать в последующих командах IRQ_EOI при обслуживании прерываний от ведомого контроллера последовательность команд, написанную для специального полновложенного режима или нет.

      Если векторы прерываний задаются не константами, а регистрами, то правильность задаваемых номеров не выполняется.

      Стандартное завершение прерывания выполняется макросом IRQ_EOI IRQName. В этом макросе неявно используется переменная .IRQSpecialFNM.

      Маскировать прерывание можно макросом IRQ_Des IRQName, а размаскировать — IRQ_En IRQName. Здесь IRQName — одно из имён устройств, помещённое в начале файла.

      Разберем, что такое запрос на обслуживание, с чего начать автоматизацию процесса и на какие аспекты обратить внимание.

      Что такое запрос на обслуживание

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

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


      Разберем, что такое запрос на обслуживание, с чего начать автоматизацию процесса и на какие аспекты обратить внимание.

      Зачем внедрять

      При автоматизации ИТ-процессов мы рекомендуем обрабатывать запросы на обслуживание как отдельный поток задач и управлять как самостоятельным процессом. Это позволит:

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

      С чего начать

      8 шагов для быстрого старта:

      1. Выявите часто запрашиваемые ИТ-услуги в компании и включите их в каталог предоставляемых услуг.
      2. Утвердите соглашение об уровне обслуживания (SLA), чтобы обеспечить соблюдение всех заданных регламентов и правил.
      3. Задайте метрики (срочность, степень влияния, приоритет, регламентное время решения).
      4. Настройте жизненный цикл для обработки запросов.
      5. Настройте типы оповещений (пуш, смс, уведомление по почте) и условия их отправки для службы поддержки и потребителей услуг.
      6. Стандартизируйте процесс согласования и утверждения, где это возможно. Например, все запросы на замену наушников или компьютерной мыши считаются предварительно утвержденными, а все запросы на обновление ПО должны быть дополнительно одобрены.
      7. Зафиксируйте, какие ИТ-команды отвечают за выполнение запросов, при необходимости создайте индивидуальные правила и процессы (workflow) для определенных запросов и их групп.
      8. Выделите типы отчетов, которые необходимы для отслеживания эффективности реализации процесса.


      Какие этапы включить

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

      Согласование. При необходимости перед стартом работ проводится согласование и утверждение затрат.

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

      Выполнение. Сотрудник службы поддержки выполняет запрос. Пользователю предоставляется запрошенная услуга.

      Закрытие. По итогам служба поддержки закрывает заявку. Фиксируется обратная связь от клиента, чтобы убедиться, что его запрос решен. Иначе работы по заявке возобновляются.


      Протестируйте процесс управления запросами на обслуживаниев нашем сервисе.

      Читайте также: