Приоритет исключений

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

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

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

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

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

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

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

Приоритет типов исключений
Тип Имя исключения Имя соответствующего вектора
Аварии (Aborts)   Machine reset abort (RESET) Перезагрузка
  Machine check abort (CHECK) Проверка процессора
Внешние прерывания (Interrupts)   Initialization interrupt (INIT) ---
  Platform management interrupt (PMI) Прерывание от платформы (чипсет, плата)
  External interrupt (INT) Device, timer, other processor
Ошибки этапа выборки инструкций (fetch faults)   Instruction RID Access Rights fault Регистр региона не допускает исполнение
  Instruction TLB Alternate fault Промах в TLB инструкций (без VPT)
  Instruction VPT fault Ошибка VPT
  Instruction TLB fault Промах в TLB инструкций (после VPT)
  Instruction Page Not Present fault Страница инструкций отсутствует в физической памяти
  Instruction Key Miss fault Промах в кэш ключей защиты при выборке инструкций
  Instruction Key Permission fault Выборка команды из недоступной или охраняемой страницы виртуальной памяти
  Instruction Access Rights fault Выборка команды из страницы виртуальной памяти, для которой исполнение не разрешено
  Instruction Access Bit fault Выборка команды из страницы виртуальной памяти, для которой исполнение не разрешено
  Instruction Debug fault Попытка выполнить команду по адресу, который соответствует одному из адресных интервалов в регистрах отладки
Ошибки декодера инструкций (decode faults)   Illegal operation fault Зарезервированная инструкция
  Privileged operation fault Привилегированная команда
  Undefined operation fault Недопустимая форма инструкции
  Disabled Floating-point fault Запрещенная FP команда
  Unimplemented operation fault Нереализованная стандартная команда
  Unsupported operation fault Нереализованная выделенная команда
Ошибки этапа исполнения (execute faults)   Reserved register/field fault Недопустимое значение операндов
  Privileged register fault Косвенное обращение к привилегированному регистру
  Unimplemented data address fault Наличие ненулевых битов в нереализованных разрядах адреса
  Data RID Access Rights fault Регистр региона не допускает чтение или запись
  Data TLB Alternate fault Промах в TLB данных (без VPT)
  Data VPT fault Ошибка VPT
  Data TLB fault Промах в TLB данных (после VPT)
  Data page not present fault Страница данных отсутствует в физической памяти
  Data key miss fault Промах в кэш ключей защиты для данных
  Data key permission fault Запрет доступа в одном из ключей защиты
  Data access rights fault Обращение к странице виртуальной памяти с большим приоритетом
  Data access bit fault Обращение к странице виртуальной памяти неразрешенным способом, например чтение из страницы для которой чтение запрещено
  Data debug fault Обращение по адресу, который соответствует одному из адресных интервалов в регистрах отладки, способом (чтение или запись), который соответствует способу в регистре отладки
  Unaligned data reference fault Обращение к данным по невыровненному адресу
  Unsupported data reference fault Обращение к данным не поддерживается атрибутами памяти
  Integer divide by zero fault Целочисленное деление на ноль
  Floating-point fault Ошибка вещественных вычислений
Ловушки (traps)   Unimplemented Instruction Address trap Нереализованный адрес очередной связки команд
  Floating-point trap Вещественная команда требует вмешательства
  Lower-Privilege Transfer trap Смена уровня привилегий
  Taken branch trap Произошедший переход
  Single step trap Пошаговая отладка
  System call trap Системный вызов
  Break instruction trap Программная ловушка командой break

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: