본문 바로가기

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리/6장: Armv8 - 익셉션 레벨

(4)
[Arm프로세서] Armv8: 익셉션 레벨은 어떻게 변경될까? Armv8 아키텍처에서 익셉션 레벨은 어떻게 변경될까요? 크게 3가지 방식으로 익셉션 레벨이 변경됩니다.  SVC, HVC, SMC 명령어 실행  IRQ/FIQ 인터럽트 발생  ERET 명령어 실행 다음 표를 보면 익셉션 레벨로 진입하는 방법을 확인할 수 있습니다. 표 6.3 Armv8 아키텍처에서 익셉션 레벨로 진입하는 방법 먼저 유저 애플리케이션이 실행되는 EL0에서 진입되는 익셉션 레벨을 알아봅시다. EL0에서 진입하는 익셉션 레벨 EL0에서 EL1으로 진입하는 방법은 크게 3가지로 분류할 수 있습니다. 첫 번째로는 소프트웨어적으로 EL1에 진입하는 방법입니다. EL0에서 SVC 명령어를 실행하면 EL0 Synchronous 익셉션이 유발되면서 EL1으로 진입합니다. 이런 동작을 운영체제에서는..
[Arm프로세서] Armv8: 익셉션 레벨과 특권 레벨 Armv8 아키텍처는 PL0 ~ PL3까지 4개의 privilege level(접근 권한)을 정의합니다.  privilege levels은 Armv7 아키텍처에서 다룬 내용과 거의 유사합니다.  privilege levels은 Arm 아키텍처에서만 지원할까요? 그렇지는 않습니다. x86을 포함한 대부분의 CPU 아키텍처는 privilege levels과 같은 기능을 지원합니다. 그 이유는 무엇일까요? 주로 리눅스와 같은 범용 운영체제를 설계할 때 시스템에 결함을 일으킬 수 있는 유저 애플리케이션으로부터 시스템을 보호하기 위해서입니다. 리눅스 커널과 같은 운영체제 커널은 privilege level에서 실행되며 privilege level에서만 주요 시스템 설정(시스템 레지스터, 인터럽트, 캐시 접근)을 ..
[Arm프로세서] 익셉션 레벨 소개 익셉션 레벨은 ‘익셉션’과 ‘레벨’의 합성어로 익셉션의 레벨로 해석할 수 있습니다. 그런데 ‘익셉션 레벨’은 ‘익셉션의 레벨’과는 조금 다른 의미를 지니는 용어입니다. 먼저 익셉션 레벨을 소개합니다. 다음과 같은 Arm 스펙 문서의 내용을 보면서 익셉션 레벨에 대해 알아봅시다. 출처: Arm Architecture Reference Manual Armv8, for A-profile architecture https://developer.arm.com/documentation/ddi0487/gb D1.1 Exception levels The ARMv8-A architecture defines a set of Exception levels, EL0 to EL3, where: • If ELn is the Ex..
[ARMv8]ARM64 - 각 익셉션(Exception) 레벨 소개 이번 포스팅에서는 ARMv8 아키텍처를 파악하다가 만나는 가장 큰 걸림돌인 '익셉션 레벨'에 대해 설명합니다. 대부분 개발자들은 기존 ARM 아키텍처의 User, Supervisor, IRQ, FIQ, 모드에 익숙한 상태입니다. User 모드에서 소프웨어 인터럽트를 발생하면 Supervisor 모드로 진입한다"라는 내용에 익숙해 있죠. 그런데 ARMv8 아키텍처를 파악하면 가장 먼저 '익셉션 레벨'이란 용어를 만나게 됩니다. 문제는 ARMv8 아키텍처를 구성하는 주요 개념을 익셉션 레벨이란 용어를 사용해 설명을 합니다. 낯선 '익셉션 레벨(EL)'이란 용어를 사용해 ARMv8 아키텍처를 설명하니 스팩 문서를 읽다가 포기하는 경우가 많습니다. EL와 익셉션 레벨이란 익셉션 레벨은 ARM 사에서는 EL(Ex..