Прерывания и особые ситуации: Типы и средства индикации SIMD-исключений |
Программирование - Архитектура и система команд микропроцессоров x86 | |||
Исключения SIMD генерируются процессором при выполнении SIMD-команд и имеют аналогичную исключениям FPU классификацию. Однако методика сообщения о возникновении SIMD-исключений существует одна — через внутреннюю генерацию прерывания (никаких MS-DOS режимов для SIMD-исключений не предусматривается). В то же время процессор поддерживает два режима генерации прерывания:
При выполнении SIMD-команд помимо SIMD-исключений могут генерироваться самые разнообразные особые ситуации, связанные с проблемами при обращениях к памяти (#PF, #GP, #SS и т.п.). Обработчики особых ситуаций могут в этом случае функционировать точно также, как это происходит при обработке особых ситуаций, вызванных стандартными командами CPU. Перед демаскированием SIMD-исключений пользовательские программы должны проверять — поддерживается ли операционной системой обработка этих исключений. Существует шесть типов исключительных ситуаций SIMD:
Эти исключения полностью совпадают с исключениями FPU и генерируются при аналогичных условиях. Механизм индикации SIMD-исключений также очень похож на механизм индикации исключений FPU. Он базируется на шести маскирующих битах и шести флагах индикации исключений, которые расположены в регистре MXCSR. По умолчанию все SIMD-исключения замаскированы (все соответствующие биты маски в MXCSR установлены). В этом случае, при возникновении ситуации, которая приводит к генерации исключения, соответствующий флаг в регистре MXCSR устанавливается, а в качестве результата операции принимается предопределенное значение, выполнение программы продолжается. По окончании вычислений пользовательская программа может сама проанализировать флаги исключений для выявления произошедших ошибок. Второй вариант обработки SIMD-исключений предполагает их демаскирование и, соответственно, генерацию прерывания 19 (#XM) при возникновении любого из демаскированных исключений. В этом случае реакция на возникновение исключения задается программой обработчиком особой ситуации #XM, которая определяет тип возникшего исключения по значению флагов в регистре MXCSR.
|
Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru