Когда цп может начать программу прерывания

Система прерываний микропроцессора

Когда цп может начать программу прерывания

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

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

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

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

После выполнения подпрограммы обработки прерывания по команде «Выход из подпрограммы прерывания» процессор извлекает информацию из стека и продолжает выполнение основной программы с того места, на каком произошло прерывание.

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

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

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

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

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

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

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

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

• по функциональному назначению — на команды передачи данных, команды обработки данных, команды передачи управления,

дополнительные команды;

• по числу операндов — на безоперандные (безадресные), одноо-

перандные (одноадресные), двухоперандные (двухадресные);

• по разрядности операндов — на однобитные команды, полубай-

тные, байтные, команды, работающие с машинным словом.

Основной характеристикой команд является количество тактов,

за которое эта команда выполняется. В настоящее время существует три основных типа командных систем, используемых в процессорах: MISC (Minimum Instruction Set Computer) — система, состоящая из минимального набора простейших команд, как правило выполняемых за один командный цикл работы процессора.

Команды этой системы имеют максимальное быстродействие, но очень неудобны для создания программ даже средней сложности, так как даже достаточно простые манипуляции с двоичными числами приходится выполнять, используя подпрограммы и процедуры; RISC (Reduced Instruction Set Computer) — система, состоящая из сокращенного набора команд.

Простейший набор команд этой системы дополнен командами, которые выполняются за два командных цикла; CISC (Complex Instruction Set Computer) — наиболее полная система команд, которая включает в себя и простейшие, и сложные многоцикловые команды.

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

Командный цикл процессора — это время, как правило измеряющееся в числе тактовых импульсов, за которое выполняется одна конкретная инструкция.

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

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

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

С помощью этого оператора можно создать необходимую временную задержку в работе программы без загрузки таймера и без использования прерывания.

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

Команды, работающие с регистрами, имеют следующий формат:

МЕТКАДИРЕКТИВАРЕГИСТР источник данныхРЕГИСТРхранения результата

«МЕТКА» представляет собой символьное или цифровое обозначение адреса данной команды, она ставится в случае, если к этой команде необходимо перейти при выполнении ветвления программы. «ДИРЕКТИВА» — мнемокод команды.

«РЕГИСТР источник данных» — адрес области памяти или заявленное имя регистра, где размещаются данные, над которыми проводится операция.

«РЕГИСТР хранения результата» — адрес области памяти или заявленное имя регистра, куда будет помещен результат проводимой операции.

Если команда производит операции побитно, то в ее формате указывается номер этого бита:

МЕТКАДИРЕКТИВАРЕГИСТР источник данныхНОМЕР БИТА

Результат выполнения команды в этом случае заносится в регистр, который является источник данных.

Синтаксис команд перехода более простой:

МЕТКАДИРЕКТИВАМЕТКА перехода

«МЕТКА перехода» — адрес команды (в области памяти ППЗУ), которая будет выполняться следующей. Причем метка может быть оформлена как набором символов, так и непосредственно указанием адреса строки программы, к которой осуществляется переход.

Команда перехода может и не содержать адреса, по которому следует перейти программе. К таким командам относятся команды выхода из подпрограммы. Ветвление при этом осуществляется по адресу, записанному в стеке.

К дополнительным командам можно отнести, например, сброс таймера Watchdog или команду перехода в «спящий» режим процессора.

Микроконтроллеры

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

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

Блок-схема микроконтроллера изображена на рис. 5.93.

Рис. 5.93. Блок-схема микроконтроллера

Микроконтроллеры предназначены для управления различными электронными и электротехническими устройствами.

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

) с центральным процессором. Поистине область применения микроконтроллеров сегодня необъятна.

К основным параметрам микроконтроллера, кроме перечисленных выше, присущих микропроцессорам, можно отнести перечень и характеристики портов ввода/вывода информации: разрядность цифровых шин входа/выхода; число каналов ввода аналоговой информации (число АЦП); число и разрядность ЦАП; наличие и характеристики ШИМ-формирователей; наличие и характеристики входных компараторов; наличие и характеристики преобразователей параллельного цифрового кода в последовательный; поддержка микроконтроллером стандартных протоколов обмена информацией (USB, UART, IEEE1394 и т.д.).

