Виды прерываний по способу обработки шинами данных

Понятие прерывания. Виды прерываний. Схемы обработки.

Прерывание – прекращение линейного выполнения задач и принудительная передача управления от выполняемой программы ОС-ме при возникновении какого-либо события.

Этапы обработки прерывания:

1) Установление факта прерывания и его идентификация; 2) Запоминание состояния прерванного процесса (аппаратное сохранение); 3) Передача управления в обработчик прерывания; 4) Программное сохранение информации о прерванном процессе; 5) Обработка прерываний; 6) Программное восстановление контекста прерванного процесса; 7) Возврат управления прерванной программе (аппаратное восстановление).

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

Прерывания можно разделить на 2 основные группы:

1) Внешние (асинхронные) – возникающие вне МП (прерывания клавиатуры, таймера и других внешних устройств);

2) Внутренние (синхронные) – возникающие внутри МП и являющиеся синхронными с его операциями (деление на 0, нарушение правила адресации и пр.).

Виды прерываний по способу обработки шинами данных

Зачастую прерывания можно использовать для обращения к супервизору ОС (21h). Однако такая схема используется только в самых простых программных средах. В современных ОСр управление супервизором происходит по другим схемам.

Основные функции механизма прерываний: 1) распознавание и классификация прерываний; 2) передача управления обработчику; 3) корректный возврат в прерванную программу.

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

Физическая структура микропроцессора

Физическая структура микропроцессора достаточно сложна. Ядро процессора содержит главный управляющий и исполняющие модули — блоки выполнения операций над целочисленными данными. К локальным управляющим схемам относятся: блок плавающей запятой, модуль предсказания ветвлений, модуль преобразования CISC-инструкций во внутренний RISC-микрокод, регистры микропроцессорной памяти (в МП типа VLIW до 256 регистров), регистры кэш памяти 1-го уровня (отдельно для данных и инструкций), шинный интерфейс и многое другое.

В состав микропроцессора Pentium обычно входят следующие физические компоненты:

Execution Unit — исполняющий модуль;

Integer ALU — АЛУ для операций с целыми числами (с фиксированной запятой);

Floating Point Unit — блок для работы с числами с плавающей запятой;

Primary Cache — кэш первого уровня, в том числе кэш данных (Data Cache) и кэш команд (Code Cache);

Instruction Decode and Prefetch Unit и Branch Predictor — блоки декодирования инструкций, опережающего их исполнения и предсказания ветвлений;

Bus Interface — интерфейсные шины, в том числе 64- и 32-битовая, и выход на системную шину к оперативной памяти.

Функционально МП можно разделить на две части:

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

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

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

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

В зависимости от способа приема и передачи двоичной информации различают параллельные, последовательные, последовательно-параллельные, параллельно-последовательные и универсальные регистры.

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

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

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

Читайте также: Шины в выксе досчатинское шоссе

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

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

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

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

Параллельные регистры. При построении параллельных регистров обычно используются простейшие асинхронные -триггеры и синхронные RS- и На рис. 6.22 представлены варианты параллельных регистров, отличающиеся типом триггеров и составом входных выходных информационных . Регистр на основе асинхронных -триггеров (рис. ) перед занесением очередного -разрядного числа входов требует предварительного сброса всех триггеров в нулевое состояние. Сброс производится сигналом . Ввод информации в регистр происходит по сигналу .

. Если на некотором входе , то н данный триггер (с инверсным управлением) переключается в состояние «1». Если на входе то триггер, сохраняет состояние . Вывод информации из регистра производится по сигналу , определяющему состояния выходов . Если , то на всех выходах устанавливаются уровни «логической 1», а при имеем . Основной недостаток данного регистра — необходимость предварительной очистки регистра, из-за чего обновление информации осуществляется за два такта.

В регистре также на основе асинхронных -триггеров предварительная очистка не требуется, поскольку обновление информации в нем происходят установкой триггеров состояние «1» и «0» за один такт.

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

На рис. 6.22,в показана схема параллельного регистра на основе синхронных -триггеров. Здесь в качестве входных используются логические элементы, входящие в схему -триггеров. Ввод информации происходит на интервале синхронизации при .

В качестве выходных использованы логические элементы И—ИЛИ—НЕ, которые формируют выходные сигналы согласно выражению

т. е. при информация из регистра выдается в прямом коде, а при — в обратном.

Если выражение (6.16) тождественно преобразовать к одной из форм

то выходную цепь регистра (рис. 6.22,в) можно реализовать на логических элементах ИСКЛЮЧАЮЩЕЕ ИЛИ (рис. 6.22,г). Выбор способа ввода информации в регистр или ее вывода обычно обусловлен требованиями быстродействия и условиями реализации регистра в цифровом устройстве.

Сдвигающие регистры. Рассмотрим последовательные, последовательно-параллельные и параллельно-последовательные регистры, которые должны выполнять операцию сдвига при последовательном вводе и/или выводе информации.

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

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

В остальном структуры, принцип работы и параметры данных регистров аналогичны. Ввод информации может производиться последовательно со входа X с последующим сдвигом информации вправо на один разряд по каждому синхроимпульсу С либо параллельно со входов А по сигналу асинхронной записи числа в предварительно очищенный региар (сигналом асинхронного сброса триггеров в состояние ) По положительному фронту синхроимпульса происходит запись информации со входов D и X в триггеры первых ступеней М. Выходные уровни триггеров при этом остаются неизменными (см. рис. 6.23,в). По отрицательному фронту синхроимпульса входы ступени М блокируются и записанная в них информация передается в триггеры ступени S. Происходит переключение выгодных уровней -трнггеров. Таким образом, реализуется чисто последовательный регистр со сдвигом числа вправо (показано стрелкой на рис. 6.23,в, вход — X, выход — ), последовательно-параллельный (вход — X, выходы — ) и параллельно-последовательный (входы — , выход — ). Кроме того, при замыкании выхода последнего разряда с последовательным входом X (штриховая линия) реализуется кольцевой сдвигающий регистр. Информация в кольцевой регистр вводится параллельным кодом со входов и затей циркулирует в замкнутом кольце под действием тактовых синхроимпульсов С.

Читайте также: Авто шины диски в брянске

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

В реверсивных сдвигающих регистрах для обеспечения возможности сдвига информации в обоих направлениях выход каждого разряда должен быть связан через логические элементы переключения направления сдвига со входами предыдущего и последующего разрядов. Пусть направление сдвига задается логическим уровнем сигнала Е так, что при осуществляется сдвиг вправо. , а при происходит сдвиг влево; . Тогда триггер реверсивного сдвигающего регистра должен управляться сигналом который формируется логическим элементом И—ИЛИ—НЕ (рис. 6.24, а) либо на логических элементах .

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

На рис. 6.25 показан вариант реверсивного сдвигающего регистра на основе -триггеров. Сигнал на входах определяется аналогично согласно выражению (6.17), а на выходах всегда благодаря инверторам во входных цепях.

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

Тогда входы D и С разряда определяются следующими логическими уравнениями:

Соответствующий сдвигающий регистр на основе -триггеров показан на рис. 6.26. Здесь — входы параллельного ввода информации, X — последовательный вход для сдвига вправо, Y — последовательный вход для сдвига влево.

Динамические регистры — регистры, для которых определена верхняя граница временного интервала хранения информации без восстановления. Чаще всего в них физическим носителем информации является заряд некоторой емкости или зарядовый пакет в объеме полупроводника [4; 14]. Для управления зарядом используют МДП-транзисторы, обладающие весьма большим сопротивлением в запертом состоянии Ом). Используя логические элементы на МДП-транзисторах, можно по заданному алгоритму управлять зарядом и напряжением на некоторой паразитной емкости.

На рис. показана схема -тактного динамического регистра на -МДП-транзисторах, каждый разряд которого выполнен на шести транзисторах . Каждый разряд содержит два тактируемых ключа на транзисторах соответственно — эквивалентные входные емкости ключей.

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

Видео:Лекция 11: ПрерыванияСкачать

Лекция 11: Прерывания

Прерывания для самых маленьких

Сегодня мы поговорим о прерываниях процессоров семейства x86 (-64). Подробнее под катом.
Прерывания — это как бы сигнал процессору, что надо прервать выполнение (их поэтому и назвали прерываниями) текущего кода и срочно сделать то, что указано в обработчике.

Все адреса обработчиков прерываний хранятся в IDT. Это таблица, в которой хранятся 256 (можно больше или меньше, но большие значения просто игнорируются) ячеек (векторы прерываний) с типом и атрибутами прерывания, одним просто нулевым значением, собственно адресом обработчика прерываний и селектором кода в GDT или LDT, который будет использовать данный вектор прерываний. Теперь немного о типе и атрибутах.
Тип прерывания и атрибуты занимают 8 бит. Первые 4 бита занимают тип:

  • 0b0101: 32-битный гейт задачи, при появлении такого прерывания происходит хардверное переключение задачи (да-да, есть и такое, но его уже давно не используют)
  • 0b0110: 16-битный гейт прерывания
  • 0b0111: 16-битный гейт trap’a (я не знаю, как это перевести на русский язык, извините)
  • 0b1110: 32-битный гейт прерывания
  • 0b1111: 32-битный гейт trap’a

Читайте также: Шины tigar чьи они

Далее идут атрибуты. Первым атрибутом является 1 бит, который задан в 0 для гейтов прерывания и в 1 для остальных. Далее идет уровень привилегий дескриптора — 2 бита, задающие минимальный уровень привилегий для вызова прерываний, и 1 бит, заданный в 0 для неиспользуемых прерываний.
Теперь о том, как процессор вызывает обработчики.
Допустим, что вы вызвали инструкцию int 0 в ассемблере. Это даст сигнал процессору, что надо вызвать прерывание 0, если это возможно. Вот последовательность действий, которые происходят при этом.

  1. Поиск вектора №0 в IDT.
  2. Сравнение уровня привилегий дескриптора и текущего уровня привилегий процессора.
  3. Если текущий уровень привилегий процессора меньше уровня привилегий дескриптора, то просто вызвать генеральную ошибку защиты и не вызывать прерывание.
  4. Происходит сохранение адреса возвращения, регистра (E)FLAGS и другой информации.
  5. Происходит переход на адрес, указанный в векторе №0 IDT.
  6. После выполнения обработчика инструкция iret возвращает управление прерванному коду.

Видео:ОПД #3-4. Ввод-вывод по прерываниюСкачать

ОПД #3-4. Ввод-вывод по прерыванию

Исключения

Еще есть прерывания, которые генерируются самим процессором при определенных обстоятельствах — исключения. Вот их список с краткими описаниями:

  • Деление на ноль. Генерируется при, собственно, делении на ноль.
  • Отладочное исключение. Генерироваться само не может, используется для, собственно, отладки.
  • Немаскируемое прерывание. Генерируется при ошибках ОЗУ и невосстановимых ошибках «железа». Их невозможно замаскировать с помощью PIC (Programmable Interrupt Controller — программируемый контроллер прерываний), так как оно идет сразу в процессор, минуя PIC, но можно просто отключить.
  • Точка останова. Тоже используется для отладки, потому что его опкод занимает всего 1 байт, в отличии от остальных INT N. Переназначалось DOS-отладчиками для своих целей.
  • Переполнение. Генерируется инструкцией INTO , если в (E)FLAGS включен бит переполнения.
  • Выход за пределы. Генерируется при ошибке инструкции BOUND.
  • Недопустимый опкод. Генерируется при попытке выполнения недопустимого кода операции.
  • Устройство недоступно. Сейчас не используется, генерировался при попытке использования операций с плавающей точкой на процессорах без FPU.
  • Double fault. Сложно перевести название. Ошибка невосстановима, происходит при невозможности вызвать обработчик исключения.
  • Переполнение сегмента сопроцессора. Больше не используется.
  • Недопустимый TSS. Сегмент состояния задачи задан неправильно.
  • Сегмент отсутствует. Возникает при попытке загрузки сегмента с битом Present == 0.
  • Ошибка сегмента стека. Возникает при попытке загрузки сегмента с битом Present == 0 или переполнении стека.
  • Общая ошибка защиты. Генерируется в очень большом числе случаев, среди них есть ошибка сегмента, попытка выполнения инструкции без необходимых прав, запись туда, куда не надо, попытка доступа к нулевому дескриптору GDT и многое другое.
  • Ошибка страницы. Происходит при чтении или записи в несуществующую страницу памяти, попытке доступа к данным без необходимых прав или другом.
  • Ошибка с плавающей точкой. Происходит при выполнении инструкции FWAIT или WAIT с битом №5 в CR0 == 0.
  • Ошибка при проверке на выравнивание. Происходит только в третьем кольце привилегий процессора, если эта ошибка, конечно, включена.
  • Ошибка при проверке машины. Генерируется процессором при обнаружении «железных» ошибок.
  • Исключение с плавающей точкой SIMD. Генерируется при ошибках с 128-битными числами с плавающей точкой.
  • Ошибка виртуализации.
  • Ошибка безопасности.
  • Тройная ошибка. По сути исключением не является, это даже не прерывание. Происходит при невозможности вызвать Double Fault. Вызывает немедленную перезагрузку компьютера.

Существует особый тип прерываний — IRQ (Interrupt ReQuest), или же аппаратные прерывания, но я буду их для краткости называть просто IRQ. Технически они почти не отличаются от любых других прерываний, но генерируются не процессором или самим кодом, а устройствами, подключенными к компьютеру. К примеру, IRQ №0 генерируется PIT (таймер с программируемым интервалом), IRQ 1 генерируется при нажатии клавиши на клавиатуре, а IRQ 12 — при действии с PS/2-мышью.

  • Свежие записи
    • Нужно ли менять пружины при замене амортизаторов
    • Скрипят амортизаторы на машине что делать
    • Из чего состоит стойка амортизатора передняя
    • Чем стянуть пружину амортизатора без стяжек
    • Для чего нужны амортизаторы в автомобиле

    📸 Видео

    Цифровые интерфейсы и протоколыСкачать

    Цифровые интерфейсы и протоколы

    STM32. Урок 12. NVIC. EXTI. Примеры внешних прерыванийСкачать

    STM32. Урок 12. NVIC. EXTI. Примеры внешних прерываний

    АПС Л11. Подсистема прерыванияСкачать

    АПС Л11. Подсистема прерывания

    Лекция "Интерфейсы (часть I). RS-232/422/485. SPI"Скачать

    Лекция "Интерфейсы (часть I). RS-232/422/485. SPI"

    Программное прерываниеСкачать

    Программное прерывание

    Как работает компьютер? Шины адреса, управления и данных. Дешифрация. Взгляд изнутри!Скачать

    Как работает компьютер? Шины адреса, управления и данных. Дешифрация. Взгляд изнутри!

    Ввод-вывод по запросу прерыванияСкачать

    Ввод-вывод по запросу прерывания

    Протокол обмена данными UARTСкачать

    Протокол обмена данными UART

    Введение в интерфейсы периферийных устройствСкачать

    Введение в интерфейсы периферийных устройств

    Протокол обмена данными 1-Wire (Microlan)Скачать

    Протокол обмена данными 1-Wire (Microlan)

    Уроки Ардуино. Прерывания по таймеруСкачать

    Уроки Ардуино. Прерывания по таймеру

    STM32. Заметка 4.3. Внешние прерывания. Приоритет обработки прерываний. ЭлектроХобби/Скачать

    STM32. Заметка 4.3. Внешние прерывания. Приоритет обработки прерываний. ЭлектроХобби/

    Теория и практика UART, I2C (TWI), SPI на arduino.Скачать

    Теория и практика UART, I2C (TWI), SPI на arduino.

    АКОС 5. Векторные инструкции. Прерывания. BIOS. ЯдроСкачать

    АКОС 5. Векторные инструкции. Прерывания. BIOS. Ядро

    Приемы разработки и практический пример на «1С:Шина» — 1C-RarusTechDay 2022Скачать

    Приемы разработки и практический пример на «1С:Шина» — 1C-RarusTechDay 2022
Поделиться или сохранить к себе:
Технарь знаток