Способ и устройство для обработки прерываний
Иллюстрации
Показать всеГруппа изобретений относится к области вычислительной техники и может быть использована для обработки прерываний в системах обработки данных. Техническим результатом является увеличение гибкости программного обеспечения обработки прерываний, в то же время, поддерживая безопасность устройства обработки данных. Устройство содержит множество системных регистров, содержащих набор регистров обработки прерываний для управления обработкой входящего прерывания; схему обработки, сконфигурированную для исполнения программного обеспечения на множестве уровней исполнения, схему контроллера прерываний, сконфигурированную для маршрутизации входящего прерывания в программное обеспечение обработки прерываний, сконфигурированное работать на одном из множества уровней исполнения; схему управления доступом к регистрам, сконфигурированную для динамического управления доступом к, по меньшей мере, некоторым из регистров обработки прерываний в зависимости от упомянутого одного из множества уровней исполнения, на который входящее прерывание маршрутизировано. 5 н. и 13 з.п. ф-лы, 8 ил., 1 табл.
Реферат
Область техники, к которой относится изобретение
Это изобретение относится к области обработки прерываний в системах обработки данных.
Уровень техники
Системы гипервизоров известны как работающие на множестве различных уровней исполнения. Уровни исполнения организуются в иерархию, при этом более высоким уровням исполнения дается большее число привилегий по отношению к системе обработки данных, чем более низким уровням исполнения. Типично, конкретный уровень исполнения способен выполнять любое действие и осуществлять доступ к данным, которые может выполнять более низкий уровень исполнения.
Виртуализированная система может работать с помощью четырех уровней исполнения. Пользовательское программное обеспечение может исполняться на самом низшем и наименее привилегированном уровне, EL0. Это программное обеспечение может включать в себя такие приложения, запускаемые пользователем в ежедневной работе, или программное обеспечение, которые не требуют каких-либо специальных привилегий для того, чтобы исполняться правильно.
На следующем высшем уровне, EL1, может исполняться операционная система. Типично, операционная система управляет множеством пользовательских приложений, которые работают под ней на EL0, и предоставляет доступ к аппаратным ресурсам для пользовательских приложений. Соответственно, операционная система, исполняющаяся в EL1, имеет повышенный уровень привилегий относительно EL0, поскольку она способна осуществлять доступ и управлять поведением пользовательских приложений, которые работают на EL0.
Гипервизор может работать в EL2. Гипервизор типично управляет числом, поведением и организацией ресурсов множества операционных систем, которые исполняются на EL1. Поскольку множество операционных систем могут состязаться за доступ к аппаратным ресурсам, гипервизор должен быть способен предоставлять или запрещать такие запросы доступа. Соответственно, гипервизор работает на более высоком уровне привилегий EL2 по сравнению с операционными системами, которые работают на EL1.
Системы обработки данных также известны как работающие во множестве режимов исполнения, таких как защищенное и незащищенное состояния. Предоставляя устройство обработки данных, которое может работать как в защищенном, так и незащищенном состоянии, возможно разделять выполнение безопасных операций от тех, которые являются небезопасными операциями. Кроме того, данные, которые рассматриваются как безопасные, могут храниться отдельно от данных, которые являются небезопасными. Следовательно, безопасные данные и безопасные операции могут быть изолированы от других данных и операций, которые могут рассматриваться как небезопасные. Следовательно, безопасность системы сохраняется. Системы гипервизоров могут также работать в защищенном и незащищенном режимах. В этих случаях каждый уровень исполнения может работать в одном или любом из защищенного и незащищенного режима.
Переключение между защищенным и незащищенным режимом должно управляться на самом защищенном и привилегированном уровне исполнения для того, чтобы гарантировать, что программное обеспечение, исполняющееся в незащищенном режиме работы, не может осуществлять доступ к данным, принадлежащим к защищенному режиму работы, а в некоторых случаях наоборот. Таким образом, может быть предоставлен уровень EL3, на котором работает монитор безопасности, который управляет этим переключением. Этот уровень EL3 является уровнем с наивысшей привилегией, обязанностью которого является определение того, когда требуется изменение режима, и осуществление этого требуемого изменения режима исполнения.
При обработке прерываний в системе, которая работает на множестве различных уровней исполнения, необходимо изолировать конкретные элементы хранения данных, которые используются во время обработки прерывания. Например, поднабор системных регистров может быть разделен так, что только программное обеспечение, работающее на уровне EL1 исполнения или выше, приспособлено осуществлять доступ к первому поднабору регистров, только программное обеспечение, работающее на уровне EL2 исполнения или выше, приспособлено осуществлять доступ к второму поднабору регистров, и только программное обеспечение, исполняющееся на уровне EL3 исполнения, приспособлено осуществлять доступ к третьему набору из поднабора регистров. Это разделение может быть выполнено и для защищенного, и для незащищенного режимов работы, когда это целесообразно. Такая изоляция гарантирует, что программное обеспечение, работающее на более низком уровне исполнения, не способно мешать или влиять на исполнение программного обеспечения, работающего на более высоком уровне исполнения.
Сущность изобретения
Согласно первому аспекту настоящего изобретения предоставляется устройство обработки данных, содержащее: множество системных регистров, содержащих набор регистров обработки прерываний для управления обработкой входящего прерывания; схему обработки, сконфигурированную исполнять программное обеспечение на множестве уровней исполнения, схему контроллера прерываний, сконфигурированную маршрутизировать входящее прерывание в программное обеспечение обработки прерывания, сконфигурированное работать на одном из упомянутого множества уровней исполнения; схему управления доступом к регистрам, сконфигурированную динамически управлять доступом к, по меньшей мере, некоторым из упомянутых регистров обработки прерываний в зависимости от упомянутого одного из упомянутого множества уровней исполнения, на который упомянутое входящее прерывание маршрутизировано, так, что программное обеспечение обработки прерываний, сконфигурированное работать на упомянутом уровне исполнения, имеет доступ к упомянутым, по меньшей мере, некоторым из упомянутых регистров обработки прерываний для обработки упомянутого входящего прерывания, и так, что упомянутое программное обеспечение обработки прерываний, сконфигурированное работать на упомянутом уровне исполнения, не имеет доступа к регистрам обработки прерываний для обработки второго входящего прерывания, маршрутизированного в программное обеспечение обработки прерываний, работающее на более привилегированном уровне исполнения.
В соответствии с вышесказанным, доступ к набору регистров обработки прерываний динамически управляется в зависимости от конкретного уровня исполнения, на который входящее прерывание маршрутизировано. Это контрастирует с известными системами, где программное обеспечение обработки прерываний, работающее на конкретном уровне исполнения, способно осуществлять доступ только к подмножеству конкретных, статически определенных регистров, и эти регистры определены для использования посредством любых более низких, менее привилегированных уровней исполнения. Это ограничение на доступ было предусмотрено, чтобы предохранять программное обеспечение, работающее на низком уровне привилегий, от столкновения с программным обеспечением, работающим на более высоком уровне привилегий. Следствием этого было то, что, если прерывание, намеченное для высокого уровня исполнения, было маршрутизировано в программное обеспечение обработки прерываний, работающее на низком уровне исполнения, прерывание не могло быть нормально обработано. Варианты осуществления настоящего изобретения устраняют это, предоставляя возможность доступа к набору регистров обработки прерываний, которые должны динамически управляться в зависимости от уровня исполнения адресата прерывания.
В системе, описанной выше, программное обеспечение обработки прерываний, которое работает на конкретном уровне исполнения, может иметь свой доступ к набору регистров в регистрах обработки прерываний, динамически изменяемый так, что конкретное входящее прерывание может быть обработано. Следовательно, достигается степень гибкости, поскольку входящее прерывание может быть обработано посредством программного обеспечения обработки прерываний, которое работает на произвольном уровне исполнения. Кроме того, поскольку программное обеспечение обработки прерываний, работающее на каждом уровне исполнения, имеет доступ только к системным регистрам, относящимся к входящим прерываниям, безопасность системы сохраняется. Другим преимуществом этой системы является то, что программное обеспечение может быть сделано более машинонезависимым, поскольку не существует требования для программного обеспечения обработки прерываний, которое работает на конкретном уровне исполнения, обрабатывать специфичное прерывание. Вместо этого любое прерывание может быть маршрутизировано в программное обеспечение обработки прерываний, работающее на другом уровне исполнения, где прерывание может все еще быть обработано. Еще дополнительным преимуществом вышеописанного является то, что возможно явно маршрутизировать прерывания в любое одно из незащищенного программного обеспечения, защищенной операционной системы или монитора безопасности по желанию. Гибкость такой системы, тем самым, улучшается посредством увеличения числа вариантов, доступных для обработки данного прерывания.
В некоторых вариантах осуществления множество уровней исполнения содержит EL0, EL1, EL2 и EL3. EL0 – это уровень исполнения, на котором пользователь исполняет программное обеспечение. EL1 – это более высоко привилегированный уровень исполнения, на котором исполняется гостевая операционная система. EL2 – это уровень исполнения, на котором исполняется гипервизор, который является более привилегированным, чем EL1. EL3 – это самый привилегированный уровень исполнения, где исполняется монитор безопасности. Отметим, что каждое из гостевой операционной системы, программного обеспечения гипервизора и монитора безопасности может включать в себя программное обеспечение обработки прерываний.
В некоторых вариантах осуществления доступ, предоставленный к регистрам обработки прерываний, может зависеть исключительно от того, на какой из уровней исполнения входящее прерывание маршрутизировано.
В некоторых вариантах осуществления схема обработки данных может дополнительно содержать схему определения режима работы процессора для определения текущего режима исполнения схемы обработки, входную схему, которая принимает входящие прерывания, намеченные для конкретного обработчика прерываний, который работает в намеченном режиме исполнения и на намеченном уровне исполнения, а также схему маршрутизации для маршрутизации входящего прерывания в программное обеспечение обработки прерываний, которое сконфигурировано, чтобы работать на конкретном уровне исполнения.
Когда схема маршрутизации принимает входящее прерывание, которое имеет намеченный режим исполнения, который соответствует текущему режиму исполнения схемы обработки, входящее прерывание маршрутизируется в программное обеспечение обработки прерываний, работающее на намеченном уровне исполнения. Альтернативно, если схема маршрутизации принимает входящее прерывание, которое имеет намеченный режим исполнения, который не соответствует текущему режиму исполнения для схемы обработки, схема маршрутизации маршрутизирует входящее прерывание в программное обеспечение обработки прерываний, которое сконфигурировано, чтобы работать на более привилегированном уровне исполнения, чем намеченный уровень исполнения, и может быть самым привилегированным уровнем исполнения. В некоторых вариантах осуществления входящее прерывание может быть маршрутизировано в программное обеспечение обработки прерываний, работающее на том же уровне исполнения, на котором работает монитор безопасности.
Текущий и намеченный режимы исполнения могут, каждый, быть защищенным режимом или незащищенным режимом. При работе в защищенном режиме схема обработки имеет доступ к защищенным данным, которые недоступны упомянутой схеме обработки, работающей в упомянутом незащищенном режиме. Кроме того, в некоторых вариантах осуществления, когда схема обработки работает в незащищенном режиме, она осуществляет доступ к незащищенным данным, которые недоступны упомянутой схеме обработки, работающей в защищенном режиме.
В некоторых вариантах осуществления регистры обработки прерываний содержат регистр квитирования. Регистр квитирования указывает, что прерывание является не законченным. Регистр квитирования также возвращает предварительно определенное значение, чтобы указывать, что принятое входящее прерывание имеет намеченный режим исполнения, который не соответствует текущему режиму исполнения. Следовательно, предварительно определенное значение для регистра квитирования может быть использовано, чтобы указывать, что входящее прерывание должно быть маршрутизировано в программное обеспечение обработки прерываний, работающее на уровне исполнения, который отличается от уровня, первоначально намеченного для входящего прерывания. В некоторых вариантах осуществления, когда регистр квитирования возвращает предварительно определенное значение, программное обеспечение обработки прерываний, работающее на предварительно определенном, более привилегированном, уровне исполнения, конфигурируется, чтобы изменять режим исполнения схемы обработки и впоследствии инструктировать схеме маршрутизации маршрутизировать входящее прерывание в программное обеспечение обработки прерываний, работающее на намеченном уровне исполнения, где это прерывание захватывается снова, и в этот раз прерывание полностью обрабатывается и завершается.
В других вариантах осуществления, в ответ на возвращение регистром квитирования предварительно определенного значения, программное обеспечение обработки прерываний, работающее на предварительно определенном уровне исполнения, может непосредственно обрабатывать входящее прерывание само. Это может случиться, например, если для программного обеспечения обработки прерываний, работающего на уровне EL3 исполнения, более эффективно обрабатывать входящее прерывание, чем переключать режим работы процессора, чтобы предоставлять возможность намеченному программному обеспечению обработки прерываний обрабатывать входящее прерывание.
Процесс маршрутизации входящего прерывания может подразумевать формирование исключения (exception) прерывания, которое затем перенаправляется программному обеспечению обработки прерываний. Эти исключения прерываний являются внутренними по отношению к системе и формируются посредством контроллера прерываний, чтобы указывать возникновение прерываний данного класса процессору. Примеры исключений прерываний включают в себя FIQ и IRQ.
В некоторых вариантах осуществления устройство обработки данных формирует виртуальные прерывания. Схема контроллера прерываний может быть переключаемой между первой настройкой и второй настройкой. В первой настройке входящее прерывание маршрутизируется в программное обеспечение обработки прерываний, которое работает на более привилегированном уровне исполнения, чем намеченный уровень исполнения. Виртуальное прерывание тогда формируется посредством программного обеспечения обработки прерываний, работающего на более привилегированном уровне исполнения, и перенаправляется программному обеспечению обработки прерываний, работающему на намеченном (более низком) уровне. Во второй настройке контроллер прерываний маршрутизирует входящее прерывание в программное обеспечение обработки прерываний, которое работает на намеченном (более низком) уровне исполнения. В обеих настройках программное обеспечение обработки прерываний более низкого уровня способно обрабатывать входящее прерывание. Однако, во второй настройке, входящее прерывание отправляется непосредственно намеченному программному обеспечению обработки прерываний без необходимости для более привилегированного программного обеспечения обработки прерываний формировать виртуальное прерывание. Следовательно, нагрузка обработки более высокого (более привилегированного) программного обеспечения обработки прерываний уменьшается. В некоторых из этих вариантов осуществления более привилегированным уровнем может быть EL2, на котором работает гипервизор. В некоторых из этих вариантов осуществления программное обеспечение обработки прерываний, работающее на более привилегированном уровне, и программное обеспечение обработки прерываний, работающее на менее привилегированном уровне, могут оба быть сконфигурированы, чтобы исполняться в незащищенном режиме работы, как ранее определено.
Согласно второму аспекту настоящего изобретения предоставляется способ динамического управления доступом к, по меньшей мере, некоторым из набора регистров обработки прерываний для обработки входящего прерывания, которое маршрутизируется в программное обеспечение обработки прерываний, работающее на целевом уровне исполнения из множества уровней исполнения, способ содержит этапы: определения целевого уровня исполнения, на который упомянутое входящее прерывание маршрутизируется; предоставления доступа упомянутому программному обеспечению обработки прерываний, работающему на упомянутом целевом уровне исполнения, так, что программное обеспечение обработки прерываний, работающее на упомянутом уровне исполнения, имеет доступ к упомянутым, по меньшей мере, некоторым из упомянутых регистров обработки прерываний для обработки упомянутого входящего прерывания, и так, что упомянутое программное обеспечение обработки прерываний, работающее на упомянутом уровне исполнения, не имеет доступа к регистрам обработки прерываний для обработки второго входящего прерывания, маршрутизированного в программное обеспечение обработки прерываний, работающее на более привилегированном уровне исполнения.
Согласно третьему аспекту предоставляется устройство обработки данных, содержащее:
множество системных регистров, содержащих набор регистров обработки прерываний для управления обработкой входящего прерывания;
средство обработки для исполнения программного обеспечения на множестве уровней исполнения, средство контроллера прерываний для маршрутизации упомянутого входящего прерывания в программное обеспечение обработки прерываний, сконфигурированное работать на одном из упомянутого множества уровней исполнения;
средство управления доступом к регистрам для динамического управления доступом к, по меньшей мере, некоторым из упомянутых регистров обработки прерываний в зависимости от упомянутого одного из упомянутого множества уровней исполнения, на который упомянутое входящее прерывание маршрутизировано, так, что программное обеспечение обработки прерываний, сконфигурированное работать на упомянутом уровне исполнения, имеет доступ к, по меньшей мере, некоторым из упомянутых регистров обработки прерываний для обработки упомянутого входящего прерывания, и так, что упомянутое программное обеспечение обработки прерывания, сконфигурированное работать на упомянутом уровне исполнения, не имеет доступа к регистрам обработки прерываний для обработки второго входящего прерывания, маршрутизированного в программное обеспечение обработки прерываний, работающее на более привилегированном уровне исполнения.
Согласно четвертому аспекту изобретения предоставляется устройство для маршрутизации входящего прерывания схеме обработки, упомянутая схема обработки конфигурируется, чтобы исполнять программное обеспечение на множестве уровней исполнения, упомянутое устройство содержит: схему определения режима процессора, сконфигурированную определять текущий режим исполнения упомянутого процессора; и входную схему, сконфигурированную принимать упомянутое входящее прерывание, намеченное для обработчика прерываний, работающего в намеченном режиме исполнения и на намеченном уровне исполнения; схему маршрутизации, сконфигурированную маршрутизировать упомянутое входящее прерывание в программное обеспечение обработки прерываний, работающее на целевом уровне исполнения, упомянутая схема маршрутизации конфигурируется, чтобы: реагировать на упомянутое принятое входящее прерывание, имеющее намеченный режим исполнения, который соответствует упомянутому текущему режиму исполнения упомянутой схемы обработки, чтобы маршрутизировать упомянутое входящее прерывание в программное обеспечение обработки прерываний, работающее на упомянутом намеченном уровне исполнения; и реагировать на упомянутое принятое входящее прерывание, имеющее намеченный режим исполнения, который не соответствует упомянутому текущему режиму исполнения упомянутой схемы обработки, чтобы маршрутизировать упомянутое входящее прерывание в программное обеспечение обработки прерываний, работающее на предварительно определенном уровне исполнения, который является более привилегированным, чем упомянутый намеченный уровень исполнения.
В соответствии с этим аспектом, если входящее прерывание намечено, чтобы исполняться в режиме работы, в котором схема обработки не работает в настоящий момент, тогда входящее прерывание продвигается. Продвижение прерывания вынуждает его обрабатываться посредством программного обеспечения обработки прерываний, которое работает на более высоком уровне исполнения, чем тот, на котором прерывание обычно будет обрабатываться. Это может вести к тому, что схема обработки переключает режим исполнения на режим, требуемый входящим прерыванием, тем самым, предоставляя возможность обработки входящего прерывания, как первоначально предполагается. Альтернативно, программное обеспечение обработки прерываний может непосредственно обрабатывать входящее прерывание само, несмотря на режим исполнения схемы обработки, и без переключения режима схемы обработки.
Согласно пятому аспекту настоящего изобретения предоставляется способ маршрутизации входящего прерывания схеме обработки, упомянутая схема обработки конфигурируется, чтобы исполнять программное обеспечение на множестве уровней исполнения, упомянутый способ содержит этапы: определения текущего режима исполнения упомянутого процессора; и приема упомянутого входящего прерывания, намеченного для обработчика прерываний, работающего в намеченном режиме исполнения и на намеченном уровне исполнения; маршрутизации упомянутого входящего прерывания в программное обеспечение обработки прерывания, работающее на целевом уровне исполнения, посредством: реагирования на упомянутое принятое входящее прерывание, имеющее намеченный режим исполнения, который соответствует упомянутому текущему режиму исполнения упомянутой схемы обработки, чтобы маршрутизировать упомянутое входящее прерывание в программное обеспечение обработки прерываний, работающее на упомянутом намеченном уровне исполнения; и реагирования на упомянутое принятое входящее прерывание, имеющее намеченный режим исполнения, который не соответствует упомянутому текущему режиму исполнения упомянутой схемы обработки, чтобы маршрутизировать упомянутое входящее прерывание в программное обеспечение обработки прерываний, работающее на предварительно определенном уровне исполнения, который является более привилегированным, чем упомянутый намеченный уровень исполнения.
Согласно дополнительному аспекту может быть предоставлена компьютерная программа для управления устройством обработки, чтобы исполнять один из вышеупомянутых способов второго или четвертого аспекта настоящего изобретения.
Краткое описание чертежей
Фиг. 1 – это блок-схема, схематично иллюстрирующая устройство обработки данных согласно одному варианту осуществления;
Фиг. 2 схематично иллюстрирует работу контроллера прерываний в устройстве обработки данных согласно одному варианту осуществления;
Фиг. 3A и 3B схематично показывают работу контроллера прерываний в устройстве обработки данных, переключающемся между двумя режимами работы в соответствии с одним вариантом осуществления;
Фиг. 4 – это блок-схема последовательности операций, иллюстрирующая работу устройства обработки данных в соответствии с одним вариантом осуществления;
Фиг. 5 – это блок-схема последовательности операций, иллюстрирующая работу устройства обработки данных "продвигающего" входящее прерывание в соответствии с одним вариантом осуществления;
Фиг. 6 – это блок-схема последовательности операций, иллюстрирующая работу устройства отображения данных, переключающегося между двумя режимами работы для формирования или неформирования виртуальных прерываний в ответ на входящие прерывания в соответствии с одним вариантом осуществления; и
Фиг. 7 схематично показывает систему, работающую в соответствии с одним вариантом осуществления.
Подробное описание вариантов осуществления
Варианты осуществления, описанные в данном документе, рассматривают систему, в которой процессор может быть изготовлен, чтобы выполнять обработку на множестве уровней (EL0-EL3) исполнения. EL0 – это наименее привилегированный уровень исполнения, а EL3 – это наиболее привилегированный уровень исполнения. Программное обеспечение, работающее на более высоком уровне исполнения, как правило, имеет возможность осуществлять доступ к данным, используемым более низким уровнем исполнения. Однако, данные, используемые более высоким уровнем исполнения, не могут, как правило, быть доступны программному обеспечению, исполняющемся на более низком уровне исполнения.
Пользовательское программное обеспечение исполняется на уровне EL0 исполнения, гостевые операционные системы исполняются на EL1, программное обеспечение гипервизора работает на уровне EL2 исполнения, а монитор безопасности работает на уровне EL3 исполнения.
Монитор безопасности способен управлять тем, исполняет ли процессор 30 обработку в защищенном режиме или незащищенном режиме. В то время как процессор находится в незащищенном режиме, он не может осуществлять доступ к защищенным данным. Должно также быть отмечено, что, в этом варианте осуществления, не существует защищенного режима работы для уровня EL2 исполнения и не существует незащищенного режима работы для уровня EL3 исполнения.
Уровень EL3 исполнения может осуществлять доступ как защищенным, так и незащищенным данным и управляет переключением между двумя состояниями.
Входящие прерывания могут быть классифицированы во множество классов в зависимости от их природы и цели. В вариантах осуществления, описанных в данном документе, рассматриваются три отдельных категории.
Прерывания G0 или группы 0 намечены для монитора безопасности, который работает на EL3.
G1ns или незащищенные прерывания группы1 намечены либо для гипервизора, работающего в незащищенном режиме на EL2, либо для операционной системы, работающей в незащищенном режиме на EL1.
G1s или защищенные прерывания группы1 намечены для защищенной операционной системы, которая работает на EL1.
Входящие прерывания сигнализируются процессору контроллером прерываний посредством выдачи одного из двух исключений прерываний: FIQ и IRQ.
Фиг. 1 показывает блок-схему, иллюстрирующую вариант осуществления устройства обработки данных. Входящее прерывание 10 принимается посредством контроллера 20 прерываний. В этом варианте осуществления входящее прерывание 10 имеет категорию G0 и, таким образом, намечено для монитора безопасности, работающего на уровне EL3 исполнения в процессоре 30. Однако, в этом варианте осуществления, как следствие значений, сохраненных в регистрах 40 управления, входящее прерывание 10 вместо этого маршрутизируется в программное обеспечение обработки прерываний, работающее на уровне EL1 исполнения в процессоре 30.
При обычном ходе событий программное обеспечение обработки прерываний, работающее на уровне EL1 исполнения в процессоре 30, будет иметь доступ к конкретному поднабору регистров 60 в наборе системных регистров 50. Для того, чтобы входящее прерывание 10 было обработано, необходимо иметь доступ к другому, второму набору системных регистров 70. Этот второй набор регистров может включать в себя, например, регистры, которые используются, чтобы сигнализировать о том, что конкретное исключение является незаконченным или законченным, такие как регистр квитирования. Обычно, поэтому, программное обеспечение обработки прерываний, работающее на уровне EL1 исполнения в процессоре 30, не будет иметь доступа ко второму набору системных регистров 70, которые необходимы, чтобы обрабатывать входящее прерывание 10.
Однако, в этом варианте осуществления, способ, которым входящее прерывание 10 маршрутизируется в программное обеспечение обработки прерываний, зависит от одного или обоих из конфигурации регистров 40 управления и текущего режима исполнения (защищенный или незащищенный) процессора 30.
В частности, первый защищенный регистр SCR управления указывает, для каждого из исключений прерываний FIQ и IRQ, действительно или нет, что исключение прерывания маршрутизировано в программное обеспечение обработки прерываний, работающее на EL3.
Если исключение прерывания не маршрутизируется в программное обеспечение обработки прерываний, работающее на EL3, и если процессор работает в защищенном режиме, тогда исключение прерывания отправляется программному обеспечению обработки прерываний, работающему в защищенном режиме на EL1, поскольку EL2 не имеет защищенного режима.
Если исключение прерывания не маршрутизировано программному обеспечению обработки прерываний, работающему на EL3, и процессор работает в незащищенном режиме, тогда исключение прерывания маршрутизируется программному обеспечению обработки прерываний, работающему в незащищенном режиме на EL1 или EL2, в зависимости от значения, указанного посредством второго регистра управления гипервизора, HCR. Как и с регистром SCR, возможно задавать различное значение для каждого исключения прерывания.
Конфигурация регистров 40 управления может управляться посредством программного обеспечения, исполняющегося на процессоре 30. Например, значения, заданные для SCR, могут быть заданы посредством монитора безопасности, работающего на EL3 – тем самым, предоставляя возможность монитору безопасности уступать обработку конкретного исключения прерывания программному обеспечению обработки прерываний, работающему на более низком уровне исполнения. Аналогично, то, обрабатывается ли конкретное исключение прерывания посредством гипервизора, работающего на EL2, или гостевой операционной системы, работающей на EL1, может быть указано посредством гипервизора. Соответственно, гибкость такой системы улучшается, предоставляя возможность программному обеспечению на различных отличающихся уровнях исполнения обрабатывать входящее прерывание посредством установки конкретных значений в регистрах управления.
В этом примере схема 80 управления доступом к регистрам разрешает программному обеспечению обработки прерываний, работающему в защищенном режиме работы на уровне EL1 исполнения, доступ ко второму (дополнительному) набору системных регистров 70 в наборе системных регистров 50. Следовательно, программное обеспечение обработки прерываний, работающее в защищенном режиме работы на уровне EL1 исполнения, приспособлено обрабатывать входящее прерывание 10.
Следовательно, может быть видно, что доступ, предоставленный программному обеспечению обработки прерываний, работающему в защищенном режиме на уровне EL1 исполнения в процессоре 30, зависит от маршрутизации, выполненной контроллером 20 прерываний, которая, в свою очередь, может зависеть от значений регистров 40 управления. Изменение в доступе к системным регистрам 50 приводит в результате к тому, что программное обеспечение обработки прерываний, работающее в защищенном режиме на уровне EL1 исполнения в процессоре 30, приспособлено обрабатывать входящее прерывание 10. Следовательно, доступ, предоставляемый программному обеспечению обработки прерываний, которое работает на каждом уровне исполнения процессора 30, динамически определяется, тем самым, предоставляя возможность обработки входящего прерывания на множестве различных уровней исполнения. Выражаясь по-другому, программное обеспечение обработки прерываний, работающее на конкретном уровне исполнения, имеет доступ не только к фиксированному набору системных регистров 50. Вместо этого, доступ этого программного обеспечения обработки прерываний к системным регистрам 50 изменяется в зависимости от маршрутизации входящих прерываний на различные уровни исполнения.
Кроме того, хотя доступ, предоставленный программному обеспечению обработки прерываний, работающему в защищенном режиме на уровне EL1 исполнения в процессоре 30, корректируется, не существует требования о том, что доступ к какому-либо из других программных обеспечений обработки прерываний в каком-либо другом режиме исполнения или уровне исполнения должен корректироваться. В частности, хотя программное обеспечение обработки прерываний, работающее в защищенном режиме на уровне EL2 исполнения, работает на более высоком уровне исполнения, чем программное обеспечение обработки прерываний, работающее на уровне EL1 исполнения, нет необходимости в корректировке доступа программного обеспечения обработки прерываний на уровне EL2 исполнения.
Фиг. 2 показывает вариант осуществления, в котором устройство обработки данных включает в себя контроллер 20 прерываний, который продвигает входящее прерывание 10. Входящее прерывание 10 принимается посредством входной схемы 100 в контроллере 20 прерываний и имеет категорию G1S, указывающую, что прерывание намечено, чтобы обрабатываться посредством защищенной операционной системы, работающей на защищенном EL1. Регистр 90 квитирования в наборе системных регистров 50 указывает, что входящее прерывание 10 является незаконченным, а также (в этом варианте осуществления), что текущий уровень исполнения процессора 30 не соответствует режиму, требуемому входящим прерыванием 10. В этом примере входящее прерывание 10 требует защищенного режима работы, который несовместим с процессором 30, находящимся в незащищенном режиме работы. Тот факт, что входящее прерывание 10 не находится в правильном режиме работы, делается доступным контроллеру 20 прерываний.
Регистр квитирования считывается из программного обеспечения обработки прерываний, и значение, которое возвращается, является либо действительным ID прерывания для текущего режима, либо специальным идентификатором, который является одним из значения, указывающего то, существует ли незаконченное прерывание для защищенного состояния, незаконченное прерывание для незащищенного состояния, или больше не существует какого-либо незаконченного прерывания. Возврат того, что больше нет незаконченных прерываний, может происходить, когда процессор не выполняет обработку на достаточно высоком уровне, чтобы захватывать или действительно видеть незаконченное прерывание, или когда незаконченное прерывание было захвачено, и больше не является незаконченным по некоторой причине.
Обычно, прибытие входящего прерывания 10 в контроллер 20 прерывания будет давать в результате формирование исключения IRQ прерывания, которое будет отправлено программному обеспечению обработки прерываний, работающему на уровне EL1 исполнения в защищенном режиме работы. Однако, поскольку, в этом примере, процессор 30 в настоящий момент не работает в защищенном режиме работы, невозможно обрабатывать это исключение прерывания в это время. Соответственно, схема 110 маршрутизации в контроллере 20 прерываний вынуждает входящее прерывание 10 "продвигаться" посредством формирования исключения FIQ прерывания, которое маршрутизируется в программное обеспечение обработки прерываний, работающее в защищенном режиме работы на уровне EL3 исполнения в процессоре 30.
В этом варианте осуществления программное обеспечение обработки прерываний, работающее в защищенном режиме на уровне EL3 исполнения, всегда приспособлено немедленно реагировать на внутреннее FIQ-прерывание. Соответственно, программное обеспечение обработки прерываний на более