Page 3

  • 1. Арестов К.А. Основы электроники и микропроцессорной техники. М.: Колос, 2001.
  • 2. Баранова А.В., Обухов В.И., Ямпурин Н.П. Электроника. М.: Академия, 2011.
  • 3. Богомолов С.А. Основы электроники и цифровой схемотехники: Учебник для студентов учреждений среднего профессионального образования. М.: Академия, 2015.
  • 4. Бриндли К, КаррДж. Справочник инженера электронной техники: Пер. с англ. М.: Додэка-ХХ1, 2002.
  • 5. Гусев В. Г., Гусев Ю.М. Электроника и микропроцессорная техника: Учебник. М.: КноРус, 2016.
  • 6. Димирчян К.С., Нейман Л.Р., Коровкин Н.В., Чечурин В.Л. Теоретические основы электротехники: Учебник для вузов. СПб.: Питер, 2003.
  • 7. Ефимов И.П. Источники питания: Учеб, пособие. Ульяновск: Изд-во УлГТУ, 2002.
  • 8. Захвалинский В.С. Электроника: Учеб, пособие. Белгород: БелГУ, 2006.
  • 9. Лачин В.И., Савелов Н.С. Электроника: Учеб, пособие. Ростов н/Д: Феникс, 2002.
  • 10. Опадчий Ю.Ф., Глудкин О.П., Гуров А.И. Аналоговая и цифровая электроника. М.: Горячая линия, 2005.
  • 11. Прянишников В.А. Электроника: Курс лекций. СПб.: Корона Принт, 2004.
  • 12. Ситников А. В., Ситников И.А. Электротехнические основы источников питания: Учебник. М.: КУРС: ИНФРА-М, 2017.
  • 13. Ткаченко Ф.А. Электронные приборы и устройства: Учебник. М.: ИНФРА-М, 2011.
  • 14. Шишкин Г.Г. Электроника: Учебник. М.: Дрофа, 2009.

Источник: https://studref.com/671324/prochie/sistema_preryvaniy_mikroprotsessora

Системные прерывания грузят процессор на Windows 10: что это за процесс и как решить проблему

Когда цп может начать программу прерывания

Многие пользователи сталкиваются с аномальной нагрузкой на центральный процессор от «Системных прерываний». Что это за процесс и для чего его придумали разработчики Windows? Как исправить ситуацию с нагрузкой? Рассмотрим сегодня действенные методы решения.

Что такое «Системные прерывания» и как они себя проявляют

Процесс «Системные прерывания» не имеет основы в виде какой-либо программы или сервиса (исполняемого файла, который находится на жёстком диске ПК).

Это стандартный виртуальный процесс, который исполняет важную роль индикатора: он показывает, что система работает со сбоями и нарушениями.

Чем выше процент загрузки центрального процессора (ЦП) от «Системных прерываний», тем серьёзнее проблема. Нормальное значение для процесса — не более 5%.

Почему «Системные прерывания» Windows 10 грузят процессор

По какому принципу работает процесс? Что он конкретно выявляет? Когда любая утилита запускается на компьютере, она начинает использовать его аппаратные ресурсы: материнскую плату, жёсткий диск, оперативную память (ОЗУ), видеокарту и другое.

В том случае если драйверы на эти устройства отсутствуют или устарели либо повреждён сам аппарат, ЦП даёт дополнительные ресурсы для обработки тех действий, с которыми не справляется повреждённое устройство в обычном режиме.

Таким образом, он компенсирует эти недостатки в виде необновлённых драйверов и некорректно работающих аппаратных частей ПК. Об этом дополнительном расходе ресурсов и оповещает процесс «Системные прерывания».

Процесс «Системные прерывания» не должен нагружать ЦП более, чем на 5%; в ином случае необходимо решать проблему

Данный процесс нагружает ЦП также по следующим причинам:

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

Проверка оборудования

Просто отключить «Системные прерывания» в окне «Диспетчера задач» нельзя, так как это может привести к сбою в системе, но никак не к решению проблемы. Исправлять ситуацию необходимо иным образом — проверкой аппаратной части ПК, с которой, как правило, и связана большая нагрузка от процесса.

Программы для проверки прерываний

Убедиться в том, что причиной является некорректно работающее оборудование (звуковая карта, «оперативка», видеокарта и т. д.), помогут специальные утилиты.

LatencyMon: эффективный инструмент для диагностики устройств

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

LatencyMon эффективно сканирует процессы и драйверы для определения неполадок

Загрузить программу можно из официального источника компании-разработчика Resplendence Software Projects. Утилита подходит для версий Windows от «семёрки» и выше. Файл установщика весит не более 2,4 МБ. Минус утилиты в том, что её интерфейс на английском языке. Пользоваться ей можно бесплатно.

DPC Latency Checker: бесплатное приложение, не требующее установки

Утилита DPC Latency Checker позволяет обнаружить максимальную задержку DPC в системе Windows конкретного пользователя. Приложение помогает определить текущие возможности вашего компьютера: сканируется аудиопоток, видеопоток и последовательность измеряющихся данных.

В окне DPC Latency Checker вы можете убедиться, что драйвер одного или нескольких устройств работает некорректно

Если есть какие-либо сбои в работе ПК, рекомендуется использовать это приложение в качестве средства для диагностики.

Его разработчик, компания Thesycon, позаботилась о том, чтобы клиентам Windows было удобно им пользоваться: инструмент не требует установки. Достаточно просто скачать файл утилиты и запустить.

После этого программа тут же запустит сканирование.

Загрузить утилиту можно с официального сайта. Файл весит около 1 МБ. У программы бесплатная лицензия, то есть использование оплачивать не нужно. Утилита подходит для работы во всех версиях Windows, включая XP и Vista.

Что делать, если «Системные прерывания» Windows 10 грузят процессор

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

Из-за устаревшей базовой системы ввода-вывода (BIOS) процесс «Системные требования» может начать потреблять ресурсов больше нормы. В данном случае решение — апдейт BIOS.

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

Например, для плат MSI создана программа Live Update, которая способна автоматически сама найти обновления для вашего BIOS, а затем загрузить и установить их. В её простом интерфейсе разберётся даже начинающий пользователь ПК:
  1. Переходим на официальный сайт материнской платы MSI. Кликаем по «Загрузить Live Update 6».Нажмите на ссылку «Загрузить Live Update 6», чтобы скачать установщик программы
  2. Запускаем скачанный архив и запускаем файл для инсталляции.
  3. Следуем простым инструкциям в «Мастере установки».
  4. После успешной инсталляции открываем приложение и переходим на вкладку BIOS Update. Кликаем по Scan Now, чтобы запустить поиск доступных обновлений.Подождите, пока утилита найдёт подходящие для вашего BIOS обновления
  5. Если утилита их обнаружит, нажимаем на Total Installer.Выберите обновление и нажмите на Total Installer
  6. В следующем окне указываем, в каком режиме необходимо провести апдейт BIOS: в режиме DOS или Windows. Если у вас нет загрузочной флешки для DOS объёмом не более 4 ГБ, то установите Windows в качестве режима.Выберите режим In Windows mode, если у вас нет под рукой флешки, и нажмите на Next
  7. В следующем окне нажмите на Close all listed programs. После этого жмём на Start, чтобы система начала апдейт BIOS. Когда процедура завершится, компьютер автоматически перезапустится.

Отключение всех звуковых и визуальных эффектов

Лишняя нагрузка на процессор, о которой свидетельствует большой процент «Системных прерываний», может быть из-за включённых звуковых и визуальных эффектов Windows. В этом случае необходимо их деактивировать. Начнём со звуковых настроек:

  1. Сначала необходимо зажать на клавиатуре сочетание из двух клавиш: Win + R. В строке вводим простой код control. Это вызовет окно «Панель управления».Введите команду control и нажмите на ОК
  2. Ищем раздел «Звук». Если у вас стоит значение «Мелкие значки» в правом верхнем углу, он будет третьим в пятом столбце. Кликаем по нему один раз левой кнопкой мышки.Кликните один раз по пункту «Звук» в пятом столбце
  3. Выбираем устройство воспроизведения звука, которым вы пользуетесь в текущий момент. В данном случае это «Динамики». Кликаем по пункту дважды либо нажимаем на кнопку «Свойства», расположенную под списком.Выберите устройство для вывода звука и нажмите на «Свойства»
  4. В новом окне переходим сразу на третью вкладку «Улучшения». Убираем отметки со всех пунктов. Теперь жмём на «Применить», а потом на ОК, чтобы окно исчезло с экрана.Во вкладке «Улучшения» снимите галочки со всех эффектов и нажмите на «Применить»

Перейдём теперь к деактивации визуальных эффектов:

  1. На «Рабочем столе» двойным кликом запускаем стандартный ярлык «Этот компьютер» — откроется окно «Проводник Windows», в котором будут все доступные в данный момент жёсткие диски и съёмные устройства.
  2. Кликаем правой клавишей по полю, свободного от записей. В перечне жмём на последний элемент «Свойства».В контекстном меню щёлкните по «Свойства»
  3. В левой части нового окна кликаем по ссылке «Дополнительные параметры системы».Нажмите на ссылку «Дополнительные параметры системы»
  4. Во вкладке «Дополнительно» нажимаем на первую кнопку «Параметры», которая находится в блоке «Быстродействие».Нажмите на кнопку «Параметры» в блоке «Быстродействие»
  5. В новом окошке во вкладке «Визуальные эффекты» сразу ставим круглую отметку рядом со значением «Обеспечить наилучшее быстродействие».
  6. Вы заметите, что галочки исчезли со всех пунктов в перечне ниже. Единственный эффект, который необходимо оставить — «Сглаживание неровностей экранных шрифтов».Оставьте только один эффект в списке — «Обеспечить наилучшее быстродействие»
  7. Кликаем по «Применить», чтобы все изменения начали действовать, а затем по ОК, чтобы закрыть окно.

Обновление драйверов и исключение неисправного оборудования

Чтобы определить, является ли некорректная работа какого-либо устройства причиной большого процента «Системных прерываний», необходимо использовать специальные утилиты, о которых мы рассказывали в разделе «Программы для проверки прерываний» в этой статье. Для примера возьмём приложение DPC Latency Checker:

  1. Загрузите файл утилиту из официального источника (нажимаем на ссылку Download dpclat.exe и ждём завершения закачки).Кликните по ссылке Download dpclat.exe, чтобы загрузить файл программы
  2. Запускаем скачанный файл — утилита тут же начнёт сканировать систему.
  3. Дождитесь окончания процесса диагностики.
  4. Если приложение обнаружит какие-либо неправильно работающие компоненты, она сообщит об этом в окошке под диаграммой.
  5. Если диаграмма содержала только зелёные колонки, искать причину в оборудовании не нужно.Если столбцы только зелёного цвета и невысокие, проверять, какое оборудование нагружает процесс «Системные прерывания», не нужно
  6. В том случае если в окошке появляются жёлтые и красные столбцы, необходимо переходить в «Диспетчер устройств» и искать оборудование, которое некорректно функционирует.Если в окне появляются жёлтые и красные столбцы, начинайте проверку оборудования в «Диспетчере устройств»
  7. Отыщите диспетчер через «Поиск Windows». Кликните по иконке в виде лупы на «Панели задач», а затем напечатайте соответствующий запрос. Система будет давать вам подсказки и показывать предполагаемые результаты по мере ввода запроса.Найдите в «Поиске Windows» «Диспетчер устройств»
  8. В окне диспетчера вам необходимо по одному отключать устройства и проверять после этого нагрузку на ЦП от «Системных прерываний». Важно не отключать оборудование «Компьютер», «Системные устройства» и «Процессор», так как это может привести к немедленному завершению работы ПК и проблемам с его повторным запуском. Для отключения используем контекстное меню пунктов, которое вызывается правой клавишей мышки. В нём мы выбираем «Отключить устройство».Нажмите на «Отключить устройство» в контекстном меню одного из драйверов
  9. Если вы нашли драйвер устройства, после деактивации которого «Системные прерывания» перестали нагружать процессор, обновите его. Для этого кликните по нему правой клавишей и в уже знакомом меню щёлкните по «Обновить драйвер».
  10. В окне, которое открылось поверх диспетчера, выбираем ссылку «Автоматический поиск обновлённых драйверов».Нажмите на ссылку «Автоматичсекий поиск обновлённых драйверов»
  11. Запустится поиск доступного в данный момент апдейта.Подождите, пока завершится поиск драйверов
  12. Если его не будет, система сообщит, что актуальные драйверы уже находятся на компьютере.Система может выдать сообщение о том, что все подходящие обновления для драйверов уже установлены
  13. Если обновления будут, система их самостоятельно загрузит и установит.
  14. Если вы не нашли, какое устройство влияет на рассматриваемый процесс, обновите драйверы этим же методом для трёх пунктов, которые мы запретили вам отключать.

