Armv8-A, Armv9-A의 exception과 privilege model을 알아보자. Arm 아키텍처의 다양한 예외 유형, 관련된 프로세서의 동작에 대해 설명한다.
AArch64에 대해 알아보기 전에 privilege의 개념부터 알아보자. 최신 소프트웨어에서는 시스템 및 프로세서 리소스에 대한 액세스 수준이 각각 다른 여러 모듈로 분할된다.
ex) 커널과 유저 애플리케이션의 분할
AArch64 아키텍처는 이러한 분할을 가능하게 하기 위해 다양한 수준의 권한을 구현한다. 권한 수준은 프로세서가 예외를 발생시키거나 예외에서 돌아올 때만 변경될 수 있다. Arm 아키텍처에서는 이러한 권한 수준을 예외 수준(Exception level)이라고 한다.
AArch64의 권한 이름은 Exception level이고 줄여서 EL이라 부른다. 예외 수준에는 번호가 매겨지며, 일반적으로 EL x라고 한다. 여기서 x는 0에서 3 사이의 숫자로 권한 수준이 높을수록 숫자가 높아진다.
아키텍처는 어떤 소프트웨어가 어떤 예외 수준을 사용하는지 강제하지 않지만 표준 소프트웨어는 위 모델을 가정한다.
에외 수준은 반드시 아래 상황이 발생하는 경우 변한다:
예외를 처리하면 예외 수준은 증가하거나 유지될 수 있다. 예외를 처리하는데 더 낮은 권한 수준을 얻을 수 없다. 예외 처리 후 복귀하면 예외 수준이 감소하거나 유지될 수 있다. 절대 높은 수준을 얻을 수 없다.
AArch64 Exception model에 관하여 두 가지 Privilege가 존재한다.
두 권한 모두 현재 예외 수준에 영향을 받는다.