Как ожидающие исключения управляются спецификацией RISC-V? - PullRequest
2 голосов
/ 31 мая 2019

Я работаю со спецификацией RISC-V и имею проблему с ожидающими прерываниями / исключениями.Я читаю версию 1.10 тома II, опубликованную 7 мая 2017 года.

В разделе 3.1.14, описывающем регистры mip и mie, сказано, что:

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

До этой точкиЯ думал, что исключения, например, исключение смещения инструкций с ошибкой в ​​инструкции JAL / JALR, будут немедленно обработаны ловушкой, потому что а) нет способа продолжить выполнение вашего потока инструкций и б) нет описанияо том, как исключение может ожидаться, то есть в спецификации не описаны понятия, которые могли бы управлять состоянием для исключений (например, регистров, подобных mip, но для исключений).

Однако приведенный выше абзац указывает на что-торазные.Мои вопросы:

  1. Существуют ли ожидающие исключения в RISC-V?
  2. Если да, как это возможно, что исключение все еще может быть обработано после обработки прерывания и не 'Т забыли?

1 Ответ

1 голос
/ 01 июня 2019

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

...