Проверка жёсткого диска на ошибки

Аномальная нагрузка от «Системных прерываний» может быть из-за наличия ошибок на жёстких дисках. Чтобы проверить и исправить их, сделайте следующее:

  1. С помощью иконки «Этот компьютер», которая должна располагаться у вас на «Рабочем столе», запустите на экране «Проводник Windows», где будут отображаться все жёсткие диски вашего устройства.
  2. Кликаем по системному диску правой клавишей мышки и в перечне кликаем по последней опции «Свойства».Нажмите на пункт «Свойства» в контекстном меню системного жёсткого диска
  3. В новом окошке переключаем сразу на вторую вкладку «Сервисы». Там нажимаем на кнопку «Проверить диск». Система запустит проверку на наличие ошибок на диске.Нажмите на кнопку «Проверить», чтобы запустить сканирование
  4. На экране может сразу появиться окно о завершении сканирования. В этом же окошке нажмите на «Проверить диск», чтобы повторить сканирование. Повторная проверка может обнаружить ошибки.Нажмите на «Проверить диск», чтобы запусить повторное сканирование
  5. Подождите, пока завершится вторая диагностика.Подождите, пока завершится сканирование жёсткого диска
  6. Если система ничего не обнаружит, она сообщит вам об этом. В окошке кликните просто по «Закрыть».Ошибки во время сканирования диска не были обнаружены
  7. Если будут выявлены ошибки, система их исправит.
  8. Таким же образом просканируйте другой жёсткий диск вашего компьютера.

Проверка батареи

Большая нагрузка от «Системных прерываний» может наблюдаться у ноутбуков с сильно посаженной батареей. Если её текущая ёмкость сильно отличается от той, что была сразу после покупки, её необходимо заменить. После этого процесс перестанет отнимать системные ресурсы.

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

Если она выявит неполадки в работе, можно смело отключать по очереди устройства, чтобы найти «виновника». Исправить ситуацию также поможет обновление BIOS, деактивация звуковых и визуальных эффектов, а также проверка жёстких дисков на наличие ошибок.

  • Екатерина Васильева
  • Распечатать

Источник: https://winda10.com/optimizatsiya/sistemnyie-preryivaniya-gruzyat-protsessor-windows-10.html

Организация прерывания процессора

Когда цп может начать программу прерывания

В процессе выполнения любой программы как внутри ЭВМ, так и во внешней среде (машины, используемые для управления некоторыми объектами), могут возникать некоторые события, которые требуют немедленной, определенной для этого события реакции, как со стороны ЭВМ, так и со стороны программы. ВМ временно прекращают выполнение текущей программы, переходит к выполнению некоторой другой программы, специально предусмотренной для этого случая, а по завершении специальной программы ЭВМ возвращается к выполнению исходной программы. Такой процесс перехода к специальным программам и обратно носит названия прерывание, причем исходная программа называется прерванной, а специальная программа – прерывающая. Различного рода сигналы, которые информируют ЭВМ о наступлении события, носят название запроса прерывания. Любое прерывание текущей программы заключается в том, что:

1) Процессор прекращает ее выполнение

2) Запоминает информацию, нужную для продолжения выполнения программы с точки прерывания.

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

4) После исполнения специальной программы, управление возвращается исходной программе.

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

Моменты возникновения других событий можно заранее предсказать. При многократном использовании программы эти события будут возникать в одно время (операции обмена, переполнения) – синхронные события. Самые сложные события асинхронные. Для организации правильной работы основной и прерывающей программы нужно управление. Эта координация реализуется системами прерывания.

Основными функциями являются следующие:

– временной останов выполняющей программы и выбор запроса на обслуживание

– запоминание состояния прерванной программы

– инициирование программ – обработчиков прерывания

– обслуживание – выполнение прерывающей программы

– восстановление состояния прерывающей программы и возврат к выполнению исходной программы

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

Временная диаграмма:

Любой запрос на прерывание формируется по соответствующей причине. Обычно: IR [0:n] – регистр прерывания. От момента выработки запроса до момента прерывания существует некоторое время, время реакции системы прерывания. Любой запрос фиксируется в фиксированном бите слова регистра прерывания. Время реакции в общем случае не постоянно.

Оно зависит не только от того, как выпускаются допустимые моменты прерывания, но и от того, Сколько программ с более высоким приоритетом, чем прерывание ждет своего обслуживание в очереди. В ЭВМ используются различные способы определения допустимого момента прерывания.

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

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

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

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

Выбор запроса на обслуживание – вторая часть задачи. Запросы поступают в любой момент времени, следовательно, к моменту, когда может быть разрешено прерывание в регистре запроса может находиться несколько запросов (по крайней мере два). Возникает задача выбора запроса на обслуживание. Любой запрос в компьютере снабжается своим приоритетом. Обычно в качестве приоритета берут 0,1,…

n. Степень важности обработчика пропорционален номеру (0 – самый высокий приоритет). Порядок выбора запросов определяется дисциплинами обслуживания. По способу исполнения приоритетов различаются дисциплины с абсолютными и относительными приоритетами.

Если к моменту разрешения прерывания выбранный запрос оказывается выше приоритета текущей программы, то возможно два варианта действия:

– текущая программа прерывается в тот момент, когда выбран приоритетный запрос (дисциплины с абсолютным приоритетом);

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

Независимо от вида приоритета в конкретной системе прерывания процедура обработки запроса может быть представлена:

Функции могут реализовываться как программно, так и аппаратно. Программная реализация увеличивает время обслуживания прерывания. Максимальное время – выявление активного запроса в соответствии в соответствии с приоритетом нужно построить процедуру, которая должна из n запросов выявить приоритетный.

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

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

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

Существует два способа программного управления приоритетами прерывающих программ:

1) Любая текущая, выполняемая в данный момент программа, характеризуется некоторым кодом (приоритетом программы). В этом случае система прерывания после выявления активного запроса сравнивает приоритет этого запроса с порогом приоритета, выполняемой программы.

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

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

2) Маскирование. В систему прерывание кроме индикатора (программно не доступен) вводится регистр маскирования, который доступен программно (т.е. можно загружать в него данные). Имеет аналогичную индикатору структуру. Любой запрос индикатора поставлен в соответствующий бит маски. Взаимодействие запросов прерывания и битов маскирования строятся по простой схеме:

M [i] – маска

IR [i] Если в бите маски 1, следовательно, соответствующее прерывание разрешено для обработки (для выявления), если 0, следовательно, соответствующее прерывание замаскировано (не разрешено). Изменяя маску, можем управлять приоритетом запросов на программном уровне. Схема взаимодействия:

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

Поскольку маскирование отдано в руки пользователя, следовательно, могут возникать следующие ситуации при управлении масками:

Фактически управления нет

Если маски прерывания программистом фиксируются.

Другой вариант:

Перераспределены приоритеты

Поскольку запросу поступают асинхронно (не связаны с работой компьютера), то в некоторый момент времени в системе прерывания поступили 4 запроса. IR0 менее приоритетна чем IR2, переход к IR2 от IR2 переход к IR1 от IR1 переход к IR0 от IR0 переход к IR2, следовательно, зацикливание.

Источник: https://studopedia.su/3_26127_organizatsiya-prerivaniya-protsessora.html

Прерывания и особые случаи

Когда цп может начать программу прерывания

Аннотация: Цель лекции: изучение функционирования системы прерываний микропроцессорной системы.

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

Механизм прерывания обеспечивается соответствующими аппаратно-программными средствами компьютера.

Классификация прерываний представлена на рис. 7.1.

Рис. 7.1. Классификация прерываний

Запросы аппаратных прерываний возникают асинхронно по отношению к работе микропроцессора и связаны с работой внешних устройств.

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

Для запросов маскируемых прерываний используется вход INT микропроцессора. Обработка запроса прерывания по данному входу может быть заблокирована сбросом бита IF в регистре флагов микропроцессора.

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

Они связаны с особыми ситуациями, возникающими при выполнении программы (отсутствие страницы в оперативной памяти, нарушение защиты, переполнение), то есть с теми ситуациями, которые программист предвидеть не может, либо с наличием в программе специальной команды INT n, которая используется программистом для вызова функций операционной системы либо BIOS, поддерживающих работу с внешними устройствами. В дальнейшем при обсуждении работы системы прерываний мы будем употреблять единый термин “прерывание” для аппаратных прерываний и исключений, если это не оговорено особо.

Программные прерывания делятся на следующие типы.

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

Ловушка – особый случай, который обнаруживается после окончания выполнения команды (например, наличие в программе команды INT n или установленный флаг TF в регистре флагов ). После обработки этого прерывания выполнение программы продолжается со следующей команды.

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

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

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

Обработка запросов прерываний состоит из:

  • “рефлекторных” действий процессора, которые одинаковы для всех прерываний и особых случаев и которыми программист управлять не может;
  • выполнения созданного программистом обработчика.

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

Тип прерывания для программных прерываний вводится изнутри микропроцессора; например, прерывание по отсутствию страницы в памяти имеет тип 14. Для прерываний, вызываемых командой INT n, тип содержится в самой команде. Для маскируемых аппаратных прерываний тип вводится из контроллера приоритетных прерываний по шине данных. Немаскируемому прерыванию назначен тип 2.

Всего микропроцессор различает 256 типов прерываний. Таким образом, все они могут быть закодированы в 1 байте.

“Рефлекторные” действия микропроцессора по обработке запроса прерывания выполняются аппаратными средствами МП и включают в себя:

  • определение типа прерывания ;
  • сохранение контекста прерываемой программы (некоторой информации, которая позволит вернуться к прерванной программе и продолжить ее выполнение). Всегда автоматически сохраняются как минимум регистры EIP и CS, определяющие точку возврата в прерванную программу, и регистр флагов EFLAGS. Если вызов обработчика прерывания проводится с использованием шлюза задачи, то в памяти полностью сохраняется сегмент состояния TSS прерываемой задачи;
  • определение адреса обработчика прерывания и передача управления первой команде этого обработчика.

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

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

Таблица векторов прерываний (рис. 7.2) располагается в самых младших адресах оперативной памяти, имеет объем 1 Кбайт и содержит 4байтные элементы ( векторы прерываний ) для 256 обработчиков прерываний.

Старшие 2 байта вектора загружаются в сегментный регистр команд CS, а младшие 2 байта – в регистр указателя команд IP. Обращение к элементам таблицы осуществляется по 8-разрядному коду – типу прерывания.

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

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

Рис. 7.2. Таблица векторов прерываний

Обращение к IDT аналогично обращению к глобальной таблице дескрипторов, где вместо системного регистра GDT R используется регистр IDTR, который определяет размер и базовый адрес таблицы в памяти.

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

Рис. 7.3. Порядок обращения к таблице дескрипторов прерываний

Содержимое регистра IDTr не сохраняется в сегментах TSS и не изменяется при переключении задачи. Программы не могут обратиться к IDT, так как единственный бит TI индикатора таблицы в селекторе сегмента обеспечивает выбор только между таблицами GDT и LDT.

Максимальный предел таблицы дескрипторов прерываний составляет 256*8 – 1 = 2047.

Можно определить предел меньшим, но это не рекомендуется. Если происходит обращение к дескриптору вне пределов IDT, процессор переходит в режим отключения до получения сигнала по входу NMI или сброса.

В IDT могут храниться только дескрипторы следующих типов:

  • шлюз ловушки,
  • шлюз прерывания, шлюз задачи.

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

Рис. 7.4. Формат шлюзов ловушки и прерывания

Бит S = 0 в байте доступа определяет этот дескриптор как системный объект. Если поле ТИП в байте доступа равно 1110, то это шлюз прерывания, если 1111 – то шлюз ловушки.

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

Бит присутствия P может быть равен как 0, так и 1.

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

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

При входе в обработчик через шлюз ловушки флаг IF не меняется.

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

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

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

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

Источник: https://intuit.ru/studies/courses/604/460/lecture/10333?page=1

